diff --git a/rustdoc/help.html b/rustdoc/help.html index 5b57a161fa..20c79678f5 100644 --- a/rustdoc/help.html +++ b/rustdoc/help.html @@ -1 +1 @@ -
pub struct GenericEvalEnv<Curve: KimchiCurve, const N_COL: usize, const N_FSEL: usize, Eval: CombinableEvals<Curve::ScalarField>> {
+GenericEvalEnv in ivc::expr_eval - Rust Struct ivc::expr_eval::GenericEvalEnv
source · pub struct GenericEvalEnv<Curve: KimchiCurve, const N_COL: usize, const N_FSEL: usize, Eval: CombinableEvals<Curve::ScalarField>> {
pub ext_witness: ExtendedWitness<Curve, PlonkishWitnessGeneric<N_COL, N_FSEL, Curve::ScalarField, Eval>>,
pub alphas: Alphas<Curve::ScalarField>,
pub challenges: [Curve::ScalarField; 3],
@@ -6,7 +6,7 @@
pub u: Curve::ScalarField,
}
Expand description
Minimal environment needed for evaluating constraints.
Fields§
§ext_witness: ExtendedWitness<Curve, PlonkishWitnessGeneric<N_COL, N_FSEL, Curve::ScalarField, Eval>>
§alphas: Alphas<Curve::ScalarField>
§challenges: [Curve::ScalarField; 3]
§error_vec: Eval
§u: Curve::ScalarField
The scalar u
that is used to homogenize the polynomials
-Implementations§
source§impl<Curve: KimchiCurve, const N_COL: usize, const N_FSEL: usize, Evals: CombinableEvals<Curve::ScalarField>> GenericEvalEnv<Curve, N_COL, N_FSEL, Evals>
sourcepub fn process_extended_folding_column<FC: FoldingConfig<Column = GenericColumn, Curve = Curve, Challenge = PlonkishChallenge>>(
+
Implementations§
source§impl<Curve: KimchiCurve, const N_COL: usize, const N_FSEL: usize, Evals: CombinableEvals<Curve::ScalarField>> GenericEvalEnv<Curve, N_COL, N_FSEL, Evals>
sourcepub fn process_extended_folding_column<FC: FoldingConfig<Column = GenericColumn, Curve = Curve, Challenge = PlonkishChallenge>>(
&self,
col: &ExtendedFoldingColumn<FC>
) -> EvalLeaf<'_, Curve::ScalarField>
sourcepub fn eval_naive_fexpr<'a, FC: FoldingConfig<Column = GenericColumn, Curve = Curve, Challenge = PlonkishChallenge>>(
diff --git a/rustdoc/ivc/expr_eval/struct.GenericVecStructure.html b/rustdoc/ivc/expr_eval/struct.GenericVecStructure.html
index 37e8a9915a..b8272ab74c 100644
--- a/rustdoc/ivc/expr_eval/struct.GenericVecStructure.html
+++ b/rustdoc/ivc/expr_eval/struct.GenericVecStructure.html
@@ -1,6 +1,6 @@
-GenericVecStructure in ivc::expr_eval - Rust Struct ivc::expr_eval::GenericVecStructure
source · pub struct GenericVecStructure<G: KimchiCurve>(pub Vec<Vec<G::ScalarField>>);
Expand description
Generic structure containing column vectors.
-Tuple Fields§
§0: Vec<Vec<G::ScalarField>>
Trait Implementations§
source§impl<G: Clone + KimchiCurve> Clone for GenericVecStructure<G>where
- G::ScalarField: Clone,
source§fn clone(&self) -> GenericVecStructure<G>
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moreAuto Trait Implementations§
§impl<G> RefUnwindSafe for GenericVecStructure<G>where
+GenericVecStructure in ivc::expr_eval - Rust Struct ivc::expr_eval::GenericVecStructure
source · pub struct GenericVecStructure<G: KimchiCurve>(pub Vec<Vec<G::ScalarField>>);
Expand description
Generic structure containing column vectors.
+Tuple Fields§
§0: Vec<Vec<G::ScalarField>>
Trait Implementations§
Auto Trait Implementations§
§impl<G> RefUnwindSafe for GenericVecStructure<G>where
<G as AffineCurve>::ScalarField: RefUnwindSafe,
§impl<G> Send for GenericVecStructure<G>
§impl<G> Sync for GenericVecStructure<G>
§impl<G> Unpin for GenericVecStructure<G>where
<G as AffineCurve>::ScalarField: Unpin,
§impl<G> UnwindSafe for GenericVecStructure<G>where
<G as AffineCurve>::ScalarField: UnwindSafe,
Blanket Implementations§
source§impl<T> Any for Twhere
diff --git a/rustdoc/ivc/ivc/lookups/enum.IVCLookupTable.html b/rustdoc/ivc/ivc/lookups/enum.IVCLookupTable.html
index d543c88728..1a1d6f94bc 100644
--- a/rustdoc/ivc/ivc/lookups/enum.IVCLookupTable.html
+++ b/rustdoc/ivc/ivc/lookups/enum.IVCLookupTable.html
@@ -12,7 +12,7 @@
relation) columns, and no extra columns should be added. Read more
source§fn all_variants() -> Vec<Self>
§fn to_constraint<F>(
&self
-) -> Operations<ExprInner<Operations<ConstantExprInner<F>>, Column>>where
+) -> Operations<ExprInner<Operations<ConstantExprInner<F>>, Column>>where
F: Field,
Assign a unique ID to the lookup tables, as an expression.source§impl<Ff: Ord> Ord for IVCLookupTable<Ff>
source§fn cmp(&self, other: &IVCLookupTable<Ff>) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read more1.21.0 · source§fn min(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the minimum of two values. Read more1.50.0 · source§fn clamp(self, min: Self, max: Self) -> Selfwhere
diff --git a/rustdoc/ivc/plonkish_lang/enum.PlonkishChallenge.html b/rustdoc/ivc/plonkish_lang/enum.PlonkishChallenge.html
index 3ae361a661..5344b7e719 100644
--- a/rustdoc/ivc/plonkish_lang/enum.PlonkishChallenge.html
+++ b/rustdoc/ivc/plonkish_lang/enum.PlonkishChallenge.html
@@ -2,9 +2,9 @@
Beta,
Gamma,
JointCombiner,
-}Variants§
Trait Implementations§
source§impl Clone for PlonkishChallenge
source§fn clone(&self) -> PlonkishChallenge
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for PlonkishChallenge
source§impl From<ChallengeTerm> for PlonkishChallenge
source§fn from(chal: ChallengeTerm) -> Self
Converts to this type from the input type.source§impl Hash for PlonkishChallenge
1.3.0 · source§fn hash_slice<H>(data: &[Self], state: &mut H)where
+}Variants§
Trait Implementations§
source§impl Clone for PlonkishChallenge
source§fn clone(&self) -> PlonkishChallenge
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for PlonkishChallenge
source§impl From<ChallengeTerm> for PlonkishChallenge
source§impl Hash for PlonkishChallenge
source§impl<G: KimchiCurve, const N_COL: usize, const N_ALPHAS: usize> Index<PlonkishChallenge> for PlonkishInstance<G, N_COL, 3, N_ALPHAS>
source§impl IntoEnumIterator for PlonkishChallenge
§type Iterator = PlonkishChallengeIter
source§fn iter() -> PlonkishChallengeIter ⓘ
source§impl PartialEq<PlonkishChallenge> for PlonkishChallenge
source§fn eq(&self, other: &PlonkishChallenge) -> bool
source§impl<G: KimchiCurve, const N_COL: usize, const N_ALPHAS: usize> Index<PlonkishChallenge> for PlonkishInstance<G, N_COL, 3, N_ALPHAS>
source§impl IntoEnumIterator for PlonkishChallenge
§type Iterator = PlonkishChallengeIter
source§fn iter() -> PlonkishChallengeIter ⓘ
source§impl PartialEq<PlonkishChallenge> for PlonkishChallenge
source§fn eq(&self, other: &PlonkishChallenge) -> bool
This method tests for self
and other
values to be equal, and is used
by ==
.source§impl Copy for PlonkishChallenge
source§impl Eq for PlonkishChallenge
source§impl StructuralEq for PlonkishChallenge
source§impl StructuralPartialEq for PlonkishChallenge
Auto Trait Implementations§
§impl RefUnwindSafe for PlonkishChallenge
§impl Send for PlonkishChallenge
§impl Sync for PlonkishChallenge
§impl Unpin for PlonkishChallenge
§impl UnwindSafe for PlonkishChallenge
Blanket Implementations§
source§impl<T> Borrow<T> for Twhere
diff --git a/rustdoc/ivc/plonkish_lang/struct.PlonkishInstance.html b/rustdoc/ivc/plonkish_lang/struct.PlonkishInstance.html
index 81f10351f4..4b104e3b85 100644
--- a/rustdoc/ivc/plonkish_lang/struct.PlonkishInstance.html
+++ b/rustdoc/ivc/plonkish_lang/struct.PlonkishInstance.html
@@ -1,9 +1,9 @@
-PlonkishInstance in ivc::plonkish_lang - Rust Struct ivc::plonkish_lang::PlonkishInstance
source · pub struct PlonkishInstance<G: KimchiCurve, const N_COL: usize, const N_CHALS: usize, const N_ALPHAS: usize> {
+PlonkishInstance in ivc::plonkish_lang - Rust Struct ivc::plonkish_lang::PlonkishInstance
source · pub struct PlonkishInstance<G: KimchiCurve, const N_COL: usize, const N_CHALS: usize, const N_ALPHAS: usize> {
pub commitments: [G; N_COL],
pub challenges: [G::ScalarField; N_CHALS],
pub alphas: Alphas<G::ScalarField>,
pub blinder: G::ScalarField,
-}
Fields§
§commitments: [G; N_COL]
§challenges: [G::ScalarField; N_CHALS]
§alphas: Alphas<G::ScalarField>
§blinder: G::ScalarField
Implementations§
source§impl<G: KimchiCurve, const N_COL: usize, const N_ALPHAS: usize> PlonkishInstance<G, N_COL, 3, N_ALPHAS>
sourcepub fn from_witness<EFqSponge: FqSponge<G::BaseField, G, G::ScalarField>>(
+}Fields§
§commitments: [G; N_COL]
§challenges: [G::ScalarField; N_CHALS]
§alphas: Alphas<G::ScalarField>
§blinder: G::ScalarField
Implementations§
source§impl<G: KimchiCurve, const N_COL: usize, const N_ALPHAS: usize> PlonkishInstance<G, N_COL, 3, N_ALPHAS>
sourcepub fn from_witness<EFqSponge: FqSponge<G::BaseField, G, G::ScalarField>>(
w: &GenericWitness<N_COL, Evaluations<G::ScalarField, R2D<G::ScalarField>>>,
fq_sponge: &mut EFqSponge,
srs: &SRS<G>,
@@ -11,18 +11,18 @@
) -> Self
sourcepub fn verify_from_witness<EFqSponge: FqSponge<G::BaseField, G, G::ScalarField>>(
&self,
fq_sponge: &mut EFqSponge
-) -> Result<(), String>
Trait Implementations§
source§impl<G: Clone + KimchiCurve, const N_COL: usize, const N_CHALS: usize, const N_ALPHAS: usize> Clone for PlonkishInstance<G, N_COL, N_CHALS, N_ALPHAS>where
- G::ScalarField: Clone,
source§fn clone(&self) -> PlonkishInstance<G, N_COL, N_CHALS, N_ALPHAS>
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl<G: Debug + KimchiCurve, const N_COL: usize, const N_CHALS: usize, const N_ALPHAS: usize> Debug for PlonkishInstance<G, N_COL, N_CHALS, N_ALPHAS>where
- G::ScalarField: Debug,
source§impl<G: KimchiCurve, const N_COL: usize, const N_CHALS: usize, const N_ALPHAS: usize> Foldable<<G as AffineCurve>::ScalarField> for PlonkishInstance<G, N_COL, N_CHALS, N_ALPHAS>
source§impl<G: KimchiCurve, const N_COL: usize, const N_ALPHAS: usize> Index<PlonkishChallenge> for PlonkishInstance<G, N_COL, 3, N_ALPHAS>
source§impl<G: KimchiCurve, const N_COL: usize, const N_CHALS: usize, const N_ALPHAS: usize> Instance<G> for PlonkishInstance<G, N_COL, N_CHALS, N_ALPHAS>
Trait Implementations§
source§impl<G: Clone + KimchiCurve, const N_COL: usize, const N_CHALS: usize, const N_ALPHAS: usize> Clone for PlonkishInstance<G, N_COL, N_CHALS, N_ALPHAS>where
+ G::ScalarField: Clone,
source§fn clone(&self) -> PlonkishInstance<G, N_COL, N_CHALS, N_ALPHAS>
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl<G: Debug + KimchiCurve, const N_COL: usize, const N_CHALS: usize, const N_ALPHAS: usize> Debug for PlonkishInstance<G, N_COL, N_CHALS, N_ALPHAS>where
+ G::ScalarField: Debug,
source§impl<G: KimchiCurve, const N_COL: usize, const N_CHALS: usize, const N_ALPHAS: usize> Foldable<<G as AffineCurve>::ScalarField> for PlonkishInstance<G, N_COL, N_CHALS, N_ALPHAS>
source§impl<G: KimchiCurve, const N_COL: usize, const N_ALPHAS: usize> Index<PlonkishChallenge> for PlonkishInstance<G, N_COL, 3, N_ALPHAS>
source§impl<G: KimchiCurve, const N_COL: usize, const N_CHALS: usize, const N_ALPHAS: usize> Instance<G> for PlonkishInstance<G, N_COL, N_CHALS, N_ALPHAS>
source§fn to_absorb(&self) -> (Vec<G::ScalarField>, Vec<G>)
This method returns the scalars and commitments that must be absorbed by
the sponge. It is not supposed to do any absorption itself, and the user
is responsible for calling the sponge absorb methods with the elements
returned by this method.
When called on a RelaxedInstance, elements will be returned in the
-following order, for given instances L and R Read moresource§fn get_alphas(&self) -> &Alphas<G::ScalarField>
Returns the alphas values for the instancesource§fn get_blinder(&self) -> G::ScalarField
Return the blinder that can be used while committing to polynomials.source§impl<G: PartialEq + KimchiCurve, const N_COL: usize, const N_CHALS: usize, const N_ALPHAS: usize> PartialEq<PlonkishInstance<G, N_COL, N_CHALS, N_ALPHAS>> for PlonkishInstance<G, N_COL, N_CHALS, N_ALPHAS>where
+following order, for given instances L and R Read more
source§fn get_alphas(&self) -> &Alphas<G::ScalarField>
Returns the alphas values for the instancesource§fn get_blinder(&self) -> G::ScalarField
Return the blinder that can be used while committing to polynomials.source§impl<G: PartialEq + KimchiCurve, const N_COL: usize, const N_CHALS: usize, const N_ALPHAS: usize> PartialEq<PlonkishInstance<G, N_COL, N_CHALS, N_ALPHAS>> for PlonkishInstance<G, N_COL, N_CHALS, N_ALPHAS>where
G::ScalarField: PartialEq,
source§fn eq(&self, other: &PlonkishInstance<G, N_COL, N_CHALS, N_ALPHAS>) -> bool
This method tests for self
and other
values to be equal, and is used
by ==
.source§impl<G: Eq + KimchiCurve, const N_COL: usize, const N_CHALS: usize, const N_ALPHAS: usize> Eq for PlonkishInstance<G, N_COL, N_CHALS, N_ALPHAS>where
- G::ScalarField: Eq,
source§impl<G: KimchiCurve, const N_COL: usize, const N_CHALS: usize, const N_ALPHAS: usize> StructuralEq for PlonkishInstance<G, N_COL, N_CHALS, N_ALPHAS>
source§impl<G: KimchiCurve, const N_COL: usize, const N_CHALS: usize, const N_ALPHAS: usize> StructuralPartialEq for PlonkishInstance<G, N_COL, N_CHALS, N_ALPHAS>
Auto Trait Implementations§
§impl<G, const N_COL: usize, const N_CHALS: usize, const N_ALPHAS: usize> RefUnwindSafe for PlonkishInstance<G, N_COL, N_CHALS, N_ALPHAS>where
+sufficient, and should not be overridden without very good reason.
source§impl<G: Eq + KimchiCurve, const N_COL: usize, const N_CHALS: usize, const N_ALPHAS: usize> Eq for PlonkishInstance<G, N_COL, N_CHALS, N_ALPHAS>where
+ G::ScalarField: Eq,
source§impl<G: KimchiCurve, const N_COL: usize, const N_CHALS: usize, const N_ALPHAS: usize> StructuralEq for PlonkishInstance<G, N_COL, N_CHALS, N_ALPHAS>
source§impl<G: KimchiCurve, const N_COL: usize, const N_CHALS: usize, const N_ALPHAS: usize> StructuralPartialEq for PlonkishInstance<G, N_COL, N_CHALS, N_ALPHAS>
Auto Trait Implementations§
§impl<G, const N_COL: usize, const N_CHALS: usize, const N_ALPHAS: usize> RefUnwindSafe for PlonkishInstance<G, N_COL, N_CHALS, N_ALPHAS>where
G: RefUnwindSafe,
<G as AffineCurve>::ScalarField: RefUnwindSafe,
§impl<G, const N_COL: usize, const N_CHALS: usize, const N_ALPHAS: usize> !Send for PlonkishInstance<G, N_COL, N_CHALS, N_ALPHAS>
§impl<G, const N_COL: usize, const N_CHALS: usize, const N_ALPHAS: usize> !Sync for PlonkishInstance<G, N_COL, N_CHALS, N_ALPHAS>
§impl<G, const N_COL: usize, const N_CHALS: usize, const N_ALPHAS: usize> Unpin for PlonkishInstance<G, N_COL, N_CHALS, N_ALPHAS>where
G: Unpin,
diff --git a/rustdoc/ivc/prover/fn.prove.html b/rustdoc/ivc/prover/fn.prove.html
index 2b331186ea..d87c7f5089 100644
--- a/rustdoc/ivc/prover/fn.prove.html
+++ b/rustdoc/ivc/prover/fn.prove.html
@@ -1,5 +1,5 @@
-prove in ivc::prover - Rust pub fn prove<EFqSponge: Clone + FqSponge<Fq, G, Fp>, EFrSponge: FrSponge<Fp>, FC: FoldingConfig<Column = GenericColumn, Curve = G, Challenge = PlonkishChallenge>, RNG, const N_WIT: usize, const N_WIT_QUAD: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, const N_ALPHAS: usize>(
- domain: EvaluationDomains<Fp>,
+prove in ivc::prover - Rust pub fn prove<EFqSponge: Clone + FqSponge<Fq, G, Fp>, EFrSponge: FrSponge<Fp>, FC: FoldingConfig<Column = GenericColumn, Curve = G, Challenge = PlonkishChallenge>, RNG, const N_WIT: usize, const N_WIT_QUAD: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, const N_ALPHAS: usize>(
+ domain: EvaluationDomains<Fp>,
srs: &PairingSRS<Pairing>,
combined_expr: &FoldingCompatibleExpr<FC>,
folded_instance: RelaxedInstance<G, PlonkishInstance<G, N_WIT, 3, N_ALPHAS>>,
diff --git a/rustdoc/ivc/prover/struct.Proof.html b/rustdoc/ivc/prover/struct.Proof.html
index 158df516f5..7d87326990 100644
--- a/rustdoc/ivc/prover/struct.Proof.html
+++ b/rustdoc/ivc/prover/struct.Proof.html
@@ -1,12 +1,12 @@
-Proof in ivc::prover - Rust pub struct Proof<const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, G: KimchiCurve, OpeningProof: OpenProof<G>> {
+Proof in ivc::prover - Rust pub struct Proof<const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, G: KimchiCurve, OpeningProof: OpenProof<G>> {
pub proof_comms: ProofCommitments<N_WIT, G>,
pub proof_evals: ProofEvaluations<N_WIT, N_REL, N_DSEL, N_FSEL, G::ScalarField>,
pub opening_proof: OpeningProof,
pub alphas: Alphas<G::ScalarField>,
pub challenges: [G::ScalarField; 3],
pub u: G::ScalarField,
-}
Fields§
§proof_comms: ProofCommitments<N_WIT, G>
§proof_evals: ProofEvaluations<N_WIT, N_REL, N_DSEL, N_FSEL, G::ScalarField>
§opening_proof: OpeningProof
§alphas: Alphas<G::ScalarField>
§challenges: [G::ScalarField; 3]
§u: G::ScalarField
Trait Implementations§
source§impl<const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, G: Clone + KimchiCurve, OpeningProof: Clone + OpenProof<G>> Clone for Proof<N_WIT, N_REL, N_DSEL, N_FSEL, G, OpeningProof>where
- G::ScalarField: Clone,
source§impl<const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, G: Debug + KimchiCurve, OpeningProof: Debug + OpenProof<G>> Debug for Proof<N_WIT, N_REL, N_DSEL, N_FSEL, G, OpeningProof>where
+}Fields§
§proof_comms: ProofCommitments<N_WIT, G>
§proof_evals: ProofEvaluations<N_WIT, N_REL, N_DSEL, N_FSEL, G::ScalarField>
§opening_proof: OpeningProof
§alphas: Alphas<G::ScalarField>
§challenges: [G::ScalarField; 3]
§u: G::ScalarField
Trait Implementations§
source§impl<const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, G: Clone + KimchiCurve, OpeningProof: Clone + OpenProof<G>> Clone for Proof<N_WIT, N_REL, N_DSEL, N_FSEL, G, OpeningProof>where
+ G::ScalarField: Clone,
Auto Trait Implementations§
§impl<const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, G, OpeningProof> RefUnwindSafe for Proof<N_WIT, N_REL, N_DSEL, N_FSEL, G, OpeningProof>where
G: RefUnwindSafe,
OpeningProof: RefUnwindSafe,
diff --git a/rustdoc/ivc/prover/struct.ProofCommitments.html b/rustdoc/ivc/prover/struct.ProofCommitments.html
index c23bf8f922..f37e6859d4 100644
--- a/rustdoc/ivc/prover/struct.ProofCommitments.html
+++ b/rustdoc/ivc/prover/struct.ProofCommitments.html
@@ -1,11 +1,11 @@
-ProofCommitments in ivc::prover - Rust Struct ivc::prover::ProofCommitments
source · pub struct ProofCommitments<const N_WIT: usize, G: KimchiCurve> {
+ProofCommitments in ivc::prover - Rust Struct ivc::prover::ProofCommitments
source · pub struct ProofCommitments<const N_WIT: usize, G: KimchiCurve> {
pub witness_comms: Witness<N_WIT, PolyComm<G>>,
pub t_comm: PolyComm<G>,
}
Fields§
§witness_comms: Witness<N_WIT, PolyComm<G>>
Commitments to the N columns of the circuits, also called the ‘witnesses’.
If some columns are considered as public inputs, it is counted in the witness.
§t_comm: PolyComm<G>
Commitments to the quotient polynomial.
The value contains the chunked polynomials.
-Trait Implementations§
source§impl<const N_WIT: usize, G: Clone + KimchiCurve> Clone for ProofCommitments<N_WIT, G>
source§fn clone(&self) -> ProofCommitments<N_WIT, G>
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moreAuto Trait Implementations§
§impl<const N_WIT: usize, G> RefUnwindSafe for ProofCommitments<N_WIT, G>where
+
Trait Implementations§
Auto Trait Implementations§
§impl<const N_WIT: usize, G> RefUnwindSafe for ProofCommitments<N_WIT, G>where
G: RefUnwindSafe,
§impl<const N_WIT: usize, G> Send for ProofCommitments<N_WIT, G>
§impl<const N_WIT: usize, G> Sync for ProofCommitments<N_WIT, G>
§impl<const N_WIT: usize, G> Unpin for ProofCommitments<N_WIT, G>where
G: Unpin,
§impl<const N_WIT: usize, G> UnwindSafe for ProofCommitments<N_WIT, G>where
G: UnwindSafe,
Blanket Implementations§
source§impl<T> Any for Twhere
diff --git a/rustdoc/ivc/prover/struct.ProofEvaluations.html b/rustdoc/ivc/prover/struct.ProofEvaluations.html
index 941f45f0ae..b3bf2c3b44 100644
--- a/rustdoc/ivc/prover/struct.ProofEvaluations.html
+++ b/rustdoc/ivc/prover/struct.ProofEvaluations.html
@@ -1,18 +1,18 @@
ProofEvaluations in ivc::prover - Rust Struct ivc::prover::ProofEvaluations
source · pub struct ProofEvaluations<const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, F> {
- pub witness_evals: Witness<N_WIT, PointEvaluations<F>>,
- pub fixed_selectors_evals: Box<[PointEvaluations<F>; N_FSEL]>,
- pub error_vec: PointEvaluations<F>,
+ pub witness_evals: Witness<N_WIT, PointEvaluations<F>>,
+ pub fixed_selectors_evals: Box<[PointEvaluations<F>; N_FSEL]>,
+ pub error_vec: PointEvaluations<F>,
pub ft_eval1: F,
-}
Fields§
§witness_evals: Witness<N_WIT, PointEvaluations<F>>
Witness evaluations, including public inputs
-§fixed_selectors_evals: Box<[PointEvaluations<F>; N_FSEL]>
Evaluations of fixed selectors.
-§error_vec: PointEvaluations<F>
§ft_eval1: F
Evaluation of Z_H(ζ) (t_0(X) + ζ^n t_1(X) + …) at ζω.
-Trait Implementations§
source§impl<const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, F: Clone> Clone for ProofEvaluations<N_WIT, N_REL, N_DSEL, N_FSEL, F>
source§fn clone(&self) -> ProofEvaluations<N_WIT, N_REL, N_DSEL, N_FSEL, F>
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl<const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, F: Clone> ColumnEvaluations<F> for ProofEvaluations<N_WIT, N_REL, N_DSEL, N_FSEL, F>
The trait ColumnEvaluations is used by the verifier.
+}
Fields§
§witness_evals: Witness<N_WIT, PointEvaluations<F>>
Witness evaluations, including public inputs
+§fixed_selectors_evals: Box<[PointEvaluations<F>; N_FSEL]>
Evaluations of fixed selectors.
+§error_vec: PointEvaluations<F>
§ft_eval1: F
Evaluation of Z_H(ζ) (t_0(X) + ζ^n t_1(X) + …) at ζω.
+Trait Implementations§
source§impl<const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, F: Clone> Clone for ProofEvaluations<N_WIT, N_REL, N_DSEL, N_FSEL, F>
source§fn clone(&self) -> ProofEvaluations<N_WIT, N_REL, N_DSEL, N_FSEL, F>
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl<const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, F: Clone> ColumnEvaluations<F> for ProofEvaluations<N_WIT, N_REL, N_DSEL, N_FSEL, F>
The trait ColumnEvaluations is used by the verifier.
It will return the evaluation of the corresponding column at the
evaluation points coined by the verifier during the protocol.
-Auto Trait Implementations§
§impl<const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, F> RefUnwindSafe for ProofEvaluations<N_WIT, N_REL, N_DSEL, N_FSEL, F>where
+ col: Self::Column
+) -> Result<PointEvaluations<F>, ExprError<Self::Column>>
Auto Trait Implementations§
§impl<const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, F> RefUnwindSafe for ProofEvaluations<N_WIT, N_REL, N_DSEL, N_FSEL, F>where
F: RefUnwindSafe,
§impl<const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, F> Send for ProofEvaluations<N_WIT, N_REL, N_DSEL, N_FSEL, F>where
F: Send,
§impl<const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, F> Sync for ProofEvaluations<N_WIT, N_REL, N_DSEL, N_FSEL, F>where
F: Sync,
§impl<const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, F> Unpin for ProofEvaluations<N_WIT, N_REL, N_DSEL, N_FSEL, F>where
diff --git a/rustdoc/ivc/verifier/fn.verify.html b/rustdoc/ivc/verifier/fn.verify.html
index 55d3e45a45..d9c22ee209 100644
--- a/rustdoc/ivc/verifier/fn.verify.html
+++ b/rustdoc/ivc/verifier/fn.verify.html
@@ -1,5 +1,5 @@
-verify in ivc::verifier - Rust pub fn verify<EFqSponge: Clone + FqSponge<Fq, G, Fp>, EFrSponge: FrSponge<Fp>, FC: FoldingConfig<Column = GenericColumn, Curve = G, Challenge = PlonkishChallenge>, const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, const NPUB: usize>(
- domain: EvaluationDomains<Fp>,
+verify in ivc::verifier - Rust pub fn verify<EFqSponge: Clone + FqSponge<Fq, G, Fp>, EFrSponge: FrSponge<Fp>, FC: FoldingConfig<Column = GenericColumn, Curve = G, Challenge = PlonkishChallenge>, const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, const NPUB: usize>(
+ domain: EvaluationDomains<Fp>,
srs: &PairingSRS<Pairing>,
combined_expr: &FoldingCompatibleExpr<FC>,
fixed_selectors: Box<[Evaluations<Fp, R2D<Fp>>; N_FSEL]>,
diff --git a/rustdoc/mvpoly/index.html b/rustdoc/mvpoly/index.html
index 190d18acd0..325906914f 100644
--- a/rustdoc/mvpoly/index.html
+++ b/rustdoc/mvpoly/index.html
@@ -1,2 +1,2 @@
-mvpoly - Rust Modules
- Multivariate polynomial dense representation using prime numbers
- This module contains functions to work with prime numbers and to compute
+
mvpoly - Rust
\ No newline at end of file
diff --git a/rustdoc/mvpoly/monomials/struct.Sparse.html b/rustdoc/mvpoly/monomials/struct.Sparse.html
index 1464d01648..5a147c5cc7 100644
--- a/rustdoc/mvpoly/monomials/struct.Sparse.html
+++ b/rustdoc/mvpoly/monomials/struct.Sparse.html
@@ -1,19 +1,19 @@
-Sparse in mvpoly::monomials - Rust pub struct Sparse<F: PrimeField, const N: usize, const D: usize> {
+Sparse in mvpoly::monomials - Rust pub struct Sparse<F: PrimeField, const N: usize, const D: usize> {
pub monomials: HashMap<[usize; N], F>,
}
Expand description
Represents a multivariate polynomial in N
variables with coefficients in
F
. The polynomial is represented as a sparse polynomial, where each
monomial is represented by a vector of N
exponents.
-Fields§
§monomials: HashMap<[usize; N], F>
Implementations§
Trait Implementations§
source§impl<const N: usize, const D: usize, F: PrimeField> Add<&Sparse<F, N, D>> for &Sparse<F, N, D>
source§impl<const N: usize, const D: usize, F: PrimeField> Add<&Sparse<F, N, D>> for Sparse<F, N, D>
source§impl<const N: usize, const D: usize, F: PrimeField> Add<Sparse<F, N, D>> for &Sparse<F, N, D>
source§impl<const N: usize, const D: usize, F: PrimeField> MVPoly<F, N, D> for Sparse<F, N, D>
Fields§
§monomials: HashMap<[usize; N], F>
Implementations§
Trait Implementations§
source§impl<const N: usize, const D: usize, F: PrimeField> Add<&Sparse<F, N, D>> for &Sparse<F, N, D>
source§impl<const N: usize, const D: usize, F: PrimeField> Add<&Sparse<F, N, D>> for Sparse<F, N, D>
source§impl<const N: usize, const D: usize, F: PrimeField> Add<Sparse<F, N, D>> for &Sparse<F, N, D>
source§impl<const N: usize, const D: usize, F: PrimeField> MVPoly<F, N, D> for Sparse<F, N, D>
source§unsafe fn degree(&self) -> usize
Returns the degree of the polynomial.
The degree of the polynomial is the maximum degree of the monomials
that have a non-zero coefficient.
Safety
The zero polynomial as a degree equals to 0, as the degree of the
constant polynomials. We do use the unsafe
keyword to warn the user
for this specific case.
-source§fn eval(&self, x: &[F; N]) -> F
Evaluate the polynomial at the vector point x
.
This is a dummy implementation. A cache can be used for the monomials to
speed up the computation.
-source§unsafe fn random<RNG: RngCore>(rng: &mut RNG, max_degree: Option<usize>) -> Self
Generate a random polynomial of maximum degree max_degree
.
+source§unsafe fn random<RNG: RngCore>(rng: &mut RNG, max_degree: Option<usize>) -> Self
Generate a random polynomial of maximum degree max_degree
.
If None
is provided as the maximum degree, the polynomial will be
generated with a maximum degree of D
.
Safety
@@ -22,14 +22,15 @@ Safety
protocols. The user is responsible for providing its own secure
polynomial random generator, if needed.
For now, the function is only used for testing.
-source§fn is_constant(&self) -> bool
source§fn double(&self) -> Self
source§fn mul_by_scalar(&self, scalar: F) -> Self
source§fn from_expr<Column: Into<usize>>(expr: Expr<ConstantExpr<F>, Column>) -> Self
Build a value from an expression.
+source§fn is_constant(&self) -> bool
source§fn double(&self) -> Self
source§fn mul_by_scalar(&self, scalar: F) -> Self
source§fn from_expr<Column: Into<usize>>(expr: Expr<ConstantExpr<F>, Column>) -> Self
Build a value from an expression.
This method aims to be used to be retro-compatible with what we call
“the expression framework”.
In the near future, the “expression framework” should be moved also into
-this library.source§fn is_homogeneous(&self) -> bool
Returns true if the polynomial is homogeneous (of degree D
).
+this library.source§fn is_homogeneous(&self) -> bool
Returns true if the polynomial is homogeneous (of degree D
).
As a reminder, a polynomial is homogeneous if all its monomials have the
-same degree.source§fn homogeneous_eval(&self, x: &[F; N], u: F) -> F
Evaluate the polynomial at the vector point x
and the extra variable
-u
using its homogeneous form of degree D.source§fn homogeneous_eval(&self, x: &[F; N], u: F) -> F
Evaluate the polynomial at the vector point x
and the extra variable
+u
using its homogeneous form of degree D.source§impl<const N: usize, const D: usize, F: PrimeField> PartialEq<Sparse<F, N, D>> for Sparse<F, N, D>
Equality is defined as equality of the monomials.
source§fn eq(&self, other: &Self) -> 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/mvpoly/prime/index.html b/rustdoc/mvpoly/prime/index.html
index add8c6e771..a7527de4d8 100644
--- a/rustdoc/mvpoly/prime/index.html
+++ b/rustdoc/mvpoly/prime/index.html
@@ -1,4 +1,4 @@
-mvpoly::prime - Rust Expand description
Multivariate polynomial dense representation using prime numbers
+mvpoly::prime - Rust Expand description
Multivariate polynomial dense representation using prime numbers
First, we start by attributing a different prime number for each variable.
For instance, for F^{<=2}[X_{1}, X_{2}]
, we assign X_{1}
to 2
and $X_{2}$ to $3$.
diff --git a/rustdoc/mvpoly/prime/struct.Dense.html b/rustdoc/mvpoly/prime/struct.Dense.html
index 21b30a145f..cdee8eb92b 100644
--- a/rustdoc/mvpoly/prime/struct.Dense.html
+++ b/rustdoc/mvpoly/prime/struct.Dense.html
@@ -4,14 +4,14 @@
of the coefficient corresponds to the index of the monomial.
A mapping between the index and the prime decomposition of the monomial is
stored in normalized_indices
.
-Implementations§
source§impl<F: PrimeField, const N: usize, const D: usize> Dense<F, N, D>
sourcepub fn new() -> Self
sourcepub fn iter(&self) -> impl Iterator<Item = &F>
sourcepub fn dimension() -> usize
sourcepub fn from_coeffs(coeff: Vec<F>) -> Self
sourcepub fn from_variable<C: Into<usize>>(var: C) -> Self
sourcepub fn number_of_variables(&self) -> usize
sourcepub fn maximum_degree(&self) -> usize
sourcepub fn compute_normalized_indices() -> Vec<usize>
Output example for N = 2 and D = 2:
+Implementations§
source§impl<F: PrimeField, const N: usize, const D: usize> Dense<F, N, D>
sourcepub fn new() -> Self
sourcepub fn iter(&self) -> impl Iterator<Item = &F>
sourcepub fn dimension() -> usize
sourcepub fn from_coeffs(coeff: Vec<F>) -> Self
sourcepub fn from_variable<C: Into<usize>>(var: C) -> Self
sourcepub fn number_of_variables(&self) -> usize
sourcepub fn maximum_degree(&self) -> usize
sourcepub fn compute_normalized_indices() -> Vec<usize>
Output example for N = 2 and D = 2:
- 0 -> 1
- 1 -> 2
- 2 -> 3
- 3 -> 4
- 4 -> 6
- 5 -> 9
-
sourcepub fn increase_degree<const D_PRIME: usize>(&self) -> Dense<F, N, D_PRIME>
Trait Implementations§
source§impl<F: PrimeField, const N: usize, const D: usize> From<ConstantExprInner<F>> for Dense<F, N, D>
source§fn from(expr: ConstantExprInner<F>) -> Self
Converts to this type from the input type.source§impl<F: PrimeField, const N: usize, const D: usize> From<Operations<ConstantExprInner<F>>> for Dense<F, N, D>
source§fn from(op: Operations<ConstantExprInner<F>>) -> Self
Converts to this type from the input type.sourcepub fn increase_degree<const D_PRIME: usize>(&self) -> Dense<F, N, D_PRIME>
Trait Implementations§
source§impl<F: PrimeField, const N: usize, const D: usize> From<ConstantExprInner<F>> for Dense<F, N, D>
source§impl<F: PrimeField, const N: usize, const D: usize> From<Operations<ConstantExprInner<F>>> for Dense<F, N, D>
source§impl<F: PrimeField, const N: usize, const D: usize> MVPoly<F, N, D> for Dense<F, N, D>
source§fn eval(&self, x: &[F; N]) -> F
Evaluate the polynomial at the vector point x
.
This is a dummy implementation. A cache can be used for the monomials to
speed up the computation.
-source§fn is_constant(&self) -> bool
source§fn double(&self) -> Self
source§fn mul_by_scalar(&self, c: F) -> Self
source§fn from_expr<Column: Into<usize>>(expr: Expr<ConstantExpr<F>, Column>) -> Self
Build a value from an expression.
+source§fn is_constant(&self) -> bool
source§fn double(&self) -> Self
source§fn mul_by_scalar(&self, c: F) -> Self
source§fn from_expr<Column: Into<usize>>(expr: Expr<ConstantExpr<F>, Column>) -> Self
Build a value from an expression.
This method aims to be used to be retro-compatible with what we call
“the expression framework”.
In the near future, the “expression framework” should be moved also into
this library.source§fn is_homogeneous(&self) -> bool
Returns true if the polynomial is homogeneous (of degree D
).
As a reminder, a polynomial is homogeneous if all its monomials have the
same degree.source§fn homogeneous_eval(&self, x: &[F; N], u: F) -> F
Evaluate the polynomial at the vector point x
and the extra variable
-u
using its homogeneous form of degree D.source§impl<F: PrimeField, const N: usize, const D: usize> PartialEq<Dense<F, N, D>> for Dense<F, N, D>
source§impl<F: PrimeField, const N: usize, const D: usize> PartialEq<Dense<F, N, D>> for Dense<F, N, D>
source§impl<F: PrimeField, const N: usize, const D: usize> Eq for Dense<F, N, D>
Auto Trait Implementations§
§impl<F, const N: usize, const D: usize> RefUnwindSafe for Dense<F, N, D>where
+sufficient, and should not be overridden without very good reason.
source§impl<F: PrimeField, const N: usize, const D: usize> Eq for Dense<F, N, D>
Auto Trait Implementations§
§impl<F, const N: usize, const D: usize> RefUnwindSafe for Dense<F, N, D>where
F: RefUnwindSafe,
§impl<F, const N: usize, const D: usize> Send for Dense<F, N, D>
§impl<F, const N: usize, const D: usize> Sync for Dense<F, N, D>
§impl<F, const N: usize, const D: usize> Unpin for Dense<F, N, D>where
F: Unpin,
§impl<F, const N: usize, const D: usize> UnwindSafe for Dense<F, N, D>where
F: UnwindSafe,
Blanket Implementations§
source§impl<T> Any for Twhere
diff --git a/rustdoc/mvpoly/trait.MVPoly.html b/rustdoc/mvpoly/trait.MVPoly.html
index 1c773a5df2..7c65fc271c 100644
--- a/rustdoc/mvpoly/trait.MVPoly.html
+++ b/rustdoc/mvpoly/trait.MVPoly.html
@@ -1,4 +1,4 @@
-MVPoly in mvpoly - Rust pub trait MVPoly<F: PrimeField, const N: usize, const D: usize>: Add<Self, Output = Self> + Mul<Self, Output = Self> + Neg<Output = Self> + Sub<Self, Output = Self> + One + Zero + Debug + PartialEq + Eq + From<F> + Sized {
+MVPoly in mvpoly - Rust pub trait MVPoly<F: PrimeField, const N: usize, const D: usize>: Add<Self, Output = Self> + Mul<Self, Output = Self> + Neg<Output = Self> + Sub<Self, Output = Self> + One + Zero + Debug + PartialEq + Eq + From<F> + Sized {
// Required methods
unsafe fn random<RNG: RngCore>(
rng: &mut RNG,
@@ -10,10 +10,11 @@
unsafe fn degree(&self) -> usize;
fn eval(&self, x: &[F; N]) -> F;
fn from_expr<Column: Into<usize>>(
- expr: Expr<ConstantExpr<F>, Column>
+ expr: Expr<ConstantExpr<F>, Column>
) -> Self;
fn is_homogeneous(&self) -> bool;
fn homogeneous_eval(&self, x: &[F; N], u: F) -> F;
+ fn add_monomial(&mut self, exponents: [usize; N], coeff: F);
}
Expand description
Generic trait to represent a multi-variate polynomial
Required Methods§
sourceunsafe fn random<RNG: RngCore>(rng: &mut RNG, max_degree: Option<usize>) -> Self
Generate a random polynomial of maximum degree max_degree
.
If None
is provided as the maximum degree, the polynomial will be
@@ -34,7 +35,7 @@
Safety
sourcefn eval(&self, x: &[F; N]) -> F
Evaluate the polynomial at the vector point x
.
This is a dummy implementation. A cache can be used for the monomials to
speed up the computation.
-sourcefn from_expr<Column: Into<usize>>(expr: Expr<ConstantExpr<F>, Column>) -> Self
Build a value from an expression.
+
sourcefn from_expr<Column: Into<usize>>(expr: Expr<ConstantExpr<F>, Column>) -> Self
Build a value from an expression.
This method aims to be used to be retro-compatible with what we call
“the expression framework”.
In the near future, the “expression framework” should be moved also into
@@ -44,4 +45,8 @@
Safety
same degree.
sourcefn homogeneous_eval(&self, x: &[F; N], u: F) -> F
Evaluate the polynomial at the vector point x
and the extra variable
u
using its homogeneous form of degree D.
-Implementors§
\ No newline at end of file
+
sourcefn add_monomial(&mut self, exponents: [usize; N], coeff: F)
Add the monomial coeff * x_1^{e_1} * ... * x_N^{e_N}
to the
+polynomial, where e_i
are the values given by the array exponents
.
+For instance, to add the monomial 3 * x_1^2 * x_2^3
to the polynomial,
+one would call add_monomial([2, 3], 3)
.
+Implementors§
\ No newline at end of file
diff --git a/rustdoc/poly_commitment/commitment/fn.absorb_commitment.html b/rustdoc/poly_commitment/commitment/fn.absorb_commitment.html
index 5b6fe5dc3c..3479e4a5ba 100644
--- a/rustdoc/poly_commitment/commitment/fn.absorb_commitment.html
+++ b/rustdoc/poly_commitment/commitment/fn.absorb_commitment.html
@@ -1,4 +1,4 @@
-absorb_commitment in poly_commitment::commitment - Rust Function poly_commitment::commitment::absorb_commitment
source · pub fn absorb_commitment<Fq: Field, G: Clone, Fr: PrimeField + SquareRootField, EFqSponge: FqSponge<Fq, G, Fr>>(
+absorb_commitment in poly_commitment::commitment - Rust Function poly_commitment::commitment::absorb_commitment
source · pub fn absorb_commitment<Fq: Field, G: Clone, Fr: PrimeField + SquareRootField, EFqSponge: FqSponge<Fq, G, Fr>>(
sponge: &mut EFqSponge,
commitment: &PolyComm<G>
)
\ No newline at end of file
diff --git a/rustdoc/poly_commitment/commitment/fn.squeeze_challenge.html b/rustdoc/poly_commitment/commitment/fn.squeeze_challenge.html
index 26f1941dc9..d8360661a7 100644
--- a/rustdoc/poly_commitment/commitment/fn.squeeze_challenge.html
+++ b/rustdoc/poly_commitment/commitment/fn.squeeze_challenge.html
@@ -1,4 +1,4 @@
-squeeze_challenge in poly_commitment::commitment - Rust Function poly_commitment::commitment::squeeze_challenge
source · pub fn squeeze_challenge<Fq: Field, G, Fr: PrimeField + SquareRootField, EFqSponge: FqSponge<Fq, G, Fr>>(
+squeeze_challenge in poly_commitment::commitment - Rust Function poly_commitment::commitment::squeeze_challenge
source · pub fn squeeze_challenge<Fq: Field, G, Fr: PrimeField + SquareRootField, EFqSponge: FqSponge<Fq, G, Fr>>(
endo_r: &Fr,
sponge: &mut EFqSponge
) -> Fr
\ No newline at end of file
diff --git a/rustdoc/poly_commitment/commitment/fn.squeeze_prechallenge.html b/rustdoc/poly_commitment/commitment/fn.squeeze_prechallenge.html
index 71c6f364eb..8caa6be222 100644
--- a/rustdoc/poly_commitment/commitment/fn.squeeze_prechallenge.html
+++ b/rustdoc/poly_commitment/commitment/fn.squeeze_prechallenge.html
@@ -1,3 +1,3 @@
-squeeze_prechallenge in poly_commitment::commitment - Rust Function poly_commitment::commitment::squeeze_prechallenge
source · pub fn squeeze_prechallenge<Fq: Field, G, Fr: SquareRootField, EFqSponge: FqSponge<Fq, G, Fr>>(
+squeeze_prechallenge in poly_commitment::commitment - Rust Function poly_commitment::commitment::squeeze_prechallenge
source · pub fn squeeze_prechallenge<Fq: Field, G, Fr: SquareRootField, EFqSponge: FqSponge<Fq, G, Fr>>(
sponge: &mut EFqSponge
-) -> ScalarChallenge<Fr>
\ No newline at end of file
+) -> ScalarChallenge<Fr>
\ No newline at end of file
diff --git a/rustdoc/poly_commitment/commitment/struct.BatchEvaluationProof.html b/rustdoc/poly_commitment/commitment/struct.BatchEvaluationProof.html
index 1a1acd44a8..cd247841f4 100644
--- a/rustdoc/poly_commitment/commitment/struct.BatchEvaluationProof.html
+++ b/rustdoc/poly_commitment/commitment/struct.BatchEvaluationProof.html
@@ -1,6 +1,6 @@
BatchEvaluationProof in poly_commitment::commitment - Rust Struct poly_commitment::commitment::BatchEvaluationProof
source · pub struct BatchEvaluationProof<'a, G, EFqSponge, OpeningProof>where
G: AffineCurve,
- EFqSponge: FqSponge<G::BaseField, G, G::ScalarField>,{
+ EFqSponge: FqSponge<G::BaseField, G, G::ScalarField>,{
pub sponge: EFqSponge,
pub evaluations: Vec<Evaluation<G>>,
pub evaluation_points: Vec<G::ScalarField>,
diff --git a/rustdoc/poly_commitment/commitment/trait.EndoCurve.html b/rustdoc/poly_commitment/commitment/trait.EndoCurve.html
index efadf04185..e95bb0a2ef 100644
--- a/rustdoc/poly_commitment/commitment/trait.EndoCurve.html
+++ b/rustdoc/poly_commitment/commitment/trait.EndoCurve.html
@@ -6,7 +6,7 @@
_endo_q: Self::BaseField,
g1: &[Self],
g2: &[Self],
- x2: ScalarChallenge<Self::ScalarField>
+ x2: ScalarChallenge<Self::ScalarField>
) -> Vec<Self> { ... }
fn combine(
g1: &[Self],
@@ -23,7 +23,7 @@
_endo_q: Self::BaseField,
g1: &[Self],
g2: &[Self],
- x2: ScalarChallenge<Self::ScalarField>
+ x2: ScalarChallenge<Self::ScalarField>
) -> Vec<Self>
Combine where x1 = one
sourcefn combine(
g1: &[Self],
@@ -36,7 +36,7 @@
endo_q: Self::BaseField,
g1: &[Self],
g2: &[Self],
- x2: ScalarChallenge<Self::ScalarField>
+ x2: ScalarChallenge<Self::ScalarField>
) -> Vec<Self>
source§fn combine(
g1: &[Self],
g2: &[Self],
diff --git a/rustdoc/poly_commitment/evaluation_proof/struct.OpeningProof.html b/rustdoc/poly_commitment/evaluation_proof/struct.OpeningProof.html
index 3101a28489..3371e5f235 100644
--- a/rustdoc/poly_commitment/evaluation_proof/struct.OpeningProof.html
+++ b/rustdoc/poly_commitment/evaluation_proof/struct.OpeningProof.html
@@ -6,12 +6,12 @@
pub sg: G,
}Fields§
§lr: Vec<(G, G)>
Vector of rounds of L & R commitments
§delta: G
§z1: G::ScalarField
§z2: G::ScalarField
§sg: G
A final folded commitment base
-Implementations§
source§impl<G: AffineCurve> OpeningProof<G>
sourcepub fn prechallenges<EFqSponge: FqSponge<G::BaseField, G, G::ScalarField>>(
+
Implementations§
source§impl<G: AffineCurve> OpeningProof<G>
sourcepub fn prechallenges<EFqSponge: FqSponge<G::BaseField, G, G::ScalarField>>(
&self,
sponge: &mut EFqSponge
-) -> Vec<ScalarChallenge<G::ScalarField>>
Computes a log-sized vector of scalar challenges for
+) -> Vec<ScalarChallenge<G::ScalarField>>
Computes a log-sized vector of scalar challenges for
recombining elements inside the IPA.
-sourcepub fn challenges<EFqSponge: FqSponge<G::BaseField, G, G::ScalarField>>(
+
sourcepub fn challenges<EFqSponge: FqSponge<G::BaseField, G, G::ScalarField>>(
&self,
endo_r: &G::ScalarField,
sponge: &mut EFqSponge
@@ -38,14 +38,14 @@
sponge: EFqSponge,
rng: &mut RNG
) -> Selfwhere
- EFqSponge: Clone + FqSponge<<G as AffineCurve>::BaseField, G, <G as AffineCurve>::ScalarField>,
+ EFqSponge: Clone + FqSponge<<G as AffineCurve>::BaseField, G, <G as AffineCurve>::ScalarField>,
RNG: RngCore + CryptoRng,
Parameters: Read moresource§fn verify<EFqSponge, RNG>(
srs: &Self::SRS,
group_map: &G::Map,
batch: &mut [BatchEvaluationProof<'_, G, EFqSponge, Self>],
rng: &mut RNG
) -> boolwhere
- EFqSponge: FqSponge<G::BaseField, G, G::ScalarField>,
+ EFqSponge: FqSponge<G::BaseField, G, G::ScalarField>,
RNG: RngCore + CryptoRng,
Auto Trait Implementations§
§impl<G> RefUnwindSafe for OpeningProof<G>where
diff --git a/rustdoc/poly_commitment/pairing_proof/struct.PairingProof.html b/rustdoc/poly_commitment/pairing_proof/struct.PairingProof.html
index bb0a745b33..8d84ba85bc 100644
--- a/rustdoc/poly_commitment/pairing_proof/struct.PairingProof.html
+++ b/rustdoc/poly_commitment/pairing_proof/struct.PairingProof.html
@@ -34,7 +34,7 @@
_sponge: EFqSponge,
_rng: &mut RNG
) -> Selfwhere
- EFqSponge: Clone + FqSponge<<G as AffineCurve>::BaseField, G, F>,
+ EFqSponge: Clone + FqSponge<<G as AffineCurve>::BaseField, G, F>,
RNG: RngCore + CryptoRng,
Parameters:
Auto Trait Implementations§
§impl<Pair> RefUnwindSafe for PairingProof<Pair>where
diff --git a/rustdoc/poly_commitment/srs/struct.SRS.html b/rustdoc/poly_commitment/srs/struct.SRS.html
index 44dec2d73b..d5b1ea7880 100644
--- a/rustdoc/poly_commitment/srs/struct.SRS.html
+++ b/rustdoc/poly_commitment/srs/struct.SRS.html
@@ -12,7 +12,7 @@
batch: &mut [BatchEvaluationProof<'_, G, EFqSponge, OpeningProof<G>>],
rng: &mut RNG
) -> boolwhere
- EFqSponge: FqSponge<G::BaseField, G, G::ScalarField>,
+ EFqSponge: FqSponge<G::BaseField, G, G::ScalarField>,
RNG: RngCore + CryptoRng,
G::BaseField: PrimeField,
This function verifies a batch of polynomial commitment opening proofs.
Return true
if the verification is successful, false
otherwise.
@@ -26,7 +26,7 @@
sponge: EFqSponge,
rng: &mut RNG
) -> OpeningProof<G>where
- EFqSponge: Clone + FqSponge<G::BaseField, G, G::ScalarField>,
+ EFqSponge: Clone + FqSponge<G::BaseField, G, G::ScalarField>,
RNG: RngCore + CryptoRng,
G::BaseField: PrimeField,
G: EndoCurve,This function opens polynomial commitments in batch
diff --git a/rustdoc/poly_commitment/trait.OpenProof.html b/rustdoc/poly_commitment/trait.OpenProof.html
index e3e1a7ee4f..85c716d665 100644
--- a/rustdoc/poly_commitment/trait.OpenProof.html
+++ b/rustdoc/poly_commitment/trait.OpenProof.html
@@ -12,7 +12,7 @@
sponge: EFqSponge,
rng: &mut RNG
) -> Self
- where EFqSponge: Clone + FqSponge<<G as AffineCurve>::BaseField, G, <G as AffineCurve>::ScalarField>,
+ where EFqSponge: Clone + FqSponge<<G as AffineCurve>::BaseField, G, <G as AffineCurve>::ScalarField>,
RNG: RngCore + CryptoRng;
fn verify<EFqSponge, RNG>(
srs: &Self::SRS,
@@ -20,7 +20,7 @@
batch: &mut [BatchEvaluationProof<'_, G, EFqSponge, Self>],
rng: &mut RNG
) -> bool
- where EFqSponge: FqSponge<G::BaseField, G, G::ScalarField>,
+ where EFqSponge: FqSponge<G::BaseField, G, G::ScalarField>,
RNG: RngCore + CryptoRng;
}Required Associated Types§
Required Methods§
sourcefn open<EFqSponge, RNG, D: EvaluationDomain<<G as AffineCurve>::ScalarField>>(
srs: &Self::SRS,
@@ -32,7 +32,7 @@
sponge: EFqSponge,
rng: &mut RNG
) -> Selfwhere
- EFqSponge: Clone + FqSponge<<G as AffineCurve>::BaseField, G, <G as AffineCurve>::ScalarField>,
+ EFqSponge: Clone + FqSponge<<G as AffineCurve>::BaseField, G, <G as AffineCurve>::ScalarField>,
RNG: RngCore + CryptoRng,
Parameters:
Implementors§
source§impl<BaseField: PrimeField, G: AffineCurve<BaseField = BaseField> + CommitmentCurve + EndoCurve> OpenProof<G> for OpeningProof<G>
source§impl<F: PrimeField, G: CommitmentCurve<ScalarField = F>, G2: CommitmentCurve<ScalarField = F>, Pair: PairingEngine<G1Affine = G, G2Affine = G2>> OpenProof<G> for PairingProof<Pair>
§type SRS = PairingSRS<Pair>
\ No newline at end of file
diff --git a/rustdoc/search-index.js b/rustdoc/search-index.js
index 6f9cd71ddd..ffd552404b 100644
--- a/rustdoc/search-index.js
+++ b/rustdoc/search-index.js
@@ -13,7 +13,7 @@ var searchIndex = JSON.parse('{\
"mina_hasher":{"doc":"Mina hasher","t":"QIGIICCCFFKKLKLKAKAKKDGGLLLLLLLLLLLLLLLLDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["D","DomainParameter","Fp","Hashable","Hasher","PoseidonHasherKimchi","PoseidonHasherLegacy","ROInput","create_kimchi","create_legacy","digest","domain_string","hash","init","init_and_hash","into_bytes","poseidon","reset","roinput","to_roinput","update","Poseidon","PoseidonHasherKimchi","PoseidonHasherLegacy","borrow","borrow_mut","deref","deref_mut","digest","drop","from","init","init","into","reset","try_from","try_into","type_id","update","vzip","ROInput","append_bool","append_bytes","append_field","append_hashable","append_roinput","append_scalar","append_u32","append_u64","borrow","borrow_mut","clone","clone_into","default","deref","deref_mut","drop","eq","equivalent","fmt","from","init","into","new","to_bytes","to_fields","to_owned","try_from","try_into","type_id","vzip"],"q":[[0,"mina_hasher"],[21,"mina_hasher::poseidon"],[40,"mina_hasher::roinput"]],"d":["Generic domain string argument type","The domain parameter trait is used during hashing to …","","Interface for hashable objects","Interface for hashing Hashable
inputs","","","","Create an experimental kimchi hasher context","Create a legacy hasher context","Obtain has result output","Generate unique domain string of length <= 20
.","Hash input and obtain result output","Set the initial state based on domain separation string …","Initialize state, hash input and obtain result output","Conversion into vector of bytes","Mina Poseidon hasher","Restore the initial state that was set most recently","Random oracle input structures and algorithms","Serialization to random oracle input","Consume hash input
","Poseidon hasher context","Poseidon hasher type with experimental kimchi plonk sponge …","Poseidon hasher type with legacy plonk sponge constants","","","","","","","Returns the argument unchanged.","","","Calls U::from(self)
.","","","","","","","Random oracle input structure","Append a single bit","Append bytes","Append a base field element","Append a Hashable
input","Append another random oracle input","Append a scalar field element","Append a 32-bit unsigned integer","Append a 64-bit unsigned integer","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self)
.","Create a new empty random oracle input","Serialize random oracle input to bytes","Serialize random oracle input to vector of base field …","","","","",""],"i":[1,0,0,0,0,0,0,0,0,0,7,1,7,7,7,23,0,7,0,1,7,0,0,0,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,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,10,10,10,10,10,10],"f":[0,0,0,0,0,0,0,0,[[],[[2,[1]]]],[[],[[3,[1]]]],[[],4],[[],[[6,[5]]]],[[],4],[[],7],[[],4],[[],[[9,[8]]]],0,[[],7],0,[[],10],[[],7],0,0,0,[[]],[[]],[11],[11],[[[13,[12,1]]],4],[11],[[]],[[],11],[[[13,[12,1]]],7],[[]],[[[13,[12,1]]],7],[[],14],[[],14],[[],15],[[[13,[12,1]],1],7],[[]],0,[[10,16],10],[[10,[17,[8]]],10],[[10,4],10],[[10,1],10],[[10,10],10],[[10,18],10],[[10,19],10],[[10,20],10],[[]],[[]],[10,10],[[]],[[],10],[11],[11],[11],[[10,10],16],[[],16],[[10,21],22],[[]],[[],11],[[]],[[],10],[10,[[9,[8]]]],[10,[[9,[4]]]],[[]],[[],14],[[],14],[[],15],[[]]],"c":[],"p":[[8,"Hashable"],[6,"PoseidonHasherKimchi"],[6,"PoseidonHasherLegacy"],[6,"Fp"],[3,"String"],[4,"Option"],[8,"Hasher"],[15,"u8"],[3,"Vec"],[3,"ROInput"],[15,"usize"],[8,"SpongeConstants"],[3,"Poseidon"],[4,"Result"],[3,"TypeId"],[15,"bool"],[15,"slice"],[6,"Fq"],[15,"u32"],[15,"u64"],[3,"Formatter"],[6,"Result"],[8,"DomainParameter"]]},\
"mina_poseidon":{"doc":"","t":"CAAAAAASSSSSSDDSSSILLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFAAAAFFFFFFFFFNDDIENKLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLMKLKLMFLMKLMLLLLLLLLLLLLLLLRDDIDKLKLKLLLLLLLAKLKLLLLLLLLLLLKLKLLLLFLLLLLLLLLLLMMKLMMLLLLLLLLLLLLLLLLLLLLDLLLLLLLLLLLLLLLLLLLLLL","n":["FqSponge","constants","dummy_values","pasta","permutation","poseidon","sponge","PERM_FULL_MDS","PERM_HALF_ROUNDS_FULL","PERM_INITIAL_ARK","PERM_ROUNDS_FULL","PERM_ROUNDS_PARTIAL","PERM_SBOX","PlonkSpongeConstantsKimchi","PlonkSpongeConstantsLegacy","SPONGE_CAPACITY","SPONGE_RATE","SPONGE_WIDTH","SpongeConstants","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","deref","deref","deref_mut","deref_mut","drop","drop","from","from","init","init","into","into","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","kimchi_dummy","fp_kimchi","fp_legacy","fq_kimchi","fq_legacy","params","static_params","static_params","params","static_params","static_params","full_round","half_rounds","poseidon_block_cipher","Absorbed","ArithmeticSponge","ArithmeticSpongeParams","Sponge","SpongeState","Squeezed","absorb","absorb","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","constants","default","deref","deref","deref","deref_mut","deref_mut","deref_mut","deserialize","drop","drop","drop","fmt","fmt","from","from","from","full_round","init","init","init","into","into","into","mds","new","new","reset","reset","round_constants","sbox","serialize","sponge_state","squeeze","squeeze","state","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","CHALLENGE_LENGTH_IN_LIMBS","DefaultFqSponge","DefaultFrSponge","FqSponge","ScalarChallenge","absorb_fq","absorb_fq","absorb_fr","absorb_fr","absorb_g","absorb_g","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","caml","challenge","challenge","challenge_fq","challenge_fq","clone","clone","clone_into","clone_into","deref","deref","deref","deref_mut","deref_mut","deref_mut","digest","digest","digest_fq","digest_fq","drop","drop","drop","endo_coefficient","fmt","from","from","from","from","init","init","init","into","into","into","last_squeezed","last_squeezed","new","new","sponge","sponge","squeeze","squeeze","squeeze_field","squeeze_limbs","to_field","to_field_with_length","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","CamlScalarChallenge","borrow","borrow_mut","clone","clone_into","deref","deref_mut","drop","fmt","from","from","from_value","init","into","into_value","ocaml_binding","ocaml_desc","to_owned","try_from","try_into","type_id","unique_id","vzip"],"q":[[0,"mina_poseidon"],[7,"mina_poseidon::constants"],[49,"mina_poseidon::dummy_values"],[50,"mina_poseidon::pasta"],[54,"mina_poseidon::pasta::fp_kimchi"],[56,"mina_poseidon::pasta::fp_legacy"],[57,"mina_poseidon::pasta::fq_kimchi"],[59,"mina_poseidon::pasta::fq_legacy"],[60,"mina_poseidon::permutation"],[63,"mina_poseidon::poseidon"],[134,"mina_poseidon::sponge"],[211,"mina_poseidon::sponge::caml"]],"d":["","","","","The permutation module contains the function implementing …","This module implements Poseidon Hash Function primitive","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self)
.","Calls U::from(self)
.","","","","","","","","","","","Placeholder dummy value for the kimchi configuration, …","","","","","","the fp sponge params","the legacy fp sponge params","","the fq sponge params","the legacy fq sponge params","Apply a full round of the permutation. A full round is …","","","","","","Cryptographic sponge interface - for hashing an arbitrary …","","","Absorb an array of field elements x
","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","","Create a new cryptographic sponge using arithmetic sponge …","","Reset the sponge back to its initial state (as if it were …","","","","","","Squeeze an output from the sponge","","","","","","","","","","","","","","","","","","","","","Abstracts a sponge operating on a base field Fq
of the …","A challenge which is used as a scalar on a group element …","Absorbs a base field element. This operation is the most …","","Absorbs an element of the scalar field Fr
— it is done …","","Absorbs a base field point, that is a pair of Fq
elements.","","","","","","","","","Squeeze out a challenge in the scalar field. Implemented by","","Squeeze out a base field challenge. This operation is the …","","","","","","","","","","","","Returns a scalar field digest using the binary …","","Returns a base field digest by squeezing the underlying …","","","","","","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","","","Creates a new sponge.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","","Calls U::from(self)
.","","","","","","","","",""],"i":[0,0,0,0,0,0,0,13,13,13,13,13,13,0,0,13,13,13,0,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,43,14,15,8,14,15,8,14,15,8,14,15,8,14,14,8,15,8,14,15,8,14,8,15,8,14,15,8,15,8,14,14,15,8,14,15,8,14,8,43,14,43,14,8,0,8,14,43,14,14,15,8,14,15,8,14,15,8,14,15,8,14,15,8,14,0,0,0,0,0,44,24,44,24,44,24,30,26,24,30,26,24,0,44,24,44,24,26,24,26,24,30,26,24,30,26,24,44,24,44,24,30,26,24,0,26,30,26,26,24,30,26,24,30,26,24,30,24,44,24,30,24,30,24,24,24,26,26,26,24,30,26,24,30,26,24,30,26,24,30,26,24,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29],"f":[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],[3],[3],[3],[3],[[]],[[]],[[],3],[[],3],[[]],[[]],[[]],[[]],[[],4],[[],4],[[],4],[[],4],[[],5],[[],5],[[]],[[]],[[],[[8,[[0,[6,7]]]]]],0,0,0,0,[[],[[8,[9]]]],[[],[[8,[9]]]],[[],[[8,[9]]]],[[],[[8,[10]]]],[[],[[8,[10]]]],[[],[[8,[10]]]],[[[8,[6]],[11,[6]],3]],[[[8,[6]],[12,[6]]]],[[[8,[6]],[11,[6]]]],0,0,0,0,0,0,[12],[[[14,[6,13]],[12,[6]]]],[[]],[[]],[[]],[[]],[[]],[[]],[15,15],[[[8,[[0,[16,6]]]]],[[8,[[0,[16,6]]]]]],[[[14,[[0,[16,6]],[0,[16,13]]]]],[[14,[[0,[16,6]],[0,[16,13]]]]]],[[]],[[]],[[]],0,[[],[[8,[[0,[17,6]]]]]],[3],[3],[3],[3],[3],[3],[18,[[4,[[8,[6]]]]]],[3],[3],[3],[[15,19],20],[[[8,[[0,[21,6]]]],19],20],[[]],[[]],[[]],[[[14,[6,13]],3]],[[],3],[[],3],[[],3],[[]],[[]],[[]],0,[8],[[[8,[6]]],[[14,[6,13]]]],[[]],[[[14,[6,13]]]],0,[6,6],[[[8,[6]],22],4],0,[[]],[[[14,[6,13]]],6],0,[[]],[[]],[[]],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],5],[[],5],[[],5],[[]],[[]],[[]],0,0,0,0,0,[12],[[[24,[23,13]],12]],[12],[[[24,[23,13]],12]],[12],[[[24,[23,13]],[12,[[25,[23]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[]],[[[24,[23,13]]]],[[]],[[[24,[23,13]]]],[[[26,[16]]],[[26,[16]]]],[[[24,[[0,[16,23]],[0,[16,13]]]]],[[24,[[0,[16,23]],[0,[16,13]]]]]],[[]],[[]],[3],[3],[3],[3],[3],[3],[[]],[[[24,[23,13]]]],[[]],[[[24,[23,13]]]],[3],[3],[3],[[],27],[[[26,[21]],19],20],[[]],[[[29,[28]]],26],[[]],[[]],[[],3],[[],3],[[],3],[[]],[[]],[[]],0,0,[8],[8,[[24,[23,13]]]],0,0,[[[30,[27,13]],3],27],[[[24,[23,13]],3]],[[[24,[23,13]]]],[[[24,[23,13]],3],[[11,[31]]]],[[[26,[27]],27],27],[[[26,[27]],3,27],27],[[]],[[]],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],5],[[],5],[[],5],[[]],[[]],[[]],0,[[]],[[]],[[[29,[16]]],[[29,[16]]]],[[]],[3],[3],[3],[[[29,[21]],19],20],[[]],[26,[[29,[32]]]],[33,[[29,[34]]]],[[],3],[[]],[[[29,[35]],36],33],[[37,[39,[38]],40],41],[[37,[12,[38]]],41],[[]],[[],4],[[],4],[[],5],[[],42],[[]]],"c":[],"p":[[3,"PlonkSpongeConstantsLegacy"],[3,"PlonkSpongeConstantsKimchi"],[15,"usize"],[4,"Result"],[3,"TypeId"],[8,"Field"],[8,"FromStr"],[3,"ArithmeticSpongeParams"],[6,"Fp"],[6,"Fq"],[3,"Vec"],[15,"slice"],[8,"SpongeConstants"],[3,"ArithmeticSponge"],[4,"SpongeState"],[8,"Clone"],[8,"Default"],[8,"Deserializer"],[3,"Formatter"],[6,"Result"],[8,"Debug"],[8,"Serializer"],[8,"SWModelParameters"],[3,"DefaultFqSponge"],[3,"GroupAffine"],[3,"ScalarChallenge"],[8,"PrimeField"],[8,"Into"],[3,"CamlScalarChallenge"],[3,"DefaultFrSponge"],[15,"u64"],[8,"From"],[4,"Value"],[8,"FromValue"],[8,"IntoValue"],[3,"OCamlRuntime"],[3,"Env"],[15,"str"],[4,"Option"],[15,"bool"],[3,"String"],[15,"u128"],[8,"Sponge"],[8,"FqSponge"]]},\
"mina_signer":{"doc":"Mina signer","t":"GCGCNECGCCCINLLLLFFLLLLLLLLAAAAKALLLLKLDENNGNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLNNNNNDNRNDEGNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLMDLLLLLLLLLLLLLLRGDENNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDLLLLLLLLLLLLLLLMMLLLLLL","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","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","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","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","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"],[98,"mina_signer::pubkey"],[196,"mina_signer::schnorr"],[211,"mina_signer::seckey"],[270,"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,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,16,16,16,16,16,0,16,0,16,0,0,0,16,16,16,16,16,16,16,13,30,16,13,30,16,13,30,16,13,30,16,13,30,16,13,30,16,13,30,30,16,13,30,16,13,30,16,16,13,13,30,16,13,30,13,30,13,30,13,30,13,13,30,16,13,30,16,13,30,13,30,13,13,30,13,16,13,30,13,30,16,13,30,16,13,16,13,30,16,13,30,16,13,30,16,13,30,30,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,0,0,0,17,17,17,17,17,17,17,23,17,23,17,23,17,23,17,23,17,23,17,23,17,23,17,23,17,17,23,17,23,23,23,23,17,23,17,23,23,23,17,23,23,23,23,23,17,23,17,17,23,17,23,17,23,17,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],"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],[[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,[[]],[[]],[[]],[[]],[[]],[[]],[16,16],[13,13],[30,30],[[]],[[]],[[]],[4],[4],[4],[4],[4],[4],[4],[4],[4],[[],30],[[16,16],14],[[13,13],14],[[30,30],14],[[],14],[[],14],[[],14],[[16,5],6],[[16,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,[[]],[[]],[[]],[[]],[17,17],[23,23],[[]],[[]],[4],[4],[4],[4],[4],[4],[[17,17],14],[[23,23],14],[[],14],[[],14],[[17,5],6],[[17,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],[[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,"PubKeyError"],[4,"SecKeyError"],[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":"","t":"IKKKKKKKAKAKADLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDLLFFLLLLLLFLLLLLFLFLLLLLLL","n":["MVPoly","degree","double","eval","from_expr","homogeneous_eval","is_constant","is_homogeneous","monomials","mul_by_scalar","prime","random","utils","Sparse","add","add","add","add","add_monomial","borrow","borrow_mut","clone","clone_into","degree","deref","deref_mut","double","drop","eq","equivalent","eval","fmt","from","from","from","from","from_expr","homogeneous_eval","init","into","is_constant","is_homogeneous","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","Dense","add","add","add","add","borrow","borrow_mut","clone","clone_into","compute_normalized_indices","default","degree","deref","deref_mut","dimension","double","drop","eq","equivalent","eval","fmt","from","from","from","from","from","from_coeffs","from_expr","from_variable","homogeneous_eval","increase_degree","index","index_mut","init","into","is_constant","is_homogeneous","is_zero","iter","maximum_degree","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"],[13,"mvpoly::monomials"],[61,"mvpoly::prime"],[119,"mvpoly::utils"]],"d":["Generic trait to represent a multi-variate polynomial","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 …","Evaluate the polynomial at the vector point x
and the …","","Returns true if the polynomial is homogeneous (of degree D
…","","","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,25,25,25,25,25,25,25,0,25,0,25,0,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,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,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,15,15,15,15,15,15,15,0,23,23,0,0,23,23,23,23,23,23,0,23,23,23,23,23,0,23,0,23,23,23,23,23,23,23],"f":[0,[[],1],[[]],[2],[[[5,[3,[4,[1]]]]]],[2],[[],6],[[],6],0,[[]],0,[[7,[8,[1]]]],0,0,[[[10,[9]],[10,[9]]]],[[[10,[9]],[10,[9]]],[[10,[9]]]],[[[10,[9]],[10,[9]]]],[[[10,[9]],[10,[9]]]],[[[10,[9]],[2,[1]],9]],[[]],[[]],[[[10,[[0,[11,9]]]]],[[10,[[0,[11,9]]]]]],[[]],[[[10,[9]]],1],[1],[1],[[[10,[9]]],[[10,[9]]]],[1],[[[10,[9]],[10,[9]]],6],[[],6],[[[10,[9]],[2,[9]]],9],[[[10,[9]],12],13],[14],[[]],[[[15,[9]]],[[10,[9]]]],[9,[[10,[9]]]],[[[5,[[3,[9]],[4,[1]]]]],[[10,[9]]]],[[[10,[9]],[2,[9]],9],9],[[],1],[[]],[[[10,[9]]],6],[[[10,[9]]],6],[[[10,[9]]],6],[[[10,[9]],[2,[1]],9]],0,[[[10,[9]],[10,[9]]],[[10,[9]]]],[[[10,[9]],9],[[10,[9]]]],[[[10,[9]]]],[[[10,[9]]]],[[],[[10,[9]]]],[[7,[8,[1]]],[[10,[9]]]],[[[10,[9]],[10,[9]]]],[[[10,[9]],[10,[9]]]],[[[10,[9]],[10,[9]]]],[[[10,[9]],[10,[9]]]],[[]],[[],16],[[],16],[[],17],[[]],[[],[[10,[9]]]],0,[[[15,[9]],[15,[9]]],[[15,[9]]]],[[[15,[9]],[15,[9]]],[[15,[9]]]],[[[15,[9]],[15,[9]]],[[15,[9]]]],[[[15,[9]],[15,[9]]],[[15,[9]]]],[[]],[[]],[[[15,[[0,[11,9]]]]],[[15,[[0,[11,9]]]]]],[[]],[[],[[18,[1]]]],[[],[[15,[9]]]],[[[15,[9]]],1],[1],[1],[[],1],[[[15,[9]]],[[15,[9]]]],[1],[[[15,[9]],[15,[9]]],6],[[],6],[[[15,[9]],[2,[9]]],9],[[[15,[9]],12],13],[14],[[[20,[[19,[9]]]]],[[15,[9]]]],[9,[[15,[9]]]],[[[19,[9]]],[[15,[9]]]],[[]],[[[18,[9]]],[[15,[9]]]],[[[5,[[3,[9]],[4,[1]]]]],[[15,[9]]]],[[[4,[1]]],[[15,[9]]]],[[[15,[9]],[2,[9]],9],9],[[[15,[9]]],[[15,[9]]]],[[[15,[9]],1]],[[[15,[9]],1]],[[],1],[[]],[[[15,[9]]],6],[[[15,[9]]],6],[[[15,[9]]],6],[[[15,[9]]],21],[[[15,[9]]],1],[[[15,[9]],[15,[9]]],[[15,[9]]]],[[[15,[9]],9],[[15,[9]]]],[[[15,[9]]]],[[[15,[9]]]],[[],[[15,[9]]]],[[[15,[9]]],1],[[],[[15,[9]]]],[[7,[8,[1]]],[[15,[9]]]],[[[15,[9]],[15,[9]]],[[15,[9]]]],[[[15,[9]],[15,[9]]],[[15,[9]]]],[[[15,[9]],[15,[9]]],[[15,[9]]]],[[[15,[9]],[15,[9]]],[[15,[9]]]],[[]],[[],16],[[],16],[[],17],[[]],[[],[[15,[9]]]],0,[[]],[[]],[[1,[22,[1,18]],23],18],[[[18,[1]]],[[18,[[18,[1]]]]]],[[],23],[1],[1],[1],[[]],[[23,1],[[18,[1]]]],[[],[[18,[1]]]],[23,1],[[23,1],1],[[],1],[[]],[[]],[1,6],[[23,1],6],[[1,23],18],[[],23],[23,8],[[],24],[[],16],[[],16],[[],17],[[]]],"c":[],"p":[[15,"usize"],[15,"array"],[6,"ConstantExpr"],[8,"Into"],[6,"Expr"],[15,"bool"],[8,"RngCore"],[4,"Option"],[8,"PrimeField"],[3,"Sparse"],[8,"Clone"],[3,"Formatter"],[6,"Result"],[15,"never"],[3,"Dense"],[4,"Result"],[3,"TypeId"],[3,"Vec"],[4,"ConstantExprInner"],[4,"Operations"],[8,"Iterator"],[3,"HashMap"],[3,"PrimeNumberGenerator"],[3,"IterBridge"],[8,"MVPoly"]]},\
+"mvpoly":{"doc":"","t":"IKKKKKKKKAKAKADLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDLLFFLLLLLLFLLLLLFLFLLLLLLL","n":["MVPoly","add_monomial","degree","double","eval","from_expr","homogeneous_eval","is_constant","is_homogeneous","monomials","mul_by_scalar","prime","random","utils","Sparse","add","add","add","add","add_monomial","borrow","borrow_mut","clone","clone_into","degree","deref","deref_mut","double","drop","eq","equivalent","eval","fmt","from","from","from","from","from_expr","homogeneous_eval","init","into","is_constant","is_homogeneous","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","Dense","add","add","add","add","add_monomial","borrow","borrow_mut","clone","clone_into","compute_normalized_indices","default","degree","deref","deref_mut","dimension","double","drop","eq","equivalent","eval","fmt","from","from","from","from","from","from_coeffs","from_expr","from_variable","homogeneous_eval","increase_degree","index","index_mut","init","into","is_constant","is_homogeneous","is_zero","iter","maximum_degree","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"],[14,"mvpoly::monomials"],[62,"mvpoly::prime"],[121,"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","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 …","Evaluate the polynomial at the vector point x
and the …","","Returns true if the polynomial is homogeneous (of degree D
…","","","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,25,25,25,25,25,25,25,25,0,25,0,25,0,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,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,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,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,0,23,23,0,0,23,23,23,23,23,23,0,23,23,23,23,23,0,23,0,23,23,23,23,23,23,23],"f":[0,[[[2,[1]]]],[[],1],[[]],[2],[[[5,[3,[4,[1]]]]]],[2],[[],6],[[],6],0,[[]],0,[[7,[8,[1]]]],0,0,[[[10,[9]],[10,[9]]]],[[[10,[9]],[10,[9]]]],[[[10,[9]],[10,[9]]]],[[[10,[9]],[10,[9]]],[[10,[9]]]],[[[10,[9]],[2,[1]],9]],[[]],[[]],[[[10,[[0,[11,9]]]]],[[10,[[0,[11,9]]]]]],[[]],[[[10,[9]]],1],[1],[1],[[[10,[9]]],[[10,[9]]]],[1],[[[10,[9]],[10,[9]]],6],[[],6],[[[10,[9]],[2,[9]]],9],[[[10,[9]],12],13],[9,[[10,[9]]]],[[[14,[9]]],[[10,[9]]]],[[]],[15],[[[5,[[3,[9]],[4,[1]]]]],[[10,[9]]]],[[[10,[9]],[2,[9]],9],9],[[],1],[[]],[[[10,[9]]],6],[[[10,[9]]],6],[[[10,[9]]],6],[[[10,[9]],[2,[1]],9]],0,[[[10,[9]],[10,[9]]],[[10,[9]]]],[[[10,[9]],9],[[10,[9]]]],[[[10,[9]]]],[[[10,[9]]]],[[],[[10,[9]]]],[[7,[8,[1]]],[[10,[9]]]],[[[10,[9]],[10,[9]]]],[[[10,[9]],[10,[9]]]],[[[10,[9]],[10,[9]]]],[[[10,[9]],[10,[9]]]],[[]],[[],16],[[],16],[[],17],[[]],[[],[[10,[9]]]],0,[[[14,[9]],[14,[9]]],[[14,[9]]]],[[[14,[9]],[14,[9]]],[[14,[9]]]],[[[14,[9]],[14,[9]]],[[14,[9]]]],[[[14,[9]],[14,[9]]],[[14,[9]]]],[[[14,[9]],[2,[1]],9]],[[]],[[]],[[[14,[[0,[11,9]]]]],[[14,[[0,[11,9]]]]]],[[]],[[],[[18,[1]]]],[[],[[14,[9]]]],[[[14,[9]]],1],[1],[1],[[],1],[[[14,[9]]],[[14,[9]]]],[1],[[[14,[9]],[14,[9]]],6],[[],6],[[[14,[9]],[2,[9]]],9],[[[14,[9]],12],13],[9,[[14,[9]]]],[15],[[]],[[[19,[9]]],[[14,[9]]]],[[[20,[[19,[9]]]]],[[14,[9]]]],[[[18,[9]]],[[14,[9]]]],[[[5,[[3,[9]],[4,[1]]]]],[[14,[9]]]],[[[4,[1]]],[[14,[9]]]],[[[14,[9]],[2,[9]],9],9],[[[14,[9]]],[[14,[9]]]],[[[14,[9]],1]],[[[14,[9]],1]],[[],1],[[]],[[[14,[9]]],6],[[[14,[9]]],6],[[[14,[9]]],6],[[[14,[9]]],21],[[[14,[9]]],1],[[[14,[9]],[14,[9]]],[[14,[9]]]],[[[14,[9]],9],[[14,[9]]]],[[[14,[9]]]],[[[14,[9]]]],[[],[[14,[9]]]],[[[14,[9]]],1],[[],[[14,[9]]]],[[7,[8,[1]]],[[14,[9]]]],[[[14,[9]],[14,[9]]],[[14,[9]]]],[[[14,[9]],[14,[9]]],[[14,[9]]]],[[[14,[9]],[14,[9]]],[[14,[9]]]],[[[14,[9]],[14,[9]]],[[14,[9]]]],[[]],[[],16],[[],16],[[],17],[[]],[[],[[14,[9]]]],0,[[]],[[]],[[1,[22,[1,18]],23],18],[[[18,[1]]],[[18,[[18,[1]]]]]],[[],23],[1],[1],[1],[[]],[[23,1],[[18,[1]]]],[[],[[18,[1]]]],[23,1],[[23,1],1],[[],1],[[]],[[]],[1,6],[[23,1],6],[[1,23],18],[[],23],[23,8],[[],24],[[],16],[[],16],[[],17],[[]]],"c":[],"p":[[15,"usize"],[15,"array"],[6,"ConstantExpr"],[8,"Into"],[6,"Expr"],[15,"bool"],[8,"RngCore"],[4,"Option"],[8,"PrimeField"],[3,"Sparse"],[8,"Clone"],[3,"Formatter"],[6,"Result"],[3,"Dense"],[15,"never"],[4,"Result"],[3,"TypeId"],[3,"Vec"],[4,"ConstantExprInner"],[4,"Operations"],[8,"Iterator"],[3,"HashMap"],[3,"PrimeNumberGenerator"],[3,"IterBridge"],[8,"MVPoly"]]},\
"o1_utils":{"doc":"A collection of utility functions and constants that can …","t":"CCCCCCCCCCAAAAOOAAAAAAAAAADLLLLLLLLLLLLLLLLFFFIKKIKKKDLLMLLLLLLLLLLMLLLLLDLLLLLLLLLLMMLLLLIKKKKIKKKKINNNIENIGIKLLLLLLLLLLLLLKKKKKFLLLLLLLKKKKLLLLKKLLDILLLLLLLLLLLLLLLLLLMLLLLLLKLKLKLLLLISLFFDDLLLLLLLLLLLLLLLLLLALLLLLLLLLLFFF","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","fmt","fmt","from","from_biguint","from_bits","from_bytes","from_hex","gen","gen_field_with_bits","i32_to_field","init","into","modulus_biguint","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","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","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"],[149,"o1_utils::foreign_field"],[185,"o1_utils::hasher"],[188,"o1_utils::math"],[190,"o1_utils::serialization"],[221,"o1_utils::serialization::ser"],[223,"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","","Calls U::from(self)
.","Get the modulus as BigUint
","","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 (de)serialization.","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self)
.","Calls U::from(self)
.","You can use this module for serialization and …","","","","","","","","","","","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,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,42,42,0,43,43,43,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,44,44,44,44,0,45,45,45,45,0,24,24,24,0,0,24,0,0,0,46,24,24,24,24,24,24,24,24,24,24,24,24,46,46,46,46,47,47,0,24,24,46,24,46,46,46,46,46,48,46,24,24,24,24,49,49,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,50,37,50,37,50,37,37,37,37,0,51,51,0,0,0,0,52,53,52,53,52,53,52,53,52,53,52,53,52,53,52,53,52,53,0,52,53,52,53,52,53,52,53,52,53,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],[3,[[5,[4]]]],[[]],[[],1],[[]],[[]],[[[5,[6,4]]],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],[[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],[[]],[[],28],[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],[[[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],[[],8],[[],8],[[],8],[[],8],[[],9],[[],9],[[]],[[]],[17,[[8,[39]]]],[[40,18],8],[[[7,[[11,[29]]]]],41]],"c":[],"p":[[15,"usize"],[15,"never"],[8,"IntoIterator"],[8,"Iterator"],[3,"AdjacentPairs"],[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"],[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":"GGRGGCCGGAAAAAAAAAANNNRRDDDNRRRRRDDDDNDDEDDMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMLLLLLLLLLLLLMLLLLLLLLLLLLMMMMMMMMMMMMMMMMLLMMMMMMFMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFFNEDDDDDNNMMLLLLLLLLLLLLLLMLLLLLLLLLLLLMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLLLLLLMMLLLLLLLMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMNNNNCNNNENENNNNNNNCNCNNNNLLLLLLLLAALLLLLLALLLLLLALLALLALLFFLLALLLLLLLLANEDNNNENNNGNNRRRNNNNNNNNNNNNNNNNNNNEDNNEDNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDLLLLLLLLMLLLLLLLLMLLLLLLLDLLLLMLLLLLLLLLLLLMLLLLLLMLLDGGGLLLLLLLLLLLLLLLLLLLLLLLIIILLLLLLLLLLLLLLLLKLLLIIQKLLLKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLGGLLLLLLLDLLLLLLLLLLLLLLLLMMLLLLLLLMNNNENNNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLCCCCAAAAAAAENGRRRNLLLLLLLLLLLLLLLLLLLLLLLLLLLLDLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLMLLLLLLLLLLLLLLDGGGLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNNNNNNNNNNRRRRRRRNEDEDINEDNNNNNNNNNNNNNNNNNNNNNNNNQNEDRRRRRRRNNNNNNNNNNNNNNNNNNNNNNNNNNNNNQNNLLLKKKKKLLLKLLLLLLLLLLLLLLLLKKKLLLLLLLLLLLLLLLLLLLLKKKKALLLLLLLLLLLLLLLLLLLKKLLLLLLLLLLLLKLLLLKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLKFFFFLLLLLLLLLLLLLKLLLLLLLLLLLLKKKLLLLLLLLKLLLLKLLLLLLLLKKLLKKLLLLLLKKKKLLKKKLLLLLKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLKDLLLLLLLLLLLLLLLMLLMMMMLMLLLLLRRRRRRRRRDLLLLMLLLLLLLMMMLLLLLMMMMLLLLLLGGLLLLLLLDRRRRRRRRDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLLLLMLLLMMMMMMLLLLLLLMMMMLLLLMMLLLLMMLLLLLLMLLLLLLLLLLLLLLLLLLDIDDLLLLLLMLFLLLLLLLLLLLLKLKLMMLLLLLLMMMLLLLLLLLLLLLLMFEDNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLIDIQDILLLLLLLLMLLLLMMLLKLLLLLKLLLLLLMKLKLKLKLKKLLLKLLLMLLLLLLLLM","n":["BaseSponge","Curve","DOMAIN_SIZE","Fp","OpeningProof","RAMLookup","RAMLookupMode","ScalarSponge","SpongeParams","cannon","cannon_cli","folding","keccak","lookups","mips","preimage_oracle","proof","ramlookup","trace","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","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","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","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","get_alphas","get_blinder","get_hash","get_hash","hash","hash","index","index","init","init","init","init","init","init","instances","instances","into","into","into","into","into","into","into_iter","iter","len","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","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","fmt","fmt","folding","from","from","helpers","init","init","interpreter","into","into","pad_blocks","standardize","to_owned","to_owned","trace","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","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","get_hash","get_hash","get_hash","get_hash","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","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","KeccakConfig","KeccakFoldingEnvironment","KeccakFoldingInstance","KeccakFoldingWitness","borrow","borrow_mut","clone","clone_into","deref","deref_mut","drop","eq","equivalent","fmt","from","get_hash","hash","index","index","index","init","into","to_owned","try_from","try_into","type_id","vzip","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","DecomposedKeccakTrace","KeccakTrace","init","new","pad_dummy","pad_with_row","pad_with_zeros","pad_witnesses","push_row","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","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","fmt","from","from_u32","get_hash","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","ITypeInstruction","Instruction","JTypeInstruction","RTypeInstruction","column","constraints","folding","interpreter","registers","trace","witness","ColumnAlias","InstructionCounter","MIPSWitness","N_MIPS_COLS","N_MIPS_REL_COLS","N_MIPS_SEL_COLS","ScratchState","borrow","borrow_mut","clone","clone_into","cmp","deref","deref_mut","drop","eq","equivalent","fmt","from","get_hash","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","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","increase_instruction_counter","init","instruction_counter","into","inverse_or_zero","lookups","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","scratch_state_idx","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","DecomposableMIPSFoldingConfig","DecomposableMIPSFoldingEnvironment","MIPSFoldingInstance","MIPSFoldingWitness","borrow","borrow_mut","clone","clone_into","deref","deref_mut","drop","eq","equivalent","fmt","from","get_hash","hash","index","index","index","init","into","to_owned","try_from","try_into","type_id","vzip","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","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_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","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_hash","get_hash","get_hash","get_hash","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","inverse_or_zero","is_zero","iter","iter","iter","iter","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","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","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","DecomposedMIPSTrace","MIPSTrace","init","new","pad_dummy","pad_with_row","pad_with_zeros","pad_witnesses","push_row","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","SCRATCH_SIZE","SyscallEnv","add_constraint","add_lookup","add_witness","alloc_scratch","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","inverse_or_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_scratch_state","scratch_state","scratch_state_idx","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","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","fold","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","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","lookups","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"],"q":[[0,"o1vm"],[19,"o1vm::cannon"],[271,"o1vm::cannon_cli"],[273,"o1vm::folding"],[417,"o1vm::keccak"],[488,"o1vm::keccak::column"],[706,"o1vm::keccak::constraints"],[732,"o1vm::keccak::environment"],[760,"o1vm::keccak::folding"],[787,"o1vm::keccak::helpers"],[810,"o1vm::keccak::interpreter"],[908,"o1vm::keccak::trace"],[917,"o1vm::keccak::witness"],[944,"o1vm::lookups"],[985,"o1vm::mips"],[996,"o1vm::mips::column"],[1031,"o1vm::mips::constraints"],[1093,"o1vm::mips::folding"],[1120,"o1vm::mips::interpreter"],[1485,"o1vm::mips::interpreter::debugging"],[1515,"o1vm::mips::registers"],[1555,"o1vm::mips::trace"],[1564,"o1vm::mips::witness"],[1679,"o1vm::preimage_oracle"],[1733,"o1vm::proof"],[1734,"o1vm::ramlookup"],[1779,"o1vm::trace"]],"d":["","Elliptic curve group of BN254","Domain size shared by the Keccak evaluations, MIPS …","Scalar field of BN254","","","","","","Modules mimicking the defined structures used by Cannon …","A CLI mimicking the Cannon CLI.","Integration with folding. Contains common trait …","Implementation of Keccak used by the zkVM.","Instantiation of the lookups for the VM project. …","MIPS interpreter. This module implements a zero-knowledge …","Preimage oracle interface used by the zkVM.","Proof system of the zkVM.","The RAM lookup argument.","Abstract execution traces, possible long, that can be …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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)
.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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","","","","","","","","","","","","","","","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)
.","","","","","","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 …","The Keccak circuit trace","A Keccak instruction trace","","","","","","","","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)","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)
.","","","","","","","","","","","","","","","","","","","","","","","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 …","","","","","","","","","","","","","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 …","","","","","","","","","","","","","A list of constraints, which are multi-variate polynomials …","","","","","","","","","","","","","","","Returns the argument unchanged.","","","","Calls U::from(self)
.","","","","","","","","","","","","","","This function checks that the preimage is read correctly. …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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)
.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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 …","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","","","","","Returns x^(-1)
, or 0
if x
is 0
, storing the result in …","","","","","","","","","","Adds a lookup to the RangeCheck16Lookup table","Adds a lookup to the AtMost4Lookup table","Adds a lookup to the ByteLookup table","Returns ((x * y) >> 32, (x * y) & ((1 << 32) - 1))
, …","Returns ((x * y) >> 32, (x * y) & ((1 << 32) - 1))
, …","Returns x * y
, 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 …","","","","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)
.","","","","","","","","","","","","The MIPS circuit trace","The MIPS instruction trace","","","","","","","","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 …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","","","","","","","","","","","","","","","","","","FIXME: DUMMY FOLD FUNCTION THAT ONLY KEEPS THE LAST …","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.","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 …","","","","","","","","",""],"i":[0,0,0,0,0,0,0,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,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,32,0,0,0,0,0,0,32,32,37,37,31,34,32,35,37,39,31,34,32,35,37,39,31,34,37,32,35,37,39,32,35,37,39,31,34,37,39,37,31,34,31,34,32,35,37,39,31,34,32,35,37,39,31,34,32,35,37,39,32,39,32,39,32,35,37,39,31,34,32,32,35,37,39,37,37,32,39,32,39,37,39,31,34,32,35,37,39,31,34,31,34,32,35,37,39,35,32,35,31,34,35,35,31,34,35,35,37,39,31,34,35,31,34,37,32,35,37,39,31,34,32,35,37,39,31,34,32,35,37,39,31,34,32,35,37,39,31,34,32,35,37,39,39,60,60,60,60,0,60,60,60,0,59,0,60,59,60,60,60,60,60,0,60,0,60,60,60,60,59,60,59,60,59,60,59,60,0,0,59,60,59,60,59,60,0,59,60,59,60,59,60,0,59,60,0,59,60,0,59,60,0,0,59,60,0,59,60,59,60,59,60,59,60,0,65,0,0,63,63,63,0,67,63,63,0,67,67,0,0,0,67,63,63,63,63,63,63,63,63,63,63,62,63,63,62,63,63,63,63,0,0,65,63,0,0,63,63,63,63,63,63,63,63,62,64,65,66,67,68,63,62,64,65,66,67,68,63,62,64,65,66,67,68,63,62,64,65,66,67,68,63,62,65,67,65,67,63,62,64,65,66,67,68,63,62,64,65,66,67,68,63,62,64,65,66,67,68,63,62,65,67,63,62,65,67,63,62,64,65,66,67,68,63,62,64,65,66,67,68,63,62,65,67,63,62,65,67,70,70,70,70,63,62,64,65,66,67,68,63,62,64,65,66,67,68,62,64,66,68,63,62,65,67,64,66,68,64,66,68,64,66,68,64,66,68,64,66,68,63,62,65,67,64,66,68,63,62,63,62,64,65,66,67,68,63,62,64,65,66,67,68,63,62,64,65,66,67,68,63,62,64,65,66,67,68,63,62,64,65,66,67,68,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,0,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,0,0,0,0,75,75,75,75,75,75,75,75,75,75,75,75,75,76,76,76,75,75,75,75,75,75,75,0,0,0,127,127,127,127,127,128,128,128,128,128,128,127,129,127,128,129,129,128,127,129,0,0,77,77,130,130,130,77,77,77,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,77,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,0,0,78,79,78,78,78,79,78,0,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,72,72,72,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,72,72,72,72,72,72,72,0,0,0,0,0,0,0,0,0,0,0,0,82,0,0,0,0,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,83,83,83,83,82,82,82,82,82,82,82,82,82,82,0,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,0,0,0,0,86,86,86,86,86,86,86,86,86,86,86,86,86,87,87,87,86,86,86,86,86,86,86,89,93,93,89,89,93,93,93,93,93,93,93,89,89,89,89,0,0,0,0,0,0,0,84,0,0,0,0,0,84,0,0,91,91,89,89,93,93,93,93,93,93,93,93,89,89,89,89,89,89,89,89,89,89,89,93,95,84,0,0,0,0,0,0,0,0,0,89,93,93,89,89,89,89,89,89,89,93,93,93,93,93,93,89,89,89,89,89,89,89,89,89,89,89,89,89,95,89,93,95,95,95,95,95,95,95,95,95,95,95,95,84,88,89,90,91,92,93,94,84,88,89,90,91,92,93,94,95,95,95,84,88,89,90,91,92,93,94,84,88,89,90,91,92,93,94,84,89,91,93,95,95,95,95,0,89,91,93,84,88,89,90,91,92,93,94,84,88,89,90,91,92,93,94,95,95,84,88,89,90,91,92,93,94,84,89,91,93,95,84,89,91,93,95,95,95,95,84,88,89,90,91,92,93,94,84,88,89,90,91,92,93,94,84,89,91,93,95,95,84,89,91,93,95,95,84,88,89,90,91,92,93,94,95,0,0,0,0,84,88,89,90,91,92,93,94,84,88,90,92,94,95,95,84,89,91,93,88,90,92,94,95,95,95,95,95,95,88,90,92,94,88,90,92,94,95,88,90,92,94,95,88,90,92,94,84,89,91,93,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,88,90,92,94,95,95,95,95,84,84,88,89,90,91,92,93,94,84,88,89,90,91,92,93,94,84,88,89,90,91,92,93,94,84,88,89,90,91,92,93,94,95,84,88,89,90,91,92,93,94,95,95,95,95,0,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,0,0,0,0,0,0,0,0,0,0,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,0,0,102,103,102,102,102,103,102,0,0,0,0,0,0,0,0,0,0,105,105,105,105,105,105,105,106,105,106,105,105,105,106,106,105,105,105,105,105,106,105,106,105,106,105,106,105,105,105,106,105,105,105,105,105,105,106,105,105,105,105,105,105,105,106,105,105,105,106,105,105,106,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,106,105,106,105,106,105,106,105,105,105,105,106,105,105,105,0,0,0,0,107,131,132,107,131,132,107,107,0,107,131,132,107,131,132,107,131,132,107,131,132,104,107,104,107,107,107,107,131,132,107,131,132,107,107,131,107,107,131,132,107,131,132,107,131,132,107,131,132,131,0,0,0,112,112,112,73,112,73,112,73,112,73,112,73,112,73,112,73,112,73,73,112,73,112,73,112,73,73,73,73,73,73,112,73,73,112,73,112,73,112,73,112,73,73,73,0,0,0,133,0,0,121,122,121,122,121,122,121,122,121,121,122,121,122,121,122,121,122,134,122,121,122,122,122,133,121,122,122,121,122,122,121,135,122,133,122,133,122,133,122,135,133,122,122,122,134,122,121,122,122,121,122,121,122,121,122,121,122,121],"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,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],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],0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[31,[29,30]],32,33]],[[[34,[29,30]],32,33]],0,[32,32],[35,35],[[[37,[[0,[30,36]]]]],[[37,[[0,[30,36]]]]]],[[[39,[[0,[30,38]]]]],[[39,[[0,[30,38]]]]]],[[]],[[]],[[]],[[]],[[[31,[29,30]],40,33],41],[[[34,[29,30]],40,33],41],[[[37,[36]],[37,[36]]],[[37,[36]]]],[[[39,[38]],[39,[38]],38],[[39,[38]]]],0,0,0,[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[[32,32],17],[[[39,[[0,[42,38]]]],[39,[[0,[42,38]]]]],17],[[],17],[[],17],[[32,22],23],[[35,22],23],[[[37,[[0,[43,36]]]],22],23],[[[39,[[0,[43,38]]]],22],23],[[]],[[]],[44,32],[[]],[[]],[[]],[[]],[[[37,[36]]],45],[[[37,[36]]]],[[[0,[46,47]],48],49],[[[0,[46,47]],48],49],[[32,50]],[[[39,[[0,[46,38]]]],50]],[[[37,[36]],32]],[[[39,[51]],52]],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],35],[35,11],[[[53,[37]],[53,[39]]],[[31,[29,30]]]],[[[53,[37]],[53,[39]]],[[34,[29,30]]]],[35,21],[35,21],0,0,[[35,11],21],[[],54],[[],55],[[[57,[56]]],58],[[[31,[29,30]],33],41],[[[34,[29,30]],33],41],[35],0,0,[[[37,[36]]]],[[]],[[]],[[]],[[]],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],26],[[],26],[[],26],[[],26],[[],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,[[]],[[]],[[]],[[]],[59,59],[60,60],[[]],[[]],0,0,[11],[11],[11],[11],[11],[11],0,[[59,59],17],[[60,60],17],[[],17],[[],17],[[59,22],23],[[60,22],23],0,[[]],[[]],0,[[],11],[[],11],0,[[]],[[]],[11,[[53,[61]]]],[62,62],[[]],[[]],0,[[],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,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[63,63],[62,62],[64,64],[65,65],[66,66],[67,67],[68,68],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[63,63],69],[[62,62],69],[[65,65],69],[[67,67],69],[[],65],[[],67],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[[63,63],17],[[62,62],17],[[65,65],17],[[67,67],17],[[],17],[[],17],[[],17],[[],17],[[63,22],23],[[62,22],23],[[64,22],23],[[65,22],23],[[66,22],23],[[67,22],23],[[68,22],23],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[0,[46,47]],48],49],[[[0,[46,47]],48],49],[[[0,[46,47]],48],49],[[[0,[46,47]],48],49],[[63,50]],[[62,50]],[[65,50]],[[67,50]],[[[70,[30]],63]],[[[70,[30]],62]],[[[70,[30]],63]],[[[70,[30]],62]],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[62],[[]],[[]],[[]],[63,17],[[],64],[[],66],[[],68],[64,11],[66,11],[68,11],[64,21],[66,21],[68,21],[64,21],[66,21],[68,21],[[64,11],21],[[66,11],21],[[68,11],21],[[],54],[[],54],[[],54],[[63,63],[[21,[69]]]],[[62,62],[[21,[69]]]],[[65,65],[[21,[69]]]],[[67,67],[[21,[69]]]],[64],[66],[68],[63,52],[62,52],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[[71,[61]],[73,[72]]]],[[]],[[]],[[[71,[30]]],[[71,[30]]]],[[]],[49],[61],[[[71,[61]],60]],0,[[],[[71,[61]]]],[11],[11],[11],[[[71,[43]],22],23],[[]],[[],11],[[]],0,[[]],[[],14],[[],14],[49],[[],26],[[[71,[61]],63]],[[]],0,[[]],[[]],[[[74,[30]]],[[74,[30]]]],[[]],0,[[],[[74,[61]]]],[11],[11],[11],[[[74,[43]],22],23],[[]],[[],11],[[]],[[49,[41,[7]]],[[74,[61]]]],[[[74,[61]]]],[[[74,[61]]],62],[[[74,[61]]]],0,[[]],[[],14],[[],14],[[],26],[[[74,[61]]]],[[]],0,[[[74,[61]],63,49]],[[[74,[61]],63,61]],0,0,0,0,[[]],[[]],[75,75],[[]],[11],[11],[11],[[75,75],17],[[],17],[[75,22],23],[[]],[[[0,[46,47]],48],49],[[75,50]],[[76,63]],[[76,52]],[[76,62]],[[],11],[[]],[[]],[[],14],[[],14],[[],26],[[]],0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[8],[[]],[[]],[8],[[]],[[]],[[]],[[]],[8],[[]],[49],[8],[[]],[[]],0,0,0,[[[73,[72]]]],[11],[[]],[11,8],[49],[[]],[60],[62],[[77,62]],[[62,[8,[[8,[8]]]]],[[8,[[8,[8]]]]]],[[77,62]],[[62,[8,[[8,[8]]]]]],[62],[[62,[8,[[8,[8]]]]],[[8,[[8,[8]]]]]],[62],[62],[62],[62,[[8,[[8,[8]]]]]],[62],[[11,11]],[[11,11,11]],[[11,11]],[[11,11,11]],[[11,11]],[[11,11,11]],[11,8],[[41,[21,[11]],11]],[[41,[21,[11]],[21,[11]],[21,[11]],[21,[11]]]],[[]],[11],[[],53],[[],8],[62],[62],[62],[62],[62],[62],[62],[62],[62],[62],[62],[62],[62],[62],[62],[62],[62],[62],[62],[62],[62],[11],[11],[[],53],[[],8],[[],53],[[]],[11],[11],[[11,11,11]],[[11,11]],[[11,11,11]],[[]],[[],53],[[11,11,11,11]],[[11,11,11]],[[11,11,11,11]],[[11,11,11,11]],[11],[[],53],[11],[[],53],[[11,11,11]],[11],[[]],[[]],[63],[[],53],[[],53],[[],53],[[],53],[[],53],[[],53],[[],53],[[],53],[[],53],[[],53],[[],53],[[],53],[[],53],[[],53],[[],53],[11],0,0,[[11,62,74],78],[[11,74],79],[78,11],[[78,53],11],[78,11],[79],[[78,53]],0,[[[80,[61]],[73,[72]]]],[[]],[[]],[[[80,[30]]],[[80,[30]]]],[[]],[49],[61],[[[80,[61]],60]],[[],[[80,[61]]]],[11],[11],[11],[[[80,[43]],22],23],[[]],[[],11],[[]],0,0,[[]],[[],14],[[],14],[49],[[],26],[[[80,[61]],63]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,[[],[[8,[72]]]],[[]],[[]],[72,72],[[]],[[72,72],69],[11],[11],[11],[[72,72],17],[[],17],[[72,22],23],[[]],[19,72],[[[0,[46,47]],48],49],[[72,50]],[[],11],[[]],[72,17],[[72,[41,[81]]],[[21,[11]]]],[72,11],[[72,72],[[21,[69]]]],[72,17],[[]],[72,19],[[],14],[[],14],[[],26],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[82,82],[[]],[[82,82],69],[11],[11],[11],[[82,82],17],[[],17],[[82,22],23],[[]],[[[0,[46,47]],48],49],[[82,50]],[[[83,[30]],84]],[[[83,[30]],82]],[[[83,[30]],82]],[[[83,[30]],84]],[[],11],[[]],[82,17],[[82,82],[[21,[69]]]],[82,52],[[]],[[],14],[[],14],[[],26],[[]],0,[[[85,[61]]]],[[[85,[61]],[73,[72]]]],[[[85,[61]]]],[[[85,[61]]]],[[[85,[61]]]],[[[85,[61]],19,19]],[[]],[[]],[[]],[[]],[[]],[19],0,[[[85,[61]]]],[[[85,[61]]]],[[[85,[61]]]],[[],[[85,[61]]]],[11],[11],[[[85,[61]]]],[[[85,[61]]]],[11],[[[85,[61]]]],[[[85,[61]]]],[[[85,[61]]]],[[[85,[61]]]],[[[85,[61]]]],[[]],[[[85,[61]]]],[[],11],[[[85,[61]]]],[[]],[[[85,[61]]]],0,[[[85,[61]]]],[[[85,[61]]]],[[[85,[61]]]],[[[85,[61]]]],[[[85,[61]]]],[[[85,[61]]]],[[[85,[61]]]],[[[85,[61]]]],[[[85,[61]]]],[[[85,[61]]]],[[[85,[61]]]],[[[85,[61]]]],0,[[[85,[61]]]],[[[85,[61]]]],[[[85,[61]]]],[[[85,[61]]]],[[[85,[61]]]],[[[85,[61]]]],[[[85,[61]]]],[[[85,[61]]]],[[],14],[[],14],[[],26],[[[85,[61]]]],[[]],[[[85,[61]]]],0,0,0,0,[[]],[[]],[86,86],[[]],[11],[11],[11],[[86,86],17],[[],17],[[86,22],23],[[]],[[[0,[46,47]],48],49],[[86,50]],[[87,84]],[[87,52]],[[87,82]],[[],11],[[]],[[]],[[],14],[[],14],[[],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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[[73,[72]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[19,19]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[84,84],[88,88],[89,89],[90,90],[91,91],[92,92],[93,93],[94,94],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[84,84],69],[[89,89],69],[[91,91],69],[[93,93],69],[19],[[]],[[]],[[]],0,[[],89],[[],91],[[],93],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[11],[[]],[[]],[11],[11],[11],[11],[11],[11],[11],[11],[[84,84],17],[[89,89],17],[[91,91],17],[[93,93],17],[[]],[[],17],[[],17],[[],17],[[],17],[[]],[[]],[[]],[[]],[[84,22],23],[[88,22],23],[[89,22],23],[[90,22],23],[[91,22],23],[[92,22],23],[[93,22],23],[[94,22],23],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[0,[46,47]],48],49],[[[0,[46,47]],48],49],[[[0,[46,47]],48],49],[[[0,[46,47]],48],49],[[]],[[]],[[84,50]],[[89,50]],[[91,50]],[[93,50]],[[]],[[]],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[],11],[[]],[[95,84]],[[95,93]],[[95,91]],[[95,89]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[84],[[]],[[]],[[]],[[]],[[]],[[]],[[],88],[[],90],[[],92],[[],94],[88,11],[90,11],[92,11],[94,11],[[]],[[]],[[]],[[]],[[]],[[]],[88,21],[90,21],[92,21],[94,21],[88,21],[90,21],[92,21],[94,21],[[]],[[88,11],21],[[90,11],21],[[92,11],21],[[94,11],21],[[]],[[],54],[[],54],[[],54],[[],54],[[84,84],[[21,[69]]]],[[89,89],[[21,[69]]]],[[91,91],[[21,[69]]]],[[93,93],[[21,[69]]]],[[]],[[]],[[]],[[]],[[]],[[]],[19],[[]],[[]],[19],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[19],[88],[90],[92],[94],[[]],[[]],[[]],[[]],[84,52],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],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,[[]],[[]],[96,96],[[]],[19,96],[[],96],[11],[11],[12,[[14,[96]]]],[11],[96,19],[[96,96],17],[[],17],[[96,22],23],[[]],0,[[],11],[[]],0,0,0,0,[[96,25],14],0,[[]],[[],14],[[],14],[[],26],[[]],0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[[97,[30]]],[[97,[30]]]],[[]],0,[[],[[97,[98]]]],[11],[11],[12,[[14,[[97,[99]]]]]],[11],[[[97,[43]],22],23],[[]],0,0,0,[[[97,[30]],11]],[[[97,[30]],11]],[[],11],[[]],[97,100],0,0,0,0,[[[97,[101]],25],14],[[]],[[],14],[[],14],[[],26],[[]],0,0,[[11,84,85],102],[[11,85],103],[102,11],[[102,53],11],[102,11],[103],[[102,53]],0,0,0,0,0,0,0,0,0,0,[[[105,[61,104]]]],[[[105,[61,104]],[73,[72]]]],[[[105,[61,104]]]],[[[105,[61,104]]]],[[[105,[61,104]]]],[[[105,[61,104]],19,19]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[106,106],[[]],[19],[[[105,[61,104]]]],[[[105,[61,104]]]],[[[105,[61,104]]]],[[11,15,104],[[105,[61,104]]]],[15,106],[[[105,[61,104]]]],[[],106],[11],[11],[11],[11],[[[105,[61,104]]]],[[[105,[61,104]]]],[11],[11],[[[105,[61,104]]]],[[[105,[61,104]]]],[[[105,[61,104]]]],[[[105,[61,104]]]],[[[105,[61,104]]]],[[]],[[]],[[[105,[61,104]],19],11],[[[105,[61,104]],19],7],[[[105,[61,104]],19],11],0,0,[[[105,[61,104]]]],[[],11],[[],11],[[[105,[61,104]]]],0,[[]],[[]],[[[105,[61,104]]]],0,0,0,0,0,0,[[[105,[61,104]]]],[[[105,[61,104]]]],[[[105,[61,104]]]],[[[105,[61,104]]],49],[[[105,[61,104]]]],[[[105,[61,104]]],49],[[[105,[61,104]]]],0,0,0,0,[[[105,[61,104]]]],[[[105,[61,104]]]],[[[105,[61,104]]]],[[[105,[61,104]]]],0,0,[[[105,[61,104]]]],[[[105,[61,104]]]],[[[105,[61,104]]]],[[[105,[61,104]]]],0,0,[[[105,[61,104]]]],[[[105,[61,104]]]],[[[105,[61,104]]]],[[[105,[61,104]]]],[[[105,[61,104]],3,6,4],84],[[[105,[61,104]]]],0,[[[105,[61,104]]]],[[[105,[61,104]]]],[[[105,[61,104]]]],[[]],[[],14],[[],14],[[],14],[[],14],[[],26],[[],26],[[[105,[61,104]],11]],[[[105,[61,104]],11]],[[[105,[61,104]]]],[[]],[[]],[[[105,[61,104]],82,49]],[[[105,[61,104]],82,61]],[[[105,[61,104]]]],0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],0,[[[21,[2]]],107],[[],21],[11],[11],[11],[11],[11],[11],[11],[11],[11],[[]],[[]],[[]],[[[53,[7]]],9],[[107,[53,[7]]],9],[10],[[107,10]],0,0,[[],11],[[],11],[[],11],[[]],[[]],[[]],0,0,0,[107,108],[[],14],[[],14],[[],14],[[],14],[[],14],[[],14],[[],26],[[],26],[[],26],[[]],[[]],[[]],0,[[109,[110,[72]],[111,[8]]]],0,0,0,0,[[]],[[]],[[]],[[]],[112,112],[[[73,[30,[0,[30,113]]]]],[[73,[30,[0,[30,113]]]]]],[[]],[[]],[11],[11],[11],[11],[11],[11],[[112,22],23],[[[73,[[0,[114,61]],113]],22],23],[[[73,[43,[0,[43,113]]]],22],23],[[]],[[]],[[],11],[[],11],[[]],[[]],[[[73,[[0,[30,[115,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],43,118,119]],113]]],[[120,[[0,[30,[115,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],43,118,119]],113]]]],[[112,113,[0,[30,[115,[[0,[30,[115,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],43,118,119]]]],43,118,119]],[41,[[0,[30,[115,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],43,118,119]]]]],[[73,[[0,[30,[115,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],43,118,119]],113]]]],[[[73,[[0,[30,[115,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],43,118,119]],113]]],[[0,[30,[115,[[0,[30,[115,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],43,118,119]]]],43,118,119]]]],[[[0,[30,[115,[[0,[30,[115,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],43,118,119]]]],43,118,119]],113,[8,[[0,[30,[115,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],43,118,119]]]]],[[73,[[0,[30,[115,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],43,118,119]],113]]]],[[113,[8,[[0,[30,[115,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],43,118,119]]]]],[[73,[[0,[30,[115,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],43,118,119]],113]]]],[[]],[[]],[[],20],[[],14],[[],14],[[],14],[[],14],[[],26],[[],26],[[]],[[]],[[[0,[30,[115,[[0,[30,[115,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],43,118,119]]]],43,118,119]],113,[8,[[0,[30,[115,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],43,118,119]]]]],[[73,[[0,[30,[115,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],43,118,119]],113]]]],[[113,[8,[[0,[30,[115,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],43,118,119]]]]],[[73,[[0,[30,[115,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[116,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],[117,[[0,[30,[115,[[0,[30,115,116,117,43,118,119]]]],[116,[[0,[30,115,116,117,43,118,119]]]],[117,[[0,[30,115,116,117,43,118,119]]]],43,118,119]]]],43,118,119]]]],43,118,119]],113]]]],0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[[121,[[0,[30,29]]]]],[[121,[[0,[30,29]]]]]],[[[122,[[0,[30,29]]]]],[[122,[[0,[30,29]]]]]],[[]],[[]],0,[11],[11],[11],[11],0,0,[11],[11],[[],[[124,[[8,[123]]]]]],[[[122,[29]]],[[124,[[8,[[123,[29]]]]]]]],[[]],[[]],[[[122,[29]]],17],[[[122,[29]]]],[11],[[],11],[11,[[122,[29]]]],[[],11],[[]],[[]],[[[122,[29]]],17],0,[11],[[[122,[29]]],11],[[],11],[[[122,[29]]],11],[53,11],[[[122,[29]],53],11],[[],11],[[[122,[29]]],11],[[]],[53],[[[122,[29]],53]],[[[122,[29]]]],[[[122,[29]],11]],[[56,125]],[[[122,[29]],126,56,125]],[[]],[[]],0,[[],14],[[],14],[[],14],[[],14],[[],26],[[],26],[[]],[[]],0],"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"],[8,"FoldingConfig"],[8,"Clone"],[3,"DecomposedFoldingEnvironment"],[4,"Challenge"],[4,"Side"],[3,"FoldingEnvironment"],[3,"ChallengeIter"],[8,"CommitmentCurve"],[3,"FoldingInstance"],[8,"FftField"],[3,"FoldingWitness"],[4,"CurrOrNext"],[15,"slice"],[8,"PartialEq"],[8,"Debug"],[4,"ChallengeTerm"],[4,"Alphas"],[8,"Hash"],[8,"Sized"],[8,"BuildHasher"],[15,"u64"],[8,"Hasher"],[6,"Fp"],[4,"Column"],[15,"array"],[3,"IterBridge"],[3,"RelaxedInstance"],[3,"Radix2EvaluationDomain"],[3,"Evaluations"],[3,"RelaxedWitness"],[4,"Error"],[4,"Constraint"],[8,"Field"],[4,"Steps"],[4,"ColumnAlias"],[3,"StepsIter"],[4,"Sponges"],[3,"SpongesIter"],[4,"Absorbs"],[3,"AbsorbsIter"],[4,"Ordering"],[6,"KeccakWitness"],[3,"Env"],[4,"LookupTableIDs"],[3,"RAMLookup"],[3,"KeccakEnv"],[3,"KeccakConfig"],[6,"KeccakFoldingWitness"],[8,"Interpreter"],[6,"KeccakTrace"],[6,"DecomposedKeccakTrace"],[3,"Env"],[8,"PrimeField"],[4,"ColumnAlias"],[6,"MIPSWitness"],[4,"Instruction"],[3,"Env"],[3,"DecomposableMIPSFoldingConfig"],[6,"MIPSFoldingWitness"],[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"],[6,"MIPSTrace"],[6,"DecomposedMIPSTrace"],[8,"PreImageOracleT"],[3,"Env"],[3,"SyscallEnv"],[3,"PreImageOracle"],[3,"Child"],[3,"EvaluationDomains"],[3,"ProofInputs"],[3,"Witness"],[4,"LookupMode"],[8,"LookupTableID"],[8,"Display"],[8,"Add"],[8,"Sub"],[8,"Mul"],[8,"One"],[8,"Zero"],[3,"Logup"],[3,"Trace"],[3,"DecomposedTrace"],[4,"FoldingCompatibleExpr"],[3,"BTreeMap"],[3,"SRS"],[8,"FqSponge"],[8,"BoolHelpers"],[8,"LogupHelpers"],[8,"ArithHelpers"],[8,"KeccakInterpreter"],[3,"ReadWrite"],[3,"RW"],[8,"Tracer"],[8,"Foldable"],[8,"DecomposableTracer"]]},\
"poly_commitment":{"doc":"","t":"ICIQKKAKKKKKKAKAAKLKKKAKAKDDIIDQQDFLFFMLLLLLLLLALLLLLLLFFLLFMMMLLLLLLLLLLLLLLLMLLMMMMLLLLLLLLLLLLFLLLLLLLLLKMMFFLLLLFMFFLKFLLLLLLLLLLLLLLLLLLLDDLLLLLLMLLLLLLLLLLLLLLLLLLLLMLLLLMMLLLLLLLLLMLLMMNELLLLLLLLLLLLLLLLLLLDNENDLLLLLLMMLLLFLMLLLLLLLLLLLLLLLLLLLLLMLLLMLLLLLLLLLLLLLLMMDDLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLMLLLLLLLLLLLMLLLLDLLLLLLLLLLLLLLLLLLLLLLFLLLLMLMLLMLLLLLLLLLLLLLL","n":["OpenProof","PolyComm","SRS","SRS","add_lagrange_basis","blinding_commitment","chunked","commit","commit_custom","commit_evaluations","commit_evaluations_custom","commit_evaluations_non_hiding","commit_non_hiding","commitment","create","error","evaluation_proof","get_lagrange_basis","mask","mask_custom","max_poly_size","open","pairing_proof","size","srs","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","clone","clone","clone_into","clone_into","combine","combine_commitments","combine_evaluations","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","elems","eq","equivalent","evalscale","evaluation_points","evaluations","evaluations","fmt","fmt","from","from","from","from","from","from","init","init","init","init","inner_prod","into","into","into","into","is_empty","len","map","multi_scalar_mul","new","of_coordinates","opening","polyscale","pows","product","scale","serialize","serialize","serialize_as","shift_scalar","sponge","squeeze_challenge","squeeze_prechallenge","sub","to_coordinates","to_group","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","CamlOpeningProof","CamlPolyComm","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","delta","deref","deref","deref_mut","deref_mut","drop","drop","fmt","from","from","from","from","from","from_value","from_value","init","init","into","into","into_value","into_value","lr","ocaml_binding","ocaml_binding","ocaml_desc","ocaml_desc","sg","shifted","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","unique_id","unique_id","unshifted","vzip","vzip","z1","z2","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","Challenges","DensePolynomial","DensePolynomialOrEvaluations","Evaluations","OpeningProof","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","chal","chal_inv","challenges","clone","clone_into","combine_polys","default","delta","deref","deref","deref","deref_mut","deref_mut","deref_mut","deserialize","drop","drop","drop","fmt","from","from","from","from","init","init","init","into","into","into","lr","open","prechallenges","serialize","sg","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","verify","vzip","vzip","vzip","z1","z2","PairingProof","PairingSRS","add_lagrange_basis","blinding","blinding_commitment","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","commit","commit_custom","commit_evaluations","commit_evaluations_custom","commit_evaluations_non_hiding","commit_non_hiding","create","create","create","default","default","deref","deref","deref_mut","deref_mut","deserialize","deserialize","drop","drop","eq","equivalent","fmt","fmt","from","from","full_srs","get_lagrange_basis","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","SRS","add_lagrange_basis","add_lagrange_basis","blinding_commitment","borrow","borrow_mut","clone","clone_into","commit","commit_custom","commit_evaluations","commit_evaluations_custom","commit_evaluations_non_hiding","commit_non_hiding","create","create","create_parallel","create_trusted_setup","default","deref","deref_mut","deserialize","drop","endos","eq","equivalent","fmt","from","g","get_lagrange_basis","h","init","into","lagrange_bases","mask","mask_custom","max_degree","max_poly_size","open","prover_polynomials_to_verifier_evaluations","serialize","size","to_owned","try_from","try_into","type_id","verify","vzip"],"q":[[0,"poly_commitment"],[26,"poly_commitment::commitment"],[142,"poly_commitment::commitment::caml"],[192,"poly_commitment::error"],[213,"poly_commitment::evaluation_proof"],[274,"poly_commitment::pairing_proof"],[339,"poly_commitment::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 …","","","This module contains the implementation of the polynomial …","Retrieve the precomputed Lagrange basis for the given …","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","Parameters:","","","This module implements structures and methods to handle …","","Contains the batch evaluation","","A useful trait extending AffineCurve for commitments. …","A trait extending CommitmentCurve for endomorphisms. …","Contains the evaluation of a polynomial commitment at a …","","","A polynomial commitment.","","","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 the (chunked) evaluations of multiple polynomials. …","Combine where x1 = one","Combine where x1 = one","Computes the linearization of the evaluations of a …","","The commitment of the polynomial being evaluated. Note …","","","","","","","","","","","","","","","","","","","","scaling factor for polynomials","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.","","","","","","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 length of the commitment.","","Performs a multi-scalar multiplication between scalars elm
…","","","batched opening proof","scaling factor for evaluation point powers","pows(d, x)
returns a vector containing the first d
powers …","Returns the product of all the field elements belonging to …","","","","","Inside the circuit, we have a specialized scalar …","The sponge used to generate/absorb the challenges.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","","Returns the argument unchanged.","","","","","Calls U::from(self)
.","Calls U::from(self)
.","","","vector of rounds of L & R commitments","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self)
.","","","","","","","","Commitment round challenges (endo mapped) and their …","","","","","","","","","","","","","Same as prechallenges
, but maps scalar challenges using the","","","Combine the polynomials using polyscale
, creating a single …","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","Calls U::from(self)
.","Calls U::from(self)
.","Calls U::from(self)
.","Vector of rounds of L & R commitments","","Computes a log-sized vector of scalar challenges for …","","A final folded commitment base","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Create a pairing proof. Parameters:","","","","","","","","","","","","","","","","","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 “…","","","","","","Compute commitments to the lagrange basis corresponding to …","","","","","","","Commits a polynomial, potentially splitting the result in …","","","","","This function commits a polynomial using the SRS’ basis …","This function creates SRS instance for circuits with …","","This function creates SRS instance for circuits with …","This function creates a trusted-setup SRS instance for …","","","","","","","","","","Returns the argument unchanged.","The vector of group elements for committing to polynomials …","","A group element used for blinding commitments","","Calls U::from(self)
.","Commitments to Lagrange bases, per domain size","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","This function opens polynomial commitments in batch plnms: …","This function is a debugging helper.","","","","","","","This function verifies a batch of polynomial commitment …",""],"i":[0,0,0,60,61,61,0,61,61,61,61,61,61,0,61,0,0,61,61,61,61,60,0,61,0,60,0,0,0,0,0,22,22,0,0,7,0,0,6,23,16,7,6,23,16,7,6,0,7,7,7,6,7,6,55,0,0,55,55,0,16,23,6,23,16,7,6,23,16,7,6,7,6,7,23,16,7,6,7,7,7,16,16,23,16,7,6,23,16,7,7,7,6,23,16,7,6,0,23,16,7,6,7,7,7,7,7,22,16,16,0,0,7,7,6,7,0,16,0,0,7,22,0,7,6,23,16,7,6,23,16,7,6,23,16,7,6,23,16,7,6,7,0,0,33,42,33,42,33,33,42,33,42,33,42,33,42,33,33,33,33,42,42,33,42,33,42,33,42,33,42,42,33,42,33,42,42,33,33,33,42,33,42,33,42,33,42,33,33,42,42,42,8,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,62,0,62,0,62,52,41,62,52,41,52,52,41,41,41,0,41,41,62,52,41,62,52,41,41,62,52,41,41,62,52,41,41,62,52,41,62,52,41,41,41,41,41,41,41,62,52,41,62,52,41,62,52,41,41,62,52,41,41,41,0,0,57,58,57,58,57,58,57,58,57,58,57,57,57,57,57,57,57,58,57,57,58,57,58,57,58,57,58,57,58,57,57,57,58,57,58,57,57,57,58,57,58,57,57,57,57,58,58,58,57,57,58,57,58,57,58,57,58,57,57,58,58,58,57,0,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,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],"f":[0,0,0,0,[1],[[]],0,[[2,3,[0,[4,5]]],6],[[2,3,7],[[9,[6,8]]]],[[1,[10,[1]],[0,[4,5]]],6],[[1,[10,[1]],7],[[9,[6,8]]]],[[1,[10,[1]]],7],[[2,3],7],0,[3],0,0,[3,[[12,[[11,[7]]]]]],[[7,[0,[4,5]]],6],[[7,7],[[9,[6,8]]]],[[],3],[[13,13,[0,[14,15]],[0,[4,5]]]],0,[[],3],0,[[[13,[[16,[15]]]],[0,[4,5]]],17],0,0,0,0,0,0,0,0,[[[15,[18,14,[0,[19,20]]]],[7,[14]]]],[[[7,[21]],[7,[21]]],[[7,[21]]]],[[[13,[18]],18],18],[[[13,[18]]],[[11,[18]]]],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[[7,[18]],18],18],[[[7,[22]]],[[7,[22]]]],[[[7,[14]]],[[7,[14]]]],[[[6,[[0,[22,14]]]]],[[6,[[0,[22,14]]]]]],[[]],[[]],[[13,13],11],[[[13,[[23,[22]]]],11,[11,[22]]]],[[[11,[[23,[22]]]]],11],[[13,13],11],[[13,13,24],11],[[19,19,[13,[[11,[[11,[19]]]]]]],19],0,0,0,[3],[3],[3],[3],[3],[3],[3],[3],[25,[[9,[[7,[[0,[26,27]]]]]]]],[25,[[9,[[6,[[0,[22,28]]]]]]]],[25,[[9,[7]]]],[3],[3],[3],[3],0,[[[7,[29]],[7,[29]]],17],[[],17],0,0,0,0,[[[7,[30]],31],32],[[[6,[[0,[22,30]]]],31],32],[[]],[[]],[33,[[7,[[0,[21,34,34]]]]]],[[]],[33,[[7,[[0,[21,34]]]]]],[[]],[[],3],[[],3],[[],3],[[],3],[[[13,[18]],[13,[18]]],18],[[]],[[]],[[]],[[]],[[[7,[[0,[26,27,14]]]]],17],[[[7,[[0,[26,27,14]]]]],3],[[[7,[[0,[26,27,14]]]],35],[[7,[[0,[26,27]]]]]],[[[13,[[7,[21]]]],13],[[7,[21]]]],[11,7],[[]],0,0,[[3,18],[[11,[18]]]],[36,18],[[[7,[21]]],[[7,[21]]]],[[[7,[[0,[26,27]]]],37],9],[[[6,[[0,[22,38]]]],37],9],[[7,37],9],[[]],0,[[[0,[19,20]],[15,[18,[0,[19,20]]]]],[[0,[19,20]]]],[[[15,[18,20]]],[[24,[20]]]],[[[7,[21]],[7,[21]]],[[7,[21]]]],[[],12],[[],22],[[]],[[]],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],39],[[],39],[[],39],[[],39],[[]],[[]],[[]],[[]],[[[7,[[0,[40,26,27]]]],[7,[[0,[40,26,27]]]]],[[12,[7]]]],0,0,[[]],[[]],[[]],[[]],[[[33,[14]]],[[33,[14]]]],[[]],0,[3],[3],[3],[3],[3],[3],[[[33,[30]],31],32],[[]],[[[7,[21]]],[[33,[[0,[[34,[21]],[34,[21]]]]]]]],[[[7,[21]]],[[33,[[34,[21]]]]]],[[[41,[21]]],[[42,[[34,[21]],34]]]],[[]],[43,[[33,[44]]]],[43,[[42,[44,44]]]],[[],3],[[],3],[[]],[[]],[[[33,[45]],46],43],[[[42,[45,45]],46],43],0,[[47,[12,[48]],17],49],[[47,[12,[48]],17],49],[[47,[13,[48]]],49],[[47,[13,[48]]],49],0,0,[[]],[[],9],[[],9],[[],9],[[],9],[[],39],[[],39],[[],50],[[],50],0,[[]],[[]],0,0,0,0,[[]],[[]],[8,8],[[]],[3],[3],[3],[[8,31],32],[[8,31],32],[[]],[[],3],[[]],[51],[[]],[[],49],[[],9],[[],9],[[],39],[[]],0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],0,0,[[[41,[21]],[15,[21]]],52],[[[41,[[0,[14,21]]]]],[[41,[[0,[14,21]]]]]],[[]],[[13,3]],[[],[[41,[[0,[53,21]]]]]],0,[3],[3],[3],[3],[3],[3],[25,[[9,[[41,[[0,[26,27,21]]]]]]]],[3],[3],[3],[[[41,[[0,[30,21]]]],31],32],[[]],[[]],[[]],[[[42,[[54,[21]],54]]],[[41,[21]]]],[[],3],[[],3],[[],3],[[]],[[]],[[]],0,[[13,13,[0,[14,[15,[[0,[21,22,55]]]]]],[0,[4,5]]],[[41,[[0,[21,22,55]]]]]],[[[41,[21]],[15,[21]]],[[11,[24]]]],[[[41,[[0,[26,27,21]]]],37],9],0,[[]],[[],9],[[],9],[[],9],[[],9],[[],9],[[],9],[[],39],[[],39],[[],39],[[[13,[[16,[[0,[21,22,55]],[15,[[0,[21,22,55]]]],[41,[[0,[21,22,55]]]]]]]],[0,[4,5]]],17],[[]],[[]],[[]],0,0,0,0,[[[57,[56]],1]],0,[[[57,[56]]],22],[[]],[[]],[[]],[[]],[[[58,[56]]],[[58,[56]]]],[[[57,[56]]],[[57,[56]]]],[[]],[[]],[[[57,[56]],[2,[19]],3,[0,[4,5]]],[[6,[22]]]],[[[57,[56]],2,3,7],[[9,[[6,[22]],8]]]],[[[57,[56]],1,[10,[1]],[0,[4,5]]],[[6,[22]]]],[[[57,[56]],1,[10,[1]],7],[[9,[[6,[22]],8]]]],[[[57,[56]],1,[10,[1]]],[[7,[22]]]],[[[57,[56]],2,3],[[7,[22]]]],[[[57,[56]],13,[13,[19]],19],[[12,[[58,[56]]]]]],[[19,3],[[57,[56]]]],[3,[[57,[56]]]],[[],[[58,[56]]]],[[],[[57,[56]]]],[3],[3],[3],[3],[25,[[9,[[58,[56]]]]]],[25,[[9,[[57,[56]]]]]],[3],[3],[[[57,[[0,[29,56]]]],[57,[[0,[29,56]]]]],17],[[],17],[[[58,[[0,[30,56]]]],31],32],[[[57,[[0,[30,56]]]],31],32],[[]],[[]],0,[[[57,[56]],3],[[12,[[11,[[7,[22]]]]]]]],[[],3],[[],3],[[]],[[]],[[[57,[56]],[7,[22]],[0,[4,5]]],[[6,[22]]]],[[[57,[56]],[7,[22]],7],[[9,[[6,[22]],8]]]],[[[57,[56]]],3],[[13,13,[0,[14,[15,[22,19]]]],[0,[4,5]]],[[58,[56]]]],0,[[[58,[56]],37],9],[[[57,[56]],37],9],[[[57,[56]]],3],[[]],[[]],[[],9],[[],9],[[],9],[[],9],[[],39],[[],39],0,[[[13,[[16,[22,[15,[22,19]],[58,[56]]]]]],[0,[4,5]]],17],[[[58,[56]],[57,[56]],[11,[[23,[22]]]],19,[13,[19]]],17],[[]],[[]],0,[[[59,[22]],1]],[[[59,[22]],1]],[[[59,[22]]],22],[[]],[[]],[[[59,[14]]],[[59,[14]]]],[[]],[[[59,[22]],2,3,[0,[4,5]]],[[6,[22]]]],[[[59,[22]],2,3,7],[[9,[[6,[22]],8]]]],[[[59,[22]],1,[10,[1]],[0,[4,5]]],[[6,[22]]]],[[[59,[22]],1,[10,[1]],7],[[9,[[6,[22]],8]]]],[[[59,[22]],1,[10,[1]]],[[7,[22]]]],[[[59,[22]],2,3],[[7,[22]]]],[3,[[59,[22]]]],[3,[[59,[22]]]],[3,[[59,[22]]]],[3,[[59,[22]]]],[[],[[59,[53]]]],[3],[3],[25,[[9,[[59,[[0,[26,27]]]]]]]],[3],[[]],[[[59,[29]],[59,[29]]],17],[[],17],[[[59,[30]],31],32],[[]],0,[[[59,[22]],3],[[12,[[11,[[7,[22]]]]]]]],0,[[],3],[[]],0,[[[59,[22]],[7,[22]],[0,[4,5]]],[[6,[22]]]],[[[59,[22]],[7,[22]],7],[[9,[[6,[22]],8]]]],[[[59,[22]]],3],[[[59,[22]]],3],[[[59,[55,22]],13,13,[0,[14,[15,[55,22]]]],[0,[4,5]]],[[41,[55,22]]]],[[[59,[22]],13,13],[[11,[[23,[22]]]]]],[[[59,[[0,[26,27]]]],37],9],[[[59,[22]]],3],[[]],[[],9],[[],9],[[],39],[[[59,[22]],[13,[[16,[22,[15,[22]],[41,[22]]]]]],[0,[4,5]]],17],[[]]],"c":[],"p":[[3,"Radix2EvaluationDomain"],[3,"DensePolynomial"],[15,"usize"],[8,"RngCore"],[8,"CryptoRng"],[3,"BlindedCommitment"],[3,"PolyComm"],[4,"CommitmentError"],[4,"Result"],[3,"Evaluations"],[3,"Vec"],[4,"Option"],[15,"slice"],[8,"Clone"],[8,"FqSponge"],[3,"BatchEvaluationProof"],[15,"bool"],[8,"Field"],[8,"PrimeField"],[8,"SquareRootField"],[8,"AffineCurve"],[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,"FnMut"],[8,"Iterator"],[8,"Serializer"],[8,"Serialize"],[3,"TypeId"],[8,"Copy"],[3,"OpeningProof"],[3,"CamlOpeningProof"],[4,"Value"],[8,"FromValue"],[8,"IntoValue"],[3,"OCamlRuntime"],[3,"Env"],[15,"str"],[3,"String"],[15,"u128"],[3,"Demand"],[3,"Challenges"],[8,"Default"],[8,"Into"],[8,"EndoCurve"],[8,"PairingEngine"],[3,"PairingSRS"],[3,"PairingProof"],[3,"SRS"],[8,"OpenProof"],[8,"SRS"],[4,"DensePolynomialOrEvaluations"]]},\
diff --git a/rustdoc/settings.html b/rustdoc/settings.html
index 78856e0fed..9f421508ce 100644
--- a/rustdoc/settings.html
+++ b/rustdoc/settings.html
@@ -1 +1 @@
-Rustdoc settings Rustdoc settings
Back
\ No newline at end of file
+Rustdoc settings Rustdoc settings
Back
\ No newline at end of file
diff --git a/rustdoc/src/mvpoly/lib.rs.html b/rustdoc/src/mvpoly/lib.rs.html
index 335ab314c0..39ab23e8fa 100644
--- a/rustdoc/src/mvpoly/lib.rs.html
+++ b/rustdoc/src/mvpoly/lib.rs.html
@@ -77,6 +77,13 @@
77
78
79
+80
+81
+82
+83
+84
+85
+86
use ark_ff::PrimeField;
use kimchi::circuits::expr::{ConstantExpr, Expr};
use rand::RngCore;
@@ -155,5 +162,12 @@
/// Evaluate the polynomial at the vector point `x` and the extra variable
/// `u` using its homogeneous form of degree D.
fn homogeneous_eval(&self, x: &[F; N], u: F) -> F;
+
+ /// Add the monomial `coeff * x_1^{e_1} * ... * x_N^{e_N}` to the
+ /// polynomial, where `e_i` are the values given by the array `exponents`.
+ ///
+ /// For instance, to add the monomial `3 * x_1^2 * x_2^3` to the polynomial,
+ /// one would call `add_monomial([2, 3], 3)`.
+ fn add_monomial(&mut self, exponents: [usize; N], coeff: F);
}
\ No newline at end of file
diff --git a/rustdoc/src/mvpoly/monomials.rs.html b/rustdoc/src/mvpoly/monomials.rs.html
index 470d6c959a..662336d01e 100644
--- a/rustdoc/src/mvpoly/monomials.rs.html
+++ b/rustdoc/src/mvpoly/monomials.rs.html
@@ -857,13 +857,6 @@
.and_modify(|c| *c = coeff)
.or_insert(coeff);
}
-
- pub fn add_monomial(&mut self, exponents: [usize; N], coeff: F) {
- self.monomials
- .entry(exponents)
- .and_modify(|c| *c += coeff)
- .or_insert(coeff);
- }
}
impl<const N: usize, const D: usize, F: PrimeField> MVPoly<F, N, D> for Sparse<F, N, D> {
@@ -973,6 +966,13 @@
})
.sum()
}
+
+ fn add_monomial(&mut self, exponents: [usize; N], coeff: F) {
+ self.monomials
+ .entry(exponents)
+ .and_modify(|c| *c += coeff)
+ .or_insert(coeff);
+ }
}
impl<const N: usize, const D: usize, F: PrimeField> From<prime::Dense<F, N, D>>
diff --git a/rustdoc/src/mvpoly/prime.rs.html b/rustdoc/src/mvpoly/prime.rs.html
index 8127546c1d..5cb5911260 100644
--- a/rustdoc/src/mvpoly/prime.rs.html
+++ b/rustdoc/src/mvpoly/prime.rs.html
@@ -815,6 +815,21 @@
815
816
817
+818
+819
+820
+821
+822
+823
+824
+825
+826
+827
+828
+829
+830
+831
+832
//! Multivariate polynomial dense representation using prime numbers
//!
//! First, we start by attributing a different prime number for each variable.
@@ -1240,6 +1255,21 @@
acc + c * monomial * u.pow([u_power as u64])
})
}
+
+ fn add_monomial(&mut self, exponents: [usize; N], coeff: F) {
+ let mut prime_gen = PrimeNumberGenerator::new();
+ let primes = prime_gen.get_first_nth_primes(N);
+ let normalized_index = exponents
+ .iter()
+ .zip(primes.iter())
+ .fold(1, |acc, (d, p)| acc * p.pow(*d as u32));
+ let inv_idx = self
+ .normalized_indices
+ .iter()
+ .position(|&x| x == normalized_index)
+ .unwrap();
+ self.coeff[inv_idx] += coeff;
+ }
}
impl<F: PrimeField, const N: usize, const D: usize> Dense<F, N, D> {