diff --git a/rustdoc/help.html b/rustdoc/help.html index 5b57a161fa..5f6a6e11c2 100644 --- a/rustdoc/help.html +++ b/rustdoc/help.html @@ -1 +1 @@ -
scratch_state_idx: usize
§lookups: Vec<RAMLookup<E<F>, LookupTableIDs>>
§constraints: Vec<E<F>>
§selector: Option<E<F>>
Return the constraints for the selector. +}
scratch_state_idx: usize
§lookups: Vec<RAMLookup<E<F>, LookupTableIDs>>
§constraints: Vec<E<F>>
§selector: Option<E<F>>
Return the constraints for the selector. Each selector must be a boolean.
-Return the constraints for the current instruction, without the selector
-Return the constraints for the current instruction, without the selector
+In the concrete implementation for the constraints, the interpreter will work over columns. The position in this case can be seen as a new variable/input of our circuit.
((x * y) >> 32, (x * y) & ((1 << 32) - 1))
, storing the results in position_hi
-and position_lo
respectively. Read moreposition_lo
respectively. Read more(x / y, x % y)
, storing the results in position_quotient
and
-position_remainder
respectively. Read more(x / y, x % y)
, storing the results in position_quotient
and
-position_remainder
respectively. Read moreposition_remainder
respectively. Read moreassert_equals_zero
is 0, and add a constraint in the proof system.x
and y
are equal, and add a constraint in the proof system.x
is boolean, and add a constraint in the proof system.assert_equals_zero
is 0, and add a constraint in the proof system.x
and y
are equal, and add a constraint in the proof system.x
is boolean, and add a constraint in the proof system.addr
, adding constraints asserting that the old value was
old_value
and that the new value will be new_value
. Read morebits
-1 (bits <= 16).bits
-1 (bits <= 8).bits
-1 (bits <= 8).by_amount
if if_is_true
is 1
, and returns the previous
-value of the heap pointer.pub fn interpret_instruction<Env: InterpreterEnv>(
+interpret_instruction in o1vm::interpreters::riscv32im::interpreter - Rust Function o1vm::interpreters::riscv32im::interpreter::interpret_instruction
source · pub fn interpret_instruction<Env: InterpreterEnv>(
env: &mut Env,
instr: Instruction
)
\ No newline at end of file
diff --git a/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_itype.html b/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_itype.html
index 3681ed1133..c5370ac404 100644
--- a/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_itype.html
+++ b/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_itype.html
@@ -1,4 +1,4 @@
-interpret_itype in o1vm::interpreters::riscv32im::interpreter - Rust Function o1vm::interpreters::riscv32im::interpreter::interpret_itype
source · pub fn interpret_itype<Env: InterpreterEnv>(env: &mut Env, instr: IInstruction)
Expand description
Interpret an I-type instruction.
+
interpret_itype in o1vm::interpreters::riscv32im::interpreter - Rust Function o1vm::interpreters::riscv32im::interpreter::interpret_itype
source · pub fn interpret_itype<Env: InterpreterEnv>(env: &mut Env, instr: IInstruction)
Expand description
Interpret an I-type instruction.
The encoding of an I-type instruction is as follows:
| 31 20 | 19 15 | 14 12 | 11 7 | 6 0 |
| immediate | rs1 | funct3 | rd | opcode |
diff --git a/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_mtype.html b/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_mtype.html
index dfa27110cc..336f002521 100644
--- a/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_mtype.html
+++ b/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_mtype.html
@@ -1,4 +1,4 @@
-interpret_mtype in o1vm::interpreters::riscv32im::interpreter - Rust Function o1vm::interpreters::riscv32im::interpreter::interpret_mtype
source · pub fn interpret_mtype<Env: InterpreterEnv>(env: &mut Env, instr: MInstruction)
Expand description
Interpret an M-type instruction.
+
interpret_mtype in o1vm::interpreters::riscv32im::interpreter - Rust Function o1vm::interpreters::riscv32im::interpreter::interpret_mtype
source · pub fn interpret_mtype<Env: InterpreterEnv>(env: &mut Env, instr: MInstruction)
Expand description
Interpret an M-type instruction.
The encoding of an M-type instruction is as follows:
| 31 27 | 26 25 | 24 20 | 19 15 | 14 12 | 11 7 | 6 0 |
| 00000 | 01 | rs2 | rs1 | funct3 | rd | opcode |
diff --git a/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_rtype.html b/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_rtype.html
index d7e8394a18..0eee066074 100644
--- a/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_rtype.html
+++ b/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_rtype.html
@@ -1,4 +1,4 @@
-interpret_rtype in o1vm::interpreters::riscv32im::interpreter - Rust Function o1vm::interpreters::riscv32im::interpreter::interpret_rtype
source · pub fn interpret_rtype<Env: InterpreterEnv>(env: &mut Env, instr: RInstruction)
Expand description
Interpret an R-type instruction.
+
interpret_rtype in o1vm::interpreters::riscv32im::interpreter - Rust Function o1vm::interpreters::riscv32im::interpreter::interpret_rtype
source · pub fn interpret_rtype<Env: InterpreterEnv>(env: &mut Env, instr: RInstruction)
Expand description
Interpret an R-type instruction.
The encoding of an R-type instruction is as follows:
| 31 25 | 24 20 | 19 15 | 14 12 | 11 7 | 6 0 |
| funct5 & funct 2 | rs2 | rs1 | funct3 | rd | opcode |
diff --git a/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_sbtype.html b/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_sbtype.html
index bc643b8f0c..aaf0f98a48 100644
--- a/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_sbtype.html
+++ b/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_sbtype.html
@@ -1,4 +1,4 @@
-interpret_sbtype in o1vm::interpreters::riscv32im::interpreter - Rust Function o1vm::interpreters::riscv32im::interpreter::interpret_sbtype
source · pub fn interpret_sbtype<Env: InterpreterEnv>(
+interpret_sbtype in o1vm::interpreters::riscv32im::interpreter - Rust Function o1vm::interpreters::riscv32im::interpreter::interpret_sbtype
source · pub fn interpret_sbtype<Env: InterpreterEnv>(
env: &mut Env,
instr: SBInstruction
)
Expand description
Interpret an SB-type instruction.
diff --git a/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_stype.html b/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_stype.html
index 91e5afc644..3295fcc187 100644
--- a/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_stype.html
+++ b/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_stype.html
@@ -1,4 +1,4 @@
-
interpret_stype in o1vm::interpreters::riscv32im::interpreter - Rust Function o1vm::interpreters::riscv32im::interpreter::interpret_stype
source · pub fn interpret_stype<Env: InterpreterEnv>(env: &mut Env, instr: SInstruction)
Expand description
Interpret an S-type instruction.
+
interpret_stype in o1vm::interpreters::riscv32im::interpreter - Rust Function o1vm::interpreters::riscv32im::interpreter::interpret_stype
source · pub fn interpret_stype<Env: InterpreterEnv>(env: &mut Env, instr: SInstruction)
Expand description
Interpret an S-type instruction.
The encoding of an S-type instruction is as follows:
| 31 25 | 24 20 | 19 15 | 14 12 | 11 7 | 6 0 |
| immediate | rs2 | rs1 | funct3 | imm | opcode |
diff --git a/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_syscall.html b/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_syscall.html
index a54be52ec0..264fd72d3a 100644
--- a/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_syscall.html
+++ b/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_syscall.html
@@ -1,4 +1,4 @@
-interpret_syscall in o1vm::interpreters::riscv32im::interpreter - Rust Function o1vm::interpreters::riscv32im::interpreter::interpret_syscall
source · pub fn interpret_syscall<Env: InterpreterEnv>(
+interpret_syscall in o1vm::interpreters::riscv32im::interpreter - Rust Function o1vm::interpreters::riscv32im::interpreter::interpret_syscall
source · pub fn interpret_syscall<Env: InterpreterEnv>(
env: &mut Env,
_instr: SyscallInstruction
)
\ No newline at end of file
diff --git a/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_ujtype.html b/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_ujtype.html
index f28ee2c48d..e1c09ca2b8 100644
--- a/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_ujtype.html
+++ b/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_ujtype.html
@@ -1,4 +1,4 @@
-interpret_ujtype in o1vm::interpreters::riscv32im::interpreter - Rust Function o1vm::interpreters::riscv32im::interpreter::interpret_ujtype
source · pub fn interpret_ujtype<Env: InterpreterEnv>(
+interpret_ujtype in o1vm::interpreters::riscv32im::interpreter - Rust Function o1vm::interpreters::riscv32im::interpreter::interpret_ujtype
source · pub fn interpret_ujtype<Env: InterpreterEnv>(
env: &mut Env,
instr: UJInstruction
)
Expand description
Interpret an UJ-type instruction.
diff --git a/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_utype.html b/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_utype.html
index 66563ba212..647962cee6 100644
--- a/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_utype.html
+++ b/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_utype.html
@@ -1,4 +1,4 @@
-
interpret_utype in o1vm::interpreters::riscv32im::interpreter - Rust Function o1vm::interpreters::riscv32im::interpreter::interpret_utype
source · pub fn interpret_utype<Env: InterpreterEnv>(env: &mut Env, instr: UInstruction)
Expand description
Interpret an U-type instruction.
+
interpret_utype in o1vm::interpreters::riscv32im::interpreter - Rust Function o1vm::interpreters::riscv32im::interpreter::interpret_utype
source · pub fn interpret_utype<Env: InterpreterEnv>(env: &mut Env, instr: UInstruction)
Expand description
Interpret an U-type instruction.
The encoding of an U-type instruction is as follows:
| 31 12 | 11 7 | 6 0 |
| immediate | rd | opcode |
diff --git a/rustdoc/o1vm/interpreters/riscv32im/interpreter/index.html b/rustdoc/o1vm/interpreters/riscv32im/interpreter/index.html
index 4cf11264a8..3be68587ae 100644
--- a/rustdoc/o1vm/interpreters/riscv32im/interpreter/index.html
+++ b/rustdoc/o1vm/interpreters/riscv32im/interpreter/index.html
@@ -1,4 +1,4 @@
-o1vm::interpreters::riscv32im::interpreter - Rust Module o1vm::interpreters::riscv32im::interpreter
source · Expand description
This module implement an interpreter for the RISCV32 IM instruction set
+
o1vm::interpreters::riscv32im::interpreter - Rust Module o1vm::interpreters::riscv32im::interpreter
source · Expand description
This module implement an interpreter for the RISCV32 IM instruction set
architecture.
The implementation mostly follows (and copy) code from the MIPS interpreter
available here.
diff --git a/rustdoc/o1vm/interpreters/riscv32im/interpreter/trait.InterpreterEnv.html b/rustdoc/o1vm/interpreters/riscv32im/interpreter/trait.InterpreterEnv.html
index 5cd3e0c372..c2325bb47a 100644
--- a/rustdoc/o1vm/interpreters/riscv32im/interpreter/trait.InterpreterEnv.html
+++ b/rustdoc/o1vm/interpreters/riscv32im/interpreter/trait.InterpreterEnv.html
@@ -1,8 +1,8 @@
-InterpreterEnv in o1vm::interpreters::riscv32im::interpreter - Rust Trait o1vm::interpreters::riscv32im::interpreter::InterpreterEnv
source · pub trait InterpreterEnv {
+InterpreterEnv in o1vm::interpreters::riscv32im::interpreter - Rust Trait o1vm::interpreters::riscv32im::interpreter::InterpreterEnv
source · pub trait InterpreterEnv {
type Position;
type Variable: Clone + Add<Self::Variable, Output = Self::Variable> + Sub<Self::Variable, Output = Self::Variable> + Mul<Self::Variable, Output = Self::Variable> + Debug + Zero + One;
-Show 73 methods
// Required methods
+Show 74 methods
// Required methods
fn alloc_scratch(&mut self) -> Self::Position;
fn variable(&self, column: Self::Position) -> Self::Variable;
fn add_constraint(&mut self, assert_equals_zero: Self::Variable);
@@ -172,6 +172,12 @@
position_hi: Self::Position,
position_lo: Self::Position
) -> (Self::Variable, Self::Variable);
+ unsafe fn mul_hi(
+ &mut self,
+ x: &Self::Variable,
+ y: &Self::Variable,
+ position: Self::Position
+ ) -> Self::Variable;
unsafe fn mul_hi_lo(
&mut self,
x: &Self::Variable,
@@ -539,7 +545,17 @@ Safety
There are no constraints on the returned values; callers must manually add constraints to
ensure that the pair of returned values correspond to the given values x
and y
, and
that they fall within the desired range.
-
sourceunsafe fn mul_hi(
+ &mut self,
+ x: &Self::Variable,
+ y: &Self::Variable,
+ position: Self::Position
+) -> Self::Variable
Returns ((x * y) >> 32
, storing the results in position
.
+Safety
+There are no constraints on the returned values; callers must manually add constraints to
+ensure that the pair of returned values correspond to the given values x
and y
, and
+that they fall within the desired range.
+sourceunsafe fn mul_hi_lo(
&mut self,
x: &Self::Variable,
y: &Self::Variable,
@@ -547,11 +563,11 @@ Safety
position_lo: Self::Position
) -> (Self::Variable, Self::Variable)
Returns ((x * y) >> 32, (x * y) & ((1 << 32) - 1))
, storing the results in position_hi
and position_lo
respectively.
-Safety
+Safety
There are no constraints on the returned values; callers must manually add constraints to
ensure that the pair of returned values correspond to the given values x
and y
, and
that they fall within the desired range.
-sourceunsafe fn divmod_signed(
+
sourceunsafe fn divmod_signed(
&mut self,
x: &Self::Variable,
y: &Self::Variable,
@@ -559,11 +575,11 @@ Safety
position_remainder: Self::Position
) -> (Self::Variable, Self::Variable)
Returns (x / y, x % y)
, storing the results in position_quotient
and
position_remainder
respectively.
-Safety
+Safety
There are no constraints on the returned values; callers must manually add constraints to
ensure that the pair of returned values correspond to the given values x
and y
, and
that they fall within the desired range.
-sourceunsafe fn divmod(
&mut self,
x: &Self::Variable,
y: &Self::Variable,
@@ -571,35 +587,35 @@ Safety
position_remainder: Self::Position
) -> (Self::Variable, Self::Variable)
Returns (x / y, x % y)
, storing the results in position_quotient
and
position_remainder
respectively.
-Safety
+Safety
There are no constraints on the returned values; callers must manually add constraints to
ensure that the pair of returned values correspond to the given values x
and y
, and
that they fall within the desired range.
-sourceunsafe fn count_leading_zeros(
+
sourceunsafe fn count_leading_zeros(
&mut self,
x: &Self::Variable,
position: Self::Position
) -> Self::Variable
sourceunsafe fn count_leading_ones(
+
sourceunsafe fn count_leading_ones(
&mut self,
x: &Self::Variable,
position: Self::Position
) -> Self::Variable
sourcefn copy(
+
sourcefn copy(
&mut self,
x: &Self::Variable,
position: Self::Position
-) -> Self::Variable
sourcefn set_halted(&mut self, flag: Self::Variable)
sourcefn report_exit(&mut self, exit_code: &Self::Variable)
sourcefn reset(&mut self)
Provided Methods§
sourcefn assert_is_zero(&mut self, assert_equals_zero: Self::Variable)
Assert that the value assert_equals_zero
is 0, and add a constraint in the proof system.
+) -> Self::Variablesourcefn set_halted(&mut self, flag: Self::Variable)
sourcefn report_exit(&mut self, exit_code: &Self::Variable)
sourcefn reset(&mut self)
Provided Methods§
sourcefn assert_is_zero(&mut self, assert_equals_zero: Self::Variable)
Assert that the value assert_equals_zero
is 0, and add a constraint in the proof system.
sourcefn assert_equal(&mut self, x: Self::Variable, y: Self::Variable)
Assert that the values x
and y
are equal, and add a constraint in the proof system.
sourcefn assert_boolean(&mut self, x: Self::Variable)
Assert that the value x
is boolean, and add a constraint in the proof system.
sourceunsafe fn push_register(&mut self, idx: &Self::Variable, value: Self::Variable)
sourceunsafe fn push_register_access(
@@ -607,7 +623,7 @@ Safety
idx: &Self::Variable,
value: Self::Variable
)
sourceunsafe fn access_register_if(
@@ -619,7 +635,7 @@ Safety
)
Access the general purpose register with index idx
, adding constraints asserting that the
old value was old_value
and that the new value will be new_value
, if if_is_true
is
true.
-Safety
+Safety
Callers of this function must manually update the registers if required, this function will
only update the access counter.
sourcefn read_register(&mut self, idx: &Self::Variable) -> Self::Variable
sourceunsafe fn access_register(
@@ -629,7 +645,7 @@ Safety
new_value: &Self::Variable
)
sourcefn write_register_if(
@@ -644,7 +660,7 @@ Safety
new_value: &Self::Variable
)
Access the memory address addr
, adding constraints asserting that the old value was
old_value
and that the new value will be new_value
.
-Safety
+Safety
Callers of this function must manually update the memory if required, this function will
only update the access counter.
sourcefn read_memory(&mut self, addr: &Self::Variable) -> Self::Variable
sourcefn write_memory(&mut self, addr: &Self::Variable, new_value: Self::Variable)
sourcefn lookup_16bits(&mut self, value: &Self::Variable)
Adds a lookup to the RangeCheck16Lookup table
@@ -654,12 +670,12 @@ Safety
sourcefn range_check8(&mut self, value: &Self::Variable, bits: u32)
Range checks with 2 lookups to the ByteLookup table that a value
is at most 2^bits
-1 (bits <= 8).
sourcefn lookup_2bits(&mut self, value: &Self::Variable)
Adds a lookup to the AtMost4Lookup table
-sourcefn range_check64(&mut self, _value: &Self::Variable)
sourcefn set_instruction_pointer(&mut self, ip: Self::Variable)
sourcefn get_instruction_pointer(&mut self) -> Self::Variable
sourcefn set_next_instruction_pointer(&mut self, ip: Self::Variable)
sourcefn get_next_instruction_pointer(&mut self) -> Self::Variable
sourcefn range_check64(&mut self, _value: &Self::Variable)
sourcefn set_instruction_pointer(&mut self, ip: Self::Variable)
sourcefn get_instruction_pointer(&mut self) -> Self::Variable
sourcefn set_next_instruction_pointer(&mut self, ip: Self::Variable)
sourcefn get_next_instruction_pointer(&mut self) -> Self::Variable
sourcefn increase_heap_pointer(
&mut self,
by_amount: &Self::Variable,
if_is_true: &Self::Variable
) -> Self::Variable
Increases the heap pointer by by_amount
if if_is_true
is 1
, and returns the previous
value of the heap pointer.
-sourcefn sign_extend(&mut self, x: &Self::Variable, bitlength: u32) -> Self::Variable
Given a variable x
, this function extends it to a signed integer of
+
sourcefn sign_extend(&mut self, x: &Self::Variable, bitlength: u32) -> Self::Variable
Given a variable x
, this function extends it to a signed integer of
bitlength
bits.
-Implementors§
source§impl<Fp: Field> InterpreterEnv for o1vm::interpreters::riscv32im::constraints::Env<Fp>
\ No newline at end of file
+Implementors§
source§impl<Fp: Field> InterpreterEnv for o1vm::interpreters::riscv32im::constraints::Env<Fp>
\ No newline at end of file
diff --git a/rustdoc/o1vm/interpreters/riscv32im/witness/index.html b/rustdoc/o1vm/interpreters/riscv32im/witness/index.html
index 560eff40ef..ebaf30396a 100644
--- a/rustdoc/o1vm/interpreters/riscv32im/witness/index.html
+++ b/rustdoc/o1vm/interpreters/riscv32im/witness/index.html
@@ -1,4 +1,4 @@
-o1vm::interpreters::riscv32im::witness - Rust Module o1vm::interpreters::riscv32im::witness
source · Structs
- This structure represents the environment the virtual machine state will use
+
o1vm::interpreters::riscv32im::witness - Rust Module o1vm::interpreters::riscv32im::witness
source · Structs
- This structure represents the environment the virtual machine state will use
to transition. This environment will be used by the interpreter. The virtual
machine has access to its internal state and some external memory. In
addition to that, it has access to the environment of the Keccak interpreter
diff --git a/rustdoc/o1vm/interpreters/riscv32im/witness/struct.Env.html b/rustdoc/o1vm/interpreters/riscv32im/witness/struct.Env.html
index 89f33687b0..affe3a4542 100644
--- a/rustdoc/o1vm/interpreters/riscv32im/witness/struct.Env.html
+++ b/rustdoc/o1vm/interpreters/riscv32im/witness/struct.Env.html
@@ -15,12 +15,12 @@
machine has access to its internal state and some external memory. In
addition to that, it has access to the environment of the Keccak interpreter
that is used to verify the preimage requested during the execution.
-
Fields§
§instruction_counter: u64
§memory: Vec<(u32, Vec<u8>)>
§last_memory_accesses: [usize; 3]
§memory_write_index: Vec<(u32, Vec<u64>)>
§last_memory_write_index_accesses: [usize; 3]
§registers: Registers<u32>
§registers_write_index: Registers<u64>
§scratch_state_idx: usize
§scratch_state: [Fp; 80]
§halt: bool
§selector: usize
Implementations§
source§impl<Fp: Field> Env<Fp>
sourcepub fn create(page_size: usize, state: State) -> Self
sourcepub fn next_instruction_counter(&self) -> u64
sourcepub fn decode_instruction(&mut self) -> (Instruction, u32)
sourcepub fn step(&mut self) -> Instruction
Execute a single step in the RISCV32i program
-sourcepub fn reset_scratch_state(&mut self)
sourcepub fn write_column(&mut self, column: Column, value: u64)
sourcepub fn write_field_column(&mut self, column: Column, value: Fp)
sourcepub fn update_last_memory_access(&mut self, i: usize)
sourcepub fn get_memory_page_index(&mut self, page: u32) -> usize
sourcepub fn update_last_memory_write_index_access(&mut self, i: usize)
sourcepub fn get_memory_access_page_index(&mut self, page: u32) -> usize
sourcepub fn get_memory_direct(&mut self, addr: u32) -> u8
sourcepub fn normalized_instruction_counter(&self) -> u64
The actual number of instructions executed results from dividing the
+
Fields§
§instruction_counter: u64
§memory: Vec<(u32, Vec<u8>)>
§last_memory_accesses: [usize; 3]
§memory_write_index: Vec<(u32, Vec<u64>)>
§last_memory_write_index_accesses: [usize; 3]
§registers: Registers<u32>
§registers_write_index: Registers<u64>
§scratch_state_idx: usize
§scratch_state: [Fp; 80]
§halt: bool
§selector: usize
Implementations§
source§impl<Fp: Field> Env<Fp>
sourcepub fn create(page_size: usize, state: State) -> Self
sourcepub fn next_instruction_counter(&self) -> u64
sourcepub fn decode_instruction(&mut self) -> (Instruction, u32)
sourcepub fn step(&mut self) -> Instruction
Execute a single step in the RISCV32i program
+sourcepub fn reset_scratch_state(&mut self)
sourcepub fn write_column(&mut self, column: Column, value: u64)
sourcepub fn write_field_column(&mut self, column: Column, value: Fp)
sourcepub fn update_last_memory_access(&mut self, i: usize)
sourcepub fn get_memory_page_index(&mut self, page: u32) -> usize
sourcepub fn update_last_memory_write_index_access(&mut self, i: usize)
sourcepub fn get_memory_access_page_index(&mut self, page: u32) -> usize
sourcepub fn get_memory_direct(&mut self, addr: u32) -> u8
sourcepub fn normalized_instruction_counter(&self) -> u64
The actual number of instructions executed results from dividing the
instruction counter by MAX_ACC (floor).
NOTE: actually, in practice it will be less than that, as there is no
single instruction that performs all of them.
-Trait Implementations§
Trait Implementations§
source§impl<Fp: Field> InterpreterEnv for Env<Fp>
source§fn alloc_scratch(&mut self) -> Self::Position
Allocate a new abstract variable for the current step.
The variable can be used to store temporary values.
The variables are “freed” after each step/instruction.
The variable allocation can be seen as an allocation on a stack that is
@@ -161,40 +161,45 @@
position_hi: Self::Position,
position_lo: Self::Position
) -> (Self::Variable, Self::Variable)Returns ((x * y) >> 32, (x * y) & ((1 << 32) - 1))
, storing the results in position_hi
-and position_lo
respectively. Read moresource§unsafe fn mul_hi(
+ &mut self,
+ x: &Self::Variable,
+ y: &Self::Variable,
+ position: Self::Position
+) -> Self::Variable
source§unsafe fn mul_hi_lo(
&mut self,
x: &Self::Variable,
y: &Self::Variable,
position_hi: Self::Position,
position_lo: Self::Position
) -> (Self::Variable, Self::Variable)
Returns ((x * y) >> 32, (x * y) & ((1 << 32) - 1))
, storing the results in position_hi
-and position_lo
respectively. Read moresource§unsafe fn divmod_signed(
+and position_lo
respectively. Read more
source§unsafe fn divmod_signed(
&mut self,
x: &Self::Variable,
y: &Self::Variable,
position_quotient: Self::Position,
position_remainder: Self::Position
) -> (Self::Variable, Self::Variable)
Returns (x / y, x % y)
, storing the results in position_quotient
and
-position_remainder
respectively. Read moresource§unsafe fn divmod(
&mut self,
x: &Self::Variable,
y: &Self::Variable,
position_quotient: Self::Position,
position_remainder: Self::Position
) -> (Self::Variable, Self::Variable)
Returns (x / y, x % y)
, storing the results in position_quotient
and
-position_remainder
respectively. Read moresource§unsafe fn count_leading_zeros(
+position_remainder
respectively. Read more
source§unsafe fn count_leading_zeros(
&mut self,
x: &Self::Variable,
position: Self::Position
-) -> Self::Variable
source§unsafe fn count_leading_ones(
+) -> Self::Variable
source§unsafe fn count_leading_ones(
&mut self,
x: &Self::Variable,
position: Self::Position
-) -> Self::Variable
source§fn copy(
+) -> Self::Variable
source§fn copy(
&mut self,
x: &Self::Variable,
position: Self::Position
-) -> Self::Variable
source§fn set_halted(&mut self, flag: Self::Variable)
source§fn report_exit(&mut self, exit_code: &Self::Variable)
source§fn reset(&mut self)
source§fn assert_is_zero(&mut self, assert_equals_zero: Self::Variable)
Assert that the value assert_equals_zero
is 0, and add a constraint in the proof system.source§fn assert_equal(&mut self, x: Self::Variable, y: Self::Variable)
Assert that the values x
and y
are equal, and add a constraint in the proof system.source§fn assert_boolean(&mut self, x: Self::Variable)
Assert that the value x
is boolean, and add a constraint in the proof system.source§unsafe fn push_register(&mut self, idx: &Self::Variable, value: Self::Variable)
source§unsafe fn push_register_access(
+) -> Self::Variable
source§fn set_halted(&mut self, flag: Self::Variable)
source§fn report_exit(&mut self, exit_code: &Self::Variable)
source§fn reset(&mut self)
source§fn assert_is_zero(&mut self, assert_equals_zero: Self::Variable)
Assert that the value assert_equals_zero
is 0, and add a constraint in the proof system.source§fn assert_equal(&mut self, x: Self::Variable, y: Self::Variable)
Assert that the values x
and y
are equal, and add a constraint in the proof system.source§fn assert_boolean(&mut self, x: Self::Variable)
Assert that the value x
is boolean, and add a constraint in the proof system.source§unsafe fn push_register(&mut self, idx: &Self::Variable, value: Self::Variable)
source§unsafe fn push_register_access(
&mut self,
idx: &Self::Variable,
value: Self::Variable
@@ -225,12 +230,12 @@
)
Access the memory address addr
, adding constraints asserting that the old value was
old_value
and that the new value will be new_value
. Read moresource§fn read_memory(&mut self, addr: &Self::Variable) -> Self::Variable
source§fn write_memory(&mut self, addr: &Self::Variable, new_value: Self::Variable)
source§fn lookup_16bits(&mut self, value: &Self::Variable)
Adds a lookup to the RangeCheck16Lookup tablesource§fn range_check16(&mut self, value: &Self::Variable, bits: u32)
Range checks with 2 lookups to the RangeCheck16Lookup table that a value
is at most 2^bits
-1 (bits <= 16).source§fn lookup_8bits(&mut self, value: &Self::Variable)
Adds a lookup to the ByteLookup tablesource§fn range_check8(&mut self, value: &Self::Variable, bits: u32)
Range checks with 2 lookups to the ByteLookup table that a value
-is at most 2^bits
-1 (bits <= 8).source§fn lookup_2bits(&mut self, value: &Self::Variable)
Adds a lookup to the AtMost4Lookup tablesource§fn range_check64(&mut self, _value: &Self::Variable)
source§fn set_instruction_pointer(&mut self, ip: Self::Variable)
source§fn get_instruction_pointer(&mut self) -> Self::Variable
source§fn set_next_instruction_pointer(&mut self, ip: Self::Variable)
source§fn get_next_instruction_pointer(&mut self) -> Self::Variable
source§fn increase_heap_pointer(
+is at most 2^bits
-1 (bits <= 8).
source§fn lookup_2bits(&mut self, value: &Self::Variable)
Adds a lookup to the AtMost4Lookup tablesource§fn range_check64(&mut self, _value: &Self::Variable)
source§fn set_instruction_pointer(&mut self, ip: Self::Variable)
source§fn get_instruction_pointer(&mut self) -> Self::Variable
source§fn set_next_instruction_pointer(&mut self, ip: Self::Variable)
source§fn get_next_instruction_pointer(&mut self) -> Self::Variable
source§fn increase_heap_pointer(
&mut self,
by_amount: &Self::Variable,
if_is_true: &Self::Variable
) -> Self::Variable
Increases the heap pointer by by_amount
if if_is_true
is 1
, and returns the previous
-value of the heap pointer.
Auto Trait Implementations§
§impl<Fp> RefUnwindSafe for Env<Fp>where
Fp: RefUnwindSafe,
§impl<Fp> Send for Env<Fp>where
Fp: Send,
§impl<Fp> Sync for Env<Fp>where
diff --git a/rustdoc/search-index.js b/rustdoc/search-index.js
index 7b1d03afcb..a510913d2b 100644
--- a/rustdoc/search-index.js
+++ b/rustdoc/search-index.js
@@ -17,7 +17,7 @@ var searchIndex = JSON.parse('{\
"mina_signer":{"doc":"Mina signer","t":"GCGCNECGCCCINLLLLFFLLLLLLLLAAAAKALLLLKLDENNGNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLNNNNNDNRNDEGNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLMDLLLLLLLLLLLLLLRGDENNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDLLLLLLLLLLLLLLLLMMLLLLLL","n":["BaseField","CompressedPubKey","CurvePoint","Keypair","MAINNET","NetworkId","PubKey","ScalarField","Schnorr","SecKey","Signature","Signer","TESTNET","borrow","borrow_mut","clone","clone_into","create_kimchi","create_legacy","deref","deref_mut","drop","fmt","from","init","into","into_bytes","keypair","pubkey","schnorr","seckey","sign","signature","to_owned","try_from","try_into","type_id","verify","vzip","Keypair","KeypairError","NonCurvePoint","PublicKey","Result","SecretKey","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","deref","deref","deref_mut","deref_mut","drop","drop","eq","eq","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","from","from","from","from","from_bytes","from_hex","from_parts_unsafe","from_secret_key","get_address","init","init","into","into","provide","public","rand","source","to_bytes","to_hex","to_owned","to_owned","to_string","to_string","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","AddressBase58","AddressChecksum","AddressLength","AddressRawByteLength","AddressVersion","CompressedPubKey","Hex","MINA_ADDRESS_LEN","NonCurvePoint","PubKey","PubKeyError","Result","SecKey","XCoordinate","XCoordinateBytes","YCoordinateBytes","YCoordinateParity","YCoordinateParityBytes","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","empty","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","fmt","from","from","from","from_address","from_address","from_bytes","from_bytes","from_hex","from_hex","from_point_unsafe","from_secret_key","from_secret_key","init","init","init","into","into","into","into_address","into_address","into_compressed","into_point","is_odd","point","provide","to_bytes","to_bytes","to_hex","to_hex","to_owned","to_owned","to_owned","to_string","to_string","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","x","Schnorr","borrow","borrow_mut","deref","deref_mut","drop","from","init","into","sign","try_from","try_into","type_id","verify","vzip","MINA_SEC_KEY_LEN","Result","SecKey","SecKeyError","SecretKeyBase58","SecretKeyBytes","SecretKeyChecksum","SecretKeyHex","SecretKeyLength","SecretKeyVersion","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","deref","deref","deref_mut","deref_mut","drop","drop","eq","eq","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","from","from","from_base58","from_bytes","from_hex","init","init","into","into","into_scalar","new","provide","rand","scalar","to_base58","to_bytes","to_hex","to_owned","to_owned","to_string","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","Signature","borrow","borrow_mut","clone","clone_into","deref","deref_mut","drop","eq","equivalent","equivalent","fmt","fmt","from","init","into","new","rx","s","to_owned","to_string","try_from","try_into","type_id","vzip"],"q":[[0,"mina_signer"],[39,"mina_signer::keypair"],[100,"mina_signer::pubkey"],[201,"mina_signer::schnorr"],[216,"mina_signer::seckey"],[277,"mina_signer::signature"]],"d":["Base field element type","","Affine curve point type","","Id for mainnet","Mina network (or blockchain) identifier","","Scalar field element type","","","","Interface for signed objects","Id for all testnets","","","","","Create an experimental kimchi signer context with domain …","Create a legacy signer context with domain parameters …","","","","","Returns the argument unchanged.","","Calls U::from(self)
.","","Keypair structures and algorithms","Public key structures and algorithms","Mina Schnorr signature scheme","Secret key structures and helpers","Sign input
(see Hashable
) using keypair kp
and return the …","Mina signature structure and associated helpers","","","","","Verify that the signature sig
on input
(see Hashable
) is …","","Keypair structure","Keypair error","point not on curve","Public key error","Keypair result","Invalid secret key","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Returns the argument unchanged.","Deserialize keypair from secret key bytes","Deserialize keypair from secret key hex","Create keypair from scalar field secret
element and curve …","Create keypair from secret key","Obtain the Mina address corresponding to the keypair’s …","","","Calls U::from(self)
.","Calls U::from(self)
.","","Public key","Generate random keypair","","Deserialize keypair into bytes","Deserialize keypair into hex","","","","","","","","","","","","","Invalid address base58","Invalid address checksum","Invalid address length","Invalid raw address bytes length","Invalid address version","Compressed public keys consist of x-coordinate and …","Invalid hex","Length of Mina addresses","Invalid y-coordinate parity","Public key","Public key errors","Public key Result","Invalid secret key","Invalid x-coordinate","Invalid x-coordinate bytes","Point not on curve","Invalid y-coordinate parity","Invalid y-coordinate","","","","","","","","","","","","","","","","","","","","","","The empty CompressedPubKey
value that is used as public_key
…","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Deserialize Mina address into public key","Deserialize Mina address into compressed public key (via …","Deserialize public key from bytes","Deserialize compressed public key from bytes","Deserialize public key from hex","Deserialize compressed public key from hex","Create public key from curve point Note: Does not check …","Create public key from a secret key","Create compressed public key from a secret key","","","","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Serialize public key into corresponding Mina address","Serialize compressed public key into corresponding Mina …","Convert public key into compressed public key","Convert public key into curve point","Parity of y-coordinate","Borrow public key as curve point","","Deserialize public key into bytes","Deserialize compressed public key into bytes","Deserialize public key into hex","Deserialize compressed public key into hex","","","","","","","","","","","","","","","","","","X-coordinate","Schnorr signer context for the Mina signature algorithm","","","","","","Returns the argument unchanged.","","Calls U::from(self)
.","","","","","","","Secret key length","Keypair result","Secret key","Keypair error","Invalid base58 secret key","Invalid secret key bytes","Invalid secret key checksum","Invalid secret key hex","Invalid secrey key length","Invalid secret key version","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Deserialize base58 encoded secret key","Deserialize secret key from bytes","Deserialize secret key from hex","","","Calls U::from(self)
.","Calls U::from(self)
.","Convert secret key into scalar field element","Create secret key from scalar field element","","Generate a random secret key","Borrows secret key as scalar field element","Deserialize secret key into base58","Deserialize secret key into bytes","Deserialize secret key into hex","","","","","","","","","","","","Signature structure","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self)
.","Create a new signature","Base field component","Scalar field component","","","","","",""],"i":[0,0,0,0,1,0,0,0,0,0,0,0,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,0,0,0,3,0,1,1,1,1,3,1,0,0,15,15,0,15,15,9,15,9,15,9,15,9,15,9,15,9,15,9,15,9,15,15,9,9,15,15,9,9,15,15,15,9,9,9,9,9,9,15,9,15,9,15,9,9,15,9,9,15,9,15,9,15,9,15,9,15,9,15,9,17,17,17,17,17,0,17,0,17,0,0,0,17,17,17,17,17,17,17,13,30,17,13,30,17,13,30,17,13,30,17,13,30,17,13,30,17,13,30,30,17,13,30,17,17,13,13,30,30,17,17,13,13,30,17,13,30,13,30,13,30,13,30,13,13,30,17,13,30,17,13,30,13,30,13,13,30,13,17,13,30,13,30,17,13,30,17,13,17,13,30,17,13,30,17,13,30,17,13,30,30,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,0,0,0,16,16,16,16,16,16,16,23,16,23,16,23,16,23,16,23,16,23,16,23,16,23,16,16,23,23,16,16,23,16,23,23,23,23,16,23,16,23,23,23,16,23,23,23,23,23,16,23,16,16,23,16,23,16,23,16,23,0,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[1,1],[[]],[[],[[3,[2]]]],[[],[[3,[2]]]],[4],[4],[4],[[1,5],6],[[]],[[],4],[[]],[1,[[8,[7]]]],0,0,0,0,[9,10],0,[[]],[[],11],[[],11],[[],12],[[10,13],14],[[]],0,0,0,0,0,0,[[]],[[]],[[]],[[]],[15,15],[9,9],[[]],[[]],[4],[4],[4],[4],[4],[4],[[15,15],14],[[9,9],14],[[],14],[[],14],[[],14],[[],14],[[15,5],6],[[15,5],6],[[9,5],6],[[9,5],6],[16,15],[[]],[17,15],[[]],[[[18,[7]]],[[19,[9]]]],[20,[[19,[9]]]],[[21,22],9],[23,[[19,[9]]]],[9,24],[[],4],[[],4],[[]],[[]],[25],0,[[[0,[26,27]]],[[19,[9]]]],[15,[[29,[28]]]],[9,[[8,[7]]]],[9,24],[[]],[[]],[[],24],[[],24],[[],11],[[],11],[[],11],[[],11],[[],12],[[],12],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[17,17],[13,13],[30,30],[[]],[[]],[[]],[4],[4],[4],[4],[4],[4],[4],[4],[4],[[],30],[[17,17],14],[[13,13],14],[[30,30],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[17,5],6],[[17,5],6],[[13,5],6],[[13,5],6],[[30,5],6],[[]],[[]],[[]],[20,[[31,[13]]]],[20,[[31,[30]]]],[[[18,[7]]],[[31,[13]]]],[[[18,[7]]],[[31,[30]]]],[20,[[31,[13]]]],[20,[[31,[30]]]],[22,13],[23,[[31,[13]]]],[23,30],[[],4],[[],4],[[],4],[[]],[[]],[[]],[13,24],[30,24],[13,30],[13,22],0,[13,22],[25],[13,[[8,[7]]]],[30,[[8,[7]]]],[13,24],[30,24],[[]],[[]],[[]],[[],24],[[],24],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],12],[[],12],[[],12],[[]],[[]],[[]],0,0,[[]],[[]],[4],[4],[4],[[]],[[],4],[[]],[[[32,[2]],9,2],10],[[],11],[[],11],[[],12],[[[32,[2]],10,13,2],14],[[]],0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[16,16],[23,23],[[]],[[]],[4],[4],[4],[4],[4],[4],[[16,16],14],[[23,23],14],[[],14],[[],14],[[],14],[[],14],[[16,5],6],[[16,5],6],[[23,5],6],[[]],[[]],[20,[[33,[23]]]],[[[18,[7]]],[[33,[23]]]],[20,[[33,[23]]]],[[],4],[[],4],[[]],[[]],[23,21],[21,23],[25],[[[0,[26,27]]],23],[23,21],[23,24],[23,[[8,[7]]]],[23,24],[[]],[[]],[[],24],[[],11],[[],11],[[],11],[[],11],[[],12],[[],12],[[]],[[]],0,[[]],[[]],[10,10],[[]],[4],[4],[4],[[10,10],14],[[],14],[[],14],[[10,5],6],[[10,5],6],[[]],[[],4],[[]],[[34,21],10],0,0,[[]],[[],24],[[],11],[[],11],[[],12],[[]]],"c":[],"p":[[4,"NetworkId"],[8,"Hashable"],[8,"Signer"],[15,"usize"],[3,"Formatter"],[6,"Result"],[15,"u8"],[3,"Vec"],[3,"Keypair"],[3,"Signature"],[4,"Result"],[3,"TypeId"],[3,"PubKey"],[15,"bool"],[4,"KeypairError"],[4,"SecKeyError"],[4,"PubKeyError"],[15,"slice"],[6,"Result"],[15,"str"],[6,"ScalarField"],[6,"CurvePoint"],[3,"SecKey"],[3,"String"],[3,"Demand"],[8,"RngCore"],[8,"CryptoRng"],[8,"Error"],[4,"Option"],[3,"CompressedPubKey"],[6,"Result"],[3,"Schnorr"],[6,"Result"],[6,"BaseField"]]},\
"mvpoly":{"doc":"This module contains the definition of the MVPoly
trait, …","t":"IKKKKKLLKKKKKKAKAAKADLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDLLFFLLLLLLFLLLLLFLFLLLLLLL","n":["MVPoly","add_monomial","compute_cross_terms","degree","double","eval","from_constant","from_expr","from_variable","homogeneous_eval","is_constant","is_homogeneous","is_multilinear","modify_monomial","monomials","mul_by_scalar","pbt","prime","random","utils","Sparse","add","add","add","add","add_monomial","borrow","borrow_mut","clone","clone_into","compute_cross_terms","degree","deref","deref_mut","double","drop","eq","equivalent","equivalent","eval","fmt","from","from","from","from","from_variable","homogeneous_eval","init","into","is_constant","is_homogeneous","is_multilinear","is_zero","modify_monomial","monomials","mul","mul_by_scalar","neg","neg","one","random","sub","sub","sub","sub","to_owned","try_from","try_into","type_id","vzip","zero","test_add_monomial","test_add_zero","test_can_be_printed_with_debug","test_degree_constant","test_degree_random_degree","test_double_is_add_twice","test_eval_pbt_add","test_eval_pbt_mul_by_scalar","test_eval_pbt_neg","test_eval_pbt_sub","test_evaluation_constant_polynomial","test_evaluation_zero_polynomial","test_homogeneous_eval","test_is_constant","test_is_multilinear","test_is_zero","test_mul_by_one","test_mul_by_scalar","test_mul_by_scalar_with_one","test_mul_by_scalar_with_zero","test_mul_by_zero","test_mvpoly_add_degree_pbt","test_mvpoly_mul_by_scalar_degree_pbt","test_mvpoly_mul_degree_pbt","test_mvpoly_mul_eval_pbt","test_mvpoly_mul_pbt","test_mvpoly_neg_degree_pbt","test_mvpoly_sub_degree_pbt","test_neg","test_neg_ref","test_sub_zero","Dense","add","add","add","add","add_monomial","borrow","borrow_mut","clone","clone_into","compute_cross_terms","compute_normalized_indices","default","degree","deref","deref_mut","dimension","double","drop","eq","equivalent","equivalent","eval","fmt","from","from","from","from_coeffs","from_variable","homogeneous_eval","increase_degree","index","index_mut","init","into","is_constant","is_homogeneous","is_multilinear","is_zero","iter","maximum_degree","modify_monomial","mul","mul_by_scalar","neg","neg","new","number_of_variables","one","random","sub","sub","sub","sub","to_owned","try_from","try_into","type_id","vzip","zero","PrimeNumberGenerator","borrow","borrow_mut","compute_all_two_factors_decomposition","compute_indices_nested_loop","default","deref","deref_mut","drop","from","get_first_nth_primes","get_mapping_with_primes","get_next_prime","get_nth_prime","init","into","into_iter","is_prime","is_prime","naive_prime_factors","new","next","par_bridge","try_from","try_into","type_id","vzip"],"q":[[0,"mvpoly"],[20,"mvpoly::monomials"],[71,"mvpoly::pbt"],[102,"mvpoly::prime"],[162,"mvpoly::utils"]],"d":["Generic trait to represent a multi-variate polynomial","Add the monomial coeff * x_1^{e_1} * ... * x_N^{e_N}
to the","Compute the cross-terms as described in Behind Nova: …","Returns the degree of the polynomial.","","Evaluate the polynomial at the vector point x
.","","Build a value from an expression. This method aims to be …","Build the univariate polynomial x_i
from the variable i
. …","Evaluate the polynomial at the vector point x
and the …","","Returns true if the polynomial is homogeneous (of degree D
…","Return true if the multi-variate polynomial is …","Modify the monomial in the polynomial to the new value …","","","This module contains a list of property tests for the …","Multivariate polynomial dense representation using prime …","Generate a random polynomial of maximum degree max_degree
.","This module contains functions to work with prime numbers …","Represents a multivariate polynomial in N
variables with …","","","","","","","","","","","Returns the degree of the polynomial.","","","","","","","","Evaluate the polynomial at the vector point x
.","","Returns the argument unchanged.","","","","","","","Calls U::from(self)
.","","","","","","","","","","","","Generate a random polynomial of maximum degree max_degree
.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Represents a multivariate polynomial of degree less than D
…","","","","","","","","","","","Output example for N = 2 and D = 2:","","Returns the degree of the polynomial.","","","","","","","","","Evaluate the polynomial at the vector point x
.","","Returns the argument unchanged.","","","","","","","","","","Calls U::from(self)
.","","","","","","","","","","","","","","","Generate a random polynomial of maximum degree max_degree
.","","","","","","","","","","","","","","Compute all the possible two factors decomposition of a …","Compute the list of indices to perform N nested loops of …","","","","","Returns the argument unchanged.","","Build mapping from 1..N to the first N prime numbers. It …","Get the next prime number","Generate the nth prime number","","Calls U::from(self)
.","","Naive implementation checking if n is prime You can also …","Check if a number is prime using the list of prime numbers …","Given a number n, return the list of prime factors of n, …","","","","","","",""],"i":[0,26,26,26,26,26,26,26,26,26,26,26,26,26,0,26,0,0,26,0,0,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,0,24,24,0,0,24,24,24,24,24,24,0,24,24,24,24,24,0,24,0,24,24,24,24,24,24,24],"f":[0,[[[2,[1]]]],[[2,2],[[3,[1]]]],[[],1],[[]],[2],[[[6,[[5,[4]]]]]],[[[9,[[7,[4]],[8,[1]]]],[10,[1]]]],[[[11,[[8,[1]]]],[10,[1]]]],[2],[[],12],[[],12],[[],12],[[[2,[1]]]],0,[[]],0,0,[[13,[10,[1]]]],0,0,[[[15,[14]],[15,[14]]]],[[[15,[14]],[15,[14]]],[[15,[14]]]],[[[15,[14]],[15,[14]]]],[[[15,[14]],[15,[14]]]],[[[15,[14]],[2,[1]],14]],[[]],[[]],[[[15,[[0,[4,14]]]]],[[15,[[0,[4,14]]]]]],[[]],[[[15,[14]],[2,[14]],[2,[14]],14,14],[[3,[1,14]]]],[[[15,[14]]],1],[1],[1],[[[15,[14]]],[[15,[14]]]],[1],[[[15,[14]],[15,[14]]],12],[[],12],[[],12],[[[15,[14]],[2,[14]]],14],[[[15,[14]],16],17],[[]],[18],[14,[[15,[14]]]],[[[19,[14]]],[[15,[14]]]],[[[11,[[8,[1]]]],[10,[1]]],[[15,[14]]]],[[[15,[14]],[2,[14]],14],14],[[],1],[[]],[[[15,[14]]],12],[[[15,[14]]],12],[[[15,[14]]],12],[[[15,[14]]],12],[[[15,[14]],[2,[1]],14]],0,[[[15,[14]],[15,[14]]],[[15,[14]]]],[[[15,[14]],14],[[15,[14]]]],[[[15,[14]]]],[[[15,[14]]]],[[],[[15,[14]]]],[[13,[10,[1]]],[[15,[14]]]],[[[15,[14]],[15,[14]]]],[[[15,[14]],[15,[14]]]],[[[15,[14]],[15,[14]]]],[[[15,[14]],[15,[14]]]],[[]],[[],20],[[],20],[[],21],[[]],[[],[[15,[14]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[[19,[14]],[19,[14]]],[[19,[14]]]],[[[19,[14]],[19,[14]]],[[19,[14]]]],[[[19,[14]],[19,[14]]],[[19,[14]]]],[[[19,[14]],[19,[14]]],[[19,[14]]]],[[[19,[14]],[2,[1]],14]],[[]],[[]],[[[19,[[0,[4,14]]]]],[[19,[[0,[4,14]]]]]],[[]],[[[19,[14]],[2,[14]],[2,[14]],14,14],[[3,[1,14]]]],[[],[[22,[1]]]],[[],[[19,[14]]]],[[[19,[14]]],1],[1],[1],[[],1],[[[19,[14]]],[[19,[14]]]],[1],[[[19,[14]],[19,[14]]],12],[[],12],[[],12],[[[19,[14]],[2,[14]]],14],[[[19,[14]],16],17],[[]],[18],[14,[[19,[14]]]],[[[22,[14]]],[[19,[14]]]],[[[11,[[8,[1]]]],[10,[1]]],[[19,[14]]]],[[[19,[14]],[2,[14]],14],14],[[[19,[14]]],[[19,[14]]]],[[[19,[14]],1]],[[[19,[14]],1]],[[],1],[[]],[[[19,[14]]],12],[[[19,[14]]],12],[[[19,[14]]],12],[[[19,[14]]],12],[[[19,[14]]],23],[[[19,[14]]],1],[[[19,[14]],[2,[1]],14]],[[[19,[14]],[19,[14]]],[[19,[14]]]],[[[19,[14]],14],[[19,[14]]]],[[[19,[14]]]],[[[19,[14]]]],[[],[[19,[14]]]],[[[19,[14]]],1],[[],[[19,[14]]]],[[13,[10,[1]]],[[19,[14]]]],[[[19,[14]],[19,[14]]],[[19,[14]]]],[[[19,[14]],[19,[14]]],[[19,[14]]]],[[[19,[14]],[19,[14]]],[[19,[14]]]],[[[19,[14]],[19,[14]]],[[19,[14]]]],[[]],[[],20],[[],20],[[],21],[[]],[[],[[19,[14]]]],0,[[]],[[]],[[1,[3,[1,22]],24],22],[[[22,[1]]],[[22,[[22,[1]]]]]],[[],24],[1],[1],[1],[[]],[[24,1],[[22,[1]]]],[[],[[22,[1]]]],[24,1],[[24,1],1],[[],1],[[]],[[]],[1,12],[[24,1],12],[[1,24],22],[[],24],[24,10],[[],25],[[],20],[[],20],[[],21],[[]]],"c":[],"p":[[15,"usize"],[15,"array"],[3,"HashMap"],[8,"Clone"],[4,"ConstantExprInner"],[4,"Operations"],[6,"ConstantExpr"],[8,"Into"],[6,"Expr"],[4,"Option"],[3,"Variable"],[15,"bool"],[8,"RngCore"],[8,"PrimeField"],[3,"Sparse"],[3,"Formatter"],[6,"Result"],[15,"never"],[3,"Dense"],[4,"Result"],[3,"TypeId"],[3,"Vec"],[8,"Iterator"],[3,"PrimeNumberGenerator"],[3,"IterBridge"],[8,"MVPoly"]]},\
"o1_utils":{"doc":"A collection of utility functions and constants that can …","t":"CCCCCCCCCCAAAAOOAAAAAAAAAADLLLLLLLLLLLLLLLLFFFIKKIKKKDLLMLLLLLLLLLLMLLLLLDLLLLLLLLLLMMLLLLIKKKKIKKKKINNNIENIGIKLLLLLLLLLLLLLLKKKKKFLFLLFFLLLLKKKKLLLLKKLLDILLLLLLLLLLLLLLLLLLLMLLLLLLKLKLKLLLLISLFFDDLLLLLLLLLLLLLLLLLLALLFFLLLLLLLLFFF","n":["BigUintFieldHelpers","BigUintHelpers","BitwiseOps","ChunkedEvaluations","ExtendedDensePolynomial","ExtendedEvaluations","FieldHelpers","ForeignElement","RandomField","Two","adjacent_pairs","array","biguint_helpers","bitwise_operations","box_array","box_array2","chunked_evaluations","chunked_polynomial","dense_polynomial","evaluations","field_helpers","foreign_field","hasher","math","serialization","tests","AdjacentPairs","borrow","borrow_mut","deref","deref_mut","drop","from","from","from","init","into","into_iter","next","try_from","try_into","type_id","vzip","vec_to_boxed_array","vec_to_boxed_array2","vec_to_boxed_array3","BigUintHelpers","bitlen","from_hex","BitwiseOps","bitwise_and","bitwise_not","bitwise_xor","ChunkedEvaluations","borrow","borrow_mut","chunks","clone","clone_into","deref","deref_mut","deserialize","drop","from","init","into","serialize","size","to_owned","try_from","try_into","type_id","vzip","ChunkedPolynomial","borrow","borrow_mut","deref","deref_mut","drop","evaluate_chunks","from","init","into","linearize","polys","size","try_from","try_into","type_id","vzip","ExtendedDensePolynomial","eval_polynomial","scale","shiftr","to_chunked_polynomial","ExtendedEvaluations","pow","scale","shift","square","BigUintFieldHelpers","DecodeHex","DeserializeBits","DeserializeBytes","FieldHelpers","FieldHelpersError","FromBigToField","RandomField","Result","Two","bits_to_field","borrow","borrow_mut","clone","clone_into","deref","deref_mut","drop","eq","equivalent","equivalent","fmt","fmt","from","from_biguint","from_bits","from_bytes","from_hex","gen","gen_field_with_bits","i32_to_field","init","inner_prod","into","modulus_biguint","pows","product","provide","size_in_bytes","to_bigint_positive","to_biguint","to_bits","to_bytes","to_field","to_hex","to_owned","to_string","try_from","try_into","two","two_pow","type_id","vzip","ForeignElement","ForeignFieldHelpers","borrow","borrow_mut","clone","clone_into","deref","deref_mut","drop","eq","equivalent","equivalent","fmt","from","from_be","from_biguint","from_field","index","index_mut","init","into","limbs","neg","new","to_biguint","to_owned","try_from","try_into","two_to_2limb","two_to_2limb","two_to_3limb","two_to_3limb","two_to_limb","two_to_limb","type_id","vzip","zero","CryptoDigest","PREFIX","digest","ceil_log2","div_ceil","SerdeAs","SerdeAsUnchecked","borrow","borrow","borrow_mut","borrow_mut","deref","deref","deref_mut","deref_mut","deserialize_as","deserialize_as","drop","drop","from","from","init","init","into","into","ser","serialize_as","serialize_as","test_generic_serialization_regression_canonical","test_generic_serialization_regression_serde","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","deserialize","serialize","make_test_rng"],"q":[[0,"o1_utils"],[26,"o1_utils::adjacent_pairs"],[43,"o1_utils::array"],[46,"o1_utils::biguint_helpers"],[49,"o1_utils::bitwise_operations"],[53,"o1_utils::chunked_evaluations"],[73,"o1_utils::chunked_polynomial"],[90,"o1_utils::dense_polynomial"],[95,"o1_utils::evaluations"],[100,"o1_utils::field_helpers"],[153,"o1_utils::foreign_field"],[190,"o1_utils::hasher"],[193,"o1_utils::math"],[195,"o1_utils::serialization"],[228,"o1_utils::serialization::ser"],[230,"o1_utils::tests"]],"d":["","","","","","","","","","","This module hosts the AdjacentPairs type, which can be …","This module provides different helpers in creating …","This module provides a set of functions to perform bit …","This module provides a set of functions to perform bit …","A macro similar to vec![$elem; $size]
which returns a boxed","A macro similar to vec![vec![$elem; $size1]; $size2]
which …","This module contains a type ChunkedEvaluations,","This module contains a type ChunkedPolynomial, and a …","This adds a few utility functions for the DensePolynomial …","This adds a few utility functions for the Evaluations …","Useful helper methods to extend ark_ff::Field.","Describes helpers for foreign field arithmetics Generic …","This module provides the CryptoDigest trait, which …","This modules implements some math helper functions.","This adds a few utility functions for serializing and …","Utils only for testing","You can create a new AdjacentPairs from an iterator using:","","","","","","","Returns the argument unchanged.","","","Calls U::from(self)
.","","","","","","","Converts a vector of elements to a boxed one. Semantically …","Converts a two-dimensional vector to a constant sized …","Converts a three-dimensional vector to a constant sized …","Helpers for BigUint","Returns the minimum number of bits required to represent a …","Creates a BigUint from an hexadecimal string in big endian","Bitwise operations","Conjunction of the bits of two BigUint inputs for a given …","Negate the bits of a Self input If it provides a larger …","Bitwise XOR of two BigUint inputs","This struct contains multiple chunk evaluations.","","","The chunk evaluations.","","","","","","","Returns the argument unchanged.","","Calls U::from(self)
.","","Each chunk polynomial has degree size-1
.","","","","","","This struct contains multiple chunk polynomials with …","","","","","","This function evaluates polynomial in chunks.","Returns the argument unchanged.","","Calls U::from(self)
.","Multiplies the chunks of a polynomial with powers of …","The chunk polynomials.","Each chunk polynomial has degree size-1
.","","","","","An extension for the DensePolynomial type.","eval_polynomial(coeffs, x)
evaluates a polynomial given …","This function “scales” (multiplies all the …","Shifts all the coefficients to the right.","Convert a polynomial into chunks. Implementors must ensure …","An extension for the Evaluations type.","Raise each evaluation to some power pow
","This function “scales” (multiplies) a polynomial with …","Utility function for shifting poly along domain coordinate","Square each evaluation","Field element wrapper for BigUint","","","","Field element helpers Unless otherwise stated everything …","Field helpers error","","Helper to generate random field elements","Result alias using FieldHelpersError","Helper to obtain two","Create a new field element from this field elements bits","","","","","","","","","","","","","Returns the argument unchanged.","Deserialize from BigUint","Deserialize from bits","Deserialize from bytes","Deserialize from little-endian hex","Initialize a random input with a random value of given …","Generates a random field element of up to a given number …","Converts an i32 into a Field","","COmpute the inner product of two slices of field elements.","Calls U::from(self)
.","Get the modulus as BigUint
","pows(d, x)
returns a vector containing the first d
powers …","Returns the product of all the field elements belonging to …","","Field size in bytes","Serialize field element f to a (positive) BigInt directly.","Serialize field element to a BigUint","Serialize to bits","Serialize to bytes","Convert BigUint into PrimeField element","Serialize to hex","","","","","Value two","Power of two","","","Represents a foreign field element Represents a foreign …","Foreign field helpers for B
the limb size.","","","","","","","","","","","","Returns the argument unchanged.","Initializes a new foreign element from a set of bytes in …","Initializes a new foreign element from a big unsigned …","Initializes a new foreign element from an element in the …","","","","Calls U::from(self)
.","limbs in little endian order","Initializes a new foreign element from an absolute BigUint
…","Creates a new foreign element from an array containing N …","Obtains the big integer representation of the foreign …","","","","2^{2 * B}","","2^{3 * B}","","2^{B}","","","","Creates a new foreign element representing the value zero","This trait can be implemented on any type that implements …","The domain separation string to use in the hash. This is …","Returns the digest of self
. Note: this is implemented as …","Returns ceil(log2(d)) but panics if d = 0.","This function is bound to be stable soon. See …","You can use SerdeAs with serde_with in order to serialize …","Same as SerdeAs
but using unchecked and uncompressed …","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self)
.","Calls U::from(self)
.","You can use this module for serialization and …","","","A generic regression serialization test for serialization …","A generic regression serialization test for serialization …","","","","","","","","","You can use this to deserialize an arkworks type with …","You can use this to serialize an arkworks type with serde …","Create a new test rng with a random seed"],"i":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,45,45,0,46,46,46,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,0,47,47,47,47,0,48,48,48,48,0,24,24,24,0,0,24,0,0,0,49,24,24,24,24,24,24,24,24,24,24,24,24,24,49,49,49,49,50,50,0,24,0,24,49,0,0,24,49,49,49,49,49,51,49,24,24,24,24,52,52,24,24,0,0,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,53,37,53,37,53,37,37,37,37,0,54,54,0,0,0,0,55,56,55,56,55,56,55,56,55,56,55,56,55,56,55,56,55,56,0,55,56,0,0,55,56,55,56,55,56,55,56,0,0,0],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[1],[1],[1],[2,[[4,[3]]]],[[]],[5],[[],1],[[]],[[]],[[[4,[6,3]]],7],[[],8],[[],8],[[],9],[[]],[10,[[12,[11]]]],[[[10,[[10,[13]]]]],[[12,[[11,[[11,[13]]]]]]]],[[[10,[[10,[[10,[13]]]]]]],[[12,[[11,[[11,[[11,[13]]]]]]]]]],0,[[],1],[14],0,[1],[[[7,[1]]]],[[]],0,[[]],[[]],0,[[[16,[[0,[15,13]]]]],[[16,[[0,[15,13]]]]]],[[]],[1],[1],[17,[[8,[[16,[15]]]]]],[1],[[]],[[],1],[[]],[[[16,[15]],18],8],0,[[]],[[],8],[[],8],[[],9],[[]],0,[[]],[[]],[1],[1],[1],[[[20,[19]],19],[[10,[19]]]],[[]],[[],1],[[]],[[[20,[19]],19],[[21,[19]]]],0,0,[[],8],[[],8],[[],9],[[]],0,[22],[[]],[1],[[1,1],20],0,[1],[[]],[1],[[]],0,0,0,0,0,0,0,0,0,0,[[1,1],23],[[]],[[]],[24,24],[[]],[1],[1],[1],[[24,24],25],[[],25],[[],25],[[24,26],27],[[24,26],27],[[]],[28,[[23,[15]]]],[[[22,[25]]],23],[[[22,[29]]],23],[14,23],[[7,[7,[1]]]],[1],[30,[[0,[[32,[31]],33]]]],[[],1],[[[22,[19]],[22,[19]]],19],[[]],[[],28],[[1,19],[[10,[19]]]],[3,19],[34],[[],1],[[],35],[[],28],[[],[[10,[25]]]],[[],[[10,[29]]]],[[],[[23,[15]]]],[[],36],[[]],[[],36],[[],8],[[],8],[[]],[31],[[],9],[[]],0,0,[[]],[[]],[[[37,[[0,[13,19]]]]],[[37,[[0,[13,19]]]]]],[[]],[1],[1],[1],[[[37,[[0,[38,19]]]],[37,[[0,[38,19]]]]],25],[[],25],[[],25],[[[37,[19]],26],27],[[]],[[[22,[29]]],[[37,[19]]]],[28,[[37,[19]]]],[15,[[37,[15]]]],[[[37,[19]],1]],[[[37,[19]],1]],[[],1],[[]],0,[[[37,[19]],28],[[37,[19]]]],[[[11,[19]]],[[37,[19]]]],[[[37,[19]]],28],[[]],[[],8],[[],8],[[]],[[],19],[[]],[[],19],[[]],[[],19],[[],9],[[]],[[],[[37,[19]]]],0,0,[[],[[11,[29]]]],[1,1],[[1,1],1],0,0,[[]],[[]],[[]],[[]],[1],[1],[1],[1],[17,[[8,[39]]]],[17,[[8,[39]]]],[1],[1],[[]],[[]],[[],1],[[],1],[[]],[[]],0,[[40,18],8],[[40,18],8],[[[0,[40,39,38,41]],[10,[29]]]],[[[0,[42,43,38,41]],[10,[29]]]],[[],8],[[],8],[[],8],[[],8],[[],9],[[],9],[[]],[[]],[17,[[8,[39]]]],[[40,18],8],[[[7,[[11,[29]]]]],44]],"c":[],"p":[[15,"usize"],[8,"IntoIterator"],[8,"Iterator"],[3,"AdjacentPairs"],[15,"never"],[8,"Copy"],[4,"Option"],[4,"Result"],[3,"TypeId"],[3,"Vec"],[15,"array"],[3,"Box"],[8,"Clone"],[15,"str"],[8,"PrimeField"],[3,"ChunkedEvaluations"],[8,"Deserializer"],[8,"Serializer"],[8,"Field"],[3,"ChunkedPolynomial"],[3,"DensePolynomial"],[15,"slice"],[6,"Result"],[4,"FieldHelpersError"],[15,"bool"],[3,"Formatter"],[6,"Result"],[3,"BigUint"],[15,"u8"],[15,"i32"],[15,"u64"],[8,"From"],[8,"Neg"],[3,"Demand"],[3,"BigInt"],[3,"String"],[3,"ForeignElement"],[8,"PartialEq"],[8,"CanonicalDeserialize"],[8,"CanonicalSerialize"],[8,"Debug"],[8,"Serialize"],[8,"Deserialize"],[3,"StdRng"],[8,"BigUintHelpers"],[8,"BitwiseOps"],[8,"ExtendedDensePolynomial"],[8,"ExtendedEvaluations"],[8,"FieldHelpers"],[8,"RandomField"],[8,"BigUintFieldHelpers"],[8,"Two"],[8,"ForeignFieldHelpers"],[8,"CryptoDigest"],[3,"SerdeAs"],[3,"SerdeAsUnchecked"]]},\
-"o1vm":{"doc":"","t":"CCAAAAAAAAAANNNRRDDDNRRRRRDDDDNDDEDDMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMLLLLLLLLLLLLMLLLLLLLLLLLLMMMMMMMMMMMMMMMMLLMMMMMMFMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFFFAAANNNNCNNNENENNNNNNNCNCNNNNLLLLLLLLAALLLLLLALLLLLLLLLLALLALLFFLLLLLLLLLLANEDNNNENNNGNNRRRNNNNNNNNNNNNNNNNNNNEDNNEDNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDLLLLLLLLMLLLLLLLLMLLLLLLLDLLLLMLLLLLLLLLLLLMLLLLLLMLLIIILLLLLLLLLLLLLLLLKLLLIIQKLLLKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLDLLLLLLLLLLLLLLLLMMLLLLLLLMCCCCAAAAAENGRRRRRNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNNNNNNNNNNRRRRRRRNEDEDINEDNNNNNNNNNNNNNNNNNNNNNNNNQNEDRRRRRRRNNNNNNNNNNNNNNNNNNNNNNNNNNNNNQNNLLLKKKKKKKLLLKLLLLLLLLLLLLLLLLKKKLLLLLLLLLLLLLLLLLLLLKKKKALLLLLLLLLLLLLLLLLLLKKLLLLLLLLLLLLKLLLLLLLLKKKKLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLKFFFFLLLLLLLLLLLLLKLLLLLLLLLLLLLKKKLLLLLLLLKLLLLKLLLLLLLLKKLLKKLLLLLLKKKKKLLKKKLLLLLKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLKDLLLLLLLLLLLLLLLLMLLMMMMLMLLLLLRRRRRRRRRDLLLLMLLLLLLLMMMLLLLLMMMMLLLLLLDRRRRRRRDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLLLLMLLLMMMMMMLLLLLLLMMMMLLLLMMLLLLLLMMMMMLLLLLLMLLLLLLLLLLLLLLLLLLRRRRRAAAAAEGNNNLLLLLLLLLLLLLLLLLLLDLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLMMLLLLLLLLLLLLLLNNNNNNNNNNNNNNNEDNEDINNNNNNNNEDNNNNNNNQEDNNNEDNEDNNNNNNNNNNNNNNNEDNNEDEDNNQNNLLLKKKKKKLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKKLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLKFFFFFFFFFLLLLLLLLLLLLLLLLLLLLLLLLLLLLKKLLLLLLLLLLLLLLLLLLLLLLLKKKKKLLLLLLLLLLLLLLLLLLKLLLLLLLLLKLLLLLLLLLLLLLLLLLLKKLLKKLLLLLKKKLLKKKLLLLLLLLLLKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLKRRRRDLLLLMLLLLLLLMMLLLLMLLLLLLDRRRRRRRLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLMLLLMMMMLLLLLLLLLLLLLMMLLLMMMLLLLLLLLLLLLLLLLLLLGGGGGGGAAANEDDDDDNNMMLLLLLLLLLLLLLLMLLLLLLLLLLLLMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLALALLLLMMLLLLLLLMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMDGGGLLLLLLLLLLLLLLLLLLLLLLLDGGGLLLLLLLLLLLLLLLLLLLLLLLFIDIQDILLLLLLLLMLLLLMMLLKLLLLLKLLLLLLAMAKLKLKLKLKKLLLKLLLMLLLLLLLLMGGLLLLLLLGGLLLLLLLNNNENNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLRRRAAAADLLMLMLLMLLFLLLLLLLMLLLLLMDDDLLLLLLMLLLLLLLLLMMLLLLLLLMLLLLMMMMMMLLLLLLLLLLLLMMNELLLLLLLLLLLLFLLLLLLLFDIDDLLLLLLMLFLLLLLLLLLLLLKLKLMMLLLLLLMMMLLLLLLLLLLLLLMEDNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLF","n":["RAMLookup","RAMLookupMode","cannon","cannon_cli","elf_loader","interpreters","legacy","lookups","pickles","preimage_oracle","ramlookup","utils","Always","Every","Exactly","HINT_CLIENT_READ_FD","HINT_CLIENT_WRITE_FD","Hint","HostProgram","Meta","Never","PAGE_ADDRESS_MASK","PAGE_ADDRESS_SIZE","PAGE_SIZE","PREIMAGE_CLIENT_READ_FD","PREIMAGE_CLIENT_WRITE_FD","Page","ParsePreimageKeyError","Preimage","PreimageKey","Range","Start","State","StepFrequency","Symbol","VmConfiguration","arguments","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","create","create","create","data","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deserialize","deserialize","deserialize","deserialize","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","eq","eq","eq","eq","eq","equivalent","equivalent","exit","exited","find_address_symbol","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from_str","get","get","heap","hi","host","index","info_at","init","init","init","init","init","init","init","init","init","init","init","init","input_state_file","into","into","into","into","into","into","into","into","into","into","into","into","last_hint","lo","memory","metadata_file","name","name","next_pc","output_state_file","pc","pprof_cpu","preimage","preimage_key","preimage_offset","proof_at","proof_fmt","registers","serialize","serialize","size","snapshot_fmt","snapshot_state_at","start","step","step","step_frequency_parser","stop_at","symbols","time","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","main_cli","read_configuration","parse_riscv32","keccak","mips","riscv32im","AbsorbRootZero","AbsorbShifts","AbsorbXor","AbsorbZeroPad","Absorbs","BooleanityPadding","ChiShiftsB","ChiShiftsSum","Constraint","Constraint","Error","IotaStateG","Lookup","PadAtEnd","PaddingSuffix","PiRhoRotatedE","PiRhoShiftsE","PiRhoWordE","Sponges","SqueezeShifts","Steps","ThetaQuotientC","ThetaRotatedC","ThetaShiftsC","ThetaWordC","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","column","constraints","deref","deref","deref_mut","deref_mut","drop","drop","environment","eq","eq","equivalent","equivalent","equivalent","equivalent","fmt","fmt","from","from","helpers","init","init","interpreter","into","into","pad_blocks","standardize","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","witness","Absorb","Absorbs","AbsorbsIter","BlockIndex","ChiShiftsB","ChiShiftsSum","ColumnAlias","First","HashIndex","Input","KeccakWitness","Last","Middle","N_ZKVM_KECCAK_COLS","N_ZKVM_KECCAK_REL_COLS","N_ZKVM_KECCAK_SEL_COLS","Only","Output","PadBytesFlags","PadLength","PadSuffix","PiRhoDenseE","PiRhoDenseRotE","PiRhoExpandRotE","PiRhoQuotientE","PiRhoRemainderE","PiRhoShiftsE","Round","RoundConstants","RoundNumber","Sponge","SpongeBytes","SpongeNewState","SpongeShifts","SpongeZeros","Sponges","SpongesIter","Squeeze","StepIndex","Steps","StepsIter","ThetaDenseC","ThetaDenseRotC","ThetaExpandRotC","ThetaQuotientC","ThetaRemainderC","ThetaShiftsC","TwoToPad","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","default","default","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","drop","drop","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","hash","hash","hash","hash","index","index","index_mut","index_mut","init","init","init","init","init","init","init","into","into","into","into","into","into","into","into_iter","into_iter","into_iter","into_iter","is_witness","iter","iter","iter","iter","len","len","len","len","next","next","next","next_back","next_back","next_back","nth","nth","nth","par_bridge","par_bridge","par_bridge","partial_cmp","partial_cmp","partial_cmp","partial_cmp","size_hint","size_hint","size_hint","to_column","to_column","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","Env","add_lookup","borrow","borrow_mut","clone","clone_into","constant","constant_field","constrain","constraints","default","deref","deref_mut","drop","fmt","from","init","into","lookups","to_owned","try_from","try_into","two_pow","type_id","variable","vzip","KeccakEnv","borrow","borrow_mut","clone","clone_into","constraints_env","default","deref","deref_mut","drop","fmt","from","init","into","new","null_state","selector","step","step","to_owned","try_from","try_into","type_id","update_step","vzip","witness_env","write_column","write_column_field","ArithHelpers","BoolHelpers","LogupHelpers","either_zero","is_boolean","is_nonzero","is_one","is_zero","lookup_byte","lookup_pad","lookup_rc16","lookup_reset","lookup_round_constants","lookup_sparse","not","one","or","read_syscall","two","two_pow","write_syscall","xor","zero","Interpreter","KeccakInterpreter","Variable","add_lookup","block_in_padding","block_index","bytes_block","constant","constant_field","constrain","constrain_absorb","constrain_booleanity","constrain_chi","constrain_flags","constrain_iota","constrain_padding","constrain_pirho","constrain_round","constrain_sponge","constrain_squeeze","constrain_theta","constraints","dense_c","dense_e","dense_rot_c","dense_rot_e","expand_rot_c","expand_rot_e","flags_block","from_quarters","from_shifts","hash_index","in_padding","input","input_of_step","is_absorb","is_pad","is_root","is_round","is_sponge","is_squeeze","lookup_steps","lookup_syscall_hash","lookup_syscall_preimage","lookups","lookups_round_chi","lookups_round_iota","lookups_round_pirho","lookups_round_theta","lookups_sponge","mode_absorb","mode_pad","mode_root","mode_rootpad","mode_round","mode_squeeze","new_state","old_state","output","output_of_step","pad_bytes_flags","pad_length","pad_suffix","quotient_c","quotient_e","remainder_c","remainder_e","round","round_constants","shifts_b","shifts_c","shifts_e","shifts_sum","sponge_byte","sponge_bytes","sponge_shifts","sponge_zeros","state_a","state_g","step_index","two_to_pad","variable","vec_dense_c","vec_dense_e","vec_dense_rot_c","vec_dense_rot_e","vec_expand_rot_c","vec_expand_rot_e","vec_quotient_c","vec_quotient_e","vec_remainder_c","vec_remainder_e","vec_shifts_b","vec_shifts_c","vec_shifts_e","vec_shifts_sum","vec_sponge_shifts","xor_state","Env","add_lookup","borrow","borrow_mut","clone","clone_into","constant","constant_field","constrain","default","deref","deref_mut","drop","fmt","from","init","into","multiplicities","tables","to_owned","try_from","try_into","two_pow","type_id","variable","vzip","witness","ITypeInstruction","Instruction","JTypeInstruction","RTypeInstruction","column","constraints","interpreter","registers","witness","ColumnAlias","InstructionCounter","MIPSWitness","N_MIPS_COLS","N_MIPS_REL_COLS","N_MIPS_SEL_COLS","SCRATCH_SIZE","SCRATCH_SIZE_INVERSE","ScratchState","ScratchStateInverse","Selector","borrow","borrow_mut","clone","clone_into","cmp","deref","deref_mut","drop","eq","equivalent","equivalent","fmt","from","hash","index","index","index_mut","index_mut","init","into","is_witness","partial_cmp","to_column","to_owned","try_from","try_into","type_id","vzip","Env","activate_selector","add_constraint","add_lookup","add_witness","alloc_scratch","alloc_scratch_inverse","and_witness","bitmask","borrow","borrow_mut","check_boolean","check_equal","check_is_zero","constant","copy","count_leading_ones","count_leading_zeros","default","deref","deref_mut","divmod","divmod_signed","drop","equal","fetch_memory","fetch_memory_access","fetch_register","fetch_register_access","from","get_constraints","get_lookups","get_selector","get_selector_constraints","increase_instruction_counter","init","instruction_counter","into","is_zero","mul_hi_lo","mul_hi_lo_signed","mul_signed_witness","nor_witness","or_witness","push_memory","push_memory_access","push_register_access_if","push_register_if","report_exit","request_hint_write","request_preimage_write","reset","set_halted","shift_left","shift_right","shift_right_arithmetic","sub_witness","test_less_than","test_less_than_signed","test_zero","try_from","try_into","type_id","variable","vzip","xor_witness","Add","AddImmediate","AddImmediateUnsigned","AddUnsigned","And","AndImmediate","BranchEq","BranchGeqZero","BranchGtZero","BranchLeqZero","BranchLtZero","BranchNeq","CountLeadingOnes","CountLeadingZeros","Div","DivUnsigned","FD_HINT_READ","FD_HINT_WRITE","FD_PREIMAGE_READ","FD_PREIMAGE_WRITE","FD_STDERR","FD_STDIN","FD_STDOUT","IType","ITypeInstruction","ITypeInstructionIter","Instruction","InstructionIter","InterpreterEnv","JType","JTypeInstruction","JTypeInstructionIter","Jump","JumpAndLink","JumpAndLinkRegister","JumpRegister","Load16","Load16Unsigned","Load32","Load8","Load8Unsigned","LoadUpperImmediate","LoadWordLeft","LoadWordRight","MoveFromHi","MoveFromLo","MoveNonZero","MoveToHi","MoveToLo","MoveZero","Multiply","MultiplyToRegister","MultiplyUnsigned","Nor","Or","OrImmediate","Position","RType","RTypeInstruction","RTypeInstructionIter","SYSCALL_BRK","SYSCALL_CLONE","SYSCALL_EXIT_GROUP","SYSCALL_FCNTL","SYSCALL_MMAP","SYSCALL_READ","SYSCALL_WRITE","SetLessThan","SetLessThanImmediate","SetLessThanImmediateUnsigned","SetLessThanUnsigned","ShiftLeftLogical","ShiftLeftLogicalVariable","ShiftRightArithmetic","ShiftRightArithmeticVariable","ShiftRightLogical","ShiftRightLogicalVariable","Store16","Store32","Store32Conditional","Store8","StoreWordLeft","StoreWordRight","Sub","SubUnsigned","Sync","SyscallExitGroup","SyscallFcntl","SyscallMmap","SyscallOther","SyscallReadHint","SyscallReadOther","SyscallReadPreimage","SyscallWriteHint","SyscallWriteOther","SyscallWritePreimage","Variable","Xor","XorImmediate","access_memory","access_register","access_register_if","activate_selector","add_constraint","add_lookup","add_witness","alloc_scratch","alloc_scratch_inverse","and_witness","assert_boolean","assert_equal","assert_is_zero","bitmask","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","check_boolean","check_equal","check_is_zero","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","constant","copy","count_leading_ones","count_leading_zeros","debugging","default","default","default","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","divmod","divmod_signed","drop","drop","drop","drop","drop","drop","drop","drop","eq","eq","eq","eq","equal","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fetch_memory","fetch_memory_access","fetch_register","fetch_register_access","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","get_instruction_pointer","get_next_instruction_pointer","hash","hash","hash","hash","increase_heap_pointer","increase_instruction_counter","init","init","init","init","init","init","init","init","instruction_counter","interpret_instruction","interpret_itype","interpret_jtype","interpret_rtype","into","into","into","into","into","into","into","into","into_iter","into_iter","into_iter","into_iter","into_iter","is_zero","iter","iter","iter","iter","iter","len","len","len","len","len","lookup_16bits","lookup_2bits","lookup_8bits","mul_hi_lo","mul_hi_lo_signed","mul_signed_witness","next","next","next","next","next_back","next_back","next_back","next_back","nor_witness","nth","nth","nth","nth","or_witness","par_bridge","par_bridge","par_bridge","par_bridge","partial_cmp","partial_cmp","partial_cmp","partial_cmp","push_memory","push_memory_access","push_register","push_register_access","push_register_access_if","push_register_if","range_check16","range_check2","range_check64","range_check8","read_memory","read_register","report_exit","request_hint_write","request_preimage_write","reset","set_halted","set_instruction_pointer","set_next_instruction_pointer","shift_left","shift_right","shift_right_arithmetic","sign_extend","size_hint","size_hint","size_hint","size_hint","sub_witness","test_less_than","test_less_than_signed","test_zero","to_column","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","variable","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","write_memory","write_register","write_register_if","xor_witness","InstructionParts","borrow","borrow_mut","clone","clone_into","decode","default","deref","deref_mut","deserialize","drop","encode","eq","equivalent","equivalent","fmt","from","funct","init","into","op_code","rd","rs","rt","serialize","shamt","to_owned","try_from","try_into","type_id","vzip","NUM_REGISTERS","REGISTER_CURRENT_IP","REGISTER_HEAP_POINTER","REGISTER_HI","REGISTER_LO","REGISTER_NEXT_IP","REGISTER_PREIMAGE_KEY_END","REGISTER_PREIMAGE_KEY_START","REGISTER_PREIMAGE_OFFSET","Registers","borrow","borrow_mut","clone","clone_into","current_instruction_pointer","default","deref","deref_mut","deserialize","drop","fmt","from","general_purpose","heap_pointer","hi","index","index_mut","init","into","iter","lo","next_instruction_pointer","preimage_key","preimage_offset","serialize","to_owned","try_from","try_into","type_id","vzip","Env","MAX_ACC","MAX_NB_MEM_ACC","MAX_NB_REG_ACC","NUM_DECODING_LOOKUP_TERMS","NUM_GLOBAL_LOOKUP_TERMS","NUM_INSTRUCTION_LOOKUP_TERMS","NUM_LOOKUP_TERMS","SyscallEnv","activate_selector","add_constraint","add_lookup","add_witness","alloc_scratch","alloc_scratch_inverse","and_witness","bitmask","borrow","borrow","borrow_mut","borrow_mut","check_boolean","check_equal","check_is_zero","clone","clone_into","constant","copy","count_leading_ones","count_leading_zeros","create","create","decode_instruction","default","deref","deref","deref_mut","deref_mut","divmod","divmod_signed","drop","drop","equal","fetch_memory","fetch_memory_access","fetch_register","fetch_register_access","from","from","get_memory_access_page_index","get_memory_direct","get_memory_page_index","halt","hash_counter","increase_instruction_counter","init","init","instruction_counter","instruction_counter","into","into","is_zero","keccak_env","last_hint","last_memory_accesses","last_memory_write_index_accesses","memory","memory_write_index","mul_hi_lo","mul_hi_lo_signed","mul_signed_witness","next_instruction_counter","nor_witness","normalized_instruction_counter","or_witness","preimage","preimage_bytes_read","preimage_key","preimage_oracle","push_memory","push_memory_access","push_register_access_if","push_register_if","registers","registers_write_index","report_exit","request_hint_write","request_preimage_write","reset","reset_scratch_state","reset_scratch_state_inverse","scratch_state","scratch_state_idx","scratch_state_idx_inverse","scratch_state_inverse","selector","set_halted","shift_left","shift_right","shift_right_arithmetic","step","sub_witness","syscall_env","test_less_than","test_less_than_signed","test_zero","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","update_last_memory_access","update_last_memory_write_index_access","variable","vzip","vzip","write_column","write_field_column","xor_witness","INSTRUCTION_SET_SIZE","PAGE_ADDRESS_MASK","PAGE_ADDRESS_SIZE","PAGE_SIZE","SCRATCH_SIZE","column","constraints","interpreter","registers","witness","Column","E","InstructionCounter","ScratchState","Selector","borrow","borrow_mut","clone","clone_into","deref","deref_mut","drop","eq","equivalent","equivalent","fmt","from","init","into","to_owned","try_from","try_into","type_id","vzip","Env","activate_selector","add_constraint","add_lookup","add_witness","alloc_scratch","and_witness","bitmask","borrow","borrow_mut","check_boolean","check_equal","check_is_zero","constant","constraints","copy","count_leading_ones","count_leading_zeros","default","deref","deref_mut","divmod","divmod_signed","drop","equal","fetch_memory","fetch_memory_access","fetch_register","fetch_register_access","from","get_constraints","get_lookups","get_selector","get_selector_constraints","increase_instruction_counter","init","instruction_counter","into","inverse_or_zero","is_zero","lookups","mul_hi_lo","mul_hi_lo_signed","mul_hi_signed","mul_lo_signed","mul_signed_witness","nor_witness","or_witness","push_memory","push_memory_access","push_register_access_if","push_register_if","report_exit","reset","scratch_state_idx","selector","set_halted","shift_left","shift_right","shift_right_arithmetic","sub_witness","test_less_than","test_less_than_signed","test_zero","try_from","try_into","type_id","variable","vzip","xor_witness","Add","AddImmediate","AddUpperImmediate","And","AndImmediate","BranchEq","BranchGreaterThanEqual","BranchGreaterThanEqualUnsigned","BranchLessThan","BranchLessThanUnsigned","BranchNeq","Div","Divu","Fence","FenceI","IInstruction","IInstructionIter","IType","Instruction","InstructionIter","InterpreterEnv","JumpAndLink","JumpAndLinkRegister","LoadByte","LoadByteUnsigned","LoadHalf","LoadHalfUnsigned","LoadUpperImmediate","LoadWord","MInstruction","MInstructionIter","MType","Mul","Mulh","Mulhsu","Mulhu","Or","OrImmediate","Position","RInstruction","RInstructionIter","RType","Rem","Remu","SBInstruction","SBInstructionIter","SBType","SInstruction","SInstructionIter","SType","SetLessThan","SetLessThanImmediate","SetLessThanImmediateUnsigned","SetLessThanUnsigned","ShiftLeftLogical","ShiftLeftLogicalImmediate","ShiftRightArithmetic","ShiftRightArithmeticImmediate","ShiftRightLogical","ShiftRightLogicalImmediate","StoreByte","StoreHalf","StoreWord","Sub","SyscallInstruction","SyscallInstructionIter","SyscallSuccess","SyscallType","UInstruction","UInstructionIter","UJInstruction","UJInstructionIter","UJType","UType","Variable","Xor","XorImmediate","access_memory","access_register","access_register_if","activate_selector","add_constraint","add_lookup","add_witness","alloc_scratch","and_witness","assert_boolean","assert_equal","assert_is_zero","bitmask","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","check_boolean","check_equal","check_is_zero","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","constant","copy","count_leading_ones","count_leading_zeros","default","default","default","default","default","default","default","default","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","divmod","divmod_signed","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","eq","eq","eq","eq","eq","eq","eq","eq","eq","equal","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fetch_memory","fetch_memory_access","fetch_register","fetch_register_access","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_instruction_pointer","get_next_instruction_pointer","hash","hash","hash","hash","hash","hash","hash","hash","hash","increase_heap_pointer","increase_instruction_counter","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","instruction_counter","interpret_instruction","interpret_itype","interpret_mtype","interpret_rtype","interpret_sbtype","interpret_stype","interpret_syscall","interpret_ujtype","interpret_utype","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into_iter","into_iter","into_iter","into_iter","into_iter","into_iter","into_iter","into_iter","into_iter","into_iter","inverse_or_zero","is_zero","iter","iter","iter","iter","iter","iter","iter","iter","iter","iter","len","len","len","len","len","len","len","len","len","len","lookup_16bits","lookup_2bits","lookup_8bits","mul_hi_lo","mul_hi_lo_signed","mul_hi_signed","mul_lo_signed","mul_signed_witness","next","next","next","next","next","next","next","next","next","next_back","next_back","next_back","next_back","next_back","next_back","next_back","next_back","next_back","nor_witness","nth","nth","nth","nth","nth","nth","nth","nth","nth","or_witness","par_bridge","par_bridge","par_bridge","par_bridge","par_bridge","par_bridge","par_bridge","par_bridge","par_bridge","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","push_memory","push_memory_access","push_register","push_register_access","push_register_access_if","push_register_if","range_check16","range_check64","range_check8","read_memory","read_register","report_exit","reset","set_halted","set_instruction_pointer","set_next_instruction_pointer","shift_left","shift_right","shift_right_arithmetic","sign_extend","size_hint","size_hint","size_hint","size_hint","size_hint","size_hint","size_hint","size_hint","size_hint","sub_witness","test_less_than","test_less_than_signed","test_zero","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","to_string","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","variable","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","write_memory","write_register","write_register_if","xor_witness","N_GP_REGISTERS","REGISTER_CURRENT_IP","REGISTER_HEAP_POINTER","REGISTER_NEXT_IP","Registers","borrow","borrow_mut","clone","clone_into","current_instruction_pointer","default","deref","deref_mut","deserialize","drop","fmt","from","general_purpose","heap_pointer","index","index_mut","init","into","next_instruction_pointer","serialize","to_owned","try_from","try_into","type_id","vzip","Env","MAX_ACC","MAX_NB_MEM_ACC","MAX_NB_REG_ACC","NUM_DECODING_LOOKUP_TERMS","NUM_GLOBAL_LOOKUP_TERMS","NUM_INSTRUCTION_LOOKUP_TERMS","NUM_LOOKUP_TERMS","activate_selector","add_constraint","add_lookup","add_witness","alloc_scratch","and_witness","bitmask","borrow","borrow_mut","check_boolean","check_equal","check_is_zero","constant","copy","count_leading_ones","count_leading_zeros","create","decode_instruction","deref","deref_mut","divmod","divmod_signed","drop","equal","fetch_memory","fetch_memory_access","fetch_register","fetch_register_access","from","get_memory_access_page_index","get_memory_direct","get_memory_page_index","halt","increase_instruction_counter","init","instruction_counter","instruction_counter","into","inverse_or_zero","is_zero","last_memory_accesses","last_memory_write_index_accesses","memory","memory_write_index","mul_hi_lo","mul_hi_lo_signed","mul_hi_signed","mul_lo_signed","mul_signed_witness","next_instruction_counter","nor_witness","normalized_instruction_counter","or_witness","push_memory","push_memory_access","push_register_access_if","push_register_if","registers","registers_write_index","report_exit","reset","reset_scratch_state","scratch_state","scratch_state_idx","selector","set_halted","shift_left","shift_right","shift_right_arithmetic","step","sub_witness","test_less_than","test_less_than_signed","test_zero","try_from","try_into","type_id","update_last_memory_access","update_last_memory_write_index_access","variable","vzip","write_column","write_field_column","xor_witness","BaseSponge","Curve","Fp","OpeningProof","Pairing","ScalarSponge","SpongeParams","folding","proof","trace","Beta","Challenge","ChallengeIter","DecomposedFoldingEnvironment","FoldingEnvironment","FoldingInstance","FoldingWitness","Gamma","JointCombiner","alphas","blinder","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","challenge","challenge","challenges","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","col","col","combine","combine","commitments","curr_witnesses","curr_witnesses","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","drop","eq","eq","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","get_alphas","get_blinder","hash","hash","index","index","init","init","init","init","init","init","instances","instances","into","into","into","into","into","into","into_iter","iter","keccak","len","mips","new","new","next","next_back","next_witnesses","next_witnesses","nth","par_bridge","relax","relax","selector","selector","size_hint","structure","structure","to_absorb","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","witness","KeccakConfig","KeccakFoldingEnvironment","KeccakFoldingInstance","KeccakFoldingWitness","borrow","borrow_mut","clone","clone_into","deref","deref_mut","drop","eq","equivalent","equivalent","fmt","from","hash","index","index","index","init","into","to_owned","try_from","try_into","type_id","vzip","DecomposableMIPSFoldingConfig","DecomposableMIPSFoldingEnvironment","MIPSFoldingInstance","MIPSFoldingWitness","borrow","borrow_mut","clone","clone_into","deref","deref_mut","drop","eq","equivalent","equivalent","fmt","from","hash","index","index","index","init","into","to_owned","try_from","try_into","type_id","vzip","fold","DecomposableTracer","DecomposedTrace","Foldable","Selector","Trace","Tracer","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","constraints","deref","deref","deref_mut","deref_mut","domain_size","domain_size","drop","drop","folding_constraints","folding_constraints","from","from","in_circuit","index","init","init","init","init","into","into","is_full","keccak","lookups","mips","new","number_of_rows","pad_dummy","pad_dummy","pad_with_row","pad_with_row","pad_with_zeros","pad_with_zeros","pad_witnesses","push_row","push_row","reset","set_selector_column","to_folding_pair","to_folding_pair","to_owned","to_owned","trace","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","witness","DecomposedKeccakTrace","KeccakTrace","init","new","pad_dummy","pad_with_row","pad_with_zeros","pad_witnesses","push_row","DecomposedMIPSTrace","MIPSTrace","init","new","pad_dummy","pad_with_row","pad_with_zeros","pad_witnesses","push_row","AtMost4Lookup","ByteLookup","KeccakStepLookup","LookupTableIDs","MemoryLookup","PadLookup","RangeCheck16Lookup","RegisterLookup","ResetLookup","RoundConstantsLookup","SparseLookup","SyscallLookup","all_variants","borrow","borrow_mut","clone","clone_into","cmp","deref","deref_mut","drop","eq","equivalent","equivalent","fmt","from","from_u32","hash","init","into","is_fixed","ix_by_value","length","partial_cmp","runtime_create_column","to_owned","to_u32","try_from","try_into","type_id","vzip","DEGREE_QUOTIENT_POLYNOMIAL","MAXIMUM_DEGREE_CONSTRAINTS","TOTAL_NUMBER_OF_CONSTRAINTS","column_env","proof","prover","verifier","ColumnEnvironment","borrow","borrow_mut","challenges","column_domain","constants","deref","deref_mut","domain","drop","from","get_all_columns","get_challenges","get_column","get_constants","get_domain","init","into","l0_1","l0_1","try_from","try_into","type_id","vanishes_on_zero_knowledge_and_previous_rows","vzip","witness","Proof","ProofInputs","WitnessColumns","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","commitments","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","error","evaluations","from","from","from","get_column","init","init","init","instruction_counter","into","into","into","new","opening_proof","quotient_commitment","quotient_evaluations","scratch","scratch_inverse","selector","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","zeta_evaluations","zeta_omega_evaluations","ConstraintDegreeTooHigh","ProverError","borrow","borrow_mut","clone","clone_into","deref","deref_mut","drop","fmt","fmt","from","init","into","prove","provide","to_owned","to_string","try_from","try_into","type_id","vzip","verify","PreImageOracle","PreImageOracleT","RW","ReadWrite","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","cmd","create","create_bidirectional_channel","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","from","from","from","get_preimage","get_preimage","hint","hint","hint_client","hint_server","init","init","init","into","into","into","oracle_client","oracle_server","reader","start","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","writer","LookupMode","RAMLookup","Read","Write","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","deref","deref","deref_mut","deref_mut","drop","drop","fmt","fmt","fmt","from","from","init","init","into","into","into_logup","new","numerator","read_if","read_one","to_owned","to_owned","to_string","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","write_if","write_one","memory_size"],"q":[[0,"o1vm"],[12,"o1vm::cannon"],[265,"o1vm::cannon_cli"],[267,"o1vm::elf_loader"],[268,"o1vm::interpreters"],[271,"o1vm::interpreters::keccak"],[342,"o1vm::interpreters::keccak::column"],[562,"o1vm::interpreters::keccak::constraints"],[588,"o1vm::interpreters::keccak::environment"],[616,"o1vm::interpreters::keccak::helpers"],[639,"o1vm::interpreters::keccak::interpreter"],[737,"o1vm::interpreters::keccak::witness"],[764,"o1vm::interpreters::mips"],[773,"o1vm::interpreters::mips::column"],[812,"o1vm::interpreters::mips::constraints"],[878,"o1vm::interpreters::mips::interpreter"],[1247,"o1vm::interpreters::mips::interpreter::debugging"],[1278,"o1vm::interpreters::mips::registers"],[1318,"o1vm::interpreters::mips::witness"],[1439,"o1vm::interpreters::riscv32im"],[1449,"o1vm::interpreters::riscv32im::column"],[1473,"o1vm::interpreters::riscv32im::constraints"],[1543,"o1vm::interpreters::riscv32im::interpreter"],[2143,"o1vm::interpreters::riscv32im::registers"],[2173,"o1vm::interpreters::riscv32im::witness"],[2265,"o1vm::legacy"],[2275,"o1vm::legacy::folding"],[2421,"o1vm::legacy::folding::keccak"],[2448,"o1vm::legacy::folding::mips"],[2475,"o1vm::legacy::proof"],[2476,"o1vm::legacy::trace"],[2542,"o1vm::legacy::trace::keccak"],[2551,"o1vm::legacy::trace::mips"],[2560,"o1vm::lookups"],[2601,"o1vm::pickles"],[2608,"o1vm::pickles::column_env"],[2634,"o1vm::pickles::proof"],[2687,"o1vm::pickles::prover"],[2709,"o1vm::pickles::verifier"],[2710,"o1vm::preimage_oracle"],[2764,"o1vm::ramlookup"],[2809,"o1vm::utils"]],"d":["","","Modules mimicking the defined structures used by Cannon …","A CLI mimicking the Cannon CLI.","A module to load ELF files.","","Legacy implementation of the recursive proof composition. …","Instantiation of the lookups for the VM project. …","Pickles flavor of the o1vm. This is the pickles flavor of …","Preimage oracle interface used by the zkVM.","The RAM lookup argument.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","","","","","","","","","","","","","","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Parse an ELF file and return the parsed data as a …","An interpreter for an optimised version of Keccak","An interpreter for the MIPS instruction set. This module …","An interpreter for the RISC-V 32IM instruction set, …","","","","","","","","","All the names for constraints involved in the Keccak …","","Errors that can occur during the check of the witness","","","","","","","","","","","","","","","","","","","","","","","This module defines the custom columns used in the Keccak …","This module contains the constraints for one Keccak step.","","","","","","","This module contains the definition and implementation of …","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","This module defines the Keccak interpreter in charge of …","Calls U::from(self)
.","Calls U::from(self)
.","This function returns a vector of field elements that …","Standardizes a Keccak step to a common opcode","","","","","","","","","","","This file contains the witness for the Keccak hash …","","Order of absorb steps in the computation depending on the …","An iterator over the variants of Absorbs","Block index inside the hash to enumerate preimage bytes","","","Column aliases used by the Keccak circuit. The number of …","","Hash identifier to distinguish inside the syscalls …","","The witness columns used by the Keccak circuit. The Keccak …","","","Total number of columns used in Keccak, including relation …","The maximum total number of witness columns used by the …","The number of columns required for the Keccak selectors. …","","","","","","","","","","","","Current step performs a round of the permutation. The …","","","Current step is a sponge","","","","","Variants of Keccak sponges","An iterator over the variants of Sponges","","Hash step identifier to distinguish inside interstep …","Variants of Keccak steps available for the interpreter. …","An iterator over the variants of Steps","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","Map the column alias to the actual column index. Note that …","Map the column alias to the actual column index. Note that …","","","","","","","","","","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Iterate over the instruction variants","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","This struct contains all that needs to be kept track of …","","","","","","","","","Constraints that are added to the circuit","","","","","","Returns the argument unchanged.","","Calls U::from(self)
.","Variables that are looked up in the circuit","","","","","","","","This struct contains all that needs to be kept track of …","","","","","Environment for the constraints (includes lookups). The …","","","","","","Returns the argument unchanged.","","Calls U::from(self)
.","Starts a new Keccak environment for a given hash index and …","Nullifies the Witness and Constraint environments by …","Returns the selector of the current step in standardized …","Entrypoint for the interpreter. It executes one step of …","Current step","","","","","This function updates the next step of the environment …","","Environment for the witness (includes multiplicities)","Writes an integer value to a column of the Keccak witness","Writes a field value to a column of the Keccak witness","This trait contains helper functions for arithmetic …","This trait contains helper functions for boolean …","This trait contains helper functions for the lookups used …","Degree-2 variable encoding whether at least one of the two …","Degree-2 variable encoding whether the input is a boolean …","Degree-2 variable encoding whether the first input is …","Degree-1 variable encoding whether the input is the value …","","Adds a lookup to the Byte table","Adds a lookup to the Pad table","Adds a lookup to the RangeCheck16 table","Adds a lookup to the Reset table","Adds a lookup to the RoundConstants table","Adds a lookup to the Shift table","Degree-1 variable encoding the negation of the input Note: …","Returns a variable representing the value one","Degree-2 variable encoding the OR of two variables, which …","","Returns a variable representing the value two","Returns a variable representing the value 2^x","","Degree-2 variable encoding the XOR of two variables which …","Returns a variable representing the value zero","This trait includes functionalities needed to obtain the …","","","Adds a given Lookup to the environment if the condition …","This function returns a degree-2 variable that is computed …","Returns the block index as a variable","Returns a variable that encodes the idx
-th block of bytes …","Creates a variable from a constant integer","Creates a variable from a constant field element","Adds one KeccakConstraint to the environment if the …","Constrains 332 checks of absorb sponges","Constrains 136 checks of booleanity for some mode flags.","Constrains 200 checks of the chi algorithm in round steps","Constrains 136 checks of correctness of mode flags","Constrains 4 checks of the iota algorithm in round steps","Constrains 6 checks of padding absorb sponges","Constrains 150 checks of the pirho algorithm in round steps","Constrains 389 checks of round steps","Constrains 354 checks of sponge steps","Constrains 16 checks of squeeze sponges","Constrains 35 checks of the theta algorithm in round steps","Creates all 879 constraints/checks to the environment:","Returns the (x,q)-th term of ThetaDenseC, as a variable","Returns the (y,x,q)-th variable of PiRhoDenseE","Returns the (x,q)-th variable of ThetaDenseRotC","Returns the (y,x,q)-th variable of PiRhoDenseRotE","Returns the (x,q)-th variable of ThetaExpandRotC","Returns the (y,x,q)-th variable of PiRhoExpandRotE","Returns a vector of pad bytes flags as variables, with idx
…","This function returns the composed variable from dense …","COLUMN OPERATIONS /// This function returns the composed …","Returns the hash index as a variable","Returns a variable that encodes whether the idx
-th byte of …","Returns the 100 step input variables, which correspond to …","Returns a slice of the input variables of the current step …","Returns a variable that encodes whether the current step …","Returns a degree-1 variable that encodes whether the …","Returns a variable that encodes whether the current step …","Returns a variable that encodes whether the current step …","SELECTOR OPERATIONS /// Returns a degree-2 variable that …","Returns a variable that encodes whether the current step …","Reads a Lookup containing the input of a step and writes a …","When in Squeeze mode, writes a Lookup containing the …","When in Absorb mode, reads Lookups containing the 136 …","Creates all possible lookups to the Keccak constraints …","Adds the 800 lookups required for Chi in the round","Adds the 1 lookup required for Iota in the round","Adds the 700 lookups required for PiRho in the round","Adds the 120 lookups required for Theta in the round","Adds the 601 lookups required for the sponge","Returns a variable that encodes whether the current step …","Returns a degree-1 variable that encodes whether the …","Returns a variable that encodes whether the current step …","Returns a degree-1 variable that encodes whether the …","Returns a variable that encodes whether the current step …","Returns a variable that encodes whether the current step …","Returns the idx
-th new state expanded quarter, as a …","Returns the idx
-th old state expanded quarter, as a …","Returns the 100 step output variables, which correspond to …","Returns a slice of the output variables of the current …","Returns the 136 flags indicating which bytes of the new …","Returns a variable that encodes the bytelength of the …","Returns a variable that encodes the idx
-th chunk of the …","Returns the (x)-th term of ThetaQuotientC, as a variable","Returns the (y,x,q)-th variable of PiRhoQuotientE","Returns the (x,q)-th variable of ThetaRemainderC","Returns the (y,x,q)-th variable of PiRhoRemainderE","Returns a variable that encodes the current round number […","Returns the 4 expanded quarters that encode the round …","Returns the (i,y,x,q)-th variable of ChiShiftsB","Returns the (i,x,q)-th variable of ThetaShiftsC","Returns the (i,y,x,q)-th variable of PiRhoShiftsE","Returns the (i,y,x,q)-th variable of ChiShiftsSum","Returns the idx
-th byte of the sponge, as a variable","Returns the 200 bytes of the sponge, as variables","Returns the idx
-th term of the shifts of the sponge, as a …","Returns the last 32 terms that are added to the new block …","Returns the (y,x,q)-th input of the theta algorithm, as a …","Returns the idx
-th output of a round step as a variable","Returns the step index as a variable","Returns a variable that encodes the value 2^pad_length","Returns the variable corresponding to a given column alias.","Returns the 20 variables corresponding to ThetaDenseC","Returns the 100 variables corresponding to PiRhoDenseE","Returns the 20 variables corresponding to ThetaDenseRotC","Returns the 100 variables corresponding to PiRhoDenseRotE","Returns the 20 variables corresponding to ThetaExpandRotC","Returns the 100 variables corresponding to PiRhoExpandRotE","Returns the 5 variables corresponding to ThetaQuotientC","Returns the 100 variables corresponding to PiRhoQuotientE","Returns the 20 variables corresponding to ThetaRemainderC","Returns the 100 variables corresponding to PiRhoRemainderE","Returns the 400 variables corresponding to ChiShiftsB","Returns the 80 variables corresponding to ThetaShiftsC","Returns the 400 variables corresponding to PiRhoShiftsE","Returns the 400 variables corresponding to ChiShiftsSum","Returns the 400 terms that compose the shifts of the …","Returns the output of an absorb sponge, which is the XOR …","This struct contains all that needs to be kept track of …","","","","","","","","Checks the constraint tag
by checking that the input x
is …","","","","","","Returns the argument unchanged.","","Calls U::from(self)
.","The multiplicities of each lookup entry. Should not be …","The fixed tables used in the Keccak gate","","","","","","","","The full state of the Keccak gate (witness)","","","","","","","","","","Abstract columns (or variables of our multi-variate …","","Represents one line of the execution trace of the virtual …","All the witness columns used in MIPS","The number of columns used for relation witness in the …","The number of witness columns used to store the …","","Number of columns used by the MIPS interpreter to keep …","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Map the column alias to the actual column index.","Map the column alias to the actual column index.","","","","Calls U::from(self)
.","","","","","","","","","The environment keeping the constraints between the …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Return the constraints for the current instruction, …","","","Return the constraints for the selector. Each selector …","","","","Calls U::from(self)
.","","","","","","","","","","","","","This function checks that the preimage is read correctly. …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","An iterator over the variants of ITypeInstruction","","An iterator over the variants of Instruction","","","","An iterator over the variants of JTypeInstruction","","","","","","","","","","","","","","","","","","","","","","","","","A position can be seen as an indexed variable","","","An iterator over the variants of RTypeInstruction","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Access the memory address addr
, adding constraints …","Access the general purpose register with index idx
, adding …","Access the general purpose register with index idx
, adding …","Activate the selector for the given instruction.","Add a constraint to the proof system, asserting that …","","Returns x + y
and the overflow bit, storing the results in …","Allocate a new abstract variable for the current step. The …","","Returns x or y
, storing the result in position
.","Assert that the value x
is boolean, and add a constraint …","Assert that the values x
and y
are equal, and add a …","Assert that the value assert_equals_zero
is 0, and add a …","Extract the bits from the variable x
between highest_bit
…","","","","","","","","","","","","","","","","","Check that the witness value x
is a boolean (0
or 1
); …","Check that the witness values in x
and y
are equal; …","Check that the witness value in assert_equals_zero
is 0; …","","","","","","","","","","","","","","","","","","","","","","","Returns the number of leading 1s in x
, storing the result …","Returns the number of leading 0s in x
, storing the result …","","","","","","","","","","","","","","","","","","","","","Returns (x / y, x % y)
, storing the results in …","Returns (x / y, x % y)
, storing the results in …","","","","","","","","","","","","","Returns 1 if x
is equal to y
, or 0 otherwise, storing the …","","","","","","","","","Fetch the memory value at address addr
and store it in …","Fetch the last ‘access index’ that the memory at …","Fetch the value of the general purpose register with index …","Fetch the last ‘access index’ for the general purpose …","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","Increases the heap pointer by by_amount
if if_is_true
is 1
…","","","","","","","","","","","","","","","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Iterate over the instruction variants","","","","","","","","","","","","","","","","Adds a lookup to the RangeCheck16Lookup table","Adds a lookup to the AtMost4Lookup table","Adds a lookup to the ByteLookup table","Returns ((x * y) >> 32, (x * y) & ((1 << 32) - 1))
, …","Returns ((x * y) >> 32, (x * y) & ((1 << 32) - 1))
, …","Returns x * y
, where x
and y
are treated as integers, …","","","","","","","","","Returns x nor y
, storing the result in position
.","","","","","Returns x or y
, storing the result in position
.","","","","","","","","","Set the memory value at address addr
to value
.","Set the last ‘access index’ for the memory at address …","Set the general purpose register with index idx
to value
.","Set the last ‘access index’ for the general purpose …","Set the last ‘access index’ for the general purpose …","Set the general purpose register with index idx
to value
…","Range checks with 2 lookups to the RangeCheck16Lookup …","Range checks with 1 lookup to the AtMost4Lookup table 0 <= …","","Range checks with 2 lookups to the ByteLookup table that a …","","","","","Request the preimage oracle for len
bytes and store the …","Reset the environment to handle the next instruction","","","","Return the result of shifting x
by by
, storing the result …","Return the result of shifting x
by by
, storing the result …","Return the result of shifting x
by by
, storing the result …","Given a variable x
, this function extends it to a signed …","","","","","Returns x + y
and the underflow bit, storing the results …","Returns 1 if x < y
as unsigned integers, or 0 otherwise, …","Returns 1 if x < y
as signed integers, or 0 otherwise, …","Returns 1 if x
is 0, or 0 otherwise, storing the result in …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns x xor y
, storing the result in position
.","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","Calls U::from(self)
.","","","","","","","","","","","","","","","","","","","","","This represents the internal state of the virtual machine.","","","","","","","","","","","","Returns the argument unchanged.","","","","","","","Calls U::from(self)
.","","","","","","","","","","","","This structure represents the environment the virtual …","Maximum number of memory or register accesses per …","Maximum number of memory accesses per instruction (based …","Maximum number of register accesses per instruction (based …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","","","Calls U::from(self)
.","Calls U::from(self)
.","","","","","","","","","","","Computes what is the non-normalized next instruction …","","The actual number of instructions executed results from …","","","","","","","","","","","","","","","","","","","","","","","","","","","Execute a single step of the MIPS program. Returns the …","","","","","","","","","","","","","","","","","","","","","Number of instructions in the ISA","","","","The minimal number of columns required for the VM","List all columns used by the interpreter","","This module implement an interpreter for the RISCV32 IM …","All the registers used by the ISA","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self)
.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Return the constraints for the current instruction, …","","","Return the constraints for the selector. Each selector …","","","","Calls U::from(self)
.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Format: add rd, rs1, rs2
","Format: addi rd, rs1, imm
","Format: auipc rd,imm
","Format: and rd, rs1, rs2
","Format: andi rd, rs1, imm
","Format: beq rs1, rs2, offset
","Format: bge rs1, rs2, offset
","Format: bgeu rs1, rs2, offset
","Format: blt rs1, rs2, offset
","Format: bltu rs1, rs2, offset
","Format: bne rs1, rs2, offset
","Format: div rd, rs1, rs2
","Format: divu rd, rs1, rs2
","Format: fence
","Format: fence.i
","","An iterator over the variants of IInstruction","","","An iterator over the variants of Instruction","","Format: jal rd,imm
","Format: jalr rd, rs1, imm
","Format: lb rd, offset(rs1)
","Format: lbu rd, offset(rs1)
","Format: lh rd, offset(rs1)
","Format: lhu rd, offset(rs1)
","Format: lui rd,imm
","Format: lw rd, offset(rs1)
","M extension instructions Following …","An iterator over the variants of MInstruction","","Format: mul rd, rs1, rs2
","Format: mulh rd, rs1, rs2
","Format: mulhsu rd, rs1, rs2
","Format: mulhu rd, rs1, rs2
","Format: or rd, rs1, rs2
","Format: ori rd, rs1, imm
","A position can be seen as an indexed variable","","An iterator over the variants of RInstruction","","Format: rem rd, rs1, rs2
","Format: remu rd, rs1, rs2
","","An iterator over the variants of SBInstruction","","","An iterator over the variants of SInstruction","","Format: slt rd, rs1, rs2
","Format: slti rd, rs1, imm
","Format: sltiu rd, rs1, imm
","Format: sltu rd, rs1, rs2
","Format: sll rd, rs1, rs2
","Format: slli rd, rs1, shamt
","Format: sra rd, rs1, rs2
","Format: srai rd, rs1, shamt
","Format: srl rd, rs1, rs2
","Format: srli rd, rs1, shamt
","Format: sb rs2, offset(rs1)
","Format: sh rs2, offset(rs1)
","Format: sw rs2, offset(rs1)
","Format: sub rd, rs1, rs2
","","An iterator over the variants of SyscallInstruction","","","","An iterator over the variants of UInstruction","","An iterator over the variants of UJInstruction","","","","Format: xor rd, rs1, rs2
","Format: xori rd, rs1, imm
","Access the memory address addr
, adding constraints …","Access the general purpose register with index idx
, adding …","Access the general purpose register with index idx
, adding …","Activate the selector for the given instruction.","Add a constraint to the proof system, asserting that …","","Returns x + y
and the overflow bit, storing the results in …","Allocate a new abstract variable for the current step. The …","Returns x or y
, storing the result in position
.","Assert that the value x
is boolean, and add a constraint …","Assert that the values x
and y
are equal, and add a …","Assert that the value assert_equals_zero
is 0, and add a …","Extract the bits from the variable x
between highest_bit
…","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Check that the witness value x
is a boolean (0
or 1
); …","Check that the witness values in x
and y
are equal; …","Check that the witness value in assert_equals_zero
is 0; …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the number of leading 1s in x
, storing the result …","Returns the number of leading 0s in x
, storing the result …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns (x / y, x % y)
, storing the results in …","Returns (x / y, x % y)
, storing the results in …","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns 1 if x
is equal to y
, or 0 otherwise, storing the …","","","","","","","","","","","","","","","","","","","Fetch the memory value at address addr
and store it in …","Fetch the last ‘access index’ that the memory at …","Fetch the value of the general purpose register with index …","Fetch the last ‘access index’ for the general purpose …","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","","","","Increases the heap pointer by by_amount
if if_is_true
is 1
…","","","","","","","","","","","","","","","","","","","","","","Interpret an I-type instruction. The encoding of an I-type …","Interpret an M-type instruction. The encoding of an M-type …","Interpret an R-type instruction. The encoding of an R-type …","Interpret an SB-type instruction. The encoding of an …","Interpret an S-type instruction. The encoding of an S-type …","","Interpret an UJ-type instruction. The encoding of an …","Interpret an U-type instruction. The encoding of an U-type …","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","","","","","","","","","","","Returns x^(-1)
, or 0
if x
is 0
, storing the result in …","","","","","","","","","","","","","","","","","","","","","","Adds a lookup to the RangeCheck16Lookup table","Adds a lookup to the AtMost4Lookup table","Adds a lookup to the ByteLookup table","Returns ((x * y) >> 32, (x * y) & ((1 << 32) - 1))
, …","Returns ((x * y) >> 32, (x * y) & ((1 << 32) - 1))
, …","Returns ((x * y) >> 32
, storing the results in position
.","Returns (x * y) & ((1 << 32) - 1))
, storing the results in …","Returns x * y
, where x
and y
are treated as integers, …","","","","","","","","","","","","","","","","","","","Returns x nor y
, storing the result in position
.","","","","","","","","","","Returns x or y
, storing the result in position
.","","","","","","","","","","","","","","","","","","","Set the memory value at address addr
to value
.","Set the last ‘access index’ for the memory at address …","Set the general purpose register with index idx
to value
.","Set the last ‘access index’ for the general purpose …","Set the last ‘access index’ for the general purpose …","Set the general purpose register with index idx
to value
…","Range checks with 2 lookups to the RangeCheck16Lookup …","","Range checks with 2 lookups to the ByteLookup table that a …","","","","","","","","Return the result of shifting x
by by
, storing the result …","Return the result of shifting x
by by
, storing the result …","Return the result of shifting x
by by
, storing the result …","Given a variable x
, this function extends it to a signed …","","","","","","","","","","Returns x + y
and the underflow bit, storing the results …","Returns 1 if x < y
as unsigned integers, or 0 otherwise, …","Returns 1 if x < y
as signed integers, or 0 otherwise, …","Returns 1 if x
is 0, or 0 otherwise, storing the result in …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns x xor y
, storing the result in position
.","","","","","This represents the internal state of the virtual machine.","","","","","","","","","","","","Returns the argument unchanged.","There are 32 general purpose registers.","","","","","Calls U::from(self)
.","","","","","","","","This structure represents the environment the virtual …","Maximum number of memory or register accesses per …","Maximum number of memory accesses per instruction (based …","Maximum number of register accesses per instruction (based …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","","","","","","","Calls U::from(self)
.","","","","","","","","","","","","","","The actual number of instructions executed results from …","","","","","","","","","","","","","","","","","","Execute a single step in the RISCV32i program","","","","","","","","","","","","","","","","Elliptic curve group of BN254","Scalar field of BN254","","","","","","","This module defines structures and traits to build and …","","","An iterator over the variants of Challenge","Environment for the decomposable folding protocol, for a …","","Folding instance containing the commitment to a witness of …","Includes the data witness columns and also the dynamic …","","","Reuses the Alphas defined in the example of folding","Blinder used in the polynomial commitment scheme","","","","","","","","","","","","","","","Challenges for the proof. We do use 3 challenges:","","","","","","","","","","","","","Commitments to the witness columns, including the dynamic …","Corresponds to the omega evaluations, for both sides","Corresponds to the evaluations at ω, for both sides","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","","","","","Commitments to the witness columns, for both sides","Commitments to the witness columns, for both sides","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","","","","","","","","","","Corresponds to the zeta*omega evaluations, for both sides …","Corresponds to the evaluations at ζω, for both sides …","","","This method takes an Instance and a commitment to zero and …","This method takes a witness and a vector of evaluations to …","","","","","Structure of the folded circuit","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Map a column alias to the corresponding witness column.","","Map a selector column to the corresponding witness column.","","Calls U::from(self)
.","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Map a selector column to the corresponding witness column.","","Map a column alias to the corresponding witness column.","","Calls U::from(self)
.","","","","","","FIXME: DUMMY FOLD FUNCTION THAT ONLY KEEPS THE LAST …","DecomposableTracer builds traces for some program …","Struct representing a circuit execution trace which is …","The trait Foldable describes structures that can be folded.","","Implement a trace for a single instruction.","Tracer builds traces for some program executions. The …","","","","","","","","","","","","","","","The domain size of the circuit (should coincide with that …","","","Returns a map of constraints that are compatible with …","","Returns the argument unchanged.","Returns the argument unchanged.","Returns a boolean indicating whether the witness for the …","","Initialize a new trace with the given domain size, …","","","","Calls U::from(self)
.","Calls U::from(self)
.","Returns whether the witness for the given selector has …","","","","Create a new decomposable trace with the given domain …","Returns the number of rows that have been instantiated for …","Pad the rows of one opcode with the first row until …","","Pad the rows of one opcode with the given row until …","","Pads the rows of one opcode with zero rows until reaching …","","Pads the rows of the witnesses until reaching the domain …","Add a witness row to the circuit (only for relation …","","Resets the witness after folding","Sets the selector column to all ones, and the rest to all …","Returns the witness for the given selector as a folding …","","","","The traces are indexed by the selector Inside the witness …","","","","","","","","","","The Keccak circuit trace","A Keccak instruction trace","","","","","","","","The MIPS circuit trace","The MIPS instruction trace","","","","","","","","Values from 0 to 4 to check the number of bytes read from …","All values that can be stored in a byte (amortized table, …","Input/Output of Keccak steps","All of the possible lookup table IDs used in the zkVM","","All [1..136] values of possible padding lengths, the value …","Single-column table of all values in the range [0, 2^16)","","Dual-column table of all values in the range [0, 2^16) and …","24-row table with all possible values for round and their …","Single-column table of 2^16 entries with the sparse …","Syscalls communication channel","","","","","","","","","","","","","","Returns the argument unchanged.","","","","Calls U::from(self)
.","","","","","","","","","","","","Degree of the quotient polynomial. We do evaluate all …","Maximum degree of the constraints. It does include the …","Total number of constraints for all instructions, …","","","","","The collection of polynomials (all in evaluation form) and …","","","Challenges from the IOP.","","Constant values required","","","The domains used in the PLONK argument.","","Returns the argument unchanged.","","","","","","","Calls U::from(self)
.","","The value prod_{j != 1} (1 - ω^j)
, used for efficiently …","","","","","","The witness column polynomials. Includes relation columns …","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","","IPA opening proof","","","","","","","","","","","","","","","","","","","","","Errors that can arise when creating a proof","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self)
.","Make a PlonKish proof for the given circuit. As inputs, we …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","","","","","","","","","","","","","","","","","","Enum representing the two different modes of a RAMLookup","Struct containing a RAMLookup","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self)
.","Calls U::from(self)
.","Transforms the current RAMLookup into an equivalent Logup","Creates a new RAMLookup from a mode, a table ID, a …","Returns the numerator corresponding to this lookup in the …","Reads one value when if_is_true
is 1.","Reads one value from a table.","","","","","","","","","","","","Writes one value when if_is_true
is 1.","Writes one value to a table.",""],"i":[0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,2,9,10,13,15,16,18,1,2,3,4,5,6,9,10,13,15,16,18,1,2,3,4,5,6,1,2,3,4,5,6,1,2,3,4,5,6,9,10,4,13,9,10,13,15,16,18,1,2,3,4,5,6,9,10,13,15,16,18,1,2,3,4,5,6,13,15,5,6,9,10,13,15,16,18,1,2,3,4,5,6,16,18,1,5,6,16,16,15,15,6,13,15,16,18,1,2,3,4,5,6,9,10,13,15,16,18,1,2,3,4,5,6,18,9,10,15,15,3,13,3,9,10,13,15,16,18,1,2,3,4,5,6,3,9,10,13,15,16,18,1,2,3,4,5,6,15,15,15,3,2,5,15,3,15,3,15,15,15,3,3,15,13,15,5,3,3,5,15,4,0,3,6,4,1,2,3,4,5,6,15,9,10,13,15,16,18,1,2,3,4,5,6,9,10,13,15,16,18,1,2,3,4,5,6,9,10,13,15,16,18,1,2,3,4,5,6,9,10,13,15,16,18,1,2,3,4,5,6,0,0,0,0,0,0,31,31,31,31,0,31,31,31,0,30,0,31,30,31,31,31,31,31,0,31,0,31,31,31,31,30,31,30,31,30,31,30,31,0,0,30,31,30,31,30,31,0,30,31,30,30,31,31,30,31,30,31,0,30,31,0,30,31,0,0,30,31,30,31,30,31,30,31,30,31,0,37,0,0,35,35,35,0,39,35,35,0,39,39,0,0,0,39,35,35,35,35,35,35,35,35,35,35,34,35,35,34,35,35,35,35,0,0,37,35,0,0,35,35,35,35,35,35,35,35,34,36,37,38,39,40,35,34,36,37,38,39,40,35,34,36,37,38,39,40,35,34,36,37,38,39,40,35,34,37,39,37,39,35,34,36,37,38,39,40,35,34,36,37,38,39,40,35,34,36,37,38,39,40,35,34,37,39,35,35,34,34,37,37,39,39,35,34,36,37,38,39,40,35,34,36,37,38,39,40,35,34,37,39,44,44,44,44,35,34,36,37,38,39,40,35,34,36,37,38,39,40,34,36,38,40,35,34,34,37,39,34,36,38,40,36,38,40,36,38,40,36,38,40,36,38,40,35,34,37,39,36,38,40,35,34,35,34,36,37,38,39,40,35,34,36,37,38,39,40,35,34,36,37,38,39,40,35,34,36,37,38,39,40,35,34,36,37,38,39,40,0,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,0,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,0,0,0,166,166,166,166,166,167,167,167,167,167,167,166,168,166,167,168,168,167,166,168,0,0,54,54,169,169,169,54,54,54,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,54,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,0,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,0,0,0,0,0,0,0,0,0,0,56,0,0,0,0,0,0,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,57,57,57,57,56,56,56,56,56,56,56,56,56,56,0,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,64,68,68,64,64,68,68,68,68,68,68,68,64,64,64,64,0,0,0,0,0,0,0,58,0,0,0,0,0,58,0,0,66,66,64,64,68,68,68,68,68,68,68,68,64,64,64,64,64,64,64,64,64,64,64,68,70,58,0,0,0,0,0,0,0,0,0,64,68,68,64,64,64,64,64,64,64,68,68,68,68,68,68,64,64,64,64,64,64,64,64,64,64,64,64,64,70,64,68,70,70,70,70,70,70,70,70,70,70,70,70,70,70,58,63,64,65,66,67,68,69,58,63,64,65,66,67,68,69,70,70,70,58,63,64,65,66,67,68,69,58,63,64,65,66,67,68,69,58,64,66,68,70,70,70,70,0,64,66,68,58,63,64,65,66,67,68,69,58,63,64,65,66,67,68,69,70,70,58,63,64,65,66,67,68,69,58,64,66,68,70,58,58,64,64,66,66,68,68,70,70,70,70,58,63,64,65,66,67,68,69,58,63,64,65,66,67,68,69,70,70,58,64,66,68,70,70,58,63,64,65,66,67,68,69,70,0,0,0,0,58,63,64,65,66,67,68,69,58,63,65,67,69,70,58,58,64,66,68,58,63,65,67,69,70,70,70,70,70,70,63,65,67,69,63,65,67,69,70,63,65,67,69,70,63,65,67,69,58,64,66,68,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,63,65,67,69,70,70,70,70,58,58,63,64,65,66,67,68,69,58,63,64,65,66,67,68,69,58,63,64,65,66,67,68,69,58,63,64,65,66,67,68,69,70,58,63,64,65,66,67,68,69,70,70,70,70,0,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,0,0,0,0,0,0,0,0,0,0,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,0,0,0,0,0,0,0,0,0,78,78,78,78,78,78,78,78,78,79,78,79,78,78,78,79,79,78,78,78,78,78,79,78,79,78,79,78,79,78,78,78,79,78,78,78,78,78,78,79,78,78,78,78,78,78,78,79,78,78,78,79,78,78,79,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,79,78,79,78,79,78,79,78,78,78,78,79,78,78,78,0,0,0,0,0,0,0,0,0,0,0,0,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,0,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,85,87,93,85,87,91,91,91,91,91,91,99,99,85,85,0,0,82,0,0,0,95,87,87,87,87,87,93,87,0,0,82,99,99,99,99,85,87,101,0,0,82,99,99,0,0,82,0,0,82,85,87,87,85,85,87,85,87,85,87,89,89,89,85,0,0,97,82,0,0,0,0,82,82,101,85,87,101,101,101,101,101,101,101,101,101,101,101,101,101,82,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,82,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,101,101,82,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,82,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,82,85,87,89,91,93,95,97,99,101,101,101,101,85,87,89,91,93,95,97,99,82,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,82,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,101,82,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,82,85,87,89,91,93,95,97,99,101,82,82,85,85,87,87,89,89,91,91,93,93,95,95,97,97,99,99,101,101,101,101,82,82,84,85,85,86,87,87,88,89,89,90,91,91,92,93,93,94,95,95,96,97,98,99,99,100,82,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,101,82,85,87,89,91,93,95,97,99,101,101,82,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,0,0,0,0,0,0,0,0,0,82,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,82,84,86,88,90,92,94,96,98,100,101,101,82,82,85,87,89,91,93,95,97,99,82,84,86,88,90,92,94,96,98,100,101,101,101,101,101,101,101,101,84,86,88,90,92,94,96,98,100,84,86,88,90,92,94,96,98,100,101,84,86,88,90,92,94,96,98,100,101,84,86,88,90,92,94,96,98,100,82,85,87,89,91,93,95,97,99,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,84,86,88,90,92,94,96,98,100,101,101,101,101,82,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,82,85,87,89,91,93,95,99,82,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,82,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,82,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,82,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,101,101,101,0,0,0,0,0,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,0,0,0,0,0,0,0,0,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,0,0,0,0,0,0,0,0,0,0,106,0,0,0,0,0,0,106,106,111,111,105,108,106,109,111,113,105,108,106,109,111,113,105,108,111,106,109,111,113,106,109,111,113,105,108,111,113,111,105,108,105,108,106,109,111,113,105,108,106,109,111,113,105,108,106,109,111,113,106,113,106,106,113,113,106,109,111,113,105,108,106,106,109,111,113,111,111,106,113,111,113,105,108,106,109,111,113,105,108,105,108,106,109,111,113,109,106,0,109,0,105,108,109,109,105,108,109,109,111,113,105,108,109,105,108,111,106,109,111,113,105,108,106,109,111,113,105,108,106,109,111,113,105,108,106,109,111,113,105,108,106,109,111,113,113,0,0,0,0,123,123,123,123,123,123,123,123,123,123,123,123,123,124,124,124,123,123,123,123,123,123,123,0,0,0,0,125,125,125,125,125,125,125,125,125,125,125,125,125,126,126,126,125,125,125,125,125,125,125,0,0,0,0,170,0,0,130,131,130,131,130,131,130,131,130,130,131,130,131,130,131,130,131,171,131,130,131,131,131,170,130,131,131,130,131,131,0,130,0,172,131,170,131,170,131,170,131,172,170,131,131,131,171,131,130,131,131,130,131,130,131,130,131,130,131,130,0,0,137,138,137,137,137,138,137,0,0,139,140,139,139,139,140,139,48,48,48,0,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,0,0,0,0,0,0,0,0,142,142,142,142,142,142,142,142,142,142,0,142,142,142,142,142,142,142,142,142,142,142,142,142,142,0,0,0,146,148,153,146,148,153,153,146,148,153,146,148,153,146,148,153,146,148,146,148,153,146,146,148,153,146,146,148,153,148,153,153,153,146,146,146,146,148,153,146,148,153,146,148,153,146,148,153,153,153,149,0,149,149,149,149,149,149,149,149,149,149,149,149,0,149,149,149,149,149,149,149,0,0,0,0,0,155,173,174,155,173,174,155,155,0,155,173,174,155,173,174,155,173,174,155,173,174,77,155,77,155,155,155,155,173,174,155,173,174,155,155,173,155,155,173,174,155,173,174,155,173,174,155,173,174,173,0,0,157,157,157,49,157,49,157,49,157,49,157,49,157,49,157,49,157,49,49,157,49,157,49,157,49,49,49,49,49,49,157,49,49,157,49,157,49,157,49,157,49,49,49,0],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[1,1],[2,2],[3,3],[4,4],[5,5],[6,6],[[]],[[]],[[]],[[]],[[]],[[]],[[[8,[7]]],9],[[[8,[7]]],10],[11,4],0,[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[12,[[14,[13]]]],[12,[[14,[15]]]],[12,[[14,[5]]]],[12,[[14,[6]]]],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[[16,16],17],[[18,18],17],[[1,1],17],[[5,5],17],[[6,6],17],[[],17],[[],17],0,0,[[6,19],[[21,[20]]]],[[13,22],23],[[15,22],23],[[16,22],23],[[18,22],23],[[1,22],23],[[2,22],23],[[3,22],23],[[4,22],23],[[5,22],23],[[6,22],23],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[24,[[14,[18]]]],[9,[[8,[7]]]],[10,[[8,[7]]]],0,0,0,0,0,[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[13,25],14],[[15,25],14],0,0,0,0,0,0,[24,[[14,[1,20]]]],0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[15,20],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],27],[28,3],[29,[[14,[15,20]]]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[30,30],[31,31],[[]],[[]],0,0,[11],[11],[11],[11],[11],[11],0,[[30,30],17],[[31,31],17],[[],17],[[],17],[[],17],[[],17],[[30,22],23],[[31,22],23],[[]],[[]],0,[[],11],[[],11],0,[[]],[[]],[11,[[33,[32]]]],[34,34],[[]],[[]],[[],14],[[],14],[[],14],[[],14],[[],26],[[],26],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[35,35],[34,34],[36,36],[37,37],[38,38],[39,39],[40,40],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[35,35],41],[[34,34],41],[[37,37],41],[[39,39],41],[[],37],[[],39],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[[35,35],17],[[34,34],17],[[37,37],17],[[39,39],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[35,22],23],[[34,22],23],[[36,22],23],[[37,22],23],[[38,22],23],[[39,22],23],[[40,22],23],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[35,42]],[[34,42]],[[37,42]],[[39,42]],[[[44,[43]],35]],[[[44,[43]],34]],[[[44,[43]],34]],[[[44,[43]],35]],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[34],[[]],[[]],[[]],[35,17],[[],36],[[]],[[],38],[[],40],[[],11],[36,11],[38,11],[40,11],[36,21],[38,21],[40,21],[36,21],[38,21],[40,21],[[36,11],21],[[38,11],21],[[40,11],21],[[],45],[[],45],[[],45],[[35,35],[[21,[41]]]],[[34,34],[[21,[41]]]],[[37,37],[[21,[41]]]],[[39,39],[[21,[41]]]],[36],[38],[40],[35,46],[34,46],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[[47,[32]],[49,[48]]]],[[]],[[]],[[[47,[43]]],[[47,[43]]]],[[]],[50],[32],[[[47,[32]],31]],0,[[],[[47,[32]]]],[11],[11],[11],[[[47,[51]],22],23],[[]],[[],11],[[]],0,[[]],[[],14],[[],14],[50],[[],26],[[[47,[32]],35]],[[]],0,[[]],[[]],[[[52,[43]]],[[52,[43]]]],[[]],0,[[],[[52,[32]]]],[11],[11],[11],[[[52,[51]],22],23],[[]],[[],11],[[]],[[50,[53,[7]]],[[52,[32]]]],[[[52,[32]]]],[[[52,[32]]],34],[[[52,[32]]]],0,[[]],[[],14],[[],14],[[],26],[[[52,[32]]]],[[]],0,[[[52,[32]],35,50]],[[[52,[32]],35,32]],0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[8],[[]],[[]],[8],[[]],[[]],[[]],[[]],[8],[[]],[50],[8],[[]],[[]],0,0,0,[[[49,[48]]]],[11],[[]],[11,8],[50],[[]],[31],[34],[[54,34]],[[34,[8,[[8,[8]]]]],[[8,[[8,[8]]]]]],[[54,34]],[[34,[8,[[8,[8]]]]]],[34],[[34,[8,[[8,[8]]]]],[[8,[[8,[8]]]]]],[34],[34],[34],[34,[[8,[[8,[8]]]]]],[34],[[11,11]],[[11,11,11]],[[11,11]],[[11,11,11]],[[11,11]],[[11,11,11]],[11,8],[[53,[21,[11]],11]],[[53,[21,[11]],[21,[11]],[21,[11]],[21,[11]]]],[[]],[11],[[],33],[[],8],[34],[34],[34],[34],[34],[34],[34],[34],[34],[34],[34],[34],[34],[34],[34],[34],[34],[34],[34],[34],[34],[11],[11],[[],33],[[],8],[[],33],[[]],[11],[11],[[11,11,11]],[[11,11]],[[11,11,11]],[[]],[[],33],[[11,11,11,11]],[[11,11,11]],[[11,11,11,11]],[[11,11,11,11]],[11],[[],33],[11],[[],33],[[11,11,11]],[11],[[]],[[]],[35],[[],33],[[],33],[[],33],[[],33],[[],33],[[],33],[[],33],[[],33],[[],33],[[],33],[[],33],[[],33],[[],33],[[],33],[[],33],[11],0,[[[55,[32]],[49,[48]]]],[[]],[[]],[[[55,[43]]],[[55,[43]]]],[[]],[50],[32],[[[55,[32]],31]],[[],[[55,[32]]]],[11],[11],[11],[[[55,[51]],22],23],[[]],[[],11],[[]],0,0,[[]],[[],14],[[],14],[50],[[],26],[[[55,[32]],35]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[56,56],[[]],[[56,56],41],[11],[11],[11],[[56,56],17],[[],17],[[],17],[[56,22],23],[[]],[[56,42]],[[[57,[43]],56]],[[[57,[43]],58]],[[[57,[43]],56]],[[[57,[43]],58]],[[],11],[[]],[56,17],[[56,56],[[21,[41]]]],[56,46],[[]],[[],14],[[],14],[[],26],[[]],0,[[[59,[32]],58]],[[[59,[32]]]],[[[59,[32]],[49,[48]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]],19,19]],[[]],[[]],[[]],[[]],[[]],[19],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[],[[59,[32]]]],[11],[11],[[[59,[32]]]],[[[59,[32]]]],[11],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[]],[[[59,[32]]],[[8,[[62,[[61,[32,60]],46]]]]]],[[[59,[32]]],[[8,[[49,[[62,[[61,[32,60]],46]],48]]]]]],[[[59,[32]]],[[62,[[61,[32,60]],46]]]],[[[59,[32]]],[[8,[[62,[[61,[32,60]],46]]]]]],[[[59,[32]]]],[[],11],[[[59,[32]]]],[[]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[],14],[[],14],[[],26],[[[59,[32]]]],[[]],[[[59,[32]]]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[58],[[]],[[[49,[48]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[19,19]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[58,58],[63,63],[64,64],[65,65],[66,66],[67,67],[68,68],[69,69],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[58,58],41],[[64,64],41],[[66,66],41],[[68,68],41],[19],[[]],[[]],[[]],0,[[],64],[[],66],[[],68],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[[]],[[]],[11],[11],[11],[11],[11],[11],[11],[11],[[58,58],17],[[64,64],17],[[66,66],17],[[68,68],17],[[]],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[]],[[]],[[]],[[]],[[58,22],23],[[63,22],23],[[64,22],23],[[65,22],23],[[66,22],23],[[67,22],23],[[68,22],23],[[69,22],23],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[58,42]],[[64,42]],[[66,42]],[[68,42]],[[]],[[]],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[]],[[70,58]],[[70,68]],[[70,66]],[[70,64]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[58],[[]],[[]],[[]],[[]],[[]],[[]],[[],63],[[],65],[[],67],[[],69],[[],11],[63,11],[65,11],[67,11],[69,11],[[]],[[]],[[]],[[]],[[]],[[]],[63,21],[65,21],[67,21],[69,21],[63,21],[65,21],[67,21],[69,21],[[]],[[63,11],21],[[65,11],21],[[67,11],21],[[69,11],21],[[]],[[],45],[[],45],[[],45],[[],45],[[58,58],[[21,[41]]]],[[64,64],[[21,[41]]]],[[66,66],[[21,[41]]]],[[68,68],[[21,[41]]]],[[]],[[]],[[]],[[]],[[]],[[]],[19],[[]],[[]],[19],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[19],[63],[65],[67],[69],[[]],[[]],[[]],[[]],[58,46],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[]],[[]],[71,71],[[]],[19,71],[[],71],[11],[11],[12,[[14,[71]]]],[11],[71,19],[[71,71],17],[[],17],[[],17],[[71,22],23],[[]],0,[[],11],[[]],0,0,0,0,[[71,25],14],0,[[]],[[],14],[[],14],[[],26],[[]],0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[[72,[43]]],[[72,[43]]]],[[]],0,[[],[[72,[73]]]],[11],[11],[12,[[14,[[72,[74]]]]]],[11],[[[72,[51]],22],23],[[]],0,0,0,[[[72,[43]],11]],[[[72,[43]],11]],[[],11],[[]],[72,75],0,0,0,0,[[[72,[76]],25],14],[[]],[[],14],[[],14],[[],26],[[]],0,0,0,0,0,0,0,0,0,[[[78,[32,77]],58]],[[[78,[32,77]]]],[[[78,[32,77]],[49,[48]]]],[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]],19,19]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[79,79],[[]],[19],[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]]]],[[11,15,77],[[78,[32,77]]]],[15,79],[[[78,[32,77]]]],[[],79],[11],[11],[11],[11],[[[78,[32,77]]]],[[[78,[32,77]]]],[11],[11],[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]]]],[[]],[[]],[[[78,[32,77]],19],11],[[[78,[32,77]],19],7],[[[78,[32,77]],19],11],0,0,[[[78,[32,77]]]],[[],11],[[],11],[[[78,[32,77]]]],0,[[]],[[]],[[[78,[32,77]]]],0,0,0,0,0,0,[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]]],50],[[[78,[32,77]]]],[[[78,[32,77]]],50],[[[78,[32,77]]]],0,0,0,0,[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]]]],0,0,[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]]]],0,0,0,0,0,[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]],3,6,4],58],[[[78,[32,77]]]],0,[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]]]],[[]],[[],14],[[],14],[[],14],[[],14],[[],26],[[],26],[[[78,[32,77]],11]],[[[78,[32,77]],11]],[[[78,[32,77]]]],[[]],[[]],[[[78,[32,77]],56,50]],[[[78,[32,77]],56,32]],[[[78,[32,77]]]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[80,80],[[]],[11],[11],[11],[[80,80],17],[[],17],[[],17],[[80,22],23],[[]],[[],11],[[]],[[]],[[],14],[[],14],[[],26],[[]],0,[[[81,[32]],82]],[[[81,[32]]]],[[[81,[32]],[49,[48]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]],19,19]],[[]],[[]],[[]],[[]],[[]],[19],0,[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[],[[81,[32]]]],[11],[11],[[[81,[32]]]],[[[81,[32]]]],[11],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[]],[[[81,[32]]],[[8,[[83,[32]]]]]],[[[81,[32]]],[[8,[[49,[[83,[32]],48]]]]]],[[[81,[32]]],[[83,[32]]]],[[[81,[32]]],[[8,[[83,[32]]]]]],[[[81,[32]]]],[[],11],[[[81,[32]]]],[[]],[[[81,[32]]]],[[[81,[32]]]],0,[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],0,0,[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[],14],[[],14],[[],26],[[[81,[32]]]],[[]],[[[81,[32]]]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[82],[[]],[[[49,[48]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[19,19]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[82,82],[84,84],[85,85],[86,86],[87,87],[88,88],[89,89],[90,90],[91,91],[92,92],[93,93],[94,94],[95,95],[96,96],[97,97],[98,98],[99,99],[100,100],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[82,82],41],[[85,85],41],[[87,87],41],[[89,89],41],[[91,91],41],[[93,93],41],[[95,95],41],[[97,97],41],[[99,99],41],[19],[[]],[[]],[[]],[[],85],[[],87],[[],89],[[],91],[[],93],[[],95],[[],97],[[],99],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[[]],[[]],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[[82,82],17],[[85,85],17],[[87,87],17],[[89,89],17],[[91,91],17],[[93,93],17],[[95,95],17],[[97,97],17],[[99,99],17],[[]],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[]],[[]],[[]],[[]],[[82,22],23],[[82,22],23],[[84,22],23],[[85,22],23],[[85,22],23],[[86,22],23],[[87,22],23],[[87,22],23],[[88,22],23],[[89,22],23],[[89,22],23],[[90,22],23],[[91,22],23],[[91,22],23],[[92,22],23],[[93,22],23],[[93,22],23],[[94,22],23],[[95,22],23],[[95,22],23],[[96,22],23],[[97,22],23],[[98,22],23],[[99,22],23],[[99,22],23],[[100,22],23],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[82,42]],[[85,42]],[[87,42]],[[89,42]],[[91,42]],[[93,42]],[[95,42]],[[97,42]],[[99,42]],[[]],[[]],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[]],[[101,82]],[[101,87]],[[101,99]],[[101,85]],[[101,91]],[[101,89]],[[101,97]],[[101,95]],[[101,93]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[82],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],84],[[]],[[],86],[[],88],[[],90],[[],92],[[],94],[[],96],[[],98],[[],100],[[],11],[84,11],[86,11],[88,11],[90,11],[92,11],[94,11],[96,11],[98,11],[100,11],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[84,21],[86,21],[88,21],[90,21],[92,21],[94,21],[96,21],[98,21],[100,21],[84,21],[86,21],[88,21],[90,21],[92,21],[94,21],[96,21],[98,21],[100,21],[[]],[[84,11],21],[[86,11],21],[[88,11],21],[[90,11],21],[[92,11],21],[[94,11],21],[[96,11],21],[[98,11],21],[[100,11],21],[[]],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[82,82],[[21,[41]]]],[[85,85],[[21,[41]]]],[[87,87],[[21,[41]]]],[[89,89],[[21,[41]]]],[[91,91],[[21,[41]]]],[[93,93],[[21,[41]]]],[[95,95],[[21,[41]]]],[[97,97],[[21,[41]]]],[[99,99],[[21,[41]]]],[[]],[[]],[[]],[[]],[[]],[[]],[19],[[]],[19],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[19],[84],[86],[88],[90],[92],[94],[96],[98],[100],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],20],[[],20],[[],20],[[],20],[[],20],[[],20],[[],20],[[],20],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,[[]],[[]],[[[102,[43]]],[[102,[43]]]],[[]],0,[[],[[102,[73]]]],[11],[11],[12,[[14,[[102,[74]]]]]],[11],[[[102,[51]],22],23],[[]],0,0,[[[102,[43]],11]],[[[102,[43]],11]],[[],11],[[]],0,[[[102,[76]],25],14],[[]],[[],14],[[],14],[[],26],[[]],0,0,0,0,0,0,0,0,[[[103,[32]],82]],[[[103,[32]]]],[[[103,[32]],[49,[48]]]],[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]],19,19]],[[]],[[]],[[]],[[]],[[]],[19],[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]]]],[[11,15],[[103,[32]]]],[[[103,[32]]]],[11],[11],[[[103,[32]]]],[[[103,[32]]]],[11],[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]]]],[[]],[[[103,[32]],19],11],[[[103,[32]],19],7],[[[103,[32]],19],11],0,[[[103,[32]]]],[[],11],[[[103,[32]]]],0,[[]],[[[103,[32]]]],[[[103,[32]]]],0,0,0,0,[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]]],50],[[[103,[32]]]],[[[103,[32]]],50],[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]]]],0,0,[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]]]],0,0,0,[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]]],82],[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]]]],[[],14],[[],14],[[],26],[[[103,[32]],11]],[[[103,[32]],11]],[[[103,[32]]]],[[]],[[[103,[32]],80,50]],[[[103,[32]],80,32]],[[[103,[32]]]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[105,[104,43]],106,107]],[[[108,[104,43]],106,107]],0,[106,106],[109,109],[[[111,[[0,[43,110]]]]],[[111,[[0,[43,110]]]]]],[[[113,[[0,[43,112]]]]],[[113,[[0,[43,112]]]]]],[[]],[[]],[[]],[[]],[[[105,[104,43]],114,107],53],[[[108,[104,43]],114,107],53],[[[111,[110]],[111,[110]]],[[111,[110]]]],[[[113,[112]],[113,[112]],112],[[113,[112]]]],0,0,0,[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[[106,106],17],[[[113,[[0,[115,112]]]],[113,[[0,[115,112]]]]],17],[[],17],[[],17],[[],17],[[],17],[[106,22],23],[[109,22],23],[[[111,[[0,[51,110]]]],22],23],[[[113,[[0,[51,112]]]],22],23],[[]],[[]],[60,106],[[]],[[]],[[]],[[]],[[[111,[110]]],116],[[[111,[110]]]],[[106,42]],[[[113,[[0,[117,112]]]],42]],[[[111,[110]],106]],[[[113,[118]],46]],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],109],0,[109,11],0,[[[33,[111]],[33,[113]]],[[105,[104,43]]]],[[[33,[111]],[33,[113]]],[[108,[104,43]]]],[109,21],[109,21],0,0,[[109,11],21],[[],45],[[],119],[[[121,[120]]],122],[[[105,[104,43]],107],53],[[[108,[104,43]],107],53],[109],0,0,[[[111,[110]]]],[[]],[[]],[[]],[[]],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,[[]],[[]],[123,123],[[]],[11],[11],[11],[[123,123],17],[[],17],[[],17],[[123,22],23],[[]],[[123,42]],[[124,46]],[[124,35]],[[124,34]],[[],11],[[]],[[]],[[],14],[[],14],[[],26],[[]],0,0,0,0,[[]],[[]],[125,125],[[]],[11],[11],[11],[[125,125],17],[[],17],[[],17],[[125,22],23],[[]],[[125,42]],[[126,58]],[[126,56]],[[126,46]],[[],11],[[]],[[]],[[],14],[[],14],[[],26],[[]],[[127,[128,[48]],[129,[8]]]],0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[[130,[[0,[43,104]]]]],[[130,[[0,[43,104]]]]]],[[[131,[[0,[43,104]]]]],[[131,[[0,[43,104]]]]]],[[]],[[]],0,[11],[11],[11],[11],0,0,[11],[11],[[],[[133,[[8,[132]]]]]],[[[131,[104]]],[[133,[[8,[[132,[104]]]]]]]],[[]],[[]],[[[131,[104]]],17],[[[131,[104]]]],[11],[[],11],[[],11],[11,[[131,[104]]]],[[]],[[]],[[[131,[104]]],17],0,0,0,[11],[[[131,[104]]],11],[[],11],[[[131,[104]]],11],[33,11],[[[131,[104]],33],11],[[],11],[[[131,[104]]],11],[[]],[33],[[[131,[104]],33]],[[[131,[104]]]],[[[131,[104]],11]],[[120,[135,[134]]]],[[[131,[104]],136,120,[135,[134]]]],[[]],[[]],0,[[],14],[[],14],[[],14],[[],14],[[],26],[[],26],[[]],[[]],0,0,0,[[11,34,52],137],[[11,52],138],[137,11],[[137,33],11],[137,11],[138],[[137,33]],0,0,[[11,58,59],139],[[11,59],140],[139,11],[[139,33],11],[139,11],[140],[[139,33]],0,0,0,0,0,0,0,0,0,0,0,0,[[],[[8,[48]]]],[[]],[[]],[48,48],[[]],[[48,48],41],[11],[11],[11],[[48,48],17],[[],17],[[],17],[[48,22],23],[[]],[19,48],[[48,42]],[[],11],[[]],[48,17],[[48,[53,[141]]],[[21,[11]]]],[48,11],[[48,48],[[21,[41]]]],[48,17],[[]],[48,19],[[],14],[[],14],[[],26],[[]],0,0,0,0,0,0,0,0,[[]],[[]],0,[[[142,[112]]],143],0,[11],[11],0,[11],[[]],[[],[[8,[46]]]],[[[142,[112]]],[[144,[112]]]],[[[142,[112]]],[[21,[[121,[112,[120,[112]]]]]]]],[[[142,[112]]],[[145,[112]]]],[[[142,[112]],143],[[120,[112]]]],[[],11],[[]],[[[142,[112]]],112],0,[[],14],[[],14],[[],26],[[[142,[112]]],[[121,[112,[120,[112]]]]]],[[]],0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],0,[11],[11],[11],[11],[11],[11],[11],[11],[11],0,0,[[]],[[]],[[]],[[[146,[33]],46],21],[[],11],[[],11],[[],11],0,[[]],[[]],[[]],[11,[[148,[147]]]],0,0,0,0,0,0,[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],26],[[],26],[[],26],[[]],[[]],[[]],0,0,0,0,[[]],[[]],[149,149],[[]],[11],[11],[11],[[149,22],23],[[149,22],23],[[]],[[],11],[[]],[[127,[150,[147]],[148,[147]],[53,[[62,[[61,[60]],46]]]],[0,[151,152]]],[[14,[[153,[147]],149]]]],[154],[[]],[[],20],[[],14],[[],14],[[],26],[[]],[[127,[53,[[62,[[61,[60]],46]]]],[153,[147]]],17],0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],0,[[[21,[2]]],155],[[],21],[11],[11],[11],[11],[11],[11],[11],[11],[11],[[]],[[]],[[]],[[[33,[7]]],9],[[155,[33,[7]]],9],[10],[[155,10]],0,0,[[],11],[[],11],[[],11],[[]],[[]],[[]],0,0,0,[155,156],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],26],[[],26],[[],26],[[]],[[]],[[]],0,0,0,0,0,[[]],[[]],[[]],[[]],[157,157],[[[49,[43,[0,[43,158]]]]],[[49,[43,[0,[43,158]]]]]],[[]],[[]],[11],[11],[11],[11],[11],[11],[[157,22],23],[[[49,[51,[0,[51,158]]]],22],23],[[[49,[[0,[159,32]],158]],22],23],[[]],[[]],[[],11],[[],11],[[]],[[]],[[[49,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]],158]]],[[165,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]],158]]]],[[157,158,[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]],[53,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]]]]],[[49,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]],158]]]],[[[49,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]],158]]],[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]]]],[[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]],158,[8,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]]]]],[[49,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]],158]]]],[[158,[8,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]]]]],[[49,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]],158]]]],[[]],[[]],[[],20],[[],14],[[],14],[[],14],[[],14],[[],26],[[],26],[[]],[[]],[[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]],158,[8,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]]]]],[[49,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]],158]]]],[[158,[8,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]]]]],[[49,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]],158]]]],[11,20]],"c":[],"p":[[4,"StepFrequency"],[3,"HostProgram"],[3,"VmConfiguration"],[3,"Start"],[3,"Symbol"],[3,"Meta"],[15,"u8"],[3,"Vec"],[3,"Preimage"],[3,"Hint"],[15,"usize"],[8,"Deserializer"],[3,"Page"],[4,"Result"],[3,"State"],[3,"ParsePreimageKeyError"],[15,"bool"],[3,"PreimageKey"],[15,"u32"],[3,"String"],[4,"Option"],[3,"Formatter"],[6,"Result"],[15,"str"],[8,"Serializer"],[3,"TypeId"],[3,"Command"],[3,"ArgMatches"],[3,"Path"],[4,"Error"],[4,"Constraint"],[8,"Field"],[15,"array"],[4,"Steps"],[4,"ColumnAlias"],[3,"StepsIter"],[4,"Sponges"],[3,"SpongesIter"],[4,"Absorbs"],[3,"AbsorbsIter"],[4,"Ordering"],[8,"Hasher"],[8,"Clone"],[6,"KeccakWitness"],[3,"IterBridge"],[4,"Column"],[3,"Env"],[4,"LookupTableIDs"],[3,"RAMLookup"],[15,"u64"],[8,"Debug"],[3,"KeccakEnv"],[15,"slice"],[8,"Interpreter"],[3,"Env"],[4,"ColumnAlias"],[6,"MIPSWitness"],[4,"Instruction"],[3,"Env"],[4,"BerkeleyChallengeTerm"],[6,"ConstantExpr"],[6,"Expr"],[3,"InstructionIter"],[4,"RTypeInstruction"],[3,"RTypeInstructionIter"],[4,"JTypeInstruction"],[3,"JTypeInstructionIter"],[4,"ITypeInstruction"],[3,"ITypeInstructionIter"],[8,"InterpreterEnv"],[3,"InstructionParts"],[3,"Registers"],[8,"Default"],[8,"Deserialize"],[8,"Iterator"],[8,"Serialize"],[8,"PreImageOracleT"],[3,"Env"],[3,"SyscallEnv"],[4,"Column"],[3,"Env"],[4,"Instruction"],[6,"E"],[3,"InstructionIter"],[4,"RInstruction"],[3,"RInstructionIter"],[4,"IInstruction"],[3,"IInstructionIter"],[4,"SInstruction"],[3,"SInstructionIter"],[4,"SBInstruction"],[3,"SBInstructionIter"],[4,"UInstruction"],[3,"UInstructionIter"],[4,"UJInstruction"],[3,"UJInstructionIter"],[4,"SyscallInstruction"],[3,"SyscallInstructionIter"],[4,"MInstruction"],[3,"MInstructionIter"],[8,"InterpreterEnv"],[3,"Registers"],[3,"Env"],[8,"FoldingConfig"],[3,"DecomposedFoldingEnvironment"],[4,"Challenge"],[4,"Side"],[3,"FoldingEnvironment"],[3,"ChallengeIter"],[8,"CommitmentCurve"],[3,"FoldingInstance"],[8,"FftField"],[3,"FoldingWitness"],[4,"CurrOrNext"],[8,"PartialEq"],[4,"Alphas"],[8,"Hash"],[6,"Fp"],[3,"RelaxedInstance"],[3,"Radix2EvaluationDomain"],[3,"Evaluations"],[3,"RelaxedWitness"],[3,"KeccakConfig"],[6,"KeccakFoldingWitness"],[3,"DecomposableMIPSFoldingConfig"],[6,"MIPSFoldingWitness"],[3,"EvaluationDomains"],[3,"ProofInputs"],[3,"Witness"],[3,"Trace"],[3,"DecomposedTrace"],[4,"FoldingCompatibleExpr"],[3,"BTreeMap"],[6,"Pairing"],[3,"PairingSRS"],[8,"FqSponge"],[6,"KeccakTrace"],[6,"DecomposedKeccakTrace"],[6,"MIPSTrace"],[6,"DecomposedMIPSTrace"],[8,"PrimeField"],[3,"ColumnEnvironment"],[4,"Domain"],[3,"BerkeleyChallenges"],[3,"Constants"],[3,"WitnessColumns"],[8,"KimchiCurve"],[3,"ProofInputs"],[4,"ProverError"],[3,"SRS"],[8,"RngCore"],[8,"CryptoRng"],[3,"Proof"],[3,"Demand"],[3,"PreImageOracle"],[3,"Child"],[4,"LookupMode"],[8,"LookupTableID"],[8,"Display"],[8,"Add"],[8,"Sub"],[8,"Mul"],[8,"One"],[8,"Zero"],[3,"Logup"],[8,"BoolHelpers"],[8,"LogupHelpers"],[8,"ArithHelpers"],[8,"KeccakInterpreter"],[8,"Tracer"],[8,"Foldable"],[8,"DecomposableTracer"],[3,"ReadWrite"],[3,"RW"]]},\
+"o1vm":{"doc":"","t":"CCAAAAAAAAAANNNRRDDDNRRRRRDDDDNDDEDDMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMLLLLLLLLLLLLMLLLLLLLLLLLLMMMMMMMMMMMMMMMMLLMMMMMMFMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFFFAAANNNNCNNNENENNNNNNNCNCNNNNLLLLLLLLAALLLLLLALLLLLLLLLLALLALLFFLLLLLLLLLLANEDNNNENNNGNNRRRNNNNNNNNNNNNNNNNNNNEDNNEDNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDLLLLLLLLMLLLLLLLLMLLLLLLLDLLLLMLLLLLLLLLLLLMLLLLLLMLLIIILLLLLLLLLLLLLLLLKLLLIIQKLLLKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLDLLLLLLLLLLLLLLLLMMLLLLLLLMCCCCAAAAAENGRRRRRNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNNNNNNNNNNRRRRRRRNEDEDINEDNNNNNNNNNNNNNNNNNNNNNNNNQNEDRRRRRRRNNNNNNNNNNNNNNNNNNNNNNNNNNNNNQNNLLLKKKKKKKLLLKLLLLLLLLLLLLLLLLKKKLLLLLLLLLLLLLLLLLLLLKKKKALLLLLLLLLLLLLLLLLLLKKLLLLLLLLLLLLKLLLLLLLLKKKKLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLKFFFFLLLLLLLLLLLLLKLLLLLLLLLLLLLKKKLLLLLLLLKLLLLKLLLLLLLLKKLLKKLLLLLLKKKKKLLKKKLLLLLKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLKDLLLLLLLLLLLLLLLLMLLMMMMLMLLLLLRRRRRRRRRDLLLLMLLLLLLLMMMLLLLLMMMMLLLLLLDRRRRRRRDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLLLLMLLLMMMMMMLLLLLLLMMMMLLLLMMLLLLLLMMMMMLLLLLLMLLLLLLLLLLLLLLLLLLRRRRRAAAAAEGNNNLLLLLLLLLLLLLLLLLLLDLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLMMLLLLLLLLLLLLLLNNNNNNNNNNNNNNNEDNEDINNNNNNNNEDNNNNNNNQEDNNNEDNEDNNNNNNNNNNNNNNNEDNNEDEDNNQNNLLLKKKKKKLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKKLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLKFFFFFFFFFLLLLLLLLLLLLLLLLLLLLLLLLLLLLKKLLLLLLLLLLLLLLLLLLLLLLLKKKKKKLLLLLLLLLLLLLLLLLLKLLLLLLLLLKLLLLLLLLLLLLLLLLLLKKLLKKLLLLLKKKLLKKKLLLLLLLLLLKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLKRRRRDLLLLMLLLLLLLMMLLLLMLLLLLLDRRRRRRRLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLMLLLMMMMLLLLLLLLLLLLLLMMLLLMMMLLLLLLLLLLLLLLLLLLLGGGGGGGAAANEDDDDDNNMMLLLLLLLLLLLLLLMLLLLLLLLLLLLMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLALALLLLMMLLLLLLLMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMDGGGLLLLLLLLLLLLLLLLLLLLLLLDGGGLLLLLLLLLLLLLLLLLLLLLLLFIDIQDILLLLLLLLMLLLLMMLLKLLLLLKLLLLLLAMAKLKLKLKLKKLLLKLLLMLLLLLLLLMGGLLLLLLLGGLLLLLLLNNNENNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLRRRAAAADLLMLMLLMLLFLLLLLLLMLLLLLMDDDLLLLLLMLLLLLLLLLMMLLLLLLLMLLLLMMMMMMLLLLLLLLLLLLMMNELLLLLLLLLLLLFLLLLLLLFDIDDLLLLLLMLFLLLLLLLLLLLLKLKLMMLLLLLLMMMLLLLLLLLLLLLLMEDNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLF","n":["RAMLookup","RAMLookupMode","cannon","cannon_cli","elf_loader","interpreters","legacy","lookups","pickles","preimage_oracle","ramlookup","utils","Always","Every","Exactly","HINT_CLIENT_READ_FD","HINT_CLIENT_WRITE_FD","Hint","HostProgram","Meta","Never","PAGE_ADDRESS_MASK","PAGE_ADDRESS_SIZE","PAGE_SIZE","PREIMAGE_CLIENT_READ_FD","PREIMAGE_CLIENT_WRITE_FD","Page","ParsePreimageKeyError","Preimage","PreimageKey","Range","Start","State","StepFrequency","Symbol","VmConfiguration","arguments","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","create","create","create","data","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deserialize","deserialize","deserialize","deserialize","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","eq","eq","eq","eq","eq","equivalent","equivalent","exit","exited","find_address_symbol","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from_str","get","get","heap","hi","host","index","info_at","init","init","init","init","init","init","init","init","init","init","init","init","input_state_file","into","into","into","into","into","into","into","into","into","into","into","into","last_hint","lo","memory","metadata_file","name","name","next_pc","output_state_file","pc","pprof_cpu","preimage","preimage_key","preimage_offset","proof_at","proof_fmt","registers","serialize","serialize","size","snapshot_fmt","snapshot_state_at","start","step","step","step_frequency_parser","stop_at","symbols","time","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","main_cli","read_configuration","parse_riscv32","keccak","mips","riscv32im","AbsorbRootZero","AbsorbShifts","AbsorbXor","AbsorbZeroPad","Absorbs","BooleanityPadding","ChiShiftsB","ChiShiftsSum","Constraint","Constraint","Error","IotaStateG","Lookup","PadAtEnd","PaddingSuffix","PiRhoRotatedE","PiRhoShiftsE","PiRhoWordE","Sponges","SqueezeShifts","Steps","ThetaQuotientC","ThetaRotatedC","ThetaShiftsC","ThetaWordC","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","column","constraints","deref","deref","deref_mut","deref_mut","drop","drop","environment","eq","eq","equivalent","equivalent","equivalent","equivalent","fmt","fmt","from","from","helpers","init","init","interpreter","into","into","pad_blocks","standardize","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","witness","Absorb","Absorbs","AbsorbsIter","BlockIndex","ChiShiftsB","ChiShiftsSum","ColumnAlias","First","HashIndex","Input","KeccakWitness","Last","Middle","N_ZKVM_KECCAK_COLS","N_ZKVM_KECCAK_REL_COLS","N_ZKVM_KECCAK_SEL_COLS","Only","Output","PadBytesFlags","PadLength","PadSuffix","PiRhoDenseE","PiRhoDenseRotE","PiRhoExpandRotE","PiRhoQuotientE","PiRhoRemainderE","PiRhoShiftsE","Round","RoundConstants","RoundNumber","Sponge","SpongeBytes","SpongeNewState","SpongeShifts","SpongeZeros","Sponges","SpongesIter","Squeeze","StepIndex","Steps","StepsIter","ThetaDenseC","ThetaDenseRotC","ThetaExpandRotC","ThetaQuotientC","ThetaRemainderC","ThetaShiftsC","TwoToPad","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","default","default","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","drop","drop","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","hash","hash","hash","hash","index","index","index_mut","index_mut","init","init","init","init","init","init","init","into","into","into","into","into","into","into","into_iter","into_iter","into_iter","into_iter","is_witness","iter","iter","iter","iter","len","len","len","len","next","next","next","next_back","next_back","next_back","nth","nth","nth","par_bridge","par_bridge","par_bridge","partial_cmp","partial_cmp","partial_cmp","partial_cmp","size_hint","size_hint","size_hint","to_column","to_column","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","Env","add_lookup","borrow","borrow_mut","clone","clone_into","constant","constant_field","constrain","constraints","default","deref","deref_mut","drop","fmt","from","init","into","lookups","to_owned","try_from","try_into","two_pow","type_id","variable","vzip","KeccakEnv","borrow","borrow_mut","clone","clone_into","constraints_env","default","deref","deref_mut","drop","fmt","from","init","into","new","null_state","selector","step","step","to_owned","try_from","try_into","type_id","update_step","vzip","witness_env","write_column","write_column_field","ArithHelpers","BoolHelpers","LogupHelpers","either_zero","is_boolean","is_nonzero","is_one","is_zero","lookup_byte","lookup_pad","lookup_rc16","lookup_reset","lookup_round_constants","lookup_sparse","not","one","or","read_syscall","two","two_pow","write_syscall","xor","zero","Interpreter","KeccakInterpreter","Variable","add_lookup","block_in_padding","block_index","bytes_block","constant","constant_field","constrain","constrain_absorb","constrain_booleanity","constrain_chi","constrain_flags","constrain_iota","constrain_padding","constrain_pirho","constrain_round","constrain_sponge","constrain_squeeze","constrain_theta","constraints","dense_c","dense_e","dense_rot_c","dense_rot_e","expand_rot_c","expand_rot_e","flags_block","from_quarters","from_shifts","hash_index","in_padding","input","input_of_step","is_absorb","is_pad","is_root","is_round","is_sponge","is_squeeze","lookup_steps","lookup_syscall_hash","lookup_syscall_preimage","lookups","lookups_round_chi","lookups_round_iota","lookups_round_pirho","lookups_round_theta","lookups_sponge","mode_absorb","mode_pad","mode_root","mode_rootpad","mode_round","mode_squeeze","new_state","old_state","output","output_of_step","pad_bytes_flags","pad_length","pad_suffix","quotient_c","quotient_e","remainder_c","remainder_e","round","round_constants","shifts_b","shifts_c","shifts_e","shifts_sum","sponge_byte","sponge_bytes","sponge_shifts","sponge_zeros","state_a","state_g","step_index","two_to_pad","variable","vec_dense_c","vec_dense_e","vec_dense_rot_c","vec_dense_rot_e","vec_expand_rot_c","vec_expand_rot_e","vec_quotient_c","vec_quotient_e","vec_remainder_c","vec_remainder_e","vec_shifts_b","vec_shifts_c","vec_shifts_e","vec_shifts_sum","vec_sponge_shifts","xor_state","Env","add_lookup","borrow","borrow_mut","clone","clone_into","constant","constant_field","constrain","default","deref","deref_mut","drop","fmt","from","init","into","multiplicities","tables","to_owned","try_from","try_into","two_pow","type_id","variable","vzip","witness","ITypeInstruction","Instruction","JTypeInstruction","RTypeInstruction","column","constraints","interpreter","registers","witness","ColumnAlias","InstructionCounter","MIPSWitness","N_MIPS_COLS","N_MIPS_REL_COLS","N_MIPS_SEL_COLS","SCRATCH_SIZE","SCRATCH_SIZE_INVERSE","ScratchState","ScratchStateInverse","Selector","borrow","borrow_mut","clone","clone_into","cmp","deref","deref_mut","drop","eq","equivalent","equivalent","fmt","from","hash","index","index","index_mut","index_mut","init","into","is_witness","partial_cmp","to_column","to_owned","try_from","try_into","type_id","vzip","Env","activate_selector","add_constraint","add_lookup","add_witness","alloc_scratch","alloc_scratch_inverse","and_witness","bitmask","borrow","borrow_mut","check_boolean","check_equal","check_is_zero","constant","copy","count_leading_ones","count_leading_zeros","default","deref","deref_mut","divmod","divmod_signed","drop","equal","fetch_memory","fetch_memory_access","fetch_register","fetch_register_access","from","get_constraints","get_lookups","get_selector","get_selector_constraints","increase_instruction_counter","init","instruction_counter","into","is_zero","mul_hi_lo","mul_hi_lo_signed","mul_signed_witness","nor_witness","or_witness","push_memory","push_memory_access","push_register_access_if","push_register_if","report_exit","request_hint_write","request_preimage_write","reset","set_halted","shift_left","shift_right","shift_right_arithmetic","sub_witness","test_less_than","test_less_than_signed","test_zero","try_from","try_into","type_id","variable","vzip","xor_witness","Add","AddImmediate","AddImmediateUnsigned","AddUnsigned","And","AndImmediate","BranchEq","BranchGeqZero","BranchGtZero","BranchLeqZero","BranchLtZero","BranchNeq","CountLeadingOnes","CountLeadingZeros","Div","DivUnsigned","FD_HINT_READ","FD_HINT_WRITE","FD_PREIMAGE_READ","FD_PREIMAGE_WRITE","FD_STDERR","FD_STDIN","FD_STDOUT","IType","ITypeInstruction","ITypeInstructionIter","Instruction","InstructionIter","InterpreterEnv","JType","JTypeInstruction","JTypeInstructionIter","Jump","JumpAndLink","JumpAndLinkRegister","JumpRegister","Load16","Load16Unsigned","Load32","Load8","Load8Unsigned","LoadUpperImmediate","LoadWordLeft","LoadWordRight","MoveFromHi","MoveFromLo","MoveNonZero","MoveToHi","MoveToLo","MoveZero","Multiply","MultiplyToRegister","MultiplyUnsigned","Nor","Or","OrImmediate","Position","RType","RTypeInstruction","RTypeInstructionIter","SYSCALL_BRK","SYSCALL_CLONE","SYSCALL_EXIT_GROUP","SYSCALL_FCNTL","SYSCALL_MMAP","SYSCALL_READ","SYSCALL_WRITE","SetLessThan","SetLessThanImmediate","SetLessThanImmediateUnsigned","SetLessThanUnsigned","ShiftLeftLogical","ShiftLeftLogicalVariable","ShiftRightArithmetic","ShiftRightArithmeticVariable","ShiftRightLogical","ShiftRightLogicalVariable","Store16","Store32","Store32Conditional","Store8","StoreWordLeft","StoreWordRight","Sub","SubUnsigned","Sync","SyscallExitGroup","SyscallFcntl","SyscallMmap","SyscallOther","SyscallReadHint","SyscallReadOther","SyscallReadPreimage","SyscallWriteHint","SyscallWriteOther","SyscallWritePreimage","Variable","Xor","XorImmediate","access_memory","access_register","access_register_if","activate_selector","add_constraint","add_lookup","add_witness","alloc_scratch","alloc_scratch_inverse","and_witness","assert_boolean","assert_equal","assert_is_zero","bitmask","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","check_boolean","check_equal","check_is_zero","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","constant","copy","count_leading_ones","count_leading_zeros","debugging","default","default","default","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","divmod","divmod_signed","drop","drop","drop","drop","drop","drop","drop","drop","eq","eq","eq","eq","equal","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fetch_memory","fetch_memory_access","fetch_register","fetch_register_access","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","get_instruction_pointer","get_next_instruction_pointer","hash","hash","hash","hash","increase_heap_pointer","increase_instruction_counter","init","init","init","init","init","init","init","init","instruction_counter","interpret_instruction","interpret_itype","interpret_jtype","interpret_rtype","into","into","into","into","into","into","into","into","into_iter","into_iter","into_iter","into_iter","into_iter","is_zero","iter","iter","iter","iter","iter","len","len","len","len","len","lookup_16bits","lookup_2bits","lookup_8bits","mul_hi_lo","mul_hi_lo_signed","mul_signed_witness","next","next","next","next","next_back","next_back","next_back","next_back","nor_witness","nth","nth","nth","nth","or_witness","par_bridge","par_bridge","par_bridge","par_bridge","partial_cmp","partial_cmp","partial_cmp","partial_cmp","push_memory","push_memory_access","push_register","push_register_access","push_register_access_if","push_register_if","range_check16","range_check2","range_check64","range_check8","read_memory","read_register","report_exit","request_hint_write","request_preimage_write","reset","set_halted","set_instruction_pointer","set_next_instruction_pointer","shift_left","shift_right","shift_right_arithmetic","sign_extend","size_hint","size_hint","size_hint","size_hint","sub_witness","test_less_than","test_less_than_signed","test_zero","to_column","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","variable","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","write_memory","write_register","write_register_if","xor_witness","InstructionParts","borrow","borrow_mut","clone","clone_into","decode","default","deref","deref_mut","deserialize","drop","encode","eq","equivalent","equivalent","fmt","from","funct","init","into","op_code","rd","rs","rt","serialize","shamt","to_owned","try_from","try_into","type_id","vzip","NUM_REGISTERS","REGISTER_CURRENT_IP","REGISTER_HEAP_POINTER","REGISTER_HI","REGISTER_LO","REGISTER_NEXT_IP","REGISTER_PREIMAGE_KEY_END","REGISTER_PREIMAGE_KEY_START","REGISTER_PREIMAGE_OFFSET","Registers","borrow","borrow_mut","clone","clone_into","current_instruction_pointer","default","deref","deref_mut","deserialize","drop","fmt","from","general_purpose","heap_pointer","hi","index","index_mut","init","into","iter","lo","next_instruction_pointer","preimage_key","preimage_offset","serialize","to_owned","try_from","try_into","type_id","vzip","Env","MAX_ACC","MAX_NB_MEM_ACC","MAX_NB_REG_ACC","NUM_DECODING_LOOKUP_TERMS","NUM_GLOBAL_LOOKUP_TERMS","NUM_INSTRUCTION_LOOKUP_TERMS","NUM_LOOKUP_TERMS","SyscallEnv","activate_selector","add_constraint","add_lookup","add_witness","alloc_scratch","alloc_scratch_inverse","and_witness","bitmask","borrow","borrow","borrow_mut","borrow_mut","check_boolean","check_equal","check_is_zero","clone","clone_into","constant","copy","count_leading_ones","count_leading_zeros","create","create","decode_instruction","default","deref","deref","deref_mut","deref_mut","divmod","divmod_signed","drop","drop","equal","fetch_memory","fetch_memory_access","fetch_register","fetch_register_access","from","from","get_memory_access_page_index","get_memory_direct","get_memory_page_index","halt","hash_counter","increase_instruction_counter","init","init","instruction_counter","instruction_counter","into","into","is_zero","keccak_env","last_hint","last_memory_accesses","last_memory_write_index_accesses","memory","memory_write_index","mul_hi_lo","mul_hi_lo_signed","mul_signed_witness","next_instruction_counter","nor_witness","normalized_instruction_counter","or_witness","preimage","preimage_bytes_read","preimage_key","preimage_oracle","push_memory","push_memory_access","push_register_access_if","push_register_if","registers","registers_write_index","report_exit","request_hint_write","request_preimage_write","reset","reset_scratch_state","reset_scratch_state_inverse","scratch_state","scratch_state_idx","scratch_state_idx_inverse","scratch_state_inverse","selector","set_halted","shift_left","shift_right","shift_right_arithmetic","step","sub_witness","syscall_env","test_less_than","test_less_than_signed","test_zero","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","update_last_memory_access","update_last_memory_write_index_access","variable","vzip","vzip","write_column","write_field_column","xor_witness","INSTRUCTION_SET_SIZE","PAGE_ADDRESS_MASK","PAGE_ADDRESS_SIZE","PAGE_SIZE","SCRATCH_SIZE","column","constraints","interpreter","registers","witness","Column","E","InstructionCounter","ScratchState","Selector","borrow","borrow_mut","clone","clone_into","deref","deref_mut","drop","eq","equivalent","equivalent","fmt","from","init","into","to_owned","try_from","try_into","type_id","vzip","Env","activate_selector","add_constraint","add_lookup","add_witness","alloc_scratch","and_witness","bitmask","borrow","borrow_mut","check_boolean","check_equal","check_is_zero","constant","constraints","copy","count_leading_ones","count_leading_zeros","default","deref","deref_mut","divmod","divmod_signed","drop","equal","fetch_memory","fetch_memory_access","fetch_register","fetch_register_access","from","get_constraints","get_lookups","get_selector","get_selector_constraints","increase_instruction_counter","init","instruction_counter","into","inverse_or_zero","is_zero","lookups","mul_hi","mul_hi_lo","mul_hi_lo_signed","mul_hi_signed","mul_lo_signed","mul_signed_witness","nor_witness","or_witness","push_memory","push_memory_access","push_register_access_if","push_register_if","report_exit","reset","scratch_state_idx","selector","set_halted","shift_left","shift_right","shift_right_arithmetic","sub_witness","test_less_than","test_less_than_signed","test_zero","try_from","try_into","type_id","variable","vzip","xor_witness","Add","AddImmediate","AddUpperImmediate","And","AndImmediate","BranchEq","BranchGreaterThanEqual","BranchGreaterThanEqualUnsigned","BranchLessThan","BranchLessThanUnsigned","BranchNeq","Div","Divu","Fence","FenceI","IInstruction","IInstructionIter","IType","Instruction","InstructionIter","InterpreterEnv","JumpAndLink","JumpAndLinkRegister","LoadByte","LoadByteUnsigned","LoadHalf","LoadHalfUnsigned","LoadUpperImmediate","LoadWord","MInstruction","MInstructionIter","MType","Mul","Mulh","Mulhsu","Mulhu","Or","OrImmediate","Position","RInstruction","RInstructionIter","RType","Rem","Remu","SBInstruction","SBInstructionIter","SBType","SInstruction","SInstructionIter","SType","SetLessThan","SetLessThanImmediate","SetLessThanImmediateUnsigned","SetLessThanUnsigned","ShiftLeftLogical","ShiftLeftLogicalImmediate","ShiftRightArithmetic","ShiftRightArithmeticImmediate","ShiftRightLogical","ShiftRightLogicalImmediate","StoreByte","StoreHalf","StoreWord","Sub","SyscallInstruction","SyscallInstructionIter","SyscallSuccess","SyscallType","UInstruction","UInstructionIter","UJInstruction","UJInstructionIter","UJType","UType","Variable","Xor","XorImmediate","access_memory","access_register","access_register_if","activate_selector","add_constraint","add_lookup","add_witness","alloc_scratch","and_witness","assert_boolean","assert_equal","assert_is_zero","bitmask","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","check_boolean","check_equal","check_is_zero","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","cmp","constant","copy","count_leading_ones","count_leading_zeros","default","default","default","default","default","default","default","default","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","divmod","divmod_signed","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","eq","eq","eq","eq","eq","eq","eq","eq","eq","equal","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fetch_memory","fetch_memory_access","fetch_register","fetch_register_access","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_instruction_pointer","get_next_instruction_pointer","hash","hash","hash","hash","hash","hash","hash","hash","hash","increase_heap_pointer","increase_instruction_counter","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","instruction_counter","interpret_instruction","interpret_itype","interpret_mtype","interpret_rtype","interpret_sbtype","interpret_stype","interpret_syscall","interpret_ujtype","interpret_utype","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into_iter","into_iter","into_iter","into_iter","into_iter","into_iter","into_iter","into_iter","into_iter","into_iter","inverse_or_zero","is_zero","iter","iter","iter","iter","iter","iter","iter","iter","iter","iter","len","len","len","len","len","len","len","len","len","len","lookup_16bits","lookup_2bits","lookup_8bits","mul_hi","mul_hi_lo","mul_hi_lo_signed","mul_hi_signed","mul_lo_signed","mul_signed_witness","next","next","next","next","next","next","next","next","next","next_back","next_back","next_back","next_back","next_back","next_back","next_back","next_back","next_back","nor_witness","nth","nth","nth","nth","nth","nth","nth","nth","nth","or_witness","par_bridge","par_bridge","par_bridge","par_bridge","par_bridge","par_bridge","par_bridge","par_bridge","par_bridge","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","push_memory","push_memory_access","push_register","push_register_access","push_register_access_if","push_register_if","range_check16","range_check64","range_check8","read_memory","read_register","report_exit","reset","set_halted","set_instruction_pointer","set_next_instruction_pointer","shift_left","shift_right","shift_right_arithmetic","sign_extend","size_hint","size_hint","size_hint","size_hint","size_hint","size_hint","size_hint","size_hint","size_hint","sub_witness","test_less_than","test_less_than_signed","test_zero","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","to_string","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","variable","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","write_memory","write_register","write_register_if","xor_witness","N_GP_REGISTERS","REGISTER_CURRENT_IP","REGISTER_HEAP_POINTER","REGISTER_NEXT_IP","Registers","borrow","borrow_mut","clone","clone_into","current_instruction_pointer","default","deref","deref_mut","deserialize","drop","fmt","from","general_purpose","heap_pointer","index","index_mut","init","into","next_instruction_pointer","serialize","to_owned","try_from","try_into","type_id","vzip","Env","MAX_ACC","MAX_NB_MEM_ACC","MAX_NB_REG_ACC","NUM_DECODING_LOOKUP_TERMS","NUM_GLOBAL_LOOKUP_TERMS","NUM_INSTRUCTION_LOOKUP_TERMS","NUM_LOOKUP_TERMS","activate_selector","add_constraint","add_lookup","add_witness","alloc_scratch","and_witness","bitmask","borrow","borrow_mut","check_boolean","check_equal","check_is_zero","constant","copy","count_leading_ones","count_leading_zeros","create","decode_instruction","deref","deref_mut","divmod","divmod_signed","drop","equal","fetch_memory","fetch_memory_access","fetch_register","fetch_register_access","from","get_memory_access_page_index","get_memory_direct","get_memory_page_index","halt","increase_instruction_counter","init","instruction_counter","instruction_counter","into","inverse_or_zero","is_zero","last_memory_accesses","last_memory_write_index_accesses","memory","memory_write_index","mul_hi","mul_hi_lo","mul_hi_lo_signed","mul_hi_signed","mul_lo_signed","mul_signed_witness","next_instruction_counter","nor_witness","normalized_instruction_counter","or_witness","push_memory","push_memory_access","push_register_access_if","push_register_if","registers","registers_write_index","report_exit","reset","reset_scratch_state","scratch_state","scratch_state_idx","selector","set_halted","shift_left","shift_right","shift_right_arithmetic","step","sub_witness","test_less_than","test_less_than_signed","test_zero","try_from","try_into","type_id","update_last_memory_access","update_last_memory_write_index_access","variable","vzip","write_column","write_field_column","xor_witness","BaseSponge","Curve","Fp","OpeningProof","Pairing","ScalarSponge","SpongeParams","folding","proof","trace","Beta","Challenge","ChallengeIter","DecomposedFoldingEnvironment","FoldingEnvironment","FoldingInstance","FoldingWitness","Gamma","JointCombiner","alphas","blinder","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","challenge","challenge","challenges","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","col","col","combine","combine","commitments","curr_witnesses","curr_witnesses","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","drop","eq","eq","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","get_alphas","get_blinder","hash","hash","index","index","init","init","init","init","init","init","instances","instances","into","into","into","into","into","into","into_iter","iter","keccak","len","mips","new","new","next","next_back","next_witnesses","next_witnesses","nth","par_bridge","relax","relax","selector","selector","size_hint","structure","structure","to_absorb","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","witness","KeccakConfig","KeccakFoldingEnvironment","KeccakFoldingInstance","KeccakFoldingWitness","borrow","borrow_mut","clone","clone_into","deref","deref_mut","drop","eq","equivalent","equivalent","fmt","from","hash","index","index","index","init","into","to_owned","try_from","try_into","type_id","vzip","DecomposableMIPSFoldingConfig","DecomposableMIPSFoldingEnvironment","MIPSFoldingInstance","MIPSFoldingWitness","borrow","borrow_mut","clone","clone_into","deref","deref_mut","drop","eq","equivalent","equivalent","fmt","from","hash","index","index","index","init","into","to_owned","try_from","try_into","type_id","vzip","fold","DecomposableTracer","DecomposedTrace","Foldable","Selector","Trace","Tracer","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","constraints","deref","deref","deref_mut","deref_mut","domain_size","domain_size","drop","drop","folding_constraints","folding_constraints","from","from","in_circuit","index","init","init","init","init","into","into","is_full","keccak","lookups","mips","new","number_of_rows","pad_dummy","pad_dummy","pad_with_row","pad_with_row","pad_with_zeros","pad_with_zeros","pad_witnesses","push_row","push_row","reset","set_selector_column","to_folding_pair","to_folding_pair","to_owned","to_owned","trace","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","witness","DecomposedKeccakTrace","KeccakTrace","init","new","pad_dummy","pad_with_row","pad_with_zeros","pad_witnesses","push_row","DecomposedMIPSTrace","MIPSTrace","init","new","pad_dummy","pad_with_row","pad_with_zeros","pad_witnesses","push_row","AtMost4Lookup","ByteLookup","KeccakStepLookup","LookupTableIDs","MemoryLookup","PadLookup","RangeCheck16Lookup","RegisterLookup","ResetLookup","RoundConstantsLookup","SparseLookup","SyscallLookup","all_variants","borrow","borrow_mut","clone","clone_into","cmp","deref","deref_mut","drop","eq","equivalent","equivalent","fmt","from","from_u32","hash","init","into","is_fixed","ix_by_value","length","partial_cmp","runtime_create_column","to_owned","to_u32","try_from","try_into","type_id","vzip","DEGREE_QUOTIENT_POLYNOMIAL","MAXIMUM_DEGREE_CONSTRAINTS","TOTAL_NUMBER_OF_CONSTRAINTS","column_env","proof","prover","verifier","ColumnEnvironment","borrow","borrow_mut","challenges","column_domain","constants","deref","deref_mut","domain","drop","from","get_all_columns","get_challenges","get_column","get_constants","get_domain","init","into","l0_1","l0_1","try_from","try_into","type_id","vanishes_on_zero_knowledge_and_previous_rows","vzip","witness","Proof","ProofInputs","WitnessColumns","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","commitments","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","error","evaluations","from","from","from","get_column","init","init","init","instruction_counter","into","into","into","new","opening_proof","quotient_commitment","quotient_evaluations","scratch","scratch_inverse","selector","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","zeta_evaluations","zeta_omega_evaluations","ConstraintDegreeTooHigh","ProverError","borrow","borrow_mut","clone","clone_into","deref","deref_mut","drop","fmt","fmt","from","init","into","prove","provide","to_owned","to_string","try_from","try_into","type_id","vzip","verify","PreImageOracle","PreImageOracleT","RW","ReadWrite","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","cmd","create","create_bidirectional_channel","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","from","from","from","get_preimage","get_preimage","hint","hint","hint_client","hint_server","init","init","init","into","into","into","oracle_client","oracle_server","reader","start","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","writer","LookupMode","RAMLookup","Read","Write","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","deref","deref","deref_mut","deref_mut","drop","drop","fmt","fmt","fmt","from","from","init","init","into","into","into_logup","new","numerator","read_if","read_one","to_owned","to_owned","to_string","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","write_if","write_one","memory_size"],"q":[[0,"o1vm"],[12,"o1vm::cannon"],[265,"o1vm::cannon_cli"],[267,"o1vm::elf_loader"],[268,"o1vm::interpreters"],[271,"o1vm::interpreters::keccak"],[342,"o1vm::interpreters::keccak::column"],[562,"o1vm::interpreters::keccak::constraints"],[588,"o1vm::interpreters::keccak::environment"],[616,"o1vm::interpreters::keccak::helpers"],[639,"o1vm::interpreters::keccak::interpreter"],[737,"o1vm::interpreters::keccak::witness"],[764,"o1vm::interpreters::mips"],[773,"o1vm::interpreters::mips::column"],[812,"o1vm::interpreters::mips::constraints"],[878,"o1vm::interpreters::mips::interpreter"],[1247,"o1vm::interpreters::mips::interpreter::debugging"],[1278,"o1vm::interpreters::mips::registers"],[1318,"o1vm::interpreters::mips::witness"],[1439,"o1vm::interpreters::riscv32im"],[1449,"o1vm::interpreters::riscv32im::column"],[1473,"o1vm::interpreters::riscv32im::constraints"],[1544,"o1vm::interpreters::riscv32im::interpreter"],[2145,"o1vm::interpreters::riscv32im::registers"],[2175,"o1vm::interpreters::riscv32im::witness"],[2268,"o1vm::legacy"],[2278,"o1vm::legacy::folding"],[2424,"o1vm::legacy::folding::keccak"],[2451,"o1vm::legacy::folding::mips"],[2478,"o1vm::legacy::proof"],[2479,"o1vm::legacy::trace"],[2545,"o1vm::legacy::trace::keccak"],[2554,"o1vm::legacy::trace::mips"],[2563,"o1vm::lookups"],[2604,"o1vm::pickles"],[2611,"o1vm::pickles::column_env"],[2637,"o1vm::pickles::proof"],[2690,"o1vm::pickles::prover"],[2712,"o1vm::pickles::verifier"],[2713,"o1vm::preimage_oracle"],[2767,"o1vm::ramlookup"],[2812,"o1vm::utils"]],"d":["","","Modules mimicking the defined structures used by Cannon …","A CLI mimicking the Cannon CLI.","A module to load ELF files.","","Legacy implementation of the recursive proof composition. …","Instantiation of the lookups for the VM project. …","Pickles flavor of the o1vm. This is the pickles flavor of …","Preimage oracle interface used by the zkVM.","The RAM lookup argument.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","","","","","","","","","","","","","","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Parse an ELF file and return the parsed data as a …","An interpreter for an optimised version of Keccak","An interpreter for the MIPS instruction set. This module …","An interpreter for the RISC-V 32IM instruction set, …","","","","","","","","","All the names for constraints involved in the Keccak …","","Errors that can occur during the check of the witness","","","","","","","","","","","","","","","","","","","","","","","This module defines the custom columns used in the Keccak …","This module contains the constraints for one Keccak step.","","","","","","","This module contains the definition and implementation of …","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","This module defines the Keccak interpreter in charge of …","Calls U::from(self)
.","Calls U::from(self)
.","This function returns a vector of field elements that …","Standardizes a Keccak step to a common opcode","","","","","","","","","","","This file contains the witness for the Keccak hash …","","Order of absorb steps in the computation depending on the …","An iterator over the variants of Absorbs","Block index inside the hash to enumerate preimage bytes","","","Column aliases used by the Keccak circuit. The number of …","","Hash identifier to distinguish inside the syscalls …","","The witness columns used by the Keccak circuit. The Keccak …","","","Total number of columns used in Keccak, including relation …","The maximum total number of witness columns used by the …","The number of columns required for the Keccak selectors. …","","","","","","","","","","","","Current step performs a round of the permutation. The …","","","Current step is a sponge","","","","","Variants of Keccak sponges","An iterator over the variants of Sponges","","Hash step identifier to distinguish inside interstep …","Variants of Keccak steps available for the interpreter. …","An iterator over the variants of Steps","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","Map the column alias to the actual column index. Note that …","Map the column alias to the actual column index. Note that …","","","","","","","","","","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Iterate over the instruction variants","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","This struct contains all that needs to be kept track of …","","","","","","","","","Constraints that are added to the circuit","","","","","","Returns the argument unchanged.","","Calls U::from(self)
.","Variables that are looked up in the circuit","","","","","","","","This struct contains all that needs to be kept track of …","","","","","Environment for the constraints (includes lookups). The …","","","","","","Returns the argument unchanged.","","Calls U::from(self)
.","Starts a new Keccak environment for a given hash index and …","Nullifies the Witness and Constraint environments by …","Returns the selector of the current step in standardized …","Entrypoint for the interpreter. It executes one step of …","Current step","","","","","This function updates the next step of the environment …","","Environment for the witness (includes multiplicities)","Writes an integer value to a column of the Keccak witness","Writes a field value to a column of the Keccak witness","This trait contains helper functions for arithmetic …","This trait contains helper functions for boolean …","This trait contains helper functions for the lookups used …","Degree-2 variable encoding whether at least one of the two …","Degree-2 variable encoding whether the input is a boolean …","Degree-2 variable encoding whether the first input is …","Degree-1 variable encoding whether the input is the value …","","Adds a lookup to the Byte table","Adds a lookup to the Pad table","Adds a lookup to the RangeCheck16 table","Adds a lookup to the Reset table","Adds a lookup to the RoundConstants table","Adds a lookup to the Shift table","Degree-1 variable encoding the negation of the input Note: …","Returns a variable representing the value one","Degree-2 variable encoding the OR of two variables, which …","","Returns a variable representing the value two","Returns a variable representing the value 2^x","","Degree-2 variable encoding the XOR of two variables which …","Returns a variable representing the value zero","This trait includes functionalities needed to obtain the …","","","Adds a given Lookup to the environment if the condition …","This function returns a degree-2 variable that is computed …","Returns the block index as a variable","Returns a variable that encodes the idx
-th block of bytes …","Creates a variable from a constant integer","Creates a variable from a constant field element","Adds one KeccakConstraint to the environment if the …","Constrains 332 checks of absorb sponges","Constrains 136 checks of booleanity for some mode flags.","Constrains 200 checks of the chi algorithm in round steps","Constrains 136 checks of correctness of mode flags","Constrains 4 checks of the iota algorithm in round steps","Constrains 6 checks of padding absorb sponges","Constrains 150 checks of the pirho algorithm in round steps","Constrains 389 checks of round steps","Constrains 354 checks of sponge steps","Constrains 16 checks of squeeze sponges","Constrains 35 checks of the theta algorithm in round steps","Creates all 879 constraints/checks to the environment:","Returns the (x,q)-th term of ThetaDenseC, as a variable","Returns the (y,x,q)-th variable of PiRhoDenseE","Returns the (x,q)-th variable of ThetaDenseRotC","Returns the (y,x,q)-th variable of PiRhoDenseRotE","Returns the (x,q)-th variable of ThetaExpandRotC","Returns the (y,x,q)-th variable of PiRhoExpandRotE","Returns a vector of pad bytes flags as variables, with idx
…","This function returns the composed variable from dense …","COLUMN OPERATIONS /// This function returns the composed …","Returns the hash index as a variable","Returns a variable that encodes whether the idx
-th byte of …","Returns the 100 step input variables, which correspond to …","Returns a slice of the input variables of the current step …","Returns a variable that encodes whether the current step …","Returns a degree-1 variable that encodes whether the …","Returns a variable that encodes whether the current step …","Returns a variable that encodes whether the current step …","SELECTOR OPERATIONS /// Returns a degree-2 variable that …","Returns a variable that encodes whether the current step …","Reads a Lookup containing the input of a step and writes a …","When in Squeeze mode, writes a Lookup containing the …","When in Absorb mode, reads Lookups containing the 136 …","Creates all possible lookups to the Keccak constraints …","Adds the 800 lookups required for Chi in the round","Adds the 1 lookup required for Iota in the round","Adds the 700 lookups required for PiRho in the round","Adds the 120 lookups required for Theta in the round","Adds the 601 lookups required for the sponge","Returns a variable that encodes whether the current step …","Returns a degree-1 variable that encodes whether the …","Returns a variable that encodes whether the current step …","Returns a degree-1 variable that encodes whether the …","Returns a variable that encodes whether the current step …","Returns a variable that encodes whether the current step …","Returns the idx
-th new state expanded quarter, as a …","Returns the idx
-th old state expanded quarter, as a …","Returns the 100 step output variables, which correspond to …","Returns a slice of the output variables of the current …","Returns the 136 flags indicating which bytes of the new …","Returns a variable that encodes the bytelength of the …","Returns a variable that encodes the idx
-th chunk of the …","Returns the (x)-th term of ThetaQuotientC, as a variable","Returns the (y,x,q)-th variable of PiRhoQuotientE","Returns the (x,q)-th variable of ThetaRemainderC","Returns the (y,x,q)-th variable of PiRhoRemainderE","Returns a variable that encodes the current round number […","Returns the 4 expanded quarters that encode the round …","Returns the (i,y,x,q)-th variable of ChiShiftsB","Returns the (i,x,q)-th variable of ThetaShiftsC","Returns the (i,y,x,q)-th variable of PiRhoShiftsE","Returns the (i,y,x,q)-th variable of ChiShiftsSum","Returns the idx
-th byte of the sponge, as a variable","Returns the 200 bytes of the sponge, as variables","Returns the idx
-th term of the shifts of the sponge, as a …","Returns the last 32 terms that are added to the new block …","Returns the (y,x,q)-th input of the theta algorithm, as a …","Returns the idx
-th output of a round step as a variable","Returns the step index as a variable","Returns a variable that encodes the value 2^pad_length","Returns the variable corresponding to a given column alias.","Returns the 20 variables corresponding to ThetaDenseC","Returns the 100 variables corresponding to PiRhoDenseE","Returns the 20 variables corresponding to ThetaDenseRotC","Returns the 100 variables corresponding to PiRhoDenseRotE","Returns the 20 variables corresponding to ThetaExpandRotC","Returns the 100 variables corresponding to PiRhoExpandRotE","Returns the 5 variables corresponding to ThetaQuotientC","Returns the 100 variables corresponding to PiRhoQuotientE","Returns the 20 variables corresponding to ThetaRemainderC","Returns the 100 variables corresponding to PiRhoRemainderE","Returns the 400 variables corresponding to ChiShiftsB","Returns the 80 variables corresponding to ThetaShiftsC","Returns the 400 variables corresponding to PiRhoShiftsE","Returns the 400 variables corresponding to ChiShiftsSum","Returns the 400 terms that compose the shifts of the …","Returns the output of an absorb sponge, which is the XOR …","This struct contains all that needs to be kept track of …","","","","","","","","Checks the constraint tag
by checking that the input x
is …","","","","","","Returns the argument unchanged.","","Calls U::from(self)
.","The multiplicities of each lookup entry. Should not be …","The fixed tables used in the Keccak gate","","","","","","","","The full state of the Keccak gate (witness)","","","","","","","","","","Abstract columns (or variables of our multi-variate …","","Represents one line of the execution trace of the virtual …","All the witness columns used in MIPS","The number of columns used for relation witness in the …","The number of witness columns used to store the …","","Number of columns used by the MIPS interpreter to keep …","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Map the column alias to the actual column index.","Map the column alias to the actual column index.","","","","Calls U::from(self)
.","","","","","","","","","The environment keeping the constraints between the …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Return the constraints for the current instruction, …","","","Return the constraints for the selector. Each selector …","","","","Calls U::from(self)
.","","","","","","","","","","","","","This function checks that the preimage is read correctly. …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","An iterator over the variants of ITypeInstruction","","An iterator over the variants of Instruction","","","","An iterator over the variants of JTypeInstruction","","","","","","","","","","","","","","","","","","","","","","","","","A position can be seen as an indexed variable","","","An iterator over the variants of RTypeInstruction","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Access the memory address addr
, adding constraints …","Access the general purpose register with index idx
, adding …","Access the general purpose register with index idx
, adding …","Activate the selector for the given instruction.","Add a constraint to the proof system, asserting that …","","Returns x + y
and the overflow bit, storing the results in …","Allocate a new abstract variable for the current step. The …","","Returns x or y
, storing the result in position
.","Assert that the value x
is boolean, and add a constraint …","Assert that the values x
and y
are equal, and add a …","Assert that the value assert_equals_zero
is 0, and add a …","Extract the bits from the variable x
between highest_bit
…","","","","","","","","","","","","","","","","","Check that the witness value x
is a boolean (0
or 1
); …","Check that the witness values in x
and y
are equal; …","Check that the witness value in assert_equals_zero
is 0; …","","","","","","","","","","","","","","","","","","","","","","","Returns the number of leading 1s in x
, storing the result …","Returns the number of leading 0s in x
, storing the result …","","","","","","","","","","","","","","","","","","","","","Returns (x / y, x % y)
, storing the results in …","Returns (x / y, x % y)
, storing the results in …","","","","","","","","","","","","","Returns 1 if x
is equal to y
, or 0 otherwise, storing the …","","","","","","","","","Fetch the memory value at address addr
and store it in …","Fetch the last ‘access index’ that the memory at …","Fetch the value of the general purpose register with index …","Fetch the last ‘access index’ for the general purpose …","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","Increases the heap pointer by by_amount
if if_is_true
is 1
…","","","","","","","","","","","","","","","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Iterate over the instruction variants","","","","","","","","","","","","","","","","Adds a lookup to the RangeCheck16Lookup table","Adds a lookup to the AtMost4Lookup table","Adds a lookup to the ByteLookup table","Returns ((x * y) >> 32, (x * y) & ((1 << 32) - 1))
, …","Returns ((x * y) >> 32, (x * y) & ((1 << 32) - 1))
, …","Returns x * y
, where x
and y
are treated as integers, …","","","","","","","","","Returns x nor y
, storing the result in position
.","","","","","Returns x or y
, storing the result in position
.","","","","","","","","","Set the memory value at address addr
to value
.","Set the last ‘access index’ for the memory at address …","Set the general purpose register with index idx
to value
.","Set the last ‘access index’ for the general purpose …","Set the last ‘access index’ for the general purpose …","Set the general purpose register with index idx
to value
…","Range checks with 2 lookups to the RangeCheck16Lookup …","Range checks with 1 lookup to the AtMost4Lookup table 0 <= …","","Range checks with 2 lookups to the ByteLookup table that a …","","","","","Request the preimage oracle for len
bytes and store the …","Reset the environment to handle the next instruction","","","","Return the result of shifting x
by by
, storing the result …","Return the result of shifting x
by by
, storing the result …","Return the result of shifting x
by by
, storing the result …","Given a variable x
, this function extends it to a signed …","","","","","Returns x + y
and the underflow bit, storing the results …","Returns 1 if x < y
as unsigned integers, or 0 otherwise, …","Returns 1 if x < y
as signed integers, or 0 otherwise, …","Returns 1 if x
is 0, or 0 otherwise, storing the result in …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns x xor y
, storing the result in position
.","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","Calls U::from(self)
.","","","","","","","","","","","","","","","","","","","","","This represents the internal state of the virtual machine.","","","","","","","","","","","","Returns the argument unchanged.","","","","","","","Calls U::from(self)
.","","","","","","","","","","","","This structure represents the environment the virtual …","Maximum number of memory or register accesses per …","Maximum number of memory accesses per instruction (based …","Maximum number of register accesses per instruction (based …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","","","Calls U::from(self)
.","Calls U::from(self)
.","","","","","","","","","","","Computes what is the non-normalized next instruction …","","The actual number of instructions executed results from …","","","","","","","","","","","","","","","","","","","","","","","","","","","Execute a single step of the MIPS program. Returns the …","","","","","","","","","","","","","","","","","","","","","Number of instructions in the ISA","","","","The minimal number of columns required for the VM","List all columns used by the interpreter","","This module implement an interpreter for the RISCV32 IM …","All the registers used by the ISA","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self)
.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Return the constraints for the current instruction, …","","","Return the constraints for the selector. Each selector …","","","","Calls U::from(self)
.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Format: add rd, rs1, rs2
","Format: addi rd, rs1, imm
","Format: auipc rd,imm
","Format: and rd, rs1, rs2
","Format: andi rd, rs1, imm
","Format: beq rs1, rs2, offset
","Format: bge rs1, rs2, offset
","Format: bgeu rs1, rs2, offset
","Format: blt rs1, rs2, offset
","Format: bltu rs1, rs2, offset
","Format: bne rs1, rs2, offset
","Format: div rd, rs1, rs2
","Format: divu rd, rs1, rs2
","Format: fence
","Format: fence.i
","","An iterator over the variants of IInstruction","","","An iterator over the variants of Instruction","","Format: jal rd,imm
","Format: jalr rd, rs1, imm
","Format: lb rd, offset(rs1)
","Format: lbu rd, offset(rs1)
","Format: lh rd, offset(rs1)
","Format: lhu rd, offset(rs1)
","Format: lui rd,imm
","Format: lw rd, offset(rs1)
","M extension instructions Following …","An iterator over the variants of MInstruction","","Format: mul rd, rs1, rs2
","Format: mulh rd, rs1, rs2
","Format: mulhsu rd, rs1, rs2
","Format: mulhu rd, rs1, rs2
","Format: or rd, rs1, rs2
","Format: ori rd, rs1, imm
","A position can be seen as an indexed variable","","An iterator over the variants of RInstruction","","Format: rem rd, rs1, rs2
","Format: remu rd, rs1, rs2
","","An iterator over the variants of SBInstruction","","","An iterator over the variants of SInstruction","","Format: slt rd, rs1, rs2
","Format: slti rd, rs1, imm
","Format: sltiu rd, rs1, imm
","Format: sltu rd, rs1, rs2
","Format: sll rd, rs1, rs2
","Format: slli rd, rs1, shamt
","Format: sra rd, rs1, rs2
","Format: srai rd, rs1, shamt
","Format: srl rd, rs1, rs2
","Format: srli rd, rs1, shamt
","Format: sb rs2, offset(rs1)
","Format: sh rs2, offset(rs1)
","Format: sw rs2, offset(rs1)
","Format: sub rd, rs1, rs2
","","An iterator over the variants of SyscallInstruction","","","","An iterator over the variants of UInstruction","","An iterator over the variants of UJInstruction","","","","Format: xor rd, rs1, rs2
","Format: xori rd, rs1, imm
","Access the memory address addr
, adding constraints …","Access the general purpose register with index idx
, adding …","Access the general purpose register with index idx
, adding …","Activate the selector for the given instruction.","Add a constraint to the proof system, asserting that …","","Returns x + y
and the overflow bit, storing the results in …","Allocate a new abstract variable for the current step. The …","Returns x or y
, storing the result in position
.","Assert that the value x
is boolean, and add a constraint …","Assert that the values x
and y
are equal, and add a …","Assert that the value assert_equals_zero
is 0, and add a …","Extract the bits from the variable x
between highest_bit
…","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Check that the witness value x
is a boolean (0
or 1
); …","Check that the witness values in x
and y
are equal; …","Check that the witness value in assert_equals_zero
is 0; …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the number of leading 1s in x
, storing the result …","Returns the number of leading 0s in x
, storing the result …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns (x / y, x % y)
, storing the results in …","Returns (x / y, x % y)
, storing the results in …","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns 1 if x
is equal to y
, or 0 otherwise, storing the …","","","","","","","","","","","","","","","","","","","Fetch the memory value at address addr
and store it in …","Fetch the last ‘access index’ that the memory at …","Fetch the value of the general purpose register with index …","Fetch the last ‘access index’ for the general purpose …","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","","","","Increases the heap pointer by by_amount
if if_is_true
is 1
…","","","","","","","","","","","","","","","","","","","","","","Interpret an I-type instruction. The encoding of an I-type …","Interpret an M-type instruction. The encoding of an M-type …","Interpret an R-type instruction. The encoding of an R-type …","Interpret an SB-type instruction. The encoding of an …","Interpret an S-type instruction. The encoding of an S-type …","","Interpret an UJ-type instruction. The encoding of an …","Interpret an U-type instruction. The encoding of an U-type …","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","","","","","","","","","","","Returns x^(-1)
, or 0
if x
is 0
, storing the result in …","","","","","","","","","","","","","","","","","","","","","","Adds a lookup to the RangeCheck16Lookup table","Adds a lookup to the AtMost4Lookup table","Adds a lookup to the ByteLookup table","Returns ((x * y) >> 32
, storing the results in position
.","Returns ((x * y) >> 32, (x * y) & ((1 << 32) - 1))
, …","Returns ((x * y) >> 32, (x * y) & ((1 << 32) - 1))
, …","Returns ((x * y) >> 32
, storing the results in position
.","Returns (x * y) & ((1 << 32) - 1))
, storing the results in …","Returns x * y
, where x
and y
are treated as integers, …","","","","","","","","","","","","","","","","","","","Returns x nor y
, storing the result in position
.","","","","","","","","","","Returns x or y
, storing the result in position
.","","","","","","","","","","","","","","","","","","","Set the memory value at address addr
to value
.","Set the last ‘access index’ for the memory at address …","Set the general purpose register with index idx
to value
.","Set the last ‘access index’ for the general purpose …","Set the last ‘access index’ for the general purpose …","Set the general purpose register with index idx
to value
…","Range checks with 2 lookups to the RangeCheck16Lookup …","","Range checks with 2 lookups to the ByteLookup table that a …","","","","","","","","Return the result of shifting x
by by
, storing the result …","Return the result of shifting x
by by
, storing the result …","Return the result of shifting x
by by
, storing the result …","Given a variable x
, this function extends it to a signed …","","","","","","","","","","Returns x + y
and the underflow bit, storing the results …","Returns 1 if x < y
as unsigned integers, or 0 otherwise, …","Returns 1 if x < y
as signed integers, or 0 otherwise, …","Returns 1 if x
is 0, or 0 otherwise, storing the result in …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns x xor y
, storing the result in position
.","","","","","This represents the internal state of the virtual machine.","","","","","","","","","","","","Returns the argument unchanged.","There are 32 general purpose registers.","","","","","Calls U::from(self)
.","","","","","","","","This structure represents the environment the virtual …","Maximum number of memory or register accesses per …","Maximum number of memory accesses per instruction (based …","Maximum number of register accesses per instruction (based …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","","","","","","","Calls U::from(self)
.","","","","","","","","","","","","","","","The actual number of instructions executed results from …","","","","","","","","","","","","","","","","","","Execute a single step in the RISCV32i program","","","","","","","","","","","","","","","","Elliptic curve group of BN254","Scalar field of BN254","","","","","","","This module defines structures and traits to build and …","","","An iterator over the variants of Challenge","Environment for the decomposable folding protocol, for a …","","Folding instance containing the commitment to a witness of …","Includes the data witness columns and also the dynamic …","","","Reuses the Alphas defined in the example of folding","Blinder used in the polynomial commitment scheme","","","","","","","","","","","","","","","Challenges for the proof. We do use 3 challenges:","","","","","","","","","","","","","Commitments to the witness columns, including the dynamic …","Corresponds to the omega evaluations, for both sides","Corresponds to the evaluations at ω, for both sides","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","","","","","Commitments to the witness columns, for both sides","Commitments to the witness columns, for both sides","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","","","","","","","","","","Corresponds to the zeta*omega evaluations, for both sides …","Corresponds to the evaluations at ζω, for both sides …","","","This method takes an Instance and a commitment to zero and …","This method takes a witness and a vector of evaluations to …","","","","","Structure of the folded circuit","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Map a selector column to the corresponding witness column.","","Map a column alias to the corresponding witness column.","","Calls U::from(self)
.","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Map a column alias to the corresponding witness column.","","Map a selector column to the corresponding witness column.","","Calls U::from(self)
.","","","","","","FIXME: DUMMY FOLD FUNCTION THAT ONLY KEEPS THE LAST …","DecomposableTracer builds traces for some program …","Struct representing a circuit execution trace which is …","The trait Foldable describes structures that can be folded.","","Implement a trace for a single instruction.","Tracer builds traces for some program executions. The …","","","","","","","","","","","","","","","The domain size of the circuit (should coincide with that …","","","Returns a map of constraints that are compatible with …","","Returns the argument unchanged.","Returns the argument unchanged.","Returns a boolean indicating whether the witness for the …","","Initialize a new trace with the given domain size, …","","","","Calls U::from(self)
.","Calls U::from(self)
.","Returns whether the witness for the given selector has …","","","","Create a new decomposable trace with the given domain …","Returns the number of rows that have been instantiated for …","Pad the rows of one opcode with the first row until …","","Pad the rows of one opcode with the given row until …","","Pads the rows of one opcode with zero rows until reaching …","","Pads the rows of the witnesses until reaching the domain …","Add a witness row to the circuit (only for relation …","","Resets the witness after folding","Sets the selector column to all ones, and the rest to all …","Returns the witness for the given selector as a folding …","","","","The traces are indexed by the selector Inside the witness …","","","","","","","","","","The Keccak circuit trace","A Keccak instruction trace","","","","","","","","The MIPS circuit trace","The MIPS instruction trace","","","","","","","","Values from 0 to 4 to check the number of bytes read from …","All values that can be stored in a byte (amortized table, …","Input/Output of Keccak steps","All of the possible lookup table IDs used in the zkVM","","All [1..136] values of possible padding lengths, the value …","Single-column table of all values in the range [0, 2^16)","","Dual-column table of all values in the range [0, 2^16) and …","24-row table with all possible values for round and their …","Single-column table of 2^16 entries with the sparse …","Syscalls communication channel","","","","","","","","","","","","","","Returns the argument unchanged.","","","","Calls U::from(self)
.","","","","","","","","","","","","Degree of the quotient polynomial. We do evaluate all …","Maximum degree of the constraints. It does include the …","Total number of constraints for all instructions, …","","","","","The collection of polynomials (all in evaluation form) and …","","","Challenges from the IOP.","","Constant values required","","","The domains used in the PLONK argument.","","Returns the argument unchanged.","","","","","","","Calls U::from(self)
.","","The value prod_{j != 1} (1 - ω^j)
, used for efficiently …","","","","","","The witness column polynomials. Includes relation columns …","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","","IPA opening proof","","","","","","","","","","","","","","","","","","","","","Errors that can arise when creating a proof","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self)
.","Make a PlonKish proof for the given circuit. As inputs, we …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","","","","","","","","","","","","","","","","","","Enum representing the two different modes of a RAMLookup","Struct containing a RAMLookup","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self)
.","Calls U::from(self)
.","Transforms the current RAMLookup into an equivalent Logup","Creates a new RAMLookup from a mode, a table ID, a …","Returns the numerator corresponding to this lookup in the …","Reads one value when if_is_true
is 1.","Reads one value from a table.","","","","","","","","","","","","Writes one value when if_is_true
is 1.","Writes one value to a table.",""],"i":[0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,2,9,10,13,15,16,18,1,2,3,4,5,6,9,10,13,15,16,18,1,2,3,4,5,6,1,2,3,4,5,6,1,2,3,4,5,6,9,10,4,13,9,10,13,15,16,18,1,2,3,4,5,6,9,10,13,15,16,18,1,2,3,4,5,6,13,15,5,6,9,10,13,15,16,18,1,2,3,4,5,6,16,18,1,5,6,16,16,15,15,6,13,15,16,18,1,2,3,4,5,6,9,10,13,15,16,18,1,2,3,4,5,6,18,9,10,15,15,3,13,3,9,10,13,15,16,18,1,2,3,4,5,6,3,9,10,13,15,16,18,1,2,3,4,5,6,15,15,15,3,2,5,15,3,15,3,15,15,15,3,3,15,13,15,5,3,3,5,15,4,0,3,6,4,1,2,3,4,5,6,15,9,10,13,15,16,18,1,2,3,4,5,6,9,10,13,15,16,18,1,2,3,4,5,6,9,10,13,15,16,18,1,2,3,4,5,6,9,10,13,15,16,18,1,2,3,4,5,6,0,0,0,0,0,0,31,31,31,31,0,31,31,31,0,30,0,31,30,31,31,31,31,31,0,31,0,31,31,31,31,30,31,30,31,30,31,30,31,0,0,30,31,30,31,30,31,0,30,31,30,30,31,31,30,31,30,31,0,30,31,0,30,31,0,0,30,31,30,31,30,31,30,31,30,31,0,37,0,0,35,35,35,0,39,35,35,0,39,39,0,0,0,39,35,35,35,35,35,35,35,35,35,35,34,35,35,34,35,35,35,35,0,0,37,35,0,0,35,35,35,35,35,35,35,35,34,36,37,38,39,40,35,34,36,37,38,39,40,35,34,36,37,38,39,40,35,34,36,37,38,39,40,35,34,37,39,37,39,35,34,36,37,38,39,40,35,34,36,37,38,39,40,35,34,36,37,38,39,40,35,34,37,39,35,35,34,34,37,37,39,39,35,34,36,37,38,39,40,35,34,36,37,38,39,40,35,34,37,39,44,44,44,44,35,34,36,37,38,39,40,35,34,36,37,38,39,40,34,36,38,40,35,34,34,37,39,34,36,38,40,36,38,40,36,38,40,36,38,40,36,38,40,35,34,37,39,36,38,40,35,34,35,34,36,37,38,39,40,35,34,36,37,38,39,40,35,34,36,37,38,39,40,35,34,36,37,38,39,40,35,34,36,37,38,39,40,0,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,0,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,0,0,0,166,166,166,166,166,167,167,167,167,167,167,166,168,166,167,168,168,167,166,168,0,0,54,54,169,169,169,54,54,54,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,54,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,0,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,0,0,0,0,0,0,0,0,0,0,56,0,0,0,0,0,0,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,57,57,57,57,56,56,56,56,56,56,56,56,56,56,0,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,64,68,68,64,64,68,68,68,68,68,68,68,64,64,64,64,0,0,0,0,0,0,0,58,0,0,0,0,0,58,0,0,66,66,64,64,68,68,68,68,68,68,68,68,64,64,64,64,64,64,64,64,64,64,64,68,70,58,0,0,0,0,0,0,0,0,0,64,68,68,64,64,64,64,64,64,64,68,68,68,68,68,68,64,64,64,64,64,64,64,64,64,64,64,64,64,70,64,68,70,70,70,70,70,70,70,70,70,70,70,70,70,70,58,63,64,65,66,67,68,69,58,63,64,65,66,67,68,69,70,70,70,58,63,64,65,66,67,68,69,58,63,64,65,66,67,68,69,58,64,66,68,70,70,70,70,0,64,66,68,58,63,64,65,66,67,68,69,58,63,64,65,66,67,68,69,70,70,58,63,64,65,66,67,68,69,58,64,66,68,70,58,58,64,64,66,66,68,68,70,70,70,70,58,63,64,65,66,67,68,69,58,63,64,65,66,67,68,69,70,70,58,64,66,68,70,70,58,63,64,65,66,67,68,69,70,0,0,0,0,58,63,64,65,66,67,68,69,58,63,65,67,69,70,58,58,64,66,68,58,63,65,67,69,70,70,70,70,70,70,63,65,67,69,63,65,67,69,70,63,65,67,69,70,63,65,67,69,58,64,66,68,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,63,65,67,69,70,70,70,70,58,58,63,64,65,66,67,68,69,58,63,64,65,66,67,68,69,58,63,64,65,66,67,68,69,58,63,64,65,66,67,68,69,70,58,63,64,65,66,67,68,69,70,70,70,70,0,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,0,0,0,0,0,0,0,0,0,0,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,0,0,0,0,0,0,0,0,0,78,78,78,78,78,78,78,78,78,79,78,79,78,78,78,79,79,78,78,78,78,78,79,78,79,78,79,78,79,78,78,78,79,78,78,78,78,78,78,79,78,78,78,78,78,78,78,79,78,78,78,79,78,78,79,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,79,78,79,78,79,78,79,78,78,78,78,79,78,78,78,0,0,0,0,0,0,0,0,0,0,0,0,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,0,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,85,87,93,85,87,91,91,91,91,91,91,99,99,85,85,0,0,82,0,0,0,95,87,87,87,87,87,93,87,0,0,82,99,99,99,99,85,87,101,0,0,82,99,99,0,0,82,0,0,82,85,87,87,85,85,87,85,87,85,87,89,89,89,85,0,0,97,82,0,0,0,0,82,82,101,85,87,101,101,101,101,101,101,101,101,101,101,101,101,101,82,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,82,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,101,101,82,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,82,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,82,85,87,89,91,93,95,97,99,101,101,101,101,85,87,89,91,93,95,97,99,82,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,82,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,101,82,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,82,85,87,89,91,93,95,97,99,101,82,82,85,85,87,87,89,89,91,91,93,93,95,95,97,97,99,99,101,101,101,101,82,82,84,85,85,86,87,87,88,89,89,90,91,91,92,93,93,94,95,95,96,97,98,99,99,100,82,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,101,82,85,87,89,91,93,95,97,99,101,101,82,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,0,0,0,0,0,0,0,0,0,82,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,82,84,86,88,90,92,94,96,98,100,101,101,82,82,85,87,89,91,93,95,97,99,82,84,86,88,90,92,94,96,98,100,101,101,101,101,101,101,101,101,101,84,86,88,90,92,94,96,98,100,84,86,88,90,92,94,96,98,100,101,84,86,88,90,92,94,96,98,100,101,84,86,88,90,92,94,96,98,100,82,85,87,89,91,93,95,97,99,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,84,86,88,90,92,94,96,98,100,101,101,101,101,82,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,82,85,87,89,91,93,95,99,82,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,82,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,82,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,82,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,101,101,101,0,0,0,0,0,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,0,0,0,0,0,0,0,0,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,0,0,0,0,0,0,0,0,0,0,106,0,0,0,0,0,0,106,106,111,111,105,108,106,109,111,113,105,108,106,109,111,113,105,108,111,106,109,111,113,106,109,111,113,105,108,111,113,111,105,108,105,108,106,109,111,113,105,108,106,109,111,113,105,108,106,109,111,113,106,113,106,106,113,113,106,109,111,113,105,108,106,106,109,111,113,111,111,106,113,111,113,105,108,106,109,111,113,105,108,105,108,106,109,111,113,109,106,0,109,0,105,108,109,109,105,108,109,109,111,113,105,108,109,105,108,111,106,109,111,113,105,108,106,109,111,113,105,108,106,109,111,113,105,108,106,109,111,113,105,108,106,109,111,113,113,0,0,0,0,123,123,123,123,123,123,123,123,123,123,123,123,123,124,124,124,123,123,123,123,123,123,123,0,0,0,0,125,125,125,125,125,125,125,125,125,125,125,125,125,126,126,126,125,125,125,125,125,125,125,0,0,0,0,170,0,0,130,131,130,131,130,131,130,131,130,130,131,130,131,130,131,130,131,171,131,130,131,131,131,170,130,131,131,130,131,131,0,130,0,172,131,170,131,170,131,170,131,172,170,131,131,131,171,131,130,131,131,130,131,130,131,130,131,130,131,130,0,0,137,138,137,137,137,138,137,0,0,139,140,139,139,139,140,139,48,48,48,0,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,0,0,0,0,0,0,0,0,142,142,142,142,142,142,142,142,142,142,0,142,142,142,142,142,142,142,142,142,142,142,142,142,142,0,0,0,146,148,153,146,148,153,153,146,148,153,146,148,153,146,148,153,146,148,146,148,153,146,146,148,153,146,146,148,153,148,153,153,153,146,146,146,146,148,153,146,148,153,146,148,153,146,148,153,153,153,149,0,149,149,149,149,149,149,149,149,149,149,149,149,0,149,149,149,149,149,149,149,0,0,0,0,0,155,173,174,155,173,174,155,155,0,155,173,174,155,173,174,155,173,174,155,173,174,77,155,77,155,155,155,155,173,174,155,173,174,155,155,173,155,155,173,174,155,173,174,155,173,174,155,173,174,173,0,0,157,157,157,49,157,49,157,49,157,49,157,49,157,49,157,49,157,49,49,157,49,157,49,157,49,49,49,49,49,49,157,49,49,157,49,157,49,157,49,157,49,49,49,0],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[1,1],[2,2],[3,3],[4,4],[5,5],[6,6],[[]],[[]],[[]],[[]],[[]],[[]],[[[8,[7]]],9],[[[8,[7]]],10],[11,4],0,[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[12,[[14,[13]]]],[12,[[14,[15]]]],[12,[[14,[5]]]],[12,[[14,[6]]]],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[[16,16],17],[[18,18],17],[[1,1],17],[[5,5],17],[[6,6],17],[[],17],[[],17],0,0,[[6,19],[[21,[20]]]],[[13,22],23],[[15,22],23],[[16,22],23],[[18,22],23],[[1,22],23],[[2,22],23],[[3,22],23],[[4,22],23],[[5,22],23],[[6,22],23],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[24,[[14,[18]]]],[9,[[8,[7]]]],[10,[[8,[7]]]],0,0,0,0,0,[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[13,25],14],[[15,25],14],0,0,0,0,0,0,[24,[[14,[1,20]]]],0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[15,20],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],27],[28,3],[29,[[14,[15,20]]]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[30,30],[31,31],[[]],[[]],0,0,[11],[11],[11],[11],[11],[11],0,[[30,30],17],[[31,31],17],[[],17],[[],17],[[],17],[[],17],[[30,22],23],[[31,22],23],[[]],[[]],0,[[],11],[[],11],0,[[]],[[]],[11,[[33,[32]]]],[34,34],[[]],[[]],[[],14],[[],14],[[],14],[[],14],[[],26],[[],26],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[35,35],[34,34],[36,36],[37,37],[38,38],[39,39],[40,40],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[35,35],41],[[34,34],41],[[37,37],41],[[39,39],41],[[],37],[[],39],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[[35,35],17],[[34,34],17],[[37,37],17],[[39,39],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[35,22],23],[[34,22],23],[[36,22],23],[[37,22],23],[[38,22],23],[[39,22],23],[[40,22],23],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[35,42]],[[34,42]],[[37,42]],[[39,42]],[[[44,[43]],35]],[[[44,[43]],34]],[[[44,[43]],34]],[[[44,[43]],35]],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[34],[[]],[[]],[[]],[35,17],[[]],[[],36],[[],38],[[],40],[[],11],[36,11],[38,11],[40,11],[36,21],[38,21],[40,21],[36,21],[38,21],[40,21],[[36,11],21],[[38,11],21],[[40,11],21],[[],45],[[],45],[[],45],[[35,35],[[21,[41]]]],[[34,34],[[21,[41]]]],[[37,37],[[21,[41]]]],[[39,39],[[21,[41]]]],[36],[38],[40],[35,46],[34,46],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[[47,[32]],[49,[48]]]],[[]],[[]],[[[47,[43]]],[[47,[43]]]],[[]],[50],[32],[[[47,[32]],31]],0,[[],[[47,[32]]]],[11],[11],[11],[[[47,[51]],22],23],[[]],[[],11],[[]],0,[[]],[[],14],[[],14],[50],[[],26],[[[47,[32]],35]],[[]],0,[[]],[[]],[[[52,[43]]],[[52,[43]]]],[[]],0,[[],[[52,[32]]]],[11],[11],[11],[[[52,[51]],22],23],[[]],[[],11],[[]],[[50,[53,[7]]],[[52,[32]]]],[[[52,[32]]]],[[[52,[32]]],34],[[[52,[32]]]],0,[[]],[[],14],[[],14],[[],26],[[[52,[32]]]],[[]],0,[[[52,[32]],35,50]],[[[52,[32]],35,32]],0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[8],[[]],[[]],[8],[[]],[[]],[[]],[[]],[8],[[]],[50],[8],[[]],[[]],0,0,0,[[[49,[48]]]],[11],[[]],[11,8],[50],[[]],[31],[34],[[54,34]],[[34,[8,[[8,[8]]]]],[[8,[[8,[8]]]]]],[[54,34]],[[34,[8,[[8,[8]]]]]],[34],[[34,[8,[[8,[8]]]]],[[8,[[8,[8]]]]]],[34],[34],[34],[34,[[8,[[8,[8]]]]]],[34],[[11,11]],[[11,11,11]],[[11,11]],[[11,11,11]],[[11,11]],[[11,11,11]],[11,8],[[53,[21,[11]],11]],[[53,[21,[11]],[21,[11]],[21,[11]],[21,[11]]]],[[]],[11],[[],33],[[],8],[34],[34],[34],[34],[34],[34],[34],[34],[34],[34],[34],[34],[34],[34],[34],[34],[34],[34],[34],[34],[34],[11],[11],[[],33],[[],8],[[],33],[[]],[11],[11],[[11,11,11]],[[11,11]],[[11,11,11]],[[]],[[],33],[[11,11,11,11]],[[11,11,11]],[[11,11,11,11]],[[11,11,11,11]],[11],[[],33],[11],[[],33],[[11,11,11]],[11],[[]],[[]],[35],[[],33],[[],33],[[],33],[[],33],[[],33],[[],33],[[],33],[[],33],[[],33],[[],33],[[],33],[[],33],[[],33],[[],33],[[],33],[11],0,[[[55,[32]],[49,[48]]]],[[]],[[]],[[[55,[43]]],[[55,[43]]]],[[]],[50],[32],[[[55,[32]],31]],[[],[[55,[32]]]],[11],[11],[11],[[[55,[51]],22],23],[[]],[[],11],[[]],0,0,[[]],[[],14],[[],14],[50],[[],26],[[[55,[32]],35]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[56,56],[[]],[[56,56],41],[11],[11],[11],[[56,56],17],[[],17],[[],17],[[56,22],23],[[]],[[56,42]],[[[57,[43]],56]],[[[57,[43]],58]],[[[57,[43]],56]],[[[57,[43]],58]],[[],11],[[]],[56,17],[[56,56],[[21,[41]]]],[56,46],[[]],[[],14],[[],14],[[],26],[[]],0,[[[59,[32]],58]],[[[59,[32]]]],[[[59,[32]],[49,[48]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]],19,19]],[[]],[[]],[[]],[[]],[[]],[19],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[],[[59,[32]]]],[11],[11],[[[59,[32]]]],[[[59,[32]]]],[11],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[]],[[[59,[32]]],[[8,[[62,[[61,[32,60]],46]]]]]],[[[59,[32]]],[[8,[[49,[[62,[[61,[32,60]],46]],48]]]]]],[[[59,[32]]],[[62,[[61,[32,60]],46]]]],[[[59,[32]]],[[8,[[62,[[61,[32,60]],46]]]]]],[[[59,[32]]]],[[],11],[[[59,[32]]]],[[]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[[59,[32]]]],[[],14],[[],14],[[],26],[[[59,[32]]]],[[]],[[[59,[32]]]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[58],[[]],[[[49,[48]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[19,19]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[58,58],[63,63],[64,64],[65,65],[66,66],[67,67],[68,68],[69,69],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[58,58],41],[[64,64],41],[[66,66],41],[[68,68],41],[19],[[]],[[]],[[]],0,[[],64],[[],66],[[],68],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[[]],[[]],[11],[11],[11],[11],[11],[11],[11],[11],[[58,58],17],[[64,64],17],[[66,66],17],[[68,68],17],[[]],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[]],[[]],[[]],[[]],[[58,22],23],[[63,22],23],[[64,22],23],[[65,22],23],[[66,22],23],[[67,22],23],[[68,22],23],[[69,22],23],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[58,42]],[[64,42]],[[66,42]],[[68,42]],[[]],[[]],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[]],[[70,58]],[[70,68]],[[70,66]],[[70,64]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[58],[[]],[[]],[[]],[[]],[[]],[[]],[[],63],[[],65],[[],67],[[],69],[[],11],[63,11],[65,11],[67,11],[69,11],[[]],[[]],[[]],[[]],[[]],[[]],[63,21],[65,21],[67,21],[69,21],[63,21],[65,21],[67,21],[69,21],[[]],[[63,11],21],[[65,11],21],[[67,11],21],[[69,11],21],[[]],[[],45],[[],45],[[],45],[[],45],[[58,58],[[21,[41]]]],[[64,64],[[21,[41]]]],[[66,66],[[21,[41]]]],[[68,68],[[21,[41]]]],[[]],[[]],[[]],[[]],[[]],[[]],[19],[[]],[[]],[19],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[19],[63],[65],[67],[69],[[]],[[]],[[]],[[]],[58,46],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[]],[[]],[71,71],[[]],[19,71],[[],71],[11],[11],[12,[[14,[71]]]],[11],[71,19],[[71,71],17],[[],17],[[],17],[[71,22],23],[[]],0,[[],11],[[]],0,0,0,0,[[71,25],14],0,[[]],[[],14],[[],14],[[],26],[[]],0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[[72,[43]]],[[72,[43]]]],[[]],0,[[],[[72,[73]]]],[11],[11],[12,[[14,[[72,[74]]]]]],[11],[[[72,[51]],22],23],[[]],0,0,0,[[[72,[43]],11]],[[[72,[43]],11]],[[],11],[[]],[72,75],0,0,0,0,[[[72,[76]],25],14],[[]],[[],14],[[],14],[[],26],[[]],0,0,0,0,0,0,0,0,0,[[[78,[32,77]],58]],[[[78,[32,77]]]],[[[78,[32,77]],[49,[48]]]],[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]],19,19]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[79,79],[[]],[19],[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]]]],[[11,15,77],[[78,[32,77]]]],[15,79],[[[78,[32,77]]]],[[],79],[11],[11],[11],[11],[[[78,[32,77]]]],[[[78,[32,77]]]],[11],[11],[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]]]],[[]],[[]],[[[78,[32,77]],19],11],[[[78,[32,77]],19],7],[[[78,[32,77]],19],11],0,0,[[[78,[32,77]]]],[[],11],[[],11],[[[78,[32,77]]]],0,[[]],[[]],[[[78,[32,77]]]],0,0,0,0,0,0,[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]]],50],[[[78,[32,77]]]],[[[78,[32,77]]],50],[[[78,[32,77]]]],0,0,0,0,[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]]]],0,0,[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]]]],0,0,0,0,0,[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]],3,6,4],58],[[[78,[32,77]]]],0,[[[78,[32,77]]]],[[[78,[32,77]]]],[[[78,[32,77]]]],[[]],[[],14],[[],14],[[],14],[[],14],[[],26],[[],26],[[[78,[32,77]],11]],[[[78,[32,77]],11]],[[[78,[32,77]]]],[[]],[[]],[[[78,[32,77]],56,50]],[[[78,[32,77]],56,32]],[[[78,[32,77]]]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[80,80],[[]],[11],[11],[11],[[80,80],17],[[],17],[[],17],[[80,22],23],[[]],[[],11],[[]],[[]],[[],14],[[],14],[[],26],[[]],0,[[[81,[32]],82]],[[[81,[32]]]],[[[81,[32]],[49,[48]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]],19,19]],[[]],[[]],[[]],[[]],[[]],[19],0,[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[],[[81,[32]]]],[11],[11],[[[81,[32]]]],[[[81,[32]]]],[11],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[]],[[[81,[32]]],[[8,[[83,[32]]]]]],[[[81,[32]]],[[8,[[49,[[83,[32]],48]]]]]],[[[81,[32]]],[[83,[32]]]],[[[81,[32]]],[[8,[[83,[32]]]]]],[[[81,[32]]]],[[],11],[[[81,[32]]]],[[]],[[[81,[32]]]],[[[81,[32]]]],0,[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],0,0,[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[[81,[32]]]],[[],14],[[],14],[[],26],[[[81,[32]]]],[[]],[[[81,[32]]]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[82],[[]],[[[49,[48]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[19,19]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[82,82],[84,84],[85,85],[86,86],[87,87],[88,88],[89,89],[90,90],[91,91],[92,92],[93,93],[94,94],[95,95],[96,96],[97,97],[98,98],[99,99],[100,100],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[82,82],41],[[85,85],41],[[87,87],41],[[89,89],41],[[91,91],41],[[93,93],41],[[95,95],41],[[97,97],41],[[99,99],41],[19],[[]],[[]],[[]],[[],85],[[],87],[[],89],[[],91],[[],93],[[],95],[[],97],[[],99],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[[]],[[]],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[[82,82],17],[[85,85],17],[[87,87],17],[[89,89],17],[[91,91],17],[[93,93],17],[[95,95],17],[[97,97],17],[[99,99],17],[[]],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[],17],[[]],[[]],[[]],[[]],[[82,22],23],[[82,22],23],[[84,22],23],[[85,22],23],[[85,22],23],[[86,22],23],[[87,22],23],[[87,22],23],[[88,22],23],[[89,22],23],[[89,22],23],[[90,22],23],[[91,22],23],[[91,22],23],[[92,22],23],[[93,22],23],[[93,22],23],[[94,22],23],[[95,22],23],[[95,22],23],[[96,22],23],[[97,22],23],[[98,22],23],[[99,22],23],[[99,22],23],[[100,22],23],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[82,42]],[[85,42]],[[87,42]],[[89,42]],[[91,42]],[[93,42]],[[95,42]],[[97,42]],[[99,42]],[[]],[[]],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[]],[[101,82]],[[101,87]],[[101,99]],[[101,85]],[[101,91]],[[101,89]],[[101,97]],[[101,95]],[[101,93]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[82],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],84],[[],86],[[],88],[[],90],[[],92],[[],94],[[],96],[[],98],[[],100],[[],11],[84,11],[86,11],[88,11],[90,11],[92,11],[94,11],[96,11],[98,11],[100,11],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[84,21],[86,21],[88,21],[90,21],[92,21],[94,21],[96,21],[98,21],[100,21],[84,21],[86,21],[88,21],[90,21],[92,21],[94,21],[96,21],[98,21],[100,21],[[]],[[84,11],21],[[86,11],21],[[88,11],21],[[90,11],21],[[92,11],21],[[94,11],21],[[96,11],21],[[98,11],21],[[100,11],21],[[]],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[],45],[[82,82],[[21,[41]]]],[[85,85],[[21,[41]]]],[[87,87],[[21,[41]]]],[[89,89],[[21,[41]]]],[[91,91],[[21,[41]]]],[[93,93],[[21,[41]]]],[[95,95],[[21,[41]]]],[[97,97],[[21,[41]]]],[[99,99],[[21,[41]]]],[[]],[[]],[[]],[[]],[[]],[[]],[19],[[]],[19],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[19],[84],[86],[88],[90],[92],[94],[96],[98],[100],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],20],[[],20],[[],20],[[],20],[[],20],[[],20],[[],20],[[],20],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,[[]],[[]],[[[102,[43]]],[[102,[43]]]],[[]],0,[[],[[102,[73]]]],[11],[11],[12,[[14,[[102,[74]]]]]],[11],[[[102,[51]],22],23],[[]],0,0,[[[102,[43]],11]],[[[102,[43]],11]],[[],11],[[]],0,[[[102,[76]],25],14],[[]],[[],14],[[],14],[[],26],[[]],0,0,0,0,0,0,0,0,[[[103,[32]],82]],[[[103,[32]]]],[[[103,[32]],[49,[48]]]],[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]],19,19]],[[]],[[]],[[]],[[]],[[]],[19],[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]]]],[[11,15],[[103,[32]]]],[[[103,[32]]]],[11],[11],[[[103,[32]]]],[[[103,[32]]]],[11],[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]]]],[[]],[[[103,[32]],19],11],[[[103,[32]],19],7],[[[103,[32]],19],11],0,[[[103,[32]]]],[[],11],[[[103,[32]]]],0,[[]],[[[103,[32]]]],[[[103,[32]]]],0,0,0,0,[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]]],50],[[[103,[32]]]],[[[103,[32]]],50],[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]]]],0,0,[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]]]],0,0,0,[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]]],82],[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]]]],[[[103,[32]]]],[[],14],[[],14],[[],26],[[[103,[32]],11]],[[[103,[32]],11]],[[[103,[32]]]],[[]],[[[103,[32]],80,50]],[[[103,[32]],80,32]],[[[103,[32]]]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[105,[104,43]],106,107]],[[[108,[104,43]],106,107]],0,[106,106],[109,109],[[[111,[[0,[43,110]]]]],[[111,[[0,[43,110]]]]]],[[[113,[[0,[43,112]]]]],[[113,[[0,[43,112]]]]]],[[]],[[]],[[]],[[]],[[[105,[104,43]],114,107],53],[[[108,[104,43]],114,107],53],[[[111,[110]],[111,[110]]],[[111,[110]]]],[[[113,[112]],[113,[112]],112],[[113,[112]]]],0,0,0,[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[[106,106],17],[[[113,[[0,[115,112]]]],[113,[[0,[115,112]]]]],17],[[],17],[[],17],[[],17],[[],17],[[106,22],23],[[109,22],23],[[[111,[[0,[51,110]]]],22],23],[[[113,[[0,[51,112]]]],22],23],[[]],[[]],[[]],[60,106],[[]],[[]],[[]],[[[111,[110]]],116],[[[111,[110]]]],[[106,42]],[[[113,[[0,[117,112]]]],42]],[[[111,[110]],106]],[[[113,[118]],46]],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],109],0,[109,11],0,[[[33,[111]],[33,[113]]],[[105,[104,43]]]],[[[33,[111]],[33,[113]]],[[108,[104,43]]]],[109,21],[109,21],0,0,[[109,11],21],[[],45],[[],119],[[[121,[120]]],122],[[[105,[104,43]],107],53],[[[108,[104,43]],107],53],[109],0,0,[[[111,[110]]]],[[]],[[]],[[]],[[]],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,[[]],[[]],[123,123],[[]],[11],[11],[11],[[123,123],17],[[],17],[[],17],[[123,22],23],[[]],[[123,42]],[[124,34]],[[124,35]],[[124,46]],[[],11],[[]],[[]],[[],14],[[],14],[[],26],[[]],0,0,0,0,[[]],[[]],[125,125],[[]],[11],[11],[11],[[125,125],17],[[],17],[[],17],[[125,22],23],[[]],[[125,42]],[[126,46]],[[126,56]],[[126,58]],[[],11],[[]],[[]],[[],14],[[],14],[[],26],[[]],[[127,[128,[48]],[129,[8]]]],0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[[130,[[0,[43,104]]]]],[[130,[[0,[43,104]]]]]],[[[131,[[0,[43,104]]]]],[[131,[[0,[43,104]]]]]],[[]],[[]],0,[11],[11],[11],[11],0,0,[11],[11],[[],[[133,[[8,[132]]]]]],[[[131,[104]]],[[133,[[8,[[132,[104]]]]]]]],[[]],[[]],[[[131,[104]]],17],[[[131,[104]]]],[11],[[],11],[[],11],[11,[[131,[104]]]],[[]],[[]],[[[131,[104]]],17],0,0,0,[11],[[[131,[104]]],11],[[],11],[[[131,[104]]],11],[33,11],[[[131,[104]],33],11],[[],11],[[[131,[104]]],11],[[]],[33],[[[131,[104]],33]],[[[131,[104]]]],[[[131,[104]],11]],[[120,[135,[134]]]],[[[131,[104]],136,120,[135,[134]]]],[[]],[[]],0,[[],14],[[],14],[[],14],[[],14],[[],26],[[],26],[[]],[[]],0,0,0,[[11,34,52],137],[[11,52],138],[137,11],[[137,33],11],[137,11],[138],[[137,33]],0,0,[[11,58,59],139],[[11,59],140],[139,11],[[139,33],11],[139,11],[140],[[139,33]],0,0,0,0,0,0,0,0,0,0,0,0,[[],[[8,[48]]]],[[]],[[]],[48,48],[[]],[[48,48],41],[11],[11],[11],[[48,48],17],[[],17],[[],17],[[48,22],23],[[]],[19,48],[[48,42]],[[],11],[[]],[48,17],[[48,[53,[141]]],[[21,[11]]]],[48,11],[[48,48],[[21,[41]]]],[48,17],[[]],[48,19],[[],14],[[],14],[[],26],[[]],0,0,0,0,0,0,0,0,[[]],[[]],0,[[[142,[112]]],143],0,[11],[11],0,[11],[[]],[[],[[8,[46]]]],[[[142,[112]]],[[144,[112]]]],[[[142,[112]]],[[21,[[121,[112,[120,[112]]]]]]]],[[[142,[112]]],[[145,[112]]]],[[[142,[112]],143],[[120,[112]]]],[[],11],[[]],[[[142,[112]]],112],0,[[],14],[[],14],[[],26],[[[142,[112]]],[[121,[112,[120,[112]]]]]],[[]],0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],0,[11],[11],[11],[11],[11],[11],[11],[11],[11],0,0,[[]],[[]],[[]],[[[146,[33]],46],21],[[],11],[[],11],[[],11],0,[[]],[[]],[[]],[11,[[148,[147]]]],0,0,0,0,0,0,[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],26],[[],26],[[],26],[[]],[[]],[[]],0,0,0,0,[[]],[[]],[149,149],[[]],[11],[11],[11],[[149,22],23],[[149,22],23],[[]],[[],11],[[]],[[127,[150,[147]],[148,[147]],[53,[[62,[[61,[60]],46]]]],[0,[151,152]]],[[14,[[153,[147]],149]]]],[154],[[]],[[],20],[[],14],[[],14],[[],26],[[]],[[127,[53,[[62,[[61,[60]],46]]]],[153,[147]]],17],0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],0,[[[21,[2]]],155],[[],21],[11],[11],[11],[11],[11],[11],[11],[11],[11],[[]],[[]],[[]],[[[33,[7]]],9],[[155,[33,[7]]],9],[10],[[155,10]],0,0,[[],11],[[],11],[[],11],[[]],[[]],[[]],0,0,0,[155,156],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],26],[[],26],[[],26],[[]],[[]],[[]],0,0,0,0,0,[[]],[[]],[[]],[[]],[157,157],[[[49,[43,[0,[43,158]]]]],[[49,[43,[0,[43,158]]]]]],[[]],[[]],[11],[11],[11],[11],[11],[11],[[157,22],23],[[[49,[[0,[159,32]],158]],22],23],[[[49,[51,[0,[51,158]]]],22],23],[[]],[[]],[[],11],[[],11],[[]],[[]],[[[49,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]],158]]],[[165,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]],158]]]],[[157,158,[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]],[53,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]]]]],[[49,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]],158]]]],[[[49,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]],158]]],[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]]]],[[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]],158,[8,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]]]]],[[49,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]],158]]]],[[158,[8,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]]]]],[[49,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]],158]]]],[[]],[[]],[[],20],[[],14],[[],14],[[],14],[[],14],[[],26],[[],26],[[]],[[]],[[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]],158,[8,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]]]]],[[49,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]],158]]]],[[158,[8,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]]]]],[[49,[[0,[43,[160,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[161,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],[162,[[0,[43,[160,[[0,[43,160,161,162,51,163,164]]]],[161,[[0,[43,160,161,162,51,163,164]]]],[162,[[0,[43,160,161,162,51,163,164]]]],51,163,164]]]],51,163,164]]]],51,163,164]],158]]]],[11,20]],"c":[],"p":[[4,"StepFrequency"],[3,"HostProgram"],[3,"VmConfiguration"],[3,"Start"],[3,"Symbol"],[3,"Meta"],[15,"u8"],[3,"Vec"],[3,"Preimage"],[3,"Hint"],[15,"usize"],[8,"Deserializer"],[3,"Page"],[4,"Result"],[3,"State"],[3,"ParsePreimageKeyError"],[15,"bool"],[3,"PreimageKey"],[15,"u32"],[3,"String"],[4,"Option"],[3,"Formatter"],[6,"Result"],[15,"str"],[8,"Serializer"],[3,"TypeId"],[3,"Command"],[3,"ArgMatches"],[3,"Path"],[4,"Error"],[4,"Constraint"],[8,"Field"],[15,"array"],[4,"Steps"],[4,"ColumnAlias"],[3,"StepsIter"],[4,"Sponges"],[3,"SpongesIter"],[4,"Absorbs"],[3,"AbsorbsIter"],[4,"Ordering"],[8,"Hasher"],[8,"Clone"],[6,"KeccakWitness"],[3,"IterBridge"],[4,"Column"],[3,"Env"],[4,"LookupTableIDs"],[3,"RAMLookup"],[15,"u64"],[8,"Debug"],[3,"KeccakEnv"],[15,"slice"],[8,"Interpreter"],[3,"Env"],[4,"ColumnAlias"],[6,"MIPSWitness"],[4,"Instruction"],[3,"Env"],[4,"BerkeleyChallengeTerm"],[6,"ConstantExpr"],[6,"Expr"],[3,"InstructionIter"],[4,"RTypeInstruction"],[3,"RTypeInstructionIter"],[4,"JTypeInstruction"],[3,"JTypeInstructionIter"],[4,"ITypeInstruction"],[3,"ITypeInstructionIter"],[8,"InterpreterEnv"],[3,"InstructionParts"],[3,"Registers"],[8,"Default"],[8,"Deserialize"],[8,"Iterator"],[8,"Serialize"],[8,"PreImageOracleT"],[3,"Env"],[3,"SyscallEnv"],[4,"Column"],[3,"Env"],[4,"Instruction"],[6,"E"],[3,"InstructionIter"],[4,"RInstruction"],[3,"RInstructionIter"],[4,"IInstruction"],[3,"IInstructionIter"],[4,"SInstruction"],[3,"SInstructionIter"],[4,"SBInstruction"],[3,"SBInstructionIter"],[4,"UInstruction"],[3,"UInstructionIter"],[4,"UJInstruction"],[3,"UJInstructionIter"],[4,"SyscallInstruction"],[3,"SyscallInstructionIter"],[4,"MInstruction"],[3,"MInstructionIter"],[8,"InterpreterEnv"],[3,"Registers"],[3,"Env"],[8,"FoldingConfig"],[3,"DecomposedFoldingEnvironment"],[4,"Challenge"],[4,"Side"],[3,"FoldingEnvironment"],[3,"ChallengeIter"],[8,"CommitmentCurve"],[3,"FoldingInstance"],[8,"FftField"],[3,"FoldingWitness"],[4,"CurrOrNext"],[8,"PartialEq"],[4,"Alphas"],[8,"Hash"],[6,"Fp"],[3,"RelaxedInstance"],[3,"Radix2EvaluationDomain"],[3,"Evaluations"],[3,"RelaxedWitness"],[3,"KeccakConfig"],[6,"KeccakFoldingWitness"],[3,"DecomposableMIPSFoldingConfig"],[6,"MIPSFoldingWitness"],[3,"EvaluationDomains"],[3,"ProofInputs"],[3,"Witness"],[3,"Trace"],[3,"DecomposedTrace"],[4,"FoldingCompatibleExpr"],[3,"BTreeMap"],[6,"Pairing"],[3,"PairingSRS"],[8,"FqSponge"],[6,"KeccakTrace"],[6,"DecomposedKeccakTrace"],[6,"MIPSTrace"],[6,"DecomposedMIPSTrace"],[8,"PrimeField"],[3,"ColumnEnvironment"],[4,"Domain"],[3,"BerkeleyChallenges"],[3,"Constants"],[3,"WitnessColumns"],[8,"KimchiCurve"],[3,"ProofInputs"],[4,"ProverError"],[3,"SRS"],[8,"RngCore"],[8,"CryptoRng"],[3,"Proof"],[3,"Demand"],[3,"PreImageOracle"],[3,"Child"],[4,"LookupMode"],[8,"LookupTableID"],[8,"Display"],[8,"Add"],[8,"Sub"],[8,"Mul"],[8,"One"],[8,"Zero"],[3,"Logup"],[8,"BoolHelpers"],[8,"LogupHelpers"],[8,"ArithHelpers"],[8,"KeccakInterpreter"],[8,"Tracer"],[8,"Foldable"],[8,"DecomposableTracer"],[3,"ReadWrite"],[3,"RW"]]},\
"pickles_o1vm":{"doc":"","t":"RF","n":["DOMAIN_SIZE","main"],"q":[[0,"pickles_o1vm"]],"d":["",""],"i":[0,0],"f":[0,[[],1]],"c":[],"p":[[3,"ExitCode"]]},\
"poly_commitment":{"doc":"","t":"ICIQKKKKKKKAKAKKAAALKKKAKKDDIIDQQDFLFFMLLLLLLLLALLMLLLLLFLLFMMMLLLLLLLLLLLLLLLLLLMMMMLLLLLLLLLLLLLLLLLLLLLLLKMMLLLLFMFFLKLLLLLLLLLLLLLLLLLLLDLLLLLLLLLLLLLLLLLMLLLLLMLNELLLLLLLLLLLLLLLLLLLDLLLLLLLLLLLLLLLLLLLLLDNENDDLLLLLLLLLAMMLLLLLFLLLLLLLLLLLMLLLLLLLLLLLLLLFLLLLLLLLLMLLMLLLLLLLLMMLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLMMDLLMLLLLLLLLLMLLMLLLLLMMDDMLLLLLLLLLFLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLMLLLLLLLLLLLMLLLLF","n":["OpenProof","PolyComm","SRS","SRS","blinding_commitment","commit","commit_custom","commit_evaluations","commit_evaluations_custom","commit_evaluations_non_hiding","commit_non_hiding","commitment","create","error","get_lagrange_basis","get_lagrange_basis_from_domain_size","hash_map_cache","ipa","kzg","mask","mask_custom","max_poly_size","open","pbt_srs","size","verify","BatchEvaluationProof","BlindedCommitment","CommitmentCurve","EndoCurve","Evaluation","Map","Params","PolyComm","absorb_commitment","add","b_poly","b_poly_coefficients","blinders","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","caml","chunk_blinding","chunk_commitment","chunks","clone","clone","clone_into","clone_into","combine","combine_commitments","combine_one","combine_one_endo","combined_inner_product","combined_inner_product","commitment","commitment","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deserialize","deserialize","deserialize_as","drop","drop","drop","drop","eq","equivalent","equivalent","evalscale","evaluation_points","evaluations","evaluations","fmt","fmt","from","from","from","from","from","from","get_first_chunk","init","init","init","init","into","into","into","into","into_iter","is_empty","len","map","multi_scalar_mul","new","of_coordinates","opening","polyscale","scale","serialize","serialize","serialize_as","shift_scalar","sponge","squeeze_challenge","squeeze_prechallenge","sub","to_coordinates","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","zip","CamlPolyComm","borrow","borrow_mut","clone","clone_into","deref","deref_mut","drop","fmt","from","from","from","from_value","init","into","into_value","ocaml_binding","ocaml_desc","shifted","to_owned","try_from","try_into","type_id","unique_id","unshifted","vzip","BlindersDontMatch","CommitmentError","borrow","borrow_mut","clone","clone_into","deref","deref_mut","drop","fmt","fmt","from","init","into","provide","to_owned","to_string","try_from","try_into","type_id","vzip","HashMapCache","borrow","borrow_mut","clone","clone_into","contains_key","default","deref","deref_mut","drop","fmt","from","get_or_generate","init","into","new","new_from_hashmap","to_owned","try_from","try_into","type_id","vzip","Challenges","DensePolynomial","DensePolynomialOrEvaluations","Evaluations","OpeningProof","SRS","blinding_commitment","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","caml","chal","chal_inv","challenges","clone","clone","clone_into","clone_into","combine_polys","commit","commit_custom","commit_evaluations","commit_evaluations_custom","commit_evaluations_non_hiding","commit_non_hiding","create","create_parallel","create_trusted_setup","default","default","delta","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deserialize","deserialize","drop","drop","drop","drop","endos","eq","eq","fmt","fmt","from","from","from","from","from","g","get_lagrange_basis","get_lagrange_basis_from_domain_size","h","init","init","init","init","into","into","into","into","lagrange_bases","lr","mask","mask_custom","max_poly_size","open","open","prechallenges","serialize","serialize","sg","size","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","verify","verify","vzip","vzip","vzip","vzip","z1","z2","CamlOpeningProof","borrow","borrow_mut","delta","deref","deref_mut","drop","from","from","from_value","init","into","into_value","lr","ocaml_binding","ocaml_desc","sg","try_from","try_into","type_id","unique_id","vzip","z1","z2","KZGProof","PairingSRS","blinding","blinding_commitment","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","combine_evaluations","commit","commit_custom","commit_evaluations","commit_evaluations_custom","commit_evaluations_non_hiding","commit_non_hiding","create","create","create_trusted_setup","default","default","deref","deref","deref_mut","deref_mut","deserialize","deserialize","drop","drop","eq","fmt","fmt","from","from","full_srs","get_lagrange_basis","get_lagrange_basis_from_domain_size","init","init","into","into","mask","mask_custom","max_poly_size","open","quotient","serialize","serialize","size","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","verifier_srs","verify","verify","vzip","vzip","test_regression_commit_non_hiding_expected_number_of_chunks"],"q":[[0,"poly_commitment"],[26,"poly_commitment::commitment"],[140,"poly_commitment::commitment::caml"],[166,"poly_commitment::error"],[187,"poly_commitment::hash_map_cache"],[209,"poly_commitment::ipa"],[315,"poly_commitment::ipa::caml"],[339,"poly_commitment::kzg"],[404,"poly_commitment::pbt_srs"]],"d":["","","","","Get the group element used for blinding commitments","Commits a polynomial, potentially splitting the result in …","Commit to a polynomial, with custom blinding factors. It …","Commit to evaluations with blinding factors, generated …","Commit to evaluations with custom blinding factors. It is …","Commit to evaluations, without blinding factors. It is …","This function commits a polynomial using the SRS’ basis …","This module implements Dlog-based polynomial commitment …","Create an SRS of size depth
.","","Compute commitments to the lagrange basis corresponding to …","Same as get_lagrange_basis
but only using the domain size.","","This module contains the implementation of the polynomial …","This module implements the KZG protocol described in the …","Turns a non-hiding polynomial commitment into a hidding …","Same as SRS::mask except that you can pass the blinders …","The maximum polynomial degree that can be committed to","Create an opening proof for a batch of polynomials. The …","This module defines Property-based tests for the SRS trait.","","Verify the opening proof","Contains the batch evaluation","A commitment to a polynomial with some blinding factors.","A useful trait extending AffineRepr for commitments. …","A trait extending CommitmentCurve for endomorphisms. …","Contains the evaluation of a polynomial commitment at a …","","","Represent a polynomial commitment when the type is …","","","Returns (1 + chal[-1] x)(1 + chal[-2] x^2)(1 + chal[-3] …","","","","","","","","","","","","Multiplies each blinding chunk of f with powers of zeta^n","Multiplies each commitment chunk of f with powers of zeta^n","","","","","","","This function populates the parameters scalars
and points
. …","Combine where x1 = one","Combine where x1 = one","Computes the linearization of the evaluations of a …","","The commitment of the polynomial being evaluated. Note …","","","","","","","","","","","","","","","","","","","","A challenge to aggregate multiple evaluation points.","The actual evaluation points. Each field evaluations
of …","Contains an evaluation table. For instance, for vanilla …","A list of evaluations, each supposed to correspond to a …","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","Return only the first chunk Getting this single value is …","","","","","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","","Returns true
if the commitment is empty.","Returns the number of chunks.","","Performs a multi-scalar multiplication between scalars elm
…","","","The opening proof.","A challenge to combine polynomials. Powers of this point …","","","","","Inside the circuit, we have a specialized scalar …","Sponge used to coin and absorb values and simulate …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","","","Calls U::from(self)
.","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self)
.","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","Calls U::from(self)
.","","","","","","","","Commitment round challenges (endo mapped) and their …","Polynomial represented by its coefficients","Represent a polynomial either with its coefficients or its …","Polynomial represented by its evaluations over a domain D","","","","","","","","","","","","","","","Same as prechallenges
, but maps scalar challenges using the","","","","","Combine the polynomials using a scalar (polyscale
), …","","","","","","","","This function creates SRS instance for circuits with …","This function creates a trusted-setup SRS instance for …","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","The vector of group elements for committing to polynomials …","","","A group element used for blinding commitments","","","","","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Commitments to Lagrange bases, per domain size","Vector of rounds of L & R commitments","Turns a non-hiding polynomial commitment into a hidding …","","The maximum polynomial degree that can be committed to","","","Computes a log-sized vector of scalar challenges for …","","","A final folded commitment base","","","","","","","","","","","","","","","","This function verifies a batch of polynomial commitment …","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","Calls U::from(self)
.","","vector of rounds of L & R commitments","","","","","","","","","","","","Define a structured reference string (i.e. SRS) for the …","A blinding factor used to hide the polynomial, if necessary","","","","","","","","","","Combine the (chunked) evaluations of multiple polynomials. …","","","","","","","Create a KZG proof. Parameters:","","Create a trusted setup for the KZG protocol. The setup is …","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","The full SRS is the one used by the prover. Can be seen as …","","","","","Calls U::from(self)
.","Calls U::from(self)
.","","","","Parameters:","","","","","","","","","","","","","SRS to be used by the verifier. Can be seen as the “…","","Verify a proof. Note that it only works for two elements …","","",""],"i":[0,0,0,64,65,65,65,65,65,65,65,0,65,0,65,65,0,0,0,65,65,65,64,0,65,64,0,0,0,0,0,20,20,0,0,6,0,0,5,21,15,6,5,21,15,6,5,0,6,6,6,6,5,6,5,60,0,60,60,0,15,21,5,21,15,6,5,21,15,6,5,6,5,6,21,15,6,5,6,6,6,15,15,21,15,6,5,21,15,6,6,6,5,6,21,15,6,5,21,15,6,5,6,6,6,6,6,6,20,15,15,6,6,5,6,0,15,0,0,6,20,6,5,21,15,6,5,21,15,6,5,21,15,6,5,21,15,6,5,6,0,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,7,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,0,66,0,66,0,0,55,66,57,55,56,66,57,55,56,0,57,57,56,55,56,55,56,0,55,55,55,55,55,55,55,55,55,55,56,56,66,57,55,56,66,57,55,56,55,56,66,57,55,56,0,55,56,55,56,66,57,55,56,56,55,55,55,55,66,57,55,56,66,57,55,56,55,56,55,55,55,55,56,56,55,56,56,55,55,56,66,57,55,56,66,57,55,56,66,57,55,56,55,56,66,57,55,56,56,56,0,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,0,0,63,62,63,62,63,62,63,62,63,62,0,62,62,62,62,62,62,63,62,62,63,62,63,62,63,62,63,62,63,62,62,63,62,63,62,62,62,62,63,62,63,62,62,62,62,63,63,63,62,62,63,62,63,62,63,62,63,62,62,63,63,63,62,0],"f":[0,0,0,0,[[]],[[1,2,[0,[3,4]]],5],[[1,2,6],[[8,[5,7]]]],[[9,[10,[9]],[0,[3,4]]],5],[[9,[10,[9]],6],[[8,[5,7]]]],[[9,[10,[9]]],6],[[1,2],6],0,[2],0,[9,[[11,[6]]]],[2,[[11,[6]]]],0,0,0,[[6,[0,[3,4]]],5],[[6,6],[[8,[5,7]]]],[[],2],[[12,12,[0,[13,14]],[0,[3,4]]]],0,[[],2],[[[12,[[15,[14]]]],[0,[3,4]]],16],0,0,0,0,0,0,0,0,[[[14,[17,13,18]],[6,[13]]]],[[[6,[19]],[6,[19]]],[[6,[19]]]],[[[12,[17]],17],17],[[[12,[17]]],[[11,[17]]]],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[[6,[17]],17],17],[[[6,[20]]],[[6,[20]]]],0,[[[6,[13]]],[[6,[13]]]],[[[5,[[0,[20,13]]]]],[[5,[[0,[20,13]]]]]],[[]],[[]],[[12,12],11],[[[12,[[21,[20]]]],11,[11,[20]]]],[[12,12],11],[[12,12,22],11],[[18,18,[12,[[11,[[11,[18]]]]]]],18],0,0,0,[2],[2],[2],[2],[2],[2],[2],[2],[23,[[8,[[6,[[0,[24,25]]]]]]]],[23,[[8,[[5,[[0,[20,26]]]]]]]],[23,[[8,[6]]]],[2],[2],[2],[2],[[[6,[27]],[6,[27]]],16],[[],16],[[],16],0,0,0,0,[[[6,[28]],29],30],[[[5,[[0,[20,28]]]],29],30],[[]],[[]],[[]],[31,[[6,[[0,[19,32]]]]]],[31,[[6,[[0,[19,32,32]]]]]],[[]],[[[6,[[0,[33,13,24,25]]]]],[[0,[33,13,24,25]]]],[[],2],[[],2],[[],2],[[],2],[[]],[[]],[[]],[[]],[6],[[[6,[[0,[33,13,24,25]]]]],16],[[[6,[[0,[33,13,24,25]]]]],2],[[[6,[[0,[33,13,24,25]]]],34],[[6,[[0,[24,25]]]]]],[[[12,[[6,[19]]]],12],[[6,[19]]]],[11,6],[[]],0,0,[[[6,[19]]],[[6,[19]]]],[[[6,[[0,[24,25]]]],35],8],[[[5,[[0,[20,36]]]],35],8],[[6,35],8],[[]],0,[[18,[14,[17,18]]],18],[[[14,[17,17]]],[[22,[17]]]],[[[6,[[0,[19,37]]]],[6,[[0,[19,37]]]]],[[6,[[0,[19,37]]]]]],[[],38],[[]],[[]],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],39],[[],39],[[],39],[[],39],[[]],[[]],[[]],[[]],[[[6,[[0,[33,13,24,25]]]],[6,[[0,[33,24,25]]]]],[[38,[6]]]],0,[[]],[[]],[[[31,[13]]],[[31,[13]]]],[[]],[2],[2],[2],[[[31,[28]],29],30],[[]],[[[6,[19]]],[[31,[[0,[[32,[19]],[32,[19]]]]]]]],[[[6,[19]]],[[31,[[32,[19]]]]]],[40,[[31,[41]]]],[[],2],[[]],[[[31,[42]],43],40],[[44,[38,[45]],16],46],[[44,[12,[45]]],46],0,[[]],[[],8],[[],8],[[],39],[[],47],0,[[]],0,0,[[]],[[]],[7,7],[[]],[2],[2],[2],[[7,29],30],[[7,29],30],[[]],[[],2],[[]],[48],[[]],[[],46],[[],8],[[],8],[[],39],[[]],0,[[]],[[]],[[[50,[[0,[13,49]],13]]],[[50,[[0,[13,49]],13]]]],[[]],[[[50,[[0,[49,51]]]],[0,[49,51]]],16],[[],[[50,[[0,[52,49]],52]]]],[2],[2],[2],[[[50,[[0,[28,49]],28]],29],30],[[]],[[[50,[[0,[49,51]]]],[0,[49,51]],53]],[[],2],[[]],[[],[[50,[[0,[49,51]]]]]],[[[54,[[0,[49,51]]]]],[[50,[[0,[49,51]]]]]],[[]],[[],8],[[],8],[[],39],[[]],0,0,0,0,0,0,[[[55,[20]]],20],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,[[[56,[19]],[14,[19]]],57],[[[55,[13]]],[[55,[13]]]],[[[56,[[0,[13,19]]]]],[[56,[[0,[13,19]]]]]],[[]],[[]],[[12,2]],[[[55,[20]],1,2,[0,[3,4]]],[[5,[20]]]],[[[55,[20]],1,2,6],[[8,[[5,[20]],7]]]],[[[55,[20]],9,[10,[9]],[0,[3,4]]],[[5,[20]]]],[[[55,[20]],9,[10,[9]],6],[[8,[[5,[20]],7]]]],[[[55,[20]],9,[10,[9]]],[[6,[20]]]],[[[55,[20]],1,2],[[6,[20]]]],[2,[[55,[20]]]],[2,[[55,[20]]]],[2,[[55,[20]]]],[[],[[55,[52]]]],[[],[[56,[[0,[52,19]]]]]],0,[2],[2],[2],[2],[2],[2],[2],[2],[23,[[8,[[55,[[0,[24,25]]]]]]]],[23,[[8,[[56,[[0,[24,25,19]]]]]]]],[2],[2],[2],[2],[[]],[[[55,[27]],[55,[27]]],16],[[[56,[[0,[27,19]]]],[56,[[0,[27,19]]]]],16],[[[55,[28]],29],30],[[[56,[[0,[28,19]]]],29],30],[[]],[[]],[[]],[[]],[[[59,[[58,[19]],58]]],[[56,[19]]]],0,[[[55,[20]],9],[[11,[[6,[20]]]]]],[[[55,[20]],2],[[11,[[6,[20]]]]]],0,[[],2],[[],2],[[],2],[[],2],[[]],[[]],[[]],[[]],0,0,[[[55,[20]],[6,[20]],[0,[3,4]]],[[5,[20]]]],[[[55,[20]],[6,[20]],6],[[8,[[5,[20]],7]]]],[[[55,[20]]],2],[[[55,[60,20]],12,12,[0,[13,[14,[60,20]]]],[0,[3,4]]],[[56,[60,20]]]],[[12,12,[0,[13,[14,[[0,[19,20,60]]]]]],[0,[3,4]]],[[56,[[0,[19,20,60]]]]]],[[[56,[19]],[14,[19]]],[[11,[22]]]],[[[55,[[0,[24,25]]]],35],8],[[[56,[[0,[24,25,19]]]],35],8],0,[[[55,[20]]],2],[[]],[[]],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],39],[[],39],[[],39],[[],39],[[[55,[20]],[12,[[15,[20,[14,[20]],[56,[20]]]]]],[0,[3,4]]],16],[[[12,[[15,[[0,[19,20,60]],[14,[[0,[19,20,60]]]],[56,[[0,[19,20,60]]]]]]]],[0,[3,4]]],16],[[]],[[]],[[]],[[]],0,0,0,[[]],[[]],0,[2],[2],[2],[[[56,[19]]],[[59,[[32,[19]],32]]]],[[]],[40,[[59,[41,41]]]],[[],2],[[]],[[[59,[42,42]],43],40],0,[[44,[38,[45]],16],46],[[44,[12,[45]]],46],0,[[],8],[[],8],[[],39],[[],47],[[]],0,0,0,0,0,[[[62,[61]]],20],[[]],[[]],[[]],[[]],[[[63,[61]]],[[63,[61]]]],[[[62,[61]]],[[62,[61]]]],[[]],[[]],[[[11,[[21,[20]]]]],11],[[[62,[61]],[1,[18]],2,[0,[3,4]]],[[5,[20]]]],[[[62,[61]],1,2,6],[[8,[[5,[20]],7]]]],[[[62,[61]],9,[10,[9]],[0,[3,4]]],[[5,[20]]]],[[[62,[61]],9,[10,[9]],6],[[8,[[5,[20]],7]]]],[[[62,[61]],9,[10,[9]]],[[6,[20]]]],[[[62,[61]],1,2],[[6,[20]]]],[[[62,[61]],12,[12,[18]],18],[[38,[[63,[61]]]]]],[2,[[62,[61]]]],[[18,2],[[62,[61]]]],[[],[[63,[61]]]],[[],[[62,[61]]]],[2],[2],[2],[2],[23,[[8,[[63,[61]]]]]],[23,[[8,[[62,[61]]]]]],[2],[2],[[[62,[[0,[27,61]]]],[62,[[0,[27,61]]]]],16],[[[63,[[0,[28,61]]]],29],30],[[[62,[[0,[28,61]]]],29],30],[[]],[[]],0,[[[62,[61]],9],[[11,[[6,[20]]]]]],[[[62,[61]],2],[[11,[[6,[20]]]]]],[[],2],[[],2],[[]],[[]],[[[62,[61]],[6,[20]],[0,[3,4]]],[[5,[20]]]],[[[62,[61]],[6,[20]],6],[[8,[[5,[20]],7]]]],[[[62,[61]]],2],[[12,12,[0,[13,[14,[20,18]]]],[0,[3,4]]],[[63,[61]]]],0,[[[63,[61]],35],8],[[[62,[61]],35],8],[[[62,[61]]],2],[[]],[[]],[[],8],[[],8],[[],8],[[],8],[[],39],[[],39],0,[[[12,[[15,[20,[14,[20,18]],[63,[61]]]]]],[0,[3,4]]],16],[[[63,[61]],[62,[61]],[11,[[21,[20]]]],18,[12,[18]]],16],[[]],[[]],[[]]],"c":[],"p":[[3,"DensePolynomial"],[15,"usize"],[8,"RngCore"],[8,"CryptoRng"],[3,"BlindedCommitment"],[3,"PolyComm"],[4,"CommitmentError"],[4,"Result"],[3,"Radix2EvaluationDomain"],[3,"Evaluations"],[3,"Vec"],[15,"slice"],[8,"Clone"],[8,"FqSponge"],[3,"BatchEvaluationProof"],[15,"bool"],[8,"Field"],[8,"PrimeField"],[8,"AffineRepr"],[8,"CommitmentCurve"],[3,"Evaluation"],[3,"ScalarChallenge"],[8,"Deserializer"],[8,"CanonicalDeserialize"],[8,"CanonicalSerialize"],[8,"Deserialize"],[8,"PartialEq"],[8,"Debug"],[3,"Formatter"],[6,"Result"],[3,"CamlPolyComm"],[8,"From"],[8,"Copy"],[8,"FnMut"],[8,"Serializer"],[8,"Serialize"],[8,"Sub"],[4,"Option"],[3,"TypeId"],[4,"Value"],[8,"FromValue"],[8,"IntoValue"],[3,"OCamlRuntime"],[3,"Env"],[15,"str"],[3,"String"],[15,"u128"],[3,"Demand"],[8,"Hash"],[3,"HashMapCache"],[8,"Eq"],[8,"Default"],[8,"FnOnce"],[3,"HashMap"],[3,"SRS"],[3,"OpeningProof"],[3,"Challenges"],[8,"Into"],[3,"CamlOpeningProof"],[8,"EndoCurve"],[8,"Pairing"],[3,"PairingSRS"],[3,"KZGProof"],[8,"OpenProof"],[8,"SRS"],[4,"DensePolynomialOrEvaluations"]]},\
"test_optimism_preimage_read":{"doc":"","t":"F","n":["main"],"q":[[0,"test_optimism_preimage_read"]],"d":[""],"i":[0],"f":[[[],1]],"c":[],"p":[[3,"ExitCode"]]},\
diff --git a/rustdoc/settings.html b/rustdoc/settings.html
index 78856e0fed..9718890d0b 100644
--- a/rustdoc/settings.html
+++ b/rustdoc/settings.html
@@ -1 +1 @@
-Rustdoc settings Rustdoc settings
Back
\ No newline at end of file
+Rustdoc settings Rustdoc settings
Back
\ No newline at end of file
diff --git a/rustdoc/src/o1vm/interpreters/riscv32im/constraints.rs.html b/rustdoc/src/o1vm/interpreters/riscv32im/constraints.rs.html
index f569bf0e66..c97d43772f 100644
--- a/rustdoc/src/o1vm/interpreters/riscv32im/constraints.rs.html
+++ b/rustdoc/src/o1vm/interpreters/riscv32im/constraints.rs.html
@@ -452,6 +452,15 @@
452
453
454
+455
+456
+457
+458
+459
+460
+461
+462
+463
use super::{
column::{Column, E},
interpreter::{Instruction, InterpreterEnv},
@@ -799,6 +808,15 @@
self.variable(position)
}
+ unsafe fn mul_hi(
+ &mut self,
+ _x: &Self::Variable,
+ _y: &Self::Variable,
+ position: Self::Position,
+ ) -> Self::Variable {
+ self.variable(position)
+ }
+
unsafe fn mul_hi_lo(
&mut self,
_x: &Self::Variable,
diff --git a/rustdoc/src/o1vm/interpreters/riscv32im/interpreter.rs.html b/rustdoc/src/o1vm/interpreters/riscv32im/interpreter.rs.html
index ac5952841a..5a7cbff3db 100644
--- a/rustdoc/src/o1vm/interpreters/riscv32im/interpreter.rs.html
+++ b/rustdoc/src/o1vm/interpreters/riscv32im/interpreter.rs.html
@@ -2206,6 +2206,20 @@
2206
2207
2208
+2209
+2210
+2211
+2212
+2213
+2214
+2215
+2216
+2217
+2218
+2219
+2220
+2221
+2222
//! This module implement an interpreter for the RISCV32 IM instruction set
//! architecture.
//!
@@ -3453,6 +3467,20 @@
position_lo: Self::Position,
) -> (Self::Variable, Self::Variable);
+ /// Returns `((x * y) >> 32`, storing the results in `position`.
+ ///
+ /// # Safety
+ ///
+ /// There are no constraints on the returned values; callers must manually add constraints to
+ /// ensure that the pair of returned values correspond to the given values `x` and `y`, and
+ /// that they fall within the desired range.
+ unsafe fn mul_hi(
+ &mut self,
+ x: &Self::Variable,
+ y: &Self::Variable,
+ position: Self::Position,
+ ) -> Self::Variable;
+
/// Returns `((x * y) >> 32, (x * y) & ((1 << 32) - 1))`, storing the results in `position_hi`
/// and `position_lo` respectively.
///
diff --git a/rustdoc/src/o1vm/interpreters/riscv32im/witness.rs.html b/rustdoc/src/o1vm/interpreters/riscv32im/witness.rs.html
index e420da837f..5b82a0aca4 100644
--- a/rustdoc/src/o1vm/interpreters/riscv32im/witness.rs.html
+++ b/rustdoc/src/o1vm/interpreters/riscv32im/witness.rs.html
@@ -872,6 +872,21 @@
872
873
874
+875
+876
+877
+878
+879
+880
+881
+882
+883
+884
+885
+886
+887
+888
+889
// TODO: do we want to be more restrictive and refer to the number of accesses
// to the SAME register/memory addrss?
use super::{
@@ -1364,6 +1379,21 @@
(hi, lo)
}
+ unsafe fn mul_hi(
+ &mut self,
+ x: &Self::Variable,
+ y: &Self::Variable,
+ position: Self::Position,
+ ) -> Self::Variable {
+ let x: u32 = (*x).try_into().unwrap();
+ let y: u32 = (*y).try_into().unwrap();
+ let res = (x as u64) * (y as u64);
+ let res = (res >> 32) as u32;
+ let res = res as u64;
+ self.write_column(position, res);
+ res
+ }
+
unsafe fn mul_hi_lo(
&mut self,
x: &Self::Variable,