From 5e93314d10cf1a4b9a4c6938afe810c5ed41a4f9 Mon Sep 17 00:00:00 2001 From: dannywillems Date: Mon, 2 Dec 2024 14:08:04 +0000 Subject: [PATCH] deploy: d5079834c075ddd1c0297378556492bdd3824927 --- .../expressions/trait.FoldingColumnTrait.js | 2 +- .../instance_witness/trait.Foldable.js | 2 +- .../folding/instance_witness/trait.Witness.js | 2 +- rustdoc/kimchi_msm/columns/enum.Column.html | 2 +- .../kimchi_msm/witness/struct.Witness.html | 10 ++-- .../riscv32im/constraints/index.html | 2 +- .../riscv32im/constraints/struct.Env.html | 29 +++++---- .../interpreter/fn.interpret_instruction.html | 2 +- .../interpreter/fn.interpret_itype.html | 2 +- .../interpreter/fn.interpret_mtype.html | 2 +- .../interpreter/fn.interpret_rtype.html | 2 +- .../interpreter/fn.interpret_sbtype.html | 2 +- .../interpreter/fn.interpret_stype.html | 2 +- .../interpreter/fn.interpret_syscall.html | 2 +- .../interpreter/fn.interpret_ujtype.html | 2 +- .../interpreter/fn.interpret_utype.html | 2 +- .../riscv32im/interpreter/index.html | 2 +- .../interpreter/trait.InterpreterEnv.html | 60 ++++++++++++------- .../interpreters/riscv32im/witness/index.html | 2 +- .../riscv32im/witness/struct.Env.html | 29 +++++---- rustdoc/search-index.js | 2 +- .../riscv32im/constraints.rs.html | 18 ++++++ .../riscv32im/interpreter.rs.html | 28 +++++++++ .../interpreters/riscv32im/witness.rs.html | 30 ++++++++++ 24 files changed, 170 insertions(+), 68 deletions(-) diff --git a/rustdoc/implementors/folding/expressions/trait.FoldingColumnTrait.js b/rustdoc/implementors/folding/expressions/trait.FoldingColumnTrait.js index 4abcd07a73..63df9c2b82 100644 --- a/rustdoc/implementors/folding/expressions/trait.FoldingColumnTrait.js +++ b/rustdoc/implementors/folding/expressions/trait.FoldingColumnTrait.js @@ -1,5 +1,5 @@ (function() {var implementors = { "folding":[], -"kimchi_msm":[["impl FoldingColumnTrait for Column"]], +"kimchi_msm":[["impl FoldingColumnTrait for Column"]], "o1vm":[["impl FoldingColumnTrait for KeccakColumn"],["impl FoldingColumnTrait for MIPSColumn"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/implementors/folding/instance_witness/trait.Foldable.js b/rustdoc/implementors/folding/instance_witness/trait.Foldable.js index 116a1b7624..094f7e6a7a 100644 --- a/rustdoc/implementors/folding/instance_witness/trait.Foldable.js +++ b/rustdoc/implementors/folding/instance_witness/trait.Foldable.js @@ -1,6 +1,6 @@ (function() {var implementors = { "folding":[], "ivc":[["impl<G: CommitmentCurve, const N_COL: usize, const N_CHALS: usize, const N_ALPHAS: usize> Foldable<<G as AffineRepr>::ScalarField> for PlonkishInstance<G, N_COL, N_CHALS, N_ALPHAS>"],["impl<const N_COL: usize, const N_FSEL: usize, F: Field, Evals: CombinableEvals<F>> Foldable<F> for PlonkishWitnessGeneric<N_COL, N_FSEL, F, Evals>"]], -"kimchi_msm":[["impl<const N: usize, F: FftField> Foldable<F> for Witness<N, Evaluations<F, Radix2EvaluationDomain<F>>>"]], +"kimchi_msm":[["impl<const N: usize, F: FftField> Foldable<F> for Witness<N, Evaluations<F, Radix2EvaluationDomain<F>>>"]], "o1vm":[["impl<const N: usize, G: CommitmentCurve> Foldable<<G as AffineRepr>::ScalarField> for FoldingInstance<N, G>"],["impl<const N: usize, F: FftField> Foldable<F> for FoldingWitness<N, F>"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/implementors/folding/instance_witness/trait.Witness.js b/rustdoc/implementors/folding/instance_witness/trait.Witness.js index 456a3bd816..11c667506e 100644 --- a/rustdoc/implementors/folding/instance_witness/trait.Witness.js +++ b/rustdoc/implementors/folding/instance_witness/trait.Witness.js @@ -1,6 +1,6 @@ (function() {var implementors = { "folding":[], "ivc":[["impl<const N_COL: usize, const N_FSEL: usize, Curve: CommitmentCurve, Evals: CombinableEvals<Curve::ScalarField>> Witness<Curve> for PlonkishWitnessGeneric<N_COL, N_FSEL, Curve::ScalarField, Evals>"]], -"kimchi_msm":[["impl<const N: usize, G: CommitmentCurve> Witness<G> for Witness<N, Evaluations<G::ScalarField, Radix2EvaluationDomain<G::ScalarField>>>"]], +"kimchi_msm":[["impl<const N: usize, G: CommitmentCurve> Witness<G> for Witness<N, Evaluations<G::ScalarField, Radix2EvaluationDomain<G::ScalarField>>>"]], "o1vm":[["impl<const N: usize, G: CommitmentCurve> Witness<G> for FoldingWitness<N, G::ScalarField>"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/kimchi_msm/columns/enum.Column.html b/rustdoc/kimchi_msm/columns/enum.Column.html index 930f9b7db1..b6ee919653 100644 --- a/rustdoc/kimchi_msm/columns/enum.Column.html +++ b/rustdoc/kimchi_msm/columns/enum.Column.html @@ -17,7 +17,7 @@
§

LookupAggregation

The lookup aggregation, i.e. phi

§

LookupFixedTable(u32)

The fixed tables. The parameter is considered to the indexed table.

Implementations§

source§

impl Column

source

pub fn add_rel_offset(self, offset: usize) -> Column

Adds offset if the column is Relation. Fails otherwise.

-

Trait Implementations§

source§

impl Clone for Column

source§

fn clone(&self) -> Column

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Column

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl FoldingColumnTrait for Column

source§

fn is_witness(&self) -> bool

§

fn degree(&self) -> Degree

Return the degree of the column Read more
source§

impl FormattedOutput for Column

source§

fn latex(&self, _cache: &mut HashMap<CacheId, Self>) -> String

source§

fn text(&self, _cache: &mut HashMap<CacheId, Self>) -> String

source§

fn ocaml(&self, _cache: &mut HashMap<CacheId, Self>) -> String

source§

fn is_alpha(&self) -> bool

source§

impl Hash for Column

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where +

Trait Implementations§

source§

impl Clone for Column

source§

fn clone(&self) -> Column

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Column

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl FoldingColumnTrait for Column

source§

fn is_witness(&self) -> bool

source§

fn degree(&self) -> Degree

Return the degree of the column Read more
source§

impl FormattedOutput for Column

source§

fn latex(&self, _cache: &mut HashMap<CacheId, Self>) -> String

source§

fn text(&self, _cache: &mut HashMap<CacheId, Self>) -> String

source§

fn ocaml(&self, _cache: &mut HashMap<CacheId, Self>) -> String

source§

fn is_alpha(&self) -> bool

source§

impl Hash for Column

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq<Column> for Column

source§

fn eq(&self, other: &Column) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always diff --git a/rustdoc/kimchi_msm/witness/struct.Witness.html b/rustdoc/kimchi_msm/witness/struct.Witness.html index d6a8787cfd..bca4c1075f 100644 --- a/rustdoc/kimchi_msm/witness/struct.Witness.html +++ b/rustdoc/kimchi_msm/witness/struct.Witness.html @@ -10,7 +10,7 @@

Fields§

§cols: Box<[T; N_WIT]>

A witness row is represented by an array of N witness columns When T is a vector, then the witness describes the rows of the circuit.

-

Implementations§

source§

impl<const N_WIT: usize, T> Witness<N_WIT, T>

source

pub fn len(&self) -> usize

source

pub fn is_empty(&self) -> bool

source§

impl<const N_WIT: usize, T: Zero + Clone> Witness<N_WIT, Vec<T>>

source

pub fn zero_vec(domain_size: usize) -> Self

source

pub fn to_pub_columns<const NPUB: usize>(&self) -> Witness<NPUB, Vec<T>>

Trait Implementations§

source§

impl<const N_WIT: usize, T: Clone> Clone for Witness<N_WIT, T>

source§

fn clone(&self) -> Witness<N_WIT, T>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<const N_WIT: usize, T: Debug> Debug for Witness<N_WIT, T>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<const N_WIT: usize, T: Zero + Clone> Default for Witness<N_WIT, T>

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<const N: usize, F: FftField> Foldable<F> for Witness<N, Evaluations<F, Radix2EvaluationDomain<F>>>

source§

fn combine(a: Self, b: Self, challenge: F) -> Self

Combine two objects ‘a’ and ‘b’ into a new object using the challenge.
source§

impl<const N_WIT: usize, G: Send + Debug> FromParallelIterator<G> for Witness<N_WIT, G>

source§

fn from_par_iter<I>(par_iter: I) -> Selfwhere +

Implementations§

source§

impl<const N_WIT: usize, T> Witness<N_WIT, T>

source

pub fn len(&self) -> usize

source

pub fn is_empty(&self) -> bool

source§

impl<const N_WIT: usize, T: Zero + Clone> Witness<N_WIT, Vec<T>>

source

pub fn zero_vec(domain_size: usize) -> Self

source

pub fn to_pub_columns<const NPUB: usize>(&self) -> Witness<NPUB, Vec<T>>

Trait Implementations§

source§

impl<const N_WIT: usize, T: Clone> Clone for Witness<N_WIT, T>

source§

fn clone(&self) -> Witness<N_WIT, T>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<const N_WIT: usize, T: Debug> Debug for Witness<N_WIT, T>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<const N_WIT: usize, T: Zero + Clone> Default for Witness<N_WIT, T>

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<const N: usize, F: FftField> Foldable<F> for Witness<N, Evaluations<F, Radix2EvaluationDomain<F>>>

source§

fn combine(a: Self, b: Self, challenge: F) -> Self

Combine two objects ‘a’ and ‘b’ into a new object using the challenge.
source§

impl<const N_WIT: usize, G: Send + Debug> FromParallelIterator<G> for Witness<N_WIT, G>

source§

fn from_par_iter<I>(par_iter: I) -> Selfwhere I: IntoParallelIterator<Item = G>,

Creates an instance of the collection from the parallel iterator par_iter. Read more
source§

impl<const N_WIT: usize, T: Hash> Hash for Witness<N_WIT, T>

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl<const N_WIT: usize, T> Index<usize> for Witness<N_WIT, T>

§

type Output = T

The returned type after indexing.
source§

fn index(&self, index: usize) -> &Self::Output

Performs the indexing (container[index]) operation. Read more
source§

impl<'lt, const N_WIT: usize, G> IntoIterator for &'lt Witness<N_WIT, G>

§

type Item = &'lt G

The type of the elements being iterated over.
§

type IntoIter = IntoIter<&'lt G, Global>

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
source§

impl<const N_WIT: usize, F: Clone> IntoIterator for Witness<N_WIT, F>

source§

fn into_iter(self) -> Self::IntoIter

Iterate over the columns in the circuit.

@@ -20,7 +20,7 @@ Vec<G>: IntoParallelIterator,
source§

fn into_par_iter(self) -> Self::Iter

Iterate over the columns in the circuit, in parallel.

§

type Iter = <Vec<G, Global> as IntoParallelIterator>::Iter

The parallel iterator type that will be created.
§

type Item = <Vec<G, Global> as IntoParallelIterator>::Item

The type of item that the parallel iterator will produce.
source§

impl<const N_WIT: usize, T: PartialEq> PartialEq<Witness<N_WIT, T>> for Witness<N_WIT, T>

source§

fn eq(&self, other: &Witness<N_WIT, T>) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl<const N_WIT: usize, T> TryFrom<Vec<T, Global>> for Witness<N_WIT, T>

§

type Error = String

The type returned in the event of a conversion error.
source§

fn try_from(value: Vec<T>) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl<const N_WIT: usize, T: Eq> Eq for Witness<N_WIT, T>

source§

impl<const N_WIT: usize, T> StructuralEq for Witness<N_WIT, T>

source§

impl<const N_WIT: usize, T> StructuralPartialEq for Witness<N_WIT, T>

source§

impl<const N: usize, G: CommitmentCurve> Witness<G> for Witness<N, Evaluations<G::ScalarField, Radix2EvaluationDomain<G::ScalarField>>>

Auto Trait Implementations§

§

impl<const N_WIT: usize, T> RefUnwindSafe for Witness<N_WIT, T>where +sufficient, and should not be overridden without very good reason.

source§

impl<const N_WIT: usize, T> TryFrom<Vec<T, Global>> for Witness<N_WIT, T>

§

type Error = String

The type returned in the event of a conversion error.
source§

fn try_from(value: Vec<T>) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl<const N_WIT: usize, T: Eq> Eq for Witness<N_WIT, T>

source§

impl<const N_WIT: usize, T> StructuralEq for Witness<N_WIT, T>

source§

impl<const N_WIT: usize, T> StructuralPartialEq for Witness<N_WIT, T>

source§

impl<const N: usize, G: CommitmentCurve> Witness<G> for Witness<N, Evaluations<G::ScalarField, Radix2EvaluationDomain<G::ScalarField>>>

Auto Trait Implementations§

§

impl<const N_WIT: usize, T> RefUnwindSafe for Witness<N_WIT, T>where T: RefUnwindSafe,

§

impl<const N_WIT: usize, T> Send for Witness<N_WIT, T>where T: Send,

§

impl<const N_WIT: usize, T> Sync for Witness<N_WIT, T>where T: Sync,

§

impl<const N_WIT: usize, T> Unpin for Witness<N_WIT, T>

§

impl<const N_WIT: usize, T> UnwindSafe for Witness<N_WIT, T>where @@ -42,12 +42,12 @@ &'data mut I: IntoParallelIterator,

§

type Iter = <&'data mut I as IntoParallelIterator>::Iter

The type of iterator that will be created.
§

type Item = <&'data mut I as IntoParallelIterator>::Item

The type of item that will be produced; this is typically an &'data mut T reference.
§

fn par_iter_mut( &'data mut self -) -> <I as IntoParallelRefMutIterator<'data>>::Iter

Creates the parallel iterator from self. Read more
§

impl<T> Pointable for T

§

const ALIGN: usize = mem::align_of::<T>()

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<G, W> RelaxableWitness<G, W> for Wwhere +) -> <I as IntoParallelRefMutIterator<'data>>::Iter

Creates the parallel iterator from self. Read more
§

impl<T> Pointable for T

§

const ALIGN: usize = mem::align_of::<T>()

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<G, W> RelaxableWitness<G, W> for Wwhere G: CommitmentCurve, - W: Witness<G>,

§

fn relax( + W: Witness<G>,

source§

fn relax( self, zero_poly: &Evaluations<<G as AffineRepr>::ScalarField, Radix2EvaluationDomain<<G as AffineRepr>::ScalarField>> -) -> RelaxedWitness<G, W>

This method takes a witness and a vector of evaluations to the zero +) -> RelaxedWitness<G, W>

This method takes a witness and a vector of evaluations to the zero polynomial, returning a relaxed witness which is composed by the extended witness and the error vector that is set to the zero polynomial.

diff --git a/rustdoc/o1vm/interpreters/riscv32im/constraints/index.html b/rustdoc/o1vm/interpreters/riscv32im/constraints/index.html index b35d74dec7..556a27f494 100644 --- a/rustdoc/o1vm/interpreters/riscv32im/constraints/index.html +++ b/rustdoc/o1vm/interpreters/riscv32im/constraints/index.html @@ -1 +1 @@ -o1vm::interpreters::riscv32im::constraints - Rust
\ No newline at end of file +o1vm::interpreters::riscv32im::constraints - Rust
\ No newline at end of file diff --git a/rustdoc/o1vm/interpreters/riscv32im/constraints/struct.Env.html b/rustdoc/o1vm/interpreters/riscv32im/constraints/struct.Env.html index f8216f7d09..9661f11f23 100644 --- a/rustdoc/o1vm/interpreters/riscv32im/constraints/struct.Env.html +++ b/rustdoc/o1vm/interpreters/riscv32im/constraints/struct.Env.html @@ -3,10 +3,10 @@ pub lookups: Vec<RAMLookup<E<F>, LookupTableIDs>>, pub constraints: Vec<E<F>>, pub selector: Option<E<F>>, -}

Fields§

§scratch_state_idx: usize§lookups: Vec<RAMLookup<E<F>, LookupTableIDs>>§constraints: Vec<E<F>>§selector: Option<E<F>>

Implementations§

source§

impl<Fp: Field> Env<Fp>

source

pub fn get_selector_constraints(&self) -> Vec<E<Fp>>

Return the constraints for the selector. +}

Fields§

§scratch_state_idx: usize§lookups: Vec<RAMLookup<E<F>, LookupTableIDs>>§constraints: Vec<E<F>>§selector: Option<E<F>>

Implementations§

source§

impl<Fp: Field> Env<Fp>

source

pub fn get_selector_constraints(&self) -> Vec<E<Fp>>

Return the constraints for the selector. Each selector must be a boolean.

-
source

pub fn get_selector(&self) -> E<Fp>

source

pub fn get_constraints(&self) -> Vec<E<Fp>>

Return the constraints for the current instruction, without the selector

-
source

pub fn get_lookups(&self) -> Vec<RAMLookup<E<Fp>, LookupTableIDs>>

Trait Implementations§

source§

impl<Fp: Field> Default for Env<Fp>

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<Fp: Field> InterpreterEnv for Env<Fp>

§

type Position = Column

In the concrete implementation for the constraints, the interpreter will +

source

pub fn get_selector(&self) -> E<Fp>

source

pub fn get_constraints(&self) -> Vec<E<Fp>>

Return the constraints for the current instruction, without the selector

+
source

pub fn get_lookups(&self) -> Vec<RAMLookup<E<Fp>, LookupTableIDs>>

Trait Implementations§

source§

impl<Fp: Field> Default for Env<Fp>

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<Fp: Field> InterpreterEnv for Env<Fp>

§

type Position = Column

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.

source§

fn alloc_scratch(&mut self) -> Self::Position

Allocate a new abstract variable for the current step. @@ -155,40 +155,45 @@ _x: &Self::Variable, _y: &Self::Variable, position: Self::Position -) -> Self::Variable
Returns ((x * y) >> 32, storing the results in position. Read more
source§

unsafe fn mul_hi_lo( +) -> Self::Variable

Returns ((x * y) >> 32, storing the results in position. Read more
source§

unsafe fn mul_lo( + &mut self, + _x: &Self::Variable, + _y: &Self::Variable, + position: Self::Position +) -> Self::Variable

Returns (x * y) & ((1 << 32) - 1)), storing the results in position. Read more
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 more
source§

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 more
source§

unsafe fn divmod( +position_remainder respectively. Read more

source§

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 more
source§

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

Returns the number of leading 0s in x, storing the result in position. Read more
source§

unsafe fn count_leading_ones( +) -> Self::Variable

Returns the number of leading 0s in x, storing the result in position. Read more
source§

unsafe fn count_leading_ones( &mut self, _x: &Self::Variable, position: Self::Position -) -> Self::Variable

Returns the number of leading 1s in x, storing the result in position. Read more
source§

fn copy( +) -> Self::Variable

Returns the number of leading 1s in x, storing the result in position. Read more
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)

Set the general purpose register with index idx to value. Read more
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)

Set the general purpose register with index idx to value. Read more
source§

unsafe fn push_register_access( &mut self, idx: &Self::Variable, value: Self::Variable @@ -219,12 +224,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 more
source§

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 table
source§

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 table
source§

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 table
source§

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 table
source§

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.
source§

fn sign_extend(&mut self, x: &Self::Variable, bitlength: u32) -> Self::Variable

Given a variable x, this function extends it to a signed integer of +value of the heap pointer.
source§

fn 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.

Auto Trait Implementations§

§

impl<F> RefUnwindSafe for Env<F>where F: RefUnwindSafe,

§

impl<F> Send for Env<F>

§

impl<F> Sync for Env<F>

§

impl<F> Unpin for Env<F>where F: Unpin,

§

impl<F> UnwindSafe for Env<F>where diff --git a/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_instruction.html b/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_instruction.html index 25e10f9623..5116c8acc3 100644 --- a/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_instruction.html +++ b/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_instruction.html @@ -1,4 +1,4 @@ -interpret_instruction in o1vm::interpreters::riscv32im::interpreter - Rust
pub fn interpret_instruction<Env: InterpreterEnv>(
+interpret_instruction in o1vm::interpreters::riscv32im::interpreter - Rust
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 c5370ac404..014e62abb0 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
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

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 336f002521..b9979612eb 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
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

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 0eee066074..bdb2ac201a 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
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

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 aaf0f98a48..21752c37e1 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
pub fn interpret_sbtype<Env: InterpreterEnv>(
+interpret_sbtype in o1vm::interpreters::riscv32im::interpreter - Rust
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 3295fcc187..f7c40f8b92 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

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

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 264fd72d3a..5a4e03ebc7 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
pub fn interpret_syscall<Env: InterpreterEnv>(
+interpret_syscall in o1vm::interpreters::riscv32im::interpreter - Rust
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 e1c09ca2b8..4742df6419 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
pub fn interpret_ujtype<Env: InterpreterEnv>(
+interpret_ujtype in o1vm::interpreters::riscv32im::interpreter - Rust
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 647962cee6..a2c035e7d8 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

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

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 3be68587ae..5cac3d3ab4 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
Expand description

This module implement an interpreter for the RISCV32 IM instruction set +o1vm::interpreters::riscv32im::interpreter - Rust

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 c2325bb47a..1bee00f8a5 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
pub trait InterpreterEnv {
+InterpreterEnv in o1vm::interpreters::riscv32im::interpreter - Rust
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 74 methods // Required methods +
Show 75 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); @@ -178,6 +178,12 @@ y: &Self::Variable, position: Self::Position ) -> Self::Variable; + unsafe fn mul_lo( + &mut self, + x: &Self::Variable, + y: &Self::Variable, + position: Self::Position + ) -> Self::Variable; unsafe fn mul_hi_lo( &mut self, x: &Self::Variable, @@ -555,7 +561,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.

-
source

unsafe fn mul_hi_lo( +

source

unsafe fn mul_lo( + &mut self, + x: &Self::Variable, + y: &Self::Variable, + position: Self::Position +) -> Self::Variable

Returns (x * y) & ((1 << 32) - 1)), 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.

+
source

unsafe fn mul_hi_lo( &mut self, x: &Self::Variable, y: &Self::Variable, @@ -563,11 +579,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.

-
source

unsafe fn divmod_signed( +

source

unsafe fn divmod_signed( &mut self, x: &Self::Variable, y: &Self::Variable, @@ -575,11 +591,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.

-
source

unsafe fn divmod( +

source

unsafe fn divmod( &mut self, x: &Self::Variable, y: &Self::Variable, @@ -587,35 +603,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.

-
source

unsafe fn count_leading_zeros( +

source

unsafe fn count_leading_zeros( &mut self, x: &Self::Variable, position: Self::Position ) -> Self::Variable

Returns the number of leading 0s in x, storing the result in position.

-
Safety
+
Safety

There are no constraints on the returned value; callers must manually add constraints to ensure that it is correctly constructed.

-
source

unsafe fn count_leading_ones( +

source

unsafe fn count_leading_ones( &mut self, x: &Self::Variable, position: Self::Position ) -> Self::Variable

Returns the number of leading 1s in x, storing the result in position.

-
Safety
+
Safety

There are no constraints on the returned value; callers must manually add constraints to ensure that it is correctly constructed.

-
source

fn copy( +
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)

Provided Methods§

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.

+) -> 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)

Provided Methods§

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)

Set the general purpose register with index idx to value.

-
Safety
+
Safety

No lookups or other constraints are added as part of this operation. The caller must manually add the lookups for this operation.

source

unsafe fn push_register_access( @@ -623,7 +639,7 @@

Safety
idx: &Self::Variable, value: Self::Variable )

Set the last ‘access index’ for the general purpose register with index idx to value.

-
Safety
+
Safety

No lookups or other constraints are added as part of this operation. The caller must manually add the lookups for this operation.

source

unsafe fn access_register_if( @@ -635,7 +651,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.

source

fn read_register(&mut self, idx: &Self::Variable) -> Self::Variable

source

unsafe fn access_register( @@ -645,7 +661,7 @@

Safety
new_value: &Self::Variable )

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.

-
Safety
+
Safety

Callers of this function must manually update the registers if required, this function will only update the access counter.

source

fn write_register_if( @@ -660,7 +676,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.

source

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 table

@@ -670,12 +686,12 @@
Safety
source

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 table

-
source

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( +

source

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.

-
source

fn sign_extend(&mut self, x: &Self::Variable, bitlength: u32) -> Self::Variable

Given a variable x, this function extends it to a signed integer of +

source

fn 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>

§

type Position = Column

§

type Variable = Operations<ExprInner<Operations<ConstantExprInner<Fp, BerkeleyChallengeTerm>>, Column>>

source§

impl<Fp: Field> InterpreterEnv for o1vm::interpreters::riscv32im::witness::Env<Fp>

\ No newline at end of file +

Implementors§

source§

impl<Fp: Field> InterpreterEnv for o1vm::interpreters::riscv32im::constraints::Env<Fp>

§

type Position = Column

§

type Variable = Operations<ExprInner<Operations<ConstantExprInner<Fp, BerkeleyChallengeTerm>>, Column>>

source§

impl<Fp: Field> InterpreterEnv for o1vm::interpreters::riscv32im::witness::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 ebaf30396a..50266dc4b0 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

Structs

source§

unsafe fn count_leading_zeros( &mut self, x: &Self::Variable, position: Self::Position -) -> Self::Variable

Returns the number of leading 0s in x, storing the result in position. Read more
source§

unsafe fn count_leading_ones( +) -> Self::Variable

Returns the number of leading 0s in x, storing the result in position. Read more
source§

unsafe fn count_leading_ones( &mut self, x: &Self::Variable, position: Self::Position -) -> Self::Variable

Returns the number of leading 1s in x, storing the result in position. Read more
source§

fn copy( +) -> Self::Variable

Returns the number of leading 1s in x, storing the result in position. Read more
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)

Set the general purpose register with index idx to value. Read more
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)

Set the general purpose register with index idx to value. Read more
source§

unsafe fn push_register_access( &mut self, idx: &Self::Variable, value: Self::Variable @@ -230,12 +235,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 more
source§

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 table
source§

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 table
source§

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 table
source§

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 table
source§

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.
source§

fn sign_extend(&mut self, x: &Self::Variable, bitlength: u32) -> Self::Variable

Given a variable x, this function extends it to a signed integer of +value of the heap pointer.
source§

fn 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.

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 a510913d2b..eb783dc996 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":"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"]]},\ +"o1vm":{"doc":"","t":"CCAAAAAAAAAANNNRRDDDNRRRRRDDDDNDDEDDMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMLLLLLLLLLLLLMLLLLLLLLLLLLMMMMMMMMMMMMMMMMLLMMMMMMFMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFFFAAANNNNCNNNENENNNNNNNCNCNNNNLLLLLLLLAALLLLLLALLLLLLLLLLALLALLFFLLLLLLLLLLANEDNNNENNNGNNRRRNNNNNNNNNNNNNNNNNNNEDNNEDNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDLLLLLLLLMLLLLLLLLMLLLLLLLDLLLLMLLLLLLLLLLLLMLLLLLLMLLIIILLLLLLLLLLLLLLLLKLLLIIQKLLLKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLDLLLLLLLLLLLLLLLLMMLLLLLLLMCCCCAAAAAENGRRRRRNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNNNNNNNNNNRRRRRRRNEDEDINEDNNNNNNNNNNNNNNNNNNNNNNNNQNEDRRRRRRRNNNNNNNNNNNNNNNNNNNNNNNNNNNNNQNNLLLKKKKKKKLLLKLLLLLLLLLLLLLLLLKKKLLLLLLLLLLLLLLLLLLLLKKKKALLLLLLLLLLLLLLLLLLLKKLLLLLLLLLLLLKLLLLLLLLKKKKLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLKFFFFLLLLLLLLLLLLLKLLLLLLLLLLLLLKKKLLLLLLLLKLLLLKLLLLLLLLKKLLKKLLLLLLKKKKKLLKKKLLLLLKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLKDLLLLLLLLLLLLLLLLMLLMMMMLMLLLLLRRRRRRRRRDLLLLMLLLLLLLMMMLLLLLMMMMLLLLLLDRRRRRRRDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLLLLMLLLMMMMMMLLLLLLLMMMMLLLLMMLLLLLLMMMMMLLLLLLMLLLLLLLLLLLLLLLLLLRRRRRAAAAAEGNNNLLLLLLLLLLLLLLLLLLLDLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLMMLLLLLLLLLLLLLLNNNNNNNNNNNNNNNEDNEDINNNNNNNNEDNNNNNNNQEDNNNEDNEDNNNNNNNNNNNNNNNEDNNEDEDNNQNNLLLKKKKKKLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKKLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLKFFFFFFFFFLLLLLLLLLLLLLLLLLLLLLLLLLLLLKKLLLLLLLLLLLLLLLLLLLLLLLKKKKKKKLLLLLLLLLLLLLLLLLLKLLLLLLLLLKLLLLLLLLLLLLLLLLLLKKLLKKLLLLLKKKLLKKKLLLLLLLLLLKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLKRRRRDLLLLMLLLLLLLMMLLLLMLLLLLLDRRRRRRRLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLMLLLMMMMLLLLLLLLLLLLLLLMMLLLMMMLLLLLLLLLLLLLLLLLLLGGGGGGGAAANEDDDDDNNMMLLLLLLLLLLLLLLMLLLLLLLLLLLLMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLALALLLLMMLLLLLLLMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMDGGGLLLLLLLLLLLLLLLLLLLLLLLDGGGLLLLLLLLLLLLLLLLLLLLLLLFIDIQDILLLLLLLLMLLLLMMLLKLLLLLKLLLLLLAMAKLKLKLKLKKLLLKLLLMLLLLLLLLMGGLLLLLLLGGLLLLLLLNNNENNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLRRRAAAADLLMLMLLMLLFLLLLLLLMLLLLLMDDDLLLLLLMLLLLLLLLLMMLLLLLLLMLLLLMMMMMMLLLLLLLLLLLLMMNELLLLLLLLLLLLFLLLLLLLFDIDDLLLLLLMLFLLLLLLLLLLLLKLKLMMLLLLLLMMMLLLLLLLLLLLLLMEDNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLF","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","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","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","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"],[1545,"o1vm::interpreters::riscv32im::interpreter"],[2147,"o1vm::interpreters::riscv32im::registers"],[2177,"o1vm::interpreters::riscv32im::witness"],[2271,"o1vm::legacy"],[2281,"o1vm::legacy::folding"],[2427,"o1vm::legacy::folding::keccak"],[2454,"o1vm::legacy::folding::mips"],[2481,"o1vm::legacy::proof"],[2482,"o1vm::legacy::trace"],[2548,"o1vm::legacy::trace::keccak"],[2557,"o1vm::legacy::trace::mips"],[2566,"o1vm::lookups"],[2607,"o1vm::pickles"],[2614,"o1vm::pickles::column_env"],[2640,"o1vm::pickles::proof"],[2693,"o1vm::pickles::prover"],[2715,"o1vm::pickles::verifier"],[2716,"o1vm::preimage_oracle"],[2770,"o1vm::ramlookup"],[2815,"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) & ((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 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,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,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,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]],34]],[[[44,[43]],35]],[[[44,[43]],35]],[[[44,[43]],34]],[[],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]],58]],[[[57,[43]],56]],[[[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]]]],[[[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]]]],[[[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,46]],[[124,35]],[[],11],[[]],[[]],[[],14],[[],14],[[],26],[[]],0,0,0,0,[[]],[[]],[125,125],[[]],[11],[11],[11],[[125,125],17],[[],17],[[],17],[[125,22],23],[[]],[[125,42]],[[126,56]],[[126,58]],[[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,[[131,[104]]]],[[],11],[[]],[[]],[[[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/src/o1vm/interpreters/riscv32im/constraints.rs.html b/rustdoc/src/o1vm/interpreters/riscv32im/constraints.rs.html index c97d43772f..2d7024022b 100644 --- a/rustdoc/src/o1vm/interpreters/riscv32im/constraints.rs.html +++ b/rustdoc/src/o1vm/interpreters/riscv32im/constraints.rs.html @@ -461,6 +461,15 @@ 461 462 463 +464 +465 +466 +467 +468 +469 +470 +471 +472

use super::{
     column::{Column, E},
     interpreter::{Instruction, InterpreterEnv},
@@ -817,6 +826,15 @@
         self.variable(position)
     }
 
+    unsafe fn mul_lo(
+        &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 5a7cbff3db..d084779112 100644
--- a/rustdoc/src/o1vm/interpreters/riscv32im/interpreter.rs.html
+++ b/rustdoc/src/o1vm/interpreters/riscv32im/interpreter.rs.html
@@ -2220,6 +2220,20 @@
 2220
 2221
 2222
+2223
+2224
+2225
+2226
+2227
+2228
+2229
+2230
+2231
+2232
+2233
+2234
+2235
+2236
 
//! This module implement an interpreter for the RISCV32 IM instruction set
 //! architecture.
 //!
@@ -3481,6 +3495,20 @@
         position: Self::Position,
     ) -> Self::Variable;
 
+    /// Returns `(x * y) & ((1 << 32) - 1))`, 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_lo(
+        &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 5b82a0aca4..ab15d6c552 100644
--- a/rustdoc/src/o1vm/interpreters/riscv32im/witness.rs.html
+++ b/rustdoc/src/o1vm/interpreters/riscv32im/witness.rs.html
@@ -887,6 +887,21 @@
 887
 888
 889
+890
+891
+892
+893
+894
+895
+896
+897
+898
+899
+900
+901
+902
+903
+904
 
// TODO: do we want to be more restrictive and refer to the number of accesses
 //       to the SAME register/memory addrss?
 use super::{
@@ -1394,6 +1409,21 @@
         res
     }
 
+    unsafe fn mul_lo(
+        &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 & ((1 << 32) - 1)) as u32;
+        let res = res as u64;
+        self.write_column(position, res);
+        res
+    }
+
     unsafe fn mul_hi_lo(
         &mut self,
         x: &Self::Variable,