diff --git a/halo2/all.html b/halo2/all.html index a8928bd49b..78bcf7e7bf 100644 --- a/halo2/all.html +++ b/halo2/all.html @@ -1,4 +1,4 @@ -List of all items in this crate +List of all items in this crate +halo2 - Rust +List of all items in this crate +FIXED_BASE_WINDOW_SIZE in halo2_gadgets::ecc::chip::constants - Rust +H in halo2_gadgets::ecc::chip::constants - Rust +NUM_WINDOWS in halo2_gadgets::ecc::chip::constants - Rust +NUM_WINDOWS_SHORT in halo2_gadgets::ecc::chip::constants - Rust +compute_lagrange_coeffs in halo2_gadgets::ecc::chip::constants - Rust +find_zs_and_us in halo2_gadgets::ecc::chip::constants - Rust +test_lagrange_coeffs in halo2_gadgets::ecc::chip::constants - Rust +test_zs_and_us in halo2_gadgets::ecc::chip::constants - Rust +halo2_gadgets::ecc::chip::constants - Rust +BaseFieldElem in halo2_gadgets::ecc::chip - Rust +FullScalar in halo2_gadgets::ecc::chip - Rust +ScalarVar in halo2_gadgets::ecc::chip - Rust
pub enum ScalarVar {
-    BaseFieldElem(AssignedCell<Base, Base>),
+    BaseFieldElem(AssignedCell<Base, Base>),
     FullWidth,
 }
Expand description

An enumeration of the possible types of scalars used in variable-base multiplication.

-

Variants§

§

BaseFieldElem(AssignedCell<Base, Base>)

An element of the elliptic curve’s base field, that is used as a scalar +

Variants§

§

BaseFieldElem(AssignedCell<Base, Base>)

An element of the elliptic curve’s base field, that is used as a scalar in variable-base scalar mul.

It is not true in general that a scalar field element fits in a curve’s base field, and in particular it is untrue for the Pallas curve, whose @@ -119,10 +119,10 @@ builds.

source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

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

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere + U: Into<T>,

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

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

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
§

impl<T> SyncDeps for Twhere +[WithDispatch] wrapper. Read more

source§

impl<T> SyncDeps for Twhere T: Send + Sync,

\ No newline at end of file diff --git a/halo2_gadgets/ecc/chip/enum.ShortScalar.html b/halo2_gadgets/ecc/chip/enum.ShortScalar.html index 792a5430f9..80a59a9a0a 100644 --- a/halo2_gadgets/ecc/chip/enum.ShortScalar.html +++ b/halo2_gadgets/ecc/chip/enum.ShortScalar.html @@ -1,4 +1,4 @@ -ShortScalar in halo2_gadgets::ecc::chip - Rust +ShortScalar in halo2_gadgets::ecc::chip - Rust +halo2_gadgets::ecc::chip - Rust +EccChip in halo2_gadgets::ecc::chip - Rust

Struct halo2_gadgets::ecc::chip::EccChip

source ·
pub struct EccChip<FixedPoints: FixedPoints<Affine>> { /* private fields */ }
Expand description

An EccInstructions chip that uses 10 advice columns.

-

Implementations§

source§

impl<FixedPoints: FixedPoints<Affine>> EccChip<FixedPoints>

source

pub fn construct(config: <Self as Chip<Base>>::Config) -> Self

Reconstructs this chip from the given config.

+

Implementations§

source§

impl<FixedPoints: FixedPoints<Affine>> EccChip<FixedPoints>

source

pub fn construct(config: <Self as Chip<Base>>::Config) -> Self

Reconstructs this chip from the given config.

source

pub fn configure( - meta: &mut ConstraintSystem<Base>, - advices: [Column<Advice>; 10], - lagrange_coeffs: [Column<Fixed>; 8], + meta: &mut ConstraintSystem<Base>, + advices: [Column<Advice>; 10], + lagrange_coeffs: [Column<Fixed>; 8], range_check: LookupRangeCheckConfig<Base, { sinsemilla::K }> -) -> <Self as Chip<Base>>::Config

Side effects
+) -> <Self as Chip<Base>>::Config
Side effects

All columns in advices will be equality-enabled.

Trait Implementations§

source§

impl<Fixed: FixedPoints<Affine>> BaseFitsInScalarInstructions<EpAffine> for EccChip<Fixed>where <Fixed as FixedPoints<Affine>>::Base: FixedPoint<Affine, FixedScalarKind = BaseFieldElem>, <Fixed as FixedPoints<Affine>>::FullScalar: FixedPoint<Affine, FixedScalarKind = FullScalar>, <Fixed as FixedPoints<Affine>>::ShortScalar: FixedPoint<Affine, FixedScalarKind = ShortScalar>,

source§

fn scalar_var_from_base( &self, - _layouter: &mut impl Layouter<Base>, + _layouter: &mut impl Layouter<Base>, base: &Self::Var -) -> Result<Self::ScalarVar, Error>

Converts a base field element that exists as a variable in the circuit -into a scalar to be used in variable-base scalar multiplication.
source§

impl<FixedPoints: FixedPoints<Affine>> Chip<Fp> for EccChip<FixedPoints>

§

type Config = EccConfig<FixedPoints>

A type that holds the configuration for this chip, and any other state it may need -during circuit synthesis, that can be derived during Circuit::configure.
§

type Loaded = ()

A type that holds any general chip state that needs to be loaded at the start of -Circuit::synthesize. This might simply be () for some chips.
source§

fn config(&self) -> &Self::Config

The chip holds its own configuration.
source§

fn loaded(&self) -> &Self::Loaded

Provides access to general chip state loaded at the beginning of circuit -synthesis. Read more
source§

impl<FixedPoints: Clone + FixedPoints<Affine>> Clone for EccChip<FixedPoints>

source§

fn clone(&self) -> EccChip<FixedPoints>

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

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

Performs copy-assignment from source. Read more
source§

impl<FixedPoints: Debug + FixedPoints<Affine>> Debug for EccChip<FixedPoints>

source§

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

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

impl<Fixed: FixedPoints<Affine>> EccInstructions<EpAffine> for EccChip<Fixed>where +) -> Result<Self::ScalarVar, Error>

Converts a base field element that exists as a variable in the circuit +into a scalar to be used in variable-base scalar multiplication.
source§

impl<FixedPoints: FixedPoints<Affine>> Chip<Fp> for EccChip<FixedPoints>

§

type Config = EccConfig<FixedPoints>

A type that holds the configuration for this chip, and any other state it may need +during circuit synthesis, that can be derived during Circuit::configure.
§

type Loaded = ()

A type that holds any general chip state that needs to be loaded at the start of +Circuit::synthesize. This might simply be () for some chips.
source§

fn config(&self) -> &Self::Config

The chip holds its own configuration.
source§

fn loaded(&self) -> &Self::Loaded

Provides access to general chip state loaded at the beginning of circuit +synthesis. Read more
source§

impl<FixedPoints: Clone + FixedPoints<Affine>> Clone for EccChip<FixedPoints>

source§

fn clone(&self) -> EccChip<FixedPoints>

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

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

Performs copy-assignment from source. Read more
source§

impl<FixedPoints: Debug + FixedPoints<Affine>> Debug for EccChip<FixedPoints>

source§

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

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

impl<Fixed: FixedPoints<Affine>> EccInstructions<EpAffine> for EccChip<Fixed>where <Fixed as FixedPoints<Affine>>::Base: FixedPoint<Affine, FixedScalarKind = BaseFieldElem>, <Fixed as FixedPoints<Affine>>::FullScalar: FixedPoint<Affine, FixedScalarKind = FullScalar>, <Fixed as FixedPoints<Affine>>::ShortScalar: FixedPoint<Affine, FixedScalarKind = ShortScalar>,

§

type ScalarFixed = EccScalarFixed

Variable representing a full-width element of the elliptic curve’s scalar field, to be used for fixed-base scalar mul.
§

type ScalarFixedShort = EccScalarFixedShort

Variable representing a signed short element of the elliptic curve’s -scalar field, to be used for fixed-base scalar mul. Read more
§

type ScalarVar = ScalarVar

Variable representing a scalar used in variable-base scalar mul. Read more
§

type Point = EccPoint

Variable representing an elliptic curve point.
§

type NonIdentityPoint = NonIdentityEccPoint

Variable representing a non-identity elliptic curve point.
§

type X = AssignedCell<Fp, Fp>

Variable representing the affine short Weierstrass x-coordinate of an +scalar field, to be used for fixed-base scalar mul. Read more
§

type ScalarVar = ScalarVar

Variable representing a scalar used in variable-base scalar mul. Read more
§

type Point = EccPoint

Variable representing an elliptic curve point.
§

type NonIdentityPoint = NonIdentityEccPoint

Variable representing a non-identity elliptic curve point.
§

type X = AssignedCell<Fp, Fp>

Variable representing the affine short Weierstrass x-coordinate of an elliptic curve point.
§

type FixedPoints = Fixed

Enumeration of the set of fixed bases to be used in scalar mul. TODO: When associated consts can be used as const generics, introduce Self::NUM_WINDOWS, Self::NUM_WINDOWS_BASE_FIELD, Self::NUM_WINDOWS_SHORT and use them to differentiate FixedPoints types.
source§

fn constrain_equal( &self, - layouter: &mut impl Layouter<Base>, + layouter: &mut impl Layouter<Base>, a: &Self::Point, b: &Self::Point -) -> Result<(), Error>

Constrains point a to be equal in value to point b.
source§

fn witness_point( +) -> Result<(), Error>

Constrains point a to be equal in value to point b.
source§

fn witness_point( &self, - layouter: &mut impl Layouter<Base>, - value: Value<Affine> -) -> Result<Self::Point, Error>

Witnesses the given point as a private input to the circuit. + layouter: &mut impl Layouter<Base>, + value: Value<Affine> +) -> Result<Self::Point, Error>
Witnesses the given point as a private input to the circuit. This allows the point to be the identity, mapped to (0, 0) in affine coordinates.
source§

fn witness_point_non_id( &self, - layouter: &mut impl Layouter<Base>, - value: Value<Affine> -) -> Result<Self::NonIdentityPoint, Error>

Witnesses the given point as a private input to the circuit. + layouter: &mut impl Layouter<Base>, + value: Value<Affine> +) -> Result<Self::NonIdentityPoint, Error>
Witnesses the given point as a private input to the circuit. This returns an error if the point is the identity.
source§

fn witness_scalar_var( &self, - _layouter: &mut impl Layouter<Base>, - _value: Value<Scalar> -) -> Result<Self::ScalarVar, Error>

Witnesses a full-width scalar to be used in variable-base multiplication.
source§

fn witness_scalar_fixed( + _layouter: &mut impl Layouter<Base>, + _value: Value<Scalar> +) -> Result<Self::ScalarVar, Error>

Witnesses a full-width scalar to be used in variable-base multiplication.
source§

fn witness_scalar_fixed( &self, - _layouter: &mut impl Layouter<Base>, - value: Value<Scalar> -) -> Result<Self::ScalarFixed, Error>

Witnesses a full-width scalar to be used in fixed-base multiplication.
source§

fn scalar_fixed_from_signed_short( + _layouter: &mut impl Layouter<Base>, + value: Value<Scalar> +) -> Result<Self::ScalarFixed, Error>

Witnesses a full-width scalar to be used in fixed-base multiplication.
source§

fn scalar_fixed_from_signed_short( &self, - _layouter: &mut impl Layouter<Base>, - (magnitude, sign): (AssignedCell<Base, Base>, AssignedCell<Base, Base>) -) -> Result<Self::ScalarFixedShort, Error>

Converts a magnitude and sign that exists as variables in the circuit into a + _layouter: &mut impl Layouter<Base>, + (magnitude, sign): (AssignedCell<Base, Base>, AssignedCell<Base, Base>) +) -> Result<Self::ScalarFixedShort, Error>
Converts a magnitude and sign that exists as variables in the circuit into a signed short scalar to be used in fixed-base scalar multiplication.
source§

fn extract_p<Point: Into<Self::Point> + Clone>(point: &Point) -> Self::X

Extracts the x-coordinate of a point.
source§

fn add_incomplete( &self, - layouter: &mut impl Layouter<Base>, + layouter: &mut impl Layouter<Base>, a: &Self::NonIdentityPoint, b: &Self::NonIdentityPoint -) -> Result<Self::NonIdentityPoint, Error>

Performs incomplete point addition, returning a + b. Read more
source§

fn add<A: Into<Self::Point> + Clone, B: Into<Self::Point> + Clone>( +) -> Result<Self::NonIdentityPoint, Error>

Performs incomplete point addition, returning a + b. Read more
source§

fn add<A: Into<Self::Point> + Clone, B: Into<Self::Point> + Clone>( &self, - layouter: &mut impl Layouter<Base>, + layouter: &mut impl Layouter<Base>, a: &A, b: &B -) -> Result<Self::Point, Error>

Performs complete point addition, returning a + b.
source§

fn mul( +) -> Result<Self::Point, Error>

Performs complete point addition, returning a + b.
source§

fn mul( &self, - layouter: &mut impl Layouter<Base>, + layouter: &mut impl Layouter<Base>, scalar: &Self::ScalarVar, base: &Self::NonIdentityPoint -) -> Result<(Self::Point, Self::ScalarVar), Error>

Performs variable-base scalar multiplication, returning [scalar] base.
source§

fn mul_fixed( +) -> Result<(Self::Point, Self::ScalarVar), Error>

Performs variable-base scalar multiplication, returning [scalar] base.
source§

fn mul_fixed( &self, - layouter: &mut impl Layouter<Base>, + layouter: &mut impl Layouter<Base>, scalar: &Self::ScalarFixed, base: &<Self::FixedPoints as FixedPoints<Affine>>::FullScalar -) -> Result<(Self::Point, Self::ScalarFixed), Error>

Performs fixed-base scalar multiplication using a full-width scalar, returning [scalar] base.
source§

fn mul_fixed_short( +) -> Result<(Self::Point, Self::ScalarFixed), Error>

Performs fixed-base scalar multiplication using a full-width scalar, returning [scalar] base.
source§

fn mul_fixed_short( &self, - layouter: &mut impl Layouter<Base>, + layouter: &mut impl Layouter<Base>, scalar: &Self::ScalarFixedShort, base: &<Self::FixedPoints as FixedPoints<Affine>>::ShortScalar -) -> Result<(Self::Point, Self::ScalarFixedShort), Error>

Performs fixed-base scalar multiplication using a short signed scalar, returning +) -> Result<(Self::Point, Self::ScalarFixedShort), Error>
Performs fixed-base scalar multiplication using a short signed scalar, returning [scalar] base.
source§

fn mul_fixed_base_field_elem( &self, - layouter: &mut impl Layouter<Base>, - base_field_elem: AssignedCell<Base, Base>, + layouter: &mut impl Layouter<Base>, + base_field_elem: AssignedCell<Base, Base>, base: &<Self::FixedPoints as FixedPoints<Affine>>::Base -) -> Result<Self::Point, Error>

Performs fixed-base scalar multiplication using a base field element as the scalar. +) -> Result<Self::Point, Error>
Performs fixed-base scalar multiplication using a base field element as the scalar. In the current implementation, this base field element must be output from another instruction.
source§

impl<FixedPoints: PartialEq + FixedPoints<Affine>> PartialEq for EccChip<FixedPoints>

source§

fn eq(&self, other: &EccChip<FixedPoints>) -> bool

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

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

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

impl<Fixed: FixedPoints<Affine>> UtilitiesInstructions<Fp> for EccChip<Fixed>

§

type Var = AssignedCell<Fp, Fp>

Variable in the circuit.
source§

fn load_private( +sufficient, and should not be overridden without very good reason.

source§

impl<Fixed: FixedPoints<Affine>> UtilitiesInstructions<Fp> for EccChip<Fixed>

§

type Var = AssignedCell<Fp, Fp>

Variable in the circuit.
source§

fn load_private( &self, - layouter: impl Layouter<F>, - column: Column<Advice>, - value: Value<F> -) -> Result<Self::Var, Error>

Load a variable.
source§

impl<FixedPoints: Eq + FixedPoints<Affine>> Eq for EccChip<FixedPoints>

source§

impl<FixedPoints: FixedPoints<Affine>> StructuralEq for EccChip<FixedPoints>

source§

impl<FixedPoints: FixedPoints<Affine>> StructuralPartialEq for EccChip<FixedPoints>

Auto Trait Implementations§

§

impl<FixedPoints> RefUnwindSafe for EccChip<FixedPoints>where + layouter: impl Layouter<F>, + column: Column<Advice>, + value: Value<F> +) -> Result<Self::Var, Error>

Load a variable.
source§

impl<FixedPoints: Eq + FixedPoints<Affine>> Eq for EccChip<FixedPoints>

source§

impl<FixedPoints: FixedPoints<Affine>> StructuralEq for EccChip<FixedPoints>

source§

impl<FixedPoints: FixedPoints<Affine>> StructuralPartialEq for EccChip<FixedPoints>

Auto Trait Implementations§

§

impl<FixedPoints> RefUnwindSafe for EccChip<FixedPoints>where FixedPoints: RefUnwindSafe,

§

impl<FixedPoints> Send for EccChip<FixedPoints>where FixedPoints: Send,

§

impl<FixedPoints> Sync for EccChip<FixedPoints>where FixedPoints: Sync,

§

impl<FixedPoints> Unpin for EccChip<FixedPoints>where @@ -207,10 +207,10 @@ builds.

source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

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

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere + U: Into<T>,

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

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

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
§

impl<T> SyncDeps for Twhere +[WithDispatch] wrapper. Read more
source§

impl<T> SyncDeps for Twhere T: Send + Sync,

\ No newline at end of file diff --git a/halo2_gadgets/ecc/chip/struct.EccConfig.html b/halo2_gadgets/ecc/chip/struct.EccConfig.html index 9017537b6e..89978c9de6 100644 --- a/halo2_gadgets/ecc/chip/struct.EccConfig.html +++ b/halo2_gadgets/ecc/chip/struct.EccConfig.html @@ -1,4 +1,4 @@ -EccConfig in halo2_gadgets::ecc::chip - Rust +EccConfig in halo2_gadgets::ecc::chip - Rust
pub struct EccConfig<FixedPoints: FixedPoints<Affine>> {
-    pub advices: [Column<Advice>; 10],
+    pub advices: [Column<Advice>; 10],
     pub lookup_config: LookupRangeCheckConfig<Base, { sinsemilla::K }>,
     /* private fields */
 }
Expand description

Configuration for EccChip.

-

Fields§

§advices: [Column<Advice>; 10]

Advice columns needed by instructions in the ECC chip.

+

Fields§

§advices: [Column<Advice>; 10]

Advice columns needed by instructions in the ECC chip.

§lookup_config: LookupRangeCheckConfig<Base, { sinsemilla::K }>

Lookup range check using 10-bit lookup table

Trait Implementations§

source§

impl<FixedPoints: Clone + FixedPoints<Affine>> Clone for EccConfig<FixedPoints>

source§

fn clone(&self) -> EccConfig<FixedPoints>

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

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

Performs copy-assignment from source. Read more
source§

impl<FixedPoints: Debug + FixedPoints<Affine>> Debug for EccConfig<FixedPoints>

source§

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

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

impl<FixedPoints: PartialEq + FixedPoints<Affine>> PartialEq for EccConfig<FixedPoints>

source§

fn eq(&self, other: &EccConfig<FixedPoints>) -> 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 @@ -118,10 +118,10 @@ builds.
source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

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

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere + U: Into<T>,

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

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

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
§

impl<T> SyncDeps for Twhere +[WithDispatch] wrapper. Read more

source§

impl<T> SyncDeps for Twhere T: Send + Sync,

\ No newline at end of file diff --git a/halo2_gadgets/ecc/chip/struct.EccPoint.html b/halo2_gadgets/ecc/chip/struct.EccPoint.html index 893d4ad24f..fcc0b0fa86 100644 --- a/halo2_gadgets/ecc/chip/struct.EccPoint.html +++ b/halo2_gadgets/ecc/chip/struct.EccPoint.html @@ -1,4 +1,4 @@ -EccPoint in halo2_gadgets::ecc::chip - Rust +EccPoint in halo2_gadgets::ecc::chip - Rust +EccScalarFixed in halo2_gadgets::ecc::chip - Rust +EccScalarFixedShort in halo2_gadgets::ecc::chip - Rust +NonIdentityEccPoint in halo2_gadgets::ecc::chip - Rust
pub struct NonIdentityEccPoint { /* private fields */ }
Expand description

A non-identity point represented in affine (x, y) coordinates. Each coordinate is assigned to a cell.

-

Implementations§

source§

impl NonIdentityEccPoint

source

pub fn point(&self) -> Value<Affine>

Returns the value of this curve point, if known.

-
source

pub fn x(&self) -> AssignedCell<Base, Base>

The cell containing the affine short-Weierstrass x-coordinate.

-
source

pub fn y(&self) -> AssignedCell<Base, Base>

The cell containing the affine short-Weierstrass y-coordinate.

+

Implementations§

source§

impl NonIdentityEccPoint

source

pub fn point(&self) -> Value<Affine>

Returns the value of this curve point, if known.

+
source

pub fn x(&self) -> AssignedCell<Base, Base>

The cell containing the affine short-Weierstrass x-coordinate.

+
source

pub fn y(&self) -> AssignedCell<Base, Base>

The cell containing the affine short-Weierstrass y-coordinate.

Trait Implementations§

source§

impl Clone for NonIdentityEccPoint

source§

fn clone(&self) -> NonIdentityEccPoint

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for NonIdentityEccPoint

source§

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

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

impl From<NonIdentityEccPoint> for EccPoint

source§

fn from(non_id_point: NonIdentityEccPoint) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere @@ -109,10 +109,10 @@ builds.

source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

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

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere + U: Into<T>,

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

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

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
§

impl<T> SyncDeps for Twhere +[WithDispatch] wrapper. Read more

source§

impl<T> SyncDeps for Twhere T: Send + Sync,

\ No newline at end of file diff --git a/halo2_gadgets/ecc/chip/trait.FixedPoint.html b/halo2_gadgets/ecc/chip/trait.FixedPoint.html index 442cb69999..f93ada1464 100644 --- a/halo2_gadgets/ecc/chip/trait.FixedPoint.html +++ b/halo2_gadgets/ecc/chip/trait.FixedPoint.html @@ -1,4 +1,4 @@ -FixedPoint in halo2_gadgets::ecc::chip - Rust +FixedPoint in halo2_gadgets::ecc::chip - Rust +FixedScalarKind in halo2_gadgets::ecc::chip - Rust +halo2_gadgets::ecc - Rust +FixedPoint in halo2_gadgets::ecc - Rust +FixedPointBaseField in halo2_gadgets::ecc - Rust +FixedPointShort in halo2_gadgets::ecc - Rust +NonIdentityPoint in halo2_gadgets::ecc - Rust +Point in halo2_gadgets::ecc - Rust +ScalarFixed in halo2_gadgets::ecc - Rust +ScalarFixedShort in halo2_gadgets::ecc - Rust +ScalarVar in halo2_gadgets::ecc - Rust +X in halo2_gadgets::ecc - Rust +BaseFitsInScalarInstructions in halo2_gadgets::ecc - Rust +EccInstructions in halo2_gadgets::ecc - Rust -
pub trait EccInstructions<C: CurveAffine>: Chip<C::Base> + UtilitiesInstructions<C::Base> + Clone + Debug + Eq {
+
pub trait EccInstructions<C: CurveAffine>: Chip<C::Base> + UtilitiesInstructions<C::Base> + Clone + Debug + Eq {
     type ScalarVar: Clone + Debug;
     type ScalarFixed: Clone + Debug;
     type ScalarFixedShort: Clone + Debug;
@@ -25,72 +25,72 @@
 
Show 13 methods // Required methods fn constrain_equal( &self, - layouter: &mut impl Layouter<C::Base>, + layouter: &mut impl Layouter<C::Base>, a: &Self::Point, b: &Self::Point - ) -> Result<(), Error>; + ) -> Result<(), Error>; fn witness_point( &self, - layouter: &mut impl Layouter<C::Base>, - value: Value<C> - ) -> Result<Self::Point, Error>; + layouter: &mut impl Layouter<C::Base>, + value: Value<C> + ) -> Result<Self::Point, Error>; fn witness_point_non_id( &self, - layouter: &mut impl Layouter<C::Base>, - value: Value<C> - ) -> Result<Self::NonIdentityPoint, Error>; + layouter: &mut impl Layouter<C::Base>, + value: Value<C> + ) -> Result<Self::NonIdentityPoint, Error>; fn witness_scalar_var( &self, - layouter: &mut impl Layouter<C::Base>, - value: Value<C::Scalar> - ) -> Result<Self::ScalarVar, Error>; + layouter: &mut impl Layouter<C::Base>, + value: Value<C::Scalar> + ) -> Result<Self::ScalarVar, Error>; fn witness_scalar_fixed( &self, - layouter: &mut impl Layouter<C::Base>, - value: Value<C::Scalar> - ) -> Result<Self::ScalarFixed, Error>; + layouter: &mut impl Layouter<C::Base>, + value: Value<C::Scalar> + ) -> Result<Self::ScalarFixed, Error>; fn scalar_fixed_from_signed_short( &self, - layouter: &mut impl Layouter<C::Base>, + layouter: &mut impl Layouter<C::Base>, magnitude_sign: (Self::Var, Self::Var) - ) -> Result<Self::ScalarFixedShort, Error>; + ) -> Result<Self::ScalarFixedShort, Error>; fn extract_p<Point: Into<Self::Point> + Clone>(point: &Point) -> Self::X; fn add_incomplete( &self, - layouter: &mut impl Layouter<C::Base>, + layouter: &mut impl Layouter<C::Base>, a: &Self::NonIdentityPoint, b: &Self::NonIdentityPoint - ) -> Result<Self::NonIdentityPoint, Error>; + ) -> Result<Self::NonIdentityPoint, Error>; fn add<A: Into<Self::Point> + Clone, B: Into<Self::Point> + Clone>( &self, - layouter: &mut impl Layouter<C::Base>, + layouter: &mut impl Layouter<C::Base>, a: &A, b: &B - ) -> Result<Self::Point, Error>; + ) -> Result<Self::Point, Error>; fn mul( &self, - layouter: &mut impl Layouter<C::Base>, + layouter: &mut impl Layouter<C::Base>, scalar: &Self::ScalarVar, base: &Self::NonIdentityPoint - ) -> Result<(Self::Point, Self::ScalarVar), Error>; + ) -> Result<(Self::Point, Self::ScalarVar), Error>; fn mul_fixed( &self, - layouter: &mut impl Layouter<C::Base>, + layouter: &mut impl Layouter<C::Base>, scalar: &Self::ScalarFixed, base: &<Self::FixedPoints as FixedPoints<C>>::FullScalar - ) -> Result<(Self::Point, Self::ScalarFixed), Error>; + ) -> Result<(Self::Point, Self::ScalarFixed), Error>; fn mul_fixed_short( &self, - layouter: &mut impl Layouter<C::Base>, + layouter: &mut impl Layouter<C::Base>, scalar: &Self::ScalarFixedShort, base: &<Self::FixedPoints as FixedPoints<C>>::ShortScalar - ) -> Result<(Self::Point, Self::ScalarFixedShort), Error>; + ) -> Result<(Self::Point, Self::ScalarFixedShort), Error>; fn mul_fixed_base_field_elem( &self, - layouter: &mut impl Layouter<C::Base>, + layouter: &mut impl Layouter<C::Base>, base_field_elem: Self::Var, base: &<Self::FixedPoints as FixedPoints<C>>::Base - ) -> Result<Self::Point, Error>; + ) -> Result<Self::Point, Error>;
}
Expand description

The set of circuit instructions required to use the ECC gadgets.

Required Associated Types§

source

type ScalarVar: Clone + Debug

Variable representing a scalar used in variable-base scalar mul.

This type is treated as a full-width scalar. However, if Self implements @@ -111,81 +111,81 @@ and use them to differentiate FixedPoints types.

Required Methods§

source

fn constrain_equal( &self, - layouter: &mut impl Layouter<C::Base>, + layouter: &mut impl Layouter<C::Base>, a: &Self::Point, b: &Self::Point -) -> Result<(), Error>

Constrains point a to be equal in value to point b.

+) -> Result<(), Error>

Constrains point a to be equal in value to point b.

source

fn witness_point( &self, - layouter: &mut impl Layouter<C::Base>, - value: Value<C> -) -> Result<Self::Point, Error>

Witnesses the given point as a private input to the circuit. + layouter: &mut impl Layouter<C::Base>, + value: Value<C> +) -> Result<Self::Point, Error>

Witnesses the given point as a private input to the circuit. This allows the point to be the identity, mapped to (0, 0) in affine coordinates.

source

fn witness_point_non_id( &self, - layouter: &mut impl Layouter<C::Base>, - value: Value<C> -) -> Result<Self::NonIdentityPoint, Error>

Witnesses the given point as a private input to the circuit. + layouter: &mut impl Layouter<C::Base>, + value: Value<C> +) -> Result<Self::NonIdentityPoint, Error>

Witnesses the given point as a private input to the circuit. This returns an error if the point is the identity.

source

fn witness_scalar_var( &self, - layouter: &mut impl Layouter<C::Base>, - value: Value<C::Scalar> -) -> Result<Self::ScalarVar, Error>

Witnesses a full-width scalar to be used in variable-base multiplication.

+ layouter: &mut impl Layouter<C::Base>, + value: Value<C::Scalar> +) -> Result<Self::ScalarVar, Error>

Witnesses a full-width scalar to be used in variable-base multiplication.

source

fn witness_scalar_fixed( &self, - layouter: &mut impl Layouter<C::Base>, - value: Value<C::Scalar> -) -> Result<Self::ScalarFixed, Error>

Witnesses a full-width scalar to be used in fixed-base multiplication.

+ layouter: &mut impl Layouter<C::Base>, + value: Value<C::Scalar> +) -> Result<Self::ScalarFixed, Error>

Witnesses a full-width scalar to be used in fixed-base multiplication.

source

fn scalar_fixed_from_signed_short( &self, - layouter: &mut impl Layouter<C::Base>, + layouter: &mut impl Layouter<C::Base>, magnitude_sign: (Self::Var, Self::Var) -) -> Result<Self::ScalarFixedShort, Error>

Converts a magnitude and sign that exists as variables in the circuit into a +) -> Result<Self::ScalarFixedShort, Error>

Converts a magnitude and sign that exists as variables in the circuit into a signed short scalar to be used in fixed-base scalar multiplication.

source

fn extract_p<Point: Into<Self::Point> + Clone>(point: &Point) -> Self::X

Extracts the x-coordinate of a point.

source

fn add_incomplete( &self, - layouter: &mut impl Layouter<C::Base>, + layouter: &mut impl Layouter<C::Base>, a: &Self::NonIdentityPoint, b: &Self::NonIdentityPoint -) -> Result<Self::NonIdentityPoint, Error>

Performs incomplete point addition, returning a + b.

+) -> Result<Self::NonIdentityPoint, Error>

Performs incomplete point addition, returning a + b.

This returns an error in exceptional cases.

source

fn add<A: Into<Self::Point> + Clone, B: Into<Self::Point> + Clone>( &self, - layouter: &mut impl Layouter<C::Base>, + layouter: &mut impl Layouter<C::Base>, a: &A, b: &B -) -> Result<Self::Point, Error>

Performs complete point addition, returning a + b.

+) -> Result<Self::Point, Error>

Performs complete point addition, returning a + b.

source

fn mul( &self, - layouter: &mut impl Layouter<C::Base>, + layouter: &mut impl Layouter<C::Base>, scalar: &Self::ScalarVar, base: &Self::NonIdentityPoint -) -> Result<(Self::Point, Self::ScalarVar), Error>

Performs variable-base scalar multiplication, returning [scalar] base.

+) -> Result<(Self::Point, Self::ScalarVar), Error>

Performs variable-base scalar multiplication, returning [scalar] base.

source

fn mul_fixed( &self, - layouter: &mut impl Layouter<C::Base>, + layouter: &mut impl Layouter<C::Base>, scalar: &Self::ScalarFixed, base: &<Self::FixedPoints as FixedPoints<C>>::FullScalar -) -> Result<(Self::Point, Self::ScalarFixed), Error>

Performs fixed-base scalar multiplication using a full-width scalar, returning [scalar] base.

+) -> Result<(Self::Point, Self::ScalarFixed), Error>

Performs fixed-base scalar multiplication using a full-width scalar, returning [scalar] base.

source

fn mul_fixed_short( &self, - layouter: &mut impl Layouter<C::Base>, + layouter: &mut impl Layouter<C::Base>, scalar: &Self::ScalarFixedShort, base: &<Self::FixedPoints as FixedPoints<C>>::ShortScalar -) -> Result<(Self::Point, Self::ScalarFixedShort), Error>

Performs fixed-base scalar multiplication using a short signed scalar, returning +) -> Result<(Self::Point, Self::ScalarFixedShort), Error>

Performs fixed-base scalar multiplication using a short signed scalar, returning [scalar] base.

source

fn mul_fixed_base_field_elem( &self, - layouter: &mut impl Layouter<C::Base>, + layouter: &mut impl Layouter<C::Base>, base_field_elem: Self::Var, base: &<Self::FixedPoints as FixedPoints<C>>::Base -) -> Result<Self::Point, Error>

Performs fixed-base scalar multiplication using a base field element as the scalar. +) -> Result<Self::Point, Error>

Performs fixed-base scalar multiplication using a base field element as the scalar. In the current implementation, this base field element must be output from another instruction.

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<Fixed: FixedPoints<Affine>> EccInstructions<EpAffine> for EccChip<Fixed>where <Fixed as FixedPoints<Affine>>::Base: FixedPoint<Affine, FixedScalarKind = BaseFieldElem>, <Fixed as FixedPoints<Affine>>::FullScalar: FixedPoint<Affine, FixedScalarKind = FullScalar>, - <Fixed as FixedPoints<Affine>>::ShortScalar: FixedPoint<Affine, FixedScalarKind = ShortScalar>,

\ No newline at end of file + <Fixed as FixedPoints<Affine>>::ShortScalar: FixedPoint<Affine, FixedScalarKind = ShortScalar>,
§

type ScalarFixed = EccScalarFixed

§

type ScalarFixedShort = EccScalarFixedShort

§

type ScalarVar = ScalarVar

§

type Point = EccPoint

§

type NonIdentityPoint = NonIdentityEccPoint

§

type X = AssignedCell<Fp, Fp>

§

type FixedPoints = Fixed

\ No newline at end of file diff --git a/halo2_gadgets/ecc/trait.FixedPoints.html b/halo2_gadgets/ecc/trait.FixedPoints.html index de7a9414f8..d6b9df92f3 100644 --- a/halo2_gadgets/ecc/trait.FixedPoints.html +++ b/halo2_gadgets/ecc/trait.FixedPoints.html @@ -1,4 +1,4 @@ -FixedPoints in halo2_gadgets::ecc - Rust +FixedPoints in halo2_gadgets::ecc - Rust +halo2_gadgets - Rust +PaddedWord in halo2_gadgets::poseidon - Rust
pub enum PaddedWord<F: Field> {
-    Message(AssignedCell<F, F>),
+    Message(AssignedCell<F, F>),
     Padding(F),
 }
Expand description

A word from the padded input to a Poseidon sponge.

-

Variants§

§

Message(AssignedCell<F, F>)

A message word provided by the prover.

+

Variants§

§

Message(AssignedCell<F, F>)

A message word provided by the prover.

§

Padding(F)

A padding word, that will be fixed in the circuit parameters.

Trait Implementations§

source§

impl<F: Clone + Field> Clone for PaddedWord<F>

source§

fn clone(&self) -> PaddedWord<F>

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

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

Performs copy-assignment from source. Read more
source§

impl<F: Debug + Field> Debug for PaddedWord<F>

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

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

§

impl<F> Send for PaddedWord<F>

§

impl<F> Sync for PaddedWord<F>

§

impl<F> Unpin for PaddedWord<F>where @@ -113,10 +113,10 @@ builds.

source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

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

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere + U: Into<T>,

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

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

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
§

impl<T> SyncDeps for Twhere +[WithDispatch] wrapper. Read more

source§

impl<T> SyncDeps for Twhere T: Send + Sync,

\ No newline at end of file diff --git a/halo2_gadgets/poseidon/index.html b/halo2_gadgets/poseidon/index.html index 9ac5370424..847a4c5763 100644 --- a/halo2_gadgets/poseidon/index.html +++ b/halo2_gadgets/poseidon/index.html @@ -1,4 +1,4 @@ -halo2_gadgets::poseidon - Rust +halo2_gadgets::poseidon - Rust +generate_constants in halo2_gadgets::poseidon::primitives - Rust +halo2_gadgets::poseidon::primitives - Rust +Absorbing in halo2_gadgets::poseidon::primitives - Rust +ConstantLength in halo2_gadgets::poseidon::primitives - Rust +Hash in halo2_gadgets::poseidon::primitives - Rust +P128Pow5T3 in halo2_gadgets::poseidon::primitives - Rust +Squeezing in halo2_gadgets::poseidon::primitives - Rust +Domain in halo2_gadgets::poseidon::primitives - Rust +Spec in halo2_gadgets::poseidon::primitives - Rust +SpongeMode in halo2_gadgets::poseidon::primitives - Rust +Mds in halo2_gadgets::poseidon::primitives - Rust +Hash in halo2_gadgets::poseidon - Rust +Pow5Chip in halo2_gadgets::poseidon - Rust +Pow5Config in halo2_gadgets::poseidon - Rust +Sponge in halo2_gadgets::poseidon - Rust +StateWord in halo2_gadgets::poseidon - Rust
pub struct StateWord<F: Field>(/* private fields */);
Expand description

A word in the Poseidon state.

-

Trait Implementations§

source§

impl<F: Clone + Field> Clone for StateWord<F>

source§

fn clone(&self) -> StateWord<F>

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

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

Performs copy-assignment from source. Read more
source§

impl<F: Debug + Field> Debug for StateWord<F>

source§

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

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

impl<F: Field> From<AssignedCell<F, F>> for StateWord<F>

source§

fn from(cell_value: AssignedCell<F, F>) -> StateWord<F>

Converts to this type from the input type.
source§

impl<F: Field> From<StateWord<F>> for AssignedCell<F, F>

source§

fn from(state_word: StateWord<F>) -> AssignedCell<F, F>

Converts to this type from the input type.
source§

impl<F: Field> Var<F> for StateWord<F>

source§

fn cell(&self) -> Cell

The cell at which this variable was allocated.
source§

fn value(&self) -> Value<F>

The value allocated to this variable.

Auto Trait Implementations§

§

impl<F> RefUnwindSafe for StateWord<F>where +

Trait Implementations§

source§

impl<F: Clone + Field> Clone for StateWord<F>

source§

fn clone(&self) -> StateWord<F>

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

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

Performs copy-assignment from source. Read more
source§

impl<F: Debug + Field> Debug for StateWord<F>

source§

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

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

impl<F: Field> From<AssignedCell<F, F>> for StateWord<F>

source§

fn from(cell_value: AssignedCell<F, F>) -> StateWord<F>

Converts to this type from the input type.
source§

impl<F: Field> From<StateWord<F>> for AssignedCell<F, F>

source§

fn from(state_word: StateWord<F>) -> AssignedCell<F, F>

Converts to this type from the input type.
source§

impl<F: Field> Var<F> for StateWord<F>

source§

fn cell(&self) -> Cell

The cell at which this variable was allocated.
source§

fn value(&self) -> Value<F>

The value allocated to this variable.

Auto Trait Implementations§

§

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

§

impl<F> Send for StateWord<F>

§

impl<F> Sync for StateWord<F>

§

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

§

impl<F> UnwindSafe for StateWord<F>where F: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for Twhere @@ -108,10 +108,10 @@ builds.

source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

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

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere + U: Into<T>,

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

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

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
§

impl<T> SyncDeps for Twhere +[WithDispatch] wrapper. Read more
source§

impl<T> SyncDeps for Twhere T: Send + Sync,

\ No newline at end of file diff --git a/halo2_gadgets/poseidon/struct.Word.html b/halo2_gadgets/poseidon/struct.Word.html index 12dc0fc602..ea5e8d81cb 100644 --- a/halo2_gadgets/poseidon/struct.Word.html +++ b/halo2_gadgets/poseidon/struct.Word.html @@ -1,4 +1,4 @@ -Word in halo2_gadgets::poseidon - Rust +Word in halo2_gadgets::poseidon - Rust +PoseidonInstructions in halo2_gadgets::poseidon - Rust -
pub trait PoseidonInstructions<F: Field, S: Spec<F, T, RATE>, const T: usize, const RATE: usize>: Chip<F> {
-    type Word: Clone + Debug + From<AssignedCell<F, F>> + Into<AssignedCell<F, F>>;
+
pub trait PoseidonInstructions<F: Field, S: Spec<F, T, RATE>, const T: usize, const RATE: usize>: Chip<F> {
+    type Word: Clone + Debug + From<AssignedCell<F, F>> + Into<AssignedCell<F, F>>;
 
     // Required method
     fn permute(
         &self,
-        layouter: &mut impl Layouter<F>,
+        layouter: &mut impl Layouter<F>,
         initial_state: &[Self::Word; T]
-    ) -> Result<[Self::Word; T], Error>;
+    ) -> Result<[Self::Word; T], Error>;
 }
Expand description

The set of circuit instructions required to use the Poseidon permutation.

-

Required Associated Types§

source

type Word: Clone + Debug + From<AssignedCell<F, F>> + Into<AssignedCell<F, F>>

Variable representing the word over which the Poseidon permutation operates.

+

Required Associated Types§

source

type Word: Clone + Debug + From<AssignedCell<F, F>> + Into<AssignedCell<F, F>>

Variable representing the word over which the Poseidon permutation operates.

Required Methods§

source

fn permute( &self, - layouter: &mut impl Layouter<F>, + layouter: &mut impl Layouter<F>, initial_state: &[Self::Word; T] -) -> Result<[Self::Word; T], Error>

Applies the Poseidon permutation to the given state.

+) -> Result<[Self::Word; T], Error>

Applies the Poseidon permutation to the given state.

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<F: Field, S: Spec<F, WIDTH, RATE>, const WIDTH: usize, const RATE: usize> PoseidonInstructions<F, S, WIDTH, RATE> for Pow5Chip<F, WIDTH, RATE>

§

type Word = StateWord<F>

\ No newline at end of file diff --git a/halo2_gadgets/poseidon/trait.PoseidonSpongeInstructions.html b/halo2_gadgets/poseidon/trait.PoseidonSpongeInstructions.html index e97281d418..672f54e70e 100644 --- a/halo2_gadgets/poseidon/trait.PoseidonSpongeInstructions.html +++ b/halo2_gadgets/poseidon/trait.PoseidonSpongeInstructions.html @@ -1,4 +1,4 @@ -PoseidonSpongeInstructions in halo2_gadgets::poseidon - Rust +PoseidonSpongeInstructions in halo2_gadgets::poseidon - Rust \ No newline at end of file diff --git a/halo2_gadgets/sha256/constant.BLOCK_SIZE.html b/halo2_gadgets/sha256/constant.BLOCK_SIZE.html index 73285ff133..8ee99b355d 100644 --- a/halo2_gadgets/sha256/constant.BLOCK_SIZE.html +++ b/halo2_gadgets/sha256/constant.BLOCK_SIZE.html @@ -1,4 +1,4 @@ -BLOCK_SIZE in halo2_gadgets::sha256 - Rust +BLOCK_SIZE in halo2_gadgets::sha256 - Rust +halo2_gadgets::sha256 - Rust +BlockWord in halo2_gadgets::sha256 - Rust -
pub struct BlockWord(pub Value<u32>);
Available on crate feature unstable only.
Expand description

A word in a Table16 message block.

-

Tuple Fields§

§0: Value<u32>

Trait Implementations§

source§

impl Clone for BlockWord

source§

fn clone(&self) -> BlockWord

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for BlockWord

source§

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

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

impl Default for BlockWord

source§

fn default() -> BlockWord

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

impl Copy for BlockWord

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere +
pub struct BlockWord(pub Value<u32>);
Available on crate feature unstable only.
Expand description

A word in a Table16 message block.

+

Tuple Fields§

§0: Value<u32>

Trait Implementations§

source§

impl Clone for BlockWord

source§

fn clone(&self) -> BlockWord

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for BlockWord

source§

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

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

impl Default for BlockWord

source§

fn default() -> BlockWord

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

impl Copy for BlockWord

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> Twhere @@ -105,10 +105,10 @@ builds.

source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

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

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere + U: Into<T>,

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

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

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
§

impl<T> SyncDeps for Twhere +[WithDispatch] wrapper. Read more

source§

impl<T> SyncDeps for Twhere T: Send + Sync,

\ No newline at end of file diff --git a/halo2_gadgets/sha256/struct.Sha256.html b/halo2_gadgets/sha256/struct.Sha256.html index a7ffc43a0a..a60dba476a 100644 --- a/halo2_gadgets/sha256/struct.Sha256.html +++ b/halo2_gadgets/sha256/struct.Sha256.html @@ -1,4 +1,4 @@ -Sha256 in halo2_gadgets::sha256 - Rust +Sha256 in halo2_gadgets::sha256 - Rust
pub struct Sha256<F: Field, CS: Sha256Instructions<F>> { /* private fields */ }
Available on crate feature unstable only.
Expand description

A gadget that constrains a SHA-256 invocation. It supports input at a granularity of 32 bits.

-

Implementations§

source§

impl<F: Field, Sha256Chip: Sha256Instructions<F>> Sha256<F, Sha256Chip>

source

pub fn new(chip: Sha256Chip, layouter: impl Layouter<F>) -> Result<Self, Error>

Create a new hasher instance.

+

Implementations§

source§

impl<F: Field, Sha256Chip: Sha256Instructions<F>> Sha256<F, Sha256Chip>

source

pub fn new(chip: Sha256Chip, layouter: impl Layouter<F>) -> Result<Self, Error>

Create a new hasher instance.

source

pub fn update( &mut self, - layouter: impl Layouter<F>, + layouter: impl Layouter<F>, data: &[Sha256Chip::BlockWord] -) -> Result<(), Error>

Digest data, updating the internal state.

+) -> Result<(), Error>

Digest data, updating the internal state.

source

pub fn finalize( self, - layouter: impl Layouter<F> -) -> Result<Sha256Digest<Sha256Chip::BlockWord>, Error>

Retrieve result and consume hasher instance.

+ layouter: impl Layouter<F> +) -> Result<Sha256Digest<Sha256Chip::BlockWord>, Error>

Retrieve result and consume hasher instance.

source

pub fn digest( chip: Sha256Chip, - layouter: impl Layouter<F>, + layouter: impl Layouter<F>, data: &[Sha256Chip::BlockWord] -) -> Result<Sha256Digest<Sha256Chip::BlockWord>, Error>

Convenience function to compute hash of the data. It will handle hasher creation, +) -> Result<Sha256Digest<Sha256Chip::BlockWord>, Error>

Convenience function to compute hash of the data. It will handle hasher creation, data feeding and finalization.

Trait Implementations§

source§

impl<F: Debug + Field, CS: Debug + Sha256Instructions<F>> Debug for Sha256<F, CS>where CS::State: Debug, @@ -138,10 +138,10 @@ T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

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

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere + U: Into<T>,

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

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

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
§

impl<T> SyncDeps for Twhere +[WithDispatch] wrapper. Read more
source§

impl<T> SyncDeps for Twhere T: Send + Sync,

\ No newline at end of file diff --git a/halo2_gadgets/sha256/struct.Sha256Digest.html b/halo2_gadgets/sha256/struct.Sha256Digest.html index 2bad9be6dd..9eb9138e3e 100644 --- a/halo2_gadgets/sha256/struct.Sha256Digest.html +++ b/halo2_gadgets/sha256/struct.Sha256Digest.html @@ -1,4 +1,4 @@ -Sha256Digest in halo2_gadgets::sha256 - Rust +Sha256Digest in halo2_gadgets::sha256 - Rust +Table16Chip in halo2_gadgets::sha256 - Rust
pub struct Table16Chip { /* private fields */ }
Available on crate feature unstable only.
Expand description

A chip that implements SHA-256 with a maximum lookup table size of $2^16$.

-

Implementations§

source§

impl Table16Chip

source

pub fn construct(config: <Self as Chip<Base>>::Config) -> Self

Reconstructs this chip from the given config.

+

Implementations§

source§

impl Table16Chip

source

pub fn construct(config: <Self as Chip<Base>>::Config) -> Self

Reconstructs this chip from the given config.

source

pub fn configure( - meta: &mut ConstraintSystem<Base> -) -> <Self as Chip<Base>>::Config

Configures a circuit to include this chip.

+ meta: &mut ConstraintSystem<Base> +) -> <Self as Chip<Base>>::Config

Configures a circuit to include this chip.

source

pub fn load( config: Table16Config, - layouter: &mut impl Layouter<Base> -) -> Result<(), Error>

Loads the lookup table required by this chip into the circuit.

-

Trait Implementations§

source§

impl Chip<Fp> for Table16Chip

§

type Config = Table16Config

A type that holds the configuration for this chip, and any other state it may need -during circuit synthesis, that can be derived during Circuit::configure.
§

type Loaded = ()

A type that holds any general chip state that needs to be loaded at the start of -Circuit::synthesize. This might simply be () for some chips.
source§

fn config(&self) -> &Self::Config

The chip holds its own configuration.
source§

fn loaded(&self) -> &Self::Loaded

Provides access to general chip state loaded at the beginning of circuit -synthesis. Read more
source§

impl Clone for Table16Chip

source§

fn clone(&self) -> Table16Chip

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for Table16Chip

source§

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

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

impl Sha256Instructions<Fp> for Table16Chip

§

type State = State

Variable representing the SHA-256 internal state.
§

type BlockWord = BlockWord

Variable representing a 32-bit word of the input block to the SHA-256 compression + layouter: &mut impl Layouter<Base> +) -> Result<(), Error>

Loads the lookup table required by this chip into the circuit.

+

Trait Implementations§

source§

impl Chip<Fp> for Table16Chip

§

type Config = Table16Config

A type that holds the configuration for this chip, and any other state it may need +during circuit synthesis, that can be derived during Circuit::configure.
§

type Loaded = ()

A type that holds any general chip state that needs to be loaded at the start of +Circuit::synthesize. This might simply be () for some chips.
source§

fn config(&self) -> &Self::Config

The chip holds its own configuration.
source§

fn loaded(&self) -> &Self::Loaded

Provides access to general chip state loaded at the beginning of circuit +synthesis. Read more
source§

impl Clone for Table16Chip

source§

fn clone(&self) -> Table16Chip

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

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

Performs copy-assignment from source. Read more
source§

impl Debug for Table16Chip

source§

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

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

impl Sha256Instructions<Fp> for Table16Chip

§

type State = State

Variable representing the SHA-256 internal state.
§

type BlockWord = BlockWord

Variable representing a 32-bit word of the input block to the SHA-256 compression function.
source§

fn initialization_vector( &self, - layouter: &mut impl Layouter<Base> -) -> Result<State, Error>

Places the SHA-256 IV in the circuit, returning the initial state variable.
source§

fn initialization( + layouter: &mut impl Layouter<Base> +) -> Result<State, Error>

Places the SHA-256 IV in the circuit, returning the initial state variable.
source§

fn initialization( &self, - layouter: &mut impl Layouter<Base>, + layouter: &mut impl Layouter<Base>, init_state: &Self::State -) -> Result<Self::State, Error>

Creates an initial state from the output state of a previous block
source§

fn compress( +) -> Result<Self::State, Error>

Creates an initial state from the output state of a previous block
source§

fn compress( &self, - layouter: &mut impl Layouter<Base>, + layouter: &mut impl Layouter<Base>, initialized_state: &Self::State, input: [Self::BlockWord; 16] -) -> Result<Self::State, Error>

Starting from the given initialized state, processes a block of input and returns the +) -> Result<Self::State, Error>
Starting from the given initialized state, processes a block of input and returns the final state.
source§

fn digest( &self, - layouter: &mut impl Layouter<Base>, + layouter: &mut impl Layouter<Base>, state: &Self::State -) -> Result<[Self::BlockWord; 8], Error>

Converts the given state into a message digest.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere +) -> Result<[Self::BlockWord; 8], Error>

Converts the given state into a message digest.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> Twhere @@ -134,10 +134,10 @@ builds.

source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

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

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere + U: Into<T>,

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

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

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
§

impl<T> SyncDeps for Twhere +[WithDispatch] wrapper. Read more
source§

impl<T> SyncDeps for Twhere T: Send + Sync,

\ No newline at end of file diff --git a/halo2_gadgets/sha256/struct.Table16Config.html b/halo2_gadgets/sha256/struct.Table16Config.html index dbd57017cc..6282d81fc5 100644 --- a/halo2_gadgets/sha256/struct.Table16Config.html +++ b/halo2_gadgets/sha256/struct.Table16Config.html @@ -1,4 +1,4 @@ -Table16Config in halo2_gadgets::sha256 - Rust +Table16Config in halo2_gadgets::sha256 - Rust +Sha256Instructions in halo2_gadgets::sha256 - Rust -
pub trait Sha256Instructions<F: Field>: Chip<F> {
+
pub trait Sha256Instructions<F: Field>: Chip<F> {
     type State: Clone + Debug;
     type BlockWord: Copy + Debug + Default;
 
     // Required methods
     fn initialization_vector(
         &self,
-        layouter: &mut impl Layouter<F>
-    ) -> Result<Self::State, Error>;
+        layouter: &mut impl Layouter<F>
+    ) -> Result<Self::State, Error>;
     fn initialization(
         &self,
-        layouter: &mut impl Layouter<F>,
+        layouter: &mut impl Layouter<F>,
         init_state: &Self::State
-    ) -> Result<Self::State, Error>;
+    ) -> Result<Self::State, Error>;
     fn compress(
         &self,
-        layouter: &mut impl Layouter<F>,
+        layouter: &mut impl Layouter<F>,
         initialized_state: &Self::State,
         input: [Self::BlockWord; 16]
-    ) -> Result<Self::State, Error>;
+    ) -> Result<Self::State, Error>;
     fn digest(
         &self,
-        layouter: &mut impl Layouter<F>,
+        layouter: &mut impl Layouter<F>,
         state: &Self::State
-    ) -> Result<[Self::BlockWord; 8], Error>;
+    ) -> Result<[Self::BlockWord; 8], Error>;
 }
Available on crate feature unstable only.
Expand description

The set of circuit instructions required to use the Sha256 gadget.

Required Associated Types§

source

type State: Clone + Debug

Variable representing the SHA-256 internal state.

source

type BlockWord: Copy + Debug + Default

Variable representing a 32-bit word of the input block to the SHA-256 compression function.

Required Methods§

source

fn initialization_vector( &self, - layouter: &mut impl Layouter<F> -) -> Result<Self::State, Error>

Places the SHA-256 IV in the circuit, returning the initial state variable.

+ layouter: &mut impl Layouter<F> +) -> Result<Self::State, Error>

Places the SHA-256 IV in the circuit, returning the initial state variable.

source

fn initialization( &self, - layouter: &mut impl Layouter<F>, + layouter: &mut impl Layouter<F>, init_state: &Self::State -) -> Result<Self::State, Error>

Creates an initial state from the output state of a previous block

+) -> Result<Self::State, Error>

Creates an initial state from the output state of a previous block

source

fn compress( &self, - layouter: &mut impl Layouter<F>, + layouter: &mut impl Layouter<F>, initialized_state: &Self::State, input: [Self::BlockWord; 16] -) -> Result<Self::State, Error>

Starting from the given initialized state, processes a block of input and returns the +) -> Result<Self::State, Error>

Starting from the given initialized state, processes a block of input and returns the final state.

source

fn digest( &self, - layouter: &mut impl Layouter<F>, + layouter: &mut impl Layouter<F>, state: &Self::State -) -> Result<[Self::BlockWord; 8], Error>

Converts the given state into a message digest.

+) -> Result<[Self::BlockWord; 8], Error>

Converts the given state into a message digest.

Object Safety§

This trait is not object safe.

Implementors§

\ No newline at end of file diff --git a/halo2_gadgets/sinsemilla/chip/index.html b/halo2_gadgets/sinsemilla/chip/index.html index f61f3d6254..f31f42ae68 100644 --- a/halo2_gadgets/sinsemilla/chip/index.html +++ b/halo2_gadgets/sinsemilla/chip/index.html @@ -1,4 +1,4 @@ -halo2_gadgets::sinsemilla::chip - Rust +halo2_gadgets::sinsemilla::chip - Rust +SinsemillaChip in halo2_gadgets::sinsemilla::chip - Rust +SinsemillaConfig in halo2_gadgets::sinsemilla::chip - Rust +halo2_gadgets::sinsemilla - Rust +halo2_gadgets::sinsemilla::merkle::chip - Rust +MerkleChip in halo2_gadgets::sinsemilla::merkle::chip - Rust +MerkleConfig in halo2_gadgets::sinsemilla::merkle::chip - Rust +MERKLE_CRH_PERSONALIZATION in halo2_gadgets::sinsemilla::merkle - Rust +halo2_gadgets::sinsemilla::merkle - Rust +MerklePath in halo2_gadgets::sinsemilla::merkle - Rust +MerkleInstructions in halo2_gadgets::sinsemilla::merkle - Rust -
pub trait MerkleInstructions<C: CurveAffine, const PATH_LENGTH: usize, const K: usize, const MAX_WORDS: usize>: SinsemillaInstructions<C, K, MAX_WORDS> + CondSwapInstructions<C::Base> + UtilitiesInstructions<C::Base> + Chip<C::Base> {
+
pub trait MerkleInstructions<C: CurveAffine, const PATH_LENGTH: usize, const K: usize, const MAX_WORDS: usize>: SinsemillaInstructions<C, K, MAX_WORDS> + CondSwapInstructions<C::Base> + UtilitiesInstructions<C::Base> + Chip<C::Base> {
     // Required method
     fn hash_layer(
         &self,
-        layouter: impl Layouter<C::Base>,
+        layouter: impl Layouter<C::Base>,
         Q: C,
         l: usize,
         left: Self::Var,
         right: Self::Var
-    ) -> Result<Self::Var, Error>;
+    ) -> Result<Self::Var, Error>;
 }
Expand description

Instructions to check the validity of a Merkle path of a given PATH_LENGTH. The hash function used is a Sinsemilla instance with K-bit words. The hash function can process MAX_WORDS words.

Required Methods§

source

fn hash_layer( &self, - layouter: impl Layouter<C::Base>, + layouter: impl Layouter<C::Base>, Q: C, l: usize, left: Self::Var, right: Self::Var -) -> Result<Self::Var, Error>

Compute MerkleCRH for a given layer. The hash that computes the root +) -> Result<Self::Var, Error>

Compute MerkleCRH for a given layer. The hash that computes the root is at layer 0, and the hashes that are applied to two leaves are at layer MERKLE_DEPTH - 1 = layer 31.

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<Hash, Commit, F, const MERKLE_DEPTH: usize> MerkleInstructions<EpAffine, MERKLE_DEPTH, { sinsemilla::K }, { sinsemilla::C }> for MerkleChip<Hash, Commit, F>where diff --git a/halo2_gadgets/sinsemilla/primitives/constant.C.html b/halo2_gadgets/sinsemilla/primitives/constant.C.html index 573f350562..4b4753a2aa 100644 --- a/halo2_gadgets/sinsemilla/primitives/constant.C.html +++ b/halo2_gadgets/sinsemilla/primitives/constant.C.html @@ -1,4 +1,4 @@ -C in halo2_gadgets::sinsemilla::primitives - Rust +C in halo2_gadgets::sinsemilla::primitives - Rust +INV_TWO_POW_K in halo2_gadgets::sinsemilla::primitives - Rust +K in halo2_gadgets::sinsemilla::primitives - Rust +Q_PERSONALIZATION in halo2_gadgets::sinsemilla::primitives - Rust +SINSEMILLA_S in halo2_gadgets::sinsemilla::primitives - Rust +S_PERSONALIZATION in halo2_gadgets::sinsemilla::primitives - Rust +halo2_gadgets::sinsemilla::primitives - Rust +CommitDomain in halo2_gadgets::sinsemilla::primitives - Rust +HashDomain in halo2_gadgets::sinsemilla::primitives - Rust +CommitDomain in halo2_gadgets::sinsemilla - Rust +HashDomain in halo2_gadgets::sinsemilla - Rust +Message in halo2_gadgets::sinsemilla - Rust +MessagePiece in halo2_gadgets::sinsemilla - Rust +CommitDomains in halo2_gadgets::sinsemilla - Rust +HashDomains in halo2_gadgets::sinsemilla - Rust +SinsemillaInstructions in halo2_gadgets::sinsemilla - Rust

\ No newline at end of file diff --git a/halo2_gadgets/utilities/cond_swap/index.html b/halo2_gadgets/utilities/cond_swap/index.html index 679dc4e30d..ff742354ba 100644 --- a/halo2_gadgets/utilities/cond_swap/index.html +++ b/halo2_gadgets/utilities/cond_swap/index.html @@ -1,4 +1,4 @@ -halo2_gadgets::utilities::cond_swap - Rust +halo2_gadgets::utilities::cond_swap - Rust +CondSwapChip in halo2_gadgets::utilities::cond_swap - Rust
pub struct CondSwapChip<F> { /* private fields */ }
Expand description

A chip implementing a conditional swap.

Implementations§

source§

impl<F: PrimeField> CondSwapChip<F>

source

pub fn configure( - meta: &mut ConstraintSystem<F>, - advices: [Column<Advice>; 5] + meta: &mut ConstraintSystem<F>, + advices: [Column<Advice>; 5] ) -> CondSwapConfig

Configures this chip for use in a circuit.

Side-effects

advices[0] will be equality-enabled.

source

pub fn construct(config: CondSwapConfig) -> Self

Constructs a CondSwapChip given a CondSwapConfig.

-

Trait Implementations§

source§

impl<F: Field> Chip<F> for CondSwapChip<F>

§

type Config = CondSwapConfig

A type that holds the configuration for this chip, and any other state it may need -during circuit synthesis, that can be derived during Circuit::configure.
§

type Loaded = ()

A type that holds any general chip state that needs to be loaded at the start of -Circuit::synthesize. This might simply be () for some chips.
source§

fn config(&self) -> &Self::Config

The chip holds its own configuration.
source§

fn loaded(&self) -> &Self::Loaded

Provides access to general chip state loaded at the beginning of circuit -synthesis. Read more
source§

impl<F: Clone> Clone for CondSwapChip<F>

source§

fn clone(&self) -> CondSwapChip<F>

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

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

Performs copy-assignment from source. Read more
source§

impl<F: PrimeField> CondSwapInstructions<F> for CondSwapChip<F>

Trait Implementations§

source§

impl<F: Field> Chip<F> for CondSwapChip<F>

§

type Config = CondSwapConfig

A type that holds the configuration for this chip, and any other state it may need +during circuit synthesis, that can be derived during Circuit::configure.
§

type Loaded = ()

A type that holds any general chip state that needs to be loaded at the start of +Circuit::synthesize. This might simply be () for some chips.
source§

fn config(&self) -> &Self::Config

The chip holds its own configuration.
source§

fn loaded(&self) -> &Self::Loaded

Provides access to general chip state loaded at the beginning of circuit +synthesis. Read more
source§

impl<F: Clone> Clone for CondSwapChip<F>

source§

fn clone(&self) -> CondSwapChip<F>

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

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

Performs copy-assignment from source. Read more
source§

impl<F: PrimeField> CondSwapInstructions<F> for CondSwapChip<F>

source§

fn swap( &self, - layouter: impl Layouter<F>, - pair: (Self::Var, Value<F>), - swap: Value<bool> -) -> Result<(Self::Var, Self::Var), Error>

Given an input pair (a,b) and a swap boolean flag, returns -(b,a) if swap is set, else (a,b) if swap is not set. Read more
source§

impl<F: Debug> Debug for CondSwapChip<F>

source§

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

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

impl<F: Field> UtilitiesInstructions<F> for CondSwapChip<F>

§

type Var = AssignedCell<F, F>

Variable in the circuit.
source§

fn load_private( + layouter: impl Layouter<F>, + pair: (Self::Var, Value<F>), + swap: Value<bool> +) -> Result<(Self::Var, Self::Var), Error>

Given an input pair (a,b) and a swap boolean flag, returns +(b,a) if swap is set, else (a,b) if swap is not set. Read more
source§

impl<F: Debug> Debug for CondSwapChip<F>

source§

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

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

impl<F: Field> UtilitiesInstructions<F> for CondSwapChip<F>

§

type Var = AssignedCell<F, F>

Variable in the circuit.
source§

fn load_private( &self, - layouter: impl Layouter<F>, - column: Column<Advice>, - value: Value<F> -) -> Result<Self::Var, Error>

Load a variable.

Auto Trait Implementations§

§

impl<F> RefUnwindSafe for CondSwapChip<F>where + layouter: impl Layouter<F>, + column: Column<Advice>, + value: Value<F> +) -> Result<Self::Var, Error>

Load a variable.

Auto Trait Implementations§

§

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

§

impl<F> Send for CondSwapChip<F>where F: Send,

§

impl<F> Sync for CondSwapChip<F>where F: Sync,

§

impl<F> Unpin for CondSwapChip<F>where @@ -131,10 +131,10 @@
Side-effects
builds.

source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

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

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere + U: Into<T>,

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

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

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
§

impl<T> SyncDeps for Twhere +[WithDispatch] wrapper. Read more
source§

impl<T> SyncDeps for Twhere T: Send + Sync,

\ No newline at end of file diff --git a/halo2_gadgets/utilities/cond_swap/struct.CondSwapConfig.html b/halo2_gadgets/utilities/cond_swap/struct.CondSwapConfig.html index 080d6a9ea2..12f9e9fa8d 100644 --- a/halo2_gadgets/utilities/cond_swap/struct.CondSwapConfig.html +++ b/halo2_gadgets/utilities/cond_swap/struct.CondSwapConfig.html @@ -1,4 +1,4 @@ -CondSwapConfig in halo2_gadgets::utilities::cond_swap - Rust +CondSwapConfig in halo2_gadgets::utilities::cond_swap - Rust +CondSwapInstructions in halo2_gadgets::utilities::cond_swap - Rust +halo2_gadgets::utilities::decompose_running_sum - Rust +RunningSum in halo2_gadgets::utilities::decompose_running_sum - Rust
pub struct RunningSum<F: PrimeFieldBits>(/* private fields */);
Expand description

The running sum $[z_0, …, z_W]$. If created in strict mode, $z_W = 0$.

-

Methods from Deref<Target = Vec<AssignedCell<F, F>>>§

1.0.0 · source

pub fn capacity(&self) -> usize

Returns the total number of elements the vector can hold without +

Methods from Deref<Target = Vec<AssignedCell<F, F>>>§

1.0.0 · source

pub fn capacity(&self) -> usize

Returns the total number of elements the vector can hold without reallocating.

Examples
let mut vec: Vec<i32> = Vec::with_capacity(10);
@@ -76,15 +76,26 @@ 
Examples
v.push(1); assert!(!v.is_empty());
-

Methods from Deref<Target = [T]>§

source

pub fn as_str(&self) -> &str

🔬This is a nightly-only experimental API. (ascii_char)

Views this slice of ASCII characters as a UTF-8 str.

-
source

pub fn as_bytes(&self) -> &[u8]

🔬This is a nightly-only experimental API. (ascii_char)

Views this slice of ASCII characters as a slice of u8 bytes.

-
source

pub fn flatten(&self) -> &[T]

🔬This is a nightly-only experimental API. (slice_flatten)

Takes a &[[T; N]], and flattens it to a &[T].

+

Methods from Deref<Target = [T]>§

source

pub fn sort_floats(&mut self)

🔬This is a nightly-only experimental API. (sort_floats)

Sorts the slice of floats.

+

This sort is in-place (i.e. does not allocate), O(n * log(n)) worst-case, and uses +the ordering defined by f32::total_cmp.

+
Current implementation
+

This uses the same sorting algorithm as sort_unstable_by.

+
Examples
+
#![feature(sort_floats)]
+let mut v = [2.6, -5e-8, f32::NAN, 8.29, f32::INFINITY, -1.0, 0.0, -f32::INFINITY, -0.0];
+
+v.sort_floats();
+let sorted = [-f32::INFINITY, -1.0, -5e-8, -0.0, 0.0, 2.6, 8.29, f32::INFINITY, f32::NAN];
+assert_eq!(&v[..8], &sorted[..8]);
+assert!(v[8].is_nan());
+
source

pub fn flatten(&self) -> &[T]

🔬This is a nightly-only experimental API. (slice_flatten)

Takes a &[[T; N]], and flattens it to a &[T].

Panics

This panics if the length of the resulting slice would overflow a usize.

This is only possible when flattening a slice of arrays of zero-sized types, and thus tends to be irrelevant in practice. If size_of::<T>() > 0, this will never panic.

-
Examples
+
Examples
#![feature(slice_flatten)]
 
 assert_eq!([[1, 2, 3], [4, 5, 6]].flatten(), &[1, 2, 3, 4, 5, 6]);
@@ -99,13 +110,13 @@ 
Examples
let empty_slice_of_arrays: &[[u32; 10]] = &[]; assert!(empty_slice_of_arrays.flatten().is_empty());
-
source

pub fn flatten_mut(&mut self) -> &mut [T]

🔬This is a nightly-only experimental API. (slice_flatten)

Takes a &mut [[T; N]], and flattens it to a &mut [T].

+
source

pub fn flatten_mut(&mut self) -> &mut [T]

🔬This is a nightly-only experimental API. (slice_flatten)

Takes a &mut [[T; N]], and flattens it to a &mut [T].

Panics

This panics if the length of the resulting slice would overflow a usize.

This is only possible when flattening a slice of arrays of zero-sized types, and thus tends to be irrelevant in practice. If size_of::<T>() > 0, this will never panic.

-
Examples
+
Examples
#![feature(slice_flatten)]
 
 fn add_5_to_all(slice: &mut [i32]) {
@@ -117,36 +128,78 @@ 
Examples
let mut array = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; add_5_to_all(array.flatten_mut()); assert_eq!(array, [[6, 7, 8], [9, 10, 11], [12, 13, 14]]);
-
source

pub fn sort_floats(&mut self)

🔬This is a nightly-only experimental API. (sort_floats)

Sorts the slice of floats.

-

This sort is in-place (i.e. does not allocate), O(n * log(n)) worst-case, and uses -the ordering defined by f32::total_cmp.

-
Current implementation
-

This uses the same sorting algorithm as sort_unstable_by.

-
Examples
-
#![feature(sort_floats)]
-let mut v = [2.6, -5e-8, f32::NAN, 8.29, f32::INFINITY, -1.0, 0.0, -f32::INFINITY, -0.0];
+
1.23.0 · source

pub fn is_ascii(&self) -> bool

Checks if all bytes in this slice are within the ASCII range.

+
source

pub fn as_ascii(&self) -> Option<&[AsciiChar]>

🔬This is a nightly-only experimental API. (ascii_char)

If this slice is_ascii, returns it as a slice of +ASCII characters, otherwise returns None.

+
source

pub unsafe fn as_ascii_unchecked(&self) -> &[AsciiChar]

🔬This is a nightly-only experimental API. (ascii_char)

Converts this slice of bytes into a slice of ASCII characters, +without checking whether they’re valid.

+
Safety
+

Every byte in the slice must be in 0..=127, or else this is UB.

+
1.23.0 · source

pub fn eq_ignore_ascii_case(&self, other: &[u8]) -> bool

Checks that two slices are an ASCII case-insensitive match.

+

Same as to_ascii_lowercase(a) == to_ascii_lowercase(b), +but without allocating and copying temporaries.

+
1.23.0 · source

pub fn make_ascii_uppercase(&mut self)

Converts this slice to its ASCII upper case equivalent in-place.

+

ASCII letters ‘a’ to ‘z’ are mapped to ‘A’ to ‘Z’, +but non-ASCII letters are unchanged.

+

To return a new uppercased value without modifying the existing one, use +to_ascii_uppercase.

+
1.23.0 · source

pub fn make_ascii_lowercase(&mut self)

Converts this slice to its ASCII lower case equivalent in-place.

+

ASCII letters ‘A’ to ‘Z’ are mapped to ‘a’ to ‘z’, +but non-ASCII letters are unchanged.

+

To return a new lowercased value without modifying the existing one, use +to_ascii_lowercase.

+
1.60.0 · source

pub fn escape_ascii(&self) -> EscapeAscii<'_>

Returns an iterator that produces an escaped version of this slice, +treating it as an ASCII string.

+
Examples
+

+let s = b"0\t\r\n'\"\\\x9d";
+let escaped = s.escape_ascii().to_string();
+assert_eq!(escaped, "0\\t\\r\\n\\'\\\"\\\\\\x9d");
+
source

pub fn trim_ascii_start(&self) -> &[u8]

🔬This is a nightly-only experimental API. (byte_slice_trim_ascii)

Returns a byte slice with leading ASCII whitespace bytes removed.

+

‘Whitespace’ refers to the definition used by +u8::is_ascii_whitespace.

+
Examples
+
#![feature(byte_slice_trim_ascii)]
 
-v.sort_floats();
-let sorted = [-f32::INFINITY, -1.0, -5e-8, -0.0, 0.0, 2.6, 8.29, f32::INFINITY, f32::NAN];
-assert_eq!(&v[..8], &sorted[..8]);
-assert!(v[8].is_nan());
+assert_eq!(b" \t hello world\n".trim_ascii_start(), b"hello world\n"); +assert_eq!(b" ".trim_ascii_start(), b""); +assert_eq!(b"".trim_ascii_start(), b"");
+
source

pub fn trim_ascii_end(&self) -> &[u8]

🔬This is a nightly-only experimental API. (byte_slice_trim_ascii)

Returns a byte slice with trailing ASCII whitespace bytes removed.

+

‘Whitespace’ refers to the definition used by +u8::is_ascii_whitespace.

+
Examples
+
#![feature(byte_slice_trim_ascii)]
+
+assert_eq!(b"\r hello world\n ".trim_ascii_end(), b"\r hello world");
+assert_eq!(b"  ".trim_ascii_end(), b"");
+assert_eq!(b"".trim_ascii_end(), b"");
+
source

pub fn trim_ascii(&self) -> &[u8]

🔬This is a nightly-only experimental API. (byte_slice_trim_ascii)

Returns a byte slice with leading and trailing ASCII whitespace bytes +removed.

+

‘Whitespace’ refers to the definition used by +u8::is_ascii_whitespace.

+
Examples
+
#![feature(byte_slice_trim_ascii)]
+
+assert_eq!(b"\r hello world\n ".trim_ascii(), b"hello world");
+assert_eq!(b"  ".trim_ascii(), b"");
+assert_eq!(b"".trim_ascii(), b"");
1.0.0 · source

pub fn len(&self) -> usize

Returns the number of elements in the slice.

-
Examples
+
Examples
let a = [1, 2, 3];
 assert_eq!(a.len(), 3);
1.0.0 · source

pub fn is_empty(&self) -> bool

Returns true if the slice has a length of 0.

-
Examples
+
Examples
let a = [1, 2, 3];
 assert!(!a.is_empty());
1.0.0 · source

pub fn first(&self) -> Option<&T>

Returns the first element of the slice, or None if it is empty.

-
Examples
+
Examples
let v = [10, 40, 30];
 assert_eq!(Some(&10), v.first());
 
 let w: &[i32] = &[];
 assert_eq!(None, w.first());
1.0.0 · source

pub fn first_mut(&mut self) -> Option<&mut T>

Returns a mutable pointer to the first element of the slice, or None if it is empty.

-
Examples
+
Examples
let x = &mut [0, 1, 2];
 
 if let Some(first) = x.first_mut() {
@@ -154,7 +207,7 @@ 
Examples
} assert_eq!(x, &[5, 1, 2]);
1.5.0 · source

pub fn split_first(&self) -> Option<(&T, &[T])>

Returns the first and all the rest of the elements of the slice, or None if it is empty.

-
Examples
+
Examples
let x = &[0, 1, 2];
 
 if let Some((first, elements)) = x.split_first() {
@@ -162,7 +215,7 @@ 
Examples
assert_eq!(elements, &[1, 2]); }
1.5.0 · source

pub fn split_first_mut(&mut self) -> Option<(&mut T, &mut [T])>

Returns the first and all the rest of the elements of the slice, or None if it is empty.

-
Examples
+
Examples
let x = &mut [0, 1, 2];
 
 if let Some((first, elements)) = x.split_first_mut() {
@@ -172,7 +225,7 @@ 
Examples
} assert_eq!(x, &[3, 4, 5]);
1.5.0 · source

pub fn split_last(&self) -> Option<(&T, &[T])>

Returns the last and all the rest of the elements of the slice, or None if it is empty.

-
Examples
+
Examples
let x = &[0, 1, 2];
 
 if let Some((last, elements)) = x.split_last() {
@@ -180,7 +233,7 @@ 
Examples
assert_eq!(elements, &[0, 1]); }
1.5.0 · source

pub fn split_last_mut(&mut self) -> Option<(&mut T, &mut [T])>

Returns the last and all the rest of the elements of the slice, or None if it is empty.

-
Examples
+
Examples
let x = &mut [0, 1, 2];
 
 if let Some((last, elements)) = x.split_last_mut() {
@@ -190,14 +243,14 @@ 
Examples
} assert_eq!(x, &[4, 5, 3]);
1.0.0 · source

pub fn last(&self) -> Option<&T>

Returns the last element of the slice, or None if it is empty.

-
Examples
+
Examples
let v = [10, 40, 30];
 assert_eq!(Some(&30), v.last());
 
 let w: &[i32] = &[];
 assert_eq!(None, w.last());
1.0.0 · source

pub fn last_mut(&mut self) -> Option<&mut T>

Returns a mutable pointer to the last item in the slice.

-
Examples
+
Examples
let x = &mut [0, 1, 2];
 
 if let Some(last) = x.last_mut() {
@@ -205,7 +258,7 @@ 
Examples
} assert_eq!(x, &[0, 1, 10]);
source

pub fn first_chunk<const N: usize>(&self) -> Option<&[T; N]>

🔬This is a nightly-only experimental API. (slice_first_last_chunk)

Returns the first N elements of the slice, or None if it has fewer than N elements.

-
Examples
+
Examples
#![feature(slice_first_last_chunk)]
 
 let u = [10, 40, 30];
@@ -218,7 +271,7 @@ 
Examples
assert_eq!(Some(&[]), w.first_chunk::<0>());
source

pub fn first_chunk_mut<const N: usize>(&mut self) -> Option<&mut [T; N]>

🔬This is a nightly-only experimental API. (slice_first_last_chunk)

Returns a mutable reference to the first N elements of the slice, or None if it has fewer than N elements.

-
Examples
+
Examples
#![feature(slice_first_last_chunk)]
 
 let x = &mut [0, 1, 2];
@@ -230,7 +283,7 @@ 
Examples
assert_eq!(x, &[5, 4, 2]);
source

pub fn split_first_chunk<const N: usize>(&self) -> Option<(&[T; N], &[T])>

🔬This is a nightly-only experimental API. (slice_first_last_chunk)

Returns the first N elements of the slice and the remainder, or None if it has fewer than N elements.

-
Examples
+
Examples
#![feature(slice_first_last_chunk)]
 
 let x = &[0, 1, 2];
@@ -243,7 +296,7 @@ 
Examples
&mut self ) -> Option<(&mut [T; N], &mut [T])>
🔬This is a nightly-only experimental API. (slice_first_last_chunk)

Returns a mutable reference to the first N elements of the slice and the remainder, or None if it has fewer than N elements.

-
Examples
+
Examples
#![feature(slice_first_last_chunk)]
 
 let x = &mut [0, 1, 2];
@@ -256,7 +309,7 @@ 
Examples
assert_eq!(x, &[3, 4, 5]);
source

pub fn split_last_chunk<const N: usize>(&self) -> Option<(&[T; N], &[T])>

🔬This is a nightly-only experimental API. (slice_first_last_chunk)

Returns the last N elements of the slice and the remainder, or None if it has fewer than N elements.

-
Examples
+
Examples
#![feature(slice_first_last_chunk)]
 
 let x = &[0, 1, 2];
@@ -268,7 +321,7 @@ 
Examples
source

pub fn split_last_chunk_mut<const N: usize>( &mut self ) -> Option<(&mut [T; N], &mut [T])>

🔬This is a nightly-only experimental API. (slice_first_last_chunk)

Returns the last and all the rest of the elements of the slice, or None if it is empty.

-
Examples
+
Examples
#![feature(slice_first_last_chunk)]
 
 let x = &mut [0, 1, 2];
@@ -280,7 +333,7 @@ 
Examples
} assert_eq!(x, &[5, 3, 4]);
source

pub fn last_chunk<const N: usize>(&self) -> Option<&[T; N]>

🔬This is a nightly-only experimental API. (slice_first_last_chunk)

Returns the last element of the slice, or None if it is empty.

-
Examples
+
Examples
#![feature(slice_first_last_chunk)]
 
 let u = [10, 40, 30];
@@ -292,7 +345,7 @@ 
Examples
let w: &[i32] = &[]; assert_eq!(Some(&[]), w.last_chunk::<0>());
source

pub fn last_chunk_mut<const N: usize>(&mut self) -> Option<&mut [T; N]>

🔬This is a nightly-only experimental API. (slice_first_last_chunk)

Returns a mutable pointer to the last item in the slice.

-
Examples
+
Examples
#![feature(slice_first_last_chunk)]
 
 let x = &mut [0, 1, 2];
@@ -311,7 +364,7 @@ 
Examples
  • If given a range, returns the subslice corresponding to that range, or None if out of bounds.
  • -
    Examples
    +
    Examples
    let v = [10, 40, 30];
     assert_eq!(Some(&40), v.get(1));
     assert_eq!(Some(&[10, 40][..]), v.get(0..2));
    @@ -323,40 +376,48 @@ 
    Examples
    ) -> Option<&mut <I as SliceIndex<[T]>>::Output>where I: SliceIndex<[T]>,

    Returns a mutable reference to an element or subslice depending on the type of index (see get) or None if the index is out of bounds.

    -
    Examples
    +
    Examples
    let x = &mut [0, 1, 2];
     
     if let Some(elem) = x.get_mut(1) {
         *elem = 42;
     }
     assert_eq!(x, &[0, 42, 2]);
    -
    1.0.0 · source

    pub unsafe fn get_unchecked<I>( +

    1.0.0 · source

    pub unsafe fn get_unchecked<I>( &self, index: I ) -> &<I as SliceIndex<[T]>>::Outputwhere I: SliceIndex<[T]>,

    Returns a reference to an element or subslice, without doing bounds checking.

    For a safe alternative see get.

    -
    Safety
    +
    Safety

    Calling this method with an out-of-bounds index is undefined behavior even if the resulting reference is not used.

    -
    Examples
    +

    You can think of this like .get(index).unwrap_unchecked(). It’s UB +to call .get_unchecked(len), even if you immediately convert to a +pointer. And it’s UB to call .get_unchecked(..len + 1), +.get_unchecked(..=len), or similar.

    +
    Examples
    let x = &[1, 2, 4];
     
     unsafe {
         assert_eq!(x.get_unchecked(1), &2);
     }
    -
    1.0.0 · source

    pub unsafe fn get_unchecked_mut<I>( +

    1.0.0 · source

    pub unsafe fn get_unchecked_mut<I>( &mut self, index: I ) -> &mut <I as SliceIndex<[T]>>::Outputwhere I: SliceIndex<[T]>,

    Returns a mutable reference to an element or subslice, without doing bounds checking.

    For a safe alternative see get_mut.

    -
    Safety
    +
    Safety

    Calling this method with an out-of-bounds index is undefined behavior even if the resulting reference is not used.

    -
    Examples
    +

    You can think of this like .get_mut(index).unwrap_unchecked(). It’s +UB to call .get_unchecked_mut(len), even if you immediately convert +to a pointer. And it’s UB to call .get_unchecked_mut(..len + 1), +.get_unchecked_mut(..=len), or similar.

    +
    Examples
    let x = &mut [1, 2, 4];
     
     unsafe {
    @@ -364,7 +425,7 @@ 
    Examples
    *elem = 13; } assert_eq!(x, &[1, 13, 4]);
    -
    1.0.0 · source

    pub fn as_ptr(&self) -> *const T

    Returns a raw pointer to the slice’s buffer.

    +
    1.0.0 · source

    pub fn as_ptr(&self) -> *const T

    Returns a raw pointer to the slice’s buffer.

    The caller must ensure that the slice outlives the pointer this function returns, or else it will end up pointing to garbage.

    The caller must also ensure that the memory the pointer (non-transitively) points to @@ -372,7 +433,7 @@

    Examples
    derived from it. If you need to mutate the contents of the slice, use as_mut_ptr.

    Modifying the container referenced by this slice may cause its buffer to be reallocated, which would also make any pointers to it invalid.

    -
    Examples
    +
    Examples
    let x = &[1, 2, 4];
     let x_ptr = x.as_ptr();
     
    @@ -381,12 +442,12 @@ 
    Examples
    assert_eq!(x.get_unchecked(i), &*x_ptr.add(i)); } }
    -
    1.0.0 · source

    pub fn as_mut_ptr(&mut self) -> *mut T

    Returns an unsafe mutable pointer to the slice’s buffer.

    +
    1.0.0 · source

    pub fn as_mut_ptr(&mut self) -> *mut T

    Returns an unsafe mutable pointer to the slice’s buffer.

    The caller must ensure that the slice outlives the pointer this function returns, or else it will end up pointing to garbage.

    Modifying the container referenced by this slice may cause its buffer to be reallocated, which would also make any pointers to it invalid.

    -
    Examples
    +
    Examples
    let x = &mut [1, 2, 4];
     let x_ptr = x.as_mut_ptr();
     
    @@ -396,7 +457,7 @@ 
    Examples
    } } assert_eq!(x, &[3, 4, 6]);
    -
    1.48.0 · source

    pub fn as_ptr_range(&self) -> Range<*const T>

    Returns the two raw pointers spanning the slice.

    +
    1.48.0 · source

    pub fn as_ptr_range(&self) -> Range<*const T>

    Returns the two raw pointers spanning the slice.

    The returned range is half-open, which means that the end pointer points one past the last element of the slice. This way, an empty slice is represented by two equal pointers, and the difference between @@ -416,7 +477,7 @@

    Examples
    assert!(a.as_ptr_range().contains(&x)); assert!(!a.as_ptr_range().contains(&y));
    -
    1.48.0 · source

    pub fn as_mut_ptr_range(&mut self) -> Range<*mut T>

    Returns the two unsafe mutable pointers spanning the slice.

    +
    1.48.0 · source

    pub fn as_mut_ptr_range(&mut self) -> Range<*mut T>

    Returns the two unsafe mutable pointers spanning the slice.

    The returned range is half-open, which means that the end pointer points one past the last element of the slice. This way, an empty slice is represented by two equal pointers, and the difference between @@ -427,7 +488,7 @@

    Examples

    This function is useful for interacting with foreign interfaces which use two pointers to refer to a range of elements in memory, as is common in C++.

    -
    1.0.0 · source

    pub fn swap(&mut self, a: usize, b: usize)

    Swaps two elements in the slice.

    +
    1.0.0 · source

    pub fn swap(&mut self, a: usize, b: usize)

    Swaps two elements in the slice.

    If a equals to b, it’s guaranteed that elements won’t change value.

    Arguments
    Panics

    Panics if a or b are out of bounds.

    -
    Examples
    +
    Examples
    let mut v = ["a", "b", "c", "d", "e"];
     v.swap(2, 4);
     assert!(v == ["a", "b", "e", "d", "c"]);
    -
    source

    pub unsafe fn swap_unchecked(&mut self, a: usize, b: usize)

    🔬This is a nightly-only experimental API. (slice_swap_unchecked)

    Swaps two elements in the slice, without doing bounds checking.

    +
    source

    pub unsafe fn swap_unchecked(&mut self, a: usize, b: usize)

    🔬This is a nightly-only experimental API. (slice_swap_unchecked)

    Swaps two elements in the slice, without doing bounds checking.

    For a safe alternative see swap.

    Arguments
    • a - The index of the first element
    • b - The index of the second element
    -
    Safety
    +
    Safety

    Calling this method with an out-of-bounds index is undefined behavior. The caller has to ensure that a < self.len() and b < self.len().

    -
    Examples
    +
    Examples
    #![feature(slice_swap_unchecked)]
     
     let mut v = ["a", "b", "c", "d"];
     // SAFETY: we know that 1 and 3 are both indices of the slice
     unsafe { v.swap_unchecked(1, 3) };
     assert!(v == ["a", "d", "c", "b"]);
    -
    1.0.0 · source

    pub fn reverse(&mut self)

    Reverses the order of elements in the slice, in place.

    -
    Examples
    +
    1.0.0 · source

    pub fn reverse(&mut self)

    Reverses the order of elements in the slice, in place.

    +
    Examples
    let mut v = [1, 2, 3];
     v.reverse();
     assert!(v == [3, 2, 1]);
    -
    1.0.0 · source

    pub fn iter(&self) -> Iter<'_, T>

    Returns an iterator over the slice.

    +
    1.0.0 · source

    pub fn iter(&self) -> Iter<'_, T>

    Returns an iterator over the slice.

    The iterator yields all items from start to end.

    -
    Examples
    +
    Examples
    let x = &[1, 2, 4];
     let mut iterator = x.iter();
     
    @@ -472,20 +533,20 @@ 
    Examples
    assert_eq!(iterator.next(), Some(&2)); assert_eq!(iterator.next(), Some(&4)); assert_eq!(iterator.next(), None);
    -
    1.0.0 · source

    pub fn iter_mut(&mut self) -> IterMut<'_, T>

    Returns an iterator that allows modifying each value.

    +
    1.0.0 · source

    pub fn iter_mut(&mut self) -> IterMut<'_, T>

    Returns an iterator that allows modifying each value.

    The iterator yields all items from start to end.

    -
    Examples
    +
    Examples
    let x = &mut [1, 2, 4];
     for elem in x.iter_mut() {
         *elem += 2;
     }
     assert_eq!(x, &[3, 4, 6]);
    -
    1.0.0 · source

    pub fn windows(&self, size: usize) -> Windows<'_, T>

    Returns an iterator over all contiguous windows of length +

    1.0.0 · source

    pub fn windows(&self, size: usize) -> Windows<'_, T>

    Returns an iterator over all contiguous windows of length size. The windows overlap. If the slice is shorter than size, the iterator returns no values.

    Panics

    Panics if size is 0.

    -
    Examples
    +
    Examples
    let slice = ['r', 'u', 's', 't'];
     let mut iter = slice.windows(2);
     assert_eq!(iter.next().unwrap(), &['r', 'u']);
    @@ -511,7 +572,7 @@ 
    Examples
    Cell::swap(&w[0], &w[2]); } assert_eq!(array, ['s', 't', ' ', '2', '0', '1', '5', 'u', 'R']);
    -
    1.0.0 · source

    pub fn chunks(&self, chunk_size: usize) -> Chunks<'_, T>

    Returns an iterator over chunk_size elements of the slice at a time, starting at the +

    1.0.0 · source

    pub fn chunks(&self, chunk_size: usize) -> Chunks<'_, T>

    Returns an iterator over chunk_size elements of the slice at a time, starting at the beginning of the slice.

    The chunks are slices and do not overlap. If chunk_size does not divide the length of the slice, then the last chunk will not have length chunk_size.

    @@ -520,14 +581,14 @@
    Examples
    slice.

    Panics

    Panics if chunk_size is 0.

    -
    Examples
    +
    Examples
    let slice = ['l', 'o', 'r', 'e', 'm'];
     let mut iter = slice.chunks(2);
     assert_eq!(iter.next().unwrap(), &['l', 'o']);
     assert_eq!(iter.next().unwrap(), &['r', 'e']);
     assert_eq!(iter.next().unwrap(), &['m']);
     assert!(iter.next().is_none());
    -
    1.0.0 · source

    pub fn chunks_mut(&mut self, chunk_size: usize) -> ChunksMut<'_, T>

    Returns an iterator over chunk_size elements of the slice at a time, starting at the +

    1.0.0 · source

    pub fn chunks_mut(&mut self, chunk_size: usize) -> ChunksMut<'_, T>

    Returns an iterator over chunk_size elements of the slice at a time, starting at the beginning of the slice.

    The chunks are mutable slices, and do not overlap. If chunk_size does not divide the length of the slice, then the last chunk will not have length chunk_size.

    @@ -536,7 +597,7 @@
    Examples
    the end of the slice.

    Panics

    Panics if chunk_size is 0.

    -
    Examples
    +
    Examples
    let v = &mut [0, 0, 0, 0, 0];
     let mut count = 1;
     
    @@ -547,7 +608,7 @@ 
    Examples
    count += 1; } assert_eq!(v, &[1, 1, 2, 2, 3]);
    -
    1.31.0 · source

    pub fn chunks_exact(&self, chunk_size: usize) -> ChunksExact<'_, T>

    Returns an iterator over chunk_size elements of the slice at a time, starting at the +

    1.31.0 · source

    pub fn chunks_exact(&self, chunk_size: usize) -> ChunksExact<'_, T>

    Returns an iterator over chunk_size elements of the slice at a time, starting at the beginning of the slice.

    The chunks are slices and do not overlap. If chunk_size does not divide the length of the slice, then the last up to chunk_size-1 elements will be omitted and can be retrieved @@ -558,14 +619,14 @@

    Examples
    chunk, and rchunks_exact for the same iterator but starting at the end of the slice.

    Panics

    Panics if chunk_size is 0.

    -
    Examples
    +
    Examples
    let slice = ['l', 'o', 'r', 'e', 'm'];
     let mut iter = slice.chunks_exact(2);
     assert_eq!(iter.next().unwrap(), &['l', 'o']);
     assert_eq!(iter.next().unwrap(), &['r', 'e']);
     assert!(iter.next().is_none());
     assert_eq!(iter.remainder(), &['m']);
    -
    1.31.0 · source

    pub fn chunks_exact_mut(&mut self, chunk_size: usize) -> ChunksExactMut<'_, T>

    Returns an iterator over chunk_size elements of the slice at a time, starting at the +

    1.31.0 · source

    pub fn chunks_exact_mut(&mut self, chunk_size: usize) -> ChunksExactMut<'_, T>

    Returns an iterator over chunk_size elements of the slice at a time, starting at the beginning of the slice.

    The chunks are mutable slices, and do not overlap. If chunk_size does not divide the length of the slice, then the last up to chunk_size-1 elements will be omitted and can be @@ -577,7 +638,7 @@

    Examples
    the slice.

    Panics

    Panics if chunk_size is 0.

    -
    Examples
    +
    Examples
    let v = &mut [0, 0, 0, 0, 0];
     let mut count = 1;
     
    @@ -588,15 +649,15 @@ 
    Examples
    count += 1; } assert_eq!(v, &[1, 1, 2, 2, 0]);
    -
    source

    pub unsafe fn as_chunks_unchecked<const N: usize>(&self) -> &[[T; N]]

    🔬This is a nightly-only experimental API. (slice_as_chunks)

    Splits the slice into a slice of N-element arrays, +

    source

    pub unsafe fn as_chunks_unchecked<const N: usize>(&self) -> &[[T; N]]

    🔬This is a nightly-only experimental API. (slice_as_chunks)

    Splits the slice into a slice of N-element arrays, assuming that there’s no remainder.

    -
    Safety
    +
    Safety

    This may only be called when

    • The slice splits exactly into N-element chunks (aka self.len() % N == 0).
    • N != 0.
    -
    Examples
    +
    Examples
    #![feature(slice_as_chunks)]
     let slice: &[char] = &['l', 'o', 'r', 'e', 'm', '!'];
     let chunks: &[[char; 1]] =
    @@ -611,13 +672,13 @@ 
    Examples
    // These would be unsound: // let chunks: &[[_; 5]] = slice.as_chunks_unchecked() // The slice length is not a multiple of 5 // let chunks: &[[_; 0]] = slice.as_chunks_unchecked() // Zero-length chunks are never allowed
    -
    source

    pub fn as_chunks<const N: usize>(&self) -> (&[[T; N]], &[T])

    🔬This is a nightly-only experimental API. (slice_as_chunks)

    Splits the slice into a slice of N-element arrays, +

    source

    pub fn as_chunks<const N: usize>(&self) -> (&[[T; N]], &[T])

    🔬This is a nightly-only experimental API. (slice_as_chunks)

    Splits the slice into a slice of N-element arrays, starting at the beginning of the slice, and a remainder slice with length strictly less than N.

    Panics

    Panics if N is 0. This check will most probably get changed to a compile time error before this method gets stabilized.

    -
    Examples
    +
    Examples
    #![feature(slice_as_chunks)]
     let slice = ['l', 'o', 'r', 'e', 'm'];
     let (chunks, remainder) = slice.as_chunks();
    @@ -632,19 +693,19 @@ 
    Examples
    panic!("slice didn't have even length") }; assert_eq!(chunks, &[['R', 'u'], ['s', 't']]);
    -
    source

    pub fn as_rchunks<const N: usize>(&self) -> (&[T], &[[T; N]])

    🔬This is a nightly-only experimental API. (slice_as_chunks)

    Splits the slice into a slice of N-element arrays, +

    source

    pub fn as_rchunks<const N: usize>(&self) -> (&[T], &[[T; N]])

    🔬This is a nightly-only experimental API. (slice_as_chunks)

    Splits the slice into a slice of N-element arrays, starting at the end of the slice, and a remainder slice with length strictly less than N.

    Panics

    Panics if N is 0. This check will most probably get changed to a compile time error before this method gets stabilized.

    -
    Examples
    +
    Examples
    #![feature(slice_as_chunks)]
     let slice = ['l', 'o', 'r', 'e', 'm'];
     let (remainder, chunks) = slice.as_rchunks();
     assert_eq!(remainder, &['l']);
     assert_eq!(chunks, &[['o', 'r'], ['e', 'm']]);
    -
    source

    pub fn array_chunks<const N: usize>(&self) -> ArrayChunks<'_, T, N>

    🔬This is a nightly-only experimental API. (array_chunks)

    Returns an iterator over N elements of the slice at a time, starting at the +

    source

    pub fn array_chunks<const N: usize>(&self) -> ArrayChunks<'_, T, N>

    🔬This is a nightly-only experimental API. (array_chunks)

    Returns an iterator over N elements of the slice at a time, starting at the beginning of the slice.

    The chunks are array references and do not overlap. If N does not divide the length of the slice, then the last up to N-1 elements will be omitted and can be @@ -653,7 +714,7 @@

    Examples
    Panics

    Panics if N is 0. This check will most probably get changed to a compile time error before this method gets stabilized.

    -
    Examples
    +
    Examples
    #![feature(array_chunks)]
     let slice = ['l', 'o', 'r', 'e', 'm'];
     let mut iter = slice.array_chunks();
    @@ -661,17 +722,17 @@ 
    Examples
    assert_eq!(iter.next().unwrap(), &['r', 'e']); assert!(iter.next().is_none()); assert_eq!(iter.remainder(), &['m']);
    -
    source

    pub unsafe fn as_chunks_unchecked_mut<const N: usize>( +

    source

    pub unsafe fn as_chunks_unchecked_mut<const N: usize>( &mut self ) -> &mut [[T; N]]

    🔬This is a nightly-only experimental API. (slice_as_chunks)

    Splits the slice into a slice of N-element arrays, assuming that there’s no remainder.

    -
    Safety
    +
    Safety

    This may only be called when

    • The slice splits exactly into N-element chunks (aka self.len() % N == 0).
    • N != 0.
    -
    Examples
    +
    Examples
    #![feature(slice_as_chunks)]
     let slice: &mut [char] = &mut ['l', 'o', 'r', 'e', 'm', '!'];
     let chunks: &mut [[char; 1]] =
    @@ -688,13 +749,13 @@ 
    Examples
    // These would be unsound: // let chunks: &[[_; 5]] = slice.as_chunks_unchecked_mut() // The slice length is not a multiple of 5 // let chunks: &[[_; 0]] = slice.as_chunks_unchecked_mut() // Zero-length chunks are never allowed
    -
    source

    pub fn as_chunks_mut<const N: usize>(&mut self) -> (&mut [[T; N]], &mut [T])

    🔬This is a nightly-only experimental API. (slice_as_chunks)

    Splits the slice into a slice of N-element arrays, +

    source

    pub fn as_chunks_mut<const N: usize>(&mut self) -> (&mut [[T; N]], &mut [T])

    🔬This is a nightly-only experimental API. (slice_as_chunks)

    Splits the slice into a slice of N-element arrays, starting at the beginning of the slice, and a remainder slice with length strictly less than N.

    Panics

    Panics if N is 0. This check will most probably get changed to a compile time error before this method gets stabilized.

    -
    Examples
    +
    Examples
    #![feature(slice_as_chunks)]
     let v = &mut [0, 0, 0, 0, 0];
     let mut count = 1;
    @@ -706,13 +767,13 @@ 
    Examples
    count += 1; } assert_eq!(v, &[1, 1, 2, 2, 9]);
    -
    source

    pub fn as_rchunks_mut<const N: usize>(&mut self) -> (&mut [T], &mut [[T; N]])

    🔬This is a nightly-only experimental API. (slice_as_chunks)

    Splits the slice into a slice of N-element arrays, +

    source

    pub fn as_rchunks_mut<const N: usize>(&mut self) -> (&mut [T], &mut [[T; N]])

    🔬This is a nightly-only experimental API. (slice_as_chunks)

    Splits the slice into a slice of N-element arrays, starting at the end of the slice, and a remainder slice with length strictly less than N.

    Panics

    Panics if N is 0. This check will most probably get changed to a compile time error before this method gets stabilized.

    -
    Examples
    +
    Examples
    #![feature(slice_as_chunks)]
     let v = &mut [0, 0, 0, 0, 0];
     let mut count = 1;
    @@ -724,7 +785,7 @@ 
    Examples
    count += 1; } assert_eq!(v, &[9, 1, 1, 2, 2]);
    -
    source

    pub fn array_chunks_mut<const N: usize>(&mut self) -> ArrayChunksMut<'_, T, N>

    🔬This is a nightly-only experimental API. (array_chunks)

    Returns an iterator over N elements of the slice at a time, starting at the +

    source

    pub fn array_chunks_mut<const N: usize>(&mut self) -> ArrayChunksMut<'_, T, N>

    🔬This is a nightly-only experimental API. (array_chunks)

    Returns an iterator over N elements of the slice at a time, starting at the beginning of the slice.

    The chunks are mutable array references and do not overlap. If N does not divide the length of the slice, then the last up to N-1 elements will be omitted and @@ -733,7 +794,7 @@

    Examples
    Panics

    Panics if N is 0. This check will most probably get changed to a compile time error before this method gets stabilized.

    -
    Examples
    +
    Examples
    #![feature(array_chunks)]
     let v = &mut [0, 0, 0, 0, 0];
     let mut count = 1;
    @@ -743,14 +804,14 @@ 
    Examples
    count += 1; } assert_eq!(v, &[1, 1, 2, 2, 0]);
    -
    source

    pub fn array_windows<const N: usize>(&self) -> ArrayWindows<'_, T, N>

    🔬This is a nightly-only experimental API. (array_windows)

    Returns an iterator over overlapping windows of N elements of a slice, +

    source

    pub fn array_windows<const N: usize>(&self) -> ArrayWindows<'_, T, N>

    🔬This is a nightly-only experimental API. (array_windows)

    Returns an iterator over overlapping windows of N elements of a slice, starting at the beginning of the slice.

    This is the const generic equivalent of windows.

    If N is greater than the size of the slice, it will return no windows.

    Panics

    Panics if N is 0. This check will most probably get changed to a compile time error before this method gets stabilized.

    -
    Examples
    +
    Examples
    #![feature(array_windows)]
     let slice = [0, 1, 2, 3];
     let mut iter = slice.array_windows();
    @@ -758,7 +819,7 @@ 
    Examples
    assert_eq!(iter.next().unwrap(), &[1, 2]); assert_eq!(iter.next().unwrap(), &[2, 3]); assert!(iter.next().is_none());
    -
    1.31.0 · source

    pub fn rchunks(&self, chunk_size: usize) -> RChunks<'_, T>

    Returns an iterator over chunk_size elements of the slice at a time, starting at the end +

    1.31.0 · source

    pub fn rchunks(&self, chunk_size: usize) -> RChunks<'_, T>

    Returns an iterator over chunk_size elements of the slice at a time, starting at the end of the slice.

    The chunks are slices and do not overlap. If chunk_size does not divide the length of the slice, then the last chunk will not have length chunk_size.

    @@ -767,14 +828,14 @@
    Examples
    of the slice.

    Panics

    Panics if chunk_size is 0.

    -
    Examples
    +
    Examples
    let slice = ['l', 'o', 'r', 'e', 'm'];
     let mut iter = slice.rchunks(2);
     assert_eq!(iter.next().unwrap(), &['e', 'm']);
     assert_eq!(iter.next().unwrap(), &['o', 'r']);
     assert_eq!(iter.next().unwrap(), &['l']);
     assert!(iter.next().is_none());
    -
    1.31.0 · source

    pub fn rchunks_mut(&mut self, chunk_size: usize) -> RChunksMut<'_, T>

    Returns an iterator over chunk_size elements of the slice at a time, starting at the end +

    1.31.0 · source

    pub fn rchunks_mut(&mut self, chunk_size: usize) -> RChunksMut<'_, T>

    Returns an iterator over chunk_size elements of the slice at a time, starting at the end of the slice.

    The chunks are mutable slices, and do not overlap. If chunk_size does not divide the length of the slice, then the last chunk will not have length chunk_size.

    @@ -783,7 +844,7 @@
    Examples
    beginning of the slice.

    Panics

    Panics if chunk_size is 0.

    -
    Examples
    +
    Examples
    let v = &mut [0, 0, 0, 0, 0];
     let mut count = 1;
     
    @@ -794,7 +855,7 @@ 
    Examples
    count += 1; } assert_eq!(v, &[3, 2, 2, 1, 1]);
    -
    1.31.0 · source

    pub fn rchunks_exact(&self, chunk_size: usize) -> RChunksExact<'_, T>

    Returns an iterator over chunk_size elements of the slice at a time, starting at the +

    1.31.0 · source

    pub fn rchunks_exact(&self, chunk_size: usize) -> RChunksExact<'_, T>

    Returns an iterator over chunk_size elements of the slice at a time, starting at the end of the slice.

    The chunks are slices and do not overlap. If chunk_size does not divide the length of the slice, then the last up to chunk_size-1 elements will be omitted and can be retrieved @@ -806,14 +867,14 @@

    Examples
    slice.

    Panics

    Panics if chunk_size is 0.

    -
    Examples
    +
    Examples
    let slice = ['l', 'o', 'r', 'e', 'm'];
     let mut iter = slice.rchunks_exact(2);
     assert_eq!(iter.next().unwrap(), &['e', 'm']);
     assert_eq!(iter.next().unwrap(), &['o', 'r']);
     assert!(iter.next().is_none());
     assert_eq!(iter.remainder(), &['l']);
    -
    1.31.0 · source

    pub fn rchunks_exact_mut(&mut self, chunk_size: usize) -> RChunksExactMut<'_, T>

    Returns an iterator over chunk_size elements of the slice at a time, starting at the end +

    1.31.0 · source

    pub fn rchunks_exact_mut(&mut self, chunk_size: usize) -> RChunksExactMut<'_, T>

    Returns an iterator over chunk_size elements of the slice at a time, starting at the end of the slice.

    The chunks are mutable slices, and do not overlap. If chunk_size does not divide the length of the slice, then the last up to chunk_size-1 elements will be omitted and can be @@ -825,7 +886,7 @@

    Examples
    of the slice.

    Panics

    Panics if chunk_size is 0.

    -
    Examples
    +
    Examples
    let v = &mut [0, 0, 0, 0, 0];
     let mut count = 1;
     
    @@ -836,13 +897,13 @@ 
    Examples
    count += 1; } assert_eq!(v, &[0, 2, 2, 1, 1]);
    -
    source

    pub fn group_by<F>(&self, pred: F) -> GroupBy<'_, T, F>where +

    source

    pub fn group_by<F>(&self, pred: F) -> GroupBy<'_, T, F>where F: FnMut(&T, &T) -> bool,

    🔬This is a nightly-only experimental API. (slice_group_by)

    Returns an iterator over the slice producing non-overlapping runs of elements using the predicate to separate them.

    The predicate is called on two elements following themselves, it means the predicate is called on slice[0] and slice[1] then on slice[1] and slice[2] and so on.

    -
    Examples
    +
    Examples
    #![feature(slice_group_by)]
     
     let slice = &[1, 1, 1, 3, 3, 2, 2, 2];
    @@ -865,13 +926,13 @@ 
    Examples
    assert_eq!(iter.next(), Some(&[2, 3][..])); assert_eq!(iter.next(), Some(&[2, 3, 4][..])); assert_eq!(iter.next(), None);
    -
    source

    pub fn group_by_mut<F>(&mut self, pred: F) -> GroupByMut<'_, T, F>where +

    source

    pub fn group_by_mut<F>(&mut self, pred: F) -> GroupByMut<'_, T, F>where F: FnMut(&T, &T) -> bool,

    🔬This is a nightly-only experimental API. (slice_group_by)

    Returns an iterator over the slice producing non-overlapping mutable runs of elements using the predicate to separate them.

    The predicate is called on two elements following themselves, it means the predicate is called on slice[0] and slice[1] then on slice[1] and slice[2] and so on.

    -
    Examples
    +
    Examples
    #![feature(slice_group_by)]
     
     let slice = &mut [1, 1, 1, 3, 3, 2, 2, 2];
    @@ -894,13 +955,13 @@ 
    Examples
    assert_eq!(iter.next(), Some(&mut [2, 3][..])); assert_eq!(iter.next(), Some(&mut [2, 3, 4][..])); assert_eq!(iter.next(), None);
    -
    1.0.0 · source

    pub fn split_at(&self, mid: usize) -> (&[T], &[T])

    Divides one slice into two at an index.

    +
    1.0.0 · source

    pub fn split_at(&self, mid: usize) -> (&[T], &[T])

    Divides one slice into two at an index.

    The first will contain all indices from [0, mid) (excluding the index mid itself) and the second will contain all indices from [mid, len) (excluding the index len itself).

    Panics

    Panics if mid > len.

    -
    Examples
    +
    Examples
    let v = [1, 2, 3, 4, 5, 6];
     
     {
    @@ -920,13 +981,13 @@ 
    Examples
    assert_eq!(left, [1, 2, 3, 4, 5, 6]); assert_eq!(right, []); }
    -
    1.0.0 · source

    pub fn split_at_mut(&mut self, mid: usize) -> (&mut [T], &mut [T])

    Divides one mutable slice into two at an index.

    +
    1.0.0 · source

    pub fn split_at_mut(&mut self, mid: usize) -> (&mut [T], &mut [T])

    Divides one mutable slice into two at an index.

    The first will contain all indices from [0, mid) (excluding the index mid itself) and the second will contain all indices from [mid, len) (excluding the index len itself).

    Panics

    Panics if mid > len.

    -
    Examples
    +
    Examples
    let mut v = [1, 0, 3, 0, 5, 6];
     let (left, right) = v.split_at_mut(2);
     assert_eq!(left, [1, 0]);
    @@ -934,16 +995,16 @@ 
    Examples
    left[1] = 2; right[1] = 4; assert_eq!(v, [1, 2, 3, 4, 5, 6]);
    -
    source

    pub unsafe fn split_at_unchecked(&self, mid: usize) -> (&[T], &[T])

    🔬This is a nightly-only experimental API. (slice_split_at_unchecked)

    Divides one slice into two at an index, without doing bounds checking.

    +
    source

    pub unsafe fn split_at_unchecked(&self, mid: usize) -> (&[T], &[T])

    🔬This is a nightly-only experimental API. (slice_split_at_unchecked)

    Divides one slice into two at an index, without doing bounds checking.

    The first will contain all indices from [0, mid) (excluding the index mid itself) and the second will contain all indices from [mid, len) (excluding the index len itself).

    For a safe alternative see split_at.

    -
    Safety
    +
    Safety

    Calling this method with an out-of-bounds index is undefined behavior even if the resulting reference is not used. The caller has to ensure that 0 <= mid <= self.len().

    -
    Examples
    +
    Examples
    #![feature(slice_split_at_unchecked)]
     
     let v = [1, 2, 3, 4, 5, 6];
    @@ -965,7 +1026,7 @@ 
    Examples
    assert_eq!(left, [1, 2, 3, 4, 5, 6]); assert_eq!(right, []); }
    -
    source

    pub unsafe fn split_at_mut_unchecked( +

    source

    pub unsafe fn split_at_mut_unchecked( &mut self, mid: usize ) -> (&mut [T], &mut [T])

    🔬This is a nightly-only experimental API. (slice_split_at_unchecked)

    Divides one mutable slice into two at an index, without doing bounds checking.

    @@ -973,11 +1034,11 @@
    Examples
    the index mid itself) and the second will contain all indices from [mid, len) (excluding the index len itself).

    For a safe alternative see split_at_mut.

    -
    Safety
    +
    Safety

    Calling this method with an out-of-bounds index is undefined behavior even if the resulting reference is not used. The caller has to ensure that 0 <= mid <= self.len().

    -
    Examples
    +
    Examples
    #![feature(slice_split_at_unchecked)]
     
     let mut v = [1, 0, 3, 0, 5, 6];
    @@ -990,13 +1051,13 @@ 
    Examples
    right[1] = 4; } assert_eq!(v, [1, 2, 3, 4, 5, 6]);
    -
    source

    pub fn split_array_ref<const N: usize>(&self) -> (&[T; N], &[T])

    🔬This is a nightly-only experimental API. (split_array)

    Divides one slice into an array and a remainder slice at an index.

    +
    source

    pub fn split_array_ref<const N: usize>(&self) -> (&[T; N], &[T])

    🔬This is a nightly-only experimental API. (split_array)

    Divides one slice into an array and a remainder slice at an index.

    The array will contain all indices from [0, N) (excluding the index N itself) and the slice will contain all indices from [N, len) (excluding the index len itself).

    Panics

    Panics if N > len.

    -
    Examples
    +
    Examples
    #![feature(split_array)]
     
     let v = &[1, 2, 3, 4, 5, 6][..];
    @@ -1018,13 +1079,13 @@ 
    Examples
    assert_eq!(left, &[1, 2, 3, 4, 5, 6]); assert_eq!(right, []); }
    -
    source

    pub fn split_array_mut<const N: usize>(&mut self) -> (&mut [T; N], &mut [T])

    🔬This is a nightly-only experimental API. (split_array)

    Divides one mutable slice into an array and a remainder slice at an index.

    +
    source

    pub fn split_array_mut<const N: usize>(&mut self) -> (&mut [T; N], &mut [T])

    🔬This is a nightly-only experimental API. (split_array)

    Divides one mutable slice into an array and a remainder slice at an index.

    The array will contain all indices from [0, N) (excluding the index N itself) and the slice will contain all indices from [N, len) (excluding the index len itself).

    Panics

    Panics if N > len.

    -
    Examples
    +
    Examples
    #![feature(split_array)]
     
     let mut v = &mut [1, 0, 3, 0, 5, 6][..];
    @@ -1034,14 +1095,14 @@ 
    Examples
    left[1] = 2; right[1] = 4; assert_eq!(v, [1, 2, 3, 4, 5, 6]);
    -
    source

    pub fn rsplit_array_ref<const N: usize>(&self) -> (&[T], &[T; N])

    🔬This is a nightly-only experimental API. (split_array)

    Divides one slice into an array and a remainder slice at an index from +

    source

    pub fn rsplit_array_ref<const N: usize>(&self) -> (&[T], &[T; N])

    🔬This is a nightly-only experimental API. (split_array)

    Divides one slice into an array and a remainder slice at an index from the end.

    The slice will contain all indices from [0, len - N) (excluding the index len - N itself) and the array will contain all indices from [len - N, len) (excluding the index len itself).

    Panics

    Panics if N > len.

    -
    Examples
    +
    Examples
    #![feature(split_array)]
     
     let v = &[1, 2, 3, 4, 5, 6][..];
    @@ -1063,14 +1124,14 @@ 
    Examples
    assert_eq!(left, []); assert_eq!(right, &[1, 2, 3, 4, 5, 6]); }
    -
    source

    pub fn rsplit_array_mut<const N: usize>(&mut self) -> (&mut [T], &mut [T; N])

    🔬This is a nightly-only experimental API. (split_array)

    Divides one mutable slice into an array and a remainder slice at an +

    source

    pub fn rsplit_array_mut<const N: usize>(&mut self) -> (&mut [T], &mut [T; N])

    🔬This is a nightly-only experimental API. (split_array)

    Divides one mutable slice into an array and a remainder slice at an index from the end.

    The slice will contain all indices from [0, len - N) (excluding the index N itself) and the array will contain all indices from [len - N, len) (excluding the index len itself).

    Panics

    Panics if N > len.

    -
    Examples
    +
    Examples
    #![feature(split_array)]
     
     let mut v = &mut [1, 0, 3, 0, 5, 6][..];
    @@ -1080,10 +1141,10 @@ 
    Examples
    left[1] = 2; right[1] = 4; assert_eq!(v, [1, 2, 3, 4, 5, 6]);
    -
    1.0.0 · source

    pub fn split<F>(&self, pred: F) -> Split<'_, T, F>where +

    1.0.0 · source

    pub fn split<F>(&self, pred: F) -> Split<'_, T, F>where F: FnMut(&T) -> bool,

    Returns an iterator over subslices separated by elements that match pred. The matched element is not contained in the subslices.

    -
    Examples
    +
    Examples
    let slice = [10, 40, 33, 20];
     let mut iter = slice.split(|num| num % 3 == 0);
     
    @@ -1111,21 +1172,21 @@ 
    Examples
    assert_eq!(iter.next().unwrap(), &[]); assert_eq!(iter.next().unwrap(), &[20]); assert!(iter.next().is_none());
    -
    1.0.0 · source

    pub fn split_mut<F>(&mut self, pred: F) -> SplitMut<'_, T, F>where +

    1.0.0 · source

    pub fn split_mut<F>(&mut self, pred: F) -> SplitMut<'_, T, F>where F: FnMut(&T) -> bool,

    Returns an iterator over mutable subslices separated by elements that match pred. The matched element is not contained in the subslices.

    -
    Examples
    +
    Examples
    let mut v = [10, 40, 30, 20, 60, 50];
     
     for group in v.split_mut(|num| *num % 3 == 0) {
         group[0] = 1;
     }
     assert_eq!(v, [1, 40, 30, 1, 60, 1]);
    -
    1.51.0 · source

    pub fn split_inclusive<F>(&self, pred: F) -> SplitInclusive<'_, T, F>where +

    1.51.0 · source

    pub fn split_inclusive<F>(&self, pred: F) -> SplitInclusive<'_, T, F>where F: FnMut(&T) -> bool,

    Returns an iterator over subslices separated by elements that match pred. The matched element is contained in the end of the previous subslice as a terminator.

    -
    Examples
    +
    Examples
    let slice = [10, 40, 33, 20];
     let mut iter = slice.split_inclusive(|num| num % 3 == 0);
     
    @@ -1142,11 +1203,11 @@ 
    Examples
    assert_eq!(iter.next().unwrap(), &[3]); assert_eq!(iter.next().unwrap(), &[10, 40, 33]); assert!(iter.next().is_none());
    -
    1.51.0 · source

    pub fn split_inclusive_mut<F>(&mut self, pred: F) -> SplitInclusiveMut<'_, T, F>where +

    1.51.0 · source

    pub fn split_inclusive_mut<F>(&mut self, pred: F) -> SplitInclusiveMut<'_, T, F>where F: FnMut(&T) -> bool,

    Returns an iterator over mutable subslices separated by elements that match pred. The matched element is contained in the previous subslice as a terminator.

    -
    Examples
    +
    Examples
    let mut v = [10, 40, 30, 20, 60, 50];
     
     for group in v.split_inclusive_mut(|num| *num % 3 == 0) {
    @@ -1154,11 +1215,11 @@ 
    Examples
    group[terminator_idx] = 1; } assert_eq!(v, [10, 40, 1, 20, 1, 1]);
    -
    1.27.0 · source

    pub fn rsplit<F>(&self, pred: F) -> RSplit<'_, T, F>where +

    1.27.0 · source

    pub fn rsplit<F>(&self, pred: F) -> RSplit<'_, T, F>where F: FnMut(&T) -> bool,

    Returns an iterator over subslices separated by elements that match pred, starting at the end of the slice and working backwards. The matched element is not contained in the subslices.

    -
    Examples
    +
    Examples
    let slice = [11, 22, 33, 0, 44, 55];
     let mut iter = slice.rsplit(|num| *num == 0);
     
    @@ -1175,11 +1236,11 @@ 
    Examples
    assert_eq!(it.next().unwrap(), &[1, 1]); assert_eq!(it.next().unwrap(), &[]); assert_eq!(it.next(), None);
    -
    1.27.0 · source

    pub fn rsplit_mut<F>(&mut self, pred: F) -> RSplitMut<'_, T, F>where +

    1.27.0 · source

    pub fn rsplit_mut<F>(&mut self, pred: F) -> RSplitMut<'_, T, F>where F: FnMut(&T) -> bool,

    Returns an iterator over mutable subslices separated by elements that match pred, starting at the end of the slice and working backwards. The matched element is not contained in the subslices.

    -
    Examples
    +
    Examples
    let mut v = [100, 400, 300, 200, 600, 500];
     
     let mut count = 0;
    @@ -1188,13 +1249,13 @@ 
    Examples
    group[0] = count; } assert_eq!(v, [3, 400, 300, 2, 600, 1]);
    -
    1.0.0 · source

    pub fn splitn<F>(&self, n: usize, pred: F) -> SplitN<'_, T, F>where +

    1.0.0 · source

    pub fn splitn<F>(&self, n: usize, pred: F) -> SplitN<'_, T, F>where F: FnMut(&T) -> bool,

    Returns an iterator over subslices separated by elements that match pred, limited to returning at most n items. The matched element is not contained in the subslices.

    The last element returned, if any, will contain the remainder of the slice.

    -
    Examples
    +
    Examples

    Print the slice split once by numbers divisible by 3 (i.e., [10, 40], [20, 60, 50]):

    @@ -1203,27 +1264,27 @@
    Examples
    for group in v.splitn(2, |num| *num % 3 == 0) { println!("{group:?}"); }
    -
    1.0.0 · source

    pub fn splitn_mut<F>(&mut self, n: usize, pred: F) -> SplitNMut<'_, T, F>where +

    1.0.0 · source

    pub fn splitn_mut<F>(&mut self, n: usize, pred: F) -> SplitNMut<'_, T, F>where F: FnMut(&T) -> bool,

    Returns an iterator over mutable subslices separated by elements that match pred, limited to returning at most n items. The matched element is not contained in the subslices.

    The last element returned, if any, will contain the remainder of the slice.

    -
    Examples
    +
    Examples
    let mut v = [10, 40, 30, 20, 60, 50];
     
     for group in v.splitn_mut(2, |num| *num % 3 == 0) {
         group[0] = 1;
     }
     assert_eq!(v, [1, 40, 30, 1, 60, 50]);
    -
    1.0.0 · source

    pub fn rsplitn<F>(&self, n: usize, pred: F) -> RSplitN<'_, T, F>where +

    1.0.0 · source

    pub fn rsplitn<F>(&self, n: usize, pred: F) -> RSplitN<'_, T, F>where F: FnMut(&T) -> bool,

    Returns an iterator over subslices separated by elements that match pred limited to returning at most n items. This starts at the end of the slice and works backwards. The matched element is not contained in the subslices.

    The last element returned, if any, will contain the remainder of the slice.

    -
    Examples
    +
    Examples

    Print the slice split once, starting from the end, by numbers divisible by 3 (i.e., [50], [10, 40, 30, 20]):

    @@ -1232,27 +1293,27 @@
    Examples
    for group in v.rsplitn(2, |num| *num % 3 == 0) { println!("{group:?}"); }
    -
    1.0.0 · source

    pub fn rsplitn_mut<F>(&mut self, n: usize, pred: F) -> RSplitNMut<'_, T, F>where +

    1.0.0 · source

    pub fn rsplitn_mut<F>(&mut self, n: usize, pred: F) -> RSplitNMut<'_, T, F>where F: FnMut(&T) -> bool,

    Returns an iterator over subslices separated by elements that match pred limited to returning at most n items. This starts at the end of the slice and works backwards. The matched element is not contained in the subslices.

    The last element returned, if any, will contain the remainder of the slice.

    -
    Examples
    +
    Examples
    let mut s = [10, 40, 30, 20, 60, 50];
     
     for group in s.rsplitn_mut(2, |num| *num % 3 == 0) {
         group[0] = 1;
     }
     assert_eq!(s, [1, 40, 30, 20, 60, 1]);
    -
    source

    pub fn split_once<F>(&self, pred: F) -> Option<(&[T], &[T])>where +

    source

    pub fn split_once<F>(&self, pred: F) -> Option<(&[T], &[T])>where F: FnMut(&T) -> bool,

    🔬This is a nightly-only experimental API. (slice_split_once)

    Splits the slice on the first element that matches the specified predicate.

    If any matching elements are resent in the slice, returns the prefix before the match and suffix after. The matching element itself is not included. If no elements match, returns None.

    -
    Examples
    +
    Examples
    #![feature(slice_split_once)]
     let s = [1, 2, 3, 2, 4];
     assert_eq!(s.split_once(|&x| x == 2), Some((
    @@ -1260,13 +1321,13 @@ 
    Examples
    &[3, 2, 4][..] ))); assert_eq!(s.split_once(|&x| x == 0), None);
    -
    source

    pub fn rsplit_once<F>(&self, pred: F) -> Option<(&[T], &[T])>where +

    source

    pub fn rsplit_once<F>(&self, pred: F) -> Option<(&[T], &[T])>where F: FnMut(&T) -> bool,

    🔬This is a nightly-only experimental API. (slice_split_once)

    Splits the slice on the last element that matches the specified predicate.

    If any matching elements are resent in the slice, returns the prefix before the match and suffix after. The matching element itself is not included. If no elements match, returns None.

    -
    Examples
    +
    Examples
    #![feature(slice_split_once)]
     let s = [1, 2, 3, 2, 4];
     assert_eq!(s.rsplit_once(|&x| x == 2), Some((
    @@ -1274,11 +1335,11 @@ 
    Examples
    &[4][..] ))); assert_eq!(s.rsplit_once(|&x| x == 0), None);
    -
    1.0.0 · source

    pub fn contains(&self, x: &T) -> boolwhere +

    1.0.0 · source

    pub fn contains(&self, x: &T) -> boolwhere T: PartialEq,

    Returns true if the slice contains an element with the given value.

    This operation is O(n).

    Note that if you have a sorted slice, binary_search may be faster.

    -
    Examples
    +
    Examples
    let v = [10, 40, 30];
     assert!(v.contains(&30));
     assert!(!v.contains(&50));
    @@ -1289,9 +1350,9 @@
    Examples
    let v = [String::from("hello"), String::from("world")]; // slice of `String`
     assert!(v.iter().any(|e| e == "hello")); // search with `&str`
     assert!(!v.iter().any(|e| e == "hi"));
    -
    1.0.0 · source

    pub fn starts_with(&self, needle: &[T]) -> boolwhere +

    1.0.0 · source

    pub fn starts_with(&self, needle: &[T]) -> boolwhere T: PartialEq,

    Returns true if needle is a prefix of the slice.

    -
    Examples
    +
    Examples
    let v = [10, 40, 30];
     assert!(v.starts_with(&[10]));
     assert!(v.starts_with(&[10, 40]));
    @@ -1303,9 +1364,9 @@ 
    Examples
    assert!(v.starts_with(&[])); let v: &[u8] = &[]; assert!(v.starts_with(&[]));
    -
    1.0.0 · source

    pub fn ends_with(&self, needle: &[T]) -> boolwhere +

    1.0.0 · source

    pub fn ends_with(&self, needle: &[T]) -> boolwhere T: PartialEq,

    Returns true if needle is a suffix of the slice.

    -
    Examples
    +
    Examples
    let v = [10, 40, 30];
     assert!(v.ends_with(&[30]));
     assert!(v.ends_with(&[40, 30]));
    @@ -1317,13 +1378,13 @@ 
    Examples
    assert!(v.ends_with(&[])); let v: &[u8] = &[]; assert!(v.ends_with(&[]));
    -
    1.51.0 · source

    pub fn strip_prefix<P>(&self, prefix: &P) -> Option<&[T]>where +

    1.51.0 · source

    pub fn strip_prefix<P>(&self, prefix: &P) -> Option<&[T]>where P: SlicePattern<Item = T> + ?Sized, T: PartialEq,

    Returns a subslice with the prefix removed.

    If the slice starts with prefix, returns the subslice after the prefix, wrapped in Some. If prefix is empty, simply returns the original slice.

    If the slice does not start with prefix, returns None.

    -
    Examples
    +
    Examples
    let v = &[10, 40, 30];
     assert_eq!(v.strip_prefix(&[10]), Some(&[40, 30][..]));
     assert_eq!(v.strip_prefix(&[10, 40]), Some(&[30][..]));
    @@ -1333,19 +1394,19 @@ 
    Examples
    let prefix : &str = "he"; assert_eq!(b"hello".strip_prefix(prefix.as_bytes()), Some(b"llo".as_ref()));
    -
    1.51.0 · source

    pub fn strip_suffix<P>(&self, suffix: &P) -> Option<&[T]>where +

    1.51.0 · source

    pub fn strip_suffix<P>(&self, suffix: &P) -> Option<&[T]>where P: SlicePattern<Item = T> + ?Sized, T: PartialEq,

    Returns a subslice with the suffix removed.

    If the slice ends with suffix, returns the subslice before the suffix, wrapped in Some. If suffix is empty, simply returns the original slice.

    If the slice does not end with suffix, returns None.

    -
    Examples
    +
    Examples
    let v = &[10, 40, 30];
     assert_eq!(v.strip_suffix(&[30]), Some(&[10, 40][..]));
     assert_eq!(v.strip_suffix(&[40, 30]), Some(&[10][..]));
     assert_eq!(v.strip_suffix(&[50]), None);
     assert_eq!(v.strip_suffix(&[50, 30]), None);
    -

    Binary searches this slice for a given element. If the slice is not sorted, the returned result is unspecified and meaningless.

    @@ -1357,7 +1418,7 @@
    Examples
    the index where a matching element could be inserted while maintaining sorted order.

    See also binary_search_by, binary_search_by_key, and partition_point.

    -
    Examples
    +
    Examples

    Looks up a series of four elements. The first is found, with a uniquely determined position; the second and third are not found; the fourth could match any position in [1, 4].

    @@ -1398,7 +1459,7 @@
    Examples
    // The above is equivalent to `let idx = s.binary_search(&num).unwrap_or_else(|x| x);` s.insert(idx, num); assert_eq!(s, [0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 42, 55]);
    -
    1.0.0 · source

    pub fn binary_search_by<'a, F>(&'a self, f: F) -> Result<usize, usize>where +

    1.0.0 · source

    pub fn binary_search_by<'a, F>(&'a self, f: F) -> Result<usize, usize>where F: FnMut(&'a T) -> Ordering,

    Binary searches this slice with a comparator function.

    The comparator function should return an order code that indicates whether its argument is Less, Equal or Greater the desired @@ -1414,7 +1475,7 @@

    Examples
    the index where a matching element could be inserted while maintaining sorted order.

    See also binary_search, binary_search_by_key, and partition_point.

    -
    Examples
    +
    Examples

    Looks up a series of four elements. The first is found, with a uniquely determined position; the second and third are not found; the fourth could match any position in [1, 4].

    @@ -1430,7 +1491,7 @@
    Examples
    let seek = 1; let r = s.binary_search_by(|probe| probe.cmp(&seek)); assert!(match r { Ok(1..=4) => true, _ => false, });
    -
    1.10.0 · source

    pub fn binary_search_by_key<'a, B, F>( +

    1.10.0 · source

    pub fn binary_search_by_key<'a, B, F>( &'a self, b: &B, f: F @@ -1449,7 +1510,7 @@

    Examples
    the index where a matching element could be inserted while maintaining sorted order.

    See also binary_search, binary_search_by, and partition_point.

    -
    Examples
    +
    Examples

    Looks up a series of four elements in a slice of pairs sorted by their second elements. The first is found, with a uniquely determined position; the second and third are not found; the @@ -1464,7 +1525,7 @@

    Examples
    assert_eq!(s.binary_search_by_key(&100, |&(a, b)| b), Err(13)); let r = s.binary_search_by_key(&1, |&(a, b)| b); assert!(match r { Ok(1..=4) => true, _ => false, }); -
    1.20.0 · source

    pub fn sort_unstable(&mut self)where +

    1.20.0 · source

    pub fn sort_unstable(&mut self)where T: Ord,

    Sorts the slice, but might not preserve the order of equal elements.

    This sort is unstable (i.e., may reorder equal elements), in-place (i.e., does not allocate), and O(n * log(n)) worst-case.

    @@ -1476,12 +1537,12 @@
    Current im deterministic behavior.

    It is typically faster than stable sorting, except in a few special cases, e.g., when the slice consists of several concatenated sorted sequences.

    -
    Examples
    +
    Examples
    let mut v = [-5, 4, 1, -3, 2];
     
     v.sort_unstable();
     assert!(v == [-5, -3, 1, 2, 4]);
    -
    1.20.0 · source

    pub fn sort_unstable_by<F>(&mut self, compare: F)where +

    1.20.0 · source

    pub fn sort_unstable_by<F>(&mut self, compare: F)where F: FnMut(&T, &T) -> Ordering,

    Sorts the slice with a comparator function, but might not preserve the order of equal elements.

    This sort is unstable (i.e., may reorder equal elements), in-place @@ -1507,7 +1568,7 @@

    Current im deterministic behavior.

    It is typically faster than stable sorting, except in a few special cases, e.g., when the slice consists of several concatenated sorted sequences.

    -
    Examples
    +
    Examples
    let mut v = [5, 4, 1, 3, 2];
     v.sort_unstable_by(|a, b| a.cmp(b));
     assert!(v == [1, 2, 3, 4, 5]);
    @@ -1515,7 +1576,7 @@ 
    Examples
    // reverse sorting v.sort_unstable_by(|a, b| b.cmp(a)); assert!(v == [5, 4, 3, 2, 1]);
    -
    1.20.0 · source

    pub fn sort_unstable_by_key<K, F>(&mut self, f: F)where +

    1.20.0 · source

    pub fn sort_unstable_by_key<K, F>(&mut self, f: F)where F: FnMut(&T) -> K, K: Ord,

    Sorts the slice with a key extraction function, but might not preserve the order of equal elements.

    @@ -1531,12 +1592,12 @@
    Current im

    Due to its key calling strategy, sort_unstable_by_key is likely to be slower than sort_by_cached_key in cases where the key function is expensive.

    -
    Examples
    +
    Examples
    let mut v = [-5i32, 4, 1, -3, 2];
     
     v.sort_unstable_by_key(|k| k.abs());
     assert!(v == [1, 2, -3, 4, -5]);
    -
    1.49.0 · source

    pub fn select_nth_unstable( +

    1.49.0 · source

    pub fn select_nth_unstable( &mut self, index: usize ) -> (&mut [T], &mut T, &mut [T])where @@ -1556,7 +1617,7 @@
    Current im pivot selection, which guarantees linear runtime for all inputs.

    Panics

    Panics when index >= len(), meaning it always panics on empty slices.

    -
    Examples
    +
    Examples
    let mut v = [-5i32, 4, 1, -3, 2];
     
     // Find the median
    @@ -1568,7 +1629,7 @@ 
    Examples
    v == [-5, -3, 1, 2, 4] || v == [-3, -5, 1, 4, 2] || v == [-5, -3, 1, 4, 2]);
    -

    1.49.0 · source

    pub fn select_nth_unstable_by<F>( +

    1.49.0 · source

    pub fn select_nth_unstable_by<F>( &mut self, index: usize, compare: F @@ -1591,7 +1652,7 @@

    Current im pivot selection, which guarantees linear runtime for all inputs.

    Panics

    Panics when index >= len(), meaning it always panics on empty slices.

    -
    Examples
    +
    Examples
    let mut v = [-5i32, 4, 1, -3, 2];
     
     // Find the median as if the slice were sorted in descending order.
    @@ -1603,7 +1664,7 @@ 
    Examples
    v == [2, 4, 1, -3, -5] || v == [4, 2, 1, -5, -3] || v == [4, 2, 1, -3, -5]);
    -
    1.49.0 · source

    pub fn select_nth_unstable_by_key<K, F>( +

    1.49.0 · source

    pub fn select_nth_unstable_by_key<K, F>( &mut self, index: usize, f: F @@ -1627,7 +1688,7 @@

    Current im pivot selection, which guarantees linear runtime for all inputs.

    Panics

    Panics when index >= len(), meaning it always panics on empty slices.

    -
    Examples
    +
    Examples
    let mut v = [-5i32, 4, 1, -3, 2];
     
     // Return the median as if the array were sorted according to absolute value.
    @@ -1639,13 +1700,13 @@ 
    Examples
    v == [1, 2, -3, -5, 4] || v == [2, 1, -3, 4, -5] || v == [2, 1, -3, -5, 4]);
    -
    source

    pub fn partition_dedup(&mut self) -> (&mut [T], &mut [T])where +

    source

    pub fn partition_dedup(&mut self) -> (&mut [T], &mut [T])where T: PartialEq,

    🔬This is a nightly-only experimental API. (slice_partition_dedup)

    Moves all consecutive repeated elements to the end of the slice according to the PartialEq trait implementation.

    Returns two slices. The first contains no consecutive repeated elements. The second contains all the duplicates in no specified order.

    If the slice is sorted, the first returned slice contains no duplicates.

    -
    Examples
    +
    Examples
    #![feature(slice_partition_dedup)]
     
     let mut slice = [1, 2, 2, 3, 3, 2, 1, 1];
    @@ -1654,7 +1715,7 @@ 
    Examples
    assert_eq!(dedup, [1, 2, 3, 2, 1]); assert_eq!(duplicates, [2, 3, 1]);
    -
    source

    pub fn partition_dedup_by<F>(&mut self, same_bucket: F) -> (&mut [T], &mut [T])where +

    source

    pub fn partition_dedup_by<F>(&mut self, same_bucket: F) -> (&mut [T], &mut [T])where F: FnMut(&mut T, &mut T) -> bool,

    🔬This is a nightly-only experimental API. (slice_partition_dedup)

    Moves all but the first of consecutive elements to the end of the slice satisfying a given equality relation.

    Returns two slices. The first contains no consecutive repeated elements. @@ -1664,7 +1725,7 @@

    Examples
    from their order in the slice, so if same_bucket(a, b) returns true, a is moved at the end of the slice.

    If the slice is sorted, the first returned slice contains no duplicates.

    -
    Examples
    +
    Examples
    #![feature(slice_partition_dedup)]
     
     let mut slice = ["foo", "Foo", "BAZ", "Bar", "bar", "baz", "BAZ"];
    @@ -1673,14 +1734,14 @@ 
    Examples
    assert_eq!(dedup, ["foo", "BAZ", "Bar", "baz"]); assert_eq!(duplicates, ["bar", "Foo", "BAZ"]);
    -
    source

    pub fn partition_dedup_by_key<K, F>(&mut self, key: F) -> (&mut [T], &mut [T])where +

    source

    pub fn partition_dedup_by_key<K, F>(&mut self, key: F) -> (&mut [T], &mut [T])where F: FnMut(&mut T) -> K, K: PartialEq,

    🔬This is a nightly-only experimental API. (slice_partition_dedup)

    Moves all but the first of consecutive elements to the end of the slice that resolve to the same key.

    Returns two slices. The first contains no consecutive repeated elements. The second contains all the duplicates in no specified order.

    If the slice is sorted, the first returned slice contains no duplicates.

    -
    Examples
    +
    Examples
    #![feature(slice_partition_dedup)]
     
     let mut slice = [10, 20, 21, 30, 30, 20, 11, 13];
    @@ -1689,7 +1750,7 @@ 
    Examples
    assert_eq!(dedup, [10, 20, 30, 20, 11]); assert_eq!(duplicates, [21, 30, 13]);
    -
    1.26.0 · source

    pub fn rotate_left(&mut self, mid: usize)

    Rotates the slice in-place such that the first mid elements of the +

    1.26.0 · source

    pub fn rotate_left(&mut self, mid: usize)

    Rotates the slice in-place such that the first mid elements of the slice move to the end while the last self.len() - mid elements move to the front. After calling rotate_left, the element previously at index mid will become the first element in the slice.

    @@ -1699,7 +1760,7 @@
    Panics
    rotation.

    Complexity

    Takes linear (in self.len()) time.

    -
    Examples
    +
    Examples
    let mut a = ['a', 'b', 'c', 'd', 'e', 'f'];
     a.rotate_left(2);
     assert_eq!(a, ['c', 'd', 'e', 'f', 'a', 'b']);
    @@ -1708,7 +1769,7 @@
    Examples
    let mut a = ['a', 'b', 'c', 'd', 'e', 'f'];
     a[1..5].rotate_left(1);
     assert_eq!(a, ['a', 'c', 'd', 'e', 'b', 'f']);
    -
    1.26.0 · source

    pub fn rotate_right(&mut self, k: usize)

    Rotates the slice in-place such that the first self.len() - k +

    1.26.0 · source

    pub fn rotate_right(&mut self, k: usize)

    Rotates the slice in-place such that the first self.len() - k elements of the slice move to the end while the last k elements move to the front. After calling rotate_right, the element previously at index self.len() - k will become the first element in the slice.

    @@ -1718,7 +1779,7 @@
    Panics
    rotation.

    Complexity

    Takes linear (in self.len()) time.

    -
    Examples
    +
    Examples
    let mut a = ['a', 'b', 'c', 'd', 'e', 'f'];
     a.rotate_right(2);
     assert_eq!(a, ['e', 'f', 'a', 'b', 'c', 'd']);
    @@ -1727,28 +1788,28 @@
    Examples
    let mut a = ['a', 'b', 'c', 'd', 'e', 'f'];
     a[1..5].rotate_right(1);
     assert_eq!(a, ['a', 'e', 'b', 'c', 'd', 'f']);
    -
    1.50.0 · source

    pub fn fill(&mut self, value: T)where +

    1.50.0 · source

    pub fn fill(&mut self, value: T)where T: Clone,

    Fills self with elements by cloning value.

    -
    Examples
    +
    Examples
    let mut buf = vec![0; 10];
     buf.fill(1);
     assert_eq!(buf, vec![1; 10]);
    -
    1.51.0 · source

    pub fn fill_with<F>(&mut self, f: F)where +

    1.51.0 · source

    pub fn fill_with<F>(&mut self, f: F)where F: FnMut() -> T,

    Fills self with elements returned by calling a closure repeatedly.

    This method uses a closure to create new values. If you’d rather Clone a given value, use fill. If you want to use the Default trait to generate values, you can pass Default::default as the argument.

    -
    Examples
    +
    Examples
    let mut buf = vec![1; 10];
     buf.fill_with(Default::default);
     assert_eq!(buf, vec![0; 10]);
    -
    1.7.0 · source

    pub fn clone_from_slice(&mut self, src: &[T])where +

    1.7.0 · source

    pub fn clone_from_slice(&mut self, src: &[T])where T: Clone,

    Copies the elements from src into self.

    The length of src must be the same as self.

    Panics

    This function will panic if the two slices have different lengths.

    -
    Examples
    +
    Examples

    Cloning two elements from a slice into another:

    let src = [1, 2, 3, 4];
    @@ -1780,13 +1841,13 @@ 
    Examples
    } assert_eq!(slice, [4, 5, 3, 4, 5]);
    -
    1.9.0 · source

    pub fn copy_from_slice(&mut self, src: &[T])where +

    1.9.0 · source

    pub fn copy_from_slice(&mut self, src: &[T])where T: Copy,

    Copies all elements from src into self, using a memcpy.

    The length of src must be the same as self.

    If T does not implement Copy, use clone_from_slice.

    Panics

    This function will panic if the two slices have different lengths.

    -
    Examples
    +
    Examples

    Copying two elements from a slice into another:

    let src = [1, 2, 3, 4];
    @@ -1818,7 +1879,7 @@ 
    Examples
    } assert_eq!(slice, [4, 5, 3, 4, 5]);
    -
    1.37.0 · source

    pub fn copy_within<R>(&mut self, src: R, dest: usize)where +

    1.37.0 · source

    pub fn copy_within<R>(&mut self, src: R, dest: usize)where R: RangeBounds<usize>, T: Copy,

    Copies elements from one part of the slice to another part of itself, using a memmove.

    @@ -1829,7 +1890,7 @@
    Examples
    Panics

    This function will panic if either range exceeds the end of the slice, or if the end of src is before the start.

    -
    Examples
    +
    Examples

    Copying four bytes within a slice:

    let mut bytes = *b"Hello, World!";
    @@ -1837,7 +1898,7 @@ 
    Examples
    bytes.copy_within(1..5, 8); assert_eq!(&bytes, b"Hello, Wello!");
    -
    1.27.0 · source

    pub fn swap_with_slice(&mut self, other: &mut [T])

    Swaps all elements in self with those in other.

    +
    1.27.0 · source

    pub fn swap_with_slice(&mut self, other: &mut [T])

    Swaps all elements in self with those in other.

    The length of other must be the same as self.

    Panics

    This function will panic if the two slices have different lengths.

    @@ -1869,7 +1930,7 @@
    Example
    } assert_eq!(slice, [4, 5, 3, 1, 2]);
    -
    1.30.0 · source

    pub unsafe fn align_to<U>(&self) -> (&[T], &[U], &[T])

    Transmute the slice to a slice of another type, ensuring alignment of the types is +

    1.30.0 · source

    pub unsafe fn align_to<U>(&self) -> (&[T], &[U], &[T])

    Transmute the slice to a slice of another type, ensuring alignment of the types is maintained.

    This method splits the slice into three distinct slices: prefix, correctly aligned middle slice of a new type, and the suffix slice. How exactly the slice is split up is not @@ -1879,10 +1940,10 @@

    Example
    in a default (debug or release) execution will return a maximal middle part.

    This method has no purpose when either input element T or output element U are zero-sized and will return the original slice without splitting anything.

    -
    Safety
    +
    Safety

    This method is essentially a transmute with respect to the elements in the returned middle slice, so all the usual caveats pertaining to transmute::<T, U> also apply here.

    -
    Examples
    +
    Examples

    Basic usage:

    unsafe {
    @@ -1892,7 +1953,7 @@ 
    Examples
    // more_efficient_algorithm_for_aligned_shorts(shorts); // less_efficient_algorithm_for_bytes(suffix); }
    -
    1.30.0 · source

    pub unsafe fn align_to_mut<U>(&mut self) -> (&mut [T], &mut [U], &mut [T])

    Transmute the mutable slice to a mutable slice of another type, ensuring alignment of the +

    1.30.0 · source

    pub unsafe fn align_to_mut<U>(&mut self) -> (&mut [T], &mut [U], &mut [T])

    Transmute the mutable slice to a mutable slice of another type, ensuring alignment of the types is maintained.

    This method splits the slice into three distinct slices: prefix, correctly aligned middle slice of a new type, and the suffix slice. How exactly the slice is split up is not @@ -1902,10 +1963,10 @@

    Examples
    in a default (debug or release) execution will return a maximal middle part.

    This method has no purpose when either input element T or output element U are zero-sized and will return the original slice without splitting anything.

    -
    Safety
    +
    Safety

    This method is essentially a transmute with respect to the elements in the returned middle slice, so all the usual caveats pertaining to transmute::<T, U> also apply here.

    -
    Examples
    +
    Examples

    Basic usage:

    unsafe {
    @@ -1915,7 +1976,7 @@ 
    Examples
    // more_efficient_algorithm_for_aligned_shorts(shorts); // less_efficient_algorithm_for_bytes(suffix); }
    -
    source

    pub fn as_simd<const LANES: usize>(&self) -> (&[T], &[Simd<T, LANES>], &[T])where +

    source

    pub fn as_simd<const LANES: usize>(&self) -> (&[T], &[Simd<T, LANES>], &[T])where Simd<T, LANES>: AsRef<[T; LANES]>, T: SimdElement, LaneCount<LANES>: SupportedLaneCount,

    🔬This is a nightly-only experimental API. (portable_simd)

    Split a slice into a prefix, a middle of aligned SIMD types, and a suffix.

    @@ -1938,7 +1999,7 @@
    Panics
    supported. It’s possible that, in the future, those restrictions might be lifted in a way that would make it possible to see panics from this method for something like LANES == 3.

    -
    Examples
    +
    Examples
    #![feature(portable_simd)]
     use core::simd::SimdFloat;
     
    @@ -1966,7 +2027,7 @@ 
    Examples
    let numbers: Vec<f32> = (1..101).map(|x| x as _).collect(); assert_eq!(basic_simd_sum(&numbers[1..99]), 4949.0);
    -
    source

    pub fn as_simd_mut<const LANES: usize>( +

    source

    pub fn as_simd_mut<const LANES: usize>( &mut self ) -> (&mut [T], &mut [Simd<T, LANES>], &mut [T])where Simd<T, LANES>: AsMut<[T; LANES]>, @@ -1993,14 +2054,14 @@
    Panics
    supported. It’s possible that, in the future, those restrictions might be lifted in a way that would make it possible to see panics from this method for something like LANES == 3.

    -

    source

    pub fn is_sorted(&self) -> boolwhere +

    source

    pub fn is_sorted(&self) -> boolwhere T: PartialOrd,

    🔬This is a nightly-only experimental API. (is_sorted)

    Checks if the elements of this slice are sorted.

    That is, for each element a and its following element b, a <= b must hold. If the slice yields exactly zero or one element, true is returned.

    Note that if Self::Item is only PartialOrd, but not Ord, the above definition implies that this function returns false if any two consecutive items are not comparable.

    -
    Examples
    +
    Examples
    #![feature(is_sorted)]
     let empty: [i32; 0] = [];
     
    @@ -2009,23 +2070,23 @@ 
    Examples
    assert!([0].is_sorted()); assert!(empty.is_sorted()); assert!(![0.0, 1.0, f32::NAN].is_sorted());
    -
    source

    pub fn is_sorted_by<'a, F>(&'a self, compare: F) -> boolwhere +

    source

    pub fn is_sorted_by<'a, F>(&'a self, compare: F) -> boolwhere F: FnMut(&'a T, &'a T) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (is_sorted)

    Checks if the elements of this slice are sorted using the given comparator function.

    Instead of using PartialOrd::partial_cmp, this function uses the given compare function to determine the ordering of two elements. Apart from that, it’s equivalent to is_sorted; see its documentation for more information.

    -
    source

    pub fn is_sorted_by_key<'a, F, K>(&'a self, f: F) -> boolwhere +

    source

    pub fn is_sorted_by_key<'a, F, K>(&'a self, f: F) -> boolwhere F: FnMut(&'a T) -> K, K: PartialOrd,

    🔬This is a nightly-only experimental API. (is_sorted)

    Checks if the elements of this slice are sorted using the given key extraction function.

    Instead of comparing the slice’s elements directly, this function compares the keys of the elements, as determined by f. Apart from that, it’s equivalent to is_sorted; see its documentation for more information.

    -
    Examples
    +
    Examples
    #![feature(is_sorted)]
     
     assert!(["c", "bb", "aaa"].is_sorted_by_key(|s| s.len()));
     assert!(![-2i32, -1, 0, 3].is_sorted_by_key(|n| n.abs()));
    -
    1.52.0 · source

    pub fn partition_point<P>(&self, pred: P) -> usizewhere +

    1.52.0 · source

    pub fn partition_point<P>(&self, pred: P) -> usizewhere P: FnMut(&T) -> bool,

    Returns the index of the partition point according to the given predicate (the index of the first element of the second partition).

    The slice is assumed to be partitioned according to the given predicate. @@ -2036,7 +2097,7 @@

    Examples

    If this slice is not partitioned, the returned result is unspecified and meaningless, as this method performs a kind of binary search.

    See also binary_search, binary_search_by, and binary_search_by_key.

    -
    Examples
    +
    Examples
    let v = [1, 2, 3, 3, 5, 6, 7];
     let i = v.partition_point(|&x| x < 5);
     
    @@ -2058,14 +2119,14 @@ 
    Examples
    let idx = s.partition_point(|&x| x < num); s.insert(idx, num); assert_eq!(s, [0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 42, 55]);
    -
    source

    pub fn take<R, 'a>(self: &mut &'a [T], range: R) -> Option<&'a [T]>where +

    source

    pub fn take<R, 'a>(self: &mut &'a [T], range: R) -> Option<&'a [T]>where R: OneSidedRange<usize>,

    🔬This is a nightly-only experimental API. (slice_take)

    Removes the subslice corresponding to the given range and returns a reference to it.

    Returns None and does not modify the slice if the given range is out of bounds.

    Note that this method only accepts one-sided ranges such as 2.. or ..6, but not 2..6.

    -
    Examples
    +
    Examples

    Taking the first three elements of a slice:

    #![feature(slice_take)]
    @@ -2095,14 +2156,14 @@ 
    Examples
    assert_eq!(None, slice.take(..=4)); let expected: &[char] = &['a', 'b', 'c', 'd']; assert_eq!(Some(expected), slice.take(..4));
    -
    source

    pub fn take_mut<R, 'a>(self: &mut &'a mut [T], range: R) -> Option<&'a mut [T]>where +

    source

    pub fn take_mut<R, 'a>(self: &mut &'a mut [T], range: R) -> Option<&'a mut [T]>where R: OneSidedRange<usize>,

    🔬This is a nightly-only experimental API. (slice_take)

    Removes the subslice corresponding to the given range and returns a mutable reference to it.

    Returns None and does not modify the slice if the given range is out of bounds.

    Note that this method only accepts one-sided ranges such as 2.. or ..6, but not 2..6.

    -
    Examples
    +
    Examples

    Taking the first three elements of a slice:

    #![feature(slice_take)]
    @@ -2132,10 +2193,10 @@ 
    Examples
    assert_eq!(None, slice.take_mut(..=4)); let expected: &mut [_] = &mut ['a', 'b', 'c', 'd']; assert_eq!(Some(expected), slice.take_mut(..4));
    -
    source

    pub fn take_first<'a>(self: &mut &'a [T]) -> Option<&'a T>

    🔬This is a nightly-only experimental API. (slice_take)

    Removes the first element of the slice and returns a reference +

    source

    pub fn take_first<'a>(self: &mut &'a [T]) -> Option<&'a T>

    🔬This is a nightly-only experimental API. (slice_take)

    Removes the first element of the slice and returns a reference to it.

    Returns None if the slice is empty.

    -
    Examples
    +
    Examples
    #![feature(slice_take)]
     
     let mut slice: &[_] = &['a', 'b', 'c'];
    @@ -2143,10 +2204,10 @@ 
    Examples
    assert_eq!(slice, &['b', 'c']); assert_eq!(first, &'a');
    -
    source

    pub fn take_first_mut<'a>(self: &mut &'a mut [T]) -> Option<&'a mut T>

    🔬This is a nightly-only experimental API. (slice_take)

    Removes the first element of the slice and returns a mutable +

    source

    pub fn take_first_mut<'a>(self: &mut &'a mut [T]) -> Option<&'a mut T>

    🔬This is a nightly-only experimental API. (slice_take)

    Removes the first element of the slice and returns a mutable reference to it.

    Returns None if the slice is empty.

    -
    Examples
    +
    Examples
    #![feature(slice_take)]
     
     let mut slice: &mut [_] = &mut ['a', 'b', 'c'];
    @@ -2155,10 +2216,10 @@ 
    Examples
    assert_eq!(slice, &['b', 'c']); assert_eq!(first, &'d');
    -
    source

    pub fn take_last<'a>(self: &mut &'a [T]) -> Option<&'a T>

    🔬This is a nightly-only experimental API. (slice_take)

    Removes the last element of the slice and returns a reference +

    source

    pub fn take_last<'a>(self: &mut &'a [T]) -> Option<&'a T>

    🔬This is a nightly-only experimental API. (slice_take)

    Removes the last element of the slice and returns a reference to it.

    Returns None if the slice is empty.

    -
    Examples
    +
    Examples
    #![feature(slice_take)]
     
     let mut slice: &[_] = &['a', 'b', 'c'];
    @@ -2166,10 +2227,10 @@ 
    Examples
    assert_eq!(slice, &['a', 'b']); assert_eq!(last, &'c');
    -
    source

    pub fn take_last_mut<'a>(self: &mut &'a mut [T]) -> Option<&'a mut T>

    🔬This is a nightly-only experimental API. (slice_take)

    Removes the last element of the slice and returns a mutable +

    source

    pub fn take_last_mut<'a>(self: &mut &'a mut [T]) -> Option<&'a mut T>

    🔬This is a nightly-only experimental API. (slice_take)

    Removes the last element of the slice and returns a mutable reference to it.

    Returns None if the slice is empty.

    -
    Examples
    +
    Examples
    #![feature(slice_take)]
     
     let mut slice: &mut [_] = &mut ['a', 'b', 'c'];
    @@ -2178,15 +2239,15 @@ 
    Examples
    assert_eq!(slice, &['a', 'b']); assert_eq!(last, &'d');
    -
    source

    pub unsafe fn get_many_unchecked_mut<const N: usize>( +

    source

    pub unsafe fn get_many_unchecked_mut<const N: usize>( &mut self, indices: [usize; N] ) -> [&mut T; N]

    🔬This is a nightly-only experimental API. (get_many_mut)

    Returns mutable references to many indices at once, without doing any checks.

    For a safe alternative see get_many_mut.

    -
    Safety
    +
    Safety

    Calling this method with overlapping or out-of-bounds indices is undefined behavior even if the resulting references are not used.

    -
    Examples
    +
    Examples
    #![feature(get_many_mut)]
     
     let x = &mut [1, 2, 4];
    @@ -2197,13 +2258,13 @@ 
    Examples
    *b *= 100; } assert_eq!(x, &[10, 2, 400]);
    -
    source

    pub fn get_many_mut<const N: usize>( +

    source

    pub fn get_many_mut<const N: usize>( &mut self, indices: [usize; N] ) -> Result<[&mut T; N], GetManyMutError<N>>

    🔬This is a nightly-only experimental API. (get_many_mut)

    Returns mutable references to many indices at once.

    Returns an error if any index is out-of-bounds, or if the same index was passed more than once.

    -
    Examples
    +
    Examples
    #![feature(get_many_mut)]
     
     let v = &mut [1, 2, 3];
    @@ -2212,62 +2273,9 @@ 
    Examples
    *b = 612; } assert_eq!(v, &[413, 2, 612]);
    -
    1.23.0 · source

    pub fn is_ascii(&self) -> bool

    Checks if all bytes in this slice are within the ASCII range.

    -
    source

    pub fn as_ascii(&self) -> Option<&[AsciiChar]>

    🔬This is a nightly-only experimental API. (ascii_char)

    If this slice is_ascii, returns it as a slice of -ASCII characters, otherwise returns None.

    -
    source

    pub unsafe fn as_ascii_unchecked(&self) -> &[AsciiChar]

    🔬This is a nightly-only experimental API. (ascii_char)

    Converts this slice of bytes into a slice of ASCII characters, -without checking whether they’re valid.

    -
    Safety
    -

    Every byte in the slice must be in 0..=127, or else this is UB.

    -
    1.23.0 · source

    pub fn eq_ignore_ascii_case(&self, other: &[u8]) -> bool

    Checks that two slices are an ASCII case-insensitive match.

    -

    Same as to_ascii_lowercase(a) == to_ascii_lowercase(b), -but without allocating and copying temporaries.

    -
    1.23.0 · source

    pub fn make_ascii_uppercase(&mut self)

    Converts this slice to its ASCII upper case equivalent in-place.

    -

    ASCII letters ‘a’ to ‘z’ are mapped to ‘A’ to ‘Z’, -but non-ASCII letters are unchanged.

    -

    To return a new uppercased value without modifying the existing one, use -to_ascii_uppercase.

    -
    1.23.0 · source

    pub fn make_ascii_lowercase(&mut self)

    Converts this slice to its ASCII lower case equivalent in-place.

    -

    ASCII letters ‘A’ to ‘Z’ are mapped to ‘a’ to ‘z’, -but non-ASCII letters are unchanged.

    -

    To return a new lowercased value without modifying the existing one, use -to_ascii_lowercase.

    -
    1.60.0 · source

    pub fn escape_ascii(&self) -> EscapeAscii<'_>

    Returns an iterator that produces an escaped version of this slice, -treating it as an ASCII string.

    -
    Examples
    -
    
    -let s = b"0\t\r\n'\"\\\x9d";
    -let escaped = s.escape_ascii().to_string();
    -assert_eq!(escaped, "0\\t\\r\\n\\'\\\"\\\\\\x9d");
    -
    source

    pub fn trim_ascii_start(&self) -> &[u8]

    🔬This is a nightly-only experimental API. (byte_slice_trim_ascii)

    Returns a byte slice with leading ASCII whitespace bytes removed.

    -

    ‘Whitespace’ refers to the definition used by -u8::is_ascii_whitespace.

    -
    Examples
    -
    #![feature(byte_slice_trim_ascii)]
    -
    -assert_eq!(b" \t hello world\n".trim_ascii_start(), b"hello world\n");
    -assert_eq!(b"  ".trim_ascii_start(), b"");
    -assert_eq!(b"".trim_ascii_start(), b"");
    -
    source

    pub fn trim_ascii_end(&self) -> &[u8]

    🔬This is a nightly-only experimental API. (byte_slice_trim_ascii)

    Returns a byte slice with trailing ASCII whitespace bytes removed.

    -

    ‘Whitespace’ refers to the definition used by -u8::is_ascii_whitespace.

    -
    Examples
    -
    #![feature(byte_slice_trim_ascii)]
    -
    -assert_eq!(b"\r hello world\n ".trim_ascii_end(), b"\r hello world");
    -assert_eq!(b"  ".trim_ascii_end(), b"");
    -assert_eq!(b"".trim_ascii_end(), b"");
    -
    source

    pub fn trim_ascii(&self) -> &[u8]

    🔬This is a nightly-only experimental API. (byte_slice_trim_ascii)

    Returns a byte slice with leading and trailing ASCII whitespace bytes -removed.

    -

    ‘Whitespace’ refers to the definition used by -u8::is_ascii_whitespace.

    -
    Examples
    -
    #![feature(byte_slice_trim_ascii)]
    -
    -assert_eq!(b"\r hello world\n ".trim_ascii(), b"hello world");
    -assert_eq!(b"  ".trim_ascii(), b"");
    -assert_eq!(b"".trim_ascii(), b"");
    -
    source

    pub fn sort_floats(&mut self)

    🔬This is a nightly-only experimental API. (sort_floats)

    Sorts the slice of floats.

    +
    source

    pub fn as_str(&self) -> &str

    🔬This is a nightly-only experimental API. (ascii_char)

    Views this slice of ASCII characters as a UTF-8 str.

    +
    source

    pub fn as_bytes(&self) -> &[u8]

    🔬This is a nightly-only experimental API. (ascii_char)

    Views this slice of ASCII characters as a slice of u8 bytes.

    +
    source

    pub fn sort_floats(&mut self)

    🔬This is a nightly-only experimental API. (sort_floats)

    Sorts the slice of floats.

    This sort is in-place (i.e. does not allocate), O(n * log(n)) worst-case, and uses the ordering defined by f64::total_cmp.

    Current implementation
    @@ -2280,6 +2288,16 @@
    Examples
    let sorted = [-f64::INFINITY, -1.0, -5e-8, -0.0, 0.0, 2.6, 8.29, f64::INFINITY, f64::NAN]; assert_eq!(&v[..8], &sorted[..8]); assert!(v[8].is_nan());
    +
    1.23.0 · source

    pub fn to_ascii_uppercase(&self) -> Vec<u8>

    Returns a vector containing a copy of this slice where each byte +is mapped to its ASCII upper case equivalent.

    +

    ASCII letters ‘a’ to ‘z’ are mapped to ‘A’ to ‘Z’, +but non-ASCII letters are unchanged.

    +

    To uppercase the value in-place, use make_ascii_uppercase.

    +
    1.23.0 · source

    pub fn to_ascii_lowercase(&self) -> Vec<u8>

    Returns a vector containing a copy of this slice where each byte +is mapped to its ASCII lower case equivalent.

    +

    ASCII letters ‘A’ to ‘Z’ are mapped to ‘a’ to ‘z’, +but non-ASCII letters are unchanged.

    +

    To lowercase the value in-place, use make_ascii_lowercase.

    1.0.0 · source

    pub fn sort(&mut self)where T: Ord,

    Sorts the slice.

    This sort is stable (i.e., does not reorder equal elements) and O(n * log(n)) worst-case.

    @@ -2434,17 +2452,7 @@
    Examples
    Examples
    assert_eq!(["hello", "world"].connect(" "), "hello world");
     assert_eq!([[1, 2], [3, 4]].connect(&0), [1, 2, 0, 3, 4]);
    -
    1.23.0 · source

    pub fn to_ascii_uppercase(&self) -> Vec<u8>

    Returns a vector containing a copy of this slice where each byte -is mapped to its ASCII upper case equivalent.

    -

    ASCII letters ‘a’ to ‘z’ are mapped to ‘A’ to ‘Z’, -but non-ASCII letters are unchanged.

    -

    To uppercase the value in-place, use make_ascii_uppercase.

    -
    1.23.0 · source

    pub fn to_ascii_lowercase(&self) -> Vec<u8>

    Returns a vector containing a copy of this slice where each byte -is mapped to its ASCII lower case equivalent.

    -

    ASCII letters ‘A’ to ‘Z’ are mapped to ‘a’ to ‘z’, -but non-ASCII letters are unchanged.

    -

    To lowercase the value in-place, use make_ascii_lowercase.

    -

    Trait Implementations§

    source§

    impl<F: Debug + PrimeFieldBits> Debug for RunningSum<F>

    source§

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

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

    impl<F: PrimeFieldBits> Deref for RunningSum<F>

    §

    type Target = Vec<AssignedCell<F, F>>

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Vec<AssignedCell<F, F>>

    Dereferences the value.

    Auto Trait Implementations§

    §

    impl<F> RefUnwindSafe for RunningSum<F>where +

    Trait Implementations§

    source§

    impl<F: Debug + PrimeFieldBits> Debug for RunningSum<F>

    source§

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

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

    impl<F: PrimeFieldBits> Deref for RunningSum<F>

    §

    type Target = Vec<AssignedCell<F, F>>

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Vec<AssignedCell<F, F>>

    Dereferences the value.

    Auto Trait Implementations§

    §

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

    §

    impl<F> Send for RunningSum<F>

    §

    impl<F> Sync for RunningSum<F>

    §

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

    §

    impl<F> UnwindSafe for RunningSum<F>where F: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere @@ -2537,10 +2545,10 @@
    Examples
    T: ?Sized,

    Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
    §

    impl<T> TryConv for T

    §

    fn try_conv<T>(self) -> Result<T, Self::Error>where Self: TryInto<T>,

    Attempts to convert self into T using TryInto<T>. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

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

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

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

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere + U: Into<T>,

    §

    type Error = Infallible

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

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

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

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

    §

    fn vzip(self) -> V

    §

    impl<T> WithSubscriber for T

    §

    fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

    Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
    §

    fn with_current_subscriber(self) -> WithDispatch<Self>

    Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
    §

    impl<T> SyncDeps for Twhere +[WithDispatch] wrapper. Read more
    source§

    impl<T> SyncDeps for Twhere T: Send + Sync,

    \ No newline at end of file diff --git a/halo2_gadgets/utilities/decompose_running_sum/struct.RunningSumConfig.html b/halo2_gadgets/utilities/decompose_running_sum/struct.RunningSumConfig.html index 2fec3ed2d5..3e000080c2 100644 --- a/halo2_gadgets/utilities/decompose_running_sum/struct.RunningSumConfig.html +++ b/halo2_gadgets/utilities/decompose_running_sum/struct.RunningSumConfig.html @@ -1,4 +1,4 @@ -RunningSumConfig in halo2_gadgets::utilities::decompose_running_sum - Rust +RunningSumConfig in halo2_gadgets::utilities::decompose_running_sum - Rust
    pub struct RunningSumConfig<F: PrimeFieldBits, const WINDOW_NUM_BITS: usize> { /* private fields */ }
    Expand description

    Configuration that provides methods for running sum decomposition.

    Implementations§

    source§

    impl<F: PrimeFieldBits, const WINDOW_NUM_BITS: usize> RunningSumConfig<F, WINDOW_NUM_BITS>

    source

    pub fn configure( - meta: &mut ConstraintSystem<F>, - q_range_check: Selector, - z: Column<Advice> + meta: &mut ConstraintSystem<F>, + q_range_check: Selector, + z: Column<Advice> ) -> Self

    perm MUST include the advice column z.

    Panics

    Panics if WINDOW_NUM_BITS > 3.

    @@ -25,24 +25,24 @@
    Side-effects

    z will be equality-enabled.

    source

    pub fn witness_decompose( &self, - region: &mut Region<'_, F>, + region: &mut Region<'_, F>, offset: usize, - alpha: Value<F>, + alpha: Value<F>, strict: bool, word_num_bits: usize, num_windows: usize -) -> Result<RunningSum<F>, Error>

    Decompose a field element alpha that is witnessed in this helper.

    +) -> Result<RunningSum<F>, Error>

    Decompose a field element alpha that is witnessed in this helper.

    strict = true constrains the final running sum to be zero, i.e. constrains alpha to be within WINDOW_NUM_BITS * num_windows bits.

    source

    pub fn copy_decompose( &self, - region: &mut Region<'_, F>, + region: &mut Region<'_, F>, offset: usize, - alpha: AssignedCell<F, F>, + alpha: AssignedCell<F, F>, strict: bool, word_num_bits: usize, num_windows: usize -) -> Result<RunningSum<F>, Error>

    Decompose an existing variable alpha that is copied into this helper.

    +) -> Result<RunningSum<F>, Error>

    Decompose an existing variable alpha that is copied into this helper.

    strict = true constrains the final running sum to be zero, i.e. constrains alpha to be within WINDOW_NUM_BITS * num_windows bits.

    Trait Implementations§

    source§

    impl<F: Clone + PrimeFieldBits, const WINDOW_NUM_BITS: usize> Clone for RunningSumConfig<F, WINDOW_NUM_BITS>

    source§

    fn clone(&self) -> RunningSumConfig<F, WINDOW_NUM_BITS>

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

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

    Performs copy-assignment from source. Read more
    source§

    impl<F: Debug + PrimeFieldBits, const WINDOW_NUM_BITS: usize> Debug for RunningSumConfig<F, WINDOW_NUM_BITS>

    source§

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

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

    impl<F: PartialEq + PrimeFieldBits, const WINDOW_NUM_BITS: usize> PartialEq for RunningSumConfig<F, WINDOW_NUM_BITS>

    source§

    fn eq(&self, other: &RunningSumConfig<F, WINDOW_NUM_BITS>) -> bool

    This method tests for self and other values to be equal, and is used @@ -141,10 +141,10 @@
    Side-effects
    builds.
    source§

    impl<T> ToOwned for Twhere T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    §

    impl<T> TryConv for T

    §

    fn try_conv<T>(self) -> Result<T, Self::Error>where Self: TryInto<T>,

    Attempts to convert self into T using TryInto<T>. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

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

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

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

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere + U: Into<T>,

    §

    type Error = Infallible

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

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

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

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

    §

    fn vzip(self) -> V

    §

    impl<T> WithSubscriber for T

    §

    fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

    Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
    §

    fn with_current_subscriber(self) -> WithDispatch<Self>

    Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
    §

    impl<T> SyncDeps for Twhere +[WithDispatch] wrapper. Read more

    source§

    impl<T> SyncDeps for Twhere T: Send + Sync,

    \ No newline at end of file diff --git a/halo2_gadgets/utilities/fn.bitrange_subset.html b/halo2_gadgets/utilities/fn.bitrange_subset.html index 85745ebe48..fd73abc674 100644 --- a/halo2_gadgets/utilities/fn.bitrange_subset.html +++ b/halo2_gadgets/utilities/fn.bitrange_subset.html @@ -1,4 +1,4 @@ -bitrange_subset in halo2_gadgets::utilities - Rust +bitrange_subset in halo2_gadgets::utilities - Rust +bool_check in halo2_gadgets::utilities - Rust -
    pub fn bool_check<F: PrimeField>(value: Expression<F>) -> Expression<F>
    Expand description

    Checks that an expression is either 1 or 0.

    +
    pub fn bool_check<F: PrimeField>(value: Expression<F>) -> Expression<F>
    Expand description

    Checks that an expression is either 1 or 0.

    \ No newline at end of file diff --git a/halo2_gadgets/utilities/fn.decompose_word.html b/halo2_gadgets/utilities/fn.decompose_word.html index e9190886d9..e7fcc0755a 100644 --- a/halo2_gadgets/utilities/fn.decompose_word.html +++ b/halo2_gadgets/utilities/fn.decompose_word.html @@ -1,4 +1,4 @@ -decompose_word in halo2_gadgets::utilities - Rust +decompose_word in halo2_gadgets::utilities - Rust +i2lebsp in halo2_gadgets::utilities - Rust +lebs2ip in halo2_gadgets::utilities - Rust +range_check in halo2_gadgets::utilities - Rust
    pub fn range_check<F: PrimeField>(
    -    word: Expression<F>,
    +    word: Expression<F>,
         range: usize
    -) -> Expression<F>
    Expand description

    Check that an expression is in the small range [0..range), +) -> Expression<F>

    Expand description

    Check that an expression is in the small range [0..range), i.e. 0 ≤ word < range.

    \ No newline at end of file diff --git a/halo2_gadgets/utilities/fn.ternary.html b/halo2_gadgets/utilities/fn.ternary.html index 30867d083c..eee3ef4737 100644 --- a/halo2_gadgets/utilities/fn.ternary.html +++ b/halo2_gadgets/utilities/fn.ternary.html @@ -1,4 +1,4 @@ -ternary in halo2_gadgets::utilities - Rust +ternary in halo2_gadgets::utilities - Rust
    pub fn ternary<F: Field>(
    -    a: Expression<F>,
    -    b: Expression<F>,
    -    c: Expression<F>
    -) -> Expression<F>
    Expand description

    If a then b, else c. Returns (a * b) + (1 - a) * c.

    + a: Expression<F>, + b: Expression<F>, + c: Expression<F> +) -> Expression<F>
    Expand description

    If a then b, else c. Returns (a * b) + (1 - a) * c.

    a must be a boolean-constrained expression.

    \ No newline at end of file diff --git a/halo2_gadgets/utilities/index.html b/halo2_gadgets/utilities/index.html index 85d5a2527c..5a48ee532d 100644 --- a/halo2_gadgets/utilities/index.html +++ b/halo2_gadgets/utilities/index.html @@ -1,4 +1,4 @@ -halo2_gadgets::utilities - Rust +halo2_gadgets::utilities - Rust +halo2_gadgets::utilities::lookup_range_check - Rust +LookupRangeCheckConfig in halo2_gadgets::utilities::lookup_range_check - Rust
    pub struct LookupRangeCheckConfig<F: PrimeFieldBits, const K: usize> { /* private fields */ }
    Expand description

    Configuration that provides methods for a lookup range check.

    Implementations§

    source§

    impl<F: PrimeFieldBits, const K: usize> LookupRangeCheckConfig<F, K>

    source

    pub fn configure( - meta: &mut ConstraintSystem<F>, - running_sum: Column<Advice>, - table_idx: TableColumn + meta: &mut ConstraintSystem<F>, + running_sum: Column<Advice>, + table_idx: TableColumn ) -> Self

    The running_sum advice column breaks the field element into K-bit words. It is used to construct the input expression to the lookup argument.

    @@ -28,34 +28,34 @@
    Side-effects

    Both the running_sum and constants columns will be equality-enabled.

    source

    pub fn copy_check( &self, - layouter: impl Layouter<F>, - element: AssignedCell<F, F>, + layouter: impl Layouter<F>, + element: AssignedCell<F, F>, num_words: usize, strict: bool -) -> Result<RunningSum<F>, Error>

    Range check on an existing cell that is copied into this helper.

    +) -> Result<RunningSum<F>, Error>

    Range check on an existing cell that is copied into this helper.

    Returns an error if element is not in a column that was passed to -[ConstraintSystem::enable_equality] during circuit configuration.

    +ConstraintSystem::enable_equality during circuit configuration.

    source

    pub fn witness_check( &self, - layouter: impl Layouter<F>, - value: Value<F>, + layouter: impl Layouter<F>, + value: Value<F>, num_words: usize, strict: bool -) -> Result<RunningSum<F>, Error>

    Range check on a value that is witnessed in this helper.

    +) -> Result<RunningSum<F>, Error>

    Range check on a value that is witnessed in this helper.

    source

    pub fn copy_short_check( &self, - layouter: impl Layouter<F>, - element: AssignedCell<F, F>, + layouter: impl Layouter<F>, + element: AssignedCell<F, F>, num_bits: usize -) -> Result<(), Error>

    Short range check on an existing cell that is copied into this helper.

    +) -> Result<(), Error>

    Short range check on an existing cell that is copied into this helper.

    Panics

    Panics if NUM_BITS is equal to or larger than K.

    source

    pub fn witness_short_check( &self, - layouter: impl Layouter<F>, - element: Value<F>, + layouter: impl Layouter<F>, + element: Value<F>, num_bits: usize -) -> Result<AssignedCell<F, F>, Error>

    Short range check on value that is witnessed in this helper.

    +) -> Result<AssignedCell<F, F>, Error>

    Short range check on value that is witnessed in this helper.

    Panics

    Panics if num_bits is larger than K.

    Trait Implementations§

    source§

    impl<F: Clone + PrimeFieldBits, const K: usize> Clone for LookupRangeCheckConfig<F, K>

    source§

    fn clone(&self) -> LookupRangeCheckConfig<F, K>

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

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

    Performs copy-assignment from source. Read more
    source§

    impl<F: Debug + PrimeFieldBits, const K: usize> Debug for LookupRangeCheckConfig<F, K>

    source§

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

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

    impl<F: PartialEq + PrimeFieldBits, const K: usize> PartialEq for LookupRangeCheckConfig<F, K>

    source§

    fn eq(&self, other: &LookupRangeCheckConfig<F, K>) -> bool

    This method tests for self and other values to be equal, and is used @@ -154,10 +154,10 @@
    Panics
    builds.
    source§

    impl<T> ToOwned for Twhere T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    §

    impl<T> TryConv for T

    §

    fn try_conv<T>(self) -> Result<T, Self::Error>where Self: TryInto<T>,

    Attempts to convert self into T using TryInto<T>. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

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

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

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

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere + U: Into<T>,

    §

    type Error = Infallible

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

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

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

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

    §

    fn vzip(self) -> V

    §

    impl<T> WithSubscriber for T

    §

    fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

    Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
    §

    fn with_current_subscriber(self) -> WithDispatch<Self>

    Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
    §

    impl<T> SyncDeps for Twhere +[WithDispatch] wrapper. Read more

    source§

    impl<T> SyncDeps for Twhere T: Send + Sync,

    \ No newline at end of file diff --git a/halo2_gadgets/utilities/lookup_range_check/struct.RunningSum.html b/halo2_gadgets/utilities/lookup_range_check/struct.RunningSum.html index 128e3e6ee3..f009b7058c 100644 --- a/halo2_gadgets/utilities/lookup_range_check/struct.RunningSum.html +++ b/halo2_gadgets/utilities/lookup_range_check/struct.RunningSum.html @@ -1,4 +1,4 @@ -RunningSum in halo2_gadgets::utilities::lookup_range_check - Rust +RunningSum in halo2_gadgets::utilities::lookup_range_check - Rust
    pub struct RunningSum<F: PrimeFieldBits>(/* private fields */);
    Expand description

    The running sum $[z_0, …, z_W]$. If created in strict mode, $z_W = 0$.

    -

    Methods from Deref<Target = Vec<AssignedCell<F, F>>>§

    1.0.0 · source

    pub fn capacity(&self) -> usize

    Returns the total number of elements the vector can hold without +

    Methods from Deref<Target = Vec<AssignedCell<F, F>>>§

    1.0.0 · source

    pub fn capacity(&self) -> usize

    Returns the total number of elements the vector can hold without reallocating.

    Examples
    let mut vec: Vec<i32> = Vec::with_capacity(10);
    @@ -76,15 +76,26 @@ 
    Examples
    v.push(1); assert!(!v.is_empty());
    -

    Methods from Deref<Target = [T]>§

    source

    pub fn as_str(&self) -> &str

    🔬This is a nightly-only experimental API. (ascii_char)

    Views this slice of ASCII characters as a UTF-8 str.

    -
    source

    pub fn as_bytes(&self) -> &[u8]

    🔬This is a nightly-only experimental API. (ascii_char)

    Views this slice of ASCII characters as a slice of u8 bytes.

    -
    source

    pub fn flatten(&self) -> &[T]

    🔬This is a nightly-only experimental API. (slice_flatten)

    Takes a &[[T; N]], and flattens it to a &[T].

    +

    Methods from Deref<Target = [T]>§

    source

    pub fn sort_floats(&mut self)

    🔬This is a nightly-only experimental API. (sort_floats)

    Sorts the slice of floats.

    +

    This sort is in-place (i.e. does not allocate), O(n * log(n)) worst-case, and uses +the ordering defined by f32::total_cmp.

    +
    Current implementation
    +

    This uses the same sorting algorithm as sort_unstable_by.

    +
    Examples
    +
    #![feature(sort_floats)]
    +let mut v = [2.6, -5e-8, f32::NAN, 8.29, f32::INFINITY, -1.0, 0.0, -f32::INFINITY, -0.0];
    +
    +v.sort_floats();
    +let sorted = [-f32::INFINITY, -1.0, -5e-8, -0.0, 0.0, 2.6, 8.29, f32::INFINITY, f32::NAN];
    +assert_eq!(&v[..8], &sorted[..8]);
    +assert!(v[8].is_nan());
    +
    source

    pub fn flatten(&self) -> &[T]

    🔬This is a nightly-only experimental API. (slice_flatten)

    Takes a &[[T; N]], and flattens it to a &[T].

    Panics

    This panics if the length of the resulting slice would overflow a usize.

    This is only possible when flattening a slice of arrays of zero-sized types, and thus tends to be irrelevant in practice. If size_of::<T>() > 0, this will never panic.

    -
    Examples
    +
    Examples
    #![feature(slice_flatten)]
     
     assert_eq!([[1, 2, 3], [4, 5, 6]].flatten(), &[1, 2, 3, 4, 5, 6]);
    @@ -99,13 +110,13 @@ 
    Examples
    let empty_slice_of_arrays: &[[u32; 10]] = &[]; assert!(empty_slice_of_arrays.flatten().is_empty());
    -
    source

    pub fn flatten_mut(&mut self) -> &mut [T]

    🔬This is a nightly-only experimental API. (slice_flatten)

    Takes a &mut [[T; N]], and flattens it to a &mut [T].

    +
    source

    pub fn flatten_mut(&mut self) -> &mut [T]

    🔬This is a nightly-only experimental API. (slice_flatten)

    Takes a &mut [[T; N]], and flattens it to a &mut [T].

    Panics

    This panics if the length of the resulting slice would overflow a usize.

    This is only possible when flattening a slice of arrays of zero-sized types, and thus tends to be irrelevant in practice. If size_of::<T>() > 0, this will never panic.

    -
    Examples
    +
    Examples
    #![feature(slice_flatten)]
     
     fn add_5_to_all(slice: &mut [i32]) {
    @@ -117,36 +128,78 @@ 
    Examples
    let mut array = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; add_5_to_all(array.flatten_mut()); assert_eq!(array, [[6, 7, 8], [9, 10, 11], [12, 13, 14]]);
    -
    source

    pub fn sort_floats(&mut self)

    🔬This is a nightly-only experimental API. (sort_floats)

    Sorts the slice of floats.

    -

    This sort is in-place (i.e. does not allocate), O(n * log(n)) worst-case, and uses -the ordering defined by f32::total_cmp.

    -
    Current implementation
    -

    This uses the same sorting algorithm as sort_unstable_by.

    -
    Examples
    -
    #![feature(sort_floats)]
    -let mut v = [2.6, -5e-8, f32::NAN, 8.29, f32::INFINITY, -1.0, 0.0, -f32::INFINITY, -0.0];
    +
    1.23.0 · source

    pub fn is_ascii(&self) -> bool

    Checks if all bytes in this slice are within the ASCII range.

    +
    source

    pub fn as_ascii(&self) -> Option<&[AsciiChar]>

    🔬This is a nightly-only experimental API. (ascii_char)

    If this slice is_ascii, returns it as a slice of +ASCII characters, otherwise returns None.

    +
    source

    pub unsafe fn as_ascii_unchecked(&self) -> &[AsciiChar]

    🔬This is a nightly-only experimental API. (ascii_char)

    Converts this slice of bytes into a slice of ASCII characters, +without checking whether they’re valid.

    +
    Safety
    +

    Every byte in the slice must be in 0..=127, or else this is UB.

    +
    1.23.0 · source

    pub fn eq_ignore_ascii_case(&self, other: &[u8]) -> bool

    Checks that two slices are an ASCII case-insensitive match.

    +

    Same as to_ascii_lowercase(a) == to_ascii_lowercase(b), +but without allocating and copying temporaries.

    +
    1.23.0 · source

    pub fn make_ascii_uppercase(&mut self)

    Converts this slice to its ASCII upper case equivalent in-place.

    +

    ASCII letters ‘a’ to ‘z’ are mapped to ‘A’ to ‘Z’, +but non-ASCII letters are unchanged.

    +

    To return a new uppercased value without modifying the existing one, use +to_ascii_uppercase.

    +
    1.23.0 · source

    pub fn make_ascii_lowercase(&mut self)

    Converts this slice to its ASCII lower case equivalent in-place.

    +

    ASCII letters ‘A’ to ‘Z’ are mapped to ‘a’ to ‘z’, +but non-ASCII letters are unchanged.

    +

    To return a new lowercased value without modifying the existing one, use +to_ascii_lowercase.

    +
    1.60.0 · source

    pub fn escape_ascii(&self) -> EscapeAscii<'_>

    Returns an iterator that produces an escaped version of this slice, +treating it as an ASCII string.

    +
    Examples
    +
    
    +let s = b"0\t\r\n'\"\\\x9d";
    +let escaped = s.escape_ascii().to_string();
    +assert_eq!(escaped, "0\\t\\r\\n\\'\\\"\\\\\\x9d");
    +
    source

    pub fn trim_ascii_start(&self) -> &[u8]

    🔬This is a nightly-only experimental API. (byte_slice_trim_ascii)

    Returns a byte slice with leading ASCII whitespace bytes removed.

    +

    ‘Whitespace’ refers to the definition used by +u8::is_ascii_whitespace.

    +
    Examples
    +
    #![feature(byte_slice_trim_ascii)]
     
    -v.sort_floats();
    -let sorted = [-f32::INFINITY, -1.0, -5e-8, -0.0, 0.0, 2.6, 8.29, f32::INFINITY, f32::NAN];
    -assert_eq!(&v[..8], &sorted[..8]);
    -assert!(v[8].is_nan());
    +assert_eq!(b" \t hello world\n".trim_ascii_start(), b"hello world\n"); +assert_eq!(b" ".trim_ascii_start(), b""); +assert_eq!(b"".trim_ascii_start(), b"");
    +
    source

    pub fn trim_ascii_end(&self) -> &[u8]

    🔬This is a nightly-only experimental API. (byte_slice_trim_ascii)

    Returns a byte slice with trailing ASCII whitespace bytes removed.

    +

    ‘Whitespace’ refers to the definition used by +u8::is_ascii_whitespace.

    +
    Examples
    +
    #![feature(byte_slice_trim_ascii)]
    +
    +assert_eq!(b"\r hello world\n ".trim_ascii_end(), b"\r hello world");
    +assert_eq!(b"  ".trim_ascii_end(), b"");
    +assert_eq!(b"".trim_ascii_end(), b"");
    +
    source

    pub fn trim_ascii(&self) -> &[u8]

    🔬This is a nightly-only experimental API. (byte_slice_trim_ascii)

    Returns a byte slice with leading and trailing ASCII whitespace bytes +removed.

    +

    ‘Whitespace’ refers to the definition used by +u8::is_ascii_whitespace.

    +
    Examples
    +
    #![feature(byte_slice_trim_ascii)]
    +
    +assert_eq!(b"\r hello world\n ".trim_ascii(), b"hello world");
    +assert_eq!(b"  ".trim_ascii(), b"");
    +assert_eq!(b"".trim_ascii(), b"");
    1.0.0 · source

    pub fn len(&self) -> usize

    Returns the number of elements in the slice.

    -
    Examples
    +
    Examples
    let a = [1, 2, 3];
     assert_eq!(a.len(), 3);
    1.0.0 · source

    pub fn is_empty(&self) -> bool

    Returns true if the slice has a length of 0.

    -
    Examples
    +
    Examples
    let a = [1, 2, 3];
     assert!(!a.is_empty());
    1.0.0 · source

    pub fn first(&self) -> Option<&T>

    Returns the first element of the slice, or None if it is empty.

    -
    Examples
    +
    Examples
    let v = [10, 40, 30];
     assert_eq!(Some(&10), v.first());
     
     let w: &[i32] = &[];
     assert_eq!(None, w.first());
    1.0.0 · source

    pub fn first_mut(&mut self) -> Option<&mut T>

    Returns a mutable pointer to the first element of the slice, or None if it is empty.

    -
    Examples
    +
    Examples
    let x = &mut [0, 1, 2];
     
     if let Some(first) = x.first_mut() {
    @@ -154,7 +207,7 @@ 
    Examples
    } assert_eq!(x, &[5, 1, 2]);
    1.5.0 · source

    pub fn split_first(&self) -> Option<(&T, &[T])>

    Returns the first and all the rest of the elements of the slice, or None if it is empty.

    -
    Examples
    +
    Examples
    let x = &[0, 1, 2];
     
     if let Some((first, elements)) = x.split_first() {
    @@ -162,7 +215,7 @@ 
    Examples
    assert_eq!(elements, &[1, 2]); }
    1.5.0 · source

    pub fn split_first_mut(&mut self) -> Option<(&mut T, &mut [T])>

    Returns the first and all the rest of the elements of the slice, or None if it is empty.

    -
    Examples
    +
    Examples
    let x = &mut [0, 1, 2];
     
     if let Some((first, elements)) = x.split_first_mut() {
    @@ -172,7 +225,7 @@ 
    Examples
    } assert_eq!(x, &[3, 4, 5]);
    1.5.0 · source

    pub fn split_last(&self) -> Option<(&T, &[T])>

    Returns the last and all the rest of the elements of the slice, or None if it is empty.

    -
    Examples
    +
    Examples
    let x = &[0, 1, 2];
     
     if let Some((last, elements)) = x.split_last() {
    @@ -180,7 +233,7 @@ 
    Examples
    assert_eq!(elements, &[0, 1]); }
    1.5.0 · source

    pub fn split_last_mut(&mut self) -> Option<(&mut T, &mut [T])>

    Returns the last and all the rest of the elements of the slice, or None if it is empty.

    -
    Examples
    +
    Examples
    let x = &mut [0, 1, 2];
     
     if let Some((last, elements)) = x.split_last_mut() {
    @@ -190,14 +243,14 @@ 
    Examples
    } assert_eq!(x, &[4, 5, 3]);
    1.0.0 · source

    pub fn last(&self) -> Option<&T>

    Returns the last element of the slice, or None if it is empty.

    -
    Examples
    +
    Examples
    let v = [10, 40, 30];
     assert_eq!(Some(&30), v.last());
     
     let w: &[i32] = &[];
     assert_eq!(None, w.last());
    1.0.0 · source

    pub fn last_mut(&mut self) -> Option<&mut T>

    Returns a mutable pointer to the last item in the slice.

    -
    Examples
    +
    Examples
    let x = &mut [0, 1, 2];
     
     if let Some(last) = x.last_mut() {
    @@ -205,7 +258,7 @@ 
    Examples
    } assert_eq!(x, &[0, 1, 10]);
    source

    pub fn first_chunk<const N: usize>(&self) -> Option<&[T; N]>

    🔬This is a nightly-only experimental API. (slice_first_last_chunk)

    Returns the first N elements of the slice, or None if it has fewer than N elements.

    -
    Examples
    +
    Examples
    #![feature(slice_first_last_chunk)]
     
     let u = [10, 40, 30];
    @@ -218,7 +271,7 @@ 
    Examples
    assert_eq!(Some(&[]), w.first_chunk::<0>());
    source

    pub fn first_chunk_mut<const N: usize>(&mut self) -> Option<&mut [T; N]>

    🔬This is a nightly-only experimental API. (slice_first_last_chunk)

    Returns a mutable reference to the first N elements of the slice, or None if it has fewer than N elements.

    -
    Examples
    +
    Examples
    #![feature(slice_first_last_chunk)]
     
     let x = &mut [0, 1, 2];
    @@ -230,7 +283,7 @@ 
    Examples
    assert_eq!(x, &[5, 4, 2]);
    source

    pub fn split_first_chunk<const N: usize>(&self) -> Option<(&[T; N], &[T])>

    🔬This is a nightly-only experimental API. (slice_first_last_chunk)

    Returns the first N elements of the slice and the remainder, or None if it has fewer than N elements.

    -
    Examples
    +
    Examples
    #![feature(slice_first_last_chunk)]
     
     let x = &[0, 1, 2];
    @@ -243,7 +296,7 @@ 
    Examples
    &mut self ) -> Option<(&mut [T; N], &mut [T])>
    🔬This is a nightly-only experimental API. (slice_first_last_chunk)

    Returns a mutable reference to the first N elements of the slice and the remainder, or None if it has fewer than N elements.

    -
    Examples
    +
    Examples
    #![feature(slice_first_last_chunk)]
     
     let x = &mut [0, 1, 2];
    @@ -256,7 +309,7 @@ 
    Examples
    assert_eq!(x, &[3, 4, 5]);
    source

    pub fn split_last_chunk<const N: usize>(&self) -> Option<(&[T; N], &[T])>

    🔬This is a nightly-only experimental API. (slice_first_last_chunk)

    Returns the last N elements of the slice and the remainder, or None if it has fewer than N elements.

    -
    Examples
    +
    Examples
    #![feature(slice_first_last_chunk)]
     
     let x = &[0, 1, 2];
    @@ -268,7 +321,7 @@ 
    Examples
    source

    pub fn split_last_chunk_mut<const N: usize>( &mut self ) -> Option<(&mut [T; N], &mut [T])>

    🔬This is a nightly-only experimental API. (slice_first_last_chunk)

    Returns the last and all the rest of the elements of the slice, or None if it is empty.

    -
    Examples
    +
    Examples
    #![feature(slice_first_last_chunk)]
     
     let x = &mut [0, 1, 2];
    @@ -280,7 +333,7 @@ 
    Examples
    } assert_eq!(x, &[5, 3, 4]);
    source

    pub fn last_chunk<const N: usize>(&self) -> Option<&[T; N]>

    🔬This is a nightly-only experimental API. (slice_first_last_chunk)

    Returns the last element of the slice, or None if it is empty.

    -
    Examples
    +
    Examples
    #![feature(slice_first_last_chunk)]
     
     let u = [10, 40, 30];
    @@ -292,7 +345,7 @@ 
    Examples
    let w: &[i32] = &[]; assert_eq!(Some(&[]), w.last_chunk::<0>());
    source

    pub fn last_chunk_mut<const N: usize>(&mut self) -> Option<&mut [T; N]>

    🔬This is a nightly-only experimental API. (slice_first_last_chunk)

    Returns a mutable pointer to the last item in the slice.

    -
    Examples
    +
    Examples
    #![feature(slice_first_last_chunk)]
     
     let x = &mut [0, 1, 2];
    @@ -311,7 +364,7 @@ 
    Examples
  • If given a range, returns the subslice corresponding to that range, or None if out of bounds.
  • -
    Examples
    +
    Examples
    let v = [10, 40, 30];
     assert_eq!(Some(&40), v.get(1));
     assert_eq!(Some(&[10, 40][..]), v.get(0..2));
    @@ -323,40 +376,48 @@ 
    Examples
    ) -> Option<&mut <I as SliceIndex<[T]>>::Output>where I: SliceIndex<[T]>,

    Returns a mutable reference to an element or subslice depending on the type of index (see get) or None if the index is out of bounds.

    -
    Examples
    +
    Examples
    let x = &mut [0, 1, 2];
     
     if let Some(elem) = x.get_mut(1) {
         *elem = 42;
     }
     assert_eq!(x, &[0, 42, 2]);
    -
    1.0.0 · source

    pub unsafe fn get_unchecked<I>( +

    1.0.0 · source

    pub unsafe fn get_unchecked<I>( &self, index: I ) -> &<I as SliceIndex<[T]>>::Outputwhere I: SliceIndex<[T]>,

    Returns a reference to an element or subslice, without doing bounds checking.

    For a safe alternative see get.

    -
    Safety
    +
    Safety

    Calling this method with an out-of-bounds index is undefined behavior even if the resulting reference is not used.

    -
    Examples
    +

    You can think of this like .get(index).unwrap_unchecked(). It’s UB +to call .get_unchecked(len), even if you immediately convert to a +pointer. And it’s UB to call .get_unchecked(..len + 1), +.get_unchecked(..=len), or similar.

    +
    Examples
    let x = &[1, 2, 4];
     
     unsafe {
         assert_eq!(x.get_unchecked(1), &2);
     }
    -
    1.0.0 · source

    pub unsafe fn get_unchecked_mut<I>( +

    1.0.0 · source

    pub unsafe fn get_unchecked_mut<I>( &mut self, index: I ) -> &mut <I as SliceIndex<[T]>>::Outputwhere I: SliceIndex<[T]>,

    Returns a mutable reference to an element or subslice, without doing bounds checking.

    For a safe alternative see get_mut.

    -
    Safety
    +
    Safety

    Calling this method with an out-of-bounds index is undefined behavior even if the resulting reference is not used.

    -
    Examples
    +

    You can think of this like .get_mut(index).unwrap_unchecked(). It’s +UB to call .get_unchecked_mut(len), even if you immediately convert +to a pointer. And it’s UB to call .get_unchecked_mut(..len + 1), +.get_unchecked_mut(..=len), or similar.

    +
    Examples
    let x = &mut [1, 2, 4];
     
     unsafe {
    @@ -364,7 +425,7 @@ 
    Examples
    *elem = 13; } assert_eq!(x, &[1, 13, 4]);
    -
    1.0.0 · source

    pub fn as_ptr(&self) -> *const T

    Returns a raw pointer to the slice’s buffer.

    +
    1.0.0 · source

    pub fn as_ptr(&self) -> *const T

    Returns a raw pointer to the slice’s buffer.

    The caller must ensure that the slice outlives the pointer this function returns, or else it will end up pointing to garbage.

    The caller must also ensure that the memory the pointer (non-transitively) points to @@ -372,7 +433,7 @@

    Examples
    derived from it. If you need to mutate the contents of the slice, use as_mut_ptr.

    Modifying the container referenced by this slice may cause its buffer to be reallocated, which would also make any pointers to it invalid.

    -
    Examples
    +
    Examples
    let x = &[1, 2, 4];
     let x_ptr = x.as_ptr();
     
    @@ -381,12 +442,12 @@ 
    Examples
    assert_eq!(x.get_unchecked(i), &*x_ptr.add(i)); } }
    -
    1.0.0 · source

    pub fn as_mut_ptr(&mut self) -> *mut T

    Returns an unsafe mutable pointer to the slice’s buffer.

    +
    1.0.0 · source

    pub fn as_mut_ptr(&mut self) -> *mut T

    Returns an unsafe mutable pointer to the slice’s buffer.

    The caller must ensure that the slice outlives the pointer this function returns, or else it will end up pointing to garbage.

    Modifying the container referenced by this slice may cause its buffer to be reallocated, which would also make any pointers to it invalid.

    -
    Examples
    +
    Examples
    let x = &mut [1, 2, 4];
     let x_ptr = x.as_mut_ptr();
     
    @@ -396,7 +457,7 @@ 
    Examples
    } } assert_eq!(x, &[3, 4, 6]);
    -
    1.48.0 · source

    pub fn as_ptr_range(&self) -> Range<*const T>

    Returns the two raw pointers spanning the slice.

    +
    1.48.0 · source

    pub fn as_ptr_range(&self) -> Range<*const T>

    Returns the two raw pointers spanning the slice.

    The returned range is half-open, which means that the end pointer points one past the last element of the slice. This way, an empty slice is represented by two equal pointers, and the difference between @@ -416,7 +477,7 @@

    Examples
    assert!(a.as_ptr_range().contains(&x)); assert!(!a.as_ptr_range().contains(&y));
    -
    1.48.0 · source

    pub fn as_mut_ptr_range(&mut self) -> Range<*mut T>

    Returns the two unsafe mutable pointers spanning the slice.

    +
    1.48.0 · source

    pub fn as_mut_ptr_range(&mut self) -> Range<*mut T>

    Returns the two unsafe mutable pointers spanning the slice.

    The returned range is half-open, which means that the end pointer points one past the last element of the slice. This way, an empty slice is represented by two equal pointers, and the difference between @@ -427,7 +488,7 @@

    Examples

    This function is useful for interacting with foreign interfaces which use two pointers to refer to a range of elements in memory, as is common in C++.

    -
    1.0.0 · source

    pub fn swap(&mut self, a: usize, b: usize)

    Swaps two elements in the slice.

    +
    1.0.0 · source

    pub fn swap(&mut self, a: usize, b: usize)

    Swaps two elements in the slice.

    If a equals to b, it’s guaranteed that elements won’t change value.

    Arguments
    Panics

    Panics if a or b are out of bounds.

    -
    Examples
    +
    Examples
    let mut v = ["a", "b", "c", "d", "e"];
     v.swap(2, 4);
     assert!(v == ["a", "b", "e", "d", "c"]);
    -
    source

    pub unsafe fn swap_unchecked(&mut self, a: usize, b: usize)

    🔬This is a nightly-only experimental API. (slice_swap_unchecked)

    Swaps two elements in the slice, without doing bounds checking.

    +
    source

    pub unsafe fn swap_unchecked(&mut self, a: usize, b: usize)

    🔬This is a nightly-only experimental API. (slice_swap_unchecked)

    Swaps two elements in the slice, without doing bounds checking.

    For a safe alternative see swap.

    Arguments
    • a - The index of the first element
    • b - The index of the second element
    -
    Safety
    +
    Safety

    Calling this method with an out-of-bounds index is undefined behavior. The caller has to ensure that a < self.len() and b < self.len().

    -
    Examples
    +
    Examples
    #![feature(slice_swap_unchecked)]
     
     let mut v = ["a", "b", "c", "d"];
     // SAFETY: we know that 1 and 3 are both indices of the slice
     unsafe { v.swap_unchecked(1, 3) };
     assert!(v == ["a", "d", "c", "b"]);
    -
    1.0.0 · source

    pub fn reverse(&mut self)

    Reverses the order of elements in the slice, in place.

    -
    Examples
    +
    1.0.0 · source

    pub fn reverse(&mut self)

    Reverses the order of elements in the slice, in place.

    +
    Examples
    let mut v = [1, 2, 3];
     v.reverse();
     assert!(v == [3, 2, 1]);
    -
    1.0.0 · source

    pub fn iter(&self) -> Iter<'_, T>

    Returns an iterator over the slice.

    +
    1.0.0 · source

    pub fn iter(&self) -> Iter<'_, T>

    Returns an iterator over the slice.

    The iterator yields all items from start to end.

    -
    Examples
    +
    Examples
    let x = &[1, 2, 4];
     let mut iterator = x.iter();
     
    @@ -472,20 +533,20 @@ 
    Examples
    assert_eq!(iterator.next(), Some(&2)); assert_eq!(iterator.next(), Some(&4)); assert_eq!(iterator.next(), None);
    -
    1.0.0 · source

    pub fn iter_mut(&mut self) -> IterMut<'_, T>

    Returns an iterator that allows modifying each value.

    +
    1.0.0 · source

    pub fn iter_mut(&mut self) -> IterMut<'_, T>

    Returns an iterator that allows modifying each value.

    The iterator yields all items from start to end.

    -
    Examples
    +
    Examples
    let x = &mut [1, 2, 4];
     for elem in x.iter_mut() {
         *elem += 2;
     }
     assert_eq!(x, &[3, 4, 6]);
    -
    1.0.0 · source

    pub fn windows(&self, size: usize) -> Windows<'_, T>

    Returns an iterator over all contiguous windows of length +

    1.0.0 · source

    pub fn windows(&self, size: usize) -> Windows<'_, T>

    Returns an iterator over all contiguous windows of length size. The windows overlap. If the slice is shorter than size, the iterator returns no values.

    Panics

    Panics if size is 0.

    -
    Examples
    +
    Examples
    let slice = ['r', 'u', 's', 't'];
     let mut iter = slice.windows(2);
     assert_eq!(iter.next().unwrap(), &['r', 'u']);
    @@ -511,7 +572,7 @@ 
    Examples
    Cell::swap(&w[0], &w[2]); } assert_eq!(array, ['s', 't', ' ', '2', '0', '1', '5', 'u', 'R']);
    -
    1.0.0 · source

    pub fn chunks(&self, chunk_size: usize) -> Chunks<'_, T>

    Returns an iterator over chunk_size elements of the slice at a time, starting at the +

    1.0.0 · source

    pub fn chunks(&self, chunk_size: usize) -> Chunks<'_, T>

    Returns an iterator over chunk_size elements of the slice at a time, starting at the beginning of the slice.

    The chunks are slices and do not overlap. If chunk_size does not divide the length of the slice, then the last chunk will not have length chunk_size.

    @@ -520,14 +581,14 @@
    Examples
    slice.

    Panics

    Panics if chunk_size is 0.

    -
    Examples
    +
    Examples
    let slice = ['l', 'o', 'r', 'e', 'm'];
     let mut iter = slice.chunks(2);
     assert_eq!(iter.next().unwrap(), &['l', 'o']);
     assert_eq!(iter.next().unwrap(), &['r', 'e']);
     assert_eq!(iter.next().unwrap(), &['m']);
     assert!(iter.next().is_none());
    -
    1.0.0 · source

    pub fn chunks_mut(&mut self, chunk_size: usize) -> ChunksMut<'_, T>

    Returns an iterator over chunk_size elements of the slice at a time, starting at the +

    1.0.0 · source

    pub fn chunks_mut(&mut self, chunk_size: usize) -> ChunksMut<'_, T>

    Returns an iterator over chunk_size elements of the slice at a time, starting at the beginning of the slice.

    The chunks are mutable slices, and do not overlap. If chunk_size does not divide the length of the slice, then the last chunk will not have length chunk_size.

    @@ -536,7 +597,7 @@
    Examples
    the end of the slice.

    Panics

    Panics if chunk_size is 0.

    -
    Examples
    +
    Examples
    let v = &mut [0, 0, 0, 0, 0];
     let mut count = 1;
     
    @@ -547,7 +608,7 @@ 
    Examples
    count += 1; } assert_eq!(v, &[1, 1, 2, 2, 3]);
    -
    1.31.0 · source

    pub fn chunks_exact(&self, chunk_size: usize) -> ChunksExact<'_, T>

    Returns an iterator over chunk_size elements of the slice at a time, starting at the +

    1.31.0 · source

    pub fn chunks_exact(&self, chunk_size: usize) -> ChunksExact<'_, T>

    Returns an iterator over chunk_size elements of the slice at a time, starting at the beginning of the slice.

    The chunks are slices and do not overlap. If chunk_size does not divide the length of the slice, then the last up to chunk_size-1 elements will be omitted and can be retrieved @@ -558,14 +619,14 @@

    Examples
    chunk, and rchunks_exact for the same iterator but starting at the end of the slice.

    Panics

    Panics if chunk_size is 0.

    -
    Examples
    +
    Examples
    let slice = ['l', 'o', 'r', 'e', 'm'];
     let mut iter = slice.chunks_exact(2);
     assert_eq!(iter.next().unwrap(), &['l', 'o']);
     assert_eq!(iter.next().unwrap(), &['r', 'e']);
     assert!(iter.next().is_none());
     assert_eq!(iter.remainder(), &['m']);
    -
    1.31.0 · source

    pub fn chunks_exact_mut(&mut self, chunk_size: usize) -> ChunksExactMut<'_, T>

    Returns an iterator over chunk_size elements of the slice at a time, starting at the +

    1.31.0 · source

    pub fn chunks_exact_mut(&mut self, chunk_size: usize) -> ChunksExactMut<'_, T>

    Returns an iterator over chunk_size elements of the slice at a time, starting at the beginning of the slice.

    The chunks are mutable slices, and do not overlap. If chunk_size does not divide the length of the slice, then the last up to chunk_size-1 elements will be omitted and can be @@ -577,7 +638,7 @@

    Examples
    the slice.

    Panics

    Panics if chunk_size is 0.

    -
    Examples
    +
    Examples
    let v = &mut [0, 0, 0, 0, 0];
     let mut count = 1;
     
    @@ -588,15 +649,15 @@ 
    Examples
    count += 1; } assert_eq!(v, &[1, 1, 2, 2, 0]);
    -
    source

    pub unsafe fn as_chunks_unchecked<const N: usize>(&self) -> &[[T; N]]

    🔬This is a nightly-only experimental API. (slice_as_chunks)

    Splits the slice into a slice of N-element arrays, +

    source

    pub unsafe fn as_chunks_unchecked<const N: usize>(&self) -> &[[T; N]]

    🔬This is a nightly-only experimental API. (slice_as_chunks)

    Splits the slice into a slice of N-element arrays, assuming that there’s no remainder.

    -
    Safety
    +
    Safety

    This may only be called when

    • The slice splits exactly into N-element chunks (aka self.len() % N == 0).
    • N != 0.
    -
    Examples
    +
    Examples
    #![feature(slice_as_chunks)]
     let slice: &[char] = &['l', 'o', 'r', 'e', 'm', '!'];
     let chunks: &[[char; 1]] =
    @@ -611,13 +672,13 @@ 
    Examples
    // These would be unsound: // let chunks: &[[_; 5]] = slice.as_chunks_unchecked() // The slice length is not a multiple of 5 // let chunks: &[[_; 0]] = slice.as_chunks_unchecked() // Zero-length chunks are never allowed
    -
    source

    pub fn as_chunks<const N: usize>(&self) -> (&[[T; N]], &[T])

    🔬This is a nightly-only experimental API. (slice_as_chunks)

    Splits the slice into a slice of N-element arrays, +

    source

    pub fn as_chunks<const N: usize>(&self) -> (&[[T; N]], &[T])

    🔬This is a nightly-only experimental API. (slice_as_chunks)

    Splits the slice into a slice of N-element arrays, starting at the beginning of the slice, and a remainder slice with length strictly less than N.

    Panics

    Panics if N is 0. This check will most probably get changed to a compile time error before this method gets stabilized.

    -
    Examples
    +
    Examples
    #![feature(slice_as_chunks)]
     let slice = ['l', 'o', 'r', 'e', 'm'];
     let (chunks, remainder) = slice.as_chunks();
    @@ -632,19 +693,19 @@ 
    Examples
    panic!("slice didn't have even length") }; assert_eq!(chunks, &[['R', 'u'], ['s', 't']]);
    -
    source

    pub fn as_rchunks<const N: usize>(&self) -> (&[T], &[[T; N]])

    🔬This is a nightly-only experimental API. (slice_as_chunks)

    Splits the slice into a slice of N-element arrays, +

    source

    pub fn as_rchunks<const N: usize>(&self) -> (&[T], &[[T; N]])

    🔬This is a nightly-only experimental API. (slice_as_chunks)

    Splits the slice into a slice of N-element arrays, starting at the end of the slice, and a remainder slice with length strictly less than N.

    Panics

    Panics if N is 0. This check will most probably get changed to a compile time error before this method gets stabilized.

    -
    Examples
    +
    Examples
    #![feature(slice_as_chunks)]
     let slice = ['l', 'o', 'r', 'e', 'm'];
     let (remainder, chunks) = slice.as_rchunks();
     assert_eq!(remainder, &['l']);
     assert_eq!(chunks, &[['o', 'r'], ['e', 'm']]);
    -
    source

    pub fn array_chunks<const N: usize>(&self) -> ArrayChunks<'_, T, N>

    🔬This is a nightly-only experimental API. (array_chunks)

    Returns an iterator over N elements of the slice at a time, starting at the +

    source

    pub fn array_chunks<const N: usize>(&self) -> ArrayChunks<'_, T, N>

    🔬This is a nightly-only experimental API. (array_chunks)

    Returns an iterator over N elements of the slice at a time, starting at the beginning of the slice.

    The chunks are array references and do not overlap. If N does not divide the length of the slice, then the last up to N-1 elements will be omitted and can be @@ -653,7 +714,7 @@

    Examples
    Panics

    Panics if N is 0. This check will most probably get changed to a compile time error before this method gets stabilized.

    -
    Examples
    +
    Examples
    #![feature(array_chunks)]
     let slice = ['l', 'o', 'r', 'e', 'm'];
     let mut iter = slice.array_chunks();
    @@ -661,17 +722,17 @@ 
    Examples
    assert_eq!(iter.next().unwrap(), &['r', 'e']); assert!(iter.next().is_none()); assert_eq!(iter.remainder(), &['m']);
    -
    source

    pub unsafe fn as_chunks_unchecked_mut<const N: usize>( +

    source

    pub unsafe fn as_chunks_unchecked_mut<const N: usize>( &mut self ) -> &mut [[T; N]]

    🔬This is a nightly-only experimental API. (slice_as_chunks)

    Splits the slice into a slice of N-element arrays, assuming that there’s no remainder.

    -
    Safety
    +
    Safety

    This may only be called when

    • The slice splits exactly into N-element chunks (aka self.len() % N == 0).
    • N != 0.
    -
    Examples
    +
    Examples
    #![feature(slice_as_chunks)]
     let slice: &mut [char] = &mut ['l', 'o', 'r', 'e', 'm', '!'];
     let chunks: &mut [[char; 1]] =
    @@ -688,13 +749,13 @@ 
    Examples
    // These would be unsound: // let chunks: &[[_; 5]] = slice.as_chunks_unchecked_mut() // The slice length is not a multiple of 5 // let chunks: &[[_; 0]] = slice.as_chunks_unchecked_mut() // Zero-length chunks are never allowed
    -
    source

    pub fn as_chunks_mut<const N: usize>(&mut self) -> (&mut [[T; N]], &mut [T])

    🔬This is a nightly-only experimental API. (slice_as_chunks)

    Splits the slice into a slice of N-element arrays, +

    source

    pub fn as_chunks_mut<const N: usize>(&mut self) -> (&mut [[T; N]], &mut [T])

    🔬This is a nightly-only experimental API. (slice_as_chunks)

    Splits the slice into a slice of N-element arrays, starting at the beginning of the slice, and a remainder slice with length strictly less than N.

    Panics

    Panics if N is 0. This check will most probably get changed to a compile time error before this method gets stabilized.

    -
    Examples
    +
    Examples
    #![feature(slice_as_chunks)]
     let v = &mut [0, 0, 0, 0, 0];
     let mut count = 1;
    @@ -706,13 +767,13 @@ 
    Examples
    count += 1; } assert_eq!(v, &[1, 1, 2, 2, 9]);
    -
    source

    pub fn as_rchunks_mut<const N: usize>(&mut self) -> (&mut [T], &mut [[T; N]])

    🔬This is a nightly-only experimental API. (slice_as_chunks)

    Splits the slice into a slice of N-element arrays, +

    source

    pub fn as_rchunks_mut<const N: usize>(&mut self) -> (&mut [T], &mut [[T; N]])

    🔬This is a nightly-only experimental API. (slice_as_chunks)

    Splits the slice into a slice of N-element arrays, starting at the end of the slice, and a remainder slice with length strictly less than N.

    Panics

    Panics if N is 0. This check will most probably get changed to a compile time error before this method gets stabilized.

    -
    Examples
    +
    Examples
    #![feature(slice_as_chunks)]
     let v = &mut [0, 0, 0, 0, 0];
     let mut count = 1;
    @@ -724,7 +785,7 @@ 
    Examples
    count += 1; } assert_eq!(v, &[9, 1, 1, 2, 2]);
    -
    source

    pub fn array_chunks_mut<const N: usize>(&mut self) -> ArrayChunksMut<'_, T, N>

    🔬This is a nightly-only experimental API. (array_chunks)

    Returns an iterator over N elements of the slice at a time, starting at the +

    source

    pub fn array_chunks_mut<const N: usize>(&mut self) -> ArrayChunksMut<'_, T, N>

    🔬This is a nightly-only experimental API. (array_chunks)

    Returns an iterator over N elements of the slice at a time, starting at the beginning of the slice.

    The chunks are mutable array references and do not overlap. If N does not divide the length of the slice, then the last up to N-1 elements will be omitted and @@ -733,7 +794,7 @@

    Examples
    Panics

    Panics if N is 0. This check will most probably get changed to a compile time error before this method gets stabilized.

    -
    Examples
    +
    Examples
    #![feature(array_chunks)]
     let v = &mut [0, 0, 0, 0, 0];
     let mut count = 1;
    @@ -743,14 +804,14 @@ 
    Examples
    count += 1; } assert_eq!(v, &[1, 1, 2, 2, 0]);
    -
    source

    pub fn array_windows<const N: usize>(&self) -> ArrayWindows<'_, T, N>

    🔬This is a nightly-only experimental API. (array_windows)

    Returns an iterator over overlapping windows of N elements of a slice, +

    source

    pub fn array_windows<const N: usize>(&self) -> ArrayWindows<'_, T, N>

    🔬This is a nightly-only experimental API. (array_windows)

    Returns an iterator over overlapping windows of N elements of a slice, starting at the beginning of the slice.

    This is the const generic equivalent of windows.

    If N is greater than the size of the slice, it will return no windows.

    Panics

    Panics if N is 0. This check will most probably get changed to a compile time error before this method gets stabilized.

    -
    Examples
    +
    Examples
    #![feature(array_windows)]
     let slice = [0, 1, 2, 3];
     let mut iter = slice.array_windows();
    @@ -758,7 +819,7 @@ 
    Examples
    assert_eq!(iter.next().unwrap(), &[1, 2]); assert_eq!(iter.next().unwrap(), &[2, 3]); assert!(iter.next().is_none());
    -
    1.31.0 · source

    pub fn rchunks(&self, chunk_size: usize) -> RChunks<'_, T>

    Returns an iterator over chunk_size elements of the slice at a time, starting at the end +

    1.31.0 · source

    pub fn rchunks(&self, chunk_size: usize) -> RChunks<'_, T>

    Returns an iterator over chunk_size elements of the slice at a time, starting at the end of the slice.

    The chunks are slices and do not overlap. If chunk_size does not divide the length of the slice, then the last chunk will not have length chunk_size.

    @@ -767,14 +828,14 @@
    Examples
    of the slice.

    Panics

    Panics if chunk_size is 0.

    -
    Examples
    +
    Examples
    let slice = ['l', 'o', 'r', 'e', 'm'];
     let mut iter = slice.rchunks(2);
     assert_eq!(iter.next().unwrap(), &['e', 'm']);
     assert_eq!(iter.next().unwrap(), &['o', 'r']);
     assert_eq!(iter.next().unwrap(), &['l']);
     assert!(iter.next().is_none());
    -
    1.31.0 · source

    pub fn rchunks_mut(&mut self, chunk_size: usize) -> RChunksMut<'_, T>

    Returns an iterator over chunk_size elements of the slice at a time, starting at the end +

    1.31.0 · source

    pub fn rchunks_mut(&mut self, chunk_size: usize) -> RChunksMut<'_, T>

    Returns an iterator over chunk_size elements of the slice at a time, starting at the end of the slice.

    The chunks are mutable slices, and do not overlap. If chunk_size does not divide the length of the slice, then the last chunk will not have length chunk_size.

    @@ -783,7 +844,7 @@
    Examples
    beginning of the slice.

    Panics

    Panics if chunk_size is 0.

    -
    Examples
    +
    Examples
    let v = &mut [0, 0, 0, 0, 0];
     let mut count = 1;
     
    @@ -794,7 +855,7 @@ 
    Examples
    count += 1; } assert_eq!(v, &[3, 2, 2, 1, 1]);
    -
    1.31.0 · source

    pub fn rchunks_exact(&self, chunk_size: usize) -> RChunksExact<'_, T>

    Returns an iterator over chunk_size elements of the slice at a time, starting at the +

    1.31.0 · source

    pub fn rchunks_exact(&self, chunk_size: usize) -> RChunksExact<'_, T>

    Returns an iterator over chunk_size elements of the slice at a time, starting at the end of the slice.

    The chunks are slices and do not overlap. If chunk_size does not divide the length of the slice, then the last up to chunk_size-1 elements will be omitted and can be retrieved @@ -806,14 +867,14 @@

    Examples
    slice.

    Panics

    Panics if chunk_size is 0.

    -
    Examples
    +
    Examples
    let slice = ['l', 'o', 'r', 'e', 'm'];
     let mut iter = slice.rchunks_exact(2);
     assert_eq!(iter.next().unwrap(), &['e', 'm']);
     assert_eq!(iter.next().unwrap(), &['o', 'r']);
     assert!(iter.next().is_none());
     assert_eq!(iter.remainder(), &['l']);
    -
    1.31.0 · source

    pub fn rchunks_exact_mut(&mut self, chunk_size: usize) -> RChunksExactMut<'_, T>

    Returns an iterator over chunk_size elements of the slice at a time, starting at the end +

    1.31.0 · source

    pub fn rchunks_exact_mut(&mut self, chunk_size: usize) -> RChunksExactMut<'_, T>

    Returns an iterator over chunk_size elements of the slice at a time, starting at the end of the slice.

    The chunks are mutable slices, and do not overlap. If chunk_size does not divide the length of the slice, then the last up to chunk_size-1 elements will be omitted and can be @@ -825,7 +886,7 @@

    Examples
    of the slice.

    Panics

    Panics if chunk_size is 0.

    -
    Examples
    +
    Examples
    let v = &mut [0, 0, 0, 0, 0];
     let mut count = 1;
     
    @@ -836,13 +897,13 @@ 
    Examples
    count += 1; } assert_eq!(v, &[0, 2, 2, 1, 1]);
    -
    source

    pub fn group_by<F>(&self, pred: F) -> GroupBy<'_, T, F>where +

    source

    pub fn group_by<F>(&self, pred: F) -> GroupBy<'_, T, F>where F: FnMut(&T, &T) -> bool,

    🔬This is a nightly-only experimental API. (slice_group_by)

    Returns an iterator over the slice producing non-overlapping runs of elements using the predicate to separate them.

    The predicate is called on two elements following themselves, it means the predicate is called on slice[0] and slice[1] then on slice[1] and slice[2] and so on.

    -
    Examples
    +
    Examples
    #![feature(slice_group_by)]
     
     let slice = &[1, 1, 1, 3, 3, 2, 2, 2];
    @@ -865,13 +926,13 @@ 
    Examples
    assert_eq!(iter.next(), Some(&[2, 3][..])); assert_eq!(iter.next(), Some(&[2, 3, 4][..])); assert_eq!(iter.next(), None);
    -
    source

    pub fn group_by_mut<F>(&mut self, pred: F) -> GroupByMut<'_, T, F>where +

    source

    pub fn group_by_mut<F>(&mut self, pred: F) -> GroupByMut<'_, T, F>where F: FnMut(&T, &T) -> bool,

    🔬This is a nightly-only experimental API. (slice_group_by)

    Returns an iterator over the slice producing non-overlapping mutable runs of elements using the predicate to separate them.

    The predicate is called on two elements following themselves, it means the predicate is called on slice[0] and slice[1] then on slice[1] and slice[2] and so on.

    -
    Examples
    +
    Examples
    #![feature(slice_group_by)]
     
     let slice = &mut [1, 1, 1, 3, 3, 2, 2, 2];
    @@ -894,13 +955,13 @@ 
    Examples
    assert_eq!(iter.next(), Some(&mut [2, 3][..])); assert_eq!(iter.next(), Some(&mut [2, 3, 4][..])); assert_eq!(iter.next(), None);
    -
    1.0.0 · source

    pub fn split_at(&self, mid: usize) -> (&[T], &[T])

    Divides one slice into two at an index.

    +
    1.0.0 · source

    pub fn split_at(&self, mid: usize) -> (&[T], &[T])

    Divides one slice into two at an index.

    The first will contain all indices from [0, mid) (excluding the index mid itself) and the second will contain all indices from [mid, len) (excluding the index len itself).

    Panics

    Panics if mid > len.

    -
    Examples
    +
    Examples
    let v = [1, 2, 3, 4, 5, 6];
     
     {
    @@ -920,13 +981,13 @@ 
    Examples
    assert_eq!(left, [1, 2, 3, 4, 5, 6]); assert_eq!(right, []); }
    -
    1.0.0 · source

    pub fn split_at_mut(&mut self, mid: usize) -> (&mut [T], &mut [T])

    Divides one mutable slice into two at an index.

    +
    1.0.0 · source

    pub fn split_at_mut(&mut self, mid: usize) -> (&mut [T], &mut [T])

    Divides one mutable slice into two at an index.

    The first will contain all indices from [0, mid) (excluding the index mid itself) and the second will contain all indices from [mid, len) (excluding the index len itself).

    Panics

    Panics if mid > len.

    -
    Examples
    +
    Examples
    let mut v = [1, 0, 3, 0, 5, 6];
     let (left, right) = v.split_at_mut(2);
     assert_eq!(left, [1, 0]);
    @@ -934,16 +995,16 @@ 
    Examples
    left[1] = 2; right[1] = 4; assert_eq!(v, [1, 2, 3, 4, 5, 6]);
    -
    source

    pub unsafe fn split_at_unchecked(&self, mid: usize) -> (&[T], &[T])

    🔬This is a nightly-only experimental API. (slice_split_at_unchecked)

    Divides one slice into two at an index, without doing bounds checking.

    +
    source

    pub unsafe fn split_at_unchecked(&self, mid: usize) -> (&[T], &[T])

    🔬This is a nightly-only experimental API. (slice_split_at_unchecked)

    Divides one slice into two at an index, without doing bounds checking.

    The first will contain all indices from [0, mid) (excluding the index mid itself) and the second will contain all indices from [mid, len) (excluding the index len itself).

    For a safe alternative see split_at.

    -
    Safety
    +
    Safety

    Calling this method with an out-of-bounds index is undefined behavior even if the resulting reference is not used. The caller has to ensure that 0 <= mid <= self.len().

    -
    Examples
    +
    Examples
    #![feature(slice_split_at_unchecked)]
     
     let v = [1, 2, 3, 4, 5, 6];
    @@ -965,7 +1026,7 @@ 
    Examples
    assert_eq!(left, [1, 2, 3, 4, 5, 6]); assert_eq!(right, []); }
    -
    source

    pub unsafe fn split_at_mut_unchecked( +

    source

    pub unsafe fn split_at_mut_unchecked( &mut self, mid: usize ) -> (&mut [T], &mut [T])

    🔬This is a nightly-only experimental API. (slice_split_at_unchecked)

    Divides one mutable slice into two at an index, without doing bounds checking.

    @@ -973,11 +1034,11 @@
    Examples
    the index mid itself) and the second will contain all indices from [mid, len) (excluding the index len itself).

    For a safe alternative see split_at_mut.

    -
    Safety
    +
    Safety

    Calling this method with an out-of-bounds index is undefined behavior even if the resulting reference is not used. The caller has to ensure that 0 <= mid <= self.len().

    -
    Examples
    +
    Examples
    #![feature(slice_split_at_unchecked)]
     
     let mut v = [1, 0, 3, 0, 5, 6];
    @@ -990,13 +1051,13 @@ 
    Examples
    right[1] = 4; } assert_eq!(v, [1, 2, 3, 4, 5, 6]);
    -
    source

    pub fn split_array_ref<const N: usize>(&self) -> (&[T; N], &[T])

    🔬This is a nightly-only experimental API. (split_array)

    Divides one slice into an array and a remainder slice at an index.

    +
    source

    pub fn split_array_ref<const N: usize>(&self) -> (&[T; N], &[T])

    🔬This is a nightly-only experimental API. (split_array)

    Divides one slice into an array and a remainder slice at an index.

    The array will contain all indices from [0, N) (excluding the index N itself) and the slice will contain all indices from [N, len) (excluding the index len itself).

    Panics

    Panics if N > len.

    -
    Examples
    +
    Examples
    #![feature(split_array)]
     
     let v = &[1, 2, 3, 4, 5, 6][..];
    @@ -1018,13 +1079,13 @@ 
    Examples
    assert_eq!(left, &[1, 2, 3, 4, 5, 6]); assert_eq!(right, []); }
    -
    source

    pub fn split_array_mut<const N: usize>(&mut self) -> (&mut [T; N], &mut [T])

    🔬This is a nightly-only experimental API. (split_array)

    Divides one mutable slice into an array and a remainder slice at an index.

    +
    source

    pub fn split_array_mut<const N: usize>(&mut self) -> (&mut [T; N], &mut [T])

    🔬This is a nightly-only experimental API. (split_array)

    Divides one mutable slice into an array and a remainder slice at an index.

    The array will contain all indices from [0, N) (excluding the index N itself) and the slice will contain all indices from [N, len) (excluding the index len itself).

    Panics

    Panics if N > len.

    -
    Examples
    +
    Examples
    #![feature(split_array)]
     
     let mut v = &mut [1, 0, 3, 0, 5, 6][..];
    @@ -1034,14 +1095,14 @@ 
    Examples
    left[1] = 2; right[1] = 4; assert_eq!(v, [1, 2, 3, 4, 5, 6]);
    -
    source

    pub fn rsplit_array_ref<const N: usize>(&self) -> (&[T], &[T; N])

    🔬This is a nightly-only experimental API. (split_array)

    Divides one slice into an array and a remainder slice at an index from +

    source

    pub fn rsplit_array_ref<const N: usize>(&self) -> (&[T], &[T; N])

    🔬This is a nightly-only experimental API. (split_array)

    Divides one slice into an array and a remainder slice at an index from the end.

    The slice will contain all indices from [0, len - N) (excluding the index len - N itself) and the array will contain all indices from [len - N, len) (excluding the index len itself).

    Panics

    Panics if N > len.

    -
    Examples
    +
    Examples
    #![feature(split_array)]
     
     let v = &[1, 2, 3, 4, 5, 6][..];
    @@ -1063,14 +1124,14 @@ 
    Examples
    assert_eq!(left, []); assert_eq!(right, &[1, 2, 3, 4, 5, 6]); }
    -
    source

    pub fn rsplit_array_mut<const N: usize>(&mut self) -> (&mut [T], &mut [T; N])

    🔬This is a nightly-only experimental API. (split_array)

    Divides one mutable slice into an array and a remainder slice at an +

    source

    pub fn rsplit_array_mut<const N: usize>(&mut self) -> (&mut [T], &mut [T; N])

    🔬This is a nightly-only experimental API. (split_array)

    Divides one mutable slice into an array and a remainder slice at an index from the end.

    The slice will contain all indices from [0, len - N) (excluding the index N itself) and the array will contain all indices from [len - N, len) (excluding the index len itself).

    Panics

    Panics if N > len.

    -
    Examples
    +
    Examples
    #![feature(split_array)]
     
     let mut v = &mut [1, 0, 3, 0, 5, 6][..];
    @@ -1080,10 +1141,10 @@ 
    Examples
    left[1] = 2; right[1] = 4; assert_eq!(v, [1, 2, 3, 4, 5, 6]);
    -
    1.0.0 · source

    pub fn split<F>(&self, pred: F) -> Split<'_, T, F>where +

    1.0.0 · source

    pub fn split<F>(&self, pred: F) -> Split<'_, T, F>where F: FnMut(&T) -> bool,

    Returns an iterator over subslices separated by elements that match pred. The matched element is not contained in the subslices.

    -
    Examples
    +
    Examples
    let slice = [10, 40, 33, 20];
     let mut iter = slice.split(|num| num % 3 == 0);
     
    @@ -1111,21 +1172,21 @@ 
    Examples
    assert_eq!(iter.next().unwrap(), &[]); assert_eq!(iter.next().unwrap(), &[20]); assert!(iter.next().is_none());
    -
    1.0.0 · source

    pub fn split_mut<F>(&mut self, pred: F) -> SplitMut<'_, T, F>where +

    1.0.0 · source

    pub fn split_mut<F>(&mut self, pred: F) -> SplitMut<'_, T, F>where F: FnMut(&T) -> bool,

    Returns an iterator over mutable subslices separated by elements that match pred. The matched element is not contained in the subslices.

    -
    Examples
    +
    Examples
    let mut v = [10, 40, 30, 20, 60, 50];
     
     for group in v.split_mut(|num| *num % 3 == 0) {
         group[0] = 1;
     }
     assert_eq!(v, [1, 40, 30, 1, 60, 1]);
    -
    1.51.0 · source

    pub fn split_inclusive<F>(&self, pred: F) -> SplitInclusive<'_, T, F>where +

    1.51.0 · source

    pub fn split_inclusive<F>(&self, pred: F) -> SplitInclusive<'_, T, F>where F: FnMut(&T) -> bool,

    Returns an iterator over subslices separated by elements that match pred. The matched element is contained in the end of the previous subslice as a terminator.

    -
    Examples
    +
    Examples
    let slice = [10, 40, 33, 20];
     let mut iter = slice.split_inclusive(|num| num % 3 == 0);
     
    @@ -1142,11 +1203,11 @@ 
    Examples
    assert_eq!(iter.next().unwrap(), &[3]); assert_eq!(iter.next().unwrap(), &[10, 40, 33]); assert!(iter.next().is_none());
    -
    1.51.0 · source

    pub fn split_inclusive_mut<F>(&mut self, pred: F) -> SplitInclusiveMut<'_, T, F>where +

    1.51.0 · source

    pub fn split_inclusive_mut<F>(&mut self, pred: F) -> SplitInclusiveMut<'_, T, F>where F: FnMut(&T) -> bool,

    Returns an iterator over mutable subslices separated by elements that match pred. The matched element is contained in the previous subslice as a terminator.

    -
    Examples
    +
    Examples
    let mut v = [10, 40, 30, 20, 60, 50];
     
     for group in v.split_inclusive_mut(|num| *num % 3 == 0) {
    @@ -1154,11 +1215,11 @@ 
    Examples
    group[terminator_idx] = 1; } assert_eq!(v, [10, 40, 1, 20, 1, 1]);
    -
    1.27.0 · source

    pub fn rsplit<F>(&self, pred: F) -> RSplit<'_, T, F>where +

    1.27.0 · source

    pub fn rsplit<F>(&self, pred: F) -> RSplit<'_, T, F>where F: FnMut(&T) -> bool,

    Returns an iterator over subslices separated by elements that match pred, starting at the end of the slice and working backwards. The matched element is not contained in the subslices.

    -
    Examples
    +
    Examples
    let slice = [11, 22, 33, 0, 44, 55];
     let mut iter = slice.rsplit(|num| *num == 0);
     
    @@ -1175,11 +1236,11 @@ 
    Examples
    assert_eq!(it.next().unwrap(), &[1, 1]); assert_eq!(it.next().unwrap(), &[]); assert_eq!(it.next(), None);
    -
    1.27.0 · source

    pub fn rsplit_mut<F>(&mut self, pred: F) -> RSplitMut<'_, T, F>where +

    1.27.0 · source

    pub fn rsplit_mut<F>(&mut self, pred: F) -> RSplitMut<'_, T, F>where F: FnMut(&T) -> bool,

    Returns an iterator over mutable subslices separated by elements that match pred, starting at the end of the slice and working backwards. The matched element is not contained in the subslices.

    -
    Examples
    +
    Examples
    let mut v = [100, 400, 300, 200, 600, 500];
     
     let mut count = 0;
    @@ -1188,13 +1249,13 @@ 
    Examples
    group[0] = count; } assert_eq!(v, [3, 400, 300, 2, 600, 1]);
    -
    1.0.0 · source

    pub fn splitn<F>(&self, n: usize, pred: F) -> SplitN<'_, T, F>where +

    1.0.0 · source

    pub fn splitn<F>(&self, n: usize, pred: F) -> SplitN<'_, T, F>where F: FnMut(&T) -> bool,

    Returns an iterator over subslices separated by elements that match pred, limited to returning at most n items. The matched element is not contained in the subslices.

    The last element returned, if any, will contain the remainder of the slice.

    -
    Examples
    +
    Examples

    Print the slice split once by numbers divisible by 3 (i.e., [10, 40], [20, 60, 50]):

    @@ -1203,27 +1264,27 @@
    Examples
    for group in v.splitn(2, |num| *num % 3 == 0) { println!("{group:?}"); }
    -
    1.0.0 · source

    pub fn splitn_mut<F>(&mut self, n: usize, pred: F) -> SplitNMut<'_, T, F>where +

    1.0.0 · source

    pub fn splitn_mut<F>(&mut self, n: usize, pred: F) -> SplitNMut<'_, T, F>where F: FnMut(&T) -> bool,

    Returns an iterator over mutable subslices separated by elements that match pred, limited to returning at most n items. The matched element is not contained in the subslices.

    The last element returned, if any, will contain the remainder of the slice.

    -
    Examples
    +
    Examples
    let mut v = [10, 40, 30, 20, 60, 50];
     
     for group in v.splitn_mut(2, |num| *num % 3 == 0) {
         group[0] = 1;
     }
     assert_eq!(v, [1, 40, 30, 1, 60, 50]);
    -
    1.0.0 · source

    pub fn rsplitn<F>(&self, n: usize, pred: F) -> RSplitN<'_, T, F>where +

    1.0.0 · source

    pub fn rsplitn<F>(&self, n: usize, pred: F) -> RSplitN<'_, T, F>where F: FnMut(&T) -> bool,

    Returns an iterator over subslices separated by elements that match pred limited to returning at most n items. This starts at the end of the slice and works backwards. The matched element is not contained in the subslices.

    The last element returned, if any, will contain the remainder of the slice.

    -
    Examples
    +
    Examples

    Print the slice split once, starting from the end, by numbers divisible by 3 (i.e., [50], [10, 40, 30, 20]):

    @@ -1232,27 +1293,27 @@
    Examples
    for group in v.rsplitn(2, |num| *num % 3 == 0) { println!("{group:?}"); }
    -
    1.0.0 · source

    pub fn rsplitn_mut<F>(&mut self, n: usize, pred: F) -> RSplitNMut<'_, T, F>where +

    1.0.0 · source

    pub fn rsplitn_mut<F>(&mut self, n: usize, pred: F) -> RSplitNMut<'_, T, F>where F: FnMut(&T) -> bool,

    Returns an iterator over subslices separated by elements that match pred limited to returning at most n items. This starts at the end of the slice and works backwards. The matched element is not contained in the subslices.

    The last element returned, if any, will contain the remainder of the slice.

    -
    Examples
    +
    Examples
    let mut s = [10, 40, 30, 20, 60, 50];
     
     for group in s.rsplitn_mut(2, |num| *num % 3 == 0) {
         group[0] = 1;
     }
     assert_eq!(s, [1, 40, 30, 20, 60, 1]);
    -
    source

    pub fn split_once<F>(&self, pred: F) -> Option<(&[T], &[T])>where +

    source

    pub fn split_once<F>(&self, pred: F) -> Option<(&[T], &[T])>where F: FnMut(&T) -> bool,

    🔬This is a nightly-only experimental API. (slice_split_once)

    Splits the slice on the first element that matches the specified predicate.

    If any matching elements are resent in the slice, returns the prefix before the match and suffix after. The matching element itself is not included. If no elements match, returns None.

    -
    Examples
    +
    Examples
    #![feature(slice_split_once)]
     let s = [1, 2, 3, 2, 4];
     assert_eq!(s.split_once(|&x| x == 2), Some((
    @@ -1260,13 +1321,13 @@ 
    Examples
    &[3, 2, 4][..] ))); assert_eq!(s.split_once(|&x| x == 0), None);
    -
    source

    pub fn rsplit_once<F>(&self, pred: F) -> Option<(&[T], &[T])>where +

    source

    pub fn rsplit_once<F>(&self, pred: F) -> Option<(&[T], &[T])>where F: FnMut(&T) -> bool,

    🔬This is a nightly-only experimental API. (slice_split_once)

    Splits the slice on the last element that matches the specified predicate.

    If any matching elements are resent in the slice, returns the prefix before the match and suffix after. The matching element itself is not included. If no elements match, returns None.

    -
    Examples
    +
    Examples
    #![feature(slice_split_once)]
     let s = [1, 2, 3, 2, 4];
     assert_eq!(s.rsplit_once(|&x| x == 2), Some((
    @@ -1274,11 +1335,11 @@ 
    Examples
    &[4][..] ))); assert_eq!(s.rsplit_once(|&x| x == 0), None);
    -
    1.0.0 · source

    pub fn contains(&self, x: &T) -> boolwhere +

    1.0.0 · source

    pub fn contains(&self, x: &T) -> boolwhere T: PartialEq,

    Returns true if the slice contains an element with the given value.

    This operation is O(n).

    Note that if you have a sorted slice, binary_search may be faster.

    -
    Examples
    +
    Examples
    let v = [10, 40, 30];
     assert!(v.contains(&30));
     assert!(!v.contains(&50));
    @@ -1289,9 +1350,9 @@
    Examples
    let v = [String::from("hello"), String::from("world")]; // slice of `String`
     assert!(v.iter().any(|e| e == "hello")); // search with `&str`
     assert!(!v.iter().any(|e| e == "hi"));
    -
    1.0.0 · source

    pub fn starts_with(&self, needle: &[T]) -> boolwhere +

    1.0.0 · source

    pub fn starts_with(&self, needle: &[T]) -> boolwhere T: PartialEq,

    Returns true if needle is a prefix of the slice.

    -
    Examples
    +
    Examples
    let v = [10, 40, 30];
     assert!(v.starts_with(&[10]));
     assert!(v.starts_with(&[10, 40]));
    @@ -1303,9 +1364,9 @@ 
    Examples
    assert!(v.starts_with(&[])); let v: &[u8] = &[]; assert!(v.starts_with(&[]));
    -
    1.0.0 · source

    pub fn ends_with(&self, needle: &[T]) -> boolwhere +

    1.0.0 · source

    pub fn ends_with(&self, needle: &[T]) -> boolwhere T: PartialEq,

    Returns true if needle is a suffix of the slice.

    -
    Examples
    +
    Examples
    let v = [10, 40, 30];
     assert!(v.ends_with(&[30]));
     assert!(v.ends_with(&[40, 30]));
    @@ -1317,13 +1378,13 @@ 
    Examples
    assert!(v.ends_with(&[])); let v: &[u8] = &[]; assert!(v.ends_with(&[]));
    -
    1.51.0 · source

    pub fn strip_prefix<P>(&self, prefix: &P) -> Option<&[T]>where +

    1.51.0 · source

    pub fn strip_prefix<P>(&self, prefix: &P) -> Option<&[T]>where P: SlicePattern<Item = T> + ?Sized, T: PartialEq,

    Returns a subslice with the prefix removed.

    If the slice starts with prefix, returns the subslice after the prefix, wrapped in Some. If prefix is empty, simply returns the original slice.

    If the slice does not start with prefix, returns None.

    -
    Examples
    +
    Examples
    let v = &[10, 40, 30];
     assert_eq!(v.strip_prefix(&[10]), Some(&[40, 30][..]));
     assert_eq!(v.strip_prefix(&[10, 40]), Some(&[30][..]));
    @@ -1333,19 +1394,19 @@ 
    Examples
    let prefix : &str = "he"; assert_eq!(b"hello".strip_prefix(prefix.as_bytes()), Some(b"llo".as_ref()));
    -
    1.51.0 · source

    pub fn strip_suffix<P>(&self, suffix: &P) -> Option<&[T]>where +

    1.51.0 · source

    pub fn strip_suffix<P>(&self, suffix: &P) -> Option<&[T]>where P: SlicePattern<Item = T> + ?Sized, T: PartialEq,

    Returns a subslice with the suffix removed.

    If the slice ends with suffix, returns the subslice before the suffix, wrapped in Some. If suffix is empty, simply returns the original slice.

    If the slice does not end with suffix, returns None.

    -
    Examples
    +
    Examples
    let v = &[10, 40, 30];
     assert_eq!(v.strip_suffix(&[30]), Some(&[10, 40][..]));
     assert_eq!(v.strip_suffix(&[40, 30]), Some(&[10][..]));
     assert_eq!(v.strip_suffix(&[50]), None);
     assert_eq!(v.strip_suffix(&[50, 30]), None);
    -

    Binary searches this slice for a given element. If the slice is not sorted, the returned result is unspecified and meaningless.

    @@ -1357,7 +1418,7 @@
    Examples
    the index where a matching element could be inserted while maintaining sorted order.

    See also binary_search_by, binary_search_by_key, and partition_point.

    -
    Examples
    +
    Examples

    Looks up a series of four elements. The first is found, with a uniquely determined position; the second and third are not found; the fourth could match any position in [1, 4].

    @@ -1398,7 +1459,7 @@
    Examples
    // The above is equivalent to `let idx = s.binary_search(&num).unwrap_or_else(|x| x);` s.insert(idx, num); assert_eq!(s, [0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 42, 55]);
    -
    1.0.0 · source

    pub fn binary_search_by<'a, F>(&'a self, f: F) -> Result<usize, usize>where +

    1.0.0 · source

    pub fn binary_search_by<'a, F>(&'a self, f: F) -> Result<usize, usize>where F: FnMut(&'a T) -> Ordering,

    Binary searches this slice with a comparator function.

    The comparator function should return an order code that indicates whether its argument is Less, Equal or Greater the desired @@ -1414,7 +1475,7 @@

    Examples
    the index where a matching element could be inserted while maintaining sorted order.

    See also binary_search, binary_search_by_key, and partition_point.

    -
    Examples
    +
    Examples

    Looks up a series of four elements. The first is found, with a uniquely determined position; the second and third are not found; the fourth could match any position in [1, 4].

    @@ -1430,7 +1491,7 @@
    Examples
    let seek = 1; let r = s.binary_search_by(|probe| probe.cmp(&seek)); assert!(match r { Ok(1..=4) => true, _ => false, });
    -
    1.10.0 · source

    pub fn binary_search_by_key<'a, B, F>( +

    1.10.0 · source

    pub fn binary_search_by_key<'a, B, F>( &'a self, b: &B, f: F @@ -1449,7 +1510,7 @@

    Examples
    the index where a matching element could be inserted while maintaining sorted order.

    See also binary_search, binary_search_by, and partition_point.

    -
    Examples
    +
    Examples

    Looks up a series of four elements in a slice of pairs sorted by their second elements. The first is found, with a uniquely determined position; the second and third are not found; the @@ -1464,7 +1525,7 @@

    Examples
    assert_eq!(s.binary_search_by_key(&100, |&(a, b)| b), Err(13)); let r = s.binary_search_by_key(&1, |&(a, b)| b); assert!(match r { Ok(1..=4) => true, _ => false, }); -
    1.20.0 · source

    pub fn sort_unstable(&mut self)where +

    1.20.0 · source

    pub fn sort_unstable(&mut self)where T: Ord,

    Sorts the slice, but might not preserve the order of equal elements.

    This sort is unstable (i.e., may reorder equal elements), in-place (i.e., does not allocate), and O(n * log(n)) worst-case.

    @@ -1476,12 +1537,12 @@
    Current im deterministic behavior.

    It is typically faster than stable sorting, except in a few special cases, e.g., when the slice consists of several concatenated sorted sequences.

    -
    Examples
    +
    Examples
    let mut v = [-5, 4, 1, -3, 2];
     
     v.sort_unstable();
     assert!(v == [-5, -3, 1, 2, 4]);
    -
    1.20.0 · source

    pub fn sort_unstable_by<F>(&mut self, compare: F)where +

    1.20.0 · source

    pub fn sort_unstable_by<F>(&mut self, compare: F)where F: FnMut(&T, &T) -> Ordering,

    Sorts the slice with a comparator function, but might not preserve the order of equal elements.

    This sort is unstable (i.e., may reorder equal elements), in-place @@ -1507,7 +1568,7 @@

    Current im deterministic behavior.

    It is typically faster than stable sorting, except in a few special cases, e.g., when the slice consists of several concatenated sorted sequences.

    -
    Examples
    +
    Examples
    let mut v = [5, 4, 1, 3, 2];
     v.sort_unstable_by(|a, b| a.cmp(b));
     assert!(v == [1, 2, 3, 4, 5]);
    @@ -1515,7 +1576,7 @@ 
    Examples
    // reverse sorting v.sort_unstable_by(|a, b| b.cmp(a)); assert!(v == [5, 4, 3, 2, 1]);
    -
    1.20.0 · source

    pub fn sort_unstable_by_key<K, F>(&mut self, f: F)where +

    1.20.0 · source

    pub fn sort_unstable_by_key<K, F>(&mut self, f: F)where F: FnMut(&T) -> K, K: Ord,

    Sorts the slice with a key extraction function, but might not preserve the order of equal elements.

    @@ -1531,12 +1592,12 @@
    Current im

    Due to its key calling strategy, sort_unstable_by_key is likely to be slower than sort_by_cached_key in cases where the key function is expensive.

    -
    Examples
    +
    Examples
    let mut v = [-5i32, 4, 1, -3, 2];
     
     v.sort_unstable_by_key(|k| k.abs());
     assert!(v == [1, 2, -3, 4, -5]);
    -
    1.49.0 · source

    pub fn select_nth_unstable( +

    1.49.0 · source

    pub fn select_nth_unstable( &mut self, index: usize ) -> (&mut [T], &mut T, &mut [T])where @@ -1556,7 +1617,7 @@
    Current im pivot selection, which guarantees linear runtime for all inputs.

    Panics

    Panics when index >= len(), meaning it always panics on empty slices.

    -
    Examples
    +
    Examples
    let mut v = [-5i32, 4, 1, -3, 2];
     
     // Find the median
    @@ -1568,7 +1629,7 @@ 
    Examples
    v == [-5, -3, 1, 2, 4] || v == [-3, -5, 1, 4, 2] || v == [-5, -3, 1, 4, 2]);
    -

    1.49.0 · source

    pub fn select_nth_unstable_by<F>( +

    1.49.0 · source

    pub fn select_nth_unstable_by<F>( &mut self, index: usize, compare: F @@ -1591,7 +1652,7 @@

    Current im pivot selection, which guarantees linear runtime for all inputs.

    Panics

    Panics when index >= len(), meaning it always panics on empty slices.

    -
    Examples
    +
    Examples
    let mut v = [-5i32, 4, 1, -3, 2];
     
     // Find the median as if the slice were sorted in descending order.
    @@ -1603,7 +1664,7 @@ 
    Examples
    v == [2, 4, 1, -3, -5] || v == [4, 2, 1, -5, -3] || v == [4, 2, 1, -3, -5]);
    -
    1.49.0 · source

    pub fn select_nth_unstable_by_key<K, F>( +

    1.49.0 · source

    pub fn select_nth_unstable_by_key<K, F>( &mut self, index: usize, f: F @@ -1627,7 +1688,7 @@

    Current im pivot selection, which guarantees linear runtime for all inputs.

    Panics

    Panics when index >= len(), meaning it always panics on empty slices.

    -
    Examples
    +
    Examples
    let mut v = [-5i32, 4, 1, -3, 2];
     
     // Return the median as if the array were sorted according to absolute value.
    @@ -1639,13 +1700,13 @@ 
    Examples
    v == [1, 2, -3, -5, 4] || v == [2, 1, -3, 4, -5] || v == [2, 1, -3, -5, 4]);
    -
    source

    pub fn partition_dedup(&mut self) -> (&mut [T], &mut [T])where +

    source

    pub fn partition_dedup(&mut self) -> (&mut [T], &mut [T])where T: PartialEq,

    🔬This is a nightly-only experimental API. (slice_partition_dedup)

    Moves all consecutive repeated elements to the end of the slice according to the PartialEq trait implementation.

    Returns two slices. The first contains no consecutive repeated elements. The second contains all the duplicates in no specified order.

    If the slice is sorted, the first returned slice contains no duplicates.

    -
    Examples
    +
    Examples
    #![feature(slice_partition_dedup)]
     
     let mut slice = [1, 2, 2, 3, 3, 2, 1, 1];
    @@ -1654,7 +1715,7 @@ 
    Examples
    assert_eq!(dedup, [1, 2, 3, 2, 1]); assert_eq!(duplicates, [2, 3, 1]);
    -
    source

    pub fn partition_dedup_by<F>(&mut self, same_bucket: F) -> (&mut [T], &mut [T])where +

    source

    pub fn partition_dedup_by<F>(&mut self, same_bucket: F) -> (&mut [T], &mut [T])where F: FnMut(&mut T, &mut T) -> bool,

    🔬This is a nightly-only experimental API. (slice_partition_dedup)

    Moves all but the first of consecutive elements to the end of the slice satisfying a given equality relation.

    Returns two slices. The first contains no consecutive repeated elements. @@ -1664,7 +1725,7 @@

    Examples
    from their order in the slice, so if same_bucket(a, b) returns true, a is moved at the end of the slice.

    If the slice is sorted, the first returned slice contains no duplicates.

    -
    Examples
    +
    Examples
    #![feature(slice_partition_dedup)]
     
     let mut slice = ["foo", "Foo", "BAZ", "Bar", "bar", "baz", "BAZ"];
    @@ -1673,14 +1734,14 @@ 
    Examples
    assert_eq!(dedup, ["foo", "BAZ", "Bar", "baz"]); assert_eq!(duplicates, ["bar", "Foo", "BAZ"]);
    -
    source

    pub fn partition_dedup_by_key<K, F>(&mut self, key: F) -> (&mut [T], &mut [T])where +

    source

    pub fn partition_dedup_by_key<K, F>(&mut self, key: F) -> (&mut [T], &mut [T])where F: FnMut(&mut T) -> K, K: PartialEq,

    🔬This is a nightly-only experimental API. (slice_partition_dedup)

    Moves all but the first of consecutive elements to the end of the slice that resolve to the same key.

    Returns two slices. The first contains no consecutive repeated elements. The second contains all the duplicates in no specified order.

    If the slice is sorted, the first returned slice contains no duplicates.

    -
    Examples
    +
    Examples
    #![feature(slice_partition_dedup)]
     
     let mut slice = [10, 20, 21, 30, 30, 20, 11, 13];
    @@ -1689,7 +1750,7 @@ 
    Examples
    assert_eq!(dedup, [10, 20, 30, 20, 11]); assert_eq!(duplicates, [21, 30, 13]);
    -
    1.26.0 · source

    pub fn rotate_left(&mut self, mid: usize)

    Rotates the slice in-place such that the first mid elements of the +

    1.26.0 · source

    pub fn rotate_left(&mut self, mid: usize)

    Rotates the slice in-place such that the first mid elements of the slice move to the end while the last self.len() - mid elements move to the front. After calling rotate_left, the element previously at index mid will become the first element in the slice.

    @@ -1699,7 +1760,7 @@
    Panics
    rotation.

    Complexity

    Takes linear (in self.len()) time.

    -
    Examples
    +
    Examples
    let mut a = ['a', 'b', 'c', 'd', 'e', 'f'];
     a.rotate_left(2);
     assert_eq!(a, ['c', 'd', 'e', 'f', 'a', 'b']);
    @@ -1708,7 +1769,7 @@
    Examples
    let mut a = ['a', 'b', 'c', 'd', 'e', 'f'];
     a[1..5].rotate_left(1);
     assert_eq!(a, ['a', 'c', 'd', 'e', 'b', 'f']);
    -
    1.26.0 · source

    pub fn rotate_right(&mut self, k: usize)

    Rotates the slice in-place such that the first self.len() - k +

    1.26.0 · source

    pub fn rotate_right(&mut self, k: usize)

    Rotates the slice in-place such that the first self.len() - k elements of the slice move to the end while the last k elements move to the front. After calling rotate_right, the element previously at index self.len() - k will become the first element in the slice.

    @@ -1718,7 +1779,7 @@
    Panics
    rotation.

    Complexity

    Takes linear (in self.len()) time.

    -
    Examples
    +
    Examples
    let mut a = ['a', 'b', 'c', 'd', 'e', 'f'];
     a.rotate_right(2);
     assert_eq!(a, ['e', 'f', 'a', 'b', 'c', 'd']);
    @@ -1727,28 +1788,28 @@
    Examples
    let mut a = ['a', 'b', 'c', 'd', 'e', 'f'];
     a[1..5].rotate_right(1);
     assert_eq!(a, ['a', 'e', 'b', 'c', 'd', 'f']);
    -
    1.50.0 · source

    pub fn fill(&mut self, value: T)where +

    1.50.0 · source

    pub fn fill(&mut self, value: T)where T: Clone,

    Fills self with elements by cloning value.

    -
    Examples
    +
    Examples
    let mut buf = vec![0; 10];
     buf.fill(1);
     assert_eq!(buf, vec![1; 10]);
    -
    1.51.0 · source

    pub fn fill_with<F>(&mut self, f: F)where +

    1.51.0 · source

    pub fn fill_with<F>(&mut self, f: F)where F: FnMut() -> T,

    Fills self with elements returned by calling a closure repeatedly.

    This method uses a closure to create new values. If you’d rather Clone a given value, use fill. If you want to use the Default trait to generate values, you can pass Default::default as the argument.

    -
    Examples
    +
    Examples
    let mut buf = vec![1; 10];
     buf.fill_with(Default::default);
     assert_eq!(buf, vec![0; 10]);
    -
    1.7.0 · source

    pub fn clone_from_slice(&mut self, src: &[T])where +

    1.7.0 · source

    pub fn clone_from_slice(&mut self, src: &[T])where T: Clone,

    Copies the elements from src into self.

    The length of src must be the same as self.

    Panics

    This function will panic if the two slices have different lengths.

    -
    Examples
    +
    Examples

    Cloning two elements from a slice into another:

    let src = [1, 2, 3, 4];
    @@ -1780,13 +1841,13 @@ 
    Examples
    } assert_eq!(slice, [4, 5, 3, 4, 5]);
    -
    1.9.0 · source

    pub fn copy_from_slice(&mut self, src: &[T])where +

    1.9.0 · source

    pub fn copy_from_slice(&mut self, src: &[T])where T: Copy,

    Copies all elements from src into self, using a memcpy.

    The length of src must be the same as self.

    If T does not implement Copy, use clone_from_slice.

    Panics

    This function will panic if the two slices have different lengths.

    -
    Examples
    +
    Examples

    Copying two elements from a slice into another:

    let src = [1, 2, 3, 4];
    @@ -1818,7 +1879,7 @@ 
    Examples
    } assert_eq!(slice, [4, 5, 3, 4, 5]);
    -
    1.37.0 · source

    pub fn copy_within<R>(&mut self, src: R, dest: usize)where +

    1.37.0 · source

    pub fn copy_within<R>(&mut self, src: R, dest: usize)where R: RangeBounds<usize>, T: Copy,

    Copies elements from one part of the slice to another part of itself, using a memmove.

    @@ -1829,7 +1890,7 @@
    Examples
    Panics

    This function will panic if either range exceeds the end of the slice, or if the end of src is before the start.

    -
    Examples
    +
    Examples

    Copying four bytes within a slice:

    let mut bytes = *b"Hello, World!";
    @@ -1837,7 +1898,7 @@ 
    Examples
    bytes.copy_within(1..5, 8); assert_eq!(&bytes, b"Hello, Wello!");
    -
    1.27.0 · source

    pub fn swap_with_slice(&mut self, other: &mut [T])

    Swaps all elements in self with those in other.

    +
    1.27.0 · source

    pub fn swap_with_slice(&mut self, other: &mut [T])

    Swaps all elements in self with those in other.

    The length of other must be the same as self.

    Panics

    This function will panic if the two slices have different lengths.

    @@ -1869,7 +1930,7 @@
    Example
    } assert_eq!(slice, [4, 5, 3, 1, 2]);
    -
    1.30.0 · source

    pub unsafe fn align_to<U>(&self) -> (&[T], &[U], &[T])

    Transmute the slice to a slice of another type, ensuring alignment of the types is +

    1.30.0 · source

    pub unsafe fn align_to<U>(&self) -> (&[T], &[U], &[T])

    Transmute the slice to a slice of another type, ensuring alignment of the types is maintained.

    This method splits the slice into three distinct slices: prefix, correctly aligned middle slice of a new type, and the suffix slice. How exactly the slice is split up is not @@ -1879,10 +1940,10 @@

    Example
    in a default (debug or release) execution will return a maximal middle part.

    This method has no purpose when either input element T or output element U are zero-sized and will return the original slice without splitting anything.

    -
    Safety
    +
    Safety

    This method is essentially a transmute with respect to the elements in the returned middle slice, so all the usual caveats pertaining to transmute::<T, U> also apply here.

    -
    Examples
    +
    Examples

    Basic usage:

    unsafe {
    @@ -1892,7 +1953,7 @@ 
    Examples
    // more_efficient_algorithm_for_aligned_shorts(shorts); // less_efficient_algorithm_for_bytes(suffix); }
    -
    1.30.0 · source

    pub unsafe fn align_to_mut<U>(&mut self) -> (&mut [T], &mut [U], &mut [T])

    Transmute the mutable slice to a mutable slice of another type, ensuring alignment of the +

    1.30.0 · source

    pub unsafe fn align_to_mut<U>(&mut self) -> (&mut [T], &mut [U], &mut [T])

    Transmute the mutable slice to a mutable slice of another type, ensuring alignment of the types is maintained.

    This method splits the slice into three distinct slices: prefix, correctly aligned middle slice of a new type, and the suffix slice. How exactly the slice is split up is not @@ -1902,10 +1963,10 @@

    Examples
    in a default (debug or release) execution will return a maximal middle part.

    This method has no purpose when either input element T or output element U are zero-sized and will return the original slice without splitting anything.

    -
    Safety
    +
    Safety

    This method is essentially a transmute with respect to the elements in the returned middle slice, so all the usual caveats pertaining to transmute::<T, U> also apply here.

    -
    Examples
    +
    Examples

    Basic usage:

    unsafe {
    @@ -1915,7 +1976,7 @@ 
    Examples
    // more_efficient_algorithm_for_aligned_shorts(shorts); // less_efficient_algorithm_for_bytes(suffix); }
    -
    source

    pub fn as_simd<const LANES: usize>(&self) -> (&[T], &[Simd<T, LANES>], &[T])where +

    source

    pub fn as_simd<const LANES: usize>(&self) -> (&[T], &[Simd<T, LANES>], &[T])where Simd<T, LANES>: AsRef<[T; LANES]>, T: SimdElement, LaneCount<LANES>: SupportedLaneCount,

    🔬This is a nightly-only experimental API. (portable_simd)

    Split a slice into a prefix, a middle of aligned SIMD types, and a suffix.

    @@ -1938,7 +1999,7 @@
    Panics
    supported. It’s possible that, in the future, those restrictions might be lifted in a way that would make it possible to see panics from this method for something like LANES == 3.

    -
    Examples
    +
    Examples
    #![feature(portable_simd)]
     use core::simd::SimdFloat;
     
    @@ -1966,7 +2027,7 @@ 
    Examples
    let numbers: Vec<f32> = (1..101).map(|x| x as _).collect(); assert_eq!(basic_simd_sum(&numbers[1..99]), 4949.0);
    -
    source

    pub fn as_simd_mut<const LANES: usize>( +

    source

    pub fn as_simd_mut<const LANES: usize>( &mut self ) -> (&mut [T], &mut [Simd<T, LANES>], &mut [T])where Simd<T, LANES>: AsMut<[T; LANES]>, @@ -1993,14 +2054,14 @@
    Panics
    supported. It’s possible that, in the future, those restrictions might be lifted in a way that would make it possible to see panics from this method for something like LANES == 3.

    -

    source

    pub fn is_sorted(&self) -> boolwhere +

    source

    pub fn is_sorted(&self) -> boolwhere T: PartialOrd,

    🔬This is a nightly-only experimental API. (is_sorted)

    Checks if the elements of this slice are sorted.

    That is, for each element a and its following element b, a <= b must hold. If the slice yields exactly zero or one element, true is returned.

    Note that if Self::Item is only PartialOrd, but not Ord, the above definition implies that this function returns false if any two consecutive items are not comparable.

    -
    Examples
    +
    Examples
    #![feature(is_sorted)]
     let empty: [i32; 0] = [];
     
    @@ -2009,23 +2070,23 @@ 
    Examples
    assert!([0].is_sorted()); assert!(empty.is_sorted()); assert!(![0.0, 1.0, f32::NAN].is_sorted());
    -
    source

    pub fn is_sorted_by<'a, F>(&'a self, compare: F) -> boolwhere +

    source

    pub fn is_sorted_by<'a, F>(&'a self, compare: F) -> boolwhere F: FnMut(&'a T, &'a T) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (is_sorted)

    Checks if the elements of this slice are sorted using the given comparator function.

    Instead of using PartialOrd::partial_cmp, this function uses the given compare function to determine the ordering of two elements. Apart from that, it’s equivalent to is_sorted; see its documentation for more information.

    -
    source

    pub fn is_sorted_by_key<'a, F, K>(&'a self, f: F) -> boolwhere +

    source

    pub fn is_sorted_by_key<'a, F, K>(&'a self, f: F) -> boolwhere F: FnMut(&'a T) -> K, K: PartialOrd,

    🔬This is a nightly-only experimental API. (is_sorted)

    Checks if the elements of this slice are sorted using the given key extraction function.

    Instead of comparing the slice’s elements directly, this function compares the keys of the elements, as determined by f. Apart from that, it’s equivalent to is_sorted; see its documentation for more information.

    -
    Examples
    +
    Examples
    #![feature(is_sorted)]
     
     assert!(["c", "bb", "aaa"].is_sorted_by_key(|s| s.len()));
     assert!(![-2i32, -1, 0, 3].is_sorted_by_key(|n| n.abs()));
    -
    1.52.0 · source

    pub fn partition_point<P>(&self, pred: P) -> usizewhere +

    1.52.0 · source

    pub fn partition_point<P>(&self, pred: P) -> usizewhere P: FnMut(&T) -> bool,

    Returns the index of the partition point according to the given predicate (the index of the first element of the second partition).

    The slice is assumed to be partitioned according to the given predicate. @@ -2036,7 +2097,7 @@

    Examples

    If this slice is not partitioned, the returned result is unspecified and meaningless, as this method performs a kind of binary search.

    See also binary_search, binary_search_by, and binary_search_by_key.

    -
    Examples
    +
    Examples
    let v = [1, 2, 3, 3, 5, 6, 7];
     let i = v.partition_point(|&x| x < 5);
     
    @@ -2058,14 +2119,14 @@ 
    Examples
    let idx = s.partition_point(|&x| x < num); s.insert(idx, num); assert_eq!(s, [0, 1, 1, 1, 1, 2, 3, 5, 8, 13, 21, 34, 42, 55]);
    -
    source

    pub fn take<R, 'a>(self: &mut &'a [T], range: R) -> Option<&'a [T]>where +

    source

    pub fn take<R, 'a>(self: &mut &'a [T], range: R) -> Option<&'a [T]>where R: OneSidedRange<usize>,

    🔬This is a nightly-only experimental API. (slice_take)

    Removes the subslice corresponding to the given range and returns a reference to it.

    Returns None and does not modify the slice if the given range is out of bounds.

    Note that this method only accepts one-sided ranges such as 2.. or ..6, but not 2..6.

    -
    Examples
    +
    Examples

    Taking the first three elements of a slice:

    #![feature(slice_take)]
    @@ -2095,14 +2156,14 @@ 
    Examples
    assert_eq!(None, slice.take(..=4)); let expected: &[char] = &['a', 'b', 'c', 'd']; assert_eq!(Some(expected), slice.take(..4));
    -
    source

    pub fn take_mut<R, 'a>(self: &mut &'a mut [T], range: R) -> Option<&'a mut [T]>where +

    source

    pub fn take_mut<R, 'a>(self: &mut &'a mut [T], range: R) -> Option<&'a mut [T]>where R: OneSidedRange<usize>,

    🔬This is a nightly-only experimental API. (slice_take)

    Removes the subslice corresponding to the given range and returns a mutable reference to it.

    Returns None and does not modify the slice if the given range is out of bounds.

    Note that this method only accepts one-sided ranges such as 2.. or ..6, but not 2..6.

    -
    Examples
    +
    Examples

    Taking the first three elements of a slice:

    #![feature(slice_take)]
    @@ -2132,10 +2193,10 @@ 
    Examples
    assert_eq!(None, slice.take_mut(..=4)); let expected: &mut [_] = &mut ['a', 'b', 'c', 'd']; assert_eq!(Some(expected), slice.take_mut(..4));
    -
    source

    pub fn take_first<'a>(self: &mut &'a [T]) -> Option<&'a T>

    🔬This is a nightly-only experimental API. (slice_take)

    Removes the first element of the slice and returns a reference +

    source

    pub fn take_first<'a>(self: &mut &'a [T]) -> Option<&'a T>

    🔬This is a nightly-only experimental API. (slice_take)

    Removes the first element of the slice and returns a reference to it.

    Returns None if the slice is empty.

    -
    Examples
    +
    Examples
    #![feature(slice_take)]
     
     let mut slice: &[_] = &['a', 'b', 'c'];
    @@ -2143,10 +2204,10 @@ 
    Examples
    assert_eq!(slice, &['b', 'c']); assert_eq!(first, &'a');
    -
    source

    pub fn take_first_mut<'a>(self: &mut &'a mut [T]) -> Option<&'a mut T>

    🔬This is a nightly-only experimental API. (slice_take)

    Removes the first element of the slice and returns a mutable +

    source

    pub fn take_first_mut<'a>(self: &mut &'a mut [T]) -> Option<&'a mut T>

    🔬This is a nightly-only experimental API. (slice_take)

    Removes the first element of the slice and returns a mutable reference to it.

    Returns None if the slice is empty.

    -
    Examples
    +
    Examples
    #![feature(slice_take)]
     
     let mut slice: &mut [_] = &mut ['a', 'b', 'c'];
    @@ -2155,10 +2216,10 @@ 
    Examples
    assert_eq!(slice, &['b', 'c']); assert_eq!(first, &'d');
    -
    source

    pub fn take_last<'a>(self: &mut &'a [T]) -> Option<&'a T>

    🔬This is a nightly-only experimental API. (slice_take)

    Removes the last element of the slice and returns a reference +

    source

    pub fn take_last<'a>(self: &mut &'a [T]) -> Option<&'a T>

    🔬This is a nightly-only experimental API. (slice_take)

    Removes the last element of the slice and returns a reference to it.

    Returns None if the slice is empty.

    -
    Examples
    +
    Examples
    #![feature(slice_take)]
     
     let mut slice: &[_] = &['a', 'b', 'c'];
    @@ -2166,10 +2227,10 @@ 
    Examples
    assert_eq!(slice, &['a', 'b']); assert_eq!(last, &'c');
    -
    source

    pub fn take_last_mut<'a>(self: &mut &'a mut [T]) -> Option<&'a mut T>

    🔬This is a nightly-only experimental API. (slice_take)

    Removes the last element of the slice and returns a mutable +

    source

    pub fn take_last_mut<'a>(self: &mut &'a mut [T]) -> Option<&'a mut T>

    🔬This is a nightly-only experimental API. (slice_take)

    Removes the last element of the slice and returns a mutable reference to it.

    Returns None if the slice is empty.

    -
    Examples
    +
    Examples
    #![feature(slice_take)]
     
     let mut slice: &mut [_] = &mut ['a', 'b', 'c'];
    @@ -2178,15 +2239,15 @@ 
    Examples
    assert_eq!(slice, &['a', 'b']); assert_eq!(last, &'d');
    -
    source

    pub unsafe fn get_many_unchecked_mut<const N: usize>( +

    source

    pub unsafe fn get_many_unchecked_mut<const N: usize>( &mut self, indices: [usize; N] ) -> [&mut T; N]

    🔬This is a nightly-only experimental API. (get_many_mut)

    Returns mutable references to many indices at once, without doing any checks.

    For a safe alternative see get_many_mut.

    -
    Safety
    +
    Safety

    Calling this method with overlapping or out-of-bounds indices is undefined behavior even if the resulting references are not used.

    -
    Examples
    +
    Examples
    #![feature(get_many_mut)]
     
     let x = &mut [1, 2, 4];
    @@ -2197,13 +2258,13 @@ 
    Examples
    *b *= 100; } assert_eq!(x, &[10, 2, 400]);
    -
    source

    pub fn get_many_mut<const N: usize>( +

    source

    pub fn get_many_mut<const N: usize>( &mut self, indices: [usize; N] ) -> Result<[&mut T; N], GetManyMutError<N>>

    🔬This is a nightly-only experimental API. (get_many_mut)

    Returns mutable references to many indices at once.

    Returns an error if any index is out-of-bounds, or if the same index was passed more than once.

    -
    Examples
    +
    Examples
    #![feature(get_many_mut)]
     
     let v = &mut [1, 2, 3];
    @@ -2212,62 +2273,9 @@ 
    Examples
    *b = 612; } assert_eq!(v, &[413, 2, 612]);
    -
    1.23.0 · source

    pub fn is_ascii(&self) -> bool

    Checks if all bytes in this slice are within the ASCII range.

    -
    source

    pub fn as_ascii(&self) -> Option<&[AsciiChar]>

    🔬This is a nightly-only experimental API. (ascii_char)

    If this slice is_ascii, returns it as a slice of -ASCII characters, otherwise returns None.

    -
    source

    pub unsafe fn as_ascii_unchecked(&self) -> &[AsciiChar]

    🔬This is a nightly-only experimental API. (ascii_char)

    Converts this slice of bytes into a slice of ASCII characters, -without checking whether they’re valid.

    -
    Safety
    -

    Every byte in the slice must be in 0..=127, or else this is UB.

    -
    1.23.0 · source

    pub fn eq_ignore_ascii_case(&self, other: &[u8]) -> bool

    Checks that two slices are an ASCII case-insensitive match.

    -

    Same as to_ascii_lowercase(a) == to_ascii_lowercase(b), -but without allocating and copying temporaries.

    -
    1.23.0 · source

    pub fn make_ascii_uppercase(&mut self)

    Converts this slice to its ASCII upper case equivalent in-place.

    -

    ASCII letters ‘a’ to ‘z’ are mapped to ‘A’ to ‘Z’, -but non-ASCII letters are unchanged.

    -

    To return a new uppercased value without modifying the existing one, use -to_ascii_uppercase.

    -
    1.23.0 · source

    pub fn make_ascii_lowercase(&mut self)

    Converts this slice to its ASCII lower case equivalent in-place.

    -

    ASCII letters ‘A’ to ‘Z’ are mapped to ‘a’ to ‘z’, -but non-ASCII letters are unchanged.

    -

    To return a new lowercased value without modifying the existing one, use -to_ascii_lowercase.

    -
    1.60.0 · source

    pub fn escape_ascii(&self) -> EscapeAscii<'_>

    Returns an iterator that produces an escaped version of this slice, -treating it as an ASCII string.

    -
    Examples
    -
    
    -let s = b"0\t\r\n'\"\\\x9d";
    -let escaped = s.escape_ascii().to_string();
    -assert_eq!(escaped, "0\\t\\r\\n\\'\\\"\\\\\\x9d");
    -
    source

    pub fn trim_ascii_start(&self) -> &[u8]

    🔬This is a nightly-only experimental API. (byte_slice_trim_ascii)

    Returns a byte slice with leading ASCII whitespace bytes removed.

    -

    ‘Whitespace’ refers to the definition used by -u8::is_ascii_whitespace.

    -
    Examples
    -
    #![feature(byte_slice_trim_ascii)]
    -
    -assert_eq!(b" \t hello world\n".trim_ascii_start(), b"hello world\n");
    -assert_eq!(b"  ".trim_ascii_start(), b"");
    -assert_eq!(b"".trim_ascii_start(), b"");
    -
    source

    pub fn trim_ascii_end(&self) -> &[u8]

    🔬This is a nightly-only experimental API. (byte_slice_trim_ascii)

    Returns a byte slice with trailing ASCII whitespace bytes removed.

    -

    ‘Whitespace’ refers to the definition used by -u8::is_ascii_whitespace.

    -
    Examples
    -
    #![feature(byte_slice_trim_ascii)]
    -
    -assert_eq!(b"\r hello world\n ".trim_ascii_end(), b"\r hello world");
    -assert_eq!(b"  ".trim_ascii_end(), b"");
    -assert_eq!(b"".trim_ascii_end(), b"");
    -
    source

    pub fn trim_ascii(&self) -> &[u8]

    🔬This is a nightly-only experimental API. (byte_slice_trim_ascii)

    Returns a byte slice with leading and trailing ASCII whitespace bytes -removed.

    -

    ‘Whitespace’ refers to the definition used by -u8::is_ascii_whitespace.

    -
    Examples
    -
    #![feature(byte_slice_trim_ascii)]
    -
    -assert_eq!(b"\r hello world\n ".trim_ascii(), b"hello world");
    -assert_eq!(b"  ".trim_ascii(), b"");
    -assert_eq!(b"".trim_ascii(), b"");
    -
    source

    pub fn sort_floats(&mut self)

    🔬This is a nightly-only experimental API. (sort_floats)

    Sorts the slice of floats.

    +
    source

    pub fn as_str(&self) -> &str

    🔬This is a nightly-only experimental API. (ascii_char)

    Views this slice of ASCII characters as a UTF-8 str.

    +
    source

    pub fn as_bytes(&self) -> &[u8]

    🔬This is a nightly-only experimental API. (ascii_char)

    Views this slice of ASCII characters as a slice of u8 bytes.

    +
    source

    pub fn sort_floats(&mut self)

    🔬This is a nightly-only experimental API. (sort_floats)

    Sorts the slice of floats.

    This sort is in-place (i.e. does not allocate), O(n * log(n)) worst-case, and uses the ordering defined by f64::total_cmp.

    Current implementation
    @@ -2280,6 +2288,16 @@
    Examples
    let sorted = [-f64::INFINITY, -1.0, -5e-8, -0.0, 0.0, 2.6, 8.29, f64::INFINITY, f64::NAN]; assert_eq!(&v[..8], &sorted[..8]); assert!(v[8].is_nan());
    +
    1.23.0 · source

    pub fn to_ascii_uppercase(&self) -> Vec<u8>

    Returns a vector containing a copy of this slice where each byte +is mapped to its ASCII upper case equivalent.

    +

    ASCII letters ‘a’ to ‘z’ are mapped to ‘A’ to ‘Z’, +but non-ASCII letters are unchanged.

    +

    To uppercase the value in-place, use make_ascii_uppercase.

    +
    1.23.0 · source

    pub fn to_ascii_lowercase(&self) -> Vec<u8>

    Returns a vector containing a copy of this slice where each byte +is mapped to its ASCII lower case equivalent.

    +

    ASCII letters ‘A’ to ‘Z’ are mapped to ‘a’ to ‘z’, +but non-ASCII letters are unchanged.

    +

    To lowercase the value in-place, use make_ascii_lowercase.

    1.0.0 · source

    pub fn sort(&mut self)where T: Ord,

    Sorts the slice.

    This sort is stable (i.e., does not reorder equal elements) and O(n * log(n)) worst-case.

    @@ -2434,17 +2452,7 @@
    Examples
    Examples
    assert_eq!(["hello", "world"].connect(" "), "hello world");
     assert_eq!([[1, 2], [3, 4]].connect(&0), [1, 2, 0, 3, 4]);
    -
    1.23.0 · source

    pub fn to_ascii_uppercase(&self) -> Vec<u8>

    Returns a vector containing a copy of this slice where each byte -is mapped to its ASCII upper case equivalent.

    -

    ASCII letters ‘a’ to ‘z’ are mapped to ‘A’ to ‘Z’, -but non-ASCII letters are unchanged.

    -

    To uppercase the value in-place, use make_ascii_uppercase.

    -
    1.23.0 · source

    pub fn to_ascii_lowercase(&self) -> Vec<u8>

    Returns a vector containing a copy of this slice where each byte -is mapped to its ASCII lower case equivalent.

    -

    ASCII letters ‘A’ to ‘Z’ are mapped to ‘a’ to ‘z’, -but non-ASCII letters are unchanged.

    -

    To lowercase the value in-place, use make_ascii_lowercase.

    -

    Trait Implementations§

    source§

    impl<F: Debug + PrimeFieldBits> Debug for RunningSum<F>

    source§

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

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

    impl<F: PrimeFieldBits> Deref for RunningSum<F>

    §

    type Target = Vec<AssignedCell<F, F>>

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Vec<AssignedCell<F, F>>

    Dereferences the value.

    Auto Trait Implementations§

    §

    impl<F> RefUnwindSafe for RunningSum<F>where +

    Trait Implementations§

    source§

    impl<F: Debug + PrimeFieldBits> Debug for RunningSum<F>

    source§

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

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

    impl<F: PrimeFieldBits> Deref for RunningSum<F>

    §

    type Target = Vec<AssignedCell<F, F>>

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Vec<AssignedCell<F, F>>

    Dereferences the value.

    Auto Trait Implementations§

    §

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

    §

    impl<F> Send for RunningSum<F>

    §

    impl<F> Sync for RunningSum<F>

    §

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

    §

    impl<F> UnwindSafe for RunningSum<F>where F: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere @@ -2537,10 +2545,10 @@
    Examples
    T: ?Sized,

    Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
    §

    impl<T> TryConv for T

    §

    fn try_conv<T>(self) -> Result<T, Self::Error>where Self: TryInto<T>,

    Attempts to convert self into T using TryInto<T>. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

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

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

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

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere + U: Into<T>,

    §

    type Error = Infallible

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

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

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

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

    §

    fn vzip(self) -> V

    §

    impl<T> WithSubscriber for T

    §

    fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

    Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
    §

    fn with_current_subscriber(self) -> WithDispatch<Self>

    Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
    §

    impl<T> SyncDeps for Twhere +[WithDispatch] wrapper. Read more
    source§

    impl<T> SyncDeps for Twhere T: Send + Sync,

    \ No newline at end of file diff --git a/halo2_gadgets/utilities/struct.RangeConstrained.html b/halo2_gadgets/utilities/struct.RangeConstrained.html index c5ad7e8ee2..5664a4d91e 100644 --- a/halo2_gadgets/utilities/struct.RangeConstrained.html +++ b/halo2_gadgets/utilities/struct.RangeConstrained.html @@ -1,4 +1,4 @@ -RangeConstrained in halo2_gadgets::utilities - Rust +RangeConstrained in halo2_gadgets::utilities - Rust
    pub struct RangeConstrained<F: Field, T: FieldValue<F>> { /* private fields */ }
    Expand description

    A type representing a range-constrained field element.

    -

    Implementations§

    source§

    impl<F: PrimeFieldBits> RangeConstrained<F, AssignedCell<F, F>>

    source

    pub fn witness_short<const K: usize>( +

    Implementations§

    source§

    impl<F: PrimeFieldBits> RangeConstrained<F, AssignedCell<F, F>>

    source

    pub fn witness_short<const K: usize>( lookup_config: &LookupRangeCheckConfig<F, K>, - layouter: impl Layouter<F>, - value: Value<&F>, + layouter: impl Layouter<F>, + value: Value<&F>, bitrange: Range<usize> -) -> Result<Self, Error>

    Witnesses a subset of the bits in value and constrains them to be the correct +) -> Result<Self, Error>

    Witnesses a subset of the bits in value and constrains them to be the correct number of bits.

    Panics

    Panics if bitrange.len() >= K.

    source§

    impl<F: Field, T: FieldValue<F>> RangeConstrained<F, T>

    source

    pub fn inner(&self) -> &T

    Returns the range-constrained inner type.

    source

    pub fn num_bits(&self) -> usize

    Returns the number of bits to which this cell is constrained.

    -
    source§

    impl<F: PrimeFieldBits> RangeConstrained<F, Value<F>>

    source

    pub fn bitrange_of(value: Value<&F>, bitrange: Range<usize>) -> Self

    Constructs a RangeConstrained<Value<F>> as a bitrange of the given value.

    -
    source§

    impl<F: Field> RangeConstrained<F, AssignedCell<F, F>>

    source

    pub fn unsound_unchecked(cell: AssignedCell<F, F>, num_bits: usize) -> Self

    Constructs a RangeConstrained<AssignedCell<F, F>> without verifying that the +

    source§

    impl<F: PrimeFieldBits> RangeConstrained<F, Value<F>>

    source

    pub fn bitrange_of(value: Value<&F>, bitrange: Range<usize>) -> Self

    Constructs a RangeConstrained<Value<F>> as a bitrange of the given value.

    +
    source§

    impl<F: Field> RangeConstrained<F, AssignedCell<F, F>>

    source

    pub fn unsound_unchecked(cell: AssignedCell<F, F>, num_bits: usize) -> Self

    Constructs a RangeConstrained<AssignedCell<F, F>> without verifying that the cell is correctly range constrained.

    This API only exists to ease with integrating this type into existing circuits, and will likely be removed in future.

    -
    source

    pub fn value(&self) -> RangeConstrained<F, Value<F>>

    Extracts the range-constrained value from this range-constrained cell.

    +
    source

    pub fn value(&self) -> RangeConstrained<F, Value<F>>

    Extracts the range-constrained value from this range-constrained cell.

    Trait Implementations§

    source§

    impl<F: Clone + Field, T: Clone + FieldValue<F>> Clone for RangeConstrained<F, T>

    source§

    fn clone(&self) -> RangeConstrained<F, T>

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

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

    Performs copy-assignment from source. Read more
    source§

    impl<F: Debug + Field, T: Debug + FieldValue<F>> Debug for RangeConstrained<F, T>

    source§

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

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

    impl<F: Copy + Field, T: Copy + FieldValue<F>> Copy for RangeConstrained<F, T>

    Auto Trait Implementations§

    §

    impl<F, T> RefUnwindSafe for RangeConstrained<F, T>where F: RefUnwindSafe, T: RefUnwindSafe,

    §

    impl<F, T> Send for RangeConstrained<F, T>where @@ -130,10 +130,10 @@
    Panics
    builds.

    source§

    impl<T> ToOwned for Twhere T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    §

    impl<T> TryConv for T

    §

    fn try_conv<T>(self) -> Result<T, Self::Error>where Self: TryInto<T>,

    Attempts to convert self into T using TryInto<T>. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

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

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

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

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere + U: Into<T>,

    §

    type Error = Infallible

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

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

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

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

    §

    fn vzip(self) -> V

    §

    impl<T> WithSubscriber for T

    §

    fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

    Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
    §

    fn with_current_subscriber(self) -> WithDispatch<Self>

    Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
    §

    impl<T> SyncDeps for Twhere +[WithDispatch] wrapper. Read more
    source§

    impl<T> SyncDeps for Twhere T: Send + Sync,

    \ No newline at end of file diff --git a/halo2_gadgets/utilities/trait.FieldValue.html b/halo2_gadgets/utilities/trait.FieldValue.html index 08ff481a73..2aa6dd91cb 100644 --- a/halo2_gadgets/utilities/trait.FieldValue.html +++ b/halo2_gadgets/utilities/trait.FieldValue.html @@ -1,4 +1,4 @@ -FieldValue in halo2_gadgets::utilities - Rust +FieldValue in halo2_gadgets::utilities - Rust
    pub trait FieldValue<F: Field> {
         // Required method
    -    fn value(&self) -> Value<&F>;
    +    fn value(&self) -> Value<&F>;
     }
    Expand description

    A type that has a value at either keygen or proving time.

    -

    Required Methods§

    source

    fn value(&self) -> Value<&F>

    Returns the value of this type.

    -

    Implementations on Foreign Types§

    source§

    impl<F: Field> FieldValue<F> for AssignedCell<F, F>

    source§

    fn value(&self) -> Value<&F>

    source§

    impl<F: Field> FieldValue<F> for Value<F>

    source§

    fn value(&self) -> Value<&F>

    Implementors§

    \ No newline at end of file +

    Required Methods§

    source

    fn value(&self) -> Value<&F>

    Returns the value of this type.

    +

    Implementations on Foreign Types§

    source§

    impl<F: Field> FieldValue<F> for AssignedCell<F, F>

    source§

    fn value(&self) -> Value<&F>

    source§

    impl<F: Field> FieldValue<F> for Value<F>

    source§

    fn value(&self) -> Value<&F>

    Implementors§

    \ No newline at end of file diff --git a/halo2_gadgets/utilities/trait.UtilitiesInstructions.html b/halo2_gadgets/utilities/trait.UtilitiesInstructions.html index 839c164198..f34314b181 100644 --- a/halo2_gadgets/utilities/trait.UtilitiesInstructions.html +++ b/halo2_gadgets/utilities/trait.UtilitiesInstructions.html @@ -1,4 +1,4 @@ -UtilitiesInstructions in halo2_gadgets::utilities - Rust +UtilitiesInstructions in halo2_gadgets::utilities - Rust \ No newline at end of file + Commit: CommitDomains<Affine, F, Hash>,
    §

    type Var = AssignedCell<Fp, Fp>

    \ No newline at end of file diff --git a/halo2_gadgets/utilities/trait.Var.html b/halo2_gadgets/utilities/trait.Var.html index 756e9b4377..2038d0a49e 100644 --- a/halo2_gadgets/utilities/trait.Var.html +++ b/halo2_gadgets/utilities/trait.Var.html @@ -1,4 +1,4 @@ -Var in halo2_gadgets::utilities - Rust +Var in halo2_gadgets::utilities - Rust -
    pub trait Var<F: Field>: Clone + Debug + From<AssignedCell<F, F>> {
    +
    pub trait Var<F: Field>: Clone + Debug + From<AssignedCell<F, F>> {
         // Required methods
    -    fn cell(&self) -> Cell;
    -    fn value(&self) -> Value<F>;
    +    fn cell(&self) -> Cell;
    +    fn value(&self) -> Value<F>;
     }
    Expand description

    Trait for a variable in the circuit.

    -

    Required Methods§

    source

    fn cell(&self) -> Cell

    The cell at which this variable was allocated.

    -
    source

    fn value(&self) -> Value<F>

    The value allocated to this variable.

    -

    Object Safety§

    This trait is not object safe.

    Implementations on Foreign Types§

    source§

    impl<F: Field> Var<F> for AssignedCell<F, F>

    source§

    fn cell(&self) -> Cell

    source§

    fn value(&self) -> Value<F>

    Implementors§

    source§

    impl<F: Field> Var<F> for StateWord<F>

    \ No newline at end of file +

    Required Methods§

    source

    fn cell(&self) -> Cell

    The cell at which this variable was allocated.

    +
    source

    fn value(&self) -> Value<F>

    The value allocated to this variable.

    +

    Object Safety§

    This trait is not object safe.

    Implementations on Foreign Types§

    source§

    impl<F: Field> Var<F> for AssignedCell<F, F>

    source§

    fn cell(&self) -> Cell

    source§

    fn value(&self) -> Value<F>

    Implementors§

    source§

    impl<F: Field> Var<F> for StateWord<F>

    \ No newline at end of file diff --git a/halo2_proofs/all.html b/halo2_proofs/all.html index 3d26434517..b7836979bb 100644 --- a/halo2_proofs/all.html +++ b/halo2_proofs/all.html @@ -1,4 +1,4 @@ -List of all items in this crate +List of all items in this crate +best_fft in halo2_proofs::arithmetic - Rust +best_multiexp in halo2_proofs::arithmetic - Rust +compute_inner_product in halo2_proofs::arithmetic - Rust +eval_polynomial in halo2_proofs::arithmetic - Rust +g_to_lagrange in halo2_proofs::arithmetic - Rust +kate_division in halo2_proofs::arithmetic - Rust +lagrange_interpolate in halo2_proofs::arithmetic - Rust +parallelize in halo2_proofs::arithmetic - Rust +recursive_butterfly_arithmetic in halo2_proofs::arithmetic - Rust +small_multiexp in halo2_proofs::arithmetic - Rust +halo2_proofs::arithmetic - Rust +CurveAffine in halo2_proofs::arithmetic - Rust +CurveExt in halo2_proofs::arithmetic - Rust +FftGroup in halo2_proofs::arithmetic - Rust +Field in halo2_proofs::arithmetic - Rust +halo2_proofs::circuit::floor_planner - Rust +V1 in halo2_proofs::circuit::floor_planner - Rust +V1Pass in halo2_proofs::circuit::floor_planner - Rust +halo2_proofs::circuit - Rust +RegionColumn in halo2_proofs::circuit::layouter - Rust +halo2_proofs::circuit::layouter - Rust +RegionShape in halo2_proofs::circuit::layouter - Rust +RegionLayouter in halo2_proofs::circuit::layouter - Rust +SyncDeps in halo2_proofs::circuit::layouter - Rust +TableLayouter in halo2_proofs::circuit::layouter - Rust +AssignedCell in halo2_proofs::circuit - Rust +Cell in halo2_proofs::circuit - Rust +NamespacedLayouter in halo2_proofs::circuit - Rust +Region in halo2_proofs::circuit - Rust +RegionIndex in halo2_proofs::circuit - Rust +RegionStart in halo2_proofs::circuit - Rust +SimpleFloorPlanner in halo2_proofs::circuit - Rust +SimpleTableLayouter in halo2_proofs::circuit - Rust +Table in halo2_proofs::circuit - Rust +Value in halo2_proofs::circuit - Rust +Chip in halo2_proofs::circuit - Rust +Layouter in halo2_proofs::circuit - Rust +TableLayouter in halo2_proofs::circuit - Rust +halo2_proofs::dev::cost - Rust +CircuitCost in halo2_proofs::dev::cost - Rust +MarginalProofSize in halo2_proofs::dev::cost - Rust +ProofSize in halo2_proofs::dev::cost - Rust +CellValue in halo2_proofs::dev - Rust +FailureLocation in halo2_proofs::dev - Rust +VerifyFailure in halo2_proofs::dev - Rust +circuit_dot_graph in halo2_proofs::dev - Rust +halo2_proofs::dev - Rust +halo2_proofs::dev::metadata - Rust +Column in halo2_proofs::dev::metadata - Rust +Constraint in halo2_proofs::dev::metadata - Rust +Gate in halo2_proofs::dev::metadata - Rust +Region in halo2_proofs::dev::metadata - Rust
    pub struct Region { /* private fields */ }
    Expand description

    Metadata about an assigned region within a circuit.

    -

    Trait Implementations§

    source§

    impl Clone for Region

    source§

    fn clone(&self) -> Region

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

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Region

    source§

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

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

    impl Display for Region

    source§

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

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

    impl From<(usize, &str)> for Region

    source§

    fn from((index, name): (usize, &str)) -> Self

    Converts to this type from the input type.
    source§

    impl From<(usize, &str, HashMap<Column, String>)> for Region

    Trait Implementations§

    source§

    impl Clone for Region

    source§

    fn clone(&self) -> Region

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

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Region

    source§

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

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

    impl Display for Region

    source§

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

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

    impl From<(usize, &str)> for Region

    source§

    fn from((index, name): (usize, &str)) -> Self

    Converts to this type from the input type.
    source§

    impl From<(usize, &str, HashMap<Column, String>)> for Region

    source§

    fn from( (index, name, annotations): (usize, &str, HashMap<ColumnMetadata, String>) -) -> Self

    Converts to this type from the input type.
    source§

    impl From<(usize, String)> for Region

    source§

    fn from((index, name): (usize, String)) -> Self

    Converts to this type from the input type.
    source§

    impl From<(usize, String, HashMap<Column, String>)> for Region

    source§

    fn from( +) -> Self

    Converts to this type from the input type.
    source§

    impl From<(usize, String)> for Region

    source§

    fn from((index, name): (usize, String)) -> Self

    Converts to this type from the input type.
    source§

    impl From<(usize, String, HashMap<Column, String>)> for Region

    source§

    fn from( (index, name, annotations): (usize, String, HashMap<ColumnMetadata, String>) ) -> Self

    Converts to this type from the input type.
    source§

    impl PartialEq for Region

    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 @@ -112,8 +112,8 @@ T: Clone,
    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T> ToString for Twhere T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    §

    impl<T> TryConv for T

    §

    fn try_conv<T>(self) -> Result<T, Self::Error>where Self: TryInto<T>,

    Attempts to convert self into T using TryInto<T>. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

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

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

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

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere + U: Into<T>,

    §

    type Error = Infallible

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

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

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

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

    §

    fn vzip(self) -> V

    §

    impl<T> WithSubscriber for T

    §

    fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

    Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
    §

    fn with_current_subscriber(self) -> WithDispatch<Self>

    Attaches the current default Subscriber to this type, returning a diff --git a/halo2_proofs/dev/metadata/struct.VirtualCell.html b/halo2_proofs/dev/metadata/struct.VirtualCell.html index 1d19d4668a..385ebddde5 100644 --- a/halo2_proofs/dev/metadata/struct.VirtualCell.html +++ b/halo2_proofs/dev/metadata/struct.VirtualCell.html @@ -1,4 +1,4 @@ -VirtualCell in halo2_proofs::dev::metadata - Rust +VirtualCell in halo2_proofs::dev::metadata - Rust
    pub struct VirtualCell { /* private fields */ }
    Expand description

    A “virtual cell” is a PLONK cell that has been queried at a particular relative offset within a custom gate.

    -

    Trait Implementations§

    source§

    impl Debug for VirtualCell

    source§

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

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

    impl Display for VirtualCell

    source§

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

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

    impl From<(Column, i32)> for VirtualCell

    source§

    fn from((column, rotation): (Column, i32)) -> Self

    Converts to this type from the input type.
    source§

    impl<S: AsRef<str>> From<(S, Column, i32)> for VirtualCell

    source§

    fn from((name, column, rotation): (S, Column, i32)) -> Self

    Converts to this type from the input type.
    source§

    impl From<VirtualCell> for VirtualCell

    source§

    fn from(c: VirtualCell) -> Self

    Converts to this type from the input type.
    source§

    impl Ord for VirtualCell

    source§

    fn cmp(&self, other: &VirtualCell) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere +

    Trait Implementations§

    source§

    impl Debug for VirtualCell

    source§

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

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

    impl Display for VirtualCell

    source§

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

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

    impl From<(Column, i32)> for VirtualCell

    source§

    fn from((column, rotation): (Column, i32)) -> Self

    Converts to this type from the input type.
    source§

    impl<S: AsRef<str>> From<(S, Column, i32)> for VirtualCell

    source§

    fn from((name, column, rotation): (S, Column, i32)) -> Self

    Converts to this type from the input type.
    source§

    impl From<VirtualCell> for VirtualCell

    source§

    fn from(c: VirtualCell) -> Self

    Converts to this type from the input type.
    source§

    impl Ord for VirtualCell

    source§

    fn cmp(&self, other: &VirtualCell) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Selfwhere Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Selfwhere Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Selfwhere Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    source§

    impl PartialEq for VirtualCell

    source§

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

    This method tests for self and other values to be equal, and is used @@ -113,8 +113,8 @@ builds.
    source§

    impl<T> ToString for Twhere T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    §

    impl<T> TryConv for T

    §

    fn try_conv<T>(self) -> Result<T, Self::Error>where Self: TryInto<T>,

    Attempts to convert self into T using TryInto<T>. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

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

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

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

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere + U: Into<T>,

    §

    type Error = Infallible

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

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

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

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

    §

    fn vzip(self) -> V

    §

    impl<T> WithSubscriber for T

    §

    fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

    Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
    §

    fn with_current_subscriber(self) -> WithDispatch<Self>

    Attaches the current default Subscriber to this type, returning a diff --git a/halo2_proofs/dev/struct.CircuitGates.html b/halo2_proofs/dev/struct.CircuitGates.html index 56b3d4dd84..05ddc62e23 100644 --- a/halo2_proofs/dev/struct.CircuitGates.html +++ b/halo2_proofs/dev/struct.CircuitGates.html @@ -1,4 +1,4 @@ -CircuitGates in halo2_proofs::dev - Rust +CircuitGates in halo2_proofs::dev - Rust +CircuitLayout in halo2_proofs::dev - Rust +MockProver in halo2_proofs::dev - Rust +TracingFloorPlanner in halo2_proofs::dev - Rust +SerdeFormat in halo2_proofs - Rust +halo2_proofs - Rust +Any in halo2_proofs::plonk - Rust +Assigned in halo2_proofs::plonk - Rust +Error in halo2_proofs::plonk - Rust +Expression in halo2_proofs::plonk - Rust +TableError in halo2_proofs::plonk - Rust +create_proof in halo2_proofs::plonk - Rust +keygen_pk in halo2_proofs::plonk - Rust +keygen_vk in halo2_proofs::plonk - Rust +keygen_vk_custom in halo2_proofs::plonk - Rust +verify_proof in halo2_proofs::plonk - Rust +halo2_proofs::plonk - Rust +halo2_proofs::plonk::permutation - Rust +Argument in halo2_proofs::plonk::permutation - Rust +Assembly in halo2_proofs::plonk::permutation - Rust +VerifyingKey in halo2_proofs::plonk::permutation - Rust +Advice in halo2_proofs::plonk - Rust +AdviceQuery in halo2_proofs::plonk - Rust +BatchVerifier in halo2_proofs::plonk - Rust +Challenge in halo2_proofs::plonk - Rust +Column in halo2_proofs::plonk - Rust +Constraint in halo2_proofs::plonk - Rust
    pub struct Constraint<F: Field> { /* private fields */ }
    Expand description

    An individual polynomial constraint.

    These are returned by the closures passed to ConstraintSystem::create_gate.

    -

    Trait Implementations§

    source§

    impl<F: Debug + Field> Debug for Constraint<F>

    source§

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

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

    impl<F: Field, S: AsRef<str>> From<(S, Expression<F>)> for Constraint<F>

    source§

    fn from((name, poly): (S, Expression<F>)) -> Self

    Converts to this type from the input type.
    source§

    impl<F: Field> From<Expression<F>> for Constraint<F>

    source§

    fn from(poly: Expression<F>) -> Self

    Converts to this type from the input type.

    Auto Trait Implementations§

    §

    impl<F> RefUnwindSafe for Constraint<F>where +

    Trait Implementations§

    source§

    impl<F: Debug + Field> Debug for Constraint<F>

    source§

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

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

    impl<F: Field, S: AsRef<str>> From<(S, Expression<F>)> for Constraint<F>

    source§

    fn from((name, poly): (S, Expression<F>)) -> Self

    Converts to this type from the input type.
    source§

    impl<F: Field> From<Expression<F>> for Constraint<F>

    source§

    fn from(poly: Expression<F>) -> Self

    Converts to this type from the input type.

    Auto Trait Implementations§

    §

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

    §

    impl<F> Send for Constraint<F>

    §

    impl<F> Sync for Constraint<F>

    §

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

    §

    impl<F> UnwindSafe for Constraint<F>where F: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere @@ -108,8 +108,8 @@ T: ?Sized,

    Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
    §

    impl<T> TryConv for T

    §

    fn try_conv<T>(self) -> Result<T, Self::Error>where Self: TryInto<T>,

    Attempts to convert self into T using TryInto<T>. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

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

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

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

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere + U: Into<T>,

    §

    type Error = Infallible

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

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

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

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

    §

    fn vzip(self) -> V

    §

    impl<T> WithSubscriber for T

    §

    fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

    Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
    §

    fn with_current_subscriber(self) -> WithDispatch<Self>

    Attaches the current default Subscriber to this type, returning a diff --git a/halo2_proofs/plonk/struct.ConstraintSystem.html b/halo2_proofs/plonk/struct.ConstraintSystem.html index 90d3dc5749..dd2e0c8de4 100644 --- a/halo2_proofs/plonk/struct.ConstraintSystem.html +++ b/halo2_proofs/plonk/struct.ConstraintSystem.html @@ -1,4 +1,4 @@ -ConstraintSystem in halo2_proofs::plonk - Rust +ConstraintSystem in halo2_proofs::plonk - Rust +Constraints in halo2_proofs::plonk - Rust +FirstPhase in halo2_proofs::plonk - Rust +Fixed in halo2_proofs::plonk - Rust

    Struct halo2_proofs::plonk::Fixed

    source ·
    pub struct Fixed;
    Expand description

    A fixed column

    -

    Trait Implementations§

    source§

    impl Clone for Fixed

    source§

    fn clone(&self) -> Fixed

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

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

    Performs copy-assignment from source. Read more
    source§

    impl ColumnType for Fixed

    source§

    fn query_cell<F: Field>(&self, index: usize, at: Rotation) -> Expression<F>

    Return expression from cell
    source§

    impl Debug for Fixed

    source§

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

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

    impl From<Fixed> for Any

    source§

    fn from(_: Fixed) -> Any

    Converts to this type from the input type.
    source§

    impl Hash for Fixed

    source§

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

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

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

    Trait Implementations§

    source§

    impl Clone for Fixed

    source§

    fn clone(&self) -> Fixed

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

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

    Performs copy-assignment from source. Read more
    source§

    impl ColumnType for Fixed

    source§

    fn query_cell<F: Field>(&self, index: usize, at: Rotation) -> Expression<F>

    Return expression from cell
    source§

    impl Debug for Fixed

    source§

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

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

    impl From<Fixed> for Any

    source§

    fn from(_: Fixed) -> Any

    Converts to this type from the input type.
    source§

    impl Hash for Fixed

    source§

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

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

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

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

    impl PartialEq for Fixed

    source§

    fn eq(&self, other: &Fixed) -> 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 @@ -109,8 +109,8 @@ builds.
    source§

    impl<T> ToOwned for Twhere T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    §

    impl<T> TryConv for T

    §

    fn try_conv<T>(self) -> Result<T, Self::Error>where Self: TryInto<T>,

    Attempts to convert self into T using TryInto<T>. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

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

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

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

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere + U: Into<T>,

    §

    type Error = Infallible

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

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

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

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

    §

    fn vzip(self) -> V

    §

    impl<T> WithSubscriber for T

    §

    fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

    Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
    §

    fn with_current_subscriber(self) -> WithDispatch<Self>

    Attaches the current default Subscriber to this type, returning a diff --git a/halo2_proofs/plonk/struct.FixedQuery.html b/halo2_proofs/plonk/struct.FixedQuery.html index 7a453e0811..d88e5f777a 100644 --- a/halo2_proofs/plonk/struct.FixedQuery.html +++ b/halo2_proofs/plonk/struct.FixedQuery.html @@ -1,4 +1,4 @@ -FixedQuery in halo2_proofs::plonk - Rust +FixedQuery in halo2_proofs::plonk - Rust +Gate in halo2_proofs::plonk - Rust +Instance in halo2_proofs::plonk - Rust
    pub struct Instance;
    Expand description

    An instance column

    -

    Trait Implementations§

    source§

    impl Clone for Instance

    source§

    fn clone(&self) -> Instance

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

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

    Performs copy-assignment from source. Read more
    source§

    impl ColumnType for Instance

    source§

    fn query_cell<F: Field>(&self, index: usize, at: Rotation) -> Expression<F>

    Return expression from cell
    source§

    impl Debug for Instance

    source§

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

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

    impl From<Instance> for Any

    source§

    fn from(_: Instance) -> Any

    Converts to this type from the input type.
    source§

    impl Hash for Instance

    source§

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

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

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

    Trait Implementations§

    source§

    impl Clone for Instance

    source§

    fn clone(&self) -> Instance

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

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

    Performs copy-assignment from source. Read more
    source§

    impl ColumnType for Instance

    source§

    fn query_cell<F: Field>(&self, index: usize, at: Rotation) -> Expression<F>

    Return expression from cell
    source§

    impl Debug for Instance

    source§

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

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

    impl From<Instance> for Any

    source§

    fn from(_: Instance) -> Any

    Converts to this type from the input type.
    source§

    impl Hash for Instance

    source§

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

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

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

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

    impl PartialEq for Instance

    source§

    fn eq(&self, other: &Instance) -> 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 @@ -109,8 +109,8 @@ builds.
    source§

    impl<T> ToOwned for Twhere T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    §

    impl<T> TryConv for T

    §

    fn try_conv<T>(self) -> Result<T, Self::Error>where Self: TryInto<T>,

    Attempts to convert self into T using TryInto<T>. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

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

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

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

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere + U: Into<T>,

    §

    type Error = Infallible

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

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

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

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

    §

    fn vzip(self) -> V

    §

    impl<T> WithSubscriber for T

    §

    fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

    Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
    §

    fn with_current_subscriber(self) -> WithDispatch<Self>

    Attaches the current default Subscriber to this type, returning a diff --git a/halo2_proofs/plonk/struct.InstanceQuery.html b/halo2_proofs/plonk/struct.InstanceQuery.html index b4866184a4..e94c05bfe7 100644 --- a/halo2_proofs/plonk/struct.InstanceQuery.html +++ b/halo2_proofs/plonk/struct.InstanceQuery.html @@ -1,4 +1,4 @@ -InstanceQuery in halo2_proofs::plonk - Rust +InstanceQuery in halo2_proofs::plonk - Rust +PinnedConstraintSystem in halo2_proofs::plonk - Rust +PinnedVerificationKey in halo2_proofs::plonk - Rust +ProvingKey in halo2_proofs::plonk - Rust +SecondPhase in halo2_proofs::plonk - Rust +Selector in halo2_proofs::plonk - Rust +TableColumn in halo2_proofs::plonk - Rust +ThirdPhase in halo2_proofs::plonk - Rust +VerifyingKey in halo2_proofs::plonk - Rust +VirtualCell in halo2_proofs::plonk - Rust
    pub struct VirtualCell { /* private fields */ }
    Expand description

    A “virtual cell” is a PLONK cell that has been queried at a particular relative offset within a custom gate.

    -

    Trait Implementations§

    source§

    impl Clone for VirtualCell

    source§

    fn clone(&self) -> VirtualCell

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

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for VirtualCell

    source§

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

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

    impl<Col: Into<Column<Any>>> From<(Col, Rotation)> for VirtualCell

    source§

    fn from((column, rotation): (Col, Rotation)) -> Self

    Converts to this type from the input type.
    source§

    impl From<VirtualCell> for VirtualCell

    source§

    fn from(c: VirtualCell) -> Self

    Converts to this type from the input type.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere +

    Trait Implementations§

    source§

    impl Clone for VirtualCell

    source§

    fn clone(&self) -> VirtualCell

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

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for VirtualCell

    source§

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

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

    impl<Col: Into<Column<Any>>> From<(Col, Rotation)> for VirtualCell

    source§

    fn from((column, rotation): (Col, Rotation)) -> Self

    Converts to this type from the input type.
    source§

    impl From<VirtualCell> for VirtualCell

    source§

    fn from(c: VirtualCell) -> Self

    Converts to this type from the input type.

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for Twhere T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for Twhere T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for Twhere T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<T> Conv for T

    §

    fn conv<T>(self) -> Twhere @@ -106,8 +106,8 @@ builds.

    source§

    impl<T> ToOwned for Twhere T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    §

    impl<T> TryConv for T

    §

    fn try_conv<T>(self) -> Result<T, Self::Error>where Self: TryInto<T>,

    Attempts to convert self into T using TryInto<T>. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

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

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

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

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere + U: Into<T>,

    §

    type Error = Infallible

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

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

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

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

    §

    fn vzip(self) -> V

    §

    impl<T> WithSubscriber for T

    §

    fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

    Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
    §

    fn with_current_subscriber(self) -> WithDispatch<Self>

    Attaches the current default Subscriber to this type, returning a diff --git a/halo2_proofs/plonk/struct.VirtualCells.html b/halo2_proofs/plonk/struct.VirtualCells.html index aad3f7900b..1970b66743 100644 --- a/halo2_proofs/plonk/struct.VirtualCells.html +++ b/halo2_proofs/plonk/struct.VirtualCells.html @@ -1,4 +1,4 @@ -VirtualCells in halo2_proofs::plonk - Rust +VirtualCells in halo2_proofs::plonk - Rust +Assignment in halo2_proofs::plonk - Rust +Circuit in halo2_proofs::plonk - Rust +ColumnType in halo2_proofs::plonk - Rust +FloorPlanner in halo2_proofs::plonk - Rust +Phase in halo2_proofs::plonk - Rust +halo2_proofs::poly::commitment - Rust +Blind in halo2_proofs::poly::commitment - Rust
    pub struct Blind<F>(pub F);
    Expand description

    Wrapper type around a blinding factor.

    Tuple Fields§

    §0: F

    Implementations§

    source§

    impl<F: Field> Blind<F>

    source

    pub fn new<R: RngCore>(rng: &mut R) -> Self

    Given rng creates new blinding scalar

    -

    Trait Implementations§

    source§

    impl<F: Field> Add for Blind<F>

    §

    type Output = Blind<F>

    The resulting type after applying the + operator.
    source§

    fn add(self, rhs: Blind<F>) -> Self

    Performs the + operation. Read more
    source§

    impl<F: Field> AddAssign<F> for Blind<F>

    source§

    fn add_assign(&mut self, rhs: F)

    Performs the += operation. Read more
    source§

    impl<F: Field> AddAssign for Blind<F>

    source§

    fn add_assign(&mut self, rhs: Blind<F>)

    Performs the += operation. Read more
    source§

    impl<F: Clone> Clone for Blind<F>

    source§

    fn clone(&self) -> Blind<F>

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

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

    Performs copy-assignment from source. Read more
    source§

    impl<F: Debug> Debug for Blind<F>

    source§

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

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

    impl<F: Field> Default for Blind<F>

    source§

    fn default() -> Self

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

    impl<F: Field> Mul for Blind<F>

    §

    type Output = Blind<F>

    The resulting type after applying the * operator.
    source§

    fn mul(self, rhs: Blind<F>) -> Self

    Performs the * operation. Read more
    source§

    impl<F: Field> MulAssign<F> for Blind<F>

    source§

    fn mul_assign(&mut self, rhs: F)

    Performs the *= operation. Read more
    source§

    impl<F: Field> MulAssign for Blind<F>

    source§

    fn mul_assign(&mut self, rhs: Blind<F>)

    Performs the *= operation. Read more
    source§

    impl<F: PartialEq> PartialEq for Blind<F>

    source§

    fn eq(&self, other: &Blind<F>) -> bool

    This method tests for self and other values to be equal, and is used +

    Trait Implementations§

    source§

    impl<F: Field> Add for Blind<F>

    §

    type Output = Blind<F>

    The resulting type after applying the + operator.
    source§

    fn add(self, rhs: Blind<F>) -> Self

    Performs the + operation. Read more
    source§

    impl<F: Field> AddAssign<F> for Blind<F>

    source§

    fn add_assign(&mut self, rhs: F)

    Performs the += operation. Read more
    source§

    impl<F: Field> AddAssign for Blind<F>

    source§

    fn add_assign(&mut self, rhs: Blind<F>)

    Performs the += operation. Read more
    source§

    impl<F: Clone> Clone for Blind<F>

    source§

    fn clone(&self) -> Blind<F>

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

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

    Performs copy-assignment from source. Read more
    source§

    impl<F: Debug> Debug for Blind<F>

    source§

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

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

    impl<F: Field> Default for Blind<F>

    source§

    fn default() -> Self

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

    impl<F: Field> Mul for Blind<F>

    §

    type Output = Blind<F>

    The resulting type after applying the * operator.
    source§

    fn mul(self, rhs: Blind<F>) -> Self

    Performs the * operation. Read more
    source§

    impl<F: Field> MulAssign<F> for Blind<F>

    source§

    fn mul_assign(&mut self, rhs: F)

    Performs the *= operation. Read more
    source§

    impl<F: Field> MulAssign for Blind<F>

    source§

    fn mul_assign(&mut self, rhs: Blind<F>)

    Performs the *= operation. Read more
    source§

    impl<F: PartialEq> PartialEq for Blind<F>

    source§

    fn eq(&self, other: &Blind<F>) -> bool

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

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

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

    impl<F: Copy> Copy for Blind<F>

    source§

    impl<F: Eq> Eq for Blind<F>

    source§

    impl<F> StructuralEq for Blind<F>

    source§

    impl<F> StructuralPartialEq for Blind<F>

    Auto Trait Implementations§

    §

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

    §

    impl<F> Send for Blind<F>where @@ -113,8 +113,8 @@ builds.

    source§

    impl<T> ToOwned for Twhere T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    §

    impl<T> TryConv for T

    §

    fn try_conv<T>(self) -> Result<T, Self::Error>where Self: TryInto<T>,

    Attempts to convert self into T using TryInto<T>. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

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

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

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

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere + U: Into<T>,

    §

    type Error = Infallible

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

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

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

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

    §

    fn vzip(self) -> V

    §

    impl<T> WithSubscriber for T

    §

    fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

    Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
    §

    fn with_current_subscriber(self) -> WithDispatch<Self>

    Attaches the current default Subscriber to this type, returning a diff --git a/halo2_proofs/poly/commitment/trait.CommitmentScheme.html b/halo2_proofs/poly/commitment/trait.CommitmentScheme.html index 7f0c95d6d6..0277577562 100644 --- a/halo2_proofs/poly/commitment/trait.CommitmentScheme.html +++ b/halo2_proofs/poly/commitment/trait.CommitmentScheme.html @@ -1,4 +1,4 @@ -CommitmentScheme in halo2_proofs::poly::commitment - Rust +CommitmentScheme in halo2_proofs::poly::commitment - Rust +MSM in halo2_proofs::poly::commitment - Rust +Params in halo2_proofs::poly::commitment - Rust +ParamsProver in halo2_proofs::poly::commitment - Rust +ParamsVerifier in halo2_proofs::poly::commitment - Rust +Prover in halo2_proofs::poly::commitment - Rust +Verifier in halo2_proofs::poly::commitment - Rust +Error in halo2_proofs::poly - Rust +halo2_proofs::poly - Rust +create_proof in halo2_proofs::poly::ipa::commitment - Rust +verify_proof in halo2_proofs::poly::ipa::commitment - Rust +halo2_proofs::poly::ipa::commitment - Rust +IPACommitmentScheme in halo2_proofs::poly::ipa::commitment - Rust
    pub struct IPACommitmentScheme<C: CurveAffine> { /* private fields */ }
    Expand description

    Concrete IPA commitment scheme

    Trait Implementations§

    source§

    impl<C: CurveAffine> CommitmentScheme for IPACommitmentScheme<C>

    §

    type Scalar = <C as CurveAffine>::ScalarExt

    Application field of this commitment scheme
    §

    type Curve = C

    Elliptic curve used to commit the application and witnesses
    §

    type ParamsProver = ParamsIPA<C>

    Constant prover parameters
    §

    type ParamsVerifier = ParamsIPA<C>

    Constant verifier parameters
    source§

    fn new_params(k: u32) -> Self::ParamsProver

    Wrapper for parameter generator
    source§

    fn read_params<R: Read>(reader: &mut R) -> Result<Self::ParamsProver>

    Wrapper for parameter reader
    source§

    impl<C: Debug + CurveAffine> Debug for IPACommitmentScheme<C>

    source§

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

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

    impl<'params, C: CurveAffine> Guard<IPACommitmentScheme<C>> for GuardIPA<'params, C>

    Define accumulator type as MSMIPA

    -
    §

    type MSMAccumulator = MSMIPA<'params, C>

    Multi scalar engine which is not evaluated yet.
    source§

    impl<'params, C: CurveAffine> Prover<'params, IPACommitmentScheme<C>> for ProverIPA<'params, C>

    source§

    fn create_proof<'com, Z: EncodedChallenge<C>, T: TranscriptWrite<C, Z>, R, I>( +

    §

    type MSMAccumulator = MSMIPA<'params, C>

    Multi scalar engine which is not evaluated yet.
    source§

    impl<'params, C: CurveAffine> Prover<'params, IPACommitmentScheme<C>> for ProverIPA<'params, C>

    source§

    fn create_proof<'com, Z: EncodedChallenge<C>, T: TranscriptWrite<C, Z>, R, I>( &self, rng: R, transcript: &mut T, @@ -23,7 +23,7 @@ ) -> Result<()>where I: IntoIterator<Item = ProverQuery<'com, C>> + Clone, R: RngCore,

    Create a multi-opening proof

    -
    source§

    const QUERY_INSTANCE: bool = true

    Query instance or not
    source§

    fn new(params: &'params ParamsIPA<C>) -> Self

    Creates new prover instance
    source§

    impl<'params, C: CurveAffine> VerificationStrategy<'params, IPACommitmentScheme<C>, VerifierIPA<'params, C>> for AccumulatorStrategy<'params, C>

    source§

    fn finalize(self) -> bool

    Finalizes the batch and checks its validity.

    +
    source§

    const QUERY_INSTANCE: bool = true

    Query instance or not
    source§

    fn new(params: &'params ParamsIPA<C>) -> Self

    Creates new prover instance
    source§

    impl<'params, C: CurveAffine> VerificationStrategy<'params, IPACommitmentScheme<C>, VerifierIPA<'params, C>> for AccumulatorStrategy<'params, C>

    source§

    fn finalize(self) -> bool

    Finalizes the batch and checks its validity.

    Returns false if some proof was invalid. If the caller needs to identify specific failing proofs, it must re-process the proofs separately.

    §

    type Output = AccumulatorStrategy<'params, C>

    The output type of this verification strategy after processing a proof.
    source§

    fn new(params: &'params ParamsIPA<C>) -> Self

    Creates new verification strategy instance
    source§

    fn process( @@ -33,12 +33,12 @@ output.

    source§

    impl<'params, C: CurveAffine> VerificationStrategy<'params, IPACommitmentScheme<C>, VerifierIPA<'params, C>> for SingleStrategy<'params, C>

    source§

    fn finalize(self) -> bool

    Finalizes the batch and checks its validity.

    Returns false if some proof was invalid. If the caller needs to identify specific failing proofs, it must re-process the proofs separately.

    -
    §

    type Output = ()

    The output type of this verification strategy after processing a proof.
    source§

    fn new(params: &'params ParamsIPA<C>) -> Self

    Creates new verification strategy instance
    source§

    fn process( +

    §

    type Output = ()

    The output type of this verification strategy after processing a proof.
    source§

    fn new(params: &'params ParamsIPA<C>) -> Self

    Creates new verification strategy instance
    source§

    fn process( self, f: impl FnOnce(MSMIPA<'params, C>) -> Result<GuardIPA<'params, C>, Error> ) -> Result<Self::Output, Error>

    Obtains an MSM from the verifier strategy and yields back the strategy’s output.
    source§

    impl<'params, C: CurveAffine> Verifier<'params, IPACommitmentScheme<C>> for VerifierIPA<'params, C>

    §

    type Guard = GuardIPA<'params, C>

    Unfinalized verification result. This is returned in verification -to allow developer to compress or combined verification results
    §

    type MSMAccumulator = MSMIPA<'params, C>

    Accumulator fot comressed verification
    source§

    const QUERY_INSTANCE: bool = true

    Query instance or not
    source§

    fn new(params: &'params ParamsVerifierIPA<C>) -> Self

    Creates new verifier instance
    source§

    fn verify_proof<'com, E: EncodedChallenge<C>, T: TranscriptRead<C, E>, I>( +to allow developer to compress or combined verification results

    §

    type MSMAccumulator = MSMIPA<'params, C>

    Accumulator fot comressed verification
    source§

    const QUERY_INSTANCE: bool = true

    Query instance or not
    source§

    fn new(params: &'params ParamsVerifierIPA<C>) -> Self

    Creates new verifier instance
    source§

    fn verify_proof<'com, E: EncodedChallenge<C>, T: TranscriptRead<C, E>, I>( &self, transcript: &mut T, queries: I, @@ -138,8 +138,8 @@ T: ?Sized,

    Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
    §

    impl<T> TryConv for T

    §

    fn try_conv<T>(self) -> Result<T, Self::Error>where Self: TryInto<T>,

    Attempts to convert self into T using TryInto<T>. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

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

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

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

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere + U: Into<T>,

    §

    type Error = Infallible

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

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

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

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

    §

    fn vzip(self) -> V

    §

    impl<T> WithSubscriber for T

    §

    fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

    Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
    §

    fn with_current_subscriber(self) -> WithDispatch<Self>

    Attaches the current default Subscriber to this type, returning a diff --git a/halo2_proofs/poly/ipa/commitment/struct.ParamsIPA.html b/halo2_proofs/poly/ipa/commitment/struct.ParamsIPA.html index 3b70728578..2047a38424 100644 --- a/halo2_proofs/poly/ipa/commitment/struct.ParamsIPA.html +++ b/halo2_proofs/poly/ipa/commitment/struct.ParamsIPA.html @@ -1,4 +1,4 @@ -ParamsIPA in halo2_proofs::poly::ipa::commitment - Rust +ParamsIPA in halo2_proofs::poly::ipa::commitment - Rust +ParamsVerifierIPA in halo2_proofs::poly::ipa::commitment - Rust +halo2_proofs::poly::ipa - Rust +halo2_proofs::poly::ipa::msm - Rust +MSMIPA in halo2_proofs::poly::ipa::msm - Rust +halo2_proofs::poly::ipa::multiopen - Rust +ProverIPA in halo2_proofs::poly::ipa::multiopen - Rust +VerifierIPA in halo2_proofs::poly::ipa::multiopen - Rust +halo2_proofs::poly::ipa::strategy - Rust +Accumulator in halo2_proofs::poly::ipa::strategy - Rust +AccumulatorStrategy in halo2_proofs::poly::ipa::strategy - Rust +GuardIPA in halo2_proofs::poly::ipa::strategy - Rust +SingleStrategy in halo2_proofs::poly::ipa::strategy - Rust +halo2_proofs::poly::kzg::commitment - Rust +KZGCommitmentScheme in halo2_proofs::poly::kzg::commitment - Rust +ParamsKZG in halo2_proofs::poly::kzg::commitment - Rust +ParamsVerifierKZG in halo2_proofs::poly::kzg::commitment - Rust +halo2_proofs::poly::kzg - Rust +halo2_proofs::poly::kzg::msm - Rust +DualMSM in halo2_proofs::poly::kzg::msm - Rust +MSMKZG in halo2_proofs::poly::kzg::msm - Rust +halo2_proofs::poly::kzg::multiopen - Rust +ProverGWC in halo2_proofs::poly::kzg::multiopen - Rust +ProverSHPLONK in halo2_proofs::poly::kzg::multiopen - Rust +VerifierGWC in halo2_proofs::poly::kzg::multiopen - Rust +VerifierSHPLONK in halo2_proofs::poly::kzg::multiopen - Rust +halo2_proofs::poly::kzg::strategy - Rust +AccumulatorStrategy in halo2_proofs::poly::kzg::strategy - Rust +GuardKZG in halo2_proofs::poly::kzg::strategy - Rust +SingleStrategy in halo2_proofs::poly::kzg::strategy - Rust +Coeff in halo2_proofs::poly - Rust +EvaluationDomain in halo2_proofs::poly - Rust +ExtendedLagrangeCoeff in halo2_proofs::poly - Rust +LagrangeCoeff in halo2_proofs::poly - Rust +PinnedEvaluationDomain in halo2_proofs::poly - Rust +Polynomial in halo2_proofs::poly - Rust +ProverQuery in halo2_proofs::poly - Rust -
    pub struct ProverQuery<'com, C: CurveAffine> { /* private fields */ }
    Expand description

    A polynomial query at a point

    -

    Trait Implementations§

    source§

    impl<'com, C: Clone + CurveAffine> Clone for ProverQuery<'com, C>where +
    pub struct ProverQuery<'com, C: CurveAffine> { /* private fields */ }
    Expand description

    A polynomial query at a point

    +

    Implementations§

    source§

    impl<'com, C> ProverQuery<'com, C>where + C: CurveAffine,

    source

    pub fn new( + point: C::Scalar, + poly: &'com Polynomial<C::Scalar, Coeff>, + blind: Blind<C::Scalar> +) -> Self

    Create a new prover query based on a polynomial

    +

    Trait Implementations§

    source§

    impl<'com, C: Clone + CurveAffine> Clone for ProverQuery<'com, C>where C::Scalar: Clone,

    source§

    fn clone(&self) -> ProverQuery<'com, C>

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

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

    Performs copy-assignment from source. Read more
    source§

    impl<'com, C: Debug + CurveAffine> Debug for ProverQuery<'com, C>where - C::Scalar: Debug,

    source§

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

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    §

    impl<'com, C> RefUnwindSafe for ProverQuery<'com, C>where + C::Scalar: Debug,

    source§

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

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

    impl<'com, C: Copy + CurveAffine> Copy for ProverQuery<'com, C>where + C::Scalar: Copy,

    Auto Trait Implementations§

    §

    impl<'com, C> RefUnwindSafe for ProverQuery<'com, C>where <C as CurveAffine>::ScalarExt: RefUnwindSafe,

    §

    impl<'com, C> Send for ProverQuery<'com, C>

    §

    impl<'com, C> Sync for ProverQuery<'com, C>

    §

    impl<'com, C> Unpin for ProverQuery<'com, C>where <C as CurveAffine>::ScalarExt: Unpin,

    §

    impl<'com, C> UnwindSafe for ProverQuery<'com, C>where <C as CurveAffine>::ScalarExt: UnwindSafe + RefUnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for Twhere @@ -110,8 +117,8 @@ builds.

    source§

    impl<T> ToOwned for Twhere T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    §

    impl<T> TryConv for T

    §

    fn try_conv<T>(self) -> Result<T, Self::Error>where Self: TryInto<T>,

    Attempts to convert self into T using TryInto<T>. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

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

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

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

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere + U: Into<T>,

    §

    type Error = Infallible

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

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

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

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

    §

    fn vzip(self) -> V

    §

    impl<T> WithSubscriber for T

    §

    fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

    Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
    §

    fn with_current_subscriber(self) -> WithDispatch<Self>

    Attaches the current default Subscriber to this type, returning a diff --git a/halo2_proofs/poly/struct.Rotation.html b/halo2_proofs/poly/struct.Rotation.html index a8626da5c7..6829767f54 100644 --- a/halo2_proofs/poly/struct.Rotation.html +++ b/halo2_proofs/poly/struct.Rotation.html @@ -1,4 +1,4 @@ -Rotation in halo2_proofs::poly - Rust +Rotation in halo2_proofs::poly - Rust +VerifierQuery in halo2_proofs::poly - Rust -
    pub struct VerifierQuery<'com, C: CurveAffine, M: MSM<C>> { /* private fields */ }
    Expand description

    A polynomial query at a point

    -

    Implementations§

    source§

    impl<'com, C: CurveAffine, M: MSM<C>> VerifierQuery<'com, C, M>

    source

    pub fn new_commitment( +
    pub struct VerifierQuery<'com, C: CurveAffine, M: MSM<C>> { /* private fields */ }
    Expand description

    A polynomial query at a point

    +

    Implementations§

    source§

    impl<'com, C: CurveAffine, M: MSM<C>> VerifierQuery<'com, C, M>

    source

    pub fn new_commitment( commitment: &'com C, point: C::Scalar, eval: C::Scalar ) -> Self

    Create a new verifier query based on a commitment

    -
    source

    pub fn new_msm( +

    source

    pub fn new_msm( msm: &'com M, point: C::Scalar, eval: C::Scalar ) -> VerifierQuery<'com, C, M>

    Create a new verifier query based on a linear combination of commitments

    -

    Trait Implementations§

    source§

    impl<'com, C: CurveAffine, M: MSM<C>> Clone for VerifierQuery<'com, C, M>

    source§

    fn clone(&self) -> Self

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

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

    Performs copy-assignment from source. Read more
    source§

    impl<'com, C: Debug + CurveAffine, M: Debug + MSM<C>> Debug for VerifierQuery<'com, C, M>where - C::Scalar: Debug,

    source§

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

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    §

    impl<'com, C, M> RefUnwindSafe for VerifierQuery<'com, C, M>where +

    source§

    impl<'com, C, M> VerifierQuery<'com, C, M>where + C: CurveAffine, + M: MSM<C>,

    source

    pub fn new( + point: C::Scalar, + commitment: CommitmentReference<'com, C, M>, + eval: C::Scalar +) -> Self

    Create a new verifier query based on a commitment

    +

    Trait Implementations§

    source§

    impl<'com, C: Clone + CurveAffine, M: Clone + MSM<C>> Clone for VerifierQuery<'com, C, M>where + C::Scalar: Clone,

    source§

    fn clone(&self) -> VerifierQuery<'com, C, M>

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

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

    Performs copy-assignment from source. Read more
    source§

    impl<'com, C: Debug + CurveAffine, M: Debug + MSM<C>> Debug for VerifierQuery<'com, C, M>where + C::Scalar: Debug,

    source§

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

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

    impl<'com, C: Copy + CurveAffine, M: Copy + MSM<C>> Copy for VerifierQuery<'com, C, M>where + C::Scalar: Copy,

    Auto Trait Implementations§

    §

    impl<'com, C, M> RefUnwindSafe for VerifierQuery<'com, C, M>where C: RefUnwindSafe, M: RefUnwindSafe, <C as CurveAffine>::ScalarExt: RefUnwindSafe,

    §

    impl<'com, C, M> Send for VerifierQuery<'com, C, M>

    §

    impl<'com, C, M> Sync for VerifierQuery<'com, C, M>

    §

    impl<'com, C, M> Unpin for VerifierQuery<'com, C, M>where @@ -123,8 +132,8 @@ builds.

    source§

    impl<T> ToOwned for Twhere T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    §

    impl<T> TryConv for T

    §

    fn try_conv<T>(self) -> Result<T, Self::Error>where Self: TryInto<T>,

    Attempts to convert self into T using TryInto<T>. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

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

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

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

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere + U: Into<T>,

    §

    type Error = Infallible

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

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

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

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

    §

    fn vzip(self) -> V

    §

    impl<T> WithSubscriber for T

    §

    fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

    Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
    §

    fn with_current_subscriber(self) -> WithDispatch<Self>

    Attaches the current default Subscriber to this type, returning a diff --git a/halo2_proofs/poly/trait.Basis.html b/halo2_proofs/poly/trait.Basis.html index 9cd50a4365..f977386ee1 100644 --- a/halo2_proofs/poly/trait.Basis.html +++ b/halo2_proofs/poly/trait.Basis.html @@ -1,4 +1,4 @@ -Basis in halo2_proofs::poly - Rust +Basis in halo2_proofs::poly - Rust +Guard in halo2_proofs::poly - Rust +VerificationStrategy in halo2_proofs::poly - Rust +halo2_proofs::transcript - Rust +Blake2bRead in halo2_proofs::transcript - Rust +Blake2bWrite in halo2_proofs::transcript - Rust +Challenge255 in halo2_proofs::transcript - Rust
    pub struct Challenge255<C: CurveAffine>(/* private fields */);
    Expand description

    A 255-bit challenge.

    -

    Methods from Deref<Target = [u8; 32]>§

    1.57.0 · source

    pub fn as_slice(&self) -> &[T]

    Returns a slice containing the entire array. Equivalent to &s[..].

    +

    Methods from Deref<Target = [u8; 32]>§

    source

    pub fn as_ascii(&self) -> Option<&[AsciiChar; N]>

    🔬This is a nightly-only experimental API. (ascii_char)

    Converts this array of bytes into a array of ASCII characters, +or returns None if any of the characters is non-ASCII.

    +
    Examples
    +
    #![feature(ascii_char)]
    +#![feature(const_option)]
    +
    +const HEX_DIGITS: [std::ascii::Char; 16] =
    +    *b"0123456789abcdef".as_ascii().unwrap();
    +
    +assert_eq!(HEX_DIGITS[1].as_str(), "1");
    +assert_eq!(HEX_DIGITS[10].as_str(), "a");
    +
    source

    pub unsafe fn as_ascii_unchecked(&self) -> &[AsciiChar; N]

    🔬This is a nightly-only experimental API. (ascii_char)

    Converts this array of bytes into a array of ASCII characters, +without checking whether they’re valid.

    +
    Safety
    +

    Every byte in the array must be in 0..=127, or else this is UB.

    +
    1.57.0 · source

    pub fn as_slice(&self) -> &[T]

    Returns a slice containing the entire array. Equivalent to &s[..].

    source

    pub fn each_ref(&self) -> [&T; N]

    🔬This is a nightly-only experimental API. (array_methods)

    Borrows each element and returns an array of references with the same size as self.

    Example
    @@ -41,7 +56,7 @@
    Example
    indices from [M, N) (excluding the index N itself).

    Panics

    Panics if M > N.

    -
    Examples
    +
    Examples
    #![feature(split_array)]
     
     let v = [1, 2, 3, 4, 5, 6];
    @@ -69,7 +84,7 @@ 
    Examples
    indices from [N - M, N) (excluding the index N itself).

    Panics

    Panics if M > N.

    -
    Examples
    +
    Examples
    #![feature(split_array)]
     
     let v = [1, 2, 3, 4, 5, 6];
    @@ -91,49 +106,34 @@ 
    Examples
    assert_eq!(left, &[]); assert_eq!(right, &[1, 2, 3, 4, 5, 6]); }
    -
    source

    pub fn as_ascii(&self) -> Option<&[AsciiChar; N]>

    🔬This is a nightly-only experimental API. (ascii_char)

    Converts this array of bytes into a array of ASCII characters, -or returns None if any of the characters is non-ASCII.

    -
    Examples
    -
    #![feature(ascii_char)]
    -#![feature(const_option)]
    -
    -const HEX_DIGITS: [std::ascii::Char; 16] =
    -    *b"0123456789abcdef".as_ascii().unwrap();
    -
    -assert_eq!(HEX_DIGITS[1].as_str(), "1");
    -assert_eq!(HEX_DIGITS[10].as_str(), "a");
    -
    source

    pub unsafe fn as_ascii_unchecked(&self) -> &[AsciiChar; N]

    🔬This is a nightly-only experimental API. (ascii_char)

    Converts this array of bytes into a array of ASCII characters, -without checking whether they’re valid.

    -
    Safety
    -

    Every byte in the array must be in 0..=127, or else this is UB.

    Trait Implementations§

    source§

    impl<C: Clone + CurveAffine> Clone for Challenge255<C>

    source§

    fn clone(&self) -> Challenge255<C>

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

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

    Performs copy-assignment from source. Read more
    source§

    impl<C: Debug + CurveAffine> Debug for Challenge255<C>

    source§

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

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

    impl<C: CurveAffine> Deref for Challenge255<C>

    §

    type Target = [u8; 32]

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl<C: CurveAffine> EncodedChallenge<C> for Challenge255<C>where C::Scalar: FromUniformBytes<64>,

    §

    type Input = [u8; 64]

    The Input type used to derive the challenge encoding. For example, an input from the Poseidon hash would be a base field element; an input from the Blake2b hash would be a [u8; 64].
    source§

    fn new(challenge_input: &[u8; 64]) -> Self

    Get an encoded challenge from a given input challenge.
    source§

    fn get_scalar(&self) -> C::Scalar

    Get a scalar field element from an encoded challenge.
    source§

    fn as_challenge_scalar<T>(&self) -> ChallengeScalar<C, T>

    Cast an encoded challenge as a typed ChallengeScalar.
    source§

    impl<R: Read, C: CurveAffine> Transcript<C, Challenge255<C>> for Blake2bRead<R, C, Challenge255<C>>where - C::Scalar: FromUniformBytes<64>,

    source§

    fn squeeze_challenge(&mut self) -> Challenge255<C>

    Squeeze an encoded verifier challenge from the transcript.
    source§

    fn common_point(&mut self, point: C) -> Result<()>

    Writing the point to the transcript without writing it to the proof, -treating it as a common input.
    source§

    fn common_scalar(&mut self, scalar: C::Scalar) -> Result<()>

    Writing the scalar to the transcript without writing it to the proof, -treating it as a common input.
    source§

    fn squeeze_challenge_scalar<T>(&mut self) -> ChallengeScalar<C, T>

    Squeeze a typed challenge (in the scalar field) from the transcript.
    source§

    impl<W: Write, C: CurveAffine> Transcript<C, Challenge255<C>> for Blake2bWrite<W, C, Challenge255<C>>where + C::Scalar: FromUniformBytes<64>,

    source§

    fn squeeze_challenge(&mut self) -> Challenge255<C>

    Squeeze an encoded verifier challenge from the transcript.
    source§

    fn common_point(&mut self, point: C) -> Result<()>

    Writing the point to the transcript without writing it to the proof, +treating it as a common input.
    source§

    fn common_scalar(&mut self, scalar: C::Scalar) -> Result<()>

    Writing the scalar to the transcript without writing it to the proof, +treating it as a common input.
    source§

    fn squeeze_challenge_scalar<T>(&mut self) -> ChallengeScalar<C, T>

    Squeeze a typed challenge (in the scalar field) from the transcript.
    source§

    impl<W: Write, C: CurveAffine> Transcript<C, Challenge255<C>> for Blake2bWrite<W, C, Challenge255<C>>where C::Scalar: FromUniformBytes<64>,

    source§

    fn squeeze_challenge(&mut self) -> Challenge255<C>

    Squeeze an encoded verifier challenge from the transcript.
    source§

    fn common_point(&mut self, point: C) -> Result<()>

    Writing the point to the transcript without writing it to the proof, treating it as a common input.
    source§

    fn common_scalar(&mut self, scalar: C::Scalar) -> Result<()>

    Writing the scalar to the transcript without writing it to the proof, treating it as a common input.
    source§

    fn squeeze_challenge_scalar<T>(&mut self) -> ChallengeScalar<C, T>

    Squeeze a typed challenge (in the scalar field) from the transcript.
    source§

    impl<R: Read, C: CurveAffine> Transcript<C, Challenge255<C>> for Keccak256Read<R, C, Challenge255<C>>where - C::Scalar: FromUniformBytes<64>,

    source§

    fn squeeze_challenge(&mut self) -> Challenge255<C>

    Squeeze an encoded verifier challenge from the transcript.
    source§

    fn common_point(&mut self, point: C) -> Result<()>

    Writing the point to the transcript without writing it to the proof, -treating it as a common input.
    source§

    fn common_scalar(&mut self, scalar: C::Scalar) -> Result<()>

    Writing the scalar to the transcript without writing it to the proof, -treating it as a common input.
    source§

    fn squeeze_challenge_scalar<T>(&mut self) -> ChallengeScalar<C, T>

    Squeeze a typed challenge (in the scalar field) from the transcript.
    source§

    impl<W: Write, C: CurveAffine> Transcript<C, Challenge255<C>> for Keccak256Write<W, C, Challenge255<C>>where - C::Scalar: FromUniformBytes<64>,

    source§

    fn squeeze_challenge(&mut self) -> Challenge255<C>

    Squeeze an encoded verifier challenge from the transcript.
    source§

    fn common_point(&mut self, point: C) -> Result<()>

    Writing the point to the transcript without writing it to the proof, -treating it as a common input.
    source§

    fn common_scalar(&mut self, scalar: C::Scalar) -> Result<()>

    Writing the scalar to the transcript without writing it to the proof, -treating it as a common input.
    source§

    fn squeeze_challenge_scalar<T>(&mut self) -> ChallengeScalar<C, T>

    Squeeze a typed challenge (in the scalar field) from the transcript.
    source§

    impl<R: Read, C: CurveAffine> TranscriptRead<C, Challenge255<C>> for Blake2bRead<R, C, Challenge255<C>>where + C::Scalar: FromUniformBytes<64>,

    source§

    fn squeeze_challenge(&mut self) -> Challenge255<C>

    Squeeze an encoded verifier challenge from the transcript.
    source§

    fn common_point(&mut self, point: C) -> Result<()>

    Writing the point to the transcript without writing it to the proof, +treating it as a common input.
    source§

    fn common_scalar(&mut self, scalar: C::Scalar) -> Result<()>

    Writing the scalar to the transcript without writing it to the proof, +treating it as a common input.
    source§

    fn squeeze_challenge_scalar<T>(&mut self) -> ChallengeScalar<C, T>

    Squeeze a typed challenge (in the scalar field) from the transcript.
    source§

    impl<W: Write, C: CurveAffine> Transcript<C, Challenge255<C>> for Keccak256Write<W, C, Challenge255<C>>where + C::Scalar: FromUniformBytes<64>,

    source§

    fn squeeze_challenge(&mut self) -> Challenge255<C>

    Squeeze an encoded verifier challenge from the transcript.
    source§

    fn common_point(&mut self, point: C) -> Result<()>

    Writing the point to the transcript without writing it to the proof, +treating it as a common input.
    source§

    fn common_scalar(&mut self, scalar: C::Scalar) -> Result<()>

    Writing the scalar to the transcript without writing it to the proof, +treating it as a common input.
    source§

    fn squeeze_challenge_scalar<T>(&mut self) -> ChallengeScalar<C, T>

    Squeeze a typed challenge (in the scalar field) from the transcript.
    source§

    impl<R: Read, C: CurveAffine> TranscriptRead<C, Challenge255<C>> for Blake2bRead<R, C, Challenge255<C>>where C::Scalar: FromUniformBytes<64>,

    source§

    fn read_point(&mut self) -> Result<C>

    Read a curve point from the prover.
    source§

    fn read_scalar(&mut self) -> Result<C::Scalar>

    Read a curve scalar from the prover.
    source§

    impl<R: Read, C: CurveAffine> TranscriptRead<C, Challenge255<C>> for Keccak256Read<R, C, Challenge255<C>>where C::Scalar: FromUniformBytes<64>,

    source§

    fn read_point(&mut self) -> Result<C>

    Read a curve point from the prover.
    source§

    fn read_scalar(&mut self) -> Result<C::Scalar>

    Read a curve scalar from the prover.
    source§

    impl<R: Read, C: CurveAffine> TranscriptReadBuffer<R, C, Challenge255<C>> for Blake2bRead<R, C, Challenge255<C>>where C::Scalar: FromUniformBytes<64>,

    source§

    fn init(reader: R) -> Self

    Initialize a transcript given an input buffer.

    source§

    impl<R: Read, C: CurveAffine> TranscriptReadBuffer<R, C, Challenge255<C>> for Keccak256Read<R, C, Challenge255<C>>where - C::Scalar: FromUniformBytes<64>,

    source§

    fn init(reader: R) -> Self

    Initialize a transcript given an input buffer.

    + C::Scalar: FromUniformBytes<64>,
    source§

    fn init(reader: R) -> Self

    Initialize a transcript given an input buffer.

    source§

    impl<W: Write, C: CurveAffine> TranscriptWrite<C, Challenge255<C>> for Blake2bWrite<W, C, Challenge255<C>>where C::Scalar: FromUniformBytes<64>,

    source§

    fn write_point(&mut self, point: C) -> Result<()>

    Write a curve point to the proof and the transcript.
    source§

    fn write_scalar(&mut self, scalar: C::Scalar) -> Result<()>

    Write a scalar to the proof and the transcript.
    source§

    impl<W: Write, C: CurveAffine> TranscriptWrite<C, Challenge255<C>> for Keccak256Write<W, C, Challenge255<C>>where C::Scalar: FromUniformBytes<64>,

    source§

    fn write_point(&mut self, point: C) -> Result<()>

    Write a curve point to the proof and the transcript.
    source§

    fn write_scalar(&mut self, scalar: C::Scalar) -> Result<()>

    Write a scalar to the proof and the transcript.
    source§

    impl<W: Write, C: CurveAffine> TranscriptWriterBuffer<W, C, Challenge255<C>> for Blake2bWrite<W, C, Challenge255<C>>where - C::Scalar: FromUniformBytes<64>,

    source§

    fn init(writer: W) -> Self

    Initialize a transcript given an output buffer.

    -
    source§

    fn finalize(self) -> W

    Conclude the interaction and return the output buffer (writer).
    source§

    impl<W: Write, C: CurveAffine> TranscriptWriterBuffer<W, C, Challenge255<C>> for Keccak256Write<W, C, Challenge255<C>>where - C::Scalar: FromUniformBytes<64>,

    source§

    fn init(writer: W) -> Self

    Initialize a transcript given an output buffer.

    -
    source§

    fn finalize(self) -> W

    Conclude the interaction and return the output buffer (writer).

    + C::Scalar: FromUniformBytes<64>,
    source§

    fn init(writer: W) -> Self

    Initialize a transcript given an output buffer.

    +
    source§

    fn finalize(self) -> W

    Conclude the interaction and return the output buffer (writer).
    source§

    impl<W: Write, C: CurveAffine> TranscriptWriterBuffer<W, C, Challenge255<C>> for Keccak256Write<W, C, Challenge255<C>>where + C::Scalar: FromUniformBytes<64>,

    source§

    fn init(writer: W) -> Self

    Initialize a transcript given an output buffer.

    +
    source§

    fn finalize(self) -> W

    Conclude the interaction and return the output buffer (writer).

    source§

    impl<C: Copy + CurveAffine> Copy for Challenge255<C>

    Auto Trait Implementations§

    §

    impl<C> RefUnwindSafe for Challenge255<C>where C: RefUnwindSafe,

    §

    impl<C> Send for Challenge255<C>

    §

    impl<C> Sync for Challenge255<C>

    §

    impl<C> Unpin for Challenge255<C>where C: Unpin,

    §

    impl<C> UnwindSafe for Challenge255<C>where @@ -228,8 +228,8 @@
    Safety
    builds.

    source§

    impl<T> ToOwned for Twhere T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    §

    impl<T> TryConv for T

    §

    fn try_conv<T>(self) -> Result<T, Self::Error>where Self: TryInto<T>,

    Attempts to convert self into T using TryInto<T>. Read more
    source§

    impl<T, U> TryFrom<U> for Twhere - U: Into<T>,

    §

    type Error = Infallible

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

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

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

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere + U: Into<T>,

    §

    type Error = Infallible

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

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for Twhere + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

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

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

    §

    fn vzip(self) -> V

    §

    impl<T> WithSubscriber for T

    §

    fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

    Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
    §

    fn with_current_subscriber(self) -> WithDispatch<Self>

    Attaches the current default Subscriber to this type, returning a diff --git a/halo2_proofs/transcript/struct.ChallengeScalar.html b/halo2_proofs/transcript/struct.ChallengeScalar.html index 5bdbd9a035..f181c74b6a 100644 --- a/halo2_proofs/transcript/struct.ChallengeScalar.html +++ b/halo2_proofs/transcript/struct.ChallengeScalar.html @@ -1,4 +1,4 @@ -ChallengeScalar in halo2_proofs::transcript - Rust +ChallengeScalar in halo2_proofs::transcript - Rust +Keccak256Read in halo2_proofs::transcript - Rust +Keccak256Write in halo2_proofs::transcript - Rust +EncodedChallenge in halo2_proofs::transcript - Rust +Transcript in halo2_proofs::transcript - Rust +TranscriptRead in halo2_proofs::transcript - Rust +TranscriptReadBuffer in halo2_proofs::transcript - Rust +TranscriptWrite in halo2_proofs::transcript - Rust +TranscriptWriterBuffer in halo2_proofs::transcript - Rust +Help -

    Rustdoc help

    Back
    \ No newline at end of file +

    Rustdoc help

    Back
    \ No newline at end of file diff --git a/search-index.js b/search-index.js index 557d406078..57343015d0 100644 --- a/search-index.js +++ b/search-index.js @@ -1,7 +1,7 @@ var searchIndex = JSON.parse('{\ "halo2":{"doc":"halo2","t":"","n":[],"q":[],"d":[],"i":[],"f":[],"c":[],"p":[],"b":[]},\ -"halo2_gadgets":{"doc":"This crate provides various common gadgets and chips for …","t":"AAAAAQIIDDDIQQDQDQDQDQDQQDQKLLKLLLLLLLLLLLLLLLLLLLALLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLKKKLLLLLKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKKKKENDDDDDIIQENSDEELLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLKRRRRFFFFDNENIIDDDDDQLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLKLLLLLLLLLLLKLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDIDGDQIIDLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLFLLLLLLLKLLLLLLKLKLKLLKLLKLLLLLLLLLLLLLLLLLLLLLLLLLRDQDDIQDDLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLKLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLQDIQQDIQDQDQQKQIQLLLLLLLLALLLLLLLLLLLLLLLLLKLLLLLLLLLLLLKKLLLLLLLLLLALLAKLLLLLLLLLLLLLLLLLLLKDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLRIDLLLALLLLLLLLKLLLLLLLDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLRDDRRLLRLRRLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLIDIIQLFFLLKLLAAFLLLLLFLLLFLALFFLLLLLKKLLLDDILLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["ecc","poseidon","sha256","sinsemilla","utilities","Base","BaseFitsInScalarInstructions","EccInstructions","FixedPoint","FixedPointBaseField","FixedPointShort","FixedPoints","FixedPoints","FullScalar","NonIdentityPoint","NonIdentityPoint","Point","Point","ScalarFixed","ScalarFixed","ScalarFixedShort","ScalarFixedShort","ScalarVar","ScalarVar","ShortScalar","X","X","add","add","add","add_incomplete","add_incomplete","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","chip","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","constrain_equal","constrain_equal","constrain_equal","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","drop","drop","drop","drop","drop","drop","drop","drop","drop","extract_p","extract_p","extract_p","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from_base","from_inner","from_inner","from_inner","from_inner","from_inner","from_inner","init","init","init","init","init","init","init","init","init","inner","inner","inner","into","into","into","into","into","into","into","into","into","mul","mul","mul","mul","mul","mul_fixed","mul_fixed_base_field_elem","mul_fixed_short","new","new","new","new","new","scalar_fixed_from_signed_short","scalar_var_from_base","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_from","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","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","witness_point","witness_point_non_id","witness_scalar_fixed","witness_scalar_var","BaseFieldElem","BaseFieldElem","EccChip","EccConfig","EccPoint","EccScalarFixed","EccScalarFixedShort","FixedPoint","FixedScalarKind","FixedScalarKind","FullScalar","FullWidth","NUM_WINDOWS","NonIdentityEccPoint","ScalarVar","ShortScalar","add","add_incomplete","advices","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","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","config","configure","constants","constrain_equal","construct","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","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","eq","eq","extract_p","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","generator","init","init","init","init","init","init","init","init","init","init","into","into","into","into","into","into","into","into","into","into","lagrange_coeffs","loaded","lookup_config","mul","mul_fixed","mul_fixed_base_field_elem","mul_fixed_short","point","point","scalar_fixed_from_signed_short","scalar_var_from_base","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_from","try_from","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","u","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","witness_point","witness_point_non_id","witness_scalar_fixed","witness_scalar_var","x","x","y","y","z","FIXED_BASE_WINDOW_SIZE","H","NUM_WINDOWS","NUM_WINDOWS_SHORT","compute_lagrange_coeffs","find_zs_and_us","test_lagrange_coeffs","test_zs_and_us","Hash","Message","PaddedWord","Padding","PoseidonInstructions","PoseidonSpongeInstructions","Pow5Chip","Pow5Config","Sponge","StateWord","Word","Word","absorb","add_input","add_input","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cell","clone","clone","clone","clone_into","clone_into","clone_into","config","configure","construct","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","finish_absorbing","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from_inner","get_output","get_output","hash","init","init","init","init","init","init","init","init","initial_state","initial_state","inner","into","into","into","into","into","into","into","loaded","new","permute","permute","primitives","squeeze","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","value","vzip","vzip","vzip","vzip","vzip","vzip","vzip","Absorbing","ConstantLength","Domain","Hash","Mds","P128Pow5T3","Padding","Spec","SpongeMode","Squeezing","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","constants","constants","constants","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","full_rounds","full_rounds","full_rounds","generate_constants","hash","init","init","init","init","init","init","initial_capacity_element","initial_capacity_element","into","into","into","into","into","name","name","padding","padding","partial_rounds","partial_rounds","partial_rounds","sbox","sbox","sbox","secure_mds","secure_mds","secure_mds","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","BLOCK_SIZE","BlockWord","BlockWord","Sha256","Sha256Digest","Sha256Instructions","State","Table16Chip","Table16Config","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","compress","compress","config","configure","construct","default","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","digest","digest","digest","drop","drop","drop","drop","drop","finalize","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","init","init","init","init","init","initialization","initialization","initialization_vector","initialization_vector","into","into","into","into","into","load","loaded","new","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","update","vzip","vzip","vzip","vzip","vzip","CellValue","CommitDomain","CommitDomains","CommitDomains","FixedPoints","HashDomain","HashDomains","HashDomains","Message","Message","MessagePiece","MessagePiece","NonIdentityPoint","Q","RunningSum","SinsemillaInstructions","X","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","chip","clone","clone","clone_into","clone_into","commit","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","extract","fmt","fmt","fmt","fmt","from","from","from","from","from_field_elem","from_pieces","from_subpieces","hash","hash_domain","hash_to_point","hash_to_point","init","init","init","init","inner","into","into","into","into","merkle","new","new","primitives","r","short_commit","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","witness_message_piece","SinsemillaChip","SinsemillaConfig","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","config","configure","construct","deref","deref","deref_mut","deref_mut","drop","drop","eq","eq","extract","fmt","fmt","from","from","hash_to_point","init","init","into","into","load","loaded","lookup_config","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","witness_message_piece","MERKLE_CRH_PERSONALIZATION","MerkleInstructions","MerklePath","borrow","borrow_mut","calculate_root","chip","clone","clone_into","construct","deref","deref_mut","drop","fmt","from","hash_layer","init","into","to_owned","try_from","try_into","type_id","vzip","MerkleChip","MerkleConfig","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","config","configure","construct","deref","deref","deref_mut","deref_mut","drop","drop","eq","eq","extract","fmt","fmt","from","from","hash_layer","hash_to_point","init","init","into","into","loaded","swap","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","witness_message_piece","C","CommitDomain","HashDomain","INV_TWO_POW_K","K","Q","Q","Q_PERSONALIZATION","R","SINSEMILLA_S","S_PERSONALIZATION","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","commit","deref","deref","deref_mut","deref_mut","drop","drop","fmt","fmt","from","from","hash","hash_to_point","init","init","into","into","new","new","short_commit","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","FieldValue","RangeConstrained","UtilitiesInstructions","Var","Var","bitrange_of","bitrange_subset","bool_check","borrow","borrow_mut","cell","clone","clone_into","cond_swap","decompose_running_sum","decompose_word","deref","deref_mut","drop","fmt","from","i2lebsp","init","inner","into","lebs2ip","load_private","lookup_range_check","num_bits","range_check","ternary","to_owned","try_from","try_into","type_id","unsound_unchecked","value","value","value","vzip","witness_short","CondSwapChip","CondSwapConfig","CondSwapInstructions","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","config","configure","construct","deref","deref","deref_mut","deref_mut","drop","drop","eq","fmt","fmt","from","from","init","init","into","into","loaded","swap","swap","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","RunningSum","RunningSumConfig","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","configure","copy_decompose","deref","deref","deref","deref_mut","deref_mut","drop","drop","eq","fmt","fmt","from","from","init","init","into","into","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","witness_decompose","LookupRangeCheckConfig","RunningSum","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","configure","copy_check","copy_short_check","deref","deref","deref","deref_mut","deref_mut","drop","drop","eq","fmt","fmt","from","from","init","init","into","into","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","witness_check","witness_short_check"],"q":[[0,"halo2_gadgets"],[5,"halo2_gadgets::ecc"],[201,"halo2_gadgets::ecc::chip"],[402,"halo2_gadgets::ecc::chip::constants"],[410,"halo2_gadgets::poseidon"],[546,"halo2_gadgets::poseidon::primitives"],[654,"halo2_gadgets::sha256"],[755,"halo2_gadgets::sinsemilla"],[848,"halo2_gadgets::sinsemilla::chip"],[893,"halo2_gadgets::sinsemilla::merkle"],[916,"halo2_gadgets::sinsemilla::merkle::chip"],[961,"halo2_gadgets::sinsemilla::primitives"],[1007,"halo2_gadgets::utilities"],[1048,"halo2_gadgets::utilities::cond_swap"],[1090,"halo2_gadgets::utilities::decompose_running_sum"],[1126,"halo2_gadgets::utilities::lookup_range_check"],[1164,"halo2_proofs::plonk::error"],[1165,"core::result"],[1166,"halo2_proofs::circuit"],[1167,"core::convert"],[1168,"core::clone"],[1169,"pasta_curves::arithmetic::curves"],[1170,"core::fmt"],[1171,"core::cmp"],[1172,"core::fmt"],[1173,"core::any"],[1174,"pasta_curves::pallas"],[1175,"pasta_curves::pallas"],[1176,"halo2_proofs::plonk::circuit"],[1177,"halo2_proofs::circuit"],[1178,"ff"],[1179,"halo2_proofs::circuit"],[1180,"ff"],[1181,"core::iter::traits::collect"],[1182,"halo2_proofs::plonk::circuit"],[1183,"core::iter::traits::iterator"],[1184,"core::ops::range"],[1185,"ff"]],"d":["Elliptic curve operations.","The Poseidon algebraic hash function.","The SHA-256 hash function.","The Sinsemilla hash function.","Utility gadgets.","Fixed points that can be multiplied by base field elements.","Instructions that can be implemented for a curve whose …","The set of circuit instructions required to use the ECC …","Precomputed multiples of a fixed point, for full-width …","Precomputed multiples of a fixed point, that can be …","Precomputed multiples of a fixed point, for short signed …","Defines the fixed points for a given instantiation of the …","Enumeration of the set of fixed bases to be used in scalar …","Fixed points that can be used with full-width scalar …","A point on a specific elliptic curve that is guaranteed to …","Variable representing a non-identity elliptic curve point.","A point on a specific elliptic curve.","Variable representing an elliptic curve point.","An integer representing an element of the scalar field for …","Variable representing a full-width element of the elliptic …","A signed short (64-bit) integer represented as an element …","Variable representing a signed short element of the …","An integer representing an element of the scalar field for …","Variable representing a scalar used in variable-base …","Fixed points that can be used with short scalar …","The affine short Weierstrass x-coordinate of a point on a …","Variable representing the affine short Weierstrass …","Performs complete point addition, returning a + b.","Returns self + other using complete addition.","Returns self + other using complete addition.","Performs incomplete point addition, returning a + b.","Returns self + other using incomplete addition. The …","","","","","","","","","","","","","","","","","","","Chip implementations for the ECC gadgets.","","","","","","","","","","","Constrains point a to be equal in value to point b.","Constrains this point to be equal in value to another …","Constrains this point to be equal in value to another …","","","","","","","","","","","","","","","","","","","","","","","","","","","","Extracts the x-coordinate of a point.","Extracts the x-coordinate of a point.","Extracts the x-coordinate of a point.","","","","","","","","","","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.","Constructs a scalar from an existing base-field element.","Wraps the given point (obtained directly from an …","Wraps the given point (obtained directly from an …","Wraps the given x-coordinate (obtained directly from an …","Wraps the given fixed base (obtained directly from an …","Wraps the given fixed base (obtained directly from an …","Wraps the given fixed base (obtained directly from an …","","","","","","","","","","Returns the inner point.","Returns the inner point.","Returns the inner x-coordinate.","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).","Performs variable-base scalar multiplication, returning …","Returns [by] self.","Returns [by] self.","Returns [by] self.","Returns [by] self.","Performs fixed-base scalar multiplication using a …","Performs fixed-base scalar multiplication using a base …","Performs fixed-base scalar multiplication using a short …","Witnesses the given full-width scalar.","Witnesses the given full-width scalar.","Converts the given signed short scalar.","Constructs a new point with the given value.","Constructs a new point with the given value.","Converts a magnitude and sign that exists as variables in …","Converts a base field element that exists as a variable in …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Witnesses the given point as a private input to the …","Witnesses the given point as a private input to the …","Witnesses a full-width scalar to be used in fixed-base …","Witnesses a full-width scalar to be used in variable-base …","Type marker representing a base field element being used …","An element of the elliptic curve’s base field, that is …","An EccInstructions chip that uses 10 advice columns.","Configuration for EccChip.","A curve point represented in affine (x, y) coordinates, or …","A full-width scalar used for fixed-base scalar …","A signed short scalar used for fixed-base scalar …","Returns information about a fixed point that is required …","A trait representing the kind of scalar used with a …","The kind of scalar that this fixed point can be multiplied …","Type marker representing a full-width scalar for use in …","A full-width scalar. This is unimplemented for …","The number of windows that this scalar kind requires.","A non-identity point represented in affine (x, y) …","An enumeration of the possible types of scalars used in …","Type marker representing a signed 64-bit scalar for use in …","","","Advice columns needed by instructions in the ECC chip.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Side effects","Constants required for the ECC chip.","","Reconstructs this chip from the given config.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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 generator for this fixed point.","","","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns the Lagrange coefficients for this fixed point.","","Lookup range check using 10-bit lookup table","","","","","Returns the value of this curve point, if known.","Returns the value of this curve point, if known.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the $u$ values for this fixed point.","","","","","","","","","","","","","","","The cell containing the affine short-Weierstrass …","The cell containing the affine short-Weierstrass …","The cell containing the affine short-Weierstrass …","The cell containing the affine short-Weierstrass …","Returns the $z$ value for this fixed point.","Window size for fixed-base scalar multiplication","$2^{FIXED_BASE_WINDOW_SIZE}$","Number of windows for a full-width scalar","Number of windows for a short signed scalar","For each window, we interpolate the $x$-coordinate. Here, …","For each window, $z$ is a field element such that for each …","Test that Lagrange interpolation coefficients reproduce …","Test that the z-values and u-values satisfy the conditions:","A Poseidon hash function, built around a sponge.","A message word provided by the prover.","A word from the padded input to a Poseidon sponge.","A padding word, that will be fixed in the circuit …","The set of circuit instructions required to use the …","The set of circuit instructions required to use the Sponge …","A Poseidon chip using an $x^5$ S-Box.","Configuration for a Pow5Chip.","A Poseidon sponge.","A word in the Poseidon state.","A word over which the Poseidon permutation operates.","Variable representing the word over which the Poseidon …","Absorbs an element into the sponge.","Adds the given input to the state.","","","","","","","","","","","","","","","","","","","","","","","","Configures this chip for use in a circuit.","Construct a Pow5Chip.","","","","","","","","","","","","","","","","","","","","","","Transitions the sponge into its squeezing state.","","","","","","","","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.","Construct a Word gadget from the inner word.","Extracts sponge output from the given state.","","Hashes the given input.","","","","","","","","Initializes a new hasher.","Returns the initial empty state for the given domain.","","The word contained in this gadget.","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).","","Constructs a new duplex sponge for the given Poseidon …","Applies the Poseidon permutation to the given state.","","The Poseidon algebraic hash function.","Squeezes an element from the sponge.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The absorbing state of the Sponge.","A Poseidon hash function used with constant input length.","A domain in which a Poseidon hash function is being used.","A Poseidon hash function, built around a sponge.","The type used to hold the MDS matrix and its inverse.","Poseidon-128 using the $x^5$ S-box, with a width of 3 …","Iterator that outputs padding field elements.","A specification for a Poseidon permutation.","The state of the Sponge.","The squeezing state of the Sponge.","","","","","","","","","","","","","","","","","Generates (round_constants, mds, mds^-1) corresponding to …","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","The number of full rounds for this specification.","","","Generates (round_constants, mds, mds^-1) corresponding to …","Hashes the given input.","","","","","","Initializes a new hasher.","The initial capacity element, encoding this domain.","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","The name of this domain, for debug formatting purposes.","","Returns the padding to be appended to the input.","","The number of partial rounds for this specification.","","","The S-box for this specification.","","","Side-loaded index of the first correct and secure MDS that …","","","","","","","","","","","","","","","","","","","","","","","","","","The size of a SHA-256 block, in 32-bit words.","A word in a Table16 message block.","Variable representing a 32-bit word of the input block to …","A gadget that constrains a SHA-256 invocation. It supports …","The output of a SHA-256 circuit invocation.","The set of circuit instructions required to use the Sha256 …","Variable representing the SHA-256 internal state.","A chip that implements SHA-256 with a maximum lookup table …","Configuration for a Table16Chip.","","","","","","","","","","","","","","","","","Starting from the given initialized state, processes a …","","","Configures a circuit to include this chip.","Reconstructs this chip from the given config.","","","","","","","","","","","","Converts the given state into a message digest.","","Convenience function to compute hash of the data. It will …","","","","","","Retrieve result and consume hasher instance.","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","Creates an initial state from the output state of a …","","Places the SHA-256 IV in the circuit, returning the …","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Loads the lookup table required by this chip into the …","","Create a new hasher instance.","","","","","","","","","","","","","","","","","","","Digest data, updating the internal state.","","","","","","A variable in the circuit.","Gadget representing a domain in which …","Trait allowing circuit’s Sinsemilla CommitDomains to be …","CommitDomains used in this instruction.","A type enumerating the fixed points used in CommitDomains.","A domain in which $\\\\mathsf{SinsemillaHashToPoint}$ and …","Trait allowing circuit’s Sinsemilla HashDomains to be …","HashDomains used in this instruction.","A message to be hashed.","A message composed of Self::MessagePieces.","A message piece with a bitlength of some multiple of K.","A piece in a message containing a number of K-bit words. A …","A point output of Self::hash_to_point.","Returns the Q constant for this domain.","A cumulative sum z is used to decompose a Sinsemilla …","The set of circuit instructions required to use the …","The x-coordinate of a point output of Self::hash_to_point.","","","","","","","","","Chip implementations for the Sinsemilla gadgets.","","","","","$\\\\mathsf{SinsemillaCommit}$ from § 5.4.8.4.","","","","","","","","","","","","","Extracts the x-coordinate of the output of a Sinsemilla …","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Constructs a MessagePiece from a field element.","Constructs a message from a vector of MessagePieces.","Constructs a MessagePiece by concatenating a sequence of …","$\\\\mathsf{SinsemillaHash}$ from § 5.4.1.9.","Returns the HashDomain contained in this CommitDomain","Hashes a message to an ECC curve point. This returns both …","$\\\\mathsf{SinsemillaHashToPoint}$ from § 5.4.1.9.","","","","","Returns the inner MessagePiece contained in this gadget.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Gadgets for implementing a Merkle tree with Sinsemilla.","Constructs a new HashDomain for the given domain.","Constructs a new CommitDomain for the given domain.","Implementation of Sinsemilla outside the circuit.","Returns the fixed point corresponding to the R constant …","$\\\\mathsf{SinsemillaShortCommit}$ from § 5.4.8.4.","","","","","","","","","","","","","","","","","","","Witness a message piece given a field element. Returns a …","A chip that implements 10-bit Sinsemilla using a lookup …","Configuration for the Sinsemilla hash chip","","","","","","","","","","Side-effects","Reconstructs this chip from the given config.","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self).","Calls U::from(self).","Loads the lookup table required by this chip into the …","","Returns the lookup range check config used in this config.","","","","","","","","","","","","SWU hash-to-curve personalization for the Merkle CRH …","Instructions to check the validity of a Merkle path of a …","Gadget representing a Merkle path that proves a leaf …","","","Calculates the root of the tree containing the given leaf …","Chip implementing a Merkle hash using Sinsemilla as the …","","","Constructs a MerklePath.","","","","","Returns the argument unchanged.","Compute MerkleCRH for a given layer. The hash that …","","Calls U::from(self).","","","","","","Chip implementing MerkleInstructions.","Configuration for the MerkleChip implementation.","","","","","","","","","","Configures the MerkleChip.","Constructs a MerkleChip given a MerkleConfig.","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","The largest integer such that $2^c \\\\leq (r_P - 1) / 2$, …","A domain in which $\\\\mathsf{SinsemillaCommit}$ and …","A domain in which $\\\\mathsf{SinsemillaHashToPoint}$ and …","$\\\\frac{1}{2^K}$","Number of bits of each message piece in …","Returns the Sinsemilla $Q$ constant for this domain.","Returns the Sinsemilla $Q$ constant for this domain.","SWU hash-to-curve personalization for Sinsemilla $Q$ …","Returns the Sinsemilla $R$ constant for this domain.","The precomputed bases for the Sinsemilla hash function.","SWU hash-to-curve personalization for Sinsemilla $S$ …","","","","","","","$\\\\mathsf{SinsemillaCommit}$ from § 5.4.8.4.","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","$\\\\mathsf{SinsemillaHash}$ from § 5.4.1.9.","$\\\\mathsf{SinsemillaHashToPoint}$ from § 5.4.1.9.","","","Calls U::from(self).","Calls U::from(self).","Constructs a new HashDomain with a specific prefix string.","Constructs a new CommitDomain with a specific prefix …","$\\\\mathsf{SinsemillaShortCommit}$ from § 5.4.8.4.","","","","","","","","","","A type that has a value at either keygen or proving time.","A type representing a range-constrained field element.","Trait for utilities used across circuits.","Trait for a variable in the circuit.","Variable in the circuit.","Constructs a RangeConstrained<Value<F>> as a bitrange of …","Takes a specified subsequence of the little-endian bit …","Checks that an expression is either 1 or 0.","","","The cell at which this variable was allocated.","","","Gadget and chip for a conditional swap utility.","Decomposes an $n$-bit field element $\\\\alpha$ into $W$ …","Decompose a word alpha into window_num_bits bits …","","","","","Returns the argument unchanged.","The sequence of bits representing a u64 in little-endian …","","Returns the range-constrained inner type.","Calls U::from(self).","The u64 integer represented by an L-bit little-endian …","Load a variable.","Make use of a K-bit lookup table to decompose a field …","Returns the number of bits to which this cell is …","Check that an expression is in the small range [0..range), …","If a then b, else c. Returns (a * b) + (1 - a) * c.","","","","","Constructs a RangeConstrained<AssignedCell<F, F>> without …","Returns the value of this type.","The value allocated to this variable.","Extracts the range-constrained value from this …","","Witnesses a subset of the bits in value and constrains …","A chip implementing a conditional swap.","Configuration for the CondSwapChip.","Instructions for a conditional swap gadget.","","","","","","","","","","Configures this chip for use in a circuit.","Constructs a CondSwapChip given a CondSwapConfig.","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","","Given an input pair (a,b) and a swap boolean flag, returns …","","","","","","","","","","","","The running sum $[z_0, …, z_W]$. If created in strict …","Configuration that provides methods for running sum …","","","","","","","perm MUST include the advice column z.","Decompose an existing variable alpha that is copied into …","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","Decompose a field element alpha that is witnessed in this …","Configuration that provides methods for a lookup range …","The running sum $[z_0, …, z_W]$. If created in strict …","","","","","","","The running_sum advice column breaks the field element …","Range check on an existing cell that is copied into this …","Short range check on an existing cell that is copied into …","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","Range check on a value that is witnessed in this helper.","Short range check on value that is witnessed in this …"],"i":[0,0,0,0,0,28,0,0,0,0,0,0,9,28,0,9,0,9,0,9,0,9,0,9,28,0,9,9,6,7,9,6,18,21,22,6,7,17,12,13,14,18,21,22,6,7,17,12,13,14,0,6,7,12,13,14,6,7,12,13,14,9,6,7,18,21,22,6,7,17,12,13,14,18,21,22,6,7,17,12,13,14,18,21,22,6,7,17,12,13,14,9,6,7,18,21,22,6,7,17,12,13,14,18,21,22,6,7,7,17,12,13,14,18,6,7,17,12,13,14,18,21,22,6,7,17,12,13,14,6,7,17,18,21,22,6,7,17,12,13,14,9,6,12,13,14,9,9,9,18,21,22,6,7,9,23,6,7,12,13,14,18,21,22,6,7,17,12,13,14,18,21,22,6,7,17,12,13,14,18,21,22,6,7,17,12,13,14,18,21,22,6,7,17,12,13,14,9,9,9,9,0,35,0,0,0,0,0,0,0,119,0,35,120,0,0,0,26,26,32,30,31,32,44,45,46,26,33,34,35,30,31,32,44,45,46,26,33,34,35,30,31,32,26,33,34,35,30,31,32,26,33,34,35,26,26,0,26,26,30,31,32,44,45,46,26,33,34,35,30,31,32,44,45,46,26,33,34,35,30,31,32,44,45,46,26,33,34,35,32,26,26,30,31,32,44,45,46,26,33,34,35,30,30,31,32,44,45,46,26,33,34,35,119,30,31,32,44,45,46,26,33,34,35,30,31,32,44,45,46,26,33,34,35,119,26,32,26,26,26,26,30,31,26,26,30,31,32,26,33,34,35,30,31,32,44,45,46,26,33,34,35,30,31,32,44,45,46,26,33,34,35,30,31,32,44,45,46,26,33,34,35,119,30,31,32,44,45,46,26,33,34,35,26,26,26,26,30,31,30,31,119,0,0,0,0,0,0,0,0,0,54,0,54,0,0,0,0,0,0,0,67,56,60,61,64,61,62,54,66,56,69,64,61,62,54,66,56,69,62,64,62,54,64,62,54,61,61,61,64,61,62,54,66,56,69,64,61,62,54,66,56,69,64,61,62,54,66,56,69,56,64,61,62,54,66,56,69,64,61,62,62,54,66,56,69,66,60,61,69,64,61,62,54,66,56,69,69,60,61,66,64,61,62,54,66,56,69,61,56,67,61,0,56,64,62,54,64,61,62,54,66,56,69,64,61,62,54,66,56,69,64,61,62,54,66,56,69,62,64,61,62,54,66,56,69,0,0,0,0,0,0,59,0,0,0,75,55,65,70,72,75,55,65,70,72,55,70,72,55,70,72,58,75,75,75,55,65,70,72,75,55,65,70,72,75,55,65,70,72,75,55,65,70,72,75,55,65,70,72,58,75,75,0,72,75,55,65,70,72,72,59,70,75,55,65,70,72,59,70,59,70,58,75,75,58,75,75,58,75,75,55,70,72,75,55,65,70,72,75,55,65,70,72,75,55,65,70,72,75,55,65,70,72,0,0,83,0,0,0,83,0,0,79,80,81,82,84,79,80,81,82,84,79,80,81,79,80,81,83,81,81,81,81,79,79,80,81,82,84,79,80,81,82,84,83,81,84,79,80,81,82,84,84,79,80,81,82,84,79,80,81,82,84,79,80,81,82,84,83,81,83,81,79,80,81,82,84,81,81,84,79,80,81,79,80,81,82,84,79,80,81,82,84,79,80,81,82,84,84,79,80,81,82,84,86,0,0,86,86,0,0,86,0,86,0,86,86,92,86,0,86,85,87,89,88,85,87,89,88,0,85,87,85,87,88,85,87,89,88,85,87,89,88,85,87,89,88,86,85,87,89,88,85,87,89,88,87,85,87,89,93,86,89,85,87,89,88,87,85,87,89,88,0,89,88,0,93,88,85,87,85,87,89,88,85,87,89,88,85,87,89,88,85,87,89,88,86,0,0,91,94,91,94,91,94,91,94,94,94,94,91,94,91,94,91,94,91,94,94,91,94,91,94,94,91,94,91,94,94,94,91,91,94,91,94,91,94,91,94,91,94,94,0,0,0,96,96,96,0,96,96,96,96,96,96,96,96,97,96,96,96,96,96,96,96,0,0,99,100,99,100,99,100,99,100,100,100,100,99,100,99,100,99,100,99,100,100,99,100,99,100,100,100,99,100,99,100,100,100,99,100,99,100,99,100,99,100,99,100,100,0,0,0,0,0,101,103,0,103,0,0,101,103,101,103,101,101,103,101,103,101,103,101,103,101,103,101,103,101,101,101,103,101,103,101,103,103,101,101,103,101,103,101,103,101,103,0,0,0,0,121,108,0,0,108,108,122,108,108,0,0,0,108,108,108,108,108,0,108,108,108,0,121,0,108,0,0,108,108,108,108,108,111,122,108,108,108,0,0,0,112,113,112,113,112,113,112,113,112,112,112,112,113,112,113,112,113,113,112,113,112,113,112,113,112,113,112,123,112,112,113,112,113,112,113,112,113,112,113,0,0,117,114,117,114,114,114,114,114,117,117,114,117,114,117,114,114,117,114,117,114,117,114,117,114,114,117,114,117,114,117,114,117,114,114,0,0,118,41,118,41,41,41,41,41,41,118,118,41,118,41,118,41,41,118,41,118,41,118,41,118,41,41,118,41,118,41,118,41,118,41,41,41],"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,-2,-3,-4],[[2,[1]]],[],3,[4,5],[4,5]],[[[6,[-1,-2]],-3,-4],[[2,[[7,[-1,-2]],1]]],8,[[9,[-1]]],3,[[4,[[7,[-1,-2]]]],5]],[[[7,[-1,-2]],-3,-4],[[2,[[7,[-1,-2]],1]]],8,[[9,[-1]],5,10,11],3,[[4,[[7,[-1,-2]]]],5]],[[-1,-2],[[2,[1]]],[],3],[[[6,[-1,-2]],-3,[6,[-1,-2]]],[[2,[[6,[-1,-2]],1]]],8,[[9,[-1]]],3],[-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,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[[[6,[-1,-2]]],[[6,[-1,-2]]],[5,8],[5,[9,[-1]]]],[[[7,[-1,-2]]],[[7,[-1,-2]]],[5,8],[5,[9,[-1]],5,10,11]],[[[12,[-1,-2]]],[[12,[-1,-2]]],[5,8],[5,[9,[-1]]]],[[[13,[-1,-2]]],[[13,[-1,-2]]],[5,8],[5,[9,[-1]]]],[[[14,[-1,-2]]],[[14,[-1,-2]]],[5,8],[5,[9,[-1]]]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-2],[[2,[15,1]]],[],3],[[[6,[-1,-2]],-3,-4],[[2,[15,1]]],8,[[9,[-1]]],3,[[4,[[7,[-1,-2]]]],5]],[[[7,[-1,-2]],-3,-4],[[2,[15,1]]],8,[[9,[-1]],5,10,11],3,[[4,[[7,[-1,-2]]]],5]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,15],[16,15],[16,15],[16,15],[16,15],[16,15],[16,15],[16,15],[16,15],[-1,[],[4,5]],[[[6,[-1,-2]]],[[17,[-1,-2]]],8,[[9,[-1]]]],[[[7,[-1,-2]]],[[17,[-1,-2]]],8,[[9,[-1]],5,10,11]],[[[18,[-1,-2]],19],20,[10,8],[10,[9,[-1]]]],[[[21,[-1,-2]],19],20,[10,8],[10,[9,[-1]]]],[[[22,[-1,-2]],19],20,[10,8],[10,[9,[-1]]]],[[[6,[-1,-2]],19],20,[10,8],[10,[9,[-1]]]],[[[7,[-1,-2]],19],20,[10,8],[10,[9,[-1]],5,10,11]],[[[17,[-1,-2]],19],20,[10,8],[10,[9,[-1]]]],[[[12,[-1,-2]],19],20,[10,8],[10,[9,[-1]]]],[[[13,[-1,-2]],19],20,[10,8],[10,[9,[-1]]]],[[[14,[-1,-2]],19],20,[10,8],[10,[9,[-1]]]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[6,[-1,-2]]],[[7,[-1,-2]]],8,[[9,[-1]],5,10,11]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[-2,-3],[[2,[[18,[-1,-2]],1]]],8,[[23,[-1]]],3],[-2,[[6,[-1,-2]]],8,[[9,[-1]]]],[-2,[[7,[-1,-2]]],8,[[9,[-1]],5,10,11]],[-2,[[17,[-1,-2]]],8,[[9,[-1]]]],[-2,[[12,[-1,-2]]],8,[[9,[-1]]]],[-2,[[13,[-1,-2]]],8,[[9,[-1]]]],[-2,[[14,[-1,-2]]],8,[[9,[-1]]]],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[[6,[-1,-2]]],[],8,[[9,[-1]]]],[[[7,[-1,-2]]],[],8,[[9,[-1]],5,10,11]],[[[17,[-1,-2]]],[],8,[[9,[-1]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[-1,-2],[[2,[15,1]]],[],3],[[[6,[-1,-2]],-3,[18,[-1,-2]]],[[2,[[15,[[7,[-1,-2]],[18,[-1,-2]]]],1]]],8,[[9,[-1]]],3],[[[12,[-1,-2]],-3,[21,[-1,-2]]],[[2,[[15,[[7,[-1,-2]],[21,[-1,-2]]]],1]]],8,[[9,[-1]]],3],[[[13,[-1,-2]],-3],[[2,[[7,[-1,-2]],1]]],8,[[9,[-1]]],3],[[[14,[-1,-2]],-3,[22,[-1,-2]]],[[2,[[15,[[7,[-1,-2]],[22,[-1,-2]]]],1]]],8,[[9,[-1]]],3],[[-1,-2],[[2,[15,1]]],[],3],[[-1,-2],[[2,[1]]],[],3],[[-1,-2],[[2,[15,1]]],[],3],[[-2,-3,24],[[2,[[18,[-1,-2]],1]]],8,[[9,[-1]]],3],[[-2,-3,24],[[2,[[21,[-1,-2]],1]]],8,[[9,[-1]]],3],[[-2,-3,15],[[2,[[22,[-1,-2]],1]]],8,[[9,[-1]]],3],[[-2,-3,[24,[-1]]],[[2,[[6,[-1,-2]],1]]],8,[[9,[-1]]],3],[[-2,-3,[24,[-1]]],[[2,[[7,[-1,-2]],1]]],8,[[9,[-1]],5,10,11],3],[[-1,-2,15],[[2,[1]]],[],3],[[-1,-2],[[2,[1]]],[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[-1,-2,[24,[-3]]],[[2,[1]]],[],3,[]],[[-1,-2,[24,[-3]]],[[2,[1]]],[],3,[]],[[-1,-2,24],[[2,[1]]],[],3],[[-1,-2,24],[[2,[1]]],[],3],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[26,[-1]],-2,-3,-4],[[2,[1]]],[[28,[27]]],[[3,[29]]],[4,5],[4,5]],[[[26,[-1]],-2],[[2,[1]]],[[28,[27]]],[[3,[29]]]],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,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[30,30],[31,31],[[[32,[-1]]],[[32,[-1]]],[5,[28,[27]]]],[[[26,[-1]]],[[26,[-1]]],[5,[28,[27]]]],[33,33],[34,34],[35,35],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[[26,[-1]]],[],[[28,[27]]]],[[[36,[29]],[39,[[38,[37]]]],[39,[[38,[40]]]],[41,[29]]]],0,[[[26,[-1]],-2],[[2,[15,1]]],[[28,[27]]],[[3,[29]]]],[[],[[26,[-1]]],[[28,[27]]]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,15],[16,15],[16,15],[16,15],[16,15],[16,15],[16,15],[16,15],[16,15],[16,15],[[[32,[-1]],[32,[-1]]],42,[43,[28,[27]]]],[[[26,[-1]],[26,[-1]]],42,[43,[28,[27]]]],[-1,[],[4,5]],[[30,19],20],[[31,19],20],[[[32,[-1]],19],20,[10,[28,[27]]]],[[44,19],20],[[45,19],20],[[46,19],20],[[[26,[-1]],19],20,[10,[28,[27]]]],[[33,19],20],[[34,19],20],[[35,19],20],[31,30],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[47,[39]]],[]],[[[26,[-1]]],[],[[28,[27]]]],0,[[[26,[-1]],-2],[[2,[15,1]]],[[28,[27]]],[[3,[29]]]],[[[26,[-1]],-2],[[2,[15,1]]],[[28,[27]]],[[3,[29]]]],[[[26,[-1]],-2,[48,[29,29]]],[[2,[1]]],[[28,[27]]],[[3,[29]]]],[[[26,[-1]],-2],[[2,[15,1]]],[[28,[27]]],[[3,[29]]]],[30,[[24,[27]]]],[31,[[24,[27]]]],[[[26,[-1]],-2,[15,[[48,[29,29]],[48,[29,29]]]]],[[2,[1]]],[[28,[27]]],[[3,[29]]]],[[[26,[-1]],-2],[[2,[1]]],[[28,[27]]],[[3,[29]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,[[47,[39]]],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[26,[-1]],-2,[24,[27]]],[[2,[1]]],[[28,[27]]],[[3,[29]]]],[[[26,[-1]],-2,[24,[27]]],[[2,[1]]],[[28,[27]]],[[3,[29]]]],[[[26,[-1]],-2,[24,[49]]],[[2,[1]]],[[28,[27]]],[[3,[29]]]],[[[26,[-1]],-2,[24,[49]]],[[2,[1]]],[[28,[27]]],[[3,[29]]]],[30,[[48,[29,29]]]],[31,[[48,[29,29]]]],[30,[[48,[29,29]]]],[31,[[48,[29,29]]]],[-1,[[47,[50]]],[]],0,0,0,0,[[-1,16],[[47,[39]]],8],[[-1,16],[[51,[[47,[[15,[50,39]]]]]]],8],[[-1,16],15,8],[[-1,[52,[50]],[52,[[39,[[39,[53]]]]]],16],15,8],0,0,0,0,0,0,0,0,0,0,0,0,[[[56,[-1,-4,-2,[55,[[54,[-1]]]],-3]],-5,[54,[-1]]],[[2,[15,1]]],57,[[58,[-1]]],[[59,[-1]]],[[60,[-1,-2,-3]]],[[3,[-1]]]],[[-1,-3,39,[55,[[54,[-2]]]]],[[2,[39,1]]],[],[],[[3,[-2]]]],[[[61,[-1]],-2,39,[55,[[54,[-1]]]]],[[2,[39,1]]],57,[[3,[-1]]]],[-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,[],[]],[[[62,[-1]]],63,57],[[[64,[-1]]],[[64,[-1]]],[5,57]],[[[62,[-1]]],[[62,[-1]]],[5,57]],[[[54,[-1]]],[[54,[-1]]],[5,57]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[[61,[-1]]],[],57],[[[36,[-1]],[39,[[38,[37]]]],[38,[37]],[39,[[38,[40]]]],[39,[[38,[40]]]]],[[64,[-1]]],57],[[[64,[-1]]],[[61,[-1]]],57],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,15],[16,15],[16,15],[16,15],[16,15],[16,15],[16,15],[[[56,[-1,-4,-2,[55,[[54,[-1]]]],-3]],-5],[[2,[[56,[-1,-4,-2,65,-3]],1]]],57,[[58,[-1]]],[[59,[-1]]],[[60,[-1,-2,-3]]],[[3,[-1]]]],[[[64,[-1]],19],20,[10,57]],[[[61,[-1]],19],20,[10,57]],[[[62,[-1]],19],20,[10,57]],[[[54,[-1]],19],20,[10,57]],[[[66,[-1,-3,-2]],19],20,[10,57],[10,[58,[-1]]],[10,[67,[-1,-2]]]],[[[56,[-1,-4,-2,-5,-3]],19],20,[10,57],[10,[58,[-1]]],[10,[59,[-1]]],[10,[60,[-1,-2,-3]]],[10,68]],[[[69,[-1,-4,-2,-3]],19],20,[10,57],[10,[58,[-1]]],[10,[59,[-1]]],[10,[60,[-1,-2,-3]]]],[-1,-1,[]],[-1,-1,[]],[[[48,[-1,-1]]],[[62,[-1]]],57],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[],[[66,[-1,-3,-2]]],57,[[58,[-1]]],[[67,[-1,-2]]]],[39,65],[39,65],[[[69,[-1,-3,-2,70]],-4,[39,[[48,[-1,-1]]]]],[[2,[[48,[-1,-1]],1]]],71,[[58,[-1]]],[[60,[-1,-2,70]]],[[3,[-1]]]],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[-4,-5],[[2,[[69,[-1,-4,-2,-3]],1]]],57,[[58,[-1]]],[[59,[-1]]],[[60,[-1,-2,-3]]],[[3,[-1]]]],[[-1,-3],[[2,[39,1]]],[],[],[[3,[-2]]]],[[[61,[-1]],-2],[[2,[39,1]]],57,[[3,[-1]]]],[[[66,[-1,-3,-2]]],[],57,[[58,[-1]]],[[67,[-1,-2]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[61,[-1]]],[],57],[[-4,-5],[[2,[[56,[-1,-4,-2,[55,[[54,[-1]]]],-3]],1]]],57,[[58,[-1]]],[[59,[-1]]],[[60,[-1,-2,-3]]],[[3,[-1]]]],[[-1,-3,39],[[2,[39,1]]],[],[],[[3,[-2]]]],[[[61,[-1]],-2,39],[[2,[39,1]]],57,[[3,[-1]]]],0,[[[56,[-1,-4,-2,65,-3]],-5],[[2,[[48,[-1,-1]],1]]],57,[[58,[-1]]],[[59,[-1]]],[[60,[-1,-2,-3]]],[[3,[-1]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[[[62,[-1]]],[[24,[-1]]],57],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[55,[-1]]],[[55,[-1]]],5],[70,70],[[[72,[-1,-2,-3]]],[[72,[-1,-2,-3]]],[5,57],[5,[58,[-1]]],[5,[59,[-1]]]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[],[[15,[[47,[[39,[-1]]]],[73,[-1]],[73,[-1]]]]],[]],[[],[[15,[[47,[[39,[29]]]],[73,[29]],[73,[29]]]]]],[[],[[15,[[47,[[39,[74]]]],[73,[74]],[73,[74]]]]]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,15],[16,15],[16,15],[16,15],[16,15],[[75,19],20],[[[55,[-1]],19],20,10],[[[65,[-1]],19],20,10],[[70,19],20],[[[72,[-1,-2,-3]],19],20,57,[[58,[-1]]],[[59,[-1]]]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[],16],[[],16],[[],16],[[],[[15,[[47,[[39,[-1]]]],[73,[-1]],[73,[-1]]]]],[76,77]],[[[72,[-1,-2,70]],[39,[-1]]],-1,71,[[58,[-1]]]],[[],16],[[],16],[[],16],[[],16],[[],16],[[],[[72,[-1,-2,-3]]],57,[[58,[-1]]],[[59,[-1]]]],[[],-1,[]],[[],-1,71],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],78],[[],78],[16],[16],[[],16],[[],16],[[],16],[-1,-1,[]],[29,29],[74,74],[[],16],[[],16],[[],16],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[79,79],[80,80],[81,81],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[-1,-3,39],[[2,[1]]],[],[],[[3,[-2]]]],[[81,-1,39],[[2,[1]]],[[3,[29]]]],[81],[[[36,[29]]]],[[],81],[[],79],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[[-1,-3],[[2,[39,1]]],[],[],[[3,[-2]]]],[[81,-1],[[2,[39,1]]],[[3,[29]]]],[[-2,-3,52],[[2,[82,1]]],57,[[83,[-1]]],[[3,[-1]]]],[16,15],[16,15],[16,15],[16,15],[16,15],[[[84,[-1,-2]],-3],[[2,[82,1]]],57,[[83,[-1]]],[[3,[-1]]]],[[79,19],20],[[80,19],20],[[81,19],20],[[[82,[-1]],19],20,10],[[[84,[-1,-2]],19],20,[10,57],[10,[83,[-1]]]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[],16],[[],16],[[],16],[[],16],[[],16],[[-1,-3],[[2,[1]]],[],[],[[3,[-2]]]],[[81,-1],[[2,[1]]],[[3,[29]]]],[[-1,-3],[[2,[1]]],[],[],[[3,[-2]]]],[[81,-1],[[2,[0,1]]],[[3,[29]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[80,-1],[[2,[15,1]]],[[3,[29]]]],[81],[[-2,-3],[[2,[[84,[-1,-2]],1]]],57,[[83,[-1]]],[[3,[-1]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[[[84,[-1,-2]],-3,52],[[2,[15,1]]],57,[[83,[-1]]],[[3,[-1]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[[[85,[-1,-2]]],[[85,[-1,-2]]],[5,8],[[86,[-1]],5,10,11,5]],[[[87,[-1,-2]]],[[87,[-1,-2]]],[5,8],[[86,[-1]],5,10,11,5]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[[88,[-1,-2,-3]],-4,[85,[-1,-2]],[21,[-1,-3]]],[[2,[[15,[[7,[-1,-3]],47]],1]]],8,[[86,[-1]],5,10,11],[[9,[-1]],5,10,11],3],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,15],[16,15],[16,15],[16,15],[[]],[[[85,[-1,-2]],19],20,[10,8],[[86,[-1]],5,10,11,10]],[[[87,[-1,-2]],19],20,[10,8],[[86,[-1]],5,10,11,10]],[[[89,[-1,-2,-3]],19],20,[10,8],[[86,[-1]],5,10,11,10],[[9,[-1]],5,10,11,10]],[[[88,[-1,-2,-3]],19],20,[10,8],[[86,[-1]],5,10,11,10],[[9,[-1]],5,10,11,10]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[-2,-3,24,16],[[2,[[87,[-1,-2]],1]]],8,[[86,[-1]],5,10,11],3],[[-2,[47,[[87,[-1,-2]]]]],[[85,[-1,-2]]],8,[[86,[-1]],5,10,11]],[[-2,-3,-4],[[2,[[87,[-1,-2]],1]]],8,[[86,[-1]],5,10,11],3,90],[[[89,[-1,-2,-3]],-4,[85,[-1,-2]]],[[2,[[15,[[17,[-1,-3]],47]],1]]],8,[[86,[-1]],5,10,11],[[9,[-1]],5,10,11],3],[-1,-2,[],[]],[[-1,-2,-3],[[2,[[15,[47]],1]]],[],3,[]],[[[89,[-1,-2,-3]],-4,[85,[-1,-2]]],[[2,[[15,[[6,[-1,-3]],47]],1]]],8,[[86,[-1]],5,10,11],[[9,[-1]],5,10,11],3],[[],16],[[],16],[[],16],[[],16],[[[87,[-1,-2]]],[],8,[[86,[-1]],5,10,11]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[[-2,-3],[[89,[-1,-2,-3]]],8,[[86,[-1]],5,10,11],[[9,[-1]],5,10,11]],[[-2,-3],[[88,[-1,-2,-3]]],8,[[86,[-1]],5,10,11],[[9,[-1]],5,10,11]],0,[-1,[],[]],[[[88,[-1,-2,-3]],-4,[85,[-1,-2]],[21,[-1,-3]]],[[2,[[15,[[17,[-1,-3]],47]],1]]],8,[[86,[-1]],5,10,11],[[9,[-1]],5,10,11],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,25,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[-1,-2,24,16],[[2,[1]]],[],3],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[91,[-1,-3,-2]]],[[91,[-1,-3,-2]]],[[92,[27]],5],[[28,[27]],5],[[93,[27,-2,-1]],5]],[[[94,[-1,-3,-2]]],[[94,[-1,-3,-2]]],[[92,[27]],5],[[28,[27]],5],[[93,[27,-2,-1]],5]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[[94,[-1,-3,-2]]],[],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]]],[[[36,[29]],[39,[[38,[37]]]],[38,[37]],[38,[40]],[15,[95,95,95]],[41,[29]]]],[[],[[94,[-1,-3,-2]]],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,15],[16,15],[[[91,[-1,-3,-2]],[91,[-1,-3,-2]]],42,[[92,[27]],43],[[28,[27]],43],[[93,[27,-2,-1]],43]],[[[94,[-1,-3,-2]],[94,[-1,-3,-2]]],42,[[92,[27]],43],[[28,[27]],43],[[93,[27,-2,-1]],43]],[[]],[[[91,[-1,-3,-2]],19],20,[[92,[27]],10],[[28,[27]],10],[[93,[27,-2,-1]],10]],[[[94,[-1,-3,-2]],19],20,[[92,[27]],10],[[28,[27]],10],[[93,[27,-2,-1]],10]],[-1,-1,[]],[-1,-1,[]],[[[94,[-1,-3,-2]],-4,27],[[2,[[15,[47]],1]]],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]],[[3,[29]]]],[[],16],[[],16],[-1,-2,[],[]],[-1,-2,[],[]],[[[91,[-1,-3,-2]],-4],[[2,[1]]],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]],[[3,[29]]]],[[[94,[-1,-3,-2]]],[],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]]],[[[91,[-1,-3,-2]]],[[41,[29]]],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[94,[-1,-3,-2]],-4,[24,[29]],16],[[2,[1]]],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]],[[3,[29]]]],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[[[96,[-1,-2]],-3],[[2,[1]]],8,[[97,[-1]],5],3],0,[[[96,[-1,-2]]],[[96,[-1,-2]]],[5,8],[[97,[-1]],5,5]],[[-1,-2],15,[],[]],[[[39,[-2]],[24,[98]],[24,[39]]],[[96,[-1,-2]]],8,[[97,[-1]],5]],[16,-1,[]],[16,-1,[]],[16,15],[[[96,[-1,-2]],19],20,[10,8],[[97,[-1]],5,10]],[-1,-1,[]],[[-1,-2,-3,16],[[2,[1]]],[],3,[]],[[],16],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,-2,[],[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[99,[-1,-3,-2]]],[[99,[-1,-3,-2]]],[[92,[27]],5],[[28,[27]],5],[[93,[27,-2,-1]],5]],[[[100,[-1,-3,-2]]],[[100,[-1,-3,-2]]],[[92,[27]],5],[[28,[27]],5],[[93,[27,-2,-1]],5]],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[[100,[-1,-3,-2]]],[],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]]],[[[36,[29]],[91,[-1,-3,-2]]],[[99,[-1,-3,-2]]],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]]],[[[99,[-1,-3,-2]]],[[100,[-1,-3,-2]]],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,15],[16,15],[[[99,[-1,-3,-2]],[99,[-1,-3,-2]]],42,[[92,[27]],43],[[28,[27]],43],[[93,[27,-2,-1]],43]],[[[100,[-1,-3,-2]],[100,[-1,-3,-2]]],42,[[92,[27]],43],[[28,[27]],43],[[93,[27,-2,-1]],43]],[[]],[[[99,[-1,-3,-2]],19],20,[[92,[27]],10],[[28,[27]],10],[[93,[27,-2,-1]],10]],[[[100,[-1,-3,-2]],19],20,[[92,[27]],10],[[28,[27]],10],[[93,[27,-2,-1]],10]],[-1,-1,[]],[-1,-1,[]],[[[100,[-1,-3,-2]],-4,27,16],[[2,[1]]],[[92,[27]],11],[[28,[27]]],[[93,[27,-2,-1]],11],[[3,[29]]]],[[[100,[-1,-3,-2]],-4,27],[[2,[[15,[[47,[47]]]],1]]],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]],[[3,[29]]]],[[],16],[[],16],[-1,-2,[],[]],[-1,-2,[],[]],[[[100,[-1,-3,-2]]],[],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]]],[[[100,[-1,-3,-2]],-4,[15,[[24,[29]]]],[24,[42]]],[[2,[15,1]]],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]],[[3,[29]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[100,[-1,-3,-2]],-4,[24,[29]],16],[[2,[1]]],[[92,[27]]],[[28,[27]]],[[93,[27,-2,-1]]],[[3,[29]]]],0,0,0,0,0,[101,102],[103,102],0,[103,102],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[101,101],[[-1,-2],15,[],[]],[[103,-1,49],[[104,[102]]],105],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,15],[16,15],[[101,19],20],[[103,19],20],[-1,-1,[]],[-1,-1,[]],[[101,-1],[[104,[29]]],105],[[101,-1],[[104,[102]]],105],[[],16],[[],16],[-1,-2,[],[]],[-1,-2,[],[]],[106,101],[106,103],[[103,-1,49],[[104,[29]]],105],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,[[[24,[-1]],[107,[16]]],[[108,[-1,[24,[-1]]]]],109],[[-1,[107,[16]]],-1,109],[[[110,[-1]]],[[110,[-1]]],71],[-1,-2,[],[]],[-1,-2,[],[]],[-1,63,[]],[[[108,[-1,-2]]],[[108,[-1,-2]]],[5,57],[5,[111,[-1]]]],[[-1,-2],15,[],[]],0,0,[[-1,16,16],[[47,[53]]],109],[16,-1,[]],[16,-1,[]],[16,15],[[[108,[-1,-2]],19],20,[10,57],[10,[111,[-1]]]],[-1,-1,[]],[50,[[39,[42]]]],[[],16],[[[108,[-1,-2]]],-2,57,[[111,[-1]]]],[-1,-2,[],[]],[[[39,[42]]],50],[[-1,-3,[38,[37]],[24,[-2]]],[[2,[1]]],[],[],[[3,[-2]]]],0,[[[108,[-1,-2]]],16,57,[[111,[-1]]]],[[[110,[-1]],16],[[110,[-1]]],71],[[[110,[-1]],[110,[-1]],[110,[-1]]],[[110,[-1]]],57],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[[[48,[-1,-1]],16],[[108,[-1,[48,[-1,-1]]]]],57],[-1,[[24,[-2]]],[],[]],[-1,[[24,[-2]]],[],[]],[[[108,[-1,[48,[-1,-1]]]]],[[108,[-1,[24,[-1]]]]],57],[-1,-2,[],[]],[[[41,[-1]],-2,[24,[-1]],[107,[16]]],[[2,[[108,[-1,[48,[-1,-1]]]],1]]],109,[[3,[-1]]]],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[112,[-1]]],[[112,[-1]]],5],[113,113],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[[112,[-1]]],[],57],[[[36,[-1]],[39,[[38,[37]]]]],113,71],[113,[[112,[-1]]],71],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,15],[16,15],[[113,113],42],[[[112,[-1]],19],20,10],[[113,19],20],[-1,-1,[]],[-1,-1,[]],[[],16],[[],16],[-1,-2,[],[]],[-1,-2,[],[]],[[[112,[-1]]],[],57],[[-1,-3,[15,[[24,[-2]]]],[24,[42]]],[[2,[15,1]]],[],[],[[3,[-2]]]],[[[112,[-1]],-2,[15,[[24,[-1]]]],[24,[42]]],[[2,[15,1]]],71,[[3,[-1]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[114,[-1]]],[[114,[-1]]],[5,109]],[[-1,-2],15,[],[]],[[[36,[-1]],115,[38,[37]]],[[114,[-1]]],109],[[[114,[-1]],[116,[-1]],16,[48,[-1,-1]],42,16,16],[[2,[[117,[-1]],1]]],109],[[[117,[-1]]],[[47,[[48,[-1,-1]]]]],109],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,15],[16,15],[[[114,[-1]],[114,[-1]]],42,[43,109]],[[[117,[-1]],19],20,[10,109]],[[[114,[-1]],19],20,[10,109]],[-1,-1,[]],[-1,-1,[]],[[],16],[[],16],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[114,[-1]],[116,[-1]],16,[24,[-1]],42,16,16],[[2,[[117,[-1]],1]]],109],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[41,[-1]]],[[41,[-1]]],[5,109]],[[-1,-2],15,[],[]],[[[36,[-1]],[38,[37]],95],[[41,[-1]]],109],[[[41,[-1]],-2,[48,[-1,-1]],16,42],[[2,[[118,[-1]],1]]],109,[[3,[-1]]]],[[[41,[-1]],-2,[48,[-1,-1]],16],[[2,[15,1]]],109,[[3,[-1]]]],[16,-1,[]],[[[118,[-1]]],[[47,[[48,[-1,-1]]]]],109],[16,-1,[]],[16,-1,[]],[16,-1,[]],[16,15],[16,15],[[[41,[-1]],[41,[-1]]],42,[43,109]],[[[118,[-1]],19],20,[10,109]],[[[41,[-1]],19],20,[10,109]],[-1,-1,[]],[-1,-1,[]],[[],16],[[],16],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,[[2,[-2]]],[],[]],[-1,25,[]],[-1,25,[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[41,[-1]],-2,[24,[-1]],16,42],[[2,[[118,[-1]],1]]],109,[[3,[-1]]]],[[[41,[-1]],-2,[24,[-1]],16],[[2,[[48,[-1,-1]],1]]],109,[[3,[-1]]]]],"c":[],"p":[[4,"Error",1164],[4,"Result",1165],[8,"Layouter",1166],[8,"Into",1167],[8,"Clone",1168],[3,"NonIdentityPoint",5],[3,"Point",5],[8,"CurveAffine",1169],[8,"EccInstructions",5],[8,"Debug",1170],[8,"Eq",1171],[3,"FixedPoint",5],[3,"FixedPointBaseField",5],[3,"FixedPointShort",5],[15,"tuple"],[15,"usize"],[3,"X",5],[3,"ScalarVar",5],[3,"Formatter",1170],[6,"Result",1170],[3,"ScalarFixed",5],[3,"ScalarFixedShort",5],[8,"BaseFitsInScalarInstructions",5],[3,"Value",1172],[3,"TypeId",1173],[3,"EccChip",201],[6,"Affine",1174],[8,"FixedPoints",5],[6,"Base",1174],[3,"EccPoint",201],[3,"NonIdentityEccPoint",201],[3,"EccConfig",201],[3,"EccScalarFixed",201],[3,"EccScalarFixedShort",201],[4,"ScalarVar",201],[3,"ConstraintSystem",1175],[3,"Advice",1175],[3,"Column",1175],[15,"array"],[3,"Fixed",1175],[3,"LookupRangeCheckConfig",1126],[15,"bool"],[8,"PartialEq",1171],[4,"FullScalar",201],[4,"ShortScalar",201],[4,"BaseFieldElem",201],[3,"Vec",1176],[3,"AssignedCell",1166],[6,"Scalar",1174],[15,"u64"],[4,"Option",1177],[15,"slice"],[15,"u8"],[4,"PaddedWord",410],[3,"Absorbing",546],[3,"Sponge",410],[8,"Field",1178],[8,"Spec",546],[8,"Domain",546],[8,"PoseidonSpongeInstructions",410],[3,"Pow5Chip",410],[3,"StateWord",410],[3,"Cell",1166],[3,"Pow5Config",410],[3,"Squeezing",546],[3,"Word",410],[8,"PoseidonInstructions",410],[8,"SpongeMode",546],[3,"Hash",410],[3,"ConstantLength",546],[8,"PrimeField",1178],[3,"Hash",546],[6,"Mds",546],[6,"Base",1179],[3,"P128Pow5T3",546],[8,"FromUniformBytes",1178],[8,"Ord",1171],[3,"String",1180],[3,"BlockWord",654],[3,"Table16Config",654],[3,"Table16Chip",654],[3,"Sha256Digest",654],[8,"Sha256Instructions",654],[3,"Sha256",654],[3,"Message",755],[8,"SinsemillaInstructions",755],[3,"MessagePiece",755],[3,"CommitDomain",755],[3,"HashDomain",755],[8,"IntoIterator",1181],[3,"SinsemillaConfig",848],[8,"HashDomains",755],[8,"CommitDomains",755],[3,"SinsemillaChip",848],[3,"TableColumn",1175],[3,"MerklePath",893],[8,"MerkleInstructions",893],[15,"u32"],[3,"MerkleConfig",916],[3,"MerkleChip",916],[3,"HashDomain",961],[6,"Point",1174],[3,"CommitDomain",961],[3,"CtOption",1182],[8,"Iterator",1183],[15,"str"],[3,"Range",1184],[3,"RangeConstrained",1007],[8,"PrimeFieldBits",1178],[4,"Expression",1175],[8,"FieldValue",1007],[3,"CondSwapChip",1048],[3,"CondSwapConfig",1048],[3,"RunningSumConfig",1090],[3,"Selector",1175],[3,"Region",1166],[3,"RunningSum",1090],[3,"RunningSum",1126],[8,"FixedPoint",201],[8,"FixedScalarKind",201],[8,"UtilitiesInstructions",1007],[8,"Var",1007],[8,"CondSwapInstructions",1048]],"b":[[573,"impl-Spec%3CFp,+3,+2%3E-for-P128Pow5T3"],[574,"impl-Spec%3CFq,+3,+2%3E-for-P128Pow5T3"],[601,"impl-Spec%3CFp,+3,+2%3E-for-P128Pow5T3"],[602,"impl-Spec%3CFq,+3,+2%3E-for-P128Pow5T3"],[623,"impl-Spec%3CFq,+3,+2%3E-for-P128Pow5T3"],[624,"impl-Spec%3CFp,+3,+2%3E-for-P128Pow5T3"],[626,"impl-Spec%3CFp,+3,+2%3E-for-P128Pow5T3"],[627,"impl-Spec%3CFq,+3,+2%3E-for-P128Pow5T3"],[629,"impl-Spec%3CFq,+3,+2%3E-for-P128Pow5T3"],[630,"impl-Spec%3CFp,+3,+2%3E-for-P128Pow5T3"]]},\ -"halo2_proofs":{"doc":"halo2_proofs","t":"NNNEALLALLLLALLLCLLAALALLLLQQQSIIQIISQQSKKKKFFFKLKKFKFKKKKLLKFFKFLLKFFLLKKDDIQIQDDDDQDDDIDLLLLLLLLLLLLLLLLLKLLLKLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMKLLKLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLLLLLLLLLLLLLLLLLLLLLLKLKLLLLLLLLLLLLLLLLLLLLLLLLLAKLLLLLLLLLLLLLLLKLKLMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNEIDNIIKLKLKLKKLLLLLLLLLLLKLKLLLLLLLKLLLLLLLLLLLKLLLKLLLLLLLLLLLLLLLNNECDDNNENNNDNNNNDNELLLLLLLLLLLLLLLLLLLLLFLLLLLLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDNNDEEIDNDNIDNNIQNDDNDEEDDNNDIQDDNNDNNNNNNNQIDDNDNNDDNNNDENDNNNNDDDNLLLLLLLLLLLLLLLLKLLKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLKLFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKKLLLLLLLLLLLLLLLLKLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFFFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLLLLKLLKLLKLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLMDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLIDEDDIDQNQDDDDNIDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLALLLLKLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDIQQIQQIIQIQQISSQILLLKKKLLKLLKKKLLLKLKLKLLKLLKLLLKKKKLKKKKKLLLLKKLKAAAADDGLLLLLLLLFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLFLLLDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLAAAADDGLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDDDIQDDIIIIILLLLLLLLLLLLLLLLLLLLLLLLLKLLLLKLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLKLKKLLLLLLLLLLLLLLLLKLKLLKLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLKLL","n":["Processed","RawBytes","RawBytesUnchecked","SerdeFormat","arithmetic","borrow","borrow_mut","circuit","clone","clone_into","deref","deref_mut","dev","drop","fmt","from","halo2curves","init","into","plonk","poly","to_owned","transcript","try_from","try_into","type_id","vzip","AffineExt","Base","Base","CURVE_ID","CurveAffine","CurveExt","CurveExt","FftGroup","Field","ONE","ScalarExt","ScalarExt","ZERO","a","a","b","b","best_fft","best_multiexp","compute_inner_product","coordinates","cube","double","endo","eval_polynomial","from_xy","g_to_lagrange","hash_to_curve","invert","is_on_curve","is_on_curve","is_zero","is_zero_vartime","jacobian_coordinates","kate_division","lagrange_interpolate","new_jacobian","parallelize","pow","pow_vartime","random","recursive_butterfly_arithmetic","small_multiexp","sqrt","sqrt_alt","sqrt_ratio","square","AssignedCell","Cell","Chip","Config","Layouter","Loaded","NamespacedLayouter","Region","RegionIndex","RegionStart","Root","SimpleFloorPlanner","SimpleTableLayouter","Table","TableLayouter","Value","add","add","add","add","add","add","add","add","add","add","and_then","as_mut","as_ref","assert_if_known","assign_advice","assign_advice_from_constant","assign_advice_from_instance","assign_cell","assign_cell","assign_cell","assign_fixed","assign_region","assign_region","assign_table","assign_table","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","cell","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cloned","cloned","column","config","constrain_constant","constrain_equal","constrain_instance","constrain_instance","copied","copied","copy_advice","cube","default","default_and_assigned","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","double","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","eq","error_if_known_and","evaluate","evaluate","floor_planner","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_iter","get_challenge","get_challenge","get_root","get_root","init","init","init","init","init","init","init","init","init","init","instance_value","into","into","into","into","into","into","into","into","into","into","into_field","invert","known","layouter","loaded","map","mul","mul","mul","mul","mul","mul","mul","mul","mul","mul","name_column","namespace","neg","new","pop_namespace","pop_namespace","push_namespace","push_namespace","region_index","row_offset","square","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","synthesize","to_field","to_owned","to_owned","to_owned","to_owned","to_owned","transpose_array","transpose_vec","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","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unknown","unzip","value","value_field","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","zip","V1","V1Pass","assign_region","assign_table","borrow","borrow","borrow_mut","borrow_mut","constrain_instance","deref","deref","deref_mut","deref_mut","drop","drop","fmt","fmt","from","from","get_challenge","get_root","init","init","into","into","pop_namespace","push_namespace","synthesize","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","Column","RegionColumn","RegionLayouter","RegionShape","Selector","SyncDeps","TableLayouter","assign_advice","assign_advice","assign_advice_from_constant","assign_advice_from_constant","assign_advice_from_instance","assign_advice_from_instance","assign_cell","assign_fixed","assign_fixed","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","columns","constrain_constant","constrain_constant","constrain_equal","constrain_equal","deref","deref","deref_mut","deref_mut","drop","drop","enable_selector","enable_selector","eq","fmt","fmt","from","from","from","from","hash","init","init","instance_value","instance_value","into","into","name_column","name_column","new","partial_cmp","region_index","row_count","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","Assigned","CellNotAssigned","CellValue","CircuitCost","CircuitGates","CircuitLayout","ConstraintNotSatisfied","ConstraintPoisoned","FailureLocation","InRegion","InstanceCellNotAssigned","Lookup","MockProver","OutsideRegion","Permutation","Poison","Shuffle","TracingFloorPlanner","Unassigned","VerifyFailure","advice_values","annotate_column","assert_satisfied","assert_satisfied_at_rows_par","assert_satisfied_par","assign_advice","assign_fixed","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","circuit_dot_graph","clone","clone","clone_into","clone_into","collect","copy","cost","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","enable_selector","enter_region","eq","eq","eq","exit_region","fill_from_row","fixed","fixed_values","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","get_challenge","init","init","init","init","init","init","init","into","into","into","into","into","into","into","mark_equality_cells","metadata","permutation","pop_namespace","push_namespace","queries_to_csv","query_instance","render","run","show_equality_constraints","show_labels","synthesize","to_owned","to_owned","to_string","to_string","to_string","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","verify","verify_at_rows","verify_at_rows_par","verify_par","view_height","view_width","vzip","vzip","vzip","vzip","vzip","vzip","vzip","offset","region","row","cell_values","column","column","column","constraint","constraint","gate","gate","gate_offset","gate_offset","location","location","location","location","lookup_index","name","name","offset","region","region","row","shuffle_index","CircuitCost","MarginalProofSize","ProofSize","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","fmt","fmt","fmt","from","from","from","init","init","init","into","into","into","marginal_proof_size","measure","proof_size","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","Column","Constraint","Gate","Region","VirtualCell","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","cmp","cmp","column_type","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","hash","index","init","init","init","init","init","into","into","into","into","into","partial_cmp","partial_cmp","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","Advice","Advice","Advice","AdviceQuery","Any","Assigned","Assignment","BatchVerifier","BoundsFailure","Challenge","Challenge","Circuit","Column","ColumnNotAssigned","ColumnNotInPermutation","ColumnType","Config","Constant","Constraint","ConstraintSystem","ConstraintSystemFailure","Constraints","Error","Expression","FirstPhase","Fixed","Fixed","Fixed","FixedQuery","FloorPlanner","FloorPlanner","Gate","Instance","Instance","Instance","InstanceQuery","InstanceTooLarge","InvalidInstances","Negated","NotEnoughColumnsForConstants","NotEnoughRowsAvailable","Opening","OverwriteDefault","Params","Phase","PinnedConstraintSystem","PinnedVerificationKey","Product","ProvingKey","Rational","Scaled","SecondPhase","Selector","Selector","Sum","Synthesis","TableColumn","TableError","TableError","ThirdPhase","Transcript","Trivial","UnevenColumnLengths","UsedColumn","VerifyingKey","VirtualCell","VirtualCells","Zero","add","add","add","add","add","add","add","add_assign","add_assign","add_proof","advice","advice_column","advice_column_in","advice_column_phase","advice_in","advice_queries","annotate_column","annotate_lookup_any_column","annotate_lookup_column","assign_advice","assign_fixed","blinding_factors","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","challenge_phase","challenge_usable_after","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","column_index","column_index","column_index","column_type","complex_selector","complexity","compress_selectors","configure","configure_with_params","configure_with_params","constants","constraint_name","copy","create_gate","create_proof","cs","cube","cur","default","default","default","degree","degree","denominator","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","directly_convert_selectors_to_fixed","double","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","enable","enable_constant","enable_equality","enable_selector","enter_region","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","evaluate","evaluate","evaluate_lazy","exit_region","expr","expr","fill_from_row","finalize","fixed_column","fixed_commitments","fixed_queries","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_bytes","from_bytes","gates","general_column_annotations","get_challenge","get_domain","get_vk","hash","hash","hash","hash","hash","hash","hash","hash","hash_into","identifier","index","index","index","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","inner","instance_column","instance_queries","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into_iter","invert","is_simple","is_zero_vartime","keygen_pk","keygen_vk","keygen_vk_custom","lookup","lookup_any","lookup_table_column","lookups","minimum_rows","mul","mul","mul","mul","mul","mul","mul_assign","mul_assign","name","neg","neg","neg","new","new","next","num_advice_columns","num_challenges","num_fixed_columns","num_instance_columns","num_selectors","numerator","params","params","partial_cmp","partial_cmp","partial_cmp","permutation","permutation","permutation","phase","phase","phase","pinned","pinned","polynomials","pop_namespace","prev","product","push_namespace","query_advice","query_any","query_cell","query_cell","query_cell","query_cell","query_cell","query_cell","query_cells","query_challenge","query_fixed","query_instance","query_instance","query_selector","read","read","rot","rotation","rotation","rotation","selector","set_minimum_degree","shuffle","shuffles","source","square","square","sub","sub","sub","sub","sub","sub","sub","sub_assign","sub_assign","sum","synthesize","synthesize","to_bytes","to_bytes","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","transcript_repr","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unblinded_advice_column","unblinded_advice_column_in","verify_proof","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","with_selector","without_witnesses","write","write","current_k","Argument","Assembly","VerifyingKey","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","build_ordered_mapping","clone","clone","clone","clone_into","clone_into","clone_into","columns","commitments","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","eq","fmt","fmt","fmt","from","from","from","get_columns","init","init","init","into","into","into","mapping","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","Basis","Coeff","Error","EvaluationDomain","ExtendedLagrangeCoeff","Guard","LagrangeCoeff","MSMAccumulator","OpeningError","Output","PinnedEvaluationDomain","Polynomial","ProverQuery","Rotation","SamplingError","VerificationStrategy","VerifierQuery","add","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","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","coeff_from_vec","coeff_to_extended","commitment","constant_extended","constant_lagrange","cur","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","divide_by_vanishing_poly","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","empty_coeff","empty_extended","empty_lagrange","eq","extended_k","extended_len","extended_to_coeff","finalize","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","get_extended_omega","get_omega","get_omega_inv","get_quotient_poly_degree","index","index","index","index_mut","index_mut","index_mut","init","init","init","init","init","init","init","init","init","init","into","into","into","into","into","into","into","into","into","into","ipa","iter","iter_mut","k","kzg","l_i_range","lagrange_from_vec","lagrange_to_coeff","mul","new","new","new_commitment","new_msm","next","num_coeffs","pinned","prev","process","rotate","rotate_extended","rotate_omega","sub","sub","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_from","try_from","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","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","Blind","CommitmentScheme","Curve","Guard","MSM","MSM","MSMAccumulator","Params","ParamsProver","ParamsProver","ParamsVerifier","ParamsVerifier","ParamsVerifier","Prover","QUERY_INSTANCE","QUERY_INSTANCE","Scalar","Verifier","add","add_assign","add_assign","add_msm","append_term","bases","borrow","borrow_mut","check","clone","clone_into","commit","commit_lagrange","create_proof","default","deref","deref_mut","downsize","drop","empty_msm","eq","eval","fmt","from","get_g","init","into","k","mul","mul_assign","mul_assign","n","new","new","new","new","new_params","read","read_params","scalars","scale","to_owned","try_from","try_into","type_id","verifier_params","verify_proof","vzip","write","commitment","msm","multiopen","strategy","IPACommitmentScheme","ParamsIPA","ParamsVerifierIPA","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","commit","commit_lagrange","create_proof","deref","deref","deref_mut","deref_mut","downsize","drop","drop","empty_msm","fmt","fmt","from","from","get_g","init","init","into","into","k","n","new","new_params","read","read_params","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","verifier_params","verify_proof","vzip","vzip","write","MSMIPA","add_constant_term","add_msm","add_msm","add_to_g_scalars","add_to_u_scalar","add_to_w_scalar","append_term","bases","borrow","borrow_mut","check","clone","clone_into","deref","deref_mut","drop","eval","fmt","from","init","into","new","scalars","scale","to_owned","try_from","try_into","type_id","vzip","ProverIPA","VerifierIPA","borrow","borrow","borrow_mut","borrow_mut","create_proof","deref","deref","deref_mut","deref_mut","drop","drop","fmt","fmt","from","from","init","init","into","into","new","new","try_from","try_from","try_into","try_into","type_id","type_id","verify_proof","vzip","vzip","Accumulator","AccumulatorStrategy","GuardIPA","SingleStrategy","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","compute_g","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","finalize","finalize","fmt","fmt","fmt","fmt","from","from","from","from","g","init","init","init","init","into","into","into","into","new","new","process","process","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","u_packed","use_challenges","use_g","vzip","vzip","vzip","vzip","commitment","msm","multiopen","strategy","KZGCommitmentScheme","ParamsKZG","ParamsVerifierKZG","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","commit","commit_lagrange","deref","deref","deref_mut","deref_mut","downsize","drop","drop","empty_msm","fmt","fmt","from","from","from_parts","g2","get_g","init","init","into","into","k","n","new","new_params","read","read_custom","read_params","s_g2","setup","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","verifier_params","vzip","vzip","write","write_custom","DualMSM","MSMKZG","add_msm","add_msm","append_term","bases","borrow","borrow","borrow_mut","borrow_mut","check","check","clone","clone","clone_into","clone_into","combine_with_base","default","deref","deref","deref_mut","deref_mut","drop","drop","eval","fmt","fmt","from","from","from","init","init","into","into","new","new","scalars","scale","scale","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","ProverGWC","ProverSHPLONK","VerifierGWC","VerifierSHPLONK","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","create_proof","create_proof","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","fmt","fmt","fmt","fmt","from","from","from","from","init","init","init","init","into","into","into","into","new","new","new","new","new","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","verify_proof","verify_proof","vzip","vzip","vzip","vzip","AccumulatorStrategy","GuardKZG","SingleStrategy","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","finalize","finalize","fmt","fmt","fmt","from","from","from","init","init","init","into","into","into","new","new","new","new","process","process","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","with","Blake2bRead","Blake2bWrite","Challenge255","ChallengeScalar","EncodedChallenge","Input","Keccak256Read","Keccak256Write","Transcript","TranscriptRead","TranscriptReadBuffer","TranscriptWrite","TranscriptWriterBuffer","as_challenge_scalar","borrow","borrow","borrow","borrow","borrow","borrow","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","common_point","common_point","common_point","common_point","common_point","common_scalar","common_scalar","common_scalar","common_scalar","common_scalar","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","drop","finalize","finalize","finalize","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","get_scalar","get_scalar","init","init","init","init","init","init","init","init","init","init","init","init","into","into","into","into","into","into","new","new","read_point","read_point","read_point","read_scalar","read_scalar","read_scalar","squeeze_challenge","squeeze_challenge","squeeze_challenge","squeeze_challenge","squeeze_challenge","squeeze_challenge_scalar","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","translate","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","write_point","write_point","write_point","write_scalar","write_scalar","write_scalar"],"q":[[0,"halo2_proofs"],[27,"halo2_proofs::arithmetic"],[74,"halo2_proofs::circuit"],[341,"halo2_proofs::circuit::floor_planner"],[377,"halo2_proofs::circuit::layouter"],[445,"halo2_proofs::dev"],[608,"halo2_proofs::dev::FailureLocation"],[611,"halo2_proofs::dev::VerifyFailure"],[633,"halo2_proofs::dev::cost"],[678,"halo2_proofs::dev::metadata"],[793,"halo2_proofs::plonk"],[1518,"halo2_proofs::plonk::Error"],[1519,"halo2_proofs::plonk::permutation"],[1576,"halo2_proofs::poly"],[1798,"halo2_proofs::poly::commitment"],[1865,"halo2_proofs::poly::ipa"],[1869,"halo2_proofs::poly::ipa::commitment"],[1916,"halo2_proofs::poly::ipa::msm"],[1946,"halo2_proofs::poly::ipa::multiopen"],[1978,"halo2_proofs::poly::ipa::strategy"],[2051,"halo2_proofs::poly::kzg"],[2055,"halo2_proofs::poly::kzg::commitment"],[2106,"halo2_proofs::poly::kzg::msm"],[2155,"halo2_proofs::poly::kzg::multiopen"],[2220,"halo2_proofs::poly::kzg::strategy"],[2280,"halo2_proofs::transcript"],[2434,"core::fmt"],[2435,"core::fmt"],[2436,"core::any"],[2437,"pasta_curves::arithmetic::curves"],[2438,"subtle"],[2439,"alloc::vec"],[2440,"core::ops::function"],[2441,"alloc::boxed"],[2442,"subtle"],[2443,"core::marker"],[2444,"core::marker"],[2445,"core::convert"],[2446,"rand_core"],[2447,"core::ops::arith"],[2448,"core::ops::function"],[2449,"core::fmt"],[2450,"core::option"],[2451,"core::ops::arith"],[2452,"std::collections::hash::set"],[2453,"core::hash"],[2454,"ff"],[2455,"core::cmp"],[2456,"core::cmp"],[2457,"plotters::drawing::area"],[2458,"plotters::drawing::area"],[2459,"core::ops::range"],[2460,"group::prime"],[2461,"std::collections::hash::map"],[2462,"core::default"],[2463,"std::io::error"],[2464,"std::io::error"],[2465,"core::error"],[2466,"std::io"],[2467,"halo2curves::pairing"]],"d":["Curve elements are serialized in compressed form. Field …","Curve elements are serialized in uncompressed form. Field …","Serialization is the same as RawBytes, but no checks are …","This enum specifies how various types are serialized and …","This module provides common utilities, traits and …","","","Traits and structs for implementing circuit components.","","","","","Tools for developing circuits.","","","Returns the argument unchanged.","","","Calls U::from(self).","This module provides an implementation of a variant of …","Contains utilities for performing arithmetic over …","","This module contains utilities and traits for dealing with …","","","","","The affine version of the curve","The base field over which this elliptic curve is …","The base field over which this elliptic curve is …","CURVE_ID used for hash-to-curve.","This trait is the affine counterpart to Curve and is used …","This trait is a common interface for dealing with elements …","The projective form of the curve","This represents an element of a group with basic …","This trait represents an element of a field.","The one element of the field, the multiplicative identity.","The scalar field of this elliptic curve.","The scalar field of this elliptic curve.","The zero element of the field, the additive identity.","Returns the curve constant a.","Returns the curve constant $a$.","Returns the curve constant b.","Returns the curve constant $b$.","Performs a radix-$2$ Fast-Fourier Transformation (FFT) on …","Performs a multi-exponentiation operation.","This computes the inner product of two vectors a and b.","Gets the coordinates of this point.","Cubes this element.","Doubles this element.","Apply the curve endomorphism by multiplying the …","This evaluates a provided polynomial (in coefficient form) …","Obtains a point given $(x, y)$, failing if it is not on the","Convert coefficient bases group elements to lagrange basis …","Requests a hasher that accepts messages and returns …","Computes the multiplicative inverse of this element, …","Returns whether or not this element is on the curve; should","Returns whether or not this element is on the curve; should","Returns true iff this element is zero.","Returns true iff this element is zero.","Return the Jacobian coordinates of this point.","Divides polynomial a in X by X - b with no remainder.","Returns coefficients of an n - 1 degree polynomial given a …","Obtains a point given Jacobian coordinates $X : Y : Z$, …","This utility function will parallelize an operation that …","Exponentiates self by exp, where exp is a little-endian …","Exponentiates self by exp, where exp is a little-endian …","Returns an element chosen uniformly at random using a …","This perform recursive butterfly arithmetic","Performs a small multi-exponentiation operation. Uses the …","Returns the square root of the field element, if it is …","Equivalent to Self::sqrt_ratio(self, one()).","Computes:","Squares this element.","An assigned cell.","A pointer to a cell within a circuit.","A chip implements a set of instructions that can be used …","A type that holds the configuration for this chip, and any …","A layout strategy within a circuit. The layouter is …","A type that holds any general chip state that needs to be …","This is a “namespaced” layouter which borrows a …","A region of the circuit in which a Chip can assign cells.","Index of a region in a layouter","Starting row of a region in a layouter","Represents the type of the “root” of this layouter, so …","A simple FloorPlanner that performs minimal optimizations.","A table layouter that can be used to assign values to a …","A lookup table in the circuit.","Helper trait for implementing a custom Layouter.","A value that might exist within a circuit.","","","","","","","","","","","Returns Value::unknown() if the value is Value::unknown(), …","Converts from &mut Value<V> to Value<&mut V>.","Converts from &Value<V> to Value<&V>.","Enforces an assertion on the contained value, if known.","Assign an advice column value (witness).","Assigns a constant value to the column advice at offset …","Assign the value of the instance column’s cell at …","Assigns a fixed value to a table cell.","","Assigns a fixed value to a table cell.","Assign a fixed value.","Assign a region of gates to an absolute row number.","","Assign a table region to an absolute row number.","","","","","","","","","","","","","","","","","","","","","","Returns the cell.","","","","","","","","","","","Maps a Value<&V> to a Value<V> by cloning the contents of …","Maps a Value<&mut V> to a Value<V> by cloning the contents …","The column of this cell.","The chip holds its own configuration.","Constrains a cell to have a constant value.","Constrains two cells to have the same value.","Constrains a Cell to equal an instance column’s row …","","Maps a Value<&mut V> to a Value<V> by copying the contents …","Maps a Value<&V> to a Value<V> by copying the contents of …","Copies the value to a given advice cell and constrains …","Cubes this field element.","","maps from a fixed column to a pair (default value, vector …","","","","","","","","","","","","","","","","","","","","","","","Doubles this field element.","","","","","","","","","","","","","Checks the contained value for an error condition, if …","Evaluates this value directly, performing an unbatched …","Evaluates this assigned cell’s value directly, …","Implementations of common circuit floor planners.","","","","","","","","","","","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.","Takes each element in the Iterator: if it is …","Queries the value of the given challenge.","","Gets the “root” of this assignment, bypassing the …","","","","","","","","","","","","Returns the value of the instance column’s cell at …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns the field element corresponding to this value.","Inverts this assigned value (taking the inverse of zero to …","Constructs a known value.","Implementations of common circuit layouters.","Provides access to general chip state loaded at the …","Maps a Value<V> to Value<W> by applying a function to the …","","","","","","","","","","","Allows the circuit implementor to name/annotate a Column …","Enters into a namespace.","","Returns a new SimpleTableLayouter","Exits out of the existing namespace.","","Creates a new (sub)namespace and enters into it.","","Identifies the region in which this cell resides.","The relative offset of this cell within its region.","Squares this field element.","","","","","","","","","","","","Returns the field element corresponding to this value.","","","","","","Transposes a Value<[V; LEN]> into a [Value<V>; LEN].","Transposes a Value<impl IntoIterator<Item = V>> into a …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Constructs an unwitnessed value.","Unzips a value containing a tuple of two values.","Returns the value of the AssignedCell.","Returns the field element value of the AssignedCell.","","","","","","","","","","","Zips self with another Value.","The version 1 FloorPlanner provided by halo2.","A single pass of the V1 layouter.","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","Concrete column","The virtual column involved in a region. This includes …","Helper trait for implementing a custom Layouter.","The shape of a region. For a region at a certain index, we …","Virtual column representing a (boolean) selector","Intermediate trait requirements for RegionLayouter when …","Helper trait for implementing a custom Layouter.","Assign an advice column value (witness)","","Assigns a constant value to the column advice at offset …","","Assign the value of the instance column’s cell at …","","Assigns a fixed value to a table cell.","Assigns a fixed value","","","","","","","","","","","Get a reference to the set of columns used in a RegionShape…","Constrains a cell to have a constant value.","","Constraint two cells to have the same value.","","","","","","","","Enables a selector at the given offset.","","","","","Returns the argument unchanged.","","","Returns the argument unchanged.","","","","Returns the value of the instance column’s cell at …","","Calls U::from(self).","Calls U::from(self).","Allows the circuit implementor to name/annotate a Column …","","Create a new RegionShape for a region at region_index.","","Get the region_index of a RegionShape.","Get the row_count of a RegionShape.","","","","","","","","","","","A cell that has been assigned a value.","A cell used in an active gate was not assigned to.","The value of a particular cell within the circuit.","","A struct for collecting and displaying the gates within a …","Graphical renderer for circuit layouts.","A constraint was not satisfied for a particular row.","A constraint was active on an unusable row, and is likely …","The location within the circuit at which a particular …","A location inside a region.","An instance cell used in an active gate was not assigned …","A lookup input did not exist in its corresponding table.","A test prover for debugging circuits.","A location outside of a region.","A permutation did not preserve the original value of a …","A unique poisoned cell.","A shuffle input did not exist in its corresponding map.","A helper type that augments a FloorPlanner with tracing …","An unassigned cell.","The reasons why a particular circuit is not satisfied.","Return the content of an advice column as assigned by the …","","Panics if the circuit being checked by this MockProver is …","Panics if the circuit being checked by this MockProver is …","Panics if the circuit being checked by this MockProver is …","","","","","","","","","","","","","","","","","Builds a dot graph string representing the given circuit.","","","","","Collects the gates from within the circuit.","","Developer tools for investigating the cost of a circuit.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the list of Fixed Columns used within a MockProver …","Return the content of a fixed column as assigned by the …","","","","","","","","","","","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).","Marks cells involved in equality constraints, in red.","Metadata about circuits.","Returns the permutation argument (Assembly) used within a …","","","Prints the queries in this circuit to a CSV grid.","","Renders the given circuit on the given drawing area.","Runs a synthetic keygen-and-prove operation on the given …","Draws red lines between equality-constrained cells.","Sets the visibility of region labels.","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns Ok(()) if this MockProver is satisfied, or a list …","Returns Ok(()) if this MockProver is satisfied, or a list …","Returns Ok(()) if this MockProver is satisfied, or a list …","Returns Ok(()) if this MockProver is satisfied, or a list …","Sets the view height for this layout, as a number of rows.","Sets the view width for this layout, as a number of …","","","","","","","","The offset (relative to the start of the region) at which …","The region in which the failure occurred.","The circuit row on which the failure occurred.","The values of the virtual cells used by this constraint.","The column in which this cell should be assigned.","The column in which this cell should be assigned.","The column in which this permutation is not satisfied.","The polynomial constraint that is not satisfied.","The polynomial constraint that is not satisfied.","The index of the active gate.","The index of the active gate.","The offset (relative to the start of the region) at which …","The offset (relative to the start of the region) at which …","The location at which this constraint is not satisfied.","The location at which the lookup is not satisfied.","The location at which the lookup is not satisfied.","The location at which the permutation is not satisfied.","The index of the lookup that is not satisfied. These …","The name of the lookup that is not satisfied.","The name of the lookup that is not satisfied.","The offset (relative to the start of the region) at which …","The region in which this cell should be assigned.","The region in which this gate was activated.","The absolute row at which this cell should be assigned.","The index of the lookup that is not satisfied. These …","Measures a circuit to determine its costs, and explain …","The marginal size of a Halo 2 proof, broken down into its …","The size of a Halo 2 proof, broken down into its …","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns the marginal proof size per instance of this …","Measures a circuit with parameter constant k.","Returns the proof size for the given number of instances …","","","","","","","","","","","","","Metadata about a column within a circuit.","Metadata about a configured constraint within a circuit.","Metadata about a configured gate within a circuit.","Metadata about an assigned region within a circuit.","A “virtual cell” is a PLONK cell that has been queried …","","","","","","","","","","","","","","","","","","","","","Return the column type.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","","Returns the argument unchanged.","","Returns the argument unchanged.","","","Returns the argument unchanged.","","","","","Returns the argument unchanged.","","Return the column index.","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","An advice column","An Advice variant","This is an advice (witness) column queried at a certain …","Query of advice column at a certain relative location","An enum over the Advice, Fixed, Instance structs","A value assigned to a cell within a circuit.","This trait allows a Circuit to direct some backend to …","A verifier that checks multiple proofs in a batch. This …","Out of bounds index passed to a backend","A challenge squeezed from transcript after advice columns …","This is a challenge","This is a trait that circuits provide implementations for …","A column with an index and type","A TableColumn has not been assigned.","The instance sets up a copy constraint involving a column …","A column type","This is a configuration object that stores things like …","This is a constant polynomial","An individual polynomial constraint.","This is a description of the circuit environment, such as …","The constraint system is not satisfied.","A set of polynomial constraints with a common selector.","This is an error that could occur during proving or …","Low-degree expression representing an identity that must …","First phase","A fixed column","A Fixed variant","This is a fixed column queried at a certain relative …","Query of fixed column at a certain relative location","A floor planning strategy for a circuit.","The floor planner used for this circuit. This is an …","Gate","An instance column","An Instance variant","This is an instance (external) column queried at a certain …","Query of instance column at a certain relative location","Instance provided exceeds number of available rows","The provided instances do not match the circuit parameters.","This is a negated polynomial","Circuit synthesis requires global constants, but circuit …","k is too small for the given circuit.","Opening error","Attempt to overwrite a default value","Optional circuit configuration parameters. Requires the …","Phase of advice column","Represents the minimal parameters that determine a …","Minimal representation of a verification key that can be …","This is the product of two polynomials","This is a proving key which allows for the creation of …","A value stored as a fraction to enable batch inversion.","This is a scaled polynomial","Second phase","A selector, representing a fixed boolean value per row of …","This is a virtual selector","This is the sum of two polynomials","This is an error that can occur during synthesis of the …","A fixed column of a lookup table.","This is an error that could occur during table synthesis.","An error relating to a lookup table.","Third phase","Transcript error","A value that does not require inversion to evaluate.","A Table has columns of uneven lengths.","Attempt to assign a used TableColumn","This is a verifying key which allows for the verification …","A “virtual cell” is a PLONK cell that has been queried …","Exposes the “virtual cells” that can be queried while …","The field element zero.","","","","","","","","","","Adds a proof to the batch.","Returns Advice variant in FirstPhase","Allocate a new advice column at FirstPhase","Allocate a new advice column in given phase","Returns phase of advice columns","Returns Advice variant in given Phase","Returns advice queries","Allows the developer to include an annotation for an …","Annotate an Instance column.","Annotate a Lookup column.","Assign an advice column value (witness)","Assign a fixed value","Compute the number of blinding factors necessary to …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns phase of challenges","Requests a challenge that is usable after the given phase.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Column index","Column index","Column index","Type of this column.","Allocate a new complex selector that can appear anywhere …","Approximate the computational complexity of this …","This will compress selectors together depending on their …","The circuit is given an opportunity to describe the exact …","The circuit is given an opportunity to describe the exact …","The circuit is given an opportunity to describe the exact …","Returns constants","Returns the name of the constraint at index …","Assign two cells to have the same value","Creates a new gate.","This creates a proof for the provided circuit when given …","Returns ConstraintSystem","Cubes this element.","Return expression from column at the current row","","","","Compute the degree of this polynomial","Compute the degree of the constraint system (the maximum …","Returns the denominator, if non-trivial.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Does not combine selectors and directly replaces them …","Doubles this element.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Enable this selector at the given offset within the given …","Enables this fixed column to be used for global constant …","Enable the ability to enforce equality over cells in this …","Enables a selector at the given row.","Creates a new region and enters into it.","","","","","","","","","","","","","","Evaluates this assigned value directly, performing an …","Evaluate the polynomial using the provided closures to …","Evaluate the polynomial lazily using the provided closures …","Exits the current region.","Return expression from selector","Return Expression","Fills a fixed column starting from the given row with …","Finalizes the batch and checks its validity.","Allocate a new fixed column","Returns commitments of fixed polynomials","Returns fixed queries","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","","","Returns the argument unchanged.","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","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.","Reads a verification key from a slice of bytes using …","Reads a proving key from a slice of bytes using Self::read.","Returns gates","Returns general column annotations","Queries the value of the given challenge.","Get the underlying EvaluationDomain.","Get the underlying VerifyingKey.","","","","","","","","","Hashes a verification key into a transcript.","Identifier for this expression. Expressions with identical …","Index of this column.","Returns index of this selector","Index of this challenge.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns inner column","Allocate a new instance column","Returns instance queries","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","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).","","Inverts this assigned value (taking the inverse of zero to …","Is this selector “simple”? Simple selectors can only …","Returns true iff this element is zero.","Generate a ProvingKey from a VerifyingKey and an instance …","Generate a VerifyingKey from an instance of Circuit. By …","Generate a VerifyingKey from an instance of Circuit.","Add a lookup argument for some input expressions and table …","Add a lookup argument for some input expressions and table …","Allocates a new fixed column that can be used in a lookup …","Returns lookup arguments","Returns the minimum necessary rows that need to exist in …","","","","","","","","","Returns the gate name.","","","","Returns Advice in given Phase","Constructs a new batch verifier.","Return expression from column at the next row","Returns number of advice columns","Returns number of challenges","Returns number of fixed columns","Returns number of instance columns","Returns number of selectors","Returns the numerator.","Returns a reference to the parameters that should be used …","Returns a reference to the parameters that should be used …","","","","Implementation of permutation argument.","Returns permutation argument","Returns VerifyingKey of permutation","Phase of this column","Phase of this advice column","Phase of this challenge.","Obtain a pinned version of this constraint system; a …","Obtains a pinned representation of this verification key …","Returns constraints of this gate","Exits out of the existing namespace.","Return expression from column at the previous row","","Creates a new (sub)namespace and enters into it.","Query an advice column at a relative position","Query an Any column at a relative position","Return expression from cell","Return expression from column at a relative position","","","","","Make side effects","Query a challenge","Query a fixed column at a relative position","Queries the cell of an instance column at a particular …","Query an instance column at a relative position","Query a selector at the current position.","Reads a verification key from a buffer.","Reads a proving key from a buffer. Does so by reading …","Return expression from column at the specified rotation","Rotation of this query","Rotation of this query","Rotation of this query","Allocate a new (simple) selector. Simple selectors cannot …","Sets the minimum degree required by the circuit, which can …","Add a shuffle argument for some input expressions and …","Returns shuffle arguments","","Squares this element.","Square this expression.","","","","","","","","","","","Given the provided cs, synthesize the given circuit.","Given the provided cs, synthesize the circuit. The …","Writes a verifying key to a vector of bytes using …","Writes a proving key to a vector of bytes using Self::write…","","","","","","","","","","","","","","","","","","","","","Returns representative of this VerifyingKey in transcripts","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Allocate a new unblinded advice column at FirstPhase","Allocate a new unblinded advice column in given phase. …","Returns a boolean indicating whether or not the proof is …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Constructs a set of constraints that are controlled by the …","Returns a copy of this circuit with no witness values …","Writes a verifying key to a buffer.","Writes a proving key to a buffer.","The current value of k being used.","A permutation argument.","Struct that accumulates all the necessary data in order to …","The verifying key for a single permutation argument.","","","","","","","Builds the ordered mapping of the cycles. This will only …","","","","","","","Returns columns that participate in the permutation …","Returns commitments of sigma polynomials","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns columns that participate on the permutation …","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns mappings of the copies.","","","","","","","","","","","","","","","","The basis over which a polynomial is described.","The polynomial is defined as coefficients","This is an error that could occur during proving or …","This structure contains precomputed constants and other …","The polynomial is defined as coefficients of Lagrange …","Guards is unfinished verification result. Implement this …","The polynomial is defined as coefficients of Lagrange …","Multi scalar engine which is not evaluated yet.","OpeningProof is not well-formed","The output type of this verification strategy after …","Represents the minimal parameters that determine an …","Represents a univariate polynomial defined over a field …","A polynomial query at a point","Describes the relative rotation of a vector. Negative …","Caller needs to re-sample a point","Trait representing a strategy for verifying Halo 2 proofs.","A polynomial query at a point","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Obtains a polynomial in coefficient form when given a …","This takes us from an n-length coefficient vector into a …","Generic commitment scheme structures","Returns a constant polynomial in the extended Lagrange …","Returns a constant polynomial in the Lagrange coefficient …","The current location in the evaluation domain","","","","","","","","","","","","","","","","","","","","","","","This divides the polynomial (in the extended domain) by …","","","","","","","","","","","Returns an empty (zero) polynomial in the coefficient basis","Returns an empty (zero) polynomial in the extended …","Returns an empty (zero) polynomial in the Lagrange …","","Get the size of the extended domain","Get the size of the extended domain","This takes us from the extended evaluation domain and gets …","Finalizes the batch and checks its validity.","","","","","","","","","","","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.","Get the generator of the extended domain’s …","Get $\\\\omega$, the generator of the $2^k$ order …","Get $\\\\omega^{-1}$, the inverse of the generator of the …","Gets the quotient polynomial’s degree (as a multiple of …","","","","","","","","","","","","","","","","","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).","Inner product argument commitment scheme","Iterate over the values, which are either in coefficient …","Iterate over the values mutably, which are either in …","Get the size of the domain","KZG commitment scheme","Computes evaluations (at the point x, where xn = x^n) of …","Obtains a polynomial in Lagrange form when given a vector …","This takes us from an n-length vector into the coefficient …","","Creates new verification strategy instance","This constructs a new evaluation domain object based on …","Create a new verifier query based on a commitment","Create a new verifier query based on a linear combination …","The next location in the evaluation domain","Gets the size of this polynomial in terms of the number of …","Obtain a pinned version of this evaluation domain; a …","The previous location in the evaluation domain","Obtains an MSM from the verifier strategy and yields back …","Rotates the values in a Lagrange basis polynomial by …","Rotate the extended domain polynomial over the original …","Multiplies a value by some power of $\\\\omega$, essentially …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Wrapper type around a blinding factor.","Defines components of a commitment scheme.","Elliptic curve used to commit the application and witnesses","Unfinalized verification result. This is returned in …","Multi scalar multiplication engine","Multi scalar multiplication engine","Accumulator fot comressed verification","Parameters for circuit sysnthesis and prover parameters.","Parameters for circuit sysnthesis and prover parameters.","Constant prover parameters","Verifier specific functionality with circuit constraints","Constant verifier parameters","Constant verifier parameters.","Common multi-open prover interface for various commitment …","Query instance or not","Query instance or not","Application field of this commitment scheme","Common multi-open verifier interface for various …","","","","Add another multiexp into this one","Add arbitrary term (the scalar and the point)","Return base points","","","Perform multiexp and check that it results in zero","","","This computes a commitment to a polynomial described by …","This commits to a polynomial using its evaluations over …","Create a multi-opening proof","","","","Downsize Params with smaller k.","","Generates an empty multiscalar multiplication struct using …","","Perform multiexp and return the result","","Returns the argument unchanged.","Getter for g generators","","Calls U::from(self).","Logaritmic size of the circuit","","","","Size of the circuit","Returns new instance of parameters","Creates new prover instance","Creates new verifier instance","Given rng creates new blinding scalar","Wrapper for parameter generator","Reads params from a buffer.","Wrapper for parameter reader","Scalars","Scale all scalars in the MSM by some scaling factor","","","","","Returns verification parameters.","Process the proof and returns unfinished result named Guard","","Writes params to a buffer.","This module contains an implementation of the polynomial …","Multiscalar multiplication engines","IPA multi-open scheme This module contains an optimisation …","Strategies used with KZG scheme","Concrete IPA commitment scheme","Public parameters for IPA commitment scheme","Verifier parameters","","","","","","","This computes a commitment to a polynomial described by …","This commits to a polynomial using its evaluations over …","Create a polynomial commitment opening proof for the …","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self).","Calls U::from(self).","","","Initializes parameters for the curve, given a random …","","Reads params from a buffer.","","","","","","","","","","Checks to see if the proof represented within transcript …","","","Writes params to a buffer.","A multiscalar multiplication in the polynomial commitment …","Add a value to the first entry of g_scalars.","Add another multiexp into this one","Add another multiexp into this one","Add a vector of scalars to g_scalars. This function will …","Add to u_scalar","Add to w_scalar","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","Given verifier parameters Creates an empty multi scalar …","","","","","","","","IPA multi-open prover","IPA multi-open verifier","","","","","Create a multi-opening proof","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","An accumulator instance consisting of an evaluation claim …","A verifier that checks multiple proofs in a batch.","Wrapper for verification accumulator","A verifier that checks single proof","","","","","","","","","","","","","Computes G = ⟨s, params.g⟩","","","","","","","","","","","","","Finalizes the batch and checks its validity.","Finalizes the batch and checks its validity.","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","The claimed output of the linear-time polycommit opening …","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","A vector of challenges u_0, …, u_{k - 1} sampled by the …","Lets caller supply the challenges and obtain an MSM with …","Lets caller supply the purported G point and simply appends","","","","","KZG commitment scheme","Multiscalar multiplication engines","KZG multi-open scheme","Strategies used with KZG scheme","Umbrella commitment scheme construction for all KZG …","These are the public parameters for the polynomial …","KZG multi-open verification parameters","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Initializes parameters for the curve through existing …","Returns gernerator on G2","","","","Calls U::from(self).","Calls U::from(self).","","","","","Reads params from a buffer.","Reads params from a buffer.","","Returns first power of secret on G2","Initializes parameters for the curve, draws toxic secret …","","","","","","","","","","","Writes params to a buffer.","Writes parameters to buffer","Two channel MSM accumulator","A multiscalar multiplication in the polynomial commitment …","","Add another multiexp into this one","","","","","","","","Performs final pairing check with given verifier params …","","","","","Prepares all scalars in the MSM to linear combination","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self).","Calls U::from(self).","Create an empty MSM instance","Create a new two channel MSM accumulator instance","","","Scale all scalars in the MSM by some scaling factor","","","","","","","","","","","Concrete KZG prover with GWC variant","Concrete KZG prover with SHPLONK variant","Concrete KZG verifier with GWC variant","Concrete KZG multiopen verifier with SHPLONK variant","","","","","","","","","Create a multi-opening proof","Create a multi-opening proof","","","","","","","","","","","","","","","","","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).","","","","Given parameters creates new prover instance","","","","","","","","","","","","","","","Verify a multi-opening proof","","","","","A verifier that checks multiple proofs in a batch","Wrapper for linear verification accumulator","A verifier that checks a single proof","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Constructs an empty batch verifier","","","Constructs an empty batch verifier","","","","","","","","","","","","","","","","","","Constructs and initialized new batch verifier","We will replace BLAKE2b with an algebraic hash function in …","We will replace BLAKE2b with an algebraic hash function in …","A 255-bit challenge.","The scalar representation of a verifier challenge.","EncodedChallenge<C> defines a challenge encoding with a …","The Input type used to derive the challenge encoding. For …","Keccak256 hash function reader for EVM compatibility","Keccak256 hash function writer for EVM compatibility","Generic transcript view (from either the prover or verifier…","Transcript view from the perspective of a verifier that …","Initializes transcript at verifier side.","Transcript view from the perspective of a prover that has …","Manages beginning and finishing of transcript pipeline.","Cast an encoded challenge as a typed ChallengeScalar.","","","","","","","","","","","","","","","","","","","","","","","","","Writing the point to the transcript without writing it to …","","","","","Writing the scalar to the transcript without writing it to …","","","","","","","","","","","","","","","","","","","","","","","","","Conclude the interaction and return the output buffer …","","Conclude the interaction and return the output buffer …","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Get a scalar field element from an encoded challenge.","","Initialize a transcript given an input buffer.","Initialize a transcript given an output buffer.","","Initialize a transcript given an input buffer.","Initialize a transcript given an input buffer.","","Initialize a transcript given an output buffer.","","Initialize a transcript given an output buffer.","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Get an encoded challenge from a given input challenge.","","Read a curve point from the prover.","","","Read a curve scalar from the prover.","","","Squeeze an encoded verifier challenge from the transcript.","","","","","Squeeze a typed challenge (in the scalar field) from the …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Write a curve point to the proof and the transcript.","","","Write a scalar to the proof and the transcript.","",""],"i":[1,1,1,0,0,1,1,0,1,1,1,1,0,1,1,1,0,1,1,0,0,1,0,1,1,1,1,190,190,12,190,0,0,12,0,0,10,190,12,10,190,12,190,12,0,0,0,12,10,10,190,0,12,0,190,10,190,12,10,10,190,0,0,190,0,10,10,10,0,0,10,10,10,10,0,0,0,191,0,191,0,0,0,0,45,0,0,0,0,0,29,29,29,29,29,29,29,29,29,29,29,29,29,29,32,32,32,55,40,42,32,45,44,45,44,40,29,53,47,48,46,35,32,42,44,40,29,53,47,48,46,35,32,42,44,35,29,47,48,46,35,29,47,48,46,35,29,29,46,191,32,32,45,44,29,29,35,29,29,40,40,29,53,47,47,48,48,46,35,32,42,44,40,29,53,47,48,46,35,32,42,44,29,40,29,53,47,48,46,35,32,42,44,44,48,29,29,35,0,40,29,53,47,48,46,35,32,42,44,40,29,29,53,47,47,48,48,46,35,32,32,42,42,44,29,45,44,45,44,40,29,53,47,48,46,35,32,42,44,32,40,29,53,47,48,46,35,32,42,44,29,29,29,0,191,29,29,29,29,29,29,29,29,29,29,29,32,45,29,40,45,44,45,44,46,46,29,29,29,29,29,29,29,29,29,29,29,53,29,29,47,48,46,35,29,29,40,29,53,47,48,46,35,32,42,44,40,29,53,47,48,46,35,32,42,44,40,29,53,47,48,46,35,32,42,44,29,29,35,35,40,29,53,47,48,46,35,32,42,44,29,0,0,67,67,68,67,68,67,67,68,67,68,67,68,67,68,67,68,67,67,67,68,67,68,67,67,67,68,68,67,68,67,68,67,68,67,70,0,0,0,70,0,0,54,69,54,69,54,69,55,54,69,69,70,69,70,69,70,69,70,70,69,54,69,54,69,69,70,69,70,69,70,54,69,70,69,70,69,70,70,70,70,69,70,54,69,69,70,54,69,69,70,69,69,69,70,69,70,69,70,69,70,69,70,76,83,0,0,0,0,83,83,0,80,83,83,0,80,83,76,83,0,76,0,75,75,75,75,75,75,75,80,83,81,86,82,76,75,80,83,81,86,82,76,75,0,80,76,80,76,81,75,0,82,80,83,81,86,82,76,75,80,83,81,86,82,76,75,80,83,81,86,82,76,75,75,75,80,83,76,75,75,75,75,80,80,83,83,81,81,86,82,76,75,80,83,81,86,82,76,75,75,80,83,81,86,82,76,75,80,83,81,86,82,76,75,82,0,75,75,75,81,75,82,75,82,82,86,80,76,80,83,81,80,83,81,86,82,76,75,80,83,81,86,82,76,75,80,83,81,86,82,76,75,75,75,75,75,82,82,80,83,81,86,82,76,75,192,192,193,194,195,196,197,194,198,195,196,195,196,194,199,200,197,199,199,200,195,195,196,196,200,0,0,0,94,96,97,94,96,97,94,96,97,94,96,97,94,96,97,94,96,97,94,96,97,94,96,97,94,96,97,94,94,94,94,96,97,94,96,97,94,96,97,94,96,97,0,0,0,0,0,98,102,99,100,101,98,102,99,100,101,98,99,100,101,98,99,100,101,98,102,98,98,102,99,100,101,98,102,99,100,101,98,102,99,100,101,98,102,99,100,101,98,98,102,102,99,99,100,100,101,101,98,98,98,102,102,102,102,99,99,100,100,101,101,101,101,101,98,98,98,102,99,100,101,98,102,99,100,101,98,102,98,99,100,101,98,102,99,100,101,98,102,99,100,101,98,102,99,100,101,98,102,99,100,101,98,102,99,100,101,0,59,106,0,0,0,0,0,36,0,106,0,0,130,36,0,65,106,0,0,36,0,0,0,0,0,59,106,0,0,65,0,0,59,106,0,36,36,106,36,36,36,130,65,0,0,0,106,0,28,106,0,0,106,106,36,0,0,36,0,36,28,130,130,0,0,0,28,28,28,28,28,28,28,106,28,28,107,59,109,109,109,59,109,41,109,109,41,41,109,123,28,34,124,125,126,33,43,38,59,73,113,114,115,39,57,106,104,127,128,116,109,129,36,130,107,117,131,118,123,28,34,124,125,126,33,43,38,59,73,113,114,115,39,57,106,104,127,128,116,109,129,36,130,107,117,131,118,109,109,28,34,33,43,38,59,73,113,114,115,39,57,106,104,116,109,117,118,28,34,33,43,38,59,73,113,114,115,39,57,106,104,116,109,117,118,34,59,39,113,114,115,34,109,106,109,65,65,65,109,116,41,109,0,117,28,34,33,109,107,106,109,28,123,28,34,124,125,126,33,43,38,59,73,113,114,115,39,57,106,104,127,128,116,109,129,36,130,107,117,131,118,123,28,34,124,125,126,33,43,38,59,73,113,114,115,39,57,106,104,127,128,116,109,129,36,130,107,117,131,118,109,28,123,28,34,124,125,126,33,43,38,59,73,113,114,115,39,57,106,104,127,128,116,109,129,36,130,107,117,131,118,73,109,109,41,41,28,34,33,43,38,59,73,113,114,115,39,57,106,28,106,106,41,73,57,41,107,109,117,109,123,28,34,124,125,126,33,43,38,59,73,113,114,115,39,57,106,104,127,128,116,109,129,36,36,130,130,107,117,131,118,123,28,28,28,28,28,34,34,34,34,124,125,126,33,43,38,59,59,59,59,73,113,114,115,39,57,106,104,104,127,127,127,128,116,109,129,36,36,130,107,117,131,118,117,118,109,109,41,117,118,34,33,43,38,59,73,39,57,117,106,34,73,57,123,28,34,124,125,126,33,43,38,59,73,113,114,115,39,57,106,104,127,128,116,109,129,36,130,107,117,131,118,39,109,109,123,28,34,124,125,126,33,43,38,59,73,113,114,115,39,57,106,104,127,128,116,109,129,36,130,107,117,131,118,128,28,73,28,0,0,0,109,109,109,109,109,28,28,28,28,106,106,28,28,116,28,28,106,33,107,34,109,109,109,109,109,28,65,65,34,59,39,0,109,117,33,114,57,109,117,116,41,34,106,41,129,129,112,34,33,43,38,59,106,129,129,41,129,129,117,118,34,113,114,115,109,109,109,109,36,28,106,28,28,28,28,28,28,106,28,28,106,87,65,117,118,28,34,33,43,38,59,73,113,114,115,39,57,106,104,116,109,117,118,36,130,117,123,28,34,34,34,34,124,125,126,33,43,38,59,73,113,114,115,39,57,106,104,127,128,116,109,129,36,130,107,117,131,118,123,28,34,124,125,126,33,43,38,59,73,113,114,115,39,57,106,104,127,128,116,109,129,36,130,107,117,131,118,123,28,34,124,125,126,33,43,38,59,73,113,114,115,39,57,106,104,127,128,116,109,129,36,130,107,117,131,118,109,109,0,123,28,34,124,125,126,33,43,38,59,73,113,114,115,39,57,106,104,127,128,116,109,129,36,130,107,117,131,118,128,65,117,118,201,0,0,0,88,138,139,88,138,139,88,88,138,139,88,138,139,88,139,88,138,139,88,138,139,88,138,139,88,88,138,139,88,138,139,138,88,138,139,88,138,139,88,88,138,139,88,138,139,88,138,139,88,138,139,88,138,139,0,0,0,0,0,0,0,202,157,144,0,0,0,0,157,0,0,147,134,156,149,150,157,152,153,154,147,111,134,156,149,150,157,152,153,154,147,111,134,149,150,152,153,154,147,111,134,149,150,152,153,154,147,111,134,134,0,134,134,111,134,156,149,150,157,152,153,154,147,147,111,134,156,149,150,157,152,153,154,147,147,111,134,134,156,149,150,157,152,153,154,147,111,134,134,134,111,134,134,134,144,134,156,149,150,157,152,153,154,147,111,134,156,149,150,157,152,153,154,147,111,134,134,134,134,147,147,147,147,147,147,134,156,149,150,157,152,153,154,147,111,134,156,149,150,157,152,153,154,147,111,0,147,147,134,0,134,134,134,147,144,134,150,150,111,147,134,111,144,147,134,134,147,147,134,149,150,152,153,154,147,111,134,156,149,150,157,152,153,154,147,111,134,156,149,150,157,152,153,154,147,111,134,156,149,150,157,152,153,154,147,111,134,156,149,150,157,152,153,154,147,111,0,0,142,143,0,137,143,0,0,142,0,142,203,0,204,143,142,0,160,160,160,151,151,151,160,160,151,160,160,203,137,204,160,160,160,137,160,137,160,151,160,160,203,160,160,137,160,160,160,137,203,204,143,160,142,137,142,151,151,160,160,160,160,203,143,160,137,0,0,0,0,0,0,0,162,164,162,164,162,162,162,162,0,162,164,162,164,162,162,164,162,162,164,162,164,162,162,164,162,164,162,162,162,164,162,164,162,162,164,162,164,162,164,162,0,162,164,162,0,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,0,0,166,167,166,167,166,166,167,166,167,166,167,166,167,166,167,166,167,166,167,166,167,166,167,166,167,166,167,167,166,167,0,0,0,0,165,168,169,170,165,168,169,170,165,168,165,168,165,165,168,169,170,165,168,169,170,165,168,169,170,169,170,165,168,169,170,165,168,169,170,168,165,168,169,170,165,168,169,170,169,170,169,170,165,168,165,168,169,170,165,168,169,170,165,168,169,170,168,165,165,165,168,169,170,0,0,0,0,0,0,0,171,174,171,174,171,171,171,171,171,174,171,174,171,171,174,171,171,174,171,174,171,171,171,171,174,171,174,171,171,171,174,171,171,174,171,171,171,171,174,171,174,171,174,171,171,174,171,171,0,0,173,175,173,173,173,175,173,175,173,175,173,175,173,175,173,173,173,175,173,175,173,175,173,173,175,173,175,175,173,175,173,175,173,175,173,173,175,173,175,173,175,173,175,173,175,173,175,0,0,0,0,177,179,178,180,177,179,178,180,177,178,177,179,178,180,177,179,178,180,177,179,178,180,177,179,178,180,177,179,178,180,177,179,178,180,177,179,178,180,177,179,178,178,180,177,179,178,180,177,179,178,180,177,179,178,180,179,180,177,179,178,180,0,0,0,181,182,183,181,182,183,181,182,183,181,182,183,181,182,183,181,182,183,181,182,183,182,183,181,182,183,181,182,183,181,182,183,181,182,183,182,182,183,183,182,183,181,182,183,181,182,183,181,182,183,181,182,183,181,182,183,182,0,0,0,0,0,119,0,0,0,0,0,0,0,119,185,186,187,188,184,189,185,186,187,188,184,189,185,186,187,188,184,189,185,186,187,188,184,189,136,185,186,187,188,136,185,186,187,188,185,186,187,188,184,184,189,189,185,186,187,188,184,189,185,186,187,188,184,189,205,187,188,185,186,187,188,184,189,185,186,187,188,184,189,119,189,206,205,185,185,186,186,187,187,188,188,184,189,185,186,187,188,184,189,119,189,145,185,186,145,185,186,136,185,186,187,188,136,185,186,187,188,184,189,184,185,186,187,188,184,189,185,186,187,188,184,189,185,186,187,188,184,189,185,186,187,188,184,189,120,187,188,120,187,188],"f":[0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],0,[1,1],[[-1,-2],2,[],[]],[3,-1,[]],[3,-1,[]],0,[3,2],[[1,4],5],[-1,-1,[]],0,[[],3],[-1,-2,[],[]],0,0,[-1,-2,[],[]],0,[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[[8,[-2]],-1,9],2,10,[[11,[-1]]]],[[8,[8,[-1]]],[],12],[[[8,[-1]],[8,[-1]]],-1,10],[-1,[[14,[[13,[-1]]]]],[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[8,[-1]],-1],-1,10],[[],[[14,[-1]]],[]],[[15,9],[[15,[-1]]],12],[16,[[18,[17]]]],[-1,[[14,[-1]]],[]],[-1,19,[]],[-1,19,[]],[-1,19,[]],[-1,20,[]],[-1,2,[]],[[-1,-2],[[15,[-2]]],21,10],[[[8,[-1]],[8,[-1]]],[[15,[-1]]],10],[[],[[14,[-1]]],[]],[[[8,[-1]],-2],2,22,[17,22,23,24]],[[-1,-2],-1,[],[[26,[[8,[25]]]]]],[[-1,-2],-1,[],[[26,[[8,[25]]]]]],[-1,-2,27,[]],[[[8,[-2]],3,3,[8,[-1]]],2,10,[[11,[-1]]]],[[8,[8,[-1]]],[],12],[-1,[[14,[-1]]],[]],[-1,[[2,[19,-1]]],[]],[[-1,-1],[[2,[19,-1]]],[]],[-1,-1,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[29,[[28,[-1]]]],-1],[],10],[[[29,[[28,[-1]]]],[29,[-1]]],[],10],[[[29,[[28,[-1]]]],[29,[-1]]],[],10],[[[29,[-1]],[29,[-1]]],[],30],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[[28,[-1]]]],-1],[],10],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[-1]],-2],[[29,[-3]]],[],31,[]],[[[29,[-1]]],[[29,[-1]]],[]],[[[29,[-1]]],[[29,[-1]]],[]],[[[29,[-1]],-2],2,[],31],[[[32,[-1]],-2,[34,[33]],3,-3],[[6,[[35,[-4,-1]],36]]],10,17,37,[]],[[[32,[-1]],-2,[34,[33]],3,-3],[[6,[[35,[-3,-1]],36]]],10,17,[]],[[[32,[-1]],-2,[34,[38]],3,[34,[33]],3],[[6,[[35,[-1,-1]],36]]],10,17],[[-1,17,39,3,37],[[6,[2,36]]],[]],[[[40,[-1,-2]],17,39,3,37],[[6,[2,36]]],10,[[41,[-1]]]],[[[42,[-1]],-2,39,3,-3],[[6,[2,36]]],10,17,37],[[[32,[-1]],-2,[34,[43]],3,-3],[[6,[[35,[-4,-1]],36]]],10,17,37,[]],[[-1,-2,-3],[[6,[-4,36]]],[],17,37,[]],[[[44,[-1,-2]],-3,-4],[[6,[-5,36]]],10,[[45,[-1]]],17,37,[]],[[-1,-2,-3],[[6,[2,36]]],[],17,37],[[[44,[-1,-2]],-3,-4],[[6,[2,36]]],10,[[45,[-1]]],17,37],[-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,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[35,[-1,-2]]],46,[],10],[[[29,[-1]]],[[29,[-1]]],24],[47,47],[48,48],[46,46],[[[35,[-1,-2]]],[[35,[-1,-2]]],24,[24,10]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[[29,[-1]]],[[29,[-1]]],24],[[[29,[-1]]],[[29,[-1]]],24],0,[-1,[],[]],[[[32,[-1]],46,-2],[[6,[2,36]]],10,[[49,[[28,[-1]]]]]],[[[32,[-1]],46,46],[[6,[2,36]]],10],[[-1,46,[34,[38]],3],[[6,[2,36]]],[]],[[[44,[-1,-2]],46,[34,[38]],3],[[6,[2,36]]],10,[[45,[-1]]]],[[[29,[-1]]],[[29,[-1]]],50],[[[29,[-1]]],[[29,[-1]]],50],[[[35,[-1,-2]],-3,[32,[-2]],[34,[33]],3],[[6,[[35,[-1,-2]],36]]],24,10,17],[[[29,[-2]]],[[29,[[28,[-1]]]]],10,[[51,[[28,[-1]]]]]],[[],[[29,[-1]]],[]],0,[3,-1,[]],[3,-1,[]],[3,-1,[]],[47],[3,-1,[]],[3,-1,[]],[48],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[[[29,[-2]]],[[29,[[28,[-1]]]]],10,[[51,[[28,[-1]]]]]],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[[[44,[-1,-2]]],2,10,[[45,[-1]]]],[[48,48],20],[[[29,[-1]],-2],[[6,[2,36]]],[],31],[[[29,[[28,[-1]]]]],[[29,[-1]]],10],[[[35,[[28,[-1]],-1]]],[[35,[-1,-1]]],10],0,[[[40,[-1,-2]],4],5,10,[[41,[-1]]]],[[[29,[-1]],4],5,52],[[53,4],5],[[47,4],5],[[48,4],5],[[46,4],5],[[[35,[-1,-2]],4],5,52,[52,10]],[[[32,[-1]],4],5,[52,10]],[[[42,[-1]],4],5,[52,10]],[[[44,[-1,-2]],4],5,[52,10],[52,[45,[-1]]]],[-1,-1,[]],[-1,-1,[]],[[[29,[-1]]],[[29,[[28,[-1]]]]],10],[-1,-1,[]],[3,47],[-1,-1,[]],[3,48],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[54,[[32,[-1]]],10],[-1,-1,[]],[55,[[42,[-1]]],10],[-1,-1,[]],[-1,[[29,[-3]]],21,[],[[56,[-2]]]],[[-1,57],[[29,[-2]]],[],[]],[[[44,[-1,-2]],57],[[29,[-1]]],10,[[45,[-1]]]],[-1,[],[]],[[[44,[-1,-2]]],[],10,[[45,[-1]]]],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[[32,[-1]],[34,[38]],3],[[6,[[29,[-1]],36]]],10],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[29,[-2]]],[[29,[[28,[-1]]]]],10,[[49,[[28,[-1]]]]]],[[[29,[-2]]],[[29,[[28,[-1]]]]],10,[[51,[[28,[-1]]]]]],[-1,[[29,[-1]]],[]],0,[-1,[],[]],[[[29,[-1]],-2],[[29,[-3]]],[],31,[]],[[[29,[-1]],[29,[-1]]],[],58],[[[29,[[28,[-1]]]],-1],[],10],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[[28,[-1]]]],[29,[-1]]],[],10],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[[28,[-1]]]],-1],[],10],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[[28,[-1]]]],[29,[-1]]],[],10],[[[32,[-1]],-2,-3],2,10,17,[[49,[[34,[59]]]]]],[[-1,-2],[[44,[-3]]],[],31,[]],[[[29,[-1]]],[],60],[[-2,[8,[39]]],[[40,[-1,-2]]],10,[[41,[-1]]]],[[-1,[62,[61]]],2,[]],[[[44,[-1,-2]],[62,[61]]],2,10,[[45,[-1]]]],[[-1,-2],2,[],31],[[[44,[-1,-2]],-3],2,10,[[45,[-1]]],31],0,0,[[[29,[-2]]],[[29,[[28,[-1]]]]],10,[[51,[[28,[-1]]]]]],[[[29,[[28,[-1]]]],-1],[],10],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[-1]],[29,[-1]]],[],[]],[[[29,[[28,[-1]]]],-1],[],10],[[[29,[-1]],[29,[-1]]],[],63],[[[29,[[28,[-1]]]],[29,[-1]]],[],10],[[[29,[[28,[-1]]]],[29,[-1]]],[],10],[[-2,-3,[15,[[34,[43]]]]],[[6,[2,36]]],10,[[41,[-1]],64],[[65,[-1]]]],[[[29,[-1]]],[[29,[[28,[-2]]]]],[],10],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[29,[[66,[-1]]]]],[[66,[[29,[-1]]]]],50],[[[29,[-1]],3],[[15,[[29,[-2]]]]],21,[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[[],[[29,[-1]]],[]],[[[29,[[2,[-1,-2]]]]],[[2,[[29,[-1]],[29,[-2]]]]],[],[]],[[[35,[-1,-2]]],[[29,[-1]]],[],10],[[[35,[-1,-2]]],[[29,[[28,[-2]]]]],[],10],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[29,[-1]],[29,[-2]]],[[29,[[2,[-1,-2]]]]],[],[]],0,0,[[[67,[-1,-2]],-3,-4],[[6,[-5,36]]],10,[[41,[-1]],64],17,37,[]],[[[67,[-1,-2]],-3,-4],[[6,[2,36]]],10,[[41,[-1]],64],17,37],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[67,[-1,-2]],46,[34,[38]],3],[[6,[2,36]]],10,[[41,[-1]],64]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[[68,4],5],[[[67,[-1,-2]],4],5,[52,10],[52,[41,[-1]]]],[-1,-1,[]],[-1,-1,[]],[[[67,[-1,-2]],57],[[29,[-1]]],10,[[41,[-1]],64]],[[[67,[-1,-2]]],[],10,[[41,[-1]],64]],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[[[67,[-1,-2]],[62,[61]]],2,10,[[41,[-1]],64]],[[[67,[-1,-2]],-3],2,10,[[41,[-1]],64],31],[[-2,-3,[15,[[34,[43]]]]],[[6,[2,36]]],10,[[41,[-1]],64],[[65,[-1]]]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,[[-1,17,[34,[33]],3,37],[[6,[46,36]]],[]],[[69,17,[34,[33]],3,37],[[6,[46,36]]]],[[-1,17,[34,[33]],3,[28,[-2]]],[[6,[46,36]]],[],[]],[[69,17,[34,[33]],3,[28,[-1]]],[[6,[46,36]]],10],[[-1,17,[34,[38]],3,[34,[33]],3],[[6,[[2,[46,[29,[-2]]]],36]]],[],[]],[[69,17,[34,[38]],3,[34,[33]],3],[[6,[[2,[46,[29,[-1]]]],36]]],10],[[-1,17,39,3,37],[[6,[2,36]]],[]],[[-1,17,[34,[43]],3,37],[[6,[46,36]]],[]],[[69,17,[34,[43]],3,37],[[6,[46,36]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[69,69],[70,70],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[70,70],71],[69,[[72,[70]]]],[[-1,46,[28,[-2]]],[[6,[2,36]]],[],[]],[[69,46,[28,[-1]]],[[6,[2,36]]],10],[[-1,46,46],[[6,[2,36]]],[]],[[69,46,46],[[6,[2,36]]]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[[-1,17,73,3],[[6,[2,36]]],[]],[[69,17,73,3],[[6,[2,36]]]],[[70,70],20],[[69,4],5],[[70,4],5],[-1,-1,[]],[[[34,[59]]],70],[73,70],[-1,-1,[]],[[70,-1],2,74],[[],3],[[],3],[[-1,[34,[38]],3],[[6,[[29,[-2]],36]]],[],[]],[[69,[34,[38]],3],[[6,[[29,[-1]],36]]],10],[-1,-2,[],[]],[-1,-2,[],[]],[[-1,17,[34,[59]]],2,[]],[[69,17,[34,[59]]],2],[47,69],[[70,70],[[62,[71]]]],[69,47],[69,3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[75,[-1]],[34,[33]]],[[8,[[76,[-1]]]]],[77,78]],[[[75,[-1]],-2,[34,[59]]],2,10,31],[[[75,[-1]]],2,[77,78]],[[[75,[-1]],-2,-2],2,[77,78],[24,79]],[[[75,[-1]]],2,[77,78]],[[[75,[-1]],-2,[34,[33]],3,-3],[[6,[2,36]]],10,31,31],[[[75,[-1]],-2,[34,[43]],3,-3],[[6,[2,36]]],10,31,31],[-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,[],[]],[-2,61,10,[[65,[-1]]]],[80,80],[[[76,[-1]]],[[76,[-1]]],[24,10]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[],81],[[[75,[-1]],[34,[59]],3,[34,[59]],3],[[6,[2,36]]],10],0,[[],82],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[[[75,[-1]],-2,73,3],[[6,[2,36]]],10,31],[[[75,[-1]],-2],2,10,31],[[80,80],20],[[83,83],20],[[[76,[-1]],[76,[-1]]],20,[84,10]],[[[75,[-1]]],2,10],[[[75,[-1]],[34,[43]],3,[29,[[28,[-1]]]]],[[6,[2,36]]],10],[[[75,[-1]]],[[15,[[15,[[76,[-1]]]]]]],[77,78]],[[[75,[-1]],[34,[43]]],[[8,[[76,[-1]]]]],[77,78]],[[80,4],5],[[80,4],5],[[83,4],5],[[83,4],5],[[81,4],[[6,[2,85]]]],[[81,4],5],[[[86,[-1]],4],5,[52,87]],[[82,4],5],[[[76,[-1]],4],5,[52,10]],[[[75,[-1]],4],5,[52,10]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[75,[-1]],57],[[29,[-1]]],10],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[82,20],82],0,[[[75,[-1]]],88,[77,78]],[[[75,[-1]],[62,[61]]],2,10],[[[75,[-1]],-2],2,10,31],[81,61],[[[75,[-1]],[34,[38]],3],[[6,[[29,[-1]],36]]],10],[[82,9,-2,[90,[-3,89]]],[[6,[2,91]]],10,[[65,[-1]]],92],[[9,-2,[15,[[15,[-1]]]]],[[6,[[75,[-1]],36]]],[77,78],[[65,[-1]]]],[[82,20],82],[[82,20],82],[[-2,-3,[15,[[34,[43]]]]],[[6,[2,36]]],10,[[41,[-1]],64],[[65,[-1]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,61,[]],[-1,61,[]],[-1,61,[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[[[75,[-1]]],[[6,[2,[15,[83]]]]],[77,78]],[[[75,[-1]],-2,-2],[[6,[2,[15,[83]]]]],[77,78],[24,79]],[[[75,[-1]],-2,-2],[[6,[2,[15,[83]]]]],[77,78],[24,79]],[[[75,[-1]]],[[6,[2,[15,[83]]]]],[77,78]],[[82,[93,[3]]],82],[[82,[93,[3]]],82],[-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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[3,2],[[[94,[-1,-2]],4],5,[52,95],[52,65]],[[[96,[-1]],4],5,[52,95]],[[[97,[-1]],4],5,[52,95]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[],3],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[94,[-1,-2]]],[[96,[-1]]],95,65],[[9,-1],[[94,[-2,-1]]],65,95],[[[94,[-1,-2]],3],[[97,[-1]]],95,65],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[98,98],[99,99],[100,100],[101,101],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[98,98],71],[[102,102],71],[98,59],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[3,2],[3,2],[3,2],[[98,98],20],[[102,102],20],[[99,99],20],[[100,100],20],[[101,101],20],[[98,4],5],[[98,4],5],[[102,4],5],[[102,4],5],[[99,4],5],[[99,4],5],[[100,4],5],[[100,4],5],[[101,4],5],[[101,4],5],[[[2,[59,3]]],98],[-1,-1,[]],[[[34,[59]]],98],[[[2,[-1,98,103]]],102,[[26,[16]]]],[104,102],[-1,-1,[]],[[[2,[98,103]]],102],[-1,-1,[]],[[[2,[3,-1]]],99,[[26,[16]]]],[[[2,[99,3,-1]]],100,[[26,[16]]]],[-1,-1,[]],[[[2,[3,16,[105,[98,61]]]]],101],[[[2,[3,61]]],101],[[[2,[3,61,[105,[98,61]]]]],101],[[[2,[3,16]]],101],[-1,-1,[]],[[98,-1],2,74],[98,3],[[],3],[[],3],[[],3],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[98,98],[[62,[71]]]],[[102,102],[[62,[71]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,61,[]],[-1,61,[]],[-1,61,[]],[-1,61,[]],[-1,61,[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[28,[-1]],[28,[-1]]],[[28,[-1]]],10],[[[28,[-1]],[28,[-1]]],[[28,[-1]]],10],[[[28,[-1]],-1],[[28,[-1]]],10],[[[28,[-1]],[28,[-1]]],[[28,[-1]]],10],[[[28,[-1]],-1],[[28,[-1]]],10],[[[28,[-1]],[28,[-1]]],[[28,[-1]]],10],[[[106,[-1]],[106,[-1]]],[[106,[-1]]],10],[[[28,[-1]],[28,[-1]]],2,10],[[[28,[-1]],[28,[-1]]],2,10],[[[107,[-1]],[15,[[15,[15]]]],[15,[108]]],2,12],[[],59],[[[109,[-1]]],[[34,[33]]],10],[[[109,[-1]],-2],[[34,[33]]],10,110],[[[109,[-1]]],[[15,[108]]],10],[-1,59,110],[[[109,[-1]]],[[15,[[2,[[34,[33]],111]]]]],10],[[-1,-2,[34,[59]]],2,[],31],[[[109,[-1]],-2,-3],2,10,[[49,[[34,[59]]]]],17],[[[109,[-1]],39,-2],2,10,17],[[-1,-2,[34,[33]],3,-3],[[6,[2,36]]],[],31,31],[[-1,-2,[34,[43]],3,-3],[[6,[2,36]]],[],31,31],[[[109,[-1]]],3,10],[-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,[],[]],[-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,[],[]],[-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,[],[]],[-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,[],[]],[[[109,[-1]]],[[15,[108]]],10],[[[109,[-1]],-2],57,10,110],[[[28,[-1]]],[[28,[-1]]],24],[[[34,[-1]]],[[34,[-1]]],[24,112]],[33,33],[43,43],[38,38],[59,59],[73,73],[113,113],[114,114],[115,115],[39,39],[57,57],[[[106,[-1]]],[[106,[-1]]],24],[104,104],[[[116,[-1]]],[[116,[-1]]],[24,10]],[[[109,[-1]]],[[109,[-1]]],[24,10]],[[[117,[-1]]],[[117,[-1]]],[24,12]],[[[118,[-1]]],[[118,[-1]]],[24,12]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[[34,[-1]],[34,[-1]]],71,112],[[59,59],71],[[39,39],71],[113,3],[114,3],[115,3],[[[34,[-1]]],-1,112],[[[109,[-1]]],73,10],[[[106,[-1]]],3,10],[[[109,[-1]],[15,[[15,[20]]]]],[[2,[[109,[-1]],[15,[[15,[-1]]]]]]],10],[[[109,[-1]]],[],[]],[[[109,[-1]]],[],[]],[[[109,[-1]]],[],[]],[[[109,[-1]]],[[15,[[34,[43]]]]],10],[[[116,[-1]],3],16,10],[[-1,[34,[59]],3,[34,[59]],3],[[6,[2,36]]],[]],[[[109,[-1]],-2,-3],2,10,[[26,[16]]],31],[[118,[8,[-1]],[8,[[8,[8]]]],-2,-4],[[6,[2,36]]],65,27,119,[[120,[-3]]]],[[[117,[-1]]],109,12],[[[28,[-1]]],[[28,[-1]]],10],[[[34,[-1]]],[[106,[-2]]],112,10],[[],33],[[],[[109,[-1]]],10],[[],[[107,[-1]]],[121,12]],[[[106,[-1]]],3,10],[[[109,[-1]]],3,10],[[[28,[-1]]],[[62,[-1]]],10],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[[[109,[-1]],[15,[[15,[20]]]]],[[2,[[109,[-1]],[15,[[15,[-1]]]]]]],10],[[[28,[-1]]],[[28,[-1]]],10],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[[73,[32,[-1]],3],[[6,[2,36]]],10],[[[109,[-1]],[34,[43]]],2,10],[[[109,[-1]],-2],2,10,[[49,[[34,[59]]]]]],[[-1,-2,73,3],[[6,[2,36]]],[],31],[[-1,-2],2,[],31],[[[28,[-1]],[28,[-1]]],20,10],[[[34,[-1]],[34,[-1]]],20,[84,112]],[[33,33],20],[[43,43],20],[[38,38],20],[[59,59],20],[[73,73],20],[[113,113],20],[[114,114],20],[[115,115],20],[[39,39],20],[[57,57],20],[[[106,[-1]],[106,[-1]]],20,84],[[[28,[-1]]],-1,10],[[[106,[-1]],-2,-3,-4,-5,-6,-7,-8,-9,-10,-11],-12,10,17,17,17,17,17,17,17,17,17,17,[]],[[[106,[-1]],-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12],-12,10,17,17,17,17,17,17,17,17,17,17,84],[-1,2,[]],[73,[[106,[-1]]],10],[57,[[106,[-1]]],10],[[-1,[34,[43]],3,[29,[[28,[-2]]]]],[[6,[2,36]]],[],[]],[[[107,[-1]],[122,[-1]],[117,[-1]]],20,12],[[[109,[-1]]],[[34,[43]]],10],[[[117,[-1]]],[[15,[-1]]],12],[[[109,[-1]]],[[15,[[2,[[34,[43]],111]]]]],10],[[[123,[-1]],4],5,10],[[[28,[-1]],4],5,52],[[[34,[-1]],4],5,[52,112]],[[124,4],5],[[125,4],5],[[126,4],5],[[33,4],5],[[43,4],5],[[38,4],5],[[59,4],5],[[73,4],5],[[113,4],5],[[114,4],5],[[115,4],5],[[39,4],5],[[57,4],5],[[[106,[-1]],4],5,52],[[104,4],5],[[[127,[-1]],4],5,[52,10]],[[[128,[-1,-2,-3]],4],5,[52,10],[52,[49,[[127,[-1]]]]],[52,21]],[[[116,[-1]],4],5,[52,10]],[[[109,[-1]],4],5,[52,10]],[[[129,[-1]],4],5,[52,10]],[[36,4],5],[[36,4],5],[[130,4],5],[[130,4],5],[[[107,[-1]],4],5,[52,12]],[[[117,[-1]],4],5,[52,12]],[[[131,[-1]],4],5,[52,12]],[[[118,[-1]],4],5,[52,12]],[-1,-1,[]],[[[2,[-1,-1]]],[[28,[-1]]],10],[-1,[[28,[-1]]],10],[[[28,[-1]]],[[28,[-1]]],10],[-1,[[28,[-1]]],10],[-1,-1,[]],[[[34,[43]]],[[34,[59]]]],[[[34,[33]]],[[34,[59]]]],[[[34,[38]]],[[34,[59]]]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[33,59],[43,59],[-1,-1,[]],[38,59],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[2,[-1,111]]],104,[[49,[[34,[59]]]]]],[-1,-1,[]],[[[106,[-1]]],[[127,[-1]]],10],[[[2,[-1,[106,[-2]]]]],[[127,[-2]]],[[26,[16]]],10],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[132,36],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[8,[108]],1],[[133,[[117,[-1]]]]],0],[[[8,[108]],1],[[133,[[118,[-1]]]]],0],[[[109,[-1]]],[[15,[[116,[-1]]]]],10],[[[109,[-1]]],[[105,[98,61]]],10],[[-1,57],[[29,[-2]]],[],[]],[[[117,[-1]]],134,12],[[[118,[-1]]],[[117,[-1]]],12],[[[34,[-1]],-2],2,[135,112],74],[[33,-1],2,74],[[43,-1],2,74],[[38,-1],2,74],[[59,-1],2,74],[[73,-1],2,74],[[39,-1],2,74],[[57,-1],2,74],[[[117,[-1]],-3],[[133,[2]]],12,[[119,[-1]]],[[136,[-1,-2]]]],[[[106,[-1]]],61,10],[[[34,[-1]]],3,112],[73,3],[57,3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[39,[[34,[43]]]],[[[109,[-1]]],[[34,[38]]],10],[[[109,[-1]]],[[15,[[2,[[34,[38]],111]]]]],10],[-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,[],[]],[-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,[],[]],[[[128,[-1,-2,-3]]],[],10,[[49,[[127,[-1]]]]],21],[[[28,[-1]]],[[28,[-1]]],10],[73,20],[[[28,[-1]]],20,10],[[-2,[117,[-1]],-3],[[6,[[118,[-1]],36]]],12,[[137,[-1]]],65],[[-2,-3],[[6,[[117,[-1]],36]]],12,[[137,[-1]]],65],[[-2,-3,20],[[6,[[117,[-1]],36]]],12,[[137,[-1]]],65],[[[109,[-1]],-2,-3],3,10,[[26,[16]]],31],[[[109,[-1]],-2,-3],3,10,[[26,[16]]],31],[[[109,[-1]]],39,10],[[[109,[-1]]],[[15,[[0,[-1]]]]],10],[[[109,[-1]]],3,10],[[[28,[-1]],[28,[-1]]],[[28,[-1]]],10],[[[28,[-1]],[28,[-1]]],[[28,[-1]]],10],[[[28,[-1]],-1],[[28,[-1]]],10],[[[28,[-1]],-1],[[28,[-1]]],10],[[[106,[-1]],[106,[-1]]],[[106,[-1]]],10],[[[106,[-1]],-1],[[106,[-1]]],10],[[[28,[-1]],[28,[-1]]],2,10],[[[28,[-1]],[28,[-1]]],2,10],[[[116,[-1]]],16,10],[[[28,[-1]]],[],10],[[[28,[-1]]],[],10],[[[106,[-1]]],[],10],[-1,33,110],[[],[[107,[-1]]],12],[[[34,[-1]]],[[106,[-2]]],112,10],[[[109,[-1]]],3,10],[[[109,[-1]]],3,10],[[[109,[-1]]],3,10],[[[109,[-1]]],3,10],[[[109,[-1]]],3,10],[[[28,[-1]]],-1,10],[-1,[],[]],[-1,[],[]],[[[34,[-1]],[34,[-1]]],[[62,[71]]],112],[[59,59],[[62,[71]]]],[[39,39],[[62,[71]]]],0,[[[109,[-1]]],138,10],[[[117,[-1]]],[[139,[-1]]],12],[33,108],[114,108],[57,108],[[[109,[-1]]],[[123,[-1]]],10],[[[117,[-1]]],[[131,[-1]]],12],[[[116,[-1]]],[[8,[[106,[-1]]]]],10],[[-1,[62,[61]]],2,[]],[[[34,[-1]]],[[106,[-2]]],112,10],[-1,[[106,[-2]]],79,10],[[-1,-2],2,[],31],[[[129,[-1]],[34,[33]],111],[[106,[-1]]],10],[[[129,[-1]],-2,111],[[106,[-1]]],10,[[49,[[34,[59]]]]]],[[-1,3,111],[[106,[-2]]],[],10],[[[34,[-1]],111],[[106,[-2]]],112,10],[[33,3,111],[[106,[-1]]],10],[[43,3,111],[[106,[-1]]],10],[[38,3,111],[[106,[-1]]],10],[[59,3,111],[[106,[-1]]],10],[[[106,[-1]],[129,[-1]]],2,10],[[[129,[-1]],57],[[106,[-1]]],10],[[[129,[-1]],[34,[43]],111],[[106,[-1]]],10],[[-1,[34,[38]],3],[[6,[[29,[-2]],36]]],[],[]],[[[129,[-1]],[34,[38]],111],[[106,[-1]]],10],[[[129,[-1]],73],[[106,[-1]]],10],[[-1,1],[[133,[[117,[-2]]]]],140,0],[[-1,1],[[133,[[118,[-2]]]]],140,0],[[[34,[-1]],103],[[106,[-2]]],112,10],[113,111],[114,111],[115,111],[[[109,[-1]]],73,10],[[[109,[-1]],3],2,10],[[[109,[-1]],-2,-3],3,10,[[26,[16]]],31],[[[109,[-1]]],[[15,[[0,[-1]]]]],10],[36,[[62,[141]]]],[[[28,[-1]]],[[28,[-1]]],10],[[[106,[-1]]],[[106,[-1]]],10],[[[28,[-1]],[28,[-1]]],[[28,[-1]]],10],[[[28,[-1]],-1],[[28,[-1]]],10],[[[28,[-1]],[28,[-1]]],[[28,[-1]]],10],[[[28,[-1]],[28,[-1]]],[[28,[-1]]],10],[[[28,[-1]],[28,[-1]]],[[28,[-1]]],10],[[[28,[-1]],-1],[[28,[-1]]],10],[[[106,[-1]],[106,[-1]]],[[106,[-1]]],10],[[[28,[-1]],[28,[-1]]],2,10],[[[28,[-1]],[28,[-1]]],2,10],[-1,[[106,[-2]]],79,10],[[-2,-3,[15,[[34,[43]]]]],[[6,[2,36]]],10,[[41,[-1]],64],[[65,[-1]]]],[[-1,-3],[[6,[2,36]]],[],[],[[45,[-2]]]],[[[117,[-1]],1],[[15,[108]]],0],[[[118,[-1]],1],[[15,[108]]],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,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,61,[]],[-1,61,[]],[[[117,[-1]]],[],12],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[[[34,[59]]],[[6,[[34,[38]]]]]],[[[34,[59]]],[[6,[[34,[33]]]]]],[[[34,[59]]],[[6,[[34,[43]]]]]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[[[109,[-1]]],[[34,[33]]],10],[[[109,[-1]],-2],[[34,[33]]],10,110],[[117,-3,[8,[[8,[8]]]],-5],[[6,[36]]],142,[[143,[-1]]],[[144,[-1,-2]]],119,[[145,[-4]]]],[-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,[],[]],[-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,[],[]],[[[106,[-1]],-2],[[128,[-1,-3,-2]]],10,21,[[49,[[127,[-1]]]]]],[-1,-1,[]],[[[117,[-1]],-2,1],[[133,[2]]],0,146],[[[118,[-1]],-2,1],[[133,[2]]],0,146],0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[88,2],[88,88],[138,138],[[[139,[-1]]],[[139,[-1]]],[24,12]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[88,[[8,[[34,[59]]]]]],[[[139,[-1]]],[[15,[-1]]],12],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[3,2],[[88,88],20],[[88,4],5],[[138,4],5],[[[139,[-1]],4],5,[52,12]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[138,[[15,[[34,[59]]]]]],[[],3],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[88,[[0,[79]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[147,[-1,-2]],[147,[-1,-2]]],[[147,[-1,-2]]],10,148],[-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,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[134,[-1]]],[[134,[-1]]],[24,10]],[[[149,[-1]]],[[149,[-1]]],[24,12]],[[[150,[-1,-2]]],[[150,[-1,-2]]],12,[[151,[-1]]]],[152,152],[153,153],[154,154],[[[147,[-1,-2]]],[[147,[-1,-2]]],24,24],[111,111],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[[134,[-1]],[15,[-1]]],[[147,[-1,152]]],155],[[[134,[-1]],[147,[-1,152]]],[[147,[-1,154]]],155],0,[[[134,[-1]],-1],[[147,[-1,154]]],155],[[[134,[-1]],-1],[[147,[-1,153]]],155],[[],111],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[[[147,[-1,-2]]],[[8,[-1]]],[],[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[[[147,[-1,-2]]],[[8,[-1]]],[],[]],[3,-1,[]],[3,-1,[]],[[[134,[-1]],[147,[-1,154]]],[[147,[-1,154]]],155],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[[[134,[-1]]],[[147,[-1,152]]],155],[[[134,[-1]]],[[147,[-1,154]]],155],[[[134,[-1]]],[[147,[-1,153]]],155],[[111,111],20],[[[134,[-1]]],9,155],[[[134,[-1]]],3,155],[[[134,[-1]],[147,[-1,154]]],[[15,[-1]]],155],[-1,20,[]],[[[134,[-1]],4],5,[52,10]],[[[156,[-1]],4],5,[52,10]],[[[149,[-1]],4],5,[52,12]],[[[150,[-1,-2]],4],5,[52,12],[52,[151,[-1]]]],[[157,4],5],[[152,4],5],[[153,4],5],[[154,4],5],[[[147,[-1,-2]],4],5,52,52],[[111,4],5],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[134,[-1]]],-1,155],[[[134,[-1]]],-1,155],[[[134,[-1]]],-1,155],[[[134,[-1]]],3,155],[[[147,[-1,-2]],3],-1,[],[]],[[[147,[-1,-2]],[158,[3]]],[[8,[-1]]],[],[]],[[[147,[-1,-2]],159],[[8,[-1]]],[],[]],[[[147,[-1,-2]],159],[[8,[-1]]],[],[]],[[[147,[-1,-2]],3],-1,[],[]],[[[147,[-1,-2]],[158,[3]]],[[8,[-1]]],[],[]],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[[[147,[-1,-2]]],[[0,[79]]],[],[]],[[[147,[-1,-2]]],[[0,[79]]],[],[]],[[[134,[-1]]],9,155],0,[[[134,[-1]],-1,-1,-2],[[15,[-1]]],155,[21,24]],[[[134,[-1]],[15,[-1]]],[[147,[-1,153]]],155],[[[134,[-1]],[147,[-1,153]]],[[147,[-1,152]]],155],[[[147,[-1,-2]],-1],[[147,[-1,-2]]],10,148],[[],-1,[]],[[9,9],[[134,[-1]]],155],[-1,[[150,[-1,-2]]],12,[[151,[-1]]]],[-2,[[150,[-1,-2]]],12,[[151,[-1]]]],[[],111],[[[147,[-1,-2]]],3,[],[]],[[[134,[-1]]],[[156,[-1]]],155],[[],111],[[-1,-2],[[6,[36]]],[],31],[[[147,[-1,153]],111],[[147,[-1,153]]],10],[[[134,[-1]],[147,[-1,154]],111],[[147,[-1,154]]],155],[[[134,[-1]],-1,111],-1,155],[[[147,[-1,-2]],[147,[-1,-2]]],[[147,[-1,-2]]],10,148],[[[147,[-1,-2]],-1],[[147,[-1,-2]]],10,148],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-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,0,0,0,0,[[[160,[-1]],[160,[-1]]],[[160,[-1]]],10],[[[160,[-1]],[160,[-1]]],2,10],[[[160,[-1]],-1],2,10],[[-1,-1],2,161],[-1,2,[]],[-1,15,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,20,[]],[[[160,[-1]]],[[160,[-1]]],24],[[-1,-2],2,[],[]],[[-1,[147,[152]],160],[],[]],[[-1,[147,[153]],160],[],[]],[[-1,-2,-4,-5],[[133,[2]]],[],27,119,[[120,[-3]]],[21,24]],[[],[[160,[-1]]],10],[3,-1,[]],[3,-1,[]],[[-1,9],2,[]],[3,2],[-1,[],[]],[[[160,[-1]],[160,[-1]]],20,84],[-1,[],[]],[[[160,[-1]],4],5,52],[-1,-1,[]],[-1,[[8,[-2]]],[],[]],[[],3],[-1,-2,[],[]],[-1,9,[]],[[[160,[-1]],[160,[-1]]],[[160,[-1]]],10],[[[160,[-1]],-1],2,10],[[[160,[-1]],[160,[-1]]],2,10],[-1,25,[]],[9,-1,[]],[[],-1,[]],[[],-1,[]],[-1,[[160,[-2]]],27,10],[9],[-1,[[133,[-2]]],140,[]],[-1,133,140],[-1,15,[]],[-1,2,[]],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,[],[]],[[-1,-3,-4],[[6,[157]]],[],119,[[145,[-2]]],[21,24]],[-1,-2,[],[]],[[-1,-2],[[133,[2]]],[],146],0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[162,[-1]]],[[162,[-1]]],[24,12]],[[-1,-2],2,[],[]],[[[162,[-1]],[147,[152]],160],[],12],[[[162,[-1]],[147,[153]],160],[],12],[[[162,[-1]],-2,-4,[147,[152]],160],[[133,[2]]],12,27,[[119,[-1]]],[[120,[-1,-3]]]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[[[162,[-1]],9],2,12],[3,2],[3,2],[[[162,[-1]]],[[163,[-1]]],12],[[[162,[-1]],4],5,[52,12]],[[[164,[-1]],4],5,[52,12]],[-1,-1,[]],[-1,-1,[]],[[[162,[-1]]],[[8,[-1]]],12],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[[[162,[-1]]],9,12],[[[162,[-1]]],25,12],[9,[[162,[-1]]],12],[9],[-1,[[133,[[162,[-2]]]]],140,12],[-1,133,140],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[[[162,[-1]]],[],12],[[[162,[-1]],[163,[-1]],-3],[[6,[[165,[-1]],157]]],12,[[119,[-1]]],[[145,[-1,-2]]]],[-1,-2,[],[]],[-1,-2,[],[]],[[[162,[-1]],-2],[[133,[2]]],12,146],0,[[[163,[-1]]],2,12],[[[163,[-1]],[163,[-1]]],2,12],[[[163,[-1]],[163,[-1]]],2,12],[[[163,[-1]],8],2,12],[[[163,[-1]]],2,12],[[[163,[-1]]],2,12],[[[163,[-1]]],2,12],[[[163,[-1]]],15,12],[-1,-2,[],[]],[-1,-2,[],[]],[[[163,[-1]]],20,12],[[[163,[-1]]],[[163,[-1]]],[24,12]],[[-1,-2],2,[],[]],[3,-1,[]],[3,-1,[]],[3,2],[[[163,[-1]]],[],12],[[[163,[-1]],4],5,[52,12]],[-1,-1,[]],[[],3],[-1,-2,[],[]],[[[122,[-1]]],[[163,[-1]]],12],[[[163,[-1]]],15,12],[[[163,[-1]]],2,12],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,-2,[],[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[166,[-1]],-2,-4,-5],[[133,[2]]],12,27,[[119,[-1]]],[[120,[-1,-3]]],[21,24]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[[[166,[-1]],4],5,[52,12]],[[[167,[-1]],4],5,[52,12]],[-1,-1,[]],[-1,-1,[]],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[[[162,[-1]]],[[166,[-1]]],12],[[[122,[-1]]],[[167,[-1]]],12],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[[[167,[-1]],-3,-4,[163,[-1]]],[[6,[157]]],12,[[119,[-1]]],[[145,[-1,-2]]],[21,24]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[165,[-1]]],[[165,[-1]]],[24,12]],[[[168,[-1]]],[[168,[-1]]],[24,12]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[[165,[-1]]],-1,12],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[3,2],[3,2],[[[169,[-1]]],20,12],[[[170,[-1]]],20,12],[[[165,[-1]],4],5,[52,12]],[[[168,[-1]],4],5,[52,12]],[[[169,[-1]],4],5,[52,12]],[[[170,[-1]],4],5,[52,12]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],0,[[],3],[[],3],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[162,[-1]]],[[169,[-1]]],12],[[[162,[-1]]],[[170,[-1]]],12],[[[169,[-1]],-2],[[6,[36]]],12,31],[[[170,[-1]],-2],[[6,[36]]],12,31],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],0,[[[165,[-1]]],[[163,[-1]]],12],[[[165,[-1]],-1],[[2,[[163,[-1]],[168,[-1]]]]],12],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[171,[-1]]],[[171,[-1]]],[24,172]],[[-1,-2],2,[],[]],[[[171,[-1]],[147,[152]],160],[],[172,52]],[[[171,[-1]],[147,[153]],160],[],[172,52]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[[[171,[-1]],9],2,[172,52]],[3,2],[3,2],[[[171,[-1]]],[[173,[-1]]],[172,52]],[[[171,[-1]],4],5,[52,172]],[[[174,[-1]],4],5,[52,172]],[-1,-1,[]],[-1,-1,[]],[[[171,[-1]],9,15,[62,[15]]],[[171,[-1]]],[172,52]],[[[171,[-1]]],[],[172,52]],[[[171,[-1]]],8,[172,52]],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[[[171,[-1]]],9,[172,52]],[[[171,[-1]]],25,[172,52]],[9,[[171,[-1]]],[172,52]],[9],[-1,[[133,[[171,[-2]]]]],140,[172,52]],[[-1,1],[[133,[[171,[-2]]]]],140,[172,52]],[-1,133,140],[[[171,[-1]]],[],[172,52]],[[9,-1],[[171,[-2]]],27,[172,52]],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[[[171,[-1]]],[],[172,52]],[-1,-2,[],[]],[-1,-2,[],[]],[[[171,[-1]],-2],[[133,[2]]],[172,52],146],[[[171,[-1]],-2,1],[[133,[2]]],[172,52],146],0,0,[[[173,[-1]],[173,[-1]]],2,[172,52]],[[[175,[-1]],[175,[-1]]],2,[176,52]],[[[173,[-1]]],2,[172,52]],[[[173,[-1]]],15,[172,52]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[173,[-1]]],20,[172,52]],[[[175,[-1]]],20,[176,52]],[[[173,[-1]]],[[173,[-1]]],[24,172]],[[[175,[-1]]],[[175,[-1]]],[24,172]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[[173,[-1]]],2,172],[[],[[173,[-1]]],[121,172]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[[[173,[-1]]],[],[172,52]],[[[173,[-1]],4],5,[52,172]],[[[175,[-1]],4],5,[52,172]],[-1,-1,[]],[-1,-1,[]],[[[171,[-1]]],[[175,[-1]]],[176,52]],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[[],[[173,[-1]]],172],[[[171,[-1]]],[[175,[-1]]],[176,52]],[[[173,[-1]]],15,[172,52]],[[[173,[-1]]],2,[172,52]],[[[175,[-1]]],2,[176,52]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[177,[-1]],-2,-4,-5],[[133,[2]]],[172,52],27,119,[[120,[-3]]],[21,24]],[[[178,[-1]],-2,-4,-5],[[133,[2]]],[172,52],27,119,[[120,[-3]]],[21,24]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[3,2],[3,2],[[[177,[-1]],4],5,[52,172]],[[[179,[-1]],4],5,[52,172]],[[[178,[-1]],4],5,[52,172]],[[[180,[-1]],4],5,[52,172]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[],3],[[],3],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[171,[-1]]],[[177,[-1]]],[172,52]],[[[171,[-1]]],[[179,[-1]]],[176,52]],[[[171,[-1]]],[[178,[-1]]],[172,52]],[[[171,[-1]]],[[178,[-1]]],172],[[[171,[-1]]],[[180,[-1]]],[176,52]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[[[179,[-1]],-3,-4,[175,[-1]]],[[6,[157]]],[176,52],119,[[145,[-2]]],[21,24]],[[[180,[-1]],-3,-4,[175,[-1]]],[[6,[157]]],[176,52],119,[[145,[-2]]],[21,24]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[181,[-1]]],[[181,[-1]]],[24,176,52]],[[[182,[-1]]],[[182,[-1]]],[24,172]],[[[183,[-1]]],[[183,[-1]]],[24,172]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[3,2],[[[182,[-1]]],20,[176,52]],[[[183,[-1]]],20,[176,52]],[[[181,[-1]],4],5,[52,176,52]],[[[182,[-1]],4],5,[52,172]],[[[183,[-1]],4],5,[52,172]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[],3],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[171,[-1]]],[[182,[-1]]],[176,52]],[[[171,[-1]]],[[182,[-1]]],[176,52]],[[[171,[-1]]],[[183,[-1]]],[176,52]],[[[171,[-1]]],[[183,[-1]]],[176,52]],[[[182,[-1]],-2],[[6,[36]]],[176,52],31],[[[183,[-1]],-2],[[6,[36]]],[176,52],31],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[175,[-1]]],[[182,[-1]]],[176,52]],0,0,0,0,0,0,0,0,0,0,0,0,0,[-1,[[184,[-2,-3]]],[],[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[185,[-1,-2,-3]]],[[185,[-1,-2,-3]]],[24,140],[24,12],[24,[119,[-2]]]],[[[186,[-1,-2,-3]]],[[186,[-1,-2,-3]]],[24,140],[24,12],[24,[119,[-2]]]],[[[187,[-1,-2,-3]]],[[187,[-1,-2,-3]]],[24,146],[24,12],[24,[119,[-2]]]],[[[188,[-1,-2,-3]]],[[188,[-1,-2,-3]]],[24,146],[24,12],[24,[119,[-2]]]],[[[184,[-1,-2]]],[[184,[-1,-2]]],[24,12],24],[[[189,[-1]]],[[189,[-1]]],[24,12]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],[[133,[2]]],[],[]],[[[185,[-1,-2,[189,[-2]]]],-2],[[133,[2]]],140,12],[[[186,[-1,-2,[189,[-2]]]],-2],[[133,[2]]],140,12],[[[187,[-1,-2,[189,[-2]]]],-2],[[133,[2]]],146,12],[[[188,[-1,-2,[189,[-2]]]],-2],[[133,[2]]],146,12],[-1,[[133,[2]]],[]],[[[185,[-1,-2,[189,[-2]]]]],[[133,[2]]],140,12],[[[186,[-1,-2,[189,[-2]]]]],[[133,[2]]],140,12],[[[187,[-1,-2,[189,[-2]]]]],[[133,[2]]],146,12],[[[188,[-1,-2,[189,[-2]]]]],[[133,[2]]],146,12],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[[[184,[-1,-2]]],[],12,[]],[3,-1,[]],[[[189,[-1]]],[],12],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[-1,-2,[],[]],[[[187,[-1,-2,[189,[-2]]]]],-1,146,12],[[[188,[-1,-2,[189,[-2]]]]],-1,146,12],[[[185,[-1,-2,-3]],4],5,[52,140],[52,12],[52,[119,[-2]]]],[[[186,[-1,-2,-3]],4],5,[52,140],[52,12],[52,[119,[-2]]]],[[[187,[-1,-2,-3]],4],5,[52,146],[52,12],[52,[119,[-2]]]],[[[188,[-1,-2,-3]],4],5,[52,146],[52,12],[52,[119,[-2]]]],[[[184,[-1,-2]],4],5,[52,12],52],[[[189,[-1]],4],5,[52,12]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,[],[]],[[[189,[-1]]],[],12],[-1,-2,[],[]],[-1,-2,[],[]],[[],3],[-1,[[185,[-1,-2,[189,[-2]]]]],140,12],[-1,[[186,[-1,-2,[189,[-2]]]]],140,12],[[],3],[-1,[[187,[-1,-2,[189,[-2]]]]],146,12],[[],3],[-1,[[188,[-1,-2,[189,[-2]]]]],146,12],[[],3],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],-1,[]],[[[66,[108]]],[[189,[-1]]],12],[-1,[[133,[-2]]],[],[]],[[[185,[-1,-2,[189,[-2]]]]],[[133,[-2]]],140,12],[[[186,[-1,-2,[189,[-2]]]]],[[133,[-2]]],140,12],[-1,133,[]],[[[185,[-1,-2,[189,[-2]]]]],133,140,12],[[[186,[-1,-2,[189,[-2]]]]],133,140,12],[-1,-2,[],[]],[[[185,[-1,-2,[189,[-2]]]]],[[189,[-2]]],140,12],[[[186,[-1,-2,[189,[-2]]]]],[[189,[-2]]],140,12],[[[187,[-1,-2,[189,[-2]]]]],[[189,[-2]]],146,12],[[[188,[-1,-2,[189,[-2]]]]],[[189,[-2]]],146,12],[-1,[[184,[-2,-3]]],[],[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[103,103]]],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[-1,-2],[[133,[2]]],[],[]],[[[187,[-1,-2,[189,[-2]]]],-2],[[133,[2]]],146,12],[[[188,[-1,-2,[189,[-2]]]],-2],[[133,[2]]],146,12],[-1,[[133,[2]]],[]],[[[187,[-1,-2,[189,[-2]]]]],[[133,[2]]],146,12],[[[188,[-1,-2,[189,[-2]]]]],[[133,[2]]],146,12]],"c":[],"p":[[4,"SerdeFormat",0],[15,"tuple"],[15,"usize"],[3,"Formatter",2434],[6,"Result",2434],[4,"Result",2435],[3,"TypeId",2436],[15,"slice"],[15,"u32"],[8,"Field",27],[8,"FftGroup",27],[8,"CurveAffine",27],[3,"Coordinates",2437],[3,"CtOption",2438],[3,"Vec",2439],[15,"str"],[8,"Fn",2440],[3,"Box",2441],[3,"Choice",2438],[15,"bool"],[8,"IntoIterator",2442],[8,"Send",2443],[8,"Sync",2443],[8,"Clone",2444],[15,"u64"],[8,"AsRef",2445],[8,"RngCore",2446],[4,"Assigned",793],[3,"Value",74],[8,"Add",2447],[8,"FnOnce",2440],[3,"Region",74],[3,"Advice",793],[3,"Column",793],[3,"AssignedCell",74],[4,"Error",793],[8,"FnMut",2440],[3,"Instance",793],[3,"TableColumn",793],[3,"SimpleTableLayouter",74],[8,"Assignment",793],[3,"Table",74],[3,"Fixed",793],[3,"NamespacedLayouter",74],[8,"Layouter",74],[3,"Cell",74],[3,"RegionIndex",74],[3,"RegionStart",74],[8,"Into",2445],[8,"Copy",2443],[8,"Borrow",2448],[8,"Debug",2434],[3,"SimpleFloorPlanner",74],[8,"RegionLayouter",377],[8,"TableLayouter",377],[8,"FromIterator",2442],[3,"Challenge",793],[8,"Mul",2447],[4,"Any",793],[8,"Neg",2447],[3,"String",2449],[4,"Option",2450],[8,"Sub",2447],[8,"SyncDeps",377],[8,"Circuit",793],[15,"array"],[3,"V1Pass",341],[3,"V1",341],[3,"RegionShape",377],[4,"RegionColumn",377],[4,"Ordering",2451],[3,"HashSet",2452],[3,"Selector",793],[8,"Hasher",2453],[3,"MockProver",445],[4,"CellValue",445],[8,"FromUniformBytes",2454],[8,"Ord",2451],[8,"Iterator",2455],[4,"FailureLocation",445],[3,"CircuitGates",445],[3,"CircuitLayout",445],[4,"VerifyFailure",445],[8,"PartialEq",2451],[3,"Error",2434],[3,"TracingFloorPlanner",445],[8,"FloorPlanner",793],[3,"Assembly",1519],[3,"Shift",2456],[3,"DrawingArea",2457],[4,"DrawingAreaErrorKind",2457],[8,"DrawingBackend",2458],[3,"Range",2459],[3,"CircuitCost",633],[8,"PrimeGroup",2460],[3,"MarginalProofSize",633],[3,"ProofSize",633],[3,"Column",678],[3,"Gate",678],[3,"Constraint",678],[3,"Region",678],[3,"VirtualCell",678],[15,"i32"],[3,"VirtualCell",793],[3,"HashMap",2461],[4,"Expression",793],[3,"BatchVerifier",793],[15,"u8"],[3,"ConstraintSystem",793],[8,"Phase",793],[3,"Rotation",1576],[8,"ColumnType",793],[3,"FixedQuery",793],[3,"AdviceQuery",793],[3,"InstanceQuery",793],[3,"Gate",793],[3,"VerifyingKey",793],[3,"ProvingKey",793],[8,"EncodedChallenge",2280],[8,"TranscriptWrite",2280],[8,"Default",2462],[6,"ParamsVerifierIPA",1869],[3,"PinnedConstraintSystem",793],[3,"FirstPhase",793],[3,"SecondPhase",793],[3,"ThirdPhase",793],[3,"Constraint",793],[3,"Constraints",793],[3,"VirtualCells",793],[4,"TableError",793],[3,"PinnedVerificationKey",793],[3,"Error",2463],[6,"Result",2463],[3,"EvaluationDomain",1576],[8,"Hash",2453],[8,"Transcript",2280],[8,"Params",1798],[3,"Argument",1519],[3,"VerifyingKey",1519],[8,"Read",2464],[8,"Error",2465],[8,"CommitmentScheme",1798],[8,"Verifier",1798],[8,"VerificationStrategy",1576],[8,"TranscriptRead",2280],[8,"Write",2464],[3,"Polynomial",1576],[8,"Basis",1576],[3,"ProverQuery",1576],[3,"VerifierQuery",1576],[8,"MSM",1798],[3,"Coeff",1576],[3,"LagrangeCoeff",1576],[3,"ExtendedLagrangeCoeff",1576],[8,"WithSmallOrderMulGroup",2454],[3,"PinnedEvaluationDomain",1576],[4,"Error",1576],[3,"RangeFrom",2459],[3,"RangeFull",2459],[3,"Blind",1798],[8,"Sized",2443],[3,"ParamsIPA",1869],[3,"MSMIPA",1916],[3,"IPACommitmentScheme",1869],[3,"GuardIPA",1978],[3,"ProverIPA",1946],[3,"VerifierIPA",1946],[3,"Accumulator",1978],[3,"AccumulatorStrategy",1978],[3,"SingleStrategy",1978],[3,"ParamsKZG",2055],[8,"Engine",2466],[3,"MSMKZG",2106],[3,"KZGCommitmentScheme",2055],[3,"DualMSM",2106],[8,"MultiMillerLoop",2466],[3,"ProverGWC",2155],[3,"ProverSHPLONK",2155],[3,"VerifierGWC",2155],[3,"VerifierSHPLONK",2155],[3,"GuardKZG",2220],[3,"AccumulatorStrategy",2220],[3,"SingleStrategy",2220],[3,"ChallengeScalar",2280],[3,"Blake2bRead",2280],[3,"Keccak256Read",2280],[3,"Blake2bWrite",2280],[3,"Keccak256Write",2280],[3,"Challenge255",2280],[8,"CurveExt",27],[8,"Chip",74],[13,"InRegion",608],[13,"OutsideRegion",608],[13,"ConstraintNotSatisfied",611],[13,"CellNotAssigned",611],[13,"InstanceCellNotAssigned",611],[13,"Permutation",611],[13,"ConstraintPoisoned",611],[13,"Lookup",611],[13,"Shuffle",611],[13,"NotEnoughRowsAvailable",1518],[8,"Guard",1576],[8,"ParamsProver",1798],[8,"Prover",1798],[8,"TranscriptWriterBuffer",2280],[8,"TranscriptReadBuffer",2280]],"b":[[90,"impl-Add%3CF%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[91,"impl-Add%3CValue%3CF%3E%3E-for-Value%3CAssigned%3CF%3E%3E"],[92,"impl-Add%3CValue%3CF%3E%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[93,"impl-Add-for-Value%3CV%3E"],[94,"impl-Add%3CValue%3CV%3E%3E-for-%26Value%3CV%3E"],[95,"impl-Add%3CF%3E-for-Value%3CAssigned%3CF%3E%3E"],[96,"impl-Add%3CValue%3CV%3E%3E-for-Value%3C%26V%3E"],[97,"impl-Add%3C%26Value%3CV%3E%3E-for-Value%3CV%3E"],[98,"impl-Add%3CValue%3C%26V%3E%3E-for-Value%3CV%3E"],[99,"impl-Add-for-%26Value%3CV%3E"],[146,"impl-Value%3C%26V%3E"],[147,"impl-Value%3C%26mut+V%3E"],[154,"impl-Value%3C%26mut+V%3E"],[155,"impl-Value%3C%26V%3E"],[256,"impl-Mul-for-Value%3CV%3E"],[257,"impl-Mul%3CF%3E-for-Value%3CAssigned%3CF%3E%3E"],[258,"impl-Mul%3CValue%3CV%3E%3E-for-Value%3C%26V%3E"],[259,"impl-Mul%3CValue%3CV%3E%3E-for-%26Value%3CV%3E"],[260,"impl-Mul%3CValue%3C%26V%3E%3E-for-Value%3CV%3E"],[261,"impl-Mul%3CValue%3CF%3E%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[262,"impl-Mul%3C%26Value%3CV%3E%3E-for-Value%3CV%3E"],[263,"impl-Mul%3CF%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[264,"impl-Mul-for-%26Value%3CV%3E"],[265,"impl-Mul%3CValue%3CF%3E%3E-for-Value%3CAssigned%3CF%3E%3E"],[277,"impl-Sub%3CF%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[278,"impl-Sub%3CValue%3C%26V%3E%3E-for-Value%3CV%3E"],[279,"impl-Sub%3CValue%3CV%3E%3E-for-Value%3C%26V%3E"],[280,"impl-Sub%3C%26Value%3CV%3E%3E-for-Value%3CV%3E"],[281,"impl-Sub%3CValue%3CV%3E%3E-for-%26Value%3CV%3E"],[282,"impl-Sub-for-%26Value%3CV%3E"],[283,"impl-Sub%3CF%3E-for-Value%3CAssigned%3CF%3E%3E"],[284,"impl-Sub-for-Value%3CV%3E"],[285,"impl-Sub%3CValue%3CF%3E%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[286,"impl-Sub%3CValue%3CF%3E%3E-for-Value%3CAssigned%3CF%3E%3E"],[419,"impl-From%3CColumn%3CAny%3E%3E-for-RegionColumn"],[420,"impl-From%3CSelector%3E-for-RegionColumn"],[525,"impl-Display-for-FailureLocation"],[526,"impl-Debug-for-FailureLocation"],[527,"impl-Display-for-VerifyFailure"],[528,"impl-Debug-for-VerifyFailure"],[529,"impl-Display-for-CircuitGates"],[530,"impl-Debug-for-CircuitGates"],[724,"impl-Display-for-Column"],[725,"impl-Debug-for-Column"],[726,"impl-Display-for-VirtualCell"],[727,"impl-Debug-for-VirtualCell"],[728,"impl-Display-for-Gate"],[729,"impl-Debug-for-Gate"],[730,"impl-Display-for-Constraint"],[731,"impl-Debug-for-Constraint"],[732,"impl-Debug-for-Region"],[733,"impl-Display-for-Region"],[734,"impl-From%3C(Any,+usize)%3E-for-Column"],[736,"impl-From%3CColumn%3CAny%3E%3E-for-Column"],[737,"impl-From%3C(S,+Column,+i32)%3E-for-VirtualCell"],[738,"impl-From%3CVirtualCell%3E-for-VirtualCell"],[740,"impl-From%3C(Column,+i32)%3E-for-VirtualCell"],[745,"impl-From%3C(usize,+%26str,+HashMap%3CColumn,+String%3E)%3E-for-Region"],[746,"impl-From%3C(usize,+String)%3E-for-Region"],[747,"impl-From%3C(usize,+String,+HashMap%3CColumn,+String%3E)%3E-for-Region"],[748,"impl-From%3C(usize,+%26str)%3E-for-Region"],[861,"impl-Add%3CAssigned%3CF%3E%3E-for-%26Assigned%3CF%3E"],[862,"impl-Add%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[863,"impl-Add%3CF%3E-for-%26Assigned%3CF%3E"],[864,"impl-Add-for-Assigned%3CF%3E"],[865,"impl-Add%3CF%3E-for-Assigned%3CF%3E"],[866,"impl-Add%3C%26Assigned%3CF%3E%3E-for-%26Assigned%3CF%3E"],[868,"impl-AddAssign%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[869,"impl-AddAssign-for-Assigned%3CF%3E"],[1147,"impl-Debug-for-Error"],[1148,"impl-Display-for-Error"],[1149,"impl-Display-for-TableError"],[1150,"impl-Debug-for-TableError"],[1156,"impl-From%3C(F,+F)%3E-for-Assigned%3CF%3E"],[1157,"impl-From%3CF%3E-for-Assigned%3CF%3E"],[1158,"impl-From%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1159,"impl-From%3C%26F%3E-for-Assigned%3CF%3E"],[1161,"impl-From%3CColumn%3CFixed%3E%3E-for-Column%3CAny%3E"],[1162,"impl-From%3CColumn%3CAdvice%3E%3E-for-Column%3CAny%3E"],[1163,"impl-From%3CColumn%3CInstance%3E%3E-for-Column%3CAny%3E"],[1171,"impl-From%3CAdvice%3E-for-Any"],[1172,"impl-From%3CFixed%3E-for-Any"],[1174,"impl-From%3CInstance%3E-for-Any"],[1185,"impl-From%3CExpression%3CF%3E%3E-for-Constraint%3CF%3E"],[1186,"impl-From%3C(S,+Expression%3CF%3E)%3E-for-Constraint%3CF%3E"],[1291,"impl-Mul%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1292,"impl-Mul-for-Assigned%3CF%3E"],[1293,"impl-Mul%3CF%3E-for-%26Assigned%3CF%3E"],[1294,"impl-Mul%3CF%3E-for-Assigned%3CF%3E"],[1295,"impl-Mul-for-Expression%3CF%3E"],[1296,"impl-Mul%3CF%3E-for-Expression%3CF%3E"],[1297,"impl-MulAssign-for-Assigned%3CF%3E"],[1298,"impl-MulAssign%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1300,"impl-Neg-for-Assigned%3CF%3E"],[1301,"impl-Neg-for-%26Assigned%3CF%3E"],[1357,"impl-Sub-for-Assigned%3CF%3E"],[1358,"impl-Sub%3CF%3E-for-%26Assigned%3CF%3E"],[1359,"impl-Sub%3C%26Assigned%3CF%3E%3E-for-%26Assigned%3CF%3E"],[1360,"impl-Sub%3CAssigned%3CF%3E%3E-for-%26Assigned%3CF%3E"],[1361,"impl-Sub%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1362,"impl-Sub%3CF%3E-for-Assigned%3CF%3E"],[1364,"impl-SubAssign%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1365,"impl-SubAssign-for-Assigned%3CF%3E"],[1394,"impl-TryFrom%3CColumn%3CAny%3E%3E-for-Column%3CInstance%3E"],[1395,"impl-TryFrom%3CColumn%3CAny%3E%3E-for-Column%3CAdvice%3E"],[1396,"impl-TryFrom%3CColumn%3CAny%3E%3E-for-Column%3CFixed%3E"],[1701,"impl-Index%3Cusize%3E-for-Polynomial%3CF,+B%3E"],[1702,"impl-Index%3CRangeFrom%3Cusize%3E%3E-for-Polynomial%3CF,+B%3E"],[1703,"impl-Index%3CRangeFull%3E-for-Polynomial%3CF,+B%3E"],[1704,"impl-IndexMut%3CRangeFull%3E-for-Polynomial%3CF,+B%3E"],[1705,"impl-IndexMut%3Cusize%3E-for-Polynomial%3CF,+B%3E"],[1706,"impl-IndexMut%3CRangeFrom%3Cusize%3E%3E-for-Polynomial%3CF,+B%3E"],[1748,"impl-Sub%3C%26Polynomial%3CF,+B%3E%3E-for-Polynomial%3CF,+B%3E"],[1749,"impl-Sub%3CF%3E-for-%26Polynomial%3CF,+B%3E"],[1817,"impl-AddAssign-for-Blind%3CF%3E"],[1818,"impl-AddAssign%3CF%3E-for-Blind%3CF%3E"],[1845,"impl-MulAssign%3CF%3E-for-Blind%3CF%3E"],[1846,"impl-MulAssign-for-Blind%3CF%3E"],[1918,"impl-MSMIPA%3C\'a,+C%3E"],[1919,"impl-MSM%3CC%3E-for-MSMIPA%3C\'a,+C%3E"],[2199,"impl-Prover%3C\'params,+KZGCommitmentScheme%3CE%3E%3E-for-ProverSHPLONK%3C\'params,+E%3E"],[2200,"impl-ProverSHPLONK%3C\'a,+E%3E"],[2258,"impl-AccumulatorStrategy%3C\'params,+E%3E"],[2259,"impl-VerificationStrategy%3C\'params,+KZGCommitmentScheme%3CE%3E,+V%3E-for-AccumulatorStrategy%3C\'params,+E%3E"],[2260,"impl-VerificationStrategy%3C\'params,+KZGCommitmentScheme%3CE%3E,+V%3E-for-SingleStrategy%3C\'params,+E%3E"],[2261,"impl-SingleStrategy%3C\'params,+E%3E"]]}\ +"halo2_gadgets":{"doc":"This crate provides various common gadgets and chips for …","t":"CCCCCRKKFFFKRRFRFRFRFRFRRFRMNNMNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNMMMNNNNNMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMMMGPFFFFFKKRGPTFGGNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNMSSSSHHHHFPGPKKFFFFFRNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNMNNNNNNNNNNNMNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFKFIFRKKFNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNHNNNNNNNMNNNNNNMNMNMNNMNNMNNNNNNNNNNNNNNNNNNNNNNNNNSFRFFKRFFNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNMNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNRFKRRFKRFRFRRMRKRNNNNNNNNCNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNMMNNNNNNNNNNCNNCMNNNNNNNNNNNNNNNNNNNMFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSKFNNNCNNNNNNNNMNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSFFSSNNSNSSNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKFKKRNHHNNMNNCCHNNNNNHNNNHNCNHHNNNNNMMNNNFFKNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["ecc","poseidon","sha256","sinsemilla","utilities","Base","BaseFitsInScalarInstructions","EccInstructions","FixedPoint","FixedPointBaseField","FixedPointShort","FixedPoints","FixedPoints","FullScalar","NonIdentityPoint","NonIdentityPoint","Point","Point","ScalarFixed","ScalarFixed","ScalarFixedShort","ScalarFixedShort","ScalarVar","ScalarVar","ShortScalar","X","X","add","add","add","add_incomplete","add_incomplete","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","chip","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","constrain_equal","constrain_equal","constrain_equal","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","drop","drop","drop","drop","drop","drop","drop","drop","drop","extract_p","extract_p","extract_p","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from_base","from_inner","from_inner","from_inner","from_inner","from_inner","from_inner","init","init","init","init","init","init","init","init","init","inner","inner","inner","into","into","into","into","into","into","into","into","into","mul","mul","mul","mul","mul","mul_fixed","mul_fixed_base_field_elem","mul_fixed_short","new","new","new","new","new","scalar_fixed_from_signed_short","scalar_var_from_base","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_from","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","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","witness_point","witness_point_non_id","witness_scalar_fixed","witness_scalar_var","BaseFieldElem","BaseFieldElem","EccChip","EccConfig","EccPoint","EccScalarFixed","EccScalarFixedShort","FixedPoint","FixedScalarKind","FixedScalarKind","FullScalar","FullWidth","NUM_WINDOWS","NonIdentityEccPoint","ScalarVar","ShortScalar","add","add_incomplete","advices","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","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","config","configure","constants","constrain_equal","construct","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","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","eq","eq","extract_p","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","generator","init","init","init","init","init","init","init","init","init","init","into","into","into","into","into","into","into","into","into","into","lagrange_coeffs","loaded","lookup_config","mul","mul_fixed","mul_fixed_base_field_elem","mul_fixed_short","point","point","scalar_fixed_from_signed_short","scalar_var_from_base","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_from","try_from","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","u","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","witness_point","witness_point_non_id","witness_scalar_fixed","witness_scalar_var","x","x","y","y","z","FIXED_BASE_WINDOW_SIZE","H","NUM_WINDOWS","NUM_WINDOWS_SHORT","compute_lagrange_coeffs","find_zs_and_us","test_lagrange_coeffs","test_zs_and_us","Hash","Message","PaddedWord","Padding","PoseidonInstructions","PoseidonSpongeInstructions","Pow5Chip","Pow5Config","Sponge","StateWord","Word","Word","absorb","add_input","add_input","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cell","clone","clone","clone","clone_into","clone_into","clone_into","config","configure","construct","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","finish_absorbing","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from_inner","get_output","get_output","hash","init","init","init","init","init","init","init","init","initial_state","initial_state","inner","into","into","into","into","into","into","into","loaded","new","permute","permute","primitives","squeeze","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","value","vzip","vzip","vzip","vzip","vzip","vzip","vzip","Absorbing","ConstantLength","Domain","Hash","Mds","P128Pow5T3","Padding","Spec","SpongeMode","Squeezing","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","constants","constants","constants","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","full_rounds","full_rounds","full_rounds","generate_constants","hash","init","init","init","init","init","init","initial_capacity_element","initial_capacity_element","into","into","into","into","into","name","name","padding","padding","partial_rounds","partial_rounds","partial_rounds","sbox","sbox","sbox","secure_mds","secure_mds","secure_mds","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","BLOCK_SIZE","BlockWord","BlockWord","Sha256","Sha256Digest","Sha256Instructions","State","Table16Chip","Table16Config","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","compress","compress","config","configure","construct","default","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","digest","digest","digest","drop","drop","drop","drop","drop","finalize","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","init","init","init","init","init","initialization","initialization","initialization_vector","initialization_vector","into","into","into","into","into","load","loaded","new","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","update","vzip","vzip","vzip","vzip","vzip","CellValue","CommitDomain","CommitDomains","CommitDomains","FixedPoints","HashDomain","HashDomains","HashDomains","Message","Message","MessagePiece","MessagePiece","NonIdentityPoint","Q","RunningSum","SinsemillaInstructions","X","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","chip","clone","clone","clone_into","clone_into","commit","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","extract","fmt","fmt","fmt","fmt","from","from","from","from","from_field_elem","from_pieces","from_subpieces","hash","hash_domain","hash_to_point","hash_to_point","init","init","init","init","inner","into","into","into","into","merkle","new","new","primitives","r","short_commit","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","witness_message_piece","SinsemillaChip","SinsemillaConfig","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","config","configure","construct","deref","deref","deref_mut","deref_mut","drop","drop","eq","eq","extract","fmt","fmt","from","from","hash_to_point","init","init","into","into","load","loaded","lookup_config","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","witness_message_piece","MERKLE_CRH_PERSONALIZATION","MerkleInstructions","MerklePath","borrow","borrow_mut","calculate_root","chip","clone","clone_into","construct","deref","deref_mut","drop","fmt","from","hash_layer","init","into","to_owned","try_from","try_into","type_id","vzip","MerkleChip","MerkleConfig","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","config","configure","construct","deref","deref","deref_mut","deref_mut","drop","drop","eq","eq","extract","fmt","fmt","from","from","hash_layer","hash_to_point","init","init","into","into","loaded","swap","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","witness_message_piece","C","CommitDomain","HashDomain","INV_TWO_POW_K","K","Q","Q","Q_PERSONALIZATION","R","SINSEMILLA_S","S_PERSONALIZATION","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","commit","deref","deref","deref_mut","deref_mut","drop","drop","fmt","fmt","from","from","hash","hash_to_point","init","init","into","into","new","new","short_commit","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","FieldValue","RangeConstrained","UtilitiesInstructions","Var","Var","bitrange_of","bitrange_subset","bool_check","borrow","borrow_mut","cell","clone","clone_into","cond_swap","decompose_running_sum","decompose_word","deref","deref_mut","drop","fmt","from","i2lebsp","init","inner","into","lebs2ip","load_private","lookup_range_check","num_bits","range_check","ternary","to_owned","try_from","try_into","type_id","unsound_unchecked","value","value","value","vzip","witness_short","CondSwapChip","CondSwapConfig","CondSwapInstructions","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","config","configure","construct","deref","deref","deref_mut","deref_mut","drop","drop","eq","fmt","fmt","from","from","init","init","into","into","loaded","swap","swap","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","RunningSum","RunningSumConfig","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","configure","copy_decompose","deref","deref","deref","deref_mut","deref_mut","drop","drop","eq","fmt","fmt","from","from","init","init","into","into","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","witness_decompose","LookupRangeCheckConfig","RunningSum","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","configure","copy_check","copy_short_check","deref","deref","deref","deref_mut","deref_mut","drop","drop","eq","fmt","fmt","from","from","init","init","into","into","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","witness_check","witness_short_check"],"q":[[0,"halo2_gadgets"],[5,"halo2_gadgets::ecc"],[201,"halo2_gadgets::ecc::chip"],[402,"halo2_gadgets::ecc::chip::constants"],[410,"halo2_gadgets::poseidon"],[546,"halo2_gadgets::poseidon::primitives"],[654,"halo2_gadgets::sha256"],[755,"halo2_gadgets::sinsemilla"],[848,"halo2_gadgets::sinsemilla::chip"],[893,"halo2_gadgets::sinsemilla::merkle"],[916,"halo2_gadgets::sinsemilla::merkle::chip"],[961,"halo2_gadgets::sinsemilla::primitives"],[1007,"halo2_gadgets::utilities"],[1048,"halo2_gadgets::utilities::cond_swap"],[1090,"halo2_gadgets::utilities::decompose_running_sum"],[1126,"halo2_gadgets::utilities::lookup_range_check"],[1164,"halo2_proofs::plonk::error"],[1165,"core::result"],[1166,"core::clone"],[1167,"core::fmt"],[1168,"core::convert"],[1169,"pasta_curves::arithmetic::curves"],[1170,"halo2_proofs::circuit"],[1171,"core::convert"],[1172,"core::fmt"],[1173,"core::any"],[1174,"pasta_curves::pallas"],[1175,"pasta_curves::pallas"],[1176,"halo2_proofs::plonk::circuit"],[1177,"halo2_proofs::circuit"],[1178,"ff"],[1179,"halo2_proofs::circuit"],[1180,"ff"],[1181,"core::marker"],[1182,"core::default"],[1183,"core::iter::traits::collect"],[1184,"halo2_proofs::plonk::circuit"],[1185,"core::iter::traits::iterator"],[1186,"core::ops::range"],[1187,"ff"]],"d":["Elliptic curve operations.","The Poseidon algebraic hash function.","The SHA-256 hash function.","The Sinsemilla hash function.","Utility gadgets.","Fixed points that can be multiplied by base field elements.","Instructions that can be implemented for a curve whose …","The set of circuit instructions required to use the ECC …","Precomputed multiples of a fixed point, for full-width …","Precomputed multiples of a fixed point, that can be …","Precomputed multiples of a fixed point, for short signed …","Defines the fixed points for a given instantiation of the …","Enumeration of the set of fixed bases to be used in scalar …","Fixed points that can be used with full-width scalar …","A point on a specific elliptic curve that is guaranteed to …","Variable representing a non-identity elliptic curve point.","A point on a specific elliptic curve.","Variable representing an elliptic curve point.","An integer representing an element of the scalar field for …","Variable representing a full-width element of the elliptic …","A signed short (64-bit) integer represented as an element …","Variable representing a signed short element of the …","An integer representing an element of the scalar field for …","Variable representing a scalar used in variable-base …","Fixed points that can be used with short scalar …","The affine short Weierstrass x-coordinate of a point on a …","Variable representing the affine short Weierstrass …","Performs complete point addition, returning a + b.","Returns self + other using complete addition.","Returns self + other using complete addition.","Performs incomplete point addition, returning a + b.","Returns self + other using incomplete addition. The …","","","","","","","","","","","","","","","","","","","Chip implementations for the ECC gadgets.","","","","","","","","","","","Constrains point a to be equal in value to point b.","Constrains this point to be equal in value to another …","Constrains this point to be equal in value to another …","","","","","","","","","","","","","","","","","","","","","","","","","","","","Extracts the x-coordinate of a point.","Extracts the x-coordinate of a point.","Extracts the x-coordinate of a point.","","","","","","","","","","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.","Constructs a scalar from an existing base-field element.","Wraps the given point (obtained directly from an …","Wraps the given point (obtained directly from an …","Wraps the given x-coordinate (obtained directly from an …","Wraps the given fixed base (obtained directly from an …","Wraps the given fixed base (obtained directly from an …","Wraps the given fixed base (obtained directly from an …","","","","","","","","","","Returns the inner point.","Returns the inner point.","Returns the inner x-coordinate.","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).","Performs variable-base scalar multiplication, returning …","Returns [by] self.","Returns [by] self.","Returns [by] self.","Returns [by] self.","Performs fixed-base scalar multiplication using a …","Performs fixed-base scalar multiplication using a base …","Performs fixed-base scalar multiplication using a short …","Witnesses the given full-width scalar.","Witnesses the given full-width scalar.","Converts the given signed short scalar.","Constructs a new point with the given value.","Constructs a new point with the given value.","Converts a magnitude and sign that exists as variables in …","Converts a base field element that exists as a variable in …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Witnesses the given point as a private input to the …","Witnesses the given point as a private input to the …","Witnesses a full-width scalar to be used in fixed-base …","Witnesses a full-width scalar to be used in variable-base …","Type marker representing a base field element being used …","An element of the elliptic curve’s base field, that is …","An EccInstructions chip that uses 10 advice columns.","Configuration for EccChip.","A curve point represented in affine (x, y) coordinates, or …","A full-width scalar used for fixed-base scalar …","A signed short scalar used for fixed-base scalar …","Returns information about a fixed point that is required …","A trait representing the kind of scalar used with a …","The kind of scalar that this fixed point can be multiplied …","Type marker representing a full-width scalar for use in …","A full-width scalar. This is unimplemented for …","The number of windows that this scalar kind requires.","A non-identity point represented in affine (x, y) …","An enumeration of the possible types of scalars used in …","Type marker representing a signed 64-bit scalar for use in …","","","Advice columns needed by instructions in the ECC chip.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Side effects","Constants required for the ECC chip.","","Reconstructs this chip from the given config.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","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 generator for this fixed point.","","","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns the Lagrange coefficients for this fixed point.","","Lookup range check using 10-bit lookup table","","","","","Returns the value of this curve point, if known.","Returns the value of this curve point, if known.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the $u$ values for this fixed point.","","","","","","","","","","","","","","","The cell containing the affine short-Weierstrass …","The cell containing the affine short-Weierstrass …","The cell containing the affine short-Weierstrass …","The cell containing the affine short-Weierstrass …","Returns the $z$ value for this fixed point.","Window size for fixed-base scalar multiplication","$2^{FIXED_BASE_WINDOW_SIZE}$","Number of windows for a full-width scalar","Number of windows for a short signed scalar","For each window, we interpolate the $x$-coordinate. Here, …","For each window, $z$ is a field element such that for each …","Test that Lagrange interpolation coefficients reproduce …","Test that the z-values and u-values satisfy the conditions:","A Poseidon hash function, built around a sponge.","A message word provided by the prover.","A word from the padded input to a Poseidon sponge.","A padding word, that will be fixed in the circuit …","The set of circuit instructions required to use the …","The set of circuit instructions required to use the Sponge …","A Poseidon chip using an $x^5$ S-Box.","Configuration for a Pow5Chip.","A Poseidon sponge.","A word in the Poseidon state.","A word over which the Poseidon permutation operates.","Variable representing the word over which the Poseidon …","Absorbs an element into the sponge.","Adds the given input to the state.","","","","","","","","","","","","","","","","","","","","","","","","Configures this chip for use in a circuit.","Construct a Pow5Chip.","","","","","","","","","","","","","","","","","","","","","","Transitions the sponge into its squeezing state.","","","","","","","","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.","Construct a Word gadget from the inner word.","Extracts sponge output from the given state.","","Hashes the given input.","","","","","","","","Initializes a new hasher.","Returns the initial empty state for the given domain.","","The word contained in this gadget.","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).","","Constructs a new duplex sponge for the given Poseidon …","Applies the Poseidon permutation to the given state.","","The Poseidon algebraic hash function.","Squeezes an element from the sponge.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The absorbing state of the Sponge.","A Poseidon hash function used with constant input length.","A domain in which a Poseidon hash function is being used.","A Poseidon hash function, built around a sponge.","The type used to hold the MDS matrix and its inverse.","Poseidon-128 using the $x^5$ S-box, with a width of 3 …","Iterator that outputs padding field elements.","A specification for a Poseidon permutation.","The state of the Sponge.","The squeezing state of the Sponge.","","","","","","","","","","","","","","","","","Generates (round_constants, mds, mds^-1) corresponding to …","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","The number of full rounds for this specification.","","","Generates (round_constants, mds, mds^-1) corresponding to …","Hashes the given input.","","","","","","Initializes a new hasher.","The initial capacity element, encoding this domain.","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","The name of this domain, for debug formatting purposes.","","Returns the padding to be appended to the input.","","The number of partial rounds for this specification.","","","The S-box for this specification.","","","Side-loaded index of the first correct and secure MDS that …","","","","","","","","","","","","","","","","","","","","","","","","","","The size of a SHA-256 block, in 32-bit words.","A word in a Table16 message block.","Variable representing a 32-bit word of the input block to …","A gadget that constrains a SHA-256 invocation. It supports …","The output of a SHA-256 circuit invocation.","The set of circuit instructions required to use the Sha256 …","Variable representing the SHA-256 internal state.","A chip that implements SHA-256 with a maximum lookup table …","Configuration for a Table16Chip.","","","","","","","","","","","","","","","","","Starting from the given initialized state, processes a …","","","Configures a circuit to include this chip.","Reconstructs this chip from the given config.","","","","","","","","","","","","Converts the given state into a message digest.","","Convenience function to compute hash of the data. It will …","","","","","","Retrieve result and consume hasher instance.","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","Creates an initial state from the output state of a …","","Places the SHA-256 IV in the circuit, returning the …","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Loads the lookup table required by this chip into the …","","Create a new hasher instance.","","","","","","","","","","","","","","","","","","","Digest data, updating the internal state.","","","","","","A variable in the circuit.","Gadget representing a domain in which …","Trait allowing circuit’s Sinsemilla CommitDomains to be …","CommitDomains used in this instruction.","A type enumerating the fixed points used in CommitDomains.","A domain in which $\\\\mathsf{SinsemillaHashToPoint}$ and …","Trait allowing circuit’s Sinsemilla HashDomains to be …","HashDomains used in this instruction.","A message to be hashed.","A message composed of Self::MessagePieces.","A message piece with a bitlength of some multiple of K.","A piece in a message containing a number of K-bit words. A …","A point output of Self::hash_to_point.","Returns the Q constant for this domain.","A cumulative sum z is used to decompose a Sinsemilla …","The set of circuit instructions required to use the …","The x-coordinate of a point output of Self::hash_to_point.","","","","","","","","","Chip implementations for the Sinsemilla gadgets.","","","","","$\\\\mathsf{SinsemillaCommit}$ from § 5.4.8.4.","","","","","","","","","","","","","Extracts the x-coordinate of the output of a Sinsemilla …","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Constructs a MessagePiece from a field element.","Constructs a message from a vector of MessagePieces.","Constructs a MessagePiece by concatenating a sequence of …","$\\\\mathsf{SinsemillaHash}$ from § 5.4.1.9.","Returns the HashDomain contained in this CommitDomain","Hashes a message to an ECC curve point. This returns both …","$\\\\mathsf{SinsemillaHashToPoint}$ from § 5.4.1.9.","","","","","Returns the inner MessagePiece contained in this gadget.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Gadgets for implementing a Merkle tree with Sinsemilla.","Constructs a new HashDomain for the given domain.","Constructs a new CommitDomain for the given domain.","Implementation of Sinsemilla outside the circuit.","Returns the fixed point corresponding to the R constant …","$\\\\mathsf{SinsemillaShortCommit}$ from § 5.4.8.4.","","","","","","","","","","","","","","","","","","","Witness a message piece given a field element. Returns a …","A chip that implements 10-bit Sinsemilla using a lookup …","Configuration for the Sinsemilla hash chip","","","","","","","","","","Side-effects","Reconstructs this chip from the given config.","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self).","Calls U::from(self).","Loads the lookup table required by this chip into the …","","Returns the lookup range check config used in this config.","","","","","","","","","","","","SWU hash-to-curve personalization for the Merkle CRH …","Instructions to check the validity of a Merkle path of a …","Gadget representing a Merkle path that proves a leaf …","","","Calculates the root of the tree containing the given leaf …","Chip implementing a Merkle hash using Sinsemilla as the …","","","Constructs a MerklePath.","","","","","Returns the argument unchanged.","Compute MerkleCRH for a given layer. The hash that …","","Calls U::from(self).","","","","","","Chip implementing MerkleInstructions.","Configuration for the MerkleChip implementation.","","","","","","","","","","Configures the MerkleChip.","Constructs a MerkleChip given a MerkleConfig.","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","The largest integer such that $2^c \\\\leq (r_P - 1) / 2$, …","A domain in which $\\\\mathsf{SinsemillaCommit}$ and …","A domain in which $\\\\mathsf{SinsemillaHashToPoint}$ and …","$\\\\frac{1}{2^K}$","Number of bits of each message piece in …","Returns the Sinsemilla $Q$ constant for this domain.","Returns the Sinsemilla $Q$ constant for this domain.","SWU hash-to-curve personalization for Sinsemilla $Q$ …","Returns the Sinsemilla $R$ constant for this domain.","The precomputed bases for the Sinsemilla hash function.","SWU hash-to-curve personalization for Sinsemilla $S$ …","","","","","","","$\\\\mathsf{SinsemillaCommit}$ from § 5.4.8.4.","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","$\\\\mathsf{SinsemillaHash}$ from § 5.4.1.9.","$\\\\mathsf{SinsemillaHashToPoint}$ from § 5.4.1.9.","","","Calls U::from(self).","Calls U::from(self).","Constructs a new HashDomain with a specific prefix string.","Constructs a new CommitDomain with a specific prefix …","$\\\\mathsf{SinsemillaShortCommit}$ from § 5.4.8.4.","","","","","","","","","","A type that has a value at either keygen or proving time.","A type representing a range-constrained field element.","Trait for utilities used across circuits.","Trait for a variable in the circuit.","Variable in the circuit.","Constructs a RangeConstrained<Value<F>> as a bitrange of …","Takes a specified subsequence of the little-endian bit …","Checks that an expression is either 1 or 0.","","","The cell at which this variable was allocated.","","","Gadget and chip for a conditional swap utility.","Decomposes an $n$-bit field element $\\\\alpha$ into $W$ …","Decompose a word alpha into window_num_bits bits …","","","","","Returns the argument unchanged.","The sequence of bits representing a u64 in little-endian …","","Returns the range-constrained inner type.","Calls U::from(self).","The u64 integer represented by an L-bit little-endian …","Load a variable.","Make use of a K-bit lookup table to decompose a field …","Returns the number of bits to which this cell is …","Check that an expression is in the small range [0..range), …","If a then b, else c. Returns (a * b) + (1 - a) * c.","","","","","Constructs a RangeConstrained<AssignedCell<F, F>> without …","Returns the value of this type.","The value allocated to this variable.","Extracts the range-constrained value from this …","","Witnesses a subset of the bits in value and constrains …","A chip implementing a conditional swap.","Configuration for the CondSwapChip.","Instructions for a conditional swap gadget.","","","","","","","","","","Configures this chip for use in a circuit.","Constructs a CondSwapChip given a CondSwapConfig.","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","","Given an input pair (a,b) and a swap boolean flag, returns …","","","","","","","","","","","","The running sum $[z_0, …, z_W]$. If created in strict …","Configuration that provides methods for running sum …","","","","","","","perm MUST include the advice column z.","Decompose an existing variable alpha that is copied into …","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","Decompose a field element alpha that is witnessed in this …","Configuration that provides methods for a lookup range …","The running sum $[z_0, …, z_W]$. If created in strict …","","","","","","","The running_sum advice column breaks the field element …","Range check on an existing cell that is copied into this …","Short range check on an existing cell that is copied into …","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","Range check on a value that is witnessed in this helper.","Short range check on value that is witnessed in this …"],"i":[0,0,0,0,0,14,0,0,0,0,0,0,8,14,0,8,0,8,0,8,0,8,0,8,14,0,8,8,18,19,8,18,27,30,31,18,19,26,21,22,23,27,30,31,18,19,26,21,22,23,0,18,19,21,22,23,18,19,21,22,23,8,18,19,27,30,31,18,19,26,21,22,23,27,30,31,18,19,26,21,22,23,27,30,31,18,19,26,21,22,23,8,18,19,27,30,31,18,19,26,21,22,23,27,30,31,18,19,19,26,21,22,23,27,18,19,26,21,22,23,27,30,31,18,19,26,21,22,23,18,19,26,27,30,31,18,19,26,21,22,23,8,18,21,22,23,8,8,8,27,30,31,18,19,8,32,18,19,21,22,23,27,30,31,18,19,26,21,22,23,27,30,31,18,19,26,21,22,23,27,30,31,18,19,26,21,22,23,27,30,31,18,19,26,21,22,23,8,8,8,8,0,43,0,0,0,0,0,0,0,56,0,43,57,0,0,0,35,35,40,38,39,40,52,53,54,35,41,42,43,38,39,40,52,53,54,35,41,42,43,38,39,40,35,41,42,43,38,39,40,35,41,42,43,35,35,0,35,35,38,39,40,52,53,54,35,41,42,43,38,39,40,52,53,54,35,41,42,43,38,39,40,52,53,54,35,41,42,43,40,35,35,38,39,40,52,53,54,35,41,42,43,38,38,39,40,52,53,54,35,41,42,43,56,38,39,40,52,53,54,35,41,42,43,38,39,40,52,53,54,35,41,42,43,56,35,40,35,35,35,35,38,39,35,35,38,39,40,35,41,42,43,38,39,40,52,53,54,35,41,42,43,38,39,40,52,53,54,35,41,42,43,38,39,40,52,53,54,35,41,42,43,56,38,39,40,52,53,54,35,41,42,43,35,35,35,35,38,39,38,39,56,0,0,0,0,0,0,0,0,0,65,0,65,0,0,0,0,0,0,0,78,67,71,72,75,72,73,65,77,67,80,75,72,73,65,77,67,80,73,75,73,65,75,73,65,72,72,72,75,72,73,65,77,67,80,75,72,73,65,77,67,80,75,72,73,65,77,67,80,67,75,72,73,65,77,67,80,75,72,73,73,65,77,67,80,77,71,72,80,75,72,73,65,77,67,80,80,71,72,77,75,72,73,65,77,67,80,72,67,78,72,0,67,75,73,65,75,72,73,65,77,67,80,75,72,73,65,77,67,80,75,72,73,65,77,67,80,73,75,72,73,65,77,67,80,0,0,0,0,0,0,70,0,0,0,87,66,76,81,84,87,66,76,81,84,66,81,84,66,81,84,69,87,87,87,66,76,81,84,87,66,76,81,84,87,66,76,81,84,87,66,76,81,84,87,66,76,81,84,69,87,87,0,84,87,66,76,81,84,84,70,81,87,66,76,81,84,70,81,70,81,69,87,87,69,87,87,69,87,87,66,81,84,87,66,76,81,84,87,66,76,81,84,87,66,76,81,84,87,66,76,81,84,0,0,96,0,0,0,96,0,0,91,92,93,99,100,91,92,93,99,100,91,92,93,91,92,93,96,93,93,93,93,91,91,92,93,99,100,91,92,93,99,100,96,93,100,91,92,93,99,100,100,91,92,93,99,100,91,92,93,99,100,91,92,93,99,100,96,93,96,93,91,92,93,99,100,93,93,100,91,92,93,91,92,93,99,100,91,92,93,99,100,91,92,93,99,100,100,91,92,93,99,100,103,0,0,103,103,0,0,103,0,103,0,103,103,101,103,0,103,102,104,106,105,102,104,106,105,0,102,104,102,104,105,102,104,106,105,102,104,106,105,102,104,106,105,103,102,104,106,105,102,104,106,105,104,102,104,106,110,103,106,102,104,106,105,104,102,104,106,105,0,106,105,0,110,105,102,104,102,104,106,105,102,104,106,105,102,104,106,105,102,104,106,105,103,0,0,118,119,118,119,118,119,118,119,119,119,119,118,119,118,119,118,119,118,119,119,118,119,118,119,119,118,119,118,119,119,119,118,118,119,118,119,118,119,118,119,118,119,119,0,0,0,121,121,121,0,121,121,121,121,121,121,121,121,122,121,121,121,121,121,121,121,0,0,124,125,124,125,124,125,124,125,125,125,125,124,125,124,125,124,125,124,125,125,124,125,124,125,125,125,124,125,124,125,125,125,124,125,124,125,124,125,124,125,124,125,125,0,0,0,0,0,126,128,0,128,0,0,126,128,126,128,126,126,128,126,128,126,128,126,128,126,128,126,128,126,126,126,128,126,128,126,128,128,126,126,128,126,128,126,128,126,128,0,0,0,0,137,108,0,0,108,108,117,108,108,0,0,0,108,108,108,108,108,0,108,108,108,0,137,0,108,0,0,108,108,108,108,108,135,117,108,108,108,0,0,0,138,139,138,139,138,139,138,139,138,138,138,138,139,138,139,138,139,139,138,139,138,139,138,139,138,139,138,140,138,138,139,138,139,138,139,138,139,138,139,0,0,144,141,144,141,141,141,141,141,144,144,141,144,141,144,141,141,144,141,144,141,144,141,144,141,141,144,141,144,141,144,141,144,141,141,0,0,145,49,145,49,49,49,49,49,49,145,145,49,145,49,145,49,49,145,49,145,49,145,49,145,49,49,145,49,145,49,145,49,145,49,49,49],"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,[[[8,[],[[1,[-1]],[2,[-2]],[3,[-3]],[4,[-4]],[5,[-5]],[6,[-6]],[7,[-7]]]],-9,-10,-11],[[10,[-4,9]]],[11,12],[11,12],[11,12],[[13,[-5]],11,12],[11,12],[11,12],[[14,[-8]]],15,16,[[17,[-4]],11],[[17,[-4]],11]],[[[18,[-1,-2]],-3,-4],[[10,[[19,[-1,-2]],9]]],15,[[8,[-1]]],16,[[17,[[19,[-1,-2]]]],11]],[[[19,[-1,-2]],-3,-4],[[10,[[19,[-1,-2]],9]]],15,[[8,[-1]],11,12,20],16,[[17,[[19,[-1,-2]]]],11]],[[[8,[],[[1,[-1]],[2,[-2]],[3,[-3]],[4,[-4]],[5,[-5]],[6,[-6]],[7,[-7]]]],-9,-5,-5],[[10,[-5,9]]],[11,12],[11,12],[11,12],[[13,[-5]],11,12],[11,12],[11,12],[[14,[-8]]],15,16],[[[18,[-1,-2]],-3,[18,[-1,-2]]],[[10,[[18,[-1,-2]],9]]],15,[[8,[-1]]],16],[-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,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[[[18,[-1,-2]]],[[18,[-1,-2]]],[11,15],[11,[8,[-1]]]],[[[19,[-1,-2]]],[[19,[-1,-2]]],[11,15],[11,[8,[-1]],11,12,20]],[[[21,[-1,-2]]],[[21,[-1,-2]]],[11,15],[11,[8,[-1]]]],[[[22,[-1,-2]]],[[22,[-1,-2]]],[11,15],[11,[8,[-1]]]],[[[23,[-1,-2]]],[[23,[-1,-2]]],[11,15],[11,[8,[-1]]]],[[-1,-2],24,[],[]],[[-1,-2],24,[],[]],[[-1,-2],24,[],[]],[[-1,-2],24,[],[]],[[-1,-2],24,[],[]],[[[8,[],[[1,[-1]],[2,[-2]],[3,[-3]],[4,[-4]],[5,[-5]],[6,[-6]],[7,[-7]]]],-9,-4,-4],[[10,[24,9]]],[11,12],[11,12],[11,12],[[13,[-5]],11,12],[11,12],[11,12],[[14,[-8]]],15,16],[[[18,[-1,-2]],-3,-4],[[10,[24,9]]],15,[[8,[-1]]],16,[[17,[[19,[-1,-2]]]],11]],[[[19,[-1,-2]],-3,-4],[[10,[24,9]]],15,[[8,[-1]],11,12,20],16,[[17,[[19,[-1,-2]]]],11]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,24],[25,24],[25,24],[25,24],[25,24],[25,24],[25,24],[25,24],[25,24],[-2,-3,[],[[17,[-1]],11],[]],[[[18,[-1,-2]]],[[26,[-1,-2]]],15,[[8,[-1]]]],[[[19,[-1,-2]]],[[26,[-1,-2]]],15,[[8,[-1]],11,12,20]],[[[27,[-1,-2]],28],29,[12,15],[12,[8,[-1]]]],[[[30,[-1,-2]],28],29,[12,15],[12,[8,[-1]]]],[[[31,[-1,-2]],28],29,[12,15],[12,[8,[-1]]]],[[[18,[-1,-2]],28],29,[12,15],[12,[8,[-1]]]],[[[19,[-1,-2]],28],29,[12,15],[12,[8,[-1]],11,12,20]],[[[26,[-1,-2]],28],29,[12,15],[12,[8,[-1]]]],[[[21,[-1,-2]],28],29,[12,15],[12,[8,[-1]]]],[[[22,[-1,-2]],28],29,[12,15],[12,[8,[-1]]]],[[[23,[-1,-2]],28],29,[12,15],[12,[8,[-1]]]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[18,[-1,-2]]],[[19,[-1,-2]]],15,[[8,[-1]],11,12,20]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[-2,-3],[[10,[[27,[-1,-2]],9]]],15,[[32,[-1]]],16],[-2,[[18,[-1,-2]]],15,[[8,[-1]]]],[-2,[[19,[-1,-2]]],15,[[8,[-1]],11,12,20]],[-2,[[26,[-1,-2]]],15,[[8,[-1]]]],[-2,[[21,[-1,-2]]],15,[[8,[-1]]]],[-2,[[22,[-1,-2]]],15,[[8,[-1]]]],[-2,[[23,[-1,-2]]],15,[[8,[-1]]]],[[],25],[[],25],[[],25],[[],25],[[],25],[[],25],[[],25],[[],25],[[],25],[[[18,[-1,-2]]],[],15,[[8,[-1]]]],[[[19,[-1,-2]]],[],15,[[8,[-1]],11,12,20]],[[[26,[-1,-2]]],[],15,[[8,[-1]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[8,[],[[1,[-1]],[2,[-2]],[3,[-3]],[4,[-4]],[5,[-5]],[6,[-6]],[7,[-7]]]],-9,-1,-5],[[10,[[24,[-4,-1]],9]]],[11,12],[11,12],[11,12],[[13,[-5]],11,12],[11,12],[11,12],[[14,[-8]]],15,16],[[[18,[-1,-2]],-3,[27,[-1,-2]]],[[10,[[24,[[19,[-1,-2]],[27,[-1,-2]]]],9]]],15,[[8,[-1]]],16],[[[21,[-1,-2]],-3,[30,[-1,-2]]],[[10,[[24,[[19,[-1,-2]],[30,[-1,-2]]]],9]]],15,[[8,[-1]]],16],[[[22,[-1,-2]],-3],[[10,[[19,[-1,-2]],9]]],15,[[8,[-1]]],16],[[[23,[-1,-2]],-3,[31,[-1,-2]]],[[10,[[24,[[19,[-1,-2]],[31,[-1,-2]]]],9]]],15,[[8,[-1]]],16],[[[8,[],[[1,[-1]],[2,[-2]],[3,[-3]],[4,[-4]],[5,[-5]],[6,[-6]],[7,[-7]]]],-9,-2],[[10,[[24,[-4,-2]],9]]],[11,12],[11,12],[11,12],[[13,[-5]],11,12],[11,12],[11,12],[[14,[-8]]],15,16],[[[8,[],[[1,[-1]],[2,[-2]],[3,[-3]],[4,[-4]],[5,[-5]],[6,[-6]],[7,[-7]]]],-9,-10],[[10,[-4,9]]],[11,12],[11,12],[11,12],[[13,[-5]],11,12],[11,12],[11,12],[[14,[-8]]],15,16,[]],[[[8,[],[[1,[-1]],[2,[-2]],[3,[-3]],[4,[-4]],[5,[-5]],[6,[-6]],[7,[-7]]]],-9,-3],[[10,[[24,[-4,-3]],9]]],[11,12],[11,12],[11,12],[[13,[-5]],11,12],[11,12],[11,12],[[14,[-8]]],15,16],[[-2,-3,33],[[10,[[27,[-1,-2]],9]]],15,[[8,[-1]]],16],[[-2,-3,33],[[10,[[30,[-1,-2]],9]]],15,[[8,[-1]]],16],[[-2,-3,24],[[10,[[31,[-1,-2]],9]]],15,[[8,[-1]]],16],[[-2,-3,[33,[-1]]],[[10,[[18,[-1,-2]],9]]],15,[[8,[-1]]],16],[[-2,-3,[33,[-1]]],[[10,[[19,[-1,-2]],9]]],15,[[8,[-1]],11,12,20],16],[[[8,[],[[1,[-1]],[2,[-2]],[3,[-3]],[4,[-4]],[5,[-5]],[6,[-6]],[7,[-7]]]],-9,[24,[-10,-10]]],[[10,[-3,9]]],[11,12],[11,12],[11,12],[[13,[-5]],11,12],[11,12],[11,12],[[14,[-8]]],15,16,[]],[[32,-1,-2],[[10,[-3,9]]],16,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[8,[],[[1,[-1]],[2,[-2]],[3,[-3]],[4,[-4]],[5,[-5]],[6,[-6]],[7,[-7]]]],-9,[33,[-8]]],[[10,[-4,9]]],[11,12],[11,12],[11,12],[[13,[-5]],11,12],[11,12],[11,12],[[14,[-8]]],15,16],[[[8,[],[[1,[-1]],[2,[-2]],[3,[-3]],[4,[-4]],[5,[-5]],[6,[-6]],[7,[-7]]]],-9,[33,[-8]]],[[10,[-5,9]]],[11,12],[11,12],[11,12],[[13,[-5]],11,12],[11,12],[11,12],[[14,[-8]]],15,16],[[[8,[],[[1,[-1]],[2,[-2]],[3,[-3]],[4,[-4]],[5,[-5]],[6,[-6]],[7,[-7]]]],-9,33],[[10,[-2,9]]],[11,12],[11,12],[11,12],[[13,[-5]],11,12],[11,12],[11,12],[[14,[-8]]],15,16],[[[8,[],[[1,[-1]],[2,[-2]],[3,[-3]],[4,[-4]],[5,[-5]],[6,[-6]],[7,[-7]]]],-9,33],[[10,[-1,9]]],[11,12],[11,12],[11,12],[[13,[-5]],11,12],[11,12],[11,12],[[14,[-8]]],15,16],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[35,[-1]],-2,-4,-5],[[10,[-3,9]]],[[14,[36]]],[[16,[37]]],[],[[17,[-3]],11],[[17,[-3]],11]],[[[35,[-1]],-2,-3,-3],[[10,[-3,9]]],[[14,[36]]],[[16,[37]]],[]],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,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[38,38],[39,39],[[[40,[-1]]],[[40,[-1]]],[11,[14,[36]]]],[[[35,[-1]]],[[35,[-1]]],[11,[14,[36]]]],[41,41],[42,42],[43,43],[[-1,-2],24,[],[]],[[-1,-2],24,[],[]],[[-1,-2],24,[],[]],[[-1,-2],24,[],[]],[[-1,-2],24,[],[]],[[-1,-2],24,[],[]],[[-1,-2],24,[],[]],[[[35,[-1]]],-2,[[14,[36]]],[]],[[[44,[37]],[47,[[46,[45]]]],[47,[[46,[48]]]],[49,[37]]],-1,[]],0,[[[35,[-1]],-2,-3,-3],[[10,[24,9]]],[[14,[36]]],[[16,[37]]],[]],[-1,[[35,[-2]]],[],[[14,[36]]]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,24],[25,24],[25,24],[25,24],[25,24],[25,24],[25,24],[25,24],[25,24],[25,24],[[[40,[-1]],[40,[-1]]],50,[51,[14,[36]]]],[[[35,[-1]],[35,[-1]]],50,[51,[14,[36]]]],[-2,-3,[],[[17,[-1]],11],[]],[[38,28],29],[[39,28],29],[[[40,[-1]],28],29,[12,[14,[36]]]],[[52,28],29],[[53,28],29],[[54,28],29],[[[35,[-1]],28],29,[12,[14,[36]]]],[[41,28],29],[[42,28],29],[[43,28],29],[39,38],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[56,[],[[55,[-1]]]]],-2,57,15],[[],25],[[],25],[[],25],[[],25],[[],25],[[],25],[[],25],[[],25],[[],25],[[],25],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[56,[],[[55,[-1]]]]],[[58,[47]]],57],[[[35,[-1]]],-2,[[14,[36]]],[]],0,[[[35,[-1]],-2,-3,-4],[[10,[[24,[-5,-3]],9]]],[[14,[36]]],[[16,[37]]],[],[],[]],[[[35,[-1]],-2,-3],[[10,[[24,[-4,-3]],9]]],[[14,[36]]],[[16,[37]]],[],[]],[[[35,[-1]],-2,[59,[37,37]]],[[10,[-3,9]]],[[14,[36]]],[[16,[37]]],[]],[[[35,[-1]],-2,-3],[[10,[[24,[-4,-3]],9]]],[[14,[36]]],[[16,[37]]],[],[]],[38,[[33,[36]]]],[39,[[33,[36]]]],[[[35,[-1]],-2,[24,[[59,[37,37]],[59,[37,37]]]]],[[10,[-3,9]]],[[14,[36]]],[[16,[37]]],[]],[[[35,[-1]],-2,-3],[[10,[-4,9]]],[[14,[36]]],[[16,[37]]],[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[[[56,[],[[55,[-1]]]]],[[58,[47]]],57],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[35,[-1]],-2,[33,[36]]],[[10,[-3,9]]],[[14,[36]]],[[16,[37]]],[]],[[[35,[-1]],-2,[33,[36]]],[[10,[-3,9]]],[[14,[36]]],[[16,[37]]],[]],[[[35,[-1]],-2,[33,[60]]],[[10,[-3,9]]],[[14,[36]]],[[16,[37]]],[]],[[[35,[-1]],-2,[33,[60]]],[[10,[-3,9]]],[[14,[36]]],[[16,[37]]],[]],[38,[[59,[37,37]]]],[39,[[59,[37,37]]]],[38,[[59,[37,37]]]],[39,[[59,[37,37]]]],[[[56,[],[[55,[-1]]]]],[[58,[61]]],57],0,0,0,0,[[-1,25],[[58,[47]]],15],[[-1,25],[[62,[[58,[[24,[61,47]]]]]]],15],[[-1,25],24,15],[[-1,[63,[61]],[63,[[47,[[47,[64]]]]]],25],24,15],0,0,0,0,0,0,0,0,0,0,0,0,[[[67,[-1,-4,-2,[66,[[65,[-1]]]],-3]],-5,[65,[-1]]],[[10,[24,9]]],68,[[69,[-1]]],[[70,[-1]]],[[71,[-1,-2,-3]]],[[16,[-1]]]],[[71,-2,[47,[-3]],[66,[[65,[-1]]]]],[[10,[[47,[-3]],9]]],68,[[16,[-1]]],[]],[[[72,[-1]],-2,[47,[-3]],[66,[[65,[-1]]]]],[[10,[[47,[-3]],9]]],68,[[16,[-1]]],[]],[-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,[],[]],[[[73,[-1]]],74,68],[[[75,[-1]]],[[75,[-1]]],[11,68]],[[[73,[-1]]],[[73,[-1]]],[11,68]],[[[65,[-1]]],[[65,[-1]]],[11,68]],[[-1,-2],24,[],[]],[[-1,-2],24,[],[]],[[-1,-2],24,[],[]],[[[72,[-1]]],-2,68,[]],[[[44,[-1]],[47,[[46,[45]]]],[46,[45]],[47,[[46,[48]]]],[47,[[46,[48]]]]],[[75,[-1]]],68],[[[75,[-1]]],[[72,[-1]]],68],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,24],[25,24],[25,24],[25,24],[25,24],[25,24],[25,24],[[[67,[-1,-4,-2,[66,[[65,[-1]]]],-3]],-5],[[10,[[67,[-1,-4,-2,76,-3]],9]]],68,[[69,[-1]]],[[70,[-1]]],[[71,[-1,-2,-3]]],[[16,[-1]]]],[[[75,[-1]],28],29,[12,68]],[[[72,[-1]],28],29,[12,68]],[[[73,[-1]],28],29,[12,68]],[[[65,[-1]],28],29,[12,68]],[[[77,[-1,-3,-2]],28],29,[12,68],[12,[69,[-1]]],[12,[78,[-1,-2]]]],[[[67,[-1,-4,-2,-5,-3]],28],29,[12,68],[12,[69,[-1]]],[12,[70,[-1]]],[12,[71,[-1,-2,-3]]],[12,79]],[[[80,[-1,-4,-2,-3]],28],29,[12,68],[12,[69,[-1]]],[12,[70,[-1]]],[12,[71,[-1,-2,-3]]]],[-1,-1,[]],[-1,-1,[]],[[[59,[-1,-1]]],[[73,[-1]]],68],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[],[[77,[-1,-3,-2]]],68,[[69,[-1]]],[[78,[-1,-2]]]],[[[47,[-1]]],[[76,[-1]]],[]],[[[47,[-1]]],[[76,[-1]]],[]],[[[80,[-1,-3,-2,81]],-4,[47,[[59,[-1,-1]]]]],[[10,[[59,[-1,-1]],9]]],82,[[69,[-1]]],[[71,[-1,-2,81]]],[[16,[-1]]]],[[],25],[[],25],[[],25],[[],25],[[],25],[[],25],[[],25],[[-4,-5],[[10,[[80,[-1,-4,-2,-3]],9]]],68,[[69,[-1]]],[[70,[-1]]],[[71,[-1,-2,-3]]],[[16,[-1]]]],[[71,-2],[[10,[[47,[-3]],9]]],68,[[16,[-1]]],[]],[[[72,[-1]],-2],[[10,[[47,[-3]],9]]],68,[[16,[-1]]],[]],[[[77,[-1,-3,-2]]],[],68,[[69,[-1]]],[[78,[-1,-2]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[72,[-1]]],-2,68,[]],[[-4,-5],[[10,[[67,[-1,-4,-2,[66,[[65,[-1]]]],-3]],9]]],68,[[69,[-1]]],[[70,[-1]]],[[71,[-1,-2,-3]]],[[16,[-1]]]],[[[78,[],[[83,[-1]]]],-3,[47,[-1]]],[[10,[[47,[-1]],9]]],[11,12,[13,[[59,[-2,-2]]]],[17,[[59,[-2,-2]]]]],68,[[16,[-2]]]],[[[72,[-1]],-2,[47,[-3]]],[[10,[[47,[-3]],9]]],68,[[16,[-1]]],[]],0,[[[67,[-1,-4,-2,76,-3]],-5],[[10,[[59,[-1,-1]],9]]],68,[[69,[-1]]],[[70,[-1]]],[[71,[-1,-2,-3]]],[[16,[-1]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[[[73,[-1]]],[[33,[-1]]],68],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[66,[-1]]],[[66,[-1]]],11],[81,81],[[[84,[-1,-2,-3]]],[[84,[-1,-2,-3]]],[11,68],[11,[69,[-1]]],[11,[70,[-1]]]],[[-1,-2],24,[],[]],[[-1,-2],24,[],[]],[[-1,-2],24,[],[]],[[],[[24,[[58,[[47,[-1]]]],[85,[-1]],[85,[-1]]]]],68],[[],[[24,[[58,[[47,[37]]]],[85,[37]],[85,[37]]]]]],[[],[[24,[[58,[[47,[86]]]],[85,[86]],[85,[86]]]]]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,24],[25,24],[25,24],[25,24],[25,24],[[87,28],29],[[[66,[-1]],28],29,12],[[[76,[-1]],28],29,12],[[81,28],29],[[[84,[-1,-2,-3]],28],29,68,[[69,[-1]]],[[70,[-1]]]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[],25],[[],25],[[],25],[[],[[24,[[58,[[47,[-1]]]],[85,[-1]],[85,[-1]]]]],[88,89]],[[[84,[-1,-2,81]],[47,[-1]]],-1,82,[[69,[-1]]]],[[],25],[[],25],[[],25],[[],25],[[],25],[[],[[84,[-1,-2,-3]]],68,[[69,[-1]]],[[70,[-1]]]],[[],-1,68],[[],-1,82],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],90],[[],90],[25,-1,[]],[25,-1,[]],[[],25],[[],25],[[],25],[-1,-1,68],[86,86],[37,37],[[],25],[[],25],[[],25],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[91,91],[92,92],[93,93],[[-1,-2],24,[],[]],[[-1,-2],24,[],[]],[[-1,-2],24,[],[]],[[[96,[],[[94,[-1]],[95,[-2]]]],-4,-1,[47,[-2]]],[[10,[-1,9]]],[11,12],[97,12,98],68,[[16,[-3]]]],[[93,-1,-2,[47,[-3]]],[[10,[-2,9]]],[[16,[37]]],[],[]],[93,-1,[]],[[[44,[37]]],-1,[]],[-1,93,[]],[[],91],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[[[96,[],[[94,[-1]],[95,[-2]]]],-4,-1],[[10,[[47,[-2]],9]]],[11,12],[97,12,98],68,[[16,[-3]]]],[[93,-1,-2],[[10,[[47,[-3]],9]]],[[16,[37]]],[],[]],[[-2,-3,63],[[10,[99,9]]],68,[[96,[-1]]],[[16,[-1]]]],[25,24],[25,24],[25,24],[25,24],[25,24],[[[100,[-1,-2]],-3],[[10,[99,9]]],68,[[96,[-1]]],[[16,[-1]]]],[[91,28],29],[[92,28],29],[[93,28],29],[[[99,[-1]],28],29,12],[[[100,[-1,-2]],28],29,[12,68],[12,[96,[-1]]]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[],25],[[],25],[[],25],[[],25],[[],25],[[[96,[],[[94,[-1]],[95,[-2]]]],-4,-1],[[10,[-1,9]]],[11,12],[97,12,98],68,[[16,[-3]]]],[[93,-1,-2],[[10,[-2,9]]],[[16,[37]]],[]],[[[96,[],[[94,[-1]],[95,[-2]]]],-4],[[10,[-1,9]]],[11,12],[97,12,98],68,[[16,[-3]]]],[[93,-1],[[10,[0,9]]],[[16,[37]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[92,-1],[[10,[24,9]]],[[16,[37]]]],[93,-1,[]],[[-2,-3],[[10,[[100,[-1,-2]],9]]],68,[[96,[-1]]],[[16,[-1]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[[[100,[-1,-2]],-3,63],[[10,[24,9]]],68,[[96,[-1]]],[[16,[-1]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,[101,-1,15],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[[[102,[-1,-2]]],[[102,[-1,-2]]],[11,15],[[103,[-1]],11,12,20,11]],[[[104,[-1,-2]]],[[104,[-1,-2]]],[11,15],[[103,[-1]],11,12,20,11]],[[-1,-2],24,[],[]],[[-1,-2],24,[],[]],[[[105,[-1,-2,-3]],-4,[102,[-1,-2]],[30,[-1,-3]]],[[10,[[24,[[19,[-1,-3]],58]],9]]],15,[[103,[-1]],11,12,20],[[8,[-1],[[5,[]],[7,[]]]],11,12,20],16],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,24],[25,24],[25,24],[25,24],[-1,-2,[],[]],[[[102,[-1,-2]],28],29,[12,15],[[103,[-1]],11,12,20,12]],[[[104,[-1,-2]],28],29,[12,15],[[103,[-1]],11,12,20,12]],[[[106,[-1,-2,-3]],28],29,[12,15],[[103,[-1]],11,12,20,12],[[8,[-1],[[5,[]],[7,[]]]],11,12,20,12]],[[[105,[-1,-2,-3]],28],29,[12,15],[[103,[-1]],11,12,20,12],[[8,[-1],[[5,[]],[7,[]]]],11,12,20,12]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[-2,-3,33,25],[[10,[[104,[-1,-2]],9]]],15,[[103,[-1]],11,12,20],16],[[-2,[58,[[104,[-1,-2]]]]],[[102,[-1,-2]]],15,[[103,[-1]],11,12,20]],[[-2,-3,-4],[[10,[[104,[-1,-2]],9]]],15,[[103,[-1]],11,12,20],16,[[109,[],[[107,[[108,[33]]]]]]]],[[[106,[-1,-2,-3]],-4,[102,[-1,-2]]],[[10,[[24,[[26,[-1,-3]],58]],9]]],15,[[103,[-1]],11,12,20],[[8,[-1],[[5,[]],[7,[]]]],11,12,20],16],[110,-2,15,[[101,[-1]]]],[[[103,[],[[111,[-1]],[112,[-2]],[113,[-3]],[114,[-4]],[6,[-5]],[5,[-6]],[7,[-7]],[115,[-9]],[116,[-10]]]],-11,-8,-2],[[10,[[24,[-6,[58,[-4]]]],9]]],117,[[13,[[58,[-3]]]]],[11,12],[],[],[11,12],[[14,[-8]]],15,[[101,[-8]]],[[110,[-8,-7,-9]]],16],[[[106,[-1,-2,-3]],-4,[102,[-1,-2]]],[[10,[[24,[[18,[-1,-3]],58]],9]]],15,[[103,[-1]],11,12,20],[[8,[-1],[[5,[]],[7,[]]]],11,12,20],16],[[],25],[[],25],[[],25],[[],25],[[[104,[-1,-2]]],[],15,[[103,[-1]],11,12,20]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[[-2,-3],[[106,[-1,-2,-3]]],15,[[103,[-1]],11,12,20],[[8,[-1],[[5,[]],[7,[]]]],11,12,20]],[[-2,-3],[[105,[-1,-2,-3]]],15,[[103,[-1]],11,12,20],[[8,[-1],[[5,[]],[7,[]]]],11,12,20]],0,[110],[[[105,[-1,-2,-3]],-4,[102,[-1,-2]],[30,[-1,-3]]],[[10,[[24,[[26,[-1,-3]],58]],9]]],15,[[103,[-1]],11,12,20],[[8,[-1],[[5,[]],[7,[]]]],11,12,20],16],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[103,[],[[111,[-1]],[112,[-2]],[113,[-3]],[114,[-4]],[6,[-5]],[5,[-6]],[7,[-7]],[115,[-9]],[116,[-10]]]],-11,33,25],[[10,[-3,9]]],117,[[13,[[58,[-3]]]]],[11,12],[],[],[11,12],[[14,[-8]]],15,[[101,[-8]]],[[110,[-8,-7,-9]]],16],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[118,[-1,-3,-2]]],[[118,[-1,-3,-2]]],[[101,[36]],11],[[14,[36]],11],[[110,[36,-2,-1]],11]],[[[119,[-1,-3,-2]]],[[119,[-1,-3,-2]]],[[101,[36]],11],[[14,[36]],11],[[110,[36,-2,-1]],11]],[[-1,-2],24,[],[]],[[-1,-2],24,[],[]],[[[119,[-1,-3,-2]]],-4,[[101,[36]]],[[14,[36]]],[[110,[36,-2,-1]]],[]],[[[44,[37]],[47,[[46,[45]]]],[46,[45]],[46,[48]],[24,[120,120,120]],[49,[37]]],-1,[]],[-1,[[119,[-2,-4,-3]]],[],[[101,[36]]],[[14,[36]]],[[110,[36,-3,-2]]]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,24],[25,24],[[[118,[-1,-3,-2]],[118,[-1,-3,-2]]],50,[[101,[36]],51],[[14,[36]],51],[[110,[36,-2,-1]],51]],[[[119,[-1,-3,-2]],[119,[-1,-3,-2]]],50,[[101,[36]],51],[[14,[36]],51],[[110,[36,-2,-1]],51]],[-1,-2,[],[]],[[[118,[-1,-3,-2]],28],29,[[101,[36]],12],[[14,[36]],12],[[110,[36,-2,-1]],12]],[[[119,[-1,-3,-2]],28],29,[[101,[36]],12],[[14,[36]],12],[[110,[36,-2,-1]],12]],[-1,-1,[]],[-1,-1,[]],[[[119,[-1,-3,-2]],-4,36,-5],[[10,[[24,[-6,[58,[-7]]]],9]]],[[101,[36]]],[[14,[36]]],[[110,[36,-2,-1]]],[[16,[37]]],[],[],[]],[[],25],[[],25],[-1,-2,[],[]],[-1,-2,[],[]],[[[118,[-1,-3,-2]],-4],[[10,[-5,9]]],[[101,[36]]],[[14,[36]]],[[110,[36,-2,-1]]],[[16,[37]]],[]],[[[119,[-1,-3,-2]]],-4,[[101,[36]]],[[14,[36]]],[[110,[36,-2,-1]]],[]],[[[118,[-1,-3,-2]]],[[49,[37]]],[[101,[36]]],[[14,[36]]],[[110,[36,-2,-1]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,34,[]],[-1,34,[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[119,[-1,-3,-2]],-4,[33,[37]],25],[[10,[-5,9]]],[[101,[36]]],[[14,[36]]],[[110,[36,-2,-1]]],[[16,[37]]],[]],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[[[121,[-1,-2]],-3],[[10,[9]]],15,[[122,[-1]],11],16],0,[[[121,[-1,-2]]],[[121,[-1,-2]]],[11,15],[[122,[-1]],11,11]],[[-1,-2],24,[],[]],[[[47,[-2]],[33,[123]],[33,[47]]],[[121,[-1,-2]]],15,[[122,[-1]],11]],[25,-1,[]],[25,-1,[]],[25,24],[[[121,[-1,-2]],28],29,[12,15],[[122,[-1]],11,12]],[-1,-1,[]],[[122,-1,-2,25,-3,-3],[[10,[-3,9]]],16,15,[]],[[],25],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,34,[]],[-1,-2,[],[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[124,[-1,-3,-2]]],[[124,[-1,-3,-2]]],[[101,[36]],11],[[14,[36]],11],[[110,[36,-2,-1]],11]],[[[125,[-1,-3,-2]]],[[125,[-1,-3,-2]]],[[101,[36]],11],[[14,[36]],11],[[110,[36,-2,-1]],11]],[[-1,-2],24,[],[]],[[-1,-2],24,[],[]],[[[125,[-1,-3,-2]]],-4,[[101,[36]]],[[14,[36]]],[[110,[36,-2,-1]]],[]],[[[44,[37]],[118,[-1,-3,-2]]],[[124,[-1,-3,-2]]],[[101,[36]]],[[14,[36]]],[[110,[36,-2,-1]]]],[[[124,[-1,-3,-2]]],[[125,[-1,-3,-2]]],[[101,[36]]],[[14,[36]]],[[110,[36,-2,-1]]]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,24],[25,24],[[[124,[-1,-3,-2]],[124,[-1,-3,-2]]],50,[[101,[36]],51],[[14,[36]],51],[[110,[36,-2,-1]],51]],[[[125,[-1,-3,-2]],[125,[-1,-3,-2]]],50,[[101,[36]],51],[[14,[36]],51],[[110,[36,-2,-1]],51]],[-1,-2,[],[]],[[[124,[-1,-3,-2]],28],29,[[101,[36]],12],[[14,[36]],12],[[110,[36,-2,-1]],12]],[[[125,[-1,-3,-2]],28],29,[[101,[36]],12],[[14,[36]],12],[[110,[36,-2,-1]],12]],[-1,-1,[]],[-1,-1,[]],[[[125,[-1,-3,-2]],-4,36,25,-5,-5],[[10,[-5,9]]],[[101,[36]],20],[[14,[36]]],[[110,[36,-2,-1]],20],[[16,[37]]],[]],[[[125,[-1,-3,-2]],-4,36,-5],[[10,[[24,[-6,[58,[[58,[-7]]]]]],9]]],[[101,[36]]],[[14,[36]]],[[110,[36,-2,-1]]],[[16,[37]]],[],[],[]],[[],25],[[],25],[-1,-2,[],[]],[-1,-2,[],[]],[[[125,[-1,-3,-2]]],-4,[[101,[36]]],[[14,[36]]],[[110,[36,-2,-1]]],[]],[[[125,[-1,-3,-2]],-4,[24,[-5,[33,[37]]]],[33,[50]]],[[10,[[24,[-5,-5]],9]]],[[101,[36]]],[[14,[36]]],[[110,[36,-2,-1]]],[[16,[37]]],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,34,[]],[-1,34,[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[125,[-1,-3,-2]],-4,[33,[37]],25],[[10,[-5,9]]],[[101,[36]]],[[14,[36]]],[[110,[36,-2,-1]]],[[16,[37]]],[]],0,0,0,0,0,[126,127],[128,127],0,[128,127],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[126,126],[[-1,-2],24,[],[]],[[128,-1,60],[[129,[127]]],[[130,[],[[107,[50]]]]]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,24],[25,24],[[126,28],29],[[128,28],29],[-1,-1,[]],[-1,-1,[]],[[126,-1],[[129,[37]]],[[130,[],[[107,[50]]]]]],[[126,-1],[[129,[127]]],[[130,[],[[107,[50]]]]]],[[],25],[[],25],[-1,-2,[],[]],[-1,-2,[],[]],[131,126],[131,128],[[128,-1,60],[[129,[37]]],[[130,[],[[107,[50]]]]]],[-1,-2,[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,34,[]],[-1,34,[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,[[[33,[-1]],[132,[25]]],[[108,[-1,[33,[-1]]]]],133],[[-1,[132,[25]]],-1,133],[[[134,[-1]]],[[134,[-1]]],82],[-1,-2,[],[]],[-1,-2,[],[]],[117,74],[[[108,[-1,-2]]],[[108,[-1,-2]]],[11,68],[11,[135,[-1]]]],[[-1,-2],24,[],[]],0,0,[[-1,25,25],[[58,[64]]],133],[25,-1,[]],[25,-1,[]],[25,24],[[[108,[-1,-2]],28],29,[12,68],[12,[135,[-1]]]],[-1,-1,[]],[61,[[47,[50]]]],[[],25],[[[108,[-1,-2]]],-2,68,[[135,[-1]]]],[-1,-2,[],[]],[[[47,[50]]],61],[[[137,[],[[136,[-1]]]],-3,[46,[45]],[33,[-2]]],[[10,[-1,9]]],[[117,[-2]]],68,[[16,[-2]]]],0,[[[108,[-1,-2]]],25,68,[[135,[-1]]]],[[[134,[-1]],25],[[134,[-1]]],82],[[[134,[-1]],[134,[-1]],[134,[-1]]],[[134,[-1]]],68],[-1,-2,[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,34,[]],[[[59,[-1,-1]],25],[[108,[-1,[59,[-1,-1]]]]],68],[135,[[33,[-1]]],68],[117,[[33,[-1]]],68],[[[108,[-1,[59,[-1,-1]]]]],[[108,[-1,[33,[-1]]]]],68],[-1,-2,[],[]],[[[49,[-1]],-2,[33,[-1]],[132,[25]]],[[10,[[108,[-1,[59,[-1,-1]]]],9]]],133,[[16,[-1]]]],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[138,[-1]]],[[138,[-1]]],11],[139,139],[[-1,-2],24,[],[]],[[-1,-2],24,[],[]],[[[138,[-1]]],-2,68,[]],[[[44,[-1]],[47,[[46,[45]]]]],139,82],[139,[[138,[-1]]],82],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,24],[25,24],[[139,139],50],[[[138,[-1]],28],29,12],[[139,28],29],[-1,-1,[]],[-1,-1,[]],[[],25],[[],25],[-1,-2,[],[]],[-1,-2,[],[]],[[[138,[-1]]],-2,68,[]],[[140,-2,[24,[-3,[33,[-1]]]],[33,[50]]],[[10,[[24,[-3,-3]],9]]],68,[[16,[-1]]],[]],[[[138,[-1]],-2,[24,[-3,[33,[-1]]]],[33,[50]]],[[10,[[24,[-3,-3]],9]]],82,[[16,[-1]]],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,34,[]],[-1,34,[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[141,[-1]]],[[141,[-1]]],[11,133]],[[-1,-2],24,[],[]],[[[44,[-1]],142,[46,[45]]],[[141,[-1]]],133],[[[141,[-1]],[143,[-1]],25,[59,[-1,-1]],50,25,25],[[10,[[144,[-1]],9]]],133],[25,-1,[]],[[[144,[-1]]],[[58,[[59,[-1,-1]]]]],133],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,24],[25,24],[[[141,[-1]],[141,[-1]]],50,[51,133]],[[[144,[-1]],28],29,[12,133]],[[[141,[-1]],28],29,[12,133]],[-1,-1,[]],[-1,-1,[]],[[],25],[[],25],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,34,[]],[-1,34,[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[141,[-1]],[143,[-1]],25,[33,[-1]],50,25,25],[[10,[[144,[-1]],9]]],133],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[49,[-1]]],[[49,[-1]]],[11,133]],[[-1,-2],24,[],[]],[[[44,[-1]],[46,[45]],120],[[49,[-1]]],133],[[[49,[-1]],-2,[59,[-1,-1]],25,50],[[10,[[145,[-1]],9]]],133,[[16,[-1]]]],[[[49,[-1]],-2,[59,[-1,-1]],25],[[10,[24,9]]],133,[[16,[-1]]]],[25,-1,[]],[[[145,[-1]]],[[58,[[59,[-1,-1]]]]],133],[25,-1,[]],[25,-1,[]],[25,-1,[]],[25,24],[25,24],[[[49,[-1]],[49,[-1]]],50,[51,133]],[[[145,[-1]],28],29,[12,133]],[[[49,[-1]],28],29,[12,133]],[-1,-1,[]],[-1,-1,[]],[[],25],[[],25],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,34,[]],[-1,34,[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[49,[-1]],-2,[33,[-1]],25,50],[[10,[[145,[-1]],9]]],133,[[16,[-1]]]],[[[49,[-1]],-2,[33,[-1]],25],[[10,[[59,[-1,-1]],9]]],133,[[16,[-1]]]]],"c":[],"p":[[17,"ScalarVar"],[17,"ScalarFixed"],[17,"ScalarFixedShort"],[17,"Point"],[17,"NonIdentityPoint"],[17,"X"],[17,"FixedPoints"],[10,"EccInstructions",5],[6,"Error",1164],[6,"Result",1165],[10,"Clone",1166],[10,"Debug",1167],[10,"From",1168],[10,"FixedPoints",5],[10,"CurveAffine",1169],[10,"Layouter",1170],[10,"Into",1168],[5,"NonIdentityPoint",5],[5,"Point",5],[10,"Eq",1171],[5,"FixedPoint",5],[5,"FixedPointBaseField",5],[5,"FixedPointShort",5],[1,"tuple"],[1,"usize"],[5,"X",5],[5,"ScalarVar",5],[5,"Formatter",1167],[8,"Result",1167],[5,"ScalarFixed",5],[5,"ScalarFixedShort",5],[10,"BaseFitsInScalarInstructions",5],[5,"Value",1172],[5,"TypeId",1173],[5,"EccChip",201],[8,"Affine",1174],[8,"Base",1174],[5,"EccPoint",201],[5,"NonIdentityEccPoint",201],[5,"EccConfig",201],[5,"EccScalarFixed",201],[5,"EccScalarFixedShort",201],[6,"ScalarVar",201],[5,"ConstraintSystem",1175],[5,"Advice",1175],[5,"Column",1175],[1,"array"],[5,"Fixed",1175],[5,"LookupRangeCheckConfig",1126],[1,"bool"],[10,"PartialEq",1171],[6,"FullScalar",201],[6,"ShortScalar",201],[6,"BaseFieldElem",201],[17,"FixedScalarKind"],[10,"FixedPoint",201],[10,"FixedScalarKind",201],[5,"Vec",1176],[5,"AssignedCell",1170],[8,"Scalar",1174],[1,"u64"],[6,"Option",1177],[1,"slice"],[1,"u8"],[6,"PaddedWord",410],[5,"Absorbing",546],[5,"Sponge",410],[10,"Field",1178],[10,"Spec",546],[10,"Domain",546],[10,"PoseidonSpongeInstructions",410],[5,"Pow5Chip",410],[5,"StateWord",410],[5,"Cell",1170],[5,"Pow5Config",410],[5,"Squeezing",546],[5,"Word",410],[10,"PoseidonInstructions",410],[10,"SpongeMode",546],[5,"Hash",410],[5,"ConstantLength",546],[10,"PrimeField",1178],[17,"Word"],[5,"Hash",546],[8,"Mds",546],[8,"Base",1179],[5,"P128Pow5T3",546],[10,"FromUniformBytes",1178],[10,"Ord",1171],[5,"String",1180],[5,"BlockWord",654],[5,"Table16Config",654],[5,"Table16Chip",654],[17,"State"],[17,"BlockWord"],[10,"Sha256Instructions",654],[10,"Copy",1181],[10,"Default",1182],[5,"Sha256Digest",654],[5,"Sha256",654],[10,"HashDomains",755],[5,"Message",755],[10,"SinsemillaInstructions",755],[5,"MessagePiece",755],[5,"CommitDomain",755],[5,"HashDomain",755],[17,"Item"],[5,"RangeConstrained",1007],[10,"IntoIterator",1183],[10,"CommitDomains",755],[17,"CellValue"],[17,"Message"],[17,"MessagePiece"],[17,"RunningSum"],[17,"HashDomains"],[17,"CommitDomains"],[10,"Var",1007],[5,"SinsemillaConfig",848],[5,"SinsemillaChip",848],[5,"TableColumn",1175],[5,"MerklePath",893],[10,"MerkleInstructions",893],[1,"u32"],[5,"MerkleConfig",916],[5,"MerkleChip",916],[5,"HashDomain",961],[8,"Point",1174],[5,"CommitDomain",961],[5,"CtOption",1184],[10,"Iterator",1185],[1,"str"],[5,"Range",1186],[10,"PrimeFieldBits",1178],[6,"Expression",1175],[10,"FieldValue",1007],[17,"Var"],[10,"UtilitiesInstructions",1007],[5,"CondSwapChip",1048],[5,"CondSwapConfig",1048],[10,"CondSwapInstructions",1048],[5,"RunningSumConfig",1090],[5,"Selector",1175],[5,"Region",1170],[5,"RunningSum",1090],[5,"RunningSum",1126]],"b":[[573,"impl-Spec%3CFp,+3,+2%3E-for-P128Pow5T3"],[574,"impl-Spec%3CFq,+3,+2%3E-for-P128Pow5T3"],[601,"impl-Spec%3CFq,+3,+2%3E-for-P128Pow5T3"],[602,"impl-Spec%3CFp,+3,+2%3E-for-P128Pow5T3"],[623,"impl-Spec%3CFq,+3,+2%3E-for-P128Pow5T3"],[624,"impl-Spec%3CFp,+3,+2%3E-for-P128Pow5T3"],[626,"impl-Spec%3CFq,+3,+2%3E-for-P128Pow5T3"],[627,"impl-Spec%3CFp,+3,+2%3E-for-P128Pow5T3"],[629,"impl-Spec%3CFq,+3,+2%3E-for-P128Pow5T3"],[630,"impl-Spec%3CFp,+3,+2%3E-for-P128Pow5T3"]]},\ +"halo2_proofs":{"doc":"halo2_proofs","t":"PPPGCNNCNNNNCNNNENNCCNCNNNNRRRTKKRKKTRRTMMMMHHHMNMMHMHMMMMNNMHHMHNNMHHNNMMFFKRKRFFFFRFFFKFNNNNNNNNNNNNNNNNNMNNNMNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOMNNMNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNMNMNNNNNNNNNNNNNNNNNNNNNNNNNCMNNNNNNNNNNNNNNNMNMNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPGKFPKKMNMNMNMMNNNNNNNNNNNMNMNNNNNNNMNNNNNNNNNNNMNNNMNNNNNNNNNNNNNNNPPGEFFPPGPPPFPPPPFPGNNNNNNNNNNNNNNNNNNNNNHNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFPPFGGKFPFPKFPPKRPFFPFGGFFPPFKRFFPPFPPPPPPPRKFFPFPPFFPPPFGPFPPPPFFFPNNNNNNNNNNNNNNNNMNNMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNMNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMNNNNNNNNNNNNNNNNMNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNMNNMNNMNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNOFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKFGFFKFRPRFFFFPKFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNCNNNNMNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFKRRKRRKKRKRRKTTRKNNNMMMNNMNNMMMNNNMNMNMNNMNNMNNNMMMMNMMMMMNNNNMMNMCCCCFFINNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNCCCCFFINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFKRFFKKKKKNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNMNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNMNMMNNNNNNNNNNNNNNNNMNMNNMNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNMNN","n":["Processed","RawBytes","RawBytesUnchecked","SerdeFormat","arithmetic","borrow","borrow_mut","circuit","clone","clone_into","deref","deref_mut","dev","drop","fmt","from","halo2curves","init","into","plonk","poly","to_owned","transcript","try_from","try_into","type_id","vzip","AffineExt","Base","Base","CURVE_ID","CurveAffine","CurveExt","CurveExt","FftGroup","Field","ONE","ScalarExt","ScalarExt","ZERO","a","a","b","b","best_fft","best_multiexp","compute_inner_product","coordinates","cube","double","endo","eval_polynomial","from_xy","g_to_lagrange","hash_to_curve","invert","is_on_curve","is_on_curve","is_zero","is_zero_vartime","jacobian_coordinates","kate_division","lagrange_interpolate","new_jacobian","parallelize","pow","pow_vartime","random","recursive_butterfly_arithmetic","small_multiexp","sqrt","sqrt_alt","sqrt_ratio","square","AssignedCell","Cell","Chip","Config","Layouter","Loaded","NamespacedLayouter","Region","RegionIndex","RegionStart","Root","SimpleFloorPlanner","SimpleTableLayouter","Table","TableLayouter","Value","add","add","add","add","add","add","add","add","add","add","and_then","as_mut","as_ref","assert_if_known","assign_advice","assign_advice_from_constant","assign_advice_from_instance","assign_cell","assign_cell","assign_cell","assign_fixed","assign_region","assign_region","assign_table","assign_table","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","cell","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cloned","cloned","column","config","constrain_constant","constrain_equal","constrain_instance","constrain_instance","copied","copied","copy_advice","cube","default","default_and_assigned","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","double","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","eq","error_if_known_and","evaluate","evaluate","floor_planner","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_iter","get_challenge","get_challenge","get_root","get_root","init","init","init","init","init","init","init","init","init","init","instance_value","into","into","into","into","into","into","into","into","into","into","into_field","invert","known","layouter","loaded","map","mul","mul","mul","mul","mul","mul","mul","mul","mul","mul","name_column","namespace","neg","new","pop_namespace","pop_namespace","push_namespace","push_namespace","region_index","row_offset","square","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","synthesize","to_field","to_owned","to_owned","to_owned","to_owned","to_owned","transpose_array","transpose_vec","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","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unknown","unzip","value","value_field","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","zip","V1","V1Pass","assign_region","assign_table","borrow","borrow","borrow_mut","borrow_mut","constrain_instance","deref","deref","deref_mut","deref_mut","drop","drop","fmt","fmt","from","from","get_challenge","get_root","init","init","into","into","pop_namespace","push_namespace","synthesize","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","Column","RegionColumn","RegionLayouter","RegionShape","Selector","SyncDeps","TableLayouter","assign_advice","assign_advice","assign_advice_from_constant","assign_advice_from_constant","assign_advice_from_instance","assign_advice_from_instance","assign_cell","assign_fixed","assign_fixed","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","columns","constrain_constant","constrain_constant","constrain_equal","constrain_equal","deref","deref","deref_mut","deref_mut","drop","drop","enable_selector","enable_selector","eq","fmt","fmt","from","from","from","from","hash","init","init","instance_value","instance_value","into","into","name_column","name_column","new","partial_cmp","region_index","row_count","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","Assigned","CellNotAssigned","CellValue","CircuitCost","CircuitGates","CircuitLayout","ConstraintNotSatisfied","ConstraintPoisoned","FailureLocation","InRegion","InstanceCellNotAssigned","Lookup","MockProver","OutsideRegion","Permutation","Poison","Shuffle","TracingFloorPlanner","Unassigned","VerifyFailure","advice_values","annotate_column","assert_satisfied","assert_satisfied_at_rows_par","assert_satisfied_par","assign_advice","assign_fixed","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","circuit_dot_graph","clone","clone","clone_into","clone_into","collect","copy","cost","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","enable_selector","enter_region","eq","eq","eq","exit_region","fill_from_row","fixed","fixed_values","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","get_challenge","init","init","init","init","init","init","init","into","into","into","into","into","into","into","mark_equality_cells","metadata","permutation","pop_namespace","push_namespace","queries_to_csv","query_instance","render","run","show_equality_constraints","show_labels","synthesize","to_owned","to_owned","to_string","to_string","to_string","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","verify","verify_at_rows","verify_at_rows_par","verify_par","view_height","view_width","vzip","vzip","vzip","vzip","vzip","vzip","vzip","offset","region","row","cell_values","column","column","column","constraint","constraint","gate","gate","gate_offset","gate_offset","location","location","location","location","lookup_index","name","name","offset","region","region","row","shuffle_index","CircuitCost","MarginalProofSize","ProofSize","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","fmt","fmt","fmt","from","from","from","init","init","init","into","into","into","marginal_proof_size","measure","proof_size","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","Column","Constraint","Gate","Region","VirtualCell","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","cmp","cmp","column_type","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","hash","index","init","init","init","init","init","into","into","into","into","into","partial_cmp","partial_cmp","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","Advice","Advice","Advice","AdviceQuery","Any","Assigned","Assignment","BatchVerifier","BoundsFailure","Challenge","Challenge","Circuit","Column","ColumnNotAssigned","ColumnNotInPermutation","ColumnType","Config","Constant","Constraint","ConstraintSystem","ConstraintSystemFailure","Constraints","Error","Expression","FirstPhase","Fixed","Fixed","Fixed","FixedQuery","FloorPlanner","FloorPlanner","Gate","Instance","Instance","Instance","InstanceQuery","InstanceTooLarge","InvalidInstances","Negated","NotEnoughColumnsForConstants","NotEnoughRowsAvailable","Opening","OverwriteDefault","Params","Phase","PinnedConstraintSystem","PinnedVerificationKey","Product","ProvingKey","Rational","Scaled","SecondPhase","Selector","Selector","Sum","Synthesis","TableColumn","TableError","TableError","ThirdPhase","Transcript","Trivial","UnevenColumnLengths","UsedColumn","VerifyingKey","VirtualCell","VirtualCells","Zero","add","add","add","add","add","add","add","add_assign","add_assign","add_proof","advice","advice_column","advice_column_in","advice_column_phase","advice_in","advice_queries","annotate_column","annotate_lookup_any_column","annotate_lookup_column","assign_advice","assign_fixed","blinding_factors","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","challenge_phase","challenge_usable_after","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","column_index","column_index","column_index","column_type","complex_selector","complexity","compress_selectors","configure","configure_with_params","configure_with_params","constants","constraint_name","copy","create_gate","create_proof","cs","cube","cur","default","default","default","degree","degree","denominator","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","directly_convert_selectors_to_fixed","double","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","enable","enable_constant","enable_equality","enable_selector","enter_region","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","evaluate","evaluate","evaluate_lazy","exit_region","expr","expr","fill_from_row","finalize","fixed_column","fixed_commitments","fixed_queries","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_bytes","from_bytes","gates","general_column_annotations","get_challenge","get_domain","get_vk","hash","hash","hash","hash","hash","hash","hash","hash","hash_into","identifier","index","index","index","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","init","inner","instance_column","instance_queries","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into_iter","invert","is_simple","is_zero_vartime","keygen_pk","keygen_vk","keygen_vk_custom","lookup","lookup_any","lookup_table_column","lookups","minimum_rows","mul","mul","mul","mul","mul","mul","mul_assign","mul_assign","name","neg","neg","neg","new","new","next","num_advice_columns","num_challenges","num_fixed_columns","num_instance_columns","num_selectors","numerator","params","params","partial_cmp","partial_cmp","partial_cmp","permutation","permutation","permutation","phase","phase","phase","pinned","pinned","polynomials","pop_namespace","prev","product","push_namespace","query_advice","query_any","query_cell","query_cell","query_cell","query_cell","query_cell","query_cell","query_cells","query_challenge","query_fixed","query_instance","query_instance","query_selector","read","read","rot","rotation","rotation","rotation","selector","set_minimum_degree","shuffle","shuffles","source","square","square","sub","sub","sub","sub","sub","sub","sub","sub_assign","sub_assign","sum","synthesize","synthesize","to_bytes","to_bytes","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","transcript_repr","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unblinded_advice_column","unblinded_advice_column_in","verify_proof","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","with_selector","without_witnesses","write","write","current_k","Argument","Assembly","VerifyingKey","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","build_ordered_mapping","clone","clone","clone","clone_into","clone_into","clone_into","columns","commitments","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","eq","fmt","fmt","fmt","from","from","from","get_columns","init","init","init","into","into","into","mapping","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","Basis","Coeff","Error","EvaluationDomain","ExtendedLagrangeCoeff","Guard","LagrangeCoeff","MSMAccumulator","OpeningError","Output","PinnedEvaluationDomain","Polynomial","ProverQuery","Rotation","SamplingError","VerificationStrategy","VerifierQuery","add","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","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","coeff_from_vec","coeff_to_extended","commitment","constant_extended","constant_lagrange","cur","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","divide_by_vanishing_poly","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","empty_coeff","empty_extended","empty_lagrange","eq","extended_k","extended_len","extended_to_coeff","finalize","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","get_extended_omega","get_omega","get_omega_inv","get_quotient_poly_degree","index","index","index","index_mut","index_mut","index_mut","init","init","init","init","init","init","init","init","init","init","into","into","into","into","into","into","into","into","into","into","ipa","iter","iter_mut","k","kzg","l_i_range","lagrange_from_vec","lagrange_to_coeff","mul","new","new","new","new","new_commitment","new_msm","next","num_coeffs","pinned","prev","process","rotate","rotate_extended","rotate_omega","sub","sub","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_from","try_from","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","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","Blind","CommitmentScheme","Curve","Guard","MSM","MSM","MSMAccumulator","Params","ParamsProver","ParamsProver","ParamsVerifier","ParamsVerifier","ParamsVerifier","Prover","QUERY_INSTANCE","QUERY_INSTANCE","Scalar","Verifier","add","add_assign","add_assign","add_msm","append_term","bases","borrow","borrow_mut","check","clone","clone_into","commit","commit_lagrange","create_proof","default","deref","deref_mut","downsize","drop","empty_msm","eq","eval","fmt","from","get_g","init","into","k","mul","mul_assign","mul_assign","n","new","new","new","new","new_params","read","read_params","scalars","scale","to_owned","try_from","try_into","type_id","verifier_params","verify_proof","vzip","write","commitment","msm","multiopen","strategy","IPACommitmentScheme","ParamsIPA","ParamsVerifierIPA","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","commit","commit_lagrange","create_proof","deref","deref","deref_mut","deref_mut","downsize","drop","drop","empty_msm","fmt","fmt","from","from","get_g","init","init","into","into","k","n","new","new_params","read","read_params","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","verifier_params","verify_proof","vzip","vzip","write","MSMIPA","add_constant_term","add_msm","add_msm","add_to_g_scalars","add_to_u_scalar","add_to_w_scalar","append_term","bases","borrow","borrow_mut","check","clone","clone_into","deref","deref_mut","drop","eval","fmt","from","init","into","new","scalars","scale","to_owned","try_from","try_into","type_id","vzip","ProverIPA","VerifierIPA","borrow","borrow","borrow_mut","borrow_mut","create_proof","deref","deref","deref_mut","deref_mut","drop","drop","fmt","fmt","from","from","init","init","into","into","new","new","try_from","try_from","try_into","try_into","type_id","type_id","verify_proof","vzip","vzip","Accumulator","AccumulatorStrategy","GuardIPA","SingleStrategy","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","compute_g","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","finalize","finalize","fmt","fmt","fmt","fmt","from","from","from","from","g","init","init","init","init","into","into","into","into","new","new","process","process","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","u_packed","use_challenges","use_g","vzip","vzip","vzip","vzip","commitment","msm","multiopen","strategy","KZGCommitmentScheme","ParamsKZG","ParamsVerifierKZG","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","commit","commit_lagrange","deref","deref","deref_mut","deref_mut","downsize","drop","drop","empty_msm","fmt","fmt","from","from","from_parts","g2","get_g","init","init","into","into","k","n","new","new_params","read","read_custom","read_params","s_g2","setup","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","verifier_params","vzip","vzip","write","write_custom","DualMSM","MSMKZG","add_msm","add_msm","append_term","bases","borrow","borrow","borrow_mut","borrow_mut","check","check","clone","clone","clone_into","clone_into","combine_with_base","default","deref","deref","deref_mut","deref_mut","drop","drop","eval","fmt","fmt","from","from","from","init","init","into","into","new","new","scalars","scale","scale","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","ProverGWC","ProverSHPLONK","VerifierGWC","VerifierSHPLONK","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","create_proof","create_proof","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","fmt","fmt","fmt","fmt","from","from","from","from","init","init","init","init","into","into","into","into","new","new","new","new","new","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","verify_proof","verify_proof","vzip","vzip","vzip","vzip","AccumulatorStrategy","GuardKZG","SingleStrategy","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","finalize","finalize","fmt","fmt","fmt","from","from","from","init","init","init","into","into","into","new","new","new","new","process","process","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","with","Blake2bRead","Blake2bWrite","Challenge255","ChallengeScalar","EncodedChallenge","Input","Keccak256Read","Keccak256Write","Transcript","TranscriptRead","TranscriptReadBuffer","TranscriptWrite","TranscriptWriterBuffer","as_challenge_scalar","borrow","borrow","borrow","borrow","borrow","borrow","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","common_point","common_point","common_point","common_point","common_point","common_scalar","common_scalar","common_scalar","common_scalar","common_scalar","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","drop","drop","finalize","finalize","finalize","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","get_scalar","get_scalar","init","init","init","init","init","init","init","init","init","init","init","init","into","into","into","into","into","into","new","new","read_point","read_point","read_point","read_scalar","read_scalar","read_scalar","squeeze_challenge","squeeze_challenge","squeeze_challenge","squeeze_challenge","squeeze_challenge","squeeze_challenge_scalar","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","translate","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","write_point","write_point","write_point","write_scalar","write_scalar","write_scalar"],"q":[[0,"halo2_proofs"],[27,"halo2_proofs::arithmetic"],[74,"halo2_proofs::circuit"],[341,"halo2_proofs::circuit::floor_planner"],[377,"halo2_proofs::circuit::layouter"],[445,"halo2_proofs::dev"],[608,"halo2_proofs::dev::FailureLocation"],[611,"halo2_proofs::dev::VerifyFailure"],[633,"halo2_proofs::dev::cost"],[678,"halo2_proofs::dev::metadata"],[793,"halo2_proofs::plonk"],[1518,"halo2_proofs::plonk::Error"],[1519,"halo2_proofs::plonk::permutation"],[1576,"halo2_proofs::poly"],[1800,"halo2_proofs::poly::commitment"],[1867,"halo2_proofs::poly::ipa"],[1871,"halo2_proofs::poly::ipa::commitment"],[1918,"halo2_proofs::poly::ipa::msm"],[1948,"halo2_proofs::poly::ipa::multiopen"],[1980,"halo2_proofs::poly::ipa::strategy"],[2053,"halo2_proofs::poly::kzg"],[2057,"halo2_proofs::poly::kzg::commitment"],[2108,"halo2_proofs::poly::kzg::msm"],[2157,"halo2_proofs::poly::kzg::multiopen"],[2222,"halo2_proofs::poly::kzg::strategy"],[2282,"halo2_proofs::transcript"],[2436,"core::fmt"],[2437,"core::fmt"],[2438,"core::any"],[2439,"pasta_curves::arithmetic::curves"],[2440,"subtle"],[2441,"ff"],[2442,"core::cmp"],[2443,"core::ops::arith"],[2444,"alloc::vec"],[2445,"core::ops::function"],[2446,"alloc::boxed"],[2447,"subtle"],[2448,"core::marker"],[2449,"core::marker"],[2450,"core::convert"],[2451,"rand_core"],[2452,"core::ops::arith"],[2453,"core::convert"],[2454,"core::iter::traits::collect"],[2455,"core::ops::arith"],[2456,"core::hash"],[2457,"ff"],[2458,"core::cmp"],[2459,"plotters::drawing::area"],[2460,"plotters::drawing::area"],[2461,"core::ops::range"],[2462,"group::prime"],[2463,"std::collections::hash::map"],[2464,"core::default"],[2465,"std::io::error"],[2466,"std::io::error"],[2467,"core::error"],[2468,"std::io"],[2469,"core::ops::range"],[2470,"halo2curves::pairing"]],"d":["Curve elements are serialized in compressed form. Field …","Curve elements are serialized in uncompressed form. Field …","Serialization is the same as RawBytes, but no checks are …","This enum specifies how various types are serialized and …","This module provides common utilities, traits and …","","","Traits and structs for implementing circuit components.","","","","","Tools for developing circuits.","","","Returns the argument unchanged.","","","Calls U::from(self).","This module provides an implementation of a variant of …","Contains utilities for performing arithmetic over …","","This module contains utilities and traits for dealing with …","","","","","The affine version of the curve","The base field over which this elliptic curve is …","The base field over which this elliptic curve is …","CURVE_ID used for hash-to-curve.","This trait is the affine counterpart to Curve and is used …","This trait is a common interface for dealing with elements …","The projective form of the curve","This represents an element of a group with basic …","This trait represents an element of a field.","The one element of the field, the multiplicative identity.","The scalar field of this elliptic curve.","The scalar field of this elliptic curve.","The zero element of the field, the additive identity.","Returns the curve constant a.","Returns the curve constant $a$.","Returns the curve constant b.","Returns the curve constant $b$.","Performs a radix-$2$ Fast-Fourier Transformation (FFT) on …","Performs a multi-exponentiation operation.","This computes the inner product of two vectors a and b.","Gets the coordinates of this point.","Cubes this element.","Doubles this element.","Apply the curve endomorphism by multiplying the …","This evaluates a provided polynomial (in coefficient form) …","Obtains a point given $(x, y)$, failing if it is not on the","Convert coefficient bases group elements to lagrange basis …","Requests a hasher that accepts messages and returns …","Computes the multiplicative inverse of this element, …","Returns whether or not this element is on the curve; should","Returns whether or not this element is on the curve; should","Returns true iff this element is zero.","Returns true iff this element is zero.","Return the Jacobian coordinates of this point.","Divides polynomial a in X by X - b with no remainder.","Returns coefficients of an n - 1 degree polynomial given a …","Obtains a point given Jacobian coordinates $X : Y : Z$, …","This utility function will parallelize an operation that …","Exponentiates self by exp, where exp is a little-endian …","Exponentiates self by exp, where exp is a little-endian …","Returns an element chosen uniformly at random using a …","This perform recursive butterfly arithmetic","Performs a small multi-exponentiation operation. Uses the …","Returns the square root of the field element, if it is …","Equivalent to Self::sqrt_ratio(self, one()).","Computes:","Squares this element.","An assigned cell.","A pointer to a cell within a circuit.","A chip implements a set of instructions that can be used …","A type that holds the configuration for this chip, and any …","A layout strategy within a circuit. The layouter is …","A type that holds any general chip state that needs to be …","This is a “namespaced” layouter which borrows a …","A region of the circuit in which a Chip can assign cells.","Index of a region in a layouter","Starting row of a region in a layouter","Represents the type of the “root” of this layouter, so …","A simple FloorPlanner that performs minimal optimizations.","A table layouter that can be used to assign values to a …","A lookup table in the circuit.","Helper trait for implementing a custom Layouter.","A value that might exist within a circuit.","","","","","","","","","","","Returns Value::unknown() if the value is Value::unknown(), …","Converts from &mut Value<V> to Value<&mut V>.","Converts from &Value<V> to Value<&V>.","Enforces an assertion on the contained value, if known.","Assign an advice column value (witness).","Assigns a constant value to the column advice at offset …","Assign the value of the instance column’s cell at …","Assigns a fixed value to a table cell.","","Assigns a fixed value to a table cell.","Assign a fixed value.","Assign a region of gates to an absolute row number.","","Assign a table region to an absolute row number.","","","","","","","","","","","","","","","","","","","","","","Returns the cell.","","","","","","","","","","","Maps a Value<&mut V> to a Value<V> by cloning the contents …","Maps a Value<&V> to a Value<V> by cloning the contents of …","The column of this cell.","The chip holds its own configuration.","Constrains a cell to have a constant value.","Constrains two cells to have the same value.","Constrains a Cell to equal an instance column’s row …","","Maps a Value<&V> to a Value<V> by copying the contents of …","Maps a Value<&mut V> to a Value<V> by copying the contents …","Copies the value to a given advice cell and constrains …","Cubes this field element.","","maps from a fixed column to a pair (default value, vector …","","","","","","","","","","","","","","","","","","","","","","","Doubles this field element.","","","","","","","","","","","","","Checks the contained value for an error condition, if …","Evaluates this value directly, performing an unbatched …","Evaluates this assigned cell’s value directly, …","Implementations of common circuit floor planners.","","","","","","","","","","","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.","Takes each element in the Iterator: if it is …","Queries the value of the given challenge.","","Gets the “root” of this assignment, bypassing the …","","","","","","","","","","","","Returns the value of the instance column’s cell at …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns the field element corresponding to this value.","Inverts this assigned value (taking the inverse of zero to …","Constructs a known value.","Implementations of common circuit layouters.","Provides access to general chip state loaded at the …","Maps a Value<V> to Value<W> by applying a function to the …","","","","","","","","","","","Allows the circuit implementor to name/annotate a Column …","Enters into a namespace.","","Returns a new SimpleTableLayouter","Exits out of the existing namespace.","","Creates a new (sub)namespace and enters into it.","","Identifies the region in which this cell resides.","The relative offset of this cell within its region.","Squares this field element.","","","","","","","","","","","","Returns the field element corresponding to this value.","","","","","","Transposes a Value<[V; LEN]> into a [Value<V>; LEN].","Transposes a Value<impl IntoIterator<Item = V>> into a …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Constructs an unwitnessed value.","Unzips a value containing a tuple of two values.","Returns the value of the AssignedCell.","Returns the field element value of the AssignedCell.","","","","","","","","","","","Zips self with another Value.","The version 1 FloorPlanner provided by halo2.","A single pass of the V1 layouter.","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","Concrete column","The virtual column involved in a region. This includes …","Helper trait for implementing a custom Layouter.","The shape of a region. For a region at a certain index, we …","Virtual column representing a (boolean) selector","Intermediate trait requirements for RegionLayouter when …","Helper trait for implementing a custom Layouter.","Assign an advice column value (witness)","","Assigns a constant value to the column advice at offset …","","Assign the value of the instance column’s cell at …","","Assigns a fixed value to a table cell.","Assigns a fixed value","","","","","","","","","","","Get a reference to the set of columns used in a RegionShape…","Constrains a cell to have a constant value.","","Constraint two cells to have the same value.","","","","","","","","Enables a selector at the given offset.","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","Returns the value of the instance column’s cell at …","","Calls U::from(self).","Calls U::from(self).","Allows the circuit implementor to name/annotate a Column …","","Create a new RegionShape for a region at region_index.","","Get the region_index of a RegionShape.","Get the row_count of a RegionShape.","","","","","","","","","","","A cell that has been assigned a value.","A cell used in an active gate was not assigned to.","The value of a particular cell within the circuit.","","A struct for collecting and displaying the gates within a …","Graphical renderer for circuit layouts.","A constraint was not satisfied for a particular row.","A constraint was active on an unusable row, and is likely …","The location within the circuit at which a particular …","A location inside a region.","An instance cell used in an active gate was not assigned …","A lookup input did not exist in its corresponding table.","A test prover for debugging circuits.","A location outside of a region.","A permutation did not preserve the original value of a …","A unique poisoned cell.","A shuffle input did not exist in its corresponding map.","A helper type that augments a FloorPlanner with tracing …","An unassigned cell.","The reasons why a particular circuit is not satisfied.","Return the content of an advice column as assigned by the …","","Panics if the circuit being checked by this MockProver is …","Panics if the circuit being checked by this MockProver is …","Panics if the circuit being checked by this MockProver is …","","","","","","","","","","","","","","","","","Builds a dot graph string representing the given circuit.","","","","","Collects the gates from within the circuit.","","Developer tools for investigating the cost of a circuit.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the list of Fixed Columns used within a MockProver …","Return the content of a fixed column as assigned by the …","","","","","","","","","","","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).","Marks cells involved in equality constraints, in red.","Metadata about circuits.","Returns the permutation argument (Assembly) used within a …","","","Prints the queries in this circuit to a CSV grid.","","Renders the given circuit on the given drawing area.","Runs a synthetic keygen-and-prove operation on the given …","Draws red lines between equality-constrained cells.","Sets the visibility of region labels.","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns Ok(()) if this MockProver is satisfied, or a list …","Returns Ok(()) if this MockProver is satisfied, or a list …","Returns Ok(()) if this MockProver is satisfied, or a list …","Returns Ok(()) if this MockProver is satisfied, or a list …","Sets the view height for this layout, as a number of rows.","Sets the view width for this layout, as a number of …","","","","","","","","The offset (relative to the start of the region) at which …","The region in which the failure occurred.","The circuit row on which the failure occurred.","The values of the virtual cells used by this constraint.","The column in which this cell should be assigned.","The column in which this cell should be assigned.","The column in which this permutation is not satisfied.","The polynomial constraint that is not satisfied.","The polynomial constraint that is not satisfied.","The index of the active gate.","The index of the active gate.","The offset (relative to the start of the region) at which …","The offset (relative to the start of the region) at which …","The location at which this constraint is not satisfied.","The location at which the lookup is not satisfied.","The location at which the lookup is not satisfied.","The location at which the permutation is not satisfied.","The index of the lookup that is not satisfied. These …","The name of the lookup that is not satisfied.","The name of the lookup that is not satisfied.","The offset (relative to the start of the region) at which …","The region in which this cell should be assigned.","The region in which this gate was activated.","The absolute row at which this cell should be assigned.","The index of the lookup that is not satisfied. These …","Measures a circuit to determine its costs, and explain …","The marginal size of a Halo 2 proof, broken down into its …","The size of a Halo 2 proof, broken down into its …","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns the marginal proof size per instance of this …","Measures a circuit with parameter constant k.","Returns the proof size for the given number of instances …","","","","","","","","","","","","","Metadata about a column within a circuit.","Metadata about a configured constraint within a circuit.","Metadata about a configured gate within a circuit.","Metadata about an assigned region within a circuit.","A “virtual cell” is a PLONK cell that has been queried …","","","","","","","","","","","","","","","","","","","","","Return the column type.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","Returns the argument unchanged.","","Returns the argument unchanged.","","","","","Returns the argument unchanged.","","","Return the column index.","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","An advice column","An Advice variant","This is an advice (witness) column queried at a certain …","Query of advice column at a certain relative location","An enum over the Advice, Fixed, Instance structs","A value assigned to a cell within a circuit.","This trait allows a Circuit to direct some backend to …","A verifier that checks multiple proofs in a batch. This …","Out of bounds index passed to a backend","A challenge squeezed from transcript after advice columns …","This is a challenge","This is a trait that circuits provide implementations for …","A column with an index and type","A TableColumn has not been assigned.","The instance sets up a copy constraint involving a column …","A column type","This is a configuration object that stores things like …","This is a constant polynomial","An individual polynomial constraint.","This is a description of the circuit environment, such as …","The constraint system is not satisfied.","A set of polynomial constraints with a common selector.","This is an error that could occur during proving or …","Low-degree expression representing an identity that must …","First phase","A fixed column","A Fixed variant","This is a fixed column queried at a certain relative …","Query of fixed column at a certain relative location","A floor planning strategy for a circuit.","The floor planner used for this circuit. This is an …","Gate","An instance column","An Instance variant","This is an instance (external) column queried at a certain …","Query of instance column at a certain relative location","Instance provided exceeds number of available rows","The provided instances do not match the circuit parameters.","This is a negated polynomial","Circuit synthesis requires global constants, but circuit …","k is too small for the given circuit.","Opening error","Attempt to overwrite a default value","Optional circuit configuration parameters. Requires the …","Phase of advice column","Represents the minimal parameters that determine a …","Minimal representation of a verification key that can be …","This is the product of two polynomials","This is a proving key which allows for the creation of …","A value stored as a fraction to enable batch inversion.","This is a scaled polynomial","Second phase","A selector, representing a fixed boolean value per row of …","This is a virtual selector","This is the sum of two polynomials","This is an error that can occur during synthesis of the …","A fixed column of a lookup table.","This is an error that could occur during table synthesis.","An error relating to a lookup table.","Third phase","Transcript error","A value that does not require inversion to evaluate.","A Table has columns of uneven lengths.","Attempt to assign a used TableColumn","This is a verifying key which allows for the verification …","A “virtual cell” is a PLONK cell that has been queried …","Exposes the “virtual cells” that can be queried while …","The field element zero.","","","","","","","","","","Adds a proof to the batch.","Returns Advice variant in FirstPhase","Allocate a new advice column at FirstPhase","Allocate a new advice column in given phase","Returns phase of advice columns","Returns Advice variant in given Phase","Returns advice queries","Allows the developer to include an annotation for an …","Annotate an Instance column.","Annotate a Lookup column.","Assign an advice column value (witness)","Assign a fixed value","Compute the number of blinding factors necessary to …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns phase of challenges","Requests a challenge that is usable after the given phase.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Column index","Column index","Column index","Type of this column.","Allocate a new complex selector that can appear anywhere …","Approximate the computational complexity of this …","This will compress selectors together depending on their …","The circuit is given an opportunity to describe the exact …","The circuit is given an opportunity to describe the exact …","The circuit is given an opportunity to describe the exact …","Returns constants","Returns the name of the constraint at index …","Assign two cells to have the same value","Creates a new gate.","This creates a proof for the provided circuit when given …","Returns ConstraintSystem","Cubes this element.","Return expression from column at the current row","","","","Compute the degree of this polynomial","Compute the degree of the constraint system (the maximum …","Returns the denominator, if non-trivial.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Does not combine selectors and directly replaces them …","Doubles this element.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Enable this selector at the given offset within the given …","Enables this fixed column to be used for global constant …","Enable the ability to enforce equality over cells in this …","Enables a selector at the given row.","Creates a new region and enters into it.","","","","","","","","","","","","","","Evaluates this assigned value directly, performing an …","Evaluate the polynomial using the provided closures to …","Evaluate the polynomial lazily using the provided closures …","Exits the current region.","Return expression from selector","Return Expression","Fills a fixed column starting from the given row with …","Finalizes the batch and checks its validity.","Allocate a new fixed column","Returns commitments of fixed polynomials","Returns fixed queries","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","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.","Reads a verification key from a slice of bytes using …","Reads a proving key from a slice of bytes using Self::read.","Returns gates","Returns general column annotations","Queries the value of the given challenge.","Get the underlying EvaluationDomain.","Get the underlying VerifyingKey.","","","","","","","","","Hashes a verification key into a transcript.","Identifier for this expression. Expressions with identical …","Index of this column.","Returns index of this selector","Index of this challenge.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns inner column","Allocate a new instance column","Returns instance queries","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","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).","","Inverts this assigned value (taking the inverse of zero to …","Is this selector “simple”? Simple selectors can only …","Returns true iff this element is zero.","Generate a ProvingKey from a VerifyingKey and an instance …","Generate a VerifyingKey from an instance of Circuit. By …","Generate a VerifyingKey from an instance of Circuit.","Add a lookup argument for some input expressions and table …","Add a lookup argument for some input expressions and table …","Allocates a new fixed column that can be used in a lookup …","Returns lookup arguments","Returns the minimum necessary rows that need to exist in …","","","","","","","","","Returns the gate name.","","","","Returns Advice in given Phase","Constructs a new batch verifier.","Return expression from column at the next row","Returns number of advice columns","Returns number of challenges","Returns number of fixed columns","Returns number of instance columns","Returns number of selectors","Returns the numerator.","Returns a reference to the parameters that should be used …","Returns a reference to the parameters that should be used …","","","","Implementation of permutation argument.","Returns permutation argument","Returns VerifyingKey of permutation","Phase of this column","Phase of this advice column","Phase of this challenge.","Obtain a pinned version of this constraint system; a …","Obtains a pinned representation of this verification key …","Returns constraints of this gate","Exits out of the existing namespace.","Return expression from column at the previous row","","Creates a new (sub)namespace and enters into it.","Query an advice column at a relative position","Query an Any column at a relative position","Return expression from cell","Return expression from column at a relative position","","","","","Make side effects","Query a challenge","Query a fixed column at a relative position","Queries the cell of an instance column at a particular …","Query an instance column at a relative position","Query a selector at the current position.","Reads a verification key from a buffer.","Reads a proving key from a buffer. Does so by reading …","Return expression from column at the specified rotation","Rotation of this query","Rotation of this query","Rotation of this query","Allocate a new (simple) selector. Simple selectors cannot …","Sets the minimum degree required by the circuit, which can …","Add a shuffle argument for some input expressions and …","Returns shuffle arguments","","Squares this element.","Square this expression.","","","","","","","","","","","Given the provided cs, synthesize the given circuit.","Given the provided cs, synthesize the circuit. The …","Writes a verifying key to a vector of bytes using …","Writes a proving key to a vector of bytes using Self::write…","","","","","","","","","","","","","","","","","","","","","Returns representative of this VerifyingKey in transcripts","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Allocate a new unblinded advice column at FirstPhase","Allocate a new unblinded advice column in given phase. …","Returns a boolean indicating whether or not the proof is …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Constructs a set of constraints that are controlled by the …","Returns a copy of this circuit with no witness values …","Writes a verifying key to a buffer.","Writes a proving key to a buffer.","The current value of k being used.","A permutation argument.","Struct that accumulates all the necessary data in order to …","The verifying key for a single permutation argument.","","","","","","","Builds the ordered mapping of the cycles. This will only …","","","","","","","Returns columns that participate in the permutation …","Returns commitments of sigma polynomials","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns columns that participate on the permutation …","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns mappings of the copies.","","","","","","","","","","","","","","","","The basis over which a polynomial is described.","The polynomial is defined as coefficients","This is an error that could occur during proving or …","This structure contains precomputed constants and other …","The polynomial is defined as coefficients of Lagrange …","Guards is unfinished verification result. Implement this …","The polynomial is defined as coefficients of Lagrange …","Multi scalar engine which is not evaluated yet.","OpeningProof is not well-formed","The output type of this verification strategy after …","Represents the minimal parameters that determine an …","Represents a univariate polynomial defined over a field …","A polynomial query at a point","Describes the relative rotation of a vector. Negative …","Caller needs to re-sample a point","Trait representing a strategy for verifying Halo 2 proofs.","A polynomial query at a point","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Obtains a polynomial in coefficient form when given a …","This takes us from an n-length coefficient vector into a …","Generic commitment scheme structures","Returns a constant polynomial in the extended Lagrange …","Returns a constant polynomial in the Lagrange coefficient …","The current location in the evaluation domain","","","","","","","","","","","","","","","","","","","","","","","This divides the polynomial (in the extended domain) by …","","","","","","","","","","","Returns an empty (zero) polynomial in the coefficient basis","Returns an empty (zero) polynomial in the extended …","Returns an empty (zero) polynomial in the Lagrange …","","Get the size of the extended domain","Get the size of the extended domain","This takes us from the extended evaluation domain and gets …","Finalizes the batch and checks its validity.","","","","","","","","","","","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.","Get the generator of the extended domain’s …","Get $\\\\omega$, the generator of the $2^k$ order …","Get $\\\\omega^{-1}$, the inverse of the generator of the …","Gets the quotient polynomial’s degree (as a multiple of …","","","","","","","","","","","","","","","","","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).","Inner product argument commitment scheme","Iterate over the values, which are either in coefficient …","Iterate over the values mutably, which are either in …","Get the size of the domain","KZG commitment scheme","Computes evaluations (at the point x, where xn = x^n) of …","Obtains a polynomial in Lagrange form when given a vector …","This takes us from an n-length vector into the coefficient …","","Creates new verification strategy instance","This constructs a new evaluation domain object based on …","Create a new prover query based on a polynomial","Create a new verifier query based on a commitment","Create a new verifier query based on a commitment","Create a new verifier query based on a linear combination …","The next location in the evaluation domain","Gets the size of this polynomial in terms of the number of …","Obtain a pinned version of this evaluation domain; a …","The previous location in the evaluation domain","Obtains an MSM from the verifier strategy and yields back …","Rotates the values in a Lagrange basis polynomial by …","Rotate the extended domain polynomial over the original …","Multiplies a value by some power of $\\\\omega$, essentially …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Wrapper type around a blinding factor.","Defines components of a commitment scheme.","Elliptic curve used to commit the application and witnesses","Unfinalized verification result. This is returned in …","Multi scalar multiplication engine","Multi scalar multiplication engine","Accumulator fot comressed verification","Parameters for circuit sysnthesis and prover parameters.","Parameters for circuit sysnthesis and prover parameters.","Constant prover parameters","Verifier specific functionality with circuit constraints","Constant verifier parameters","Constant verifier parameters.","Common multi-open prover interface for various commitment …","Query instance or not","Query instance or not","Application field of this commitment scheme","Common multi-open verifier interface for various …","","","","Add another multiexp into this one","Add arbitrary term (the scalar and the point)","Return base points","","","Perform multiexp and check that it results in zero","","","This computes a commitment to a polynomial described by …","This commits to a polynomial using its evaluations over …","Create a multi-opening proof","","","","Downsize Params with smaller k.","","Generates an empty multiscalar multiplication struct using …","","Perform multiexp and return the result","","Returns the argument unchanged.","Getter for g generators","","Calls U::from(self).","Logaritmic size of the circuit","","","","Size of the circuit","Returns new instance of parameters","Creates new prover instance","Creates new verifier instance","Given rng creates new blinding scalar","Wrapper for parameter generator","Reads params from a buffer.","Wrapper for parameter reader","Scalars","Scale all scalars in the MSM by some scaling factor","","","","","Returns verification parameters.","Process the proof and returns unfinished result named Guard","","Writes params to a buffer.","This module contains an implementation of the polynomial …","Multiscalar multiplication engines","IPA multi-open scheme This module contains an optimisation …","Strategies used with KZG scheme","Concrete IPA commitment scheme","Public parameters for IPA commitment scheme","Verifier parameters","","","","","","","This computes a commitment to a polynomial described by …","This commits to a polynomial using its evaluations over …","Create a polynomial commitment opening proof for the …","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self).","Calls U::from(self).","","","Initializes parameters for the curve, given a random …","","Reads params from a buffer.","","","","","","","","","","Checks to see if the proof represented within transcript …","","","Writes params to a buffer.","A multiscalar multiplication in the polynomial commitment …","Add a value to the first entry of g_scalars.","Add another multiexp into this one","Add another multiexp into this one","Add a vector of scalars to g_scalars. This function will …","Add to u_scalar","Add to w_scalar","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","Given verifier parameters Creates an empty multi scalar …","","","","","","","","IPA multi-open prover","IPA multi-open verifier","","","","","Create a multi-opening proof","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","An accumulator instance consisting of an evaluation claim …","A verifier that checks multiple proofs in a batch.","Wrapper for verification accumulator","A verifier that checks single proof","","","","","","","","","","","","","Computes G = ⟨s, params.g⟩","","","","","","","","","","","","","Finalizes the batch and checks its validity.","Finalizes the batch and checks its validity.","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","The claimed output of the linear-time polycommit opening …","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","A vector of challenges u_0, …, u_{k - 1} sampled by the …","Lets caller supply the challenges and obtain an MSM with …","Lets caller supply the purported G point and simply appends","","","","","KZG commitment scheme","Multiscalar multiplication engines","KZG multi-open scheme","Strategies used with KZG scheme","Umbrella commitment scheme construction for all KZG …","These are the public parameters for the polynomial …","KZG multi-open verification parameters","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Initializes parameters for the curve through existing …","Returns gernerator on G2","","","","Calls U::from(self).","Calls U::from(self).","","","","","Reads params from a buffer.","Reads params from a buffer.","","Returns first power of secret on G2","Initializes parameters for the curve, draws toxic secret …","","","","","","","","","","","Writes params to a buffer.","Writes parameters to buffer","Two channel MSM accumulator","A multiscalar multiplication in the polynomial commitment …","","Add another multiexp into this one","","","","","","","","Performs final pairing check with given verifier params …","","","","","Prepares all scalars in the MSM to linear combination","","","","","","","","","","","Returns the argument unchanged.","","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","Create an empty MSM instance","Create a new two channel MSM accumulator instance","","","Scale all scalars in the MSM by some scaling factor","","","","","","","","","","","Concrete KZG prover with GWC variant","Concrete KZG prover with SHPLONK variant","Concrete KZG verifier with GWC variant","Concrete KZG multiopen verifier with SHPLONK variant","","","","","","","","","Create a multi-opening proof","Create a multi-opening proof","","","","","","","","","","","","","","","","","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).","","","Given parameters creates new prover instance","","","","","","","","","","","","","","","","Verify a multi-opening proof","","","","","A verifier that checks multiple proofs in a batch","Wrapper for linear verification accumulator","A verifier that checks a single proof","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Constructs an empty batch verifier","","Constructs an empty batch verifier","","","","","","","","","","","","","","","","","","","Constructs and initialized new batch verifier","We will replace BLAKE2b with an algebraic hash function in …","We will replace BLAKE2b with an algebraic hash function in …","A 255-bit challenge.","The scalar representation of a verifier challenge.","EncodedChallenge<C> defines a challenge encoding with a …","The Input type used to derive the challenge encoding. For …","Keccak256 hash function reader for EVM compatibility","Keccak256 hash function writer for EVM compatibility","Generic transcript view (from either the prover or verifier…","Transcript view from the perspective of a verifier that …","Initializes transcript at verifier side.","Transcript view from the perspective of a prover that has …","Manages beginning and finishing of transcript pipeline.","Cast an encoded challenge as a typed ChallengeScalar.","","","","","","","","","","","","","","","","","","","","","","","","","Writing the point to the transcript without writing it to …","","","","","Writing the scalar to the transcript without writing it to …","","","","","","","","","","","","","","","","","","","","","","","","","Conclude the interaction and return the output buffer …","","Conclude the interaction and return the output buffer …","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Get a scalar field element from an encoded challenge.","","Initialize a transcript given an input buffer.","Initialize a transcript given an output buffer.","","Initialize a transcript given an input buffer.","Initialize a transcript given an input buffer.","","","Initialize a transcript given an output buffer.","Initialize a transcript given an output buffer.","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Get an encoded challenge from a given input challenge.","","Read a curve point from the prover.","","","Read a curve scalar from the prover.","","","Squeeze an encoded verifier challenge from the transcript.","","","","","Squeeze a typed challenge (in the scalar field) from the …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Write a curve point to the proof and the transcript.","","","Write a scalar to the proof and the transcript.","",""],"i":[1,1,1,0,0,1,1,0,1,1,1,1,0,1,1,1,0,1,1,0,0,1,0,1,1,1,1,21,21,12,21,0,0,12,0,0,10,21,12,10,21,12,21,12,0,0,0,12,10,10,21,0,12,0,21,10,21,12,10,10,21,0,0,21,0,10,10,10,0,0,10,10,10,10,0,0,0,65,0,65,0,0,0,0,58,0,0,0,0,0,38,38,38,38,38,38,38,38,38,38,38,38,38,38,42,42,42,51,53,55,42,58,59,58,59,53,38,69,61,62,60,45,42,55,59,53,38,69,61,62,60,45,42,55,59,45,38,61,62,60,45,38,61,62,60,45,38,38,60,65,42,42,58,59,38,38,45,38,38,53,53,38,69,61,61,62,62,60,45,42,55,59,53,38,69,61,62,60,45,42,55,59,38,53,38,69,61,62,60,45,42,55,59,59,62,38,38,45,0,53,38,69,61,62,60,45,42,55,59,53,38,38,69,61,61,62,62,60,45,42,42,55,55,59,38,58,59,58,59,53,38,69,61,62,60,45,42,55,59,42,53,38,69,61,62,60,45,42,55,59,38,38,38,0,65,38,38,38,38,38,38,38,38,38,38,38,42,58,38,53,58,59,58,59,60,60,38,38,38,38,38,38,38,38,38,38,38,69,38,38,61,62,60,45,38,38,53,38,69,61,62,60,45,42,55,59,53,38,69,61,62,60,45,42,55,59,53,38,69,61,62,60,45,42,55,59,38,38,45,45,53,38,69,61,62,60,45,42,55,59,38,0,0,80,80,81,80,81,80,80,81,80,81,80,81,80,81,80,81,80,80,80,81,80,81,80,80,80,81,81,80,81,80,81,80,81,80,83,0,0,0,83,0,0,70,82,70,82,70,82,51,70,82,82,83,82,83,82,83,82,83,83,82,70,82,70,82,82,83,82,83,82,83,70,82,83,82,83,82,83,83,83,83,82,83,70,82,82,83,70,82,82,83,82,82,82,83,82,83,82,83,82,83,82,83,89,95,0,0,0,0,95,95,0,92,95,95,0,92,95,89,95,0,89,0,88,88,88,88,88,88,88,92,95,93,98,94,89,88,92,95,93,98,94,89,88,0,92,89,92,89,93,88,0,94,92,95,93,98,94,89,88,92,95,93,98,94,89,88,92,95,93,98,94,89,88,88,88,92,95,89,88,88,88,88,92,92,95,95,93,93,98,94,89,88,92,95,93,98,94,89,88,88,92,95,93,98,94,89,88,92,95,93,98,94,89,88,94,0,88,88,88,93,88,94,88,94,94,98,92,89,92,95,93,92,95,93,98,94,89,88,92,95,93,98,94,89,88,92,95,93,98,94,89,88,88,88,88,88,94,94,92,95,93,98,94,89,88,214,214,215,216,217,218,219,216,220,217,218,217,218,216,221,222,219,221,221,222,217,217,218,218,222,0,0,0,106,108,109,106,108,109,106,108,109,106,108,109,106,108,109,106,108,109,106,108,109,106,108,109,106,108,109,106,106,106,106,108,109,106,108,109,106,108,109,106,108,109,0,0,0,0,0,110,114,111,112,113,110,114,111,112,113,110,111,112,113,110,111,112,113,110,114,110,110,114,111,112,113,110,114,111,112,113,110,114,111,112,113,110,114,111,112,113,110,110,114,114,111,111,112,112,113,113,110,110,110,114,114,114,114,111,111,112,112,113,113,113,113,113,110,110,110,114,111,112,113,110,114,111,112,113,110,114,110,111,112,113,110,114,111,112,113,110,114,111,112,113,110,114,111,112,113,110,114,111,112,113,110,114,111,112,113,0,73,118,0,0,0,0,0,46,0,118,0,0,142,46,0,78,118,0,0,46,0,0,0,0,0,73,118,0,0,78,0,0,73,118,0,46,46,118,46,46,46,142,78,0,0,0,118,0,39,118,0,0,118,118,46,0,0,46,0,46,39,142,142,0,0,0,39,39,39,39,39,39,39,118,39,39,119,73,121,121,121,73,121,54,121,121,54,54,121,137,39,44,138,139,140,43,56,50,73,86,125,126,127,52,72,118,116,131,141,128,121,132,46,142,119,129,143,130,137,39,44,138,139,140,43,56,50,73,86,125,126,127,52,72,118,116,131,141,128,121,132,46,142,119,129,143,130,121,121,39,44,43,56,50,73,86,125,126,127,52,72,118,116,128,121,129,130,39,44,43,56,50,73,86,125,126,127,52,72,118,116,128,121,129,130,44,73,52,125,126,127,44,121,118,121,78,78,78,121,128,54,121,0,129,39,44,43,121,119,118,121,39,137,39,44,138,139,140,43,56,50,73,86,125,126,127,52,72,118,116,131,141,128,121,132,46,142,119,129,143,130,137,39,44,138,139,140,43,56,50,73,86,125,126,127,52,72,118,116,131,141,128,121,132,46,142,119,129,143,130,121,39,137,39,44,138,139,140,43,56,50,73,86,125,126,127,52,72,118,116,131,141,128,121,132,46,142,119,129,143,130,86,121,121,54,54,39,44,43,56,50,73,86,125,126,127,52,72,118,39,118,118,54,86,72,54,119,121,129,121,137,39,44,138,139,140,43,56,50,73,86,125,126,127,52,72,118,116,131,141,128,121,132,46,46,142,142,119,129,143,130,137,39,39,39,39,39,44,44,44,44,138,139,140,43,56,50,73,73,73,73,86,125,126,127,52,72,118,116,116,131,131,131,141,128,121,132,46,46,142,119,129,143,130,129,130,121,121,54,129,130,44,43,56,50,73,86,52,72,129,118,44,86,72,137,39,44,138,139,140,43,56,50,73,86,125,126,127,52,72,118,116,131,141,128,121,132,46,142,119,129,143,130,52,121,121,137,39,44,138,139,140,43,56,50,73,86,125,126,127,52,72,118,116,131,141,128,121,132,46,142,119,129,143,130,141,39,86,39,0,0,0,121,121,121,121,121,39,39,39,39,118,118,39,39,128,39,39,118,43,119,44,121,121,121,121,121,39,78,78,44,73,52,0,121,129,43,126,72,121,129,128,54,44,118,54,132,132,124,44,43,56,50,73,118,132,132,54,132,132,129,130,44,125,126,127,121,121,121,121,46,39,118,39,39,39,39,39,39,118,39,39,118,99,78,129,130,39,44,43,56,50,73,86,125,126,127,52,72,118,116,128,121,129,130,46,142,129,137,39,44,44,44,44,138,139,140,43,56,50,73,86,125,126,127,52,72,118,116,131,141,128,121,132,46,142,119,129,143,130,137,39,44,138,139,140,43,56,50,73,86,125,126,127,52,72,118,116,131,141,128,121,132,46,142,119,129,143,130,137,39,44,138,139,140,43,56,50,73,86,125,126,127,52,72,118,116,131,141,128,121,132,46,142,119,129,143,130,121,121,0,137,39,44,138,139,140,43,56,50,73,86,125,126,127,52,72,118,116,131,141,128,121,132,46,142,119,129,143,130,141,78,129,130,223,0,0,0,100,152,153,100,152,153,100,100,152,153,100,152,153,100,153,100,152,153,100,152,153,100,152,153,100,100,152,153,100,152,153,152,100,152,153,100,152,153,100,100,152,153,100,152,153,100,152,153,100,152,153,100,152,153,0,0,0,0,0,0,0,182,171,158,0,0,0,0,171,0,0,162,146,170,164,165,171,167,168,169,162,123,146,170,164,165,171,167,168,169,162,123,146,164,165,167,168,169,162,123,146,164,165,167,168,169,162,123,146,146,0,146,146,123,146,170,164,165,171,167,168,169,162,162,123,146,170,164,165,171,167,168,169,162,162,123,146,146,170,164,165,171,167,168,169,162,123,146,146,146,123,146,146,146,158,146,170,164,165,171,167,168,169,162,123,146,170,164,165,171,167,168,169,162,123,146,146,146,146,162,162,162,162,162,162,146,170,164,165,171,167,168,169,162,123,146,170,164,165,171,167,168,169,162,123,0,162,162,146,0,146,146,146,162,158,146,164,165,165,165,123,162,146,123,158,162,146,146,162,162,146,164,165,167,168,169,162,123,146,170,164,165,171,167,168,169,162,123,146,170,164,165,171,167,168,169,162,123,146,170,164,165,171,167,168,169,162,123,146,170,164,165,171,167,168,169,162,123,0,0,156,157,0,149,157,0,0,156,0,156,176,0,179,157,156,0,174,174,174,166,166,166,174,174,166,174,174,176,149,179,174,174,174,149,174,149,174,166,174,174,176,174,174,149,174,174,174,149,176,179,157,174,156,149,156,166,166,174,174,174,174,176,157,174,149,0,0,0,0,0,0,0,183,185,183,185,183,183,183,183,0,183,185,183,185,183,183,185,183,183,185,183,185,183,183,185,183,185,183,183,183,185,183,185,183,183,185,183,185,183,185,183,0,183,185,183,0,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,0,0,187,188,187,188,187,187,188,187,188,187,188,187,188,187,188,187,188,187,188,187,188,187,188,187,188,187,188,188,187,188,0,0,0,0,186,189,190,191,186,189,190,191,186,189,186,189,186,186,189,190,191,186,189,190,191,186,189,190,191,190,191,186,189,190,191,186,189,190,191,189,186,189,190,191,186,189,190,191,190,191,190,191,186,189,186,189,190,191,186,189,190,191,186,189,190,191,189,186,186,186,189,190,191,0,0,0,0,0,0,0,192,195,192,195,192,192,192,192,192,195,192,195,192,192,195,192,192,195,192,195,192,192,192,192,195,192,195,192,192,192,195,192,192,195,192,192,192,192,195,192,195,192,195,192,192,195,192,192,0,0,194,196,194,194,194,196,194,196,194,196,194,196,194,196,194,194,194,196,194,196,194,196,194,194,196,194,196,196,194,196,194,196,194,196,194,194,196,194,196,194,196,194,196,194,196,194,196,0,0,0,0,198,200,199,201,198,200,199,201,198,199,198,200,199,201,198,200,199,201,198,200,199,201,198,200,199,201,198,200,199,201,198,200,199,201,198,200,199,201,198,200,199,199,201,198,200,199,201,198,200,199,201,198,200,199,201,200,201,198,200,199,201,0,0,0,202,203,204,202,203,204,202,203,204,202,203,204,202,203,204,202,203,204,202,203,204,203,204,202,203,204,202,203,204,202,203,204,202,203,204,203,203,204,204,203,204,202,203,204,202,203,204,202,203,204,202,203,204,202,203,204,203,0,0,0,0,0,133,0,0,0,0,0,0,0,133,207,208,209,210,206,211,207,208,209,210,206,211,207,208,209,210,206,211,207,208,209,210,206,211,148,207,208,209,210,148,207,208,209,210,207,208,209,210,206,206,211,211,207,208,209,210,206,211,207,208,209,210,206,211,212,209,210,207,208,209,210,206,211,207,208,209,210,206,211,133,211,213,212,207,207,208,208,209,209,210,210,206,211,207,208,209,210,206,211,133,211,159,207,208,159,207,208,148,207,208,209,210,148,207,208,209,210,206,211,206,207,208,209,210,206,211,207,208,209,210,206,211,207,208,209,210,206,211,207,208,209,210,206,211,134,209,210,134,209,210],"f":[0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],0,[1,1],[[-1,-2],2,[],[]],[3,-1,[]],[3,-1,[]],0,[3,2],[[1,4],5],[-1,-1,[]],0,[[],3],[-1,-2,[],[]],0,0,[-1,-2,[],[]],0,[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,[[],-1,[]],[[],-1,[]],[[],-1,[]],[[],-1,[]],[[[8,[-2]],-1,9],2,10,[[11,[-1]]]],[[8,[8,[-1]]],[],12],[[[8,[-1]],[8,[-1]]],-1,10],[[[12,[],[[13,[-1]],[14,[-2]],[15,[-3]]]]],[[17,[[16,[[12,[],[[13,[-1]],[14,[-2]],[15,[-3]]]]]]]]],[18,19],[18,19],[[21,[],[[20,[[12,[],[[13,[-1]],[14,[-2]],[15,[-3]]]]]],[13,[-1]]]]]],[10,10],[10,10],[[[21,[],[[13,[-1]],[14,[-2]],[20,[-3]]]]],[[21,[],[[13,[-1]],[14,[-2]],[20,[-3]]]]],18,18,[[12,[],[[15,[[21,[],[[13,[-1]],[14,[-2]],[20,[-3]]]]]],[13,[-1]],[22,[[21,[],[[13,[-1]],[14,[-2]],[20,[-3]]]]]],[22,[[21,[],[[13,[-1]],[14,[-2]],[20,[-3]]]]]]]],[23,[-1]],[23,[-1]]]],[[[8,[-1]],-1],-1,10],[[-1,-1],[[17,[[12,[],[[13,[-2]],[14,[-1]],[15,[-3]]]]]]],[18,19],[18,19],[[21,[],[[20,[]],[13,[]]]]]],[[24,9],[[24,[-1]]],12],[25,[[27,[26]]]],[10,[[17,[10]]]],[[[21,[],[[13,[-1]],[14,[-2]],[20,[-3]]]]],28,18,18,[[12,[],[[15,[[21,[],[[13,[-1]],[14,[-2]],[20,[-3]]]]]],[13,[-1]],[22,[[21,[],[[13,[-1]],[14,[-2]],[20,[-3]]]]]],[22,[[21,[],[[13,[-1]],[14,[-2]],[20,[-3]]]]]]]],[23,[-1]],[23,[-1]]]],[[[12,[],[[13,[-1]],[14,[-2]],[15,[-3]]]]],28,[18,19],[18,19],[[21,[],[[20,[[12,[],[[13,[-1]],[14,[-2]],[15,[-3]]]]]],[13,[-1]]]]]],[10,28],[10,29],[[[21,[],[[13,[-1]],[14,[-2]],[20,[-3]]]]],[[2,[-2,-2,-2]]],18,18,[[12,[],[[15,[[21,[],[[13,[-1]],[14,[-2]],[20,[-3]]]]]],[13,[-1]],[22,[[21,[],[[13,[-1]],[14,[-2]],[20,[-3]]]]]],[22,[[21,[],[[13,[-1]],[14,[-2]],[20,[-3]]]]]]]],[23,[-1]],[23,[-1]]]],[[-2,-1],[[24,[-1]]],10,[[31,[],[[30,[-1]]]]]],[[[8,[-1]],[8,[-1]]],[[24,[-1]]],10],[[-1,-1,-1],[[17,[[21,[],[[13,[-2]],[14,[-1]],[20,[-3]]]]]]],18,18,[[12,[],[[15,[]],[13,[]],[22,[]],[22,[]]]],[23,[-2]],[23,[-2]]]],[[[8,[-1]],-2],2,32,[[26,[[8,[-1]],3]],32,33,34]],[[10,-1],10,[[36,[[8,[35]]]]]],[[10,-1],10,[[36,[[8,[35]]]]]],[-1,10,37],[[[8,[-2]],3,3,[8,[-1]]],2,10,[[11,[-1]]]],[[8,[8,[-1]]],[],12],[10,[[17,[10]]]],[10,[[2,[28,10]]]],[[10,10],[[2,[28,10]]]],[10,10],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[38,[-1]],[38,[-1]]],-2,[],[]],[[[38,[-1]],[38,[-1]]],-2,[],[]],[[[38,[[39,[-1]]]],-1],-2,10,[]],[[[38,[[39,[-1]]]],[38,[-1]]],-2,10,[]],[[[38,[[39,[-1]]]],-1],-2,10,[]],[[[38,[-1]],[38,[-1]]],-3,[],[],[]],[[[38,[-1]],[38,[-1]]],-3,[],[],[]],[[[38,[[39,[-1]]]],[38,[-1]]],-2,10,[]],[[[38,[-2]],[38,[-2]]],-3,[],[[40,[],[[22,[-1]]]]],[]],[[[38,[-1]],[38,[-1]]],-2,[],[]],[[[38,[-1]],-3],[[38,[-2]]],[],[],[[41,[-1],[[22,[[38,[-2]]]]]]]],[[[38,[-1]]],[[38,[-1]]],[]],[[[38,[-1]]],[[38,[-1]]],[]],[[[38,[-1]],-2],2,[],[[41,[-1],[[22,[29]]]]]],[[[42,[-1]],-3,[44,[43]],3,-5],[[6,[[45,[-4,-1]],46]]],10,[[48,[47]]],[[26,[],[[22,[-2]]]]],[],[[49,[],[[22,[[38,[-4]]]]]]]],[[[42,[-1]],-3,[44,[43]],3,-4],[[6,[[45,[-4,-1]],46]]],10,[[48,[47]]],[[26,[],[[22,[-2]]]]],[]],[[[42,[-1]],-3,[44,[50]],3,[44,[43]],3],[[6,[[45,[-1,-1]],46]]],10,[[48,[47]]],[[26,[],[[22,[-2]]]]]],[[51,26,52,3,49],[[6,[2,46]]]],[[[53,[-1,-2]],26,52,3,49],[[6,[2,46]]],10,[[54,[-1]]]],[[[55,[-1]],-3,52,3,-5],[[6,[2,46]]],10,[[48,[47]]],[[26,[],[[22,[-2]]]]],[[48,[[39,[-1]]]]],[[49,[],[[22,[[38,[-4]]]]]]]],[[[42,[-1]],-3,[44,[56]],3,-5],[[6,[[45,[-4,-1]],46]]],10,[[48,[47]]],[[26,[],[[22,[-2]]]]],[],[[49,[],[[22,[[38,[-4]]]]]]]],[[[58,[],[[57,[-1]]]],-4,-6],[[6,[-5,46]]],[[58,[-2]]],10,[[48,[47]]],[[26,[],[[22,[-3]]]]],[],[[49,[[42,[-2]]],[[22,[[6,[-5,46]]]]]]]],[[[59,[-1,-2]],-4,-6],[[6,[-5,46]]],10,[[58,[-1]]],[[48,[47]]],[[26,[],[[22,[-3]]]]],[],[[49,[[42,[-1]]],[[22,[[6,[-5,46]]]]]]]],[[[58,[],[[57,[-1]]]],-4,-5],[[6,[2,46]]],[[58,[-2]]],10,[[48,[47]]],[[26,[],[[22,[-3]]]]],[[49,[[55,[-2]]],[[22,[[6,[2,46]]]]]]]],[[[59,[-1,-2]],-4,-5],[[6,[2,46]]],10,[[58,[-1]]],[[48,[47]]],[[26,[],[[22,[-3]]]]],[[49,[[55,[-1]]],[[22,[[6,[2,46]]]]]]]],[-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,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[45,[-1,-2]]],60,[],10],[[[38,[-1]]],[[38,[-1]]],34],[61,61],[62,62],[60,60],[[[45,[-1,-2]]],[[45,[-1,-2]]],34,[34,10]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[[38,[-1]]],[[38,[-1]]],34],[[[38,[-1]]],[[38,[-1]]],34],0,[[[65,[],[[63,[-1]],[64,[-2]]]]],-1,[66,34],[66,34]],[[[42,[-1]],60,-2],[[6,[2,46]]],10,[[48,[[39,[-1]]]]]],[[[42,[-1]],60,60],[[6,[2,46]]],10],[[[58,[],[[57,[-1]]]],60,[44,[50]],3],[[6,[2,46]]],[[58,[-2]]],10],[[[59,[-1,-2]],60,[44,[50]],3],[[6,[2,46]]],10,[[58,[-1]]]],[[[38,[-1]]],[[38,[-1]]],67],[[[38,[-1]]],[[38,[-1]]],67],[[[45,[-1,-2]],-4,[42,[-2]],[44,[43]],3],[[6,[[45,[-1,-2]],46]]],34,10,[[48,[47]]],[[26,[],[[22,[-3]]]]]],[[[38,[-2]]],[[38,[[39,[-1]]]]],10,[[68,[[39,[-1]]]]]],[[],[[38,[-1]]],[]],0,[3,-1,[]],[3,-1,[]],[3,-1,[]],[61,-1,[]],[3,-1,[]],[3,-1,[]],[62,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[[[38,[-2]]],[[38,[[39,[-1]]]]],10,[[68,[[39,[-1]]]]]],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[[[59,[-1,-2]]],2,10,[[58,[-1]]]],[[62,62],29],[[[38,[-1]],-2],[[6,[2,46]]],[],[[41,[-1],[[22,[29]]]]]],[[[38,[[39,[-1]]]]],[[38,[-1]]],10],[[[45,[[39,[-1]],-1]]],[[45,[-1,-1]]],10],0,[[[53,[-1,-2]],4],5,10,[[54,[-1]]]],[[[38,[-1]],4],5,66],[[69,4],5],[[61,4],5],[[62,4],5],[[60,4],5],[[[45,[-1,-2]],4],5,66,[66,10]],[[[42,[-1]],4],5,[66,10]],[[[55,[-1]],4],5,[66,10]],[[[59,[-1,-2]],4],5,[66,10],[66,[58,[-1]]]],[-1,-1,[]],[[[38,[-1]]],[[38,[[39,[-1]]]]],10],[-1,-1,[]],[-1,-1,[]],[3,61],[-1,-1,[]],[3,62],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[70,[[42,[-1]]],10],[-1,-1,[]],[51,[[55,[-1]]],10],[-1,-1,[]],[-1,-1,[]],[-2,[[38,[-3]]],[],[[31,[],[[30,[[38,[-1]]]]]]],[[71,[-1]]]],[[[58,[],[[57,[-1]]]],72],[[38,[-2]]],[[58,[-2]]],10],[[[59,[-1,-2]],72],[[38,[-1]]],10,[[58,[-1]]]],[[[58,[],[[57,[-1]]]]],-1,[[58,[-2]]],10],[[[59,[-1,-2]]],-3,10,[[58,[-1]]],[]],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[[42,[-1]],[44,[50]],3],[[6,[[38,[-1]],46]]],10],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[38,[-2]]],[[38,[[39,[-1]]]]],10,[[48,[[39,[-1]]]]]],[[[38,[-2]]],[[38,[[39,[-1]]]]],10,[[68,[[39,[-1]]]]]],[-1,[[38,[-1]]],[]],0,[[[65,[],[[63,[-1]],[64,[-2]]]]],-2,[66,34],[66,34]],[[[38,[-1]],-3],[[38,[-2]]],[],[],[[41,[-1],[[22,[-2]]]]]],[[[38,[-1]],[38,[-1]]],-2,[],[]],[[[38,[[39,[-1]]]],[38,[-1]]],-2,10,[]],[[[38,[[39,[-1]]]],-1],-2,10,[]],[[[38,[[39,[-1]]]],[38,[-1]]],-2,10,[]],[[[38,[-1]],[38,[-1]]],-2,[],[]],[[[38,[-2]],[38,[-2]]],-3,[],[[23,[],[[22,[-1]]]]],[]],[[[38,[-1]],[38,[-1]]],-3,[],[],[]],[[[38,[[39,[-1]]]],-1],-2,10,[]],[[[38,[-1]],[38,[-1]]],-3,[],[],[]],[[[38,[-1]],[38,[-1]]],-2,[],[]],[[[42,[-1]],-3,-4],2,10,[[48,[47]]],[[26,[],[[22,[-2]]]]],[[48,[[44,[73]]]]]],[[[58,[],[[57,[-1]]]],-4],[[59,[-2,-1]]],[[58,[-2]]],10,[[48,[47]]],[[41,[],[[22,[-3]]]]]],[[[38,[-1]]],-2,74,[]],[[-2,[8,[52]]],[[53,[-1,-2]]],10,[[54,[-1]]]],[[[58,[],[[57,[-1]]]],[75,[47]]],2,[[58,[-2]]],10],[[[59,[-1,-2]],[75,[47]]],2,10,[[58,[-1]]]],[[[58,[],[[57,[-1]]]],-4],2,[[58,[-2]]],10,[[48,[47]]],[[41,[],[[22,[-3]]]]]],[[[59,[-1,-2]],-4],2,10,[[58,[-1]]],[[48,[47]]],[[41,[],[[22,[-3]]]]]],0,0,[[[38,[-2]]],[[38,[[39,[-1]]]]],10,[[68,[[39,[-1]]]]]],[[[38,[[39,[-1]]]],-1],-2,10,[]],[[[38,[-1]],[38,[-1]]],-3,[],[],[]],[[[38,[[39,[-1]]]],-1],-2,10,[]],[[[38,[-1]],[38,[-1]]],-3,[],[],[]],[[[38,[-1]],[38,[-1]]],-2,[],[]],[[[38,[-1]],[38,[-1]]],-2,[],[]],[[[38,[[39,[-1]]]],[38,[-1]]],-2,10,[]],[[[38,[-1]],[38,[-1]]],-2,[],[]],[[[38,[-2]],[38,[-2]]],-3,[],[[76,[],[[22,[-1]]]]],[]],[[[38,[[39,[-1]]]],[38,[-1]]],-2,10,[]],[[-2,-3,[24,[[44,[56]]]]],[[6,[2,46]]],10,[[54,[-1]],77],[[78,[-1]]]],[[[38,[-1]]],[[38,[[39,[-2]]]]],[],10],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[38,[[79,[-1]]]]],[[79,[[38,[-1]]]]],67],[[[38,[-2]],3],[[24,[[38,[-1]]]]],[],[[31,[],[[30,[-1]]]]]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[[],[[38,[-1]]],[]],[[[38,[[2,[-1,-2]]]]],[[2,[[38,[-1]],[38,[-2]]]]],[],[]],[[[45,[-1,-2]]],[[38,[-1]]],[],10],[[[45,[-1,-2]]],[[38,[[39,[-2]]]]],[],10],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[38,[-1]],[38,[-2]]],[[38,[[2,[-1,-2]]]]],[],[]],0,0,[[[80,[-1,-2]],-4,-6],[[6,[-5,46]]],10,[[54,[-1]],77],[[48,[47]]],[[26,[],[[22,[-3]]]]],[],[[49,[[42,[-1]]],[[22,[[6,[-5,46]]]]]]]],[[[80,[-1,-2]],-4,-5],[[6,[2,46]]],10,[[54,[-1]],77],[[48,[47]]],[[26,[],[[22,[-3]]]]],[[49,[[55,[-1]]],[[22,[[6,[2,46]]]]]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[80,[-1,-2]],60,[44,[50]],3],[[6,[2,46]]],10,[[54,[-1]],77]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[[81,4],5],[[[80,[-1,-2]],4],5,[66,10],[66,[54,[-1]]]],[-1,-1,[]],[-1,-1,[]],[[[80,[-1,-2]],72],[[38,[-1]]],10,[[54,[-1]],77]],[[[80,[-1,-2]]],-3,10,[[54,[-1]],77],[]],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[[[80,[-1,-2]],[75,[47]]],2,10,[[54,[-1]],77]],[[[80,[-1,-2]],-4],2,10,[[54,[-1]],77],[[48,[47]]],[[41,[],[[22,[-3]]]]]],[[-2,-3,[24,[[44,[56]]]]],[[6,[2,46]]],10,[[54,[-1]],77],[[78,[-1]]]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,[[70,26,[44,[43]],3,49],[[6,[60,46]]]],[[82,26,[44,[43]],3,49],[[6,[60,46]]]],[[70,26,[44,[43]],3,[39,[-1]]],[[6,[60,46]]],10],[[82,26,[44,[43]],3,[39,[-1]]],[[6,[60,46]]],10],[[70,26,[44,[50]],3,[44,[43]],3],[[6,[[2,[60,[38,[-1]]]],46]]],10],[[82,26,[44,[50]],3,[44,[43]],3],[[6,[[2,[60,[38,[-1]]]],46]]],10],[[51,26,52,3,49],[[6,[2,46]]]],[[70,26,[44,[56]],3,49],[[6,[60,46]]]],[[82,26,[44,[56]],3,49],[[6,[60,46]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[82,82],[83,83],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[83,83],84],[82,[[85,[83]]]],[[70,60,[39,[-1]]],[[6,[2,46]]],10],[[82,60,[39,[-1]]],[[6,[2,46]]],10],[[70,60,60],[[6,[2,46]]]],[[82,60,60],[[6,[2,46]]]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[[70,26,86,3],[[6,[2,46]]]],[[82,26,86,3],[[6,[2,46]]]],[[83,83],29],[[82,4],5],[[83,4],5],[-1,-1,[]],[-1,-1,[]],[86,83],[[[44,[73]]],83],[[83,-1],2,87],[[],3],[[],3],[[70,[44,[50]],3],[[6,[[38,[-1]],46]]],10],[[82,[44,[50]],3],[[6,[[38,[-1]],46]]],10],[-1,-2,[],[]],[-1,-2,[],[]],[[70,26,[44,[73]]],2],[[82,26,[44,[73]]],2],[61,82],[[83,83],[[75,[84]]]],[82,61],[82,3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[88,[-1]],[44,[43]]],[[8,[[89,[-1]]]]],[90,19]],[[[88,[-1]],-3,[44,[73]]],2,10,[[48,[47]]],[[41,[],[[22,[-2]]]]]],[[[88,[-1]]],2,[90,19]],[[[88,[-1]],-2,-2],2,[90,19],[34,[91,[],[[30,[3]]]]]],[[[88,[-1]]],2,[90,19]],[[[88,[-1]],-3,[44,[43]],3,-5],[[6,[2,46]]],10,[[48,[47]]],[[41,[],[[22,[-2]]]]],[[48,[[39,[-1]]]]],[[41,[],[[22,[[38,[-4]]]]]]]],[[[88,[-1]],-3,[44,[56]],3,-5],[[6,[2,46]]],10,[[48,[47]]],[[41,[],[[22,[-2]]]]],[[48,[[39,[-1]]]]],[[41,[],[[22,[[38,[-4]]]]]]]],[-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,[],[]],[-2,47,10,[[78,[-1]]]],[92,92],[[[89,[-1]]],[[89,[-1]]],[34,10]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[],93],[[[88,[-1]],[44,[73]],3,[44,[73]],3],[[6,[2,46]]],10],0,[[],94],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[[[88,[-1]],-3,86,3],[[6,[2,46]]],10,[[48,[47]]],[[41,[],[[22,[-2]]]]]],[[[88,[-1]],-3],2,10,[[48,[47]]],[[41,[],[[22,[-2]]]]]],[[92,92],29],[[95,95],29],[[[89,[-1]],[89,[-1]]],29,[96,10]],[[[88,[-1]]],2,10],[[[88,[-1]],[44,[56]],3,[38,[[39,[-1]]]]],[[6,[2,46]]],10],[[[88,[-1]]],[[24,[[24,[[89,[-1]]]]]]],[90,19]],[[[88,[-1]],[44,[56]]],[[8,[[89,[-1]]]]],[90,19]],[[92,4],5],[[92,4],5],[[95,4],5],[[95,4],5],[[93,4],[[6,[2,97]]]],[[93,4],5],[[[98,[-1]],4],5,[66,99]],[[94,4],5],[[[89,[-1]],4],5,[66,10]],[[[88,[-1]],4],5,[66,10]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[88,[-1]],72],[[38,[-1]]],10],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[94,29],94],0,[[[88,[-1]]],100,[90,19]],[[[88,[-1]],[75,[47]]],2,10],[[[88,[-1]],-3],2,10,[[48,[47]]],[[41,[],[[22,[-2]]]]]],[93,47],[[[88,[-1]],[44,[50]],3],[[6,[[38,[-1]],46]]],10],[[94,9,-2,[102,[-3,101]]],[[6,[2,103]]],10,[[78,[-1]]],104],[[9,-2,[24,[[24,[-1]]]]],[[6,[[88,[-1]],46]]],[90,19],[[78,[-1]]]],[[94,29],94],[[94,29],94],[[-2,-3,[24,[[44,[56]]]]],[[6,[2,46]]],10,[[54,[-1]],77],[[78,[-1]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,47,[]],[-1,47,[]],[-1,47,[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[[[88,[-1]]],[[6,[2,[24,[95]]]]],[90,19]],[[[88,[-1]],-2,-2],[[6,[2,[24,[95]]]]],[90,19],[34,[91,[],[[30,[3]]]]]],[[[88,[-1]],-2,-2],[[6,[2,[24,[95]]]]],[90,19],[34,[91,[],[[30,[3]]]]]],[[[88,[-1]]],[[6,[2,[24,[95]]]]],[90,19]],[[94,[105,[3]]],94],[[94,[105,[3]]],94],[-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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[3,2],[[[106,[-1,-2]],4],5,[66,107],[66,78]],[[[108,[-1]],4],5,[66,107]],[[[109,[-1]],4],5,[66,107]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[],3],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[106,[-1,-2]]],[[108,[-1]]],107,78],[[9,-1],[[106,[-2,-1]]],78,107],[[[106,[-1,-2]],3],[[109,[-1]]],107,78],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[110,110],[111,111],[112,112],[113,113],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[110,110],84],[[114,114],84],[110,73],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[3,2],[3,2],[3,2],[[110,110],29],[[114,114],29],[[111,111],29],[[112,112],29],[[113,113],29],[[110,4],5],[[110,4],5],[[114,4],5],[[114,4],5],[[111,4],5],[[111,4],5],[[112,4],5],[[112,4],5],[[113,4],5],[[113,4],5],[[[44,[73]]],110],[[[2,[73,3]]],110],[-1,-1,[]],[-1,-1,[]],[[[2,[110,115]]],114],[116,114],[[[2,[-1,110,115]]],114,[[36,[25]]]],[-1,-1,[]],[[[2,[3,-1]]],111,[[36,[25]]]],[-1,-1,[]],[[[2,[111,3,-1]]],112,[[36,[25]]]],[[[2,[3,25]]],113],[[[2,[3,47]]],113],[[[2,[3,47,[117,[110,47]]]]],113],[-1,-1,[]],[[[2,[3,25,[117,[110,47]]]]],113],[[110,-1],2,87],[110,3],[[],3],[[],3],[[],3],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[110,110],[[75,[84]]]],[[114,114],[[75,[84]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,47,[]],[-1,47,[]],[-1,47,[]],[-1,47,[]],[-1,47,[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[39,[-1]],[39,[-1]]],[[39,[-1]]],10],[[[39,[-1]],[39,[-1]]],[[39,[-1]]],10],[[[39,[-1]],[39,[-1]]],[[39,[-1]]],10],[[[39,[-1]],-1],[[39,[-1]]],10],[[[39,[-1]],-1],[[39,[-1]]],10],[[[39,[-1]],[39,[-1]]],[[39,[-1]]],10],[[[118,[-1]],[118,[-1]]],[[118,[-1]]],10],[[[39,[-1]],[39,[-1]]],2,10],[[[39,[-1]],[39,[-1]]],2,10],[[[119,[-1]],[24,[[24,[24]]]],[24,[120]]],2,12],[[],73],[[[121,[-1]]],[[44,[43]]],10],[[[121,[-1]],-2],[[44,[43]]],10,122],[[[121,[-1]]],[[24,[120]]],10],[-1,73,122],[[[121,[-1]]],[[24,[[2,[[44,[43]],123]]]]],10],[[54,-2,[44,[73]]],2,[[48,[47]]],[[41,[],[[22,[-1]]]]]],[[[121,[-1]],-2,-4],2,10,[[48,[[44,[73]]]]],[[48,[47]]],[[26,[],[[22,[-3]]]]]],[[[121,[-1]],52,-3],2,10,[[48,[47]]],[[26,[],[[22,[-2]]]]]],[[54,-2,[44,[43]],3,-5],[[6,[2,46]]],[[48,[47]]],[[41,[],[[22,[-1]]]]],10,[[48,[[39,[-3]]]]],[[41,[],[[22,[[38,[-4]]]]]]]],[[54,-2,[44,[56]],3,-5],[[6,[2,46]]],[[48,[47]]],[[41,[],[[22,[-1]]]]],10,[[48,[[39,[-3]]]]],[[41,[],[[22,[[38,[-4]]]]]]]],[[[121,[-1]]],3,10],[-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,[],[]],[-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,[],[]],[-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,[],[]],[-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,[],[]],[[[121,[-1]]],[[24,[120]]],10],[[[121,[-1]],-2],72,10,122],[[[39,[-1]]],[[39,[-1]]],34],[[[44,[-1]]],[[44,[-1]]],[34,124]],[43,43],[56,56],[50,50],[73,73],[86,86],[125,125],[126,126],[127,127],[52,52],[72,72],[[[118,[-1]]],[[118,[-1]]],34],[116,116],[[[128,[-1]]],[[128,[-1]]],[34,10]],[[[121,[-1]]],[[121,[-1]]],[34,10]],[[[129,[-1]]],[[129,[-1]]],[34,12]],[[[130,[-1]]],[[130,[-1]]],[34,12]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[[44,[-1]],[44,[-1]]],84,124],[[73,73],84],[[52,52],84],[125,3],[126,3],[127,3],[[[44,[-1]]],-1,124],[[[121,[-1]]],86,10],[[[118,[-1]]],3,10],[[[121,[-1]],[24,[[24,[29]]]]],[[2,[[121,[-1]],[24,[[24,[-1]]]]]]],10],[[[121,[-1]]],-2,10,[]],[[[121,[-1]],-2],-3,10,[],[]],[[[121,[-1]],-2],-3,10,[],[]],[[[121,[-1]]],[[24,[[44,[56]]]]],10],[[[128,[-1]],3],25,10],[[54,[44,[73]],3,[44,[73]],3],[[6,[2,46]]]],[[[121,[-1]],-2,-5],2,10,[[36,[25]]],[[48,[[131,[-1]]]]],[[31,[],[[30,[-3]]]]],[[41,[[132,[-1]]],[[22,[-4]]]]]],[[130,[8,[-1]],[8,[[8,[8]]]],-2,-4],[[6,[2,46]]],78,37,133,[[134,[-3]]]],[[[129,[-1]]],121,12],[[[39,[-1]]],[[39,[-1]]],10],[[[44,[-1]]],[[118,[-2]]],124,10],[[],43],[[],[[121,[-1]]],10],[[],[[119,[-1]]],[135,12]],[[[118,[-1]]],3,10],[[[121,[-1]]],3,10],[[[39,[-1]]],[[75,[-1]]],10],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[[[121,[-1]],[24,[[24,[29]]]]],[[2,[[121,[-1]],[24,[[24,[-1]]]]]]],10],[[[39,[-1]]],[[39,[-1]]],10],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[[86,[42,[-1]],3],[[6,[2,46]]],10],[[[121,[-1]],[44,[56]]],2,10],[[[121,[-1]],-2],2,10,[[48,[[44,[73]]]]]],[[54,-2,86,3],[[6,[2,46]]],[[48,[47]]],[[41,[],[[22,[-1]]]]]],[[54,-2],2,[[48,[47]]],[[41,[],[[22,[-1]]]]]],[[[39,[-1]],[39,[-1]]],29,10],[[[44,[-1]],[44,[-1]]],29,[96,124]],[[43,43],29],[[56,56],29],[[50,50],29],[[73,73],29],[[86,86],29],[[125,125],29],[[126,126],29],[[127,127],29],[[52,52],29],[[72,72],29],[[[118,[-1]],[118,[-1]]],29,96],[[[39,[-1]]],-1,10],[[[118,[-1]],-3,-4,-5,-6,-7,-8,-9,-10,-11,-12],-2,10,[],[[26,[-1],[[22,[-2]]]]],[[26,[86],[[22,[-2]]]]],[[26,[125],[[22,[-2]]]]],[[26,[126],[[22,[-2]]]]],[[26,[127],[[22,[-2]]]]],[[26,[72],[[22,[-2]]]]],[[26,[-2],[[22,[-2]]]]],[[26,[-2,-2],[[22,[-2]]]]],[[26,[-2,-2],[[22,[-2]]]]],[[26,[-2,-1],[[22,[-2]]]]]],[[[118,[-1]],-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-2],-2,10,96,[[26,[-1],[[22,[-2]]]]],[[26,[86],[[22,[-2]]]]],[[26,[125],[[22,[-2]]]]],[[26,[126],[[22,[-2]]]]],[[26,[127],[[22,[-2]]]]],[[26,[72],[[22,[-2]]]]],[[26,[-2],[[22,[-2]]]]],[[26,[-2,-2],[[22,[-2]]]]],[[26,[-2,-2],[[22,[-2]]]]],[[26,[-2,-1],[[22,[-2]]]]]],[54,2],[86,[[118,[-1]]],10],[72,[[118,[-1]]],10],[[54,[44,[56]],3,[38,[[39,[-1]]]]],[[6,[2,46]]],10],[[[119,[-1]],[136,[-1]],[129,[-1]]],29,12],[[[121,[-1]]],[[44,[56]]],10],[[[129,[-1]]],[[24,[-1]]],12],[[[121,[-1]]],[[24,[[2,[[44,[56]],123]]]]],10],[[[137,[-1]],4],5,10],[[[39,[-1]],4],5,66],[[[44,[-1]],4],5,[66,124]],[[138,4],5],[[139,4],5],[[140,4],5],[[43,4],5],[[56,4],5],[[50,4],5],[[73,4],5],[[86,4],5],[[125,4],5],[[126,4],5],[[127,4],5],[[52,4],5],[[72,4],5],[[[118,[-1]],4],5,66],[[116,4],5],[[[131,[-1]],4],5,[66,10]],[[[141,[-1,-2,-3]],4],5,[66,10],[66,[48,[[131,[-1]]]]],[66,[31,[],[[30,[-2]]]]]],[[[128,[-1]],4],5,[66,10]],[[[121,[-1]],4],5,[66,10]],[[[132,[-1]],4],5,[66,10]],[[46,4],5],[[46,4],5],[[142,4],5],[[142,4],5],[[[119,[-1]],4],5,[66,12]],[[[129,[-1]],4],5,[66,12]],[[[143,[-1]],4],5,[66,12]],[[[130,[-1]],4],5,[66,12]],[-1,-1,[]],[-1,-1,[]],[-1,[[39,[-1]]],10],[[[39,[-1]]],[[39,[-1]]],10],[[[2,[-1,-1]]],[[39,[-1]]],10],[-1,[[39,[-1]]],10],[[[44,[50]]],[[44,[73]]]],[-1,-1,[]],[[[44,[56]]],[[44,[73]]]],[[[44,[43]]],[[44,[73]]]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[50,73],[43,73],[56,73],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[2,[-1,123]]],116,[[48,[[44,[73]]]]]],[-1,-1,[]],[-1,-1,[]],[[[2,[-1,[118,[-2]]]]],[[131,[-2]]],[[36,[25]]],10],[[[118,[-1]]],[[131,[-1]]],10],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[144,46],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[8,[120]],1],[[145,[[129,[-1]]]]],0],[[[8,[120]],1],[[145,[[130,[-1]]]]],0],[[[121,[-1]]],[[24,[[128,[-1]]]]],10],[[[121,[-1]]],[[117,[110,47]]],10],[[54,72],[[38,[-1]]],10],[[[129,[-1]]],146,12],[[[130,[-1]]],[[129,[-1]]],12],[[[44,[-1]],-2],2,[147,124],87],[[43,-1],2,87],[[56,-1],2,87],[[50,-1],2,87],[[73,-1],2,87],[[86,-1],2,87],[[52,-1],2,87],[[72,-1],2,87],[[[129,[-1]],-3],[[145,[2]]],12,[[133,[-1]]],[[148,[-1,-2]]]],[[[118,[-1]]],47,10],[[[44,[-1]]],3,124],[86,3],[72,3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[52,[[44,[56]]]],[[[121,[-1]]],[[44,[50]]],10],[[[121,[-1]]],[[24,[[2,[[44,[50]],123]]]]],10],[-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,[],[]],[-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,[],[]],[[[141,[-1,-2,-3]]],-4,10,[[48,[[131,[-1]]]]],[[31,[],[[30,[-2]]]]],[]],[[[39,[-1]]],[[39,[-1]]],10],[86,29],[[[39,[-1]]],29,10],[[-2,[129,[-1]],-3],[[6,[[130,[-1]],46]]],12,[[149,[-1]]],78],[[-2,-3],[[6,[[129,[-1]],46]]],12,[[149,[-1]]],78],[[-2,-3,29],[[6,[[129,[-1]],46]]],12,[[149,[-1]]],78],[[[121,[-1]],-2,-3],3,10,[[36,[25]]],[[41,[[132,[-1]]],[[22,[[24,[[2,[[118,[-1]],52]]]]]]]]]],[[[121,[-1]],-2,-3],3,10,[[36,[25]]],[[41,[[132,[-1]]],[[22,[[24,[[2,[[118,[-1]],[118,[-1]]]]]]]]]]]],[[[121,[-1]]],52,10],[[[121,[-1]]],[[24,[[0,[-1]]]]],10],[[[121,[-1]]],3,10],[[[39,[-1]],-1],[[39,[-1]]],10],[[[39,[-1]],[39,[-1]]],[[39,[-1]]],10],[[[39,[-1]],[39,[-1]]],[[39,[-1]]],10],[[[39,[-1]],-1],[[39,[-1]]],10],[[[118,[-1]],-1],[[118,[-1]]],10],[[[118,[-1]],[118,[-1]]],[[118,[-1]]],10],[[[39,[-1]],[39,[-1]]],2,10],[[[39,[-1]],[39,[-1]]],2,10],[[[128,[-1]]],25,10],[[[39,[-1]]],-2,10,[]],[[[39,[-1]]],-2,10,[]],[[[118,[-1]]],-2,10,[]],[-1,43,122],[[],[[119,[-1]]],12],[[[44,[-1]]],[[118,[-2]]],124,10],[[[121,[-1]]],3,10],[[[121,[-1]]],3,10],[[[121,[-1]]],3,10],[[[121,[-1]]],3,10],[[[121,[-1]]],3,10],[[[39,[-1]]],-1,10],[[[78,[],[[63,[-1]],[150,[-2]],[151,[-3]]]]],-3,34,99,135],[[[78,[],[[63,[-1]],[150,[-2]],[151,[-3]]]]],-3,34,99,135],[[[44,[-1]],[44,[-1]]],[[75,[84]]],124],[[73,73],[[75,[84]]]],[[52,52],[[75,[84]]]],0,[[[121,[-1]]],152,10],[[[129,[-1]]],[[153,[-1]]],12],[43,120],[126,120],[72,120],[[[121,[-1]]],[[137,[-1]]],10],[[[129,[-1]]],[[143,[-1]]],12],[[[128,[-1]]],[[8,[[118,[-1]]]]],10],[[54,[75,[47]]],2],[[[44,[-1]]],[[118,[-2]]],124,10],[-2,[[118,[-1]]],10,[[91,[],[[30,[[118,[-1]]]]]]]],[[54,-2],2,[[48,[47]]],[[41,[],[[22,[-1]]]]]],[[[132,[-1]],[44,[43]],123],[[118,[-1]]],10],[[[132,[-1]],-2,123],[[118,[-1]]],10,[[48,[[44,[73]]]]]],[[124,3,123],[[118,[-1]]],10],[[[44,[-1]],123],[[118,[-2]]],124,10],[[43,3,123],[[118,[-1]]],10],[[56,3,123],[[118,[-1]]],10],[[50,3,123],[[118,[-1]]],10],[[73,3,123],[[118,[-1]]],10],[[[118,[-1]],[132,[-1]]],2,10],[[[132,[-1]],72],[[118,[-1]]],10],[[[132,[-1]],[44,[56]],123],[[118,[-1]]],10],[[54,[44,[50]],3],[[6,[[38,[-1]],46]]],10],[[[132,[-1]],[44,[50]],123],[[118,[-1]]],10],[[[132,[-1]],86],[[118,[-1]]],10],[[-1,1],[[145,[[129,[-2]]]]],154,0],[[-1,1],[[145,[[130,[-2]]]]],154,0],[[[44,[-1]],115],[[118,[-2]]],124,10],[125,123],[126,123],[127,123],[[[121,[-1]]],86,10],[[[121,[-1]],3],2,10],[[[121,[-1]],-2,-3],3,10,[[36,[25]]],[[41,[[132,[-1]]],[[22,[[24,[[2,[[118,[-1]],[118,[-1]]]]]]]]]]]],[[[121,[-1]]],[[24,[[0,[-1]]]]],10],[46,[[75,[155]]]],[[[39,[-1]]],[[39,[-1]]],10],[[[118,[-1]]],[[118,[-1]]],10],[[[39,[-1]],-1],[[39,[-1]]],10],[[[39,[-1]],[39,[-1]]],[[39,[-1]]],10],[[[39,[-1]],-1],[[39,[-1]]],10],[[[39,[-1]],[39,[-1]]],[[39,[-1]]],10],[[[39,[-1]],[39,[-1]]],[[39,[-1]]],10],[[[39,[-1]],[39,[-1]]],[[39,[-1]]],10],[[[118,[-1]],[118,[-1]]],[[118,[-1]]],10],[[[39,[-1]],[39,[-1]]],2,10],[[[39,[-1]],[39,[-1]]],2,10],[-2,[[118,[-1]]],10,[[91,[],[[30,[[118,[-1]]]]]]]],[[-2,-3,[24,[[44,[56]]]]],[[6,[2,46]]],10,[[54,[-1]],77],[[78,[-1]]]],[[[78,[],[[63,[-1]],[150,[-2]],[151,[-3]]]],-1,-5],[[6,[2,46]]],34,99,135,10,[[58,[-4]]]],[[[129,[-1]],1],[[24,[120]]],0],[[[130,[-1]],1],[[24,[120]]],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,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,47,[]],[-1,47,[]],[[[129,[-1]]],[],12],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[[[44,[73]]],[[6,[[44,[43]],-1]]],[]],[-1,[[6,[-2]]],[],[]],[[[44,[73]]],[[6,[[44,[50]],-1]]],[]],[[[44,[73]]],[[6,[[44,[56]],-1]]],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[[[121,[-1]]],[[44,[43]]],10],[[[121,[-1]],-2],[[44,[43]]],10,122],[[129,-3,[8,[[8,[8]]]],-5],[[6,[46]]],156,[[157,[-1]]],[[158,[-1,-2]]],133,[[159,[-4]]]],[-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,[],[]],[-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,[],[]],[[[118,[-1]],-3],[[141,[-1,-2,-3]]],10,[[48,[[131,[-1]]]]],[[31,[],[[30,[-2]]]]]],[[[78,[],[[63,[-1]],[150,[-2]],[151,[-3]]]]],[[78,[],[[63,[-1]],[150,[-2]],[151,[-3]]]]],34,99,135],[[[129,[-1]],-2,1],[[145,[2]]],0,160],[[[130,[-1]],-2,1],[[145,[2]]],0,160],0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[100,2],[100,100],[152,152],[[[153,[-1]]],[[153,[-1]]],[34,12]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[100,[[8,[[44,[73]]]]]],[[[153,[-1]]],[[24,[-1]]],12],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[3,2],[[100,100],29],[[100,4],5],[[152,4],5],[[[153,[-1]],4],5,[66,12]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[152,[[24,[[44,[73]]]]]],[[],3],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[100,[[0,[[91,[],[[30,[[0,[[161,[],[[30,[[2,[3,3]]]]]]]]]]]]]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[162,[-1,-2]],[162,[-1,-2]]],[[162,[-1,-2]]],10,163],[-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,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[146,[-1]]],[[146,[-1]]],[34,10]],[[[164,[-1]]],[[164,[-1]]],[34,12]],[[[165,[-1,-2]]],[[165,[-1,-2]]],[34,12],[34,[166,[-1]]]],[167,167],[168,168],[169,169],[[[162,[-1,-2]]],[[162,[-1,-2]]],34,34],[123,123],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[[146,[-1]],[24,[-1]]],[[162,[-1,167]]],18],[[[146,[-1]],[162,[-1,167]]],[[162,[-1,169]]],18],0,[[[146,[-1]],-1],[[162,[-1,169]]],18],[[[146,[-1]],-1],[[162,[-1,168]]],18],[[],123],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[[[162,[-1,-2]]],[[8,[-1]]],[],[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[[[162,[-1,-2]]],[[8,[-1]]],[],[]],[3,-1,[]],[[[146,[-1]],[162,[-1,169]]],[[162,[-1,169]]],18],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[[[146,[-1]]],[[162,[-1,167]]],18],[[[146,[-1]]],[[162,[-1,169]]],18],[[[146,[-1]]],[[162,[-1,168]]],18],[[123,123],29],[[[146,[-1]]],9,18],[[[146,[-1]]],3,18],[[[146,[-1]],[162,[-1,169]]],[[24,[-1]]],18],[[[158,[],[[22,[-1]]]]],29,[]],[[[146,[-1]],4],5,[66,10]],[[[170,[-1]],4],5,[66,10]],[[[164,[-1]],4],5,[66,12]],[[[165,[-1,-2]],4],5,[66,12],[66,[166,[-1]]]],[[171,4],5],[[167,4],5],[[168,4],5],[[169,4],5],[[[162,[-1,-2]],4],5,66,66],[[123,4],5],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[146,[-1]]],-1,18],[[[146,[-1]]],-1,18],[[[146,[-1]]],-1,18],[[[146,[-1]]],3,18],[[[162,[-1,-2]],172],[[8,[-1]]],[],[]],[[[162,[-1,-2]],3],-1,[],[]],[[[162,[-1,-2]],[173,[3]]],[[8,[-1]]],[],[]],[[[162,[-1,-2]],3],-1,[],[]],[[[162,[-1,-2]],[173,[3]]],[[8,[-1]]],[],[]],[[[162,[-1,-2]],172],[[8,[-1]]],[],[]],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[[[162,[-1,-2]]],[[0,[[91,[],[[30,[-1]]]]]]],[],[]],[[[162,[-1,-2]]],[[0,[[91,[],[[30,[-1]]]]]]],[],[]],[[[146,[-1]]],9,18],0,[[[146,[-1]],-1,-1,-2],[[24,[-1]]],18,[[31,[],[[30,[115]]]],34]],[[[146,[-1]],[24,[-1]]],[[162,[-1,168]]],18],[[[146,[-1]],[162,[-1,168]]],[[162,[-1,167]]],18],[[[162,[-1,-2]],-1],[[162,[-1,-2]]],10,163],[[],[[158,[],[[22,[-1]]]]],[]],[[9,9],[[146,[-1]]],18],[[[162,[167]],174],[[164,[-1]]],12],[[[0,[-1,-2]]],[[165,[-1,-2]]],12,[[166,[-1]]]],[-1,[[165,[-1,-2]]],12,[[166,[-1]]]],[-2,[[165,[-1,-2]]],12,[[166,[-1]]]],[[],123],[[[162,[-1,-2]]],3,[],[]],[[[146,[-1]]],[[170,[-1]]],18],[[],123],[[[158,[],[[22,[-1]]]],-2],[[6,[-1,46]]],[],[[41,[],[[22,[[6,[46]]]]]]]],[[[162,[-1,168]],123],[[162,[-1,168]]],10],[[[146,[-1]],[162,[-1,169]],123],[[162,[-1,169]]],18],[[[146,[-1]],-1,123],-1,18],[[[162,[-1,-2]],-1],[[162,[-1,-2]]],10,163],[[[162,[-1,-2]],[162,[-1,-2]]],[[162,[-1,-2]]],10,163],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-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,0,0,0,0,[[[174,[-1]],[174,[-1]]],[[174,[-1]]],10],[[[174,[-1]],[174,[-1]]],2,10],[[[174,[-1]],-1],2,10],[[166,166],2],[166,2],[166,24],[-1,-2,[],[]],[-1,-2,[],[]],[166,29],[[[174,[-1]]],[[174,[-1]]],34],[[-1,-2],2,[],[]],[[[176,[],[[175,[-1]]]],[162,[167]],174],[],[[177,[-2]]],12],[[[149,[],[[178,[-1]]]],[162,[168]],174],[],[[166,[-2]]],12],[[179,-1,-3,-4],[[145,[2]]],37,133,[[134,[-2]]],[[31,[],[[30,[164]]]],34]],[[],[[174,[-1]]],10],[3,-1,[]],[3,-1,[]],[[[149,[],[[178,[-1]]]],9],2,[[166,[-2]]],12],[3,2],[[[149,[],[[178,[-1]]]]],-1,[[166,[-2]]],12],[[[174,[-1]],[174,[-1]]],29,96],[166],[[[174,[-1]],4],5,66],[-1,-1,[]],[[[176,[],[[175,[-1]]]]],[[8,[-2]]],[[177,[-2]]],12],[[],3],[-1,-2,[],[]],[[[149,[],[[178,[-1]]]]],9,[[166,[-2]]],12],[[[174,[-1]],[174,[-1]]],[[174,[-1]]],10],[[[174,[-1]],-1],2,10],[[[174,[-1]],[174,[-1]]],2,10],[[[149,[],[[178,[-1]]]]],35,[[166,[-2]]],12],[9,[[176,[],[[175,[-1]]]]],[[177,[-2]]],12],[[],179],[[],[[157,[],[[180,[-1]],[181,[-3]]]]],[[182,[-2],[[181,[-3]]]]],156,[]],[-1,[[174,[-2]]],37,10],[9,-1,[]],[-1,[[145,[[149,[],[[178,[-2]]]]]]],154,[[166,[-3]]],12],[-1,[[145,[-2]]],154,[]],[166,24],[166,2],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[[[176,[],[[175,[-1]]]]],-1,[[177,[-2]]],12],[[[157,[],[[180,[-1]],[181,[-3]]]],-5,-6,-3],[[6,[-1,171]]],[[182,[-2],[[181,[-3]]]]],156,[],133,[[159,[-4]]],[[31,[],[[30,[165]]]],34]],[-1,-2,[],[]],[[[149,[],[[178,[-1]]]],-3],[[145,[2]]],[[166,[-2]]],12,160],0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[183,[-1]]],[[183,[-1]]],[34,12]],[[-1,-2],2,[],[]],[[[183,[-1]],[162,[167]],174],[],12],[[[183,[-1]],[162,[168]],174],[],12],[[[183,[-1]],-2,-4,[162,[167]],174],[[145,[2]]],12,37,[[133,[-1]]],[[134,[-1,-3]]]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[[[183,[-1]],9],2,12],[3,2],[3,2],[[[183,[-1]]],[[184,[-1]]],12],[[[183,[-1]],4],5,[66,12]],[[[185,[-1]],4],5,[66,12]],[-1,-1,[]],[-1,-1,[]],[[[183,[-1]]],[[8,[-1]]],12],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[[[183,[-1]]],9,12],[[[183,[-1]]],35,12],[9,[[183,[-1]]],12],[9,-1,[]],[-1,[[145,[[183,[-2]]]]],154,12],[-1,[[145,[-2]]],154,[]],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[[[183,[-1]]],-2,12,[]],[[[183,[-1]],[184,[-1]],-3],[[6,[[186,[-1]],171]]],12,[[133,[-1]]],[[159,[-1,-2]]]],[-1,-2,[],[]],[-1,-2,[],[]],[[[183,[-1]],-2],[[145,[2]]],12,160],0,[[[184,[-1]]],2,12],[[[184,[-1]],[184,[-1]]],2,12],[[[184,[-1]],[184,[-1]]],2,12],[[[184,[-1]],8],2,12],[[[184,[-1]]],2,12],[[[184,[-1]]],2,12],[[[184,[-1]]],2,12],[[[184,[-1]]],24,12],[-1,-2,[],[]],[-1,-2,[],[]],[[[184,[-1]]],29,12],[[[184,[-1]]],[[184,[-1]]],[34,12]],[[-1,-2],2,[],[]],[3,-1,[]],[3,-1,[]],[3,2],[[[184,[-1]]],[],12],[[[184,[-1]],4],5,[66,12]],[-1,-1,[]],[[],3],[-1,-2,[],[]],[[[136,[-1]]],[[184,[-1]]],12],[[[184,[-1]]],24,12],[[[184,[-1]]],2,12],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,-2,[],[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[187,[-1]],-2,-4,-5],[[145,[2]]],12,37,[[133,[-1]]],[[134,[-1,-3]]],[[31,[],[[30,[[164,[-1]]]]]],34]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[[[187,[-1]],4],5,[66,12]],[[[188,[-1]],4],5,[66,12]],[-1,-1,[]],[-1,-1,[]],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[[[183,[-1]]],[[187,[-1]]],12],[[[136,[-1]]],[[188,[-1]]],12],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[[[188,[-1]],-3,-4,[184,[-1]]],[[6,[-5,171]]],12,[[133,[-1]]],[[159,[-1,-2]]],[[31,[],[[30,[[165,[-1,[184,[-1]]]]]]]],34],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[186,[-1]]],[[186,[-1]]],[34,12]],[[[189,[-1]]],[[189,[-1]]],[34,12]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[[186,[-1]]],-1,12],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[3,2],[3,2],[[[190,[-1]]],29,12],[[[191,[-1]]],29,12],[[[186,[-1]],4],5,[66,12]],[[[189,[-1]],4],5,[66,12]],[[[190,[-1]],4],5,[66,12]],[[[191,[-1]],4],5,[66,12]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],0,[[],3],[[],3],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[183,[-1]]],[[190,[-1]]],12],[[[183,[-1]]],[[191,[-1]]],12],[[[190,[-1]],-2],[[6,[-3,46]]],12,[[41,[[184,[-1]]],[[22,[[6,[[186,[-1]],46]]]]]]],[]],[[[191,[-1]],-2],[[6,[-3,46]]],12,[[41,[[184,[-1]]],[[22,[[6,[[186,[-1]],46]]]]]]],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],0,[[[186,[-1]]],[[184,[-1]]],12],[[[186,[-1]],-1],[[2,[[184,[-1]],[189,[-1]]]]],12],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[192,[-1]]],[[192,[-1]]],[34,193]],[[-1,-2],2,[],[]],[[[192,[-1]],[162,[167]],174],[],[193,66]],[[[192,[-1]],[162,[168]],174],[],[193,66]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[[[192,[-1]],9],2,[193,66]],[3,2],[3,2],[[[192,[-1]]],[[194,[-1]]],[193,66]],[[[192,[-1]],4],5,[66,193]],[[[195,[-1]],4],5,[66,193]],[-1,-1,[]],[-1,-1,[]],[[[192,[-1]],9,24,[75,[24]]],[[192,[-1]]],[193,66]],[[[192,[-1]]],[],[193,66]],[[[192,[-1]]],8,[193,66]],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[[[192,[-1]]],9,[193,66]],[[[192,[-1]]],35,[193,66]],[9,[[192,[-1]]],[193,66]],[9,-1,[]],[-1,[[145,[[192,[-2]]]]],154,[193,66]],[[-1,1],[[145,[[192,[-2]]]]],154,[193,66]],[-1,[[145,[-2]]],154,[]],[[[192,[-1]]],[],[193,66]],[[9,-1],[[192,[-2]]],37,[193,66]],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[[[192,[-1]]],-2,[193,66],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[192,[-1]],-2],[[145,[2]]],[193,66],160],[[[192,[-1]],-2,1],[[145,[2]]],[193,66],160],0,0,[[[194,[-1]],[194,[-1]]],2,[193,66]],[[[196,[-1]],[196,[-1]]],2,[197,66]],[[[194,[-1]]],2,[193,66]],[[[194,[-1]]],24,[193,66]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[194,[-1]]],29,[193,66]],[[[196,[-1]]],29,[197,66]],[[[194,[-1]]],[[194,[-1]]],[34,193]],[[[196,[-1]]],[[196,[-1]]],[34,193]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[[194,[-1]]],2,193],[[],[[194,[-1]]],[135,193]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[[[194,[-1]]],[],[193,66]],[[[194,[-1]],4],5,[66,193]],[[[196,[-1]],4],5,[66,193]],[-1,-1,[]],[[[192,[-1]]],[[196,[-1]]],[197,66]],[-1,-1,[]],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[[],[[194,[-1]]],193],[[[192,[-1]]],[[196,[-1]]],[197,66]],[[[194,[-1]]],24,[193,66]],[[[194,[-1]]],2,[193,66]],[[[196,[-1]]],2,[197,66]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[198,[-1]],-2,-4,-5],[[145,[2]]],[193,66],37,133,[[134,[-3]]],[[31,[],[[30,[164]]]],34]],[[[199,[-1]],-2,-4,-5],[[145,[2]]],[193,66],37,133,[[134,[-3]]],[[31,[],[[30,[164]]]],34]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[3,2],[3,2],[[[198,[-1]],4],5,[66,193]],[[[200,[-1]],4],5,[66,193]],[[[199,[-1]],4],5,[66,193]],[[[201,[-1]],4],5,[66,193]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[],3],[[],3],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[192,[-1]]],[[198,[-1]]],[193,66]],[[[192,[-1]]],[[200,[-1]]],[197,66]],[[[192,[-1]]],[[199,[-1]]],193],[[[192,[-1]]],[[199,[-1]]],[193,66]],[[[192,[-1]]],[[201,[-1]]],[197,66]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[[[200,[-1]],-3,-4,[196,[-1]]],[[6,[-5,171]]],[197,66],133,[[159,[-2]]],[[31,[],[[30,[[165,[[194,[-1]]]]]]]],34],[]],[[[201,[-1]],-3,-4,[196,[-1]]],[[6,[-5,171]]],[197,66],133,[[159,[-2]]],[[31,[],[[30,[[165,[[194,[-1]]]]]]]],34],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[202,[-1]]],[[202,[-1]]],[34,197,66]],[[[203,[-1]]],[[203,[-1]]],[34,193]],[[[204,[-1]]],[[204,[-1]]],[34,193]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[3,2],[[[203,[-1]]],29,[197,66]],[[[204,[-1]]],29,[197,66]],[[[202,[-1]],4],5,[66,197,66]],[[[203,[-1]],4],5,[66,193]],[[[204,[-1]],4],5,[66,193]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[],3],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[192,[-1]]],[[203,[-1]]],[197,66]],[[[192,[-1]]],[[203,[-1]]],[197,66]],[[[192,[-1]]],[[204,[-1]]],[197,66]],[[[192,[-1]]],[[204,[-1]]],[197,66]],[[[203,[-1]],-2],[[6,[-3,46]]],[197,66],[[41,[],[[22,[[6,[46]]]]]]],[]],[[[204,[-1]],-2],[[6,[-3,46]]],[197,66],[[41,[],[[22,[[6,[46]]]]]]],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[196,[-1]]],[[203,[-1]]],[197,66]],0,0,0,0,0,0,0,0,0,0,0,0,0,[[[133,[],[[205,[-1]]]]],[[206,[-2,-3]]],[],12,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[207,[-1,-2,-3]]],[[207,[-1,-2,-3]]],[34,154],[34,12],[34,[133,[-2]]]],[[[208,[-1,-2,-3]]],[[208,[-1,-2,-3]]],[34,154],[34,12],[34,[133,[-2]]]],[[[209,[-1,-2,-3]]],[[209,[-1,-2,-3]]],[34,160],[34,12],[34,[133,[-2]]]],[[[210,[-1,-2,-3]]],[[210,[-1,-2,-3]]],[34,160],[34,12],[34,[133,[-2]]]],[[[206,[-1,-2]]],[[206,[-1,-2]]],[34,12],34],[[[211,[-1]]],[[211,[-1]]],[34,12]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[148,-1],[[145,[2]]],12],[[[207,[-1,-2,[211,[-2]]]],-2],[[145,[2]]],154,12],[[[208,[-1,-2,[211,[-2]]]],-2],[[145,[2]]],154,12],[[[209,[-1,-2,[211,[-2]]]],-2],[[145,[2]]],160,12],[[[210,[-1,-2,[211,[-2]]]],-2],[[145,[2]]],160,12],[148,[[145,[2]]]],[[[207,[-1,-2,[211,[-2]]]]],[[145,[2]]],154,12],[[[208,[-1,-2,[211,[-2]]]]],[[145,[2]]],154,12],[[[209,[-1,-2,[211,[-2]]]]],[[145,[2]]],160,12],[[[210,[-1,-2,[211,[-2]]]]],[[145,[2]]],160,12],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[[[206,[-1,-2]]],-3,12,[],[]],[3,-1,[]],[[[211,[-1]]],-2,12,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,-1,[]],[3,2],[3,2],[3,2],[3,2],[3,2],[3,2],[212,-1,160],[[[209,[-1,-2,[211,[-2]]]]],-1,160,12],[[[210,[-1,-2,[211,[-2]]]]],-1,160,12],[[[207,[-1,-2,-3]],4],5,[66,154],[66,12],[66,[133,[-2]]]],[[[208,[-1,-2,-3]],4],5,[66,154],[66,12],[66,[133,[-2]]]],[[[209,[-1,-2,-3]],4],5,[66,160],[66,12],[66,[133,[-2]]]],[[[210,[-1,-2,-3]],4],5,[66,160],[66,12],[66,[133,[-2]]]],[[[206,[-1,-2]],4],5,[66,12],66],[[[211,[-1]],4],5,[66,12]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[133,[],[[205,[-1]]]]],[],[]],[[[211,[-1]]],[],12],[-1,213,154],[-1,212,160],[[],3],[-1,[[207,[-1,-2,[211,[-2]]]]],154,12],[-1,[[208,[-1,-2,[211,[-2]]]]],154,12],[[],3],[[],3],[-1,[[209,[-1,-2,[211,[-2]]]]],160,12],[-1,[[210,[-1,-2,[211,[-2]]]]],160,12],[[],3],[[],3],[[],3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[133,[],[[205,[-1]]]]],[]],[[[79,[120]]],[[211,[-1]]],12],[159,[[145,[-1]]],12],[[[207,[-1,-2,[211,[-2]]]]],[[145,[-2]]],154,12],[[[208,[-1,-2,[211,[-2]]]]],[[145,[-2]]],154,12],[159,145],[[[207,[-1,-2,[211,[-2]]]]],145,154,12],[[[208,[-1,-2,[211,[-2]]]]],145,154,12],[148,-2,12,[[133,[-1]]]],[[[207,[-1,-2,[211,[-2]]]]],[[211,[-2]]],154,12],[[[208,[-1,-2,[211,[-2]]]]],[[211,[-2]]],154,12],[[[209,[-1,-2,[211,[-2]]]]],[[211,[-2]]],160,12],[[[210,[-1,-2,[211,[-2]]]]],[[211,[-2]]],160,12],[148,[[206,[-1,-2]]],12,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[2,[115,115]]],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[134,-1],[[145,[2]]],12],[[[209,[-1,-2,[211,[-2]]]],-2],[[145,[2]]],160,12],[[[210,[-1,-2,[211,[-2]]]],-2],[[145,[2]]],160,12],[134,[[145,[2]]]],[[[209,[-1,-2,[211,[-2]]]]],[[145,[2]]],160,12],[[[210,[-1,-2,[211,[-2]]]]],[[145,[2]]],160,12]],"c":[],"p":[[6,"SerdeFormat",0],[1,"tuple"],[1,"usize"],[5,"Formatter",2436],[8,"Result",2436],[6,"Result",2437],[5,"TypeId",2438],[1,"slice"],[1,"u32"],[10,"Field",27],[10,"FftGroup",27],[10,"CurveAffine",27],[17,"ScalarExt"],[17,"Base"],[17,"CurveExt"],[5,"Coordinates",2439],[5,"CtOption",2440],[10,"WithSmallOrderMulGroup",2441],[10,"Ord",2442],[17,"AffineExt"],[10,"CurveExt",27],[17,"Output"],[10,"Mul",2443],[5,"Vec",2444],[1,"str"],[10,"Fn",2445],[5,"Box",2446],[5,"Choice",2440],[1,"bool"],[17,"Item"],[10,"IntoIterator",2447],[10,"Send",2448],[10,"Sync",2448],[10,"Clone",2449],[1,"u64"],[10,"AsRef",2450],[10,"RngCore",2451],[5,"Value",74],[6,"Assigned",793],[10,"Add",2443],[10,"FnOnce",2445],[5,"Region",74],[5,"Advice",793],[5,"Column",793],[5,"AssignedCell",74],[6,"Error",793],[5,"String",2452],[10,"Into",2450],[10,"FnMut",2445],[5,"Instance",793],[10,"TableLayouter",377],[5,"TableColumn",793],[5,"SimpleTableLayouter",74],[10,"Assignment",793],[5,"Table",74],[5,"Fixed",793],[17,"Root"],[10,"Layouter",74],[5,"NamespacedLayouter",74],[5,"Cell",74],[5,"RegionIndex",74],[5,"RegionStart",74],[17,"Config"],[17,"Loaded"],[10,"Chip",74],[10,"Debug",2436],[10,"Copy",2448],[10,"Borrow",2453],[5,"SimpleFloorPlanner",74],[10,"RegionLayouter",377],[10,"FromIterator",2447],[5,"Challenge",793],[6,"Any",793],[10,"Neg",2443],[6,"Option",2454],[10,"Sub",2443],[10,"SyncDeps",377],[10,"Circuit",793],[1,"array"],[5,"V1Pass",341],[5,"V1",341],[5,"RegionShape",377],[6,"RegionColumn",377],[6,"Ordering",2442],[5,"HashSet",2455],[5,"Selector",793],[10,"Hasher",2456],[5,"MockProver",445],[6,"CellValue",445],[10,"FromUniformBytes",2441],[10,"Iterator",2457],[6,"FailureLocation",445],[5,"CircuitGates",445],[5,"CircuitLayout",445],[6,"VerifyFailure",445],[10,"PartialEq",2442],[5,"Error",2436],[5,"TracingFloorPlanner",445],[10,"FloorPlanner",793],[5,"Assembly",1519],[5,"Shift",2458],[5,"DrawingArea",2459],[6,"DrawingAreaErrorKind",2459],[10,"DrawingBackend",2460],[5,"Range",2461],[5,"CircuitCost",633],[10,"PrimeGroup",2462],[5,"MarginalProofSize",633],[5,"ProofSize",633],[5,"Column",678],[5,"Gate",678],[5,"Constraint",678],[5,"Region",678],[5,"VirtualCell",678],[1,"i32"],[5,"VirtualCell",793],[5,"HashMap",2463],[6,"Expression",793],[5,"BatchVerifier",793],[1,"u8"],[5,"ConstraintSystem",793],[10,"Phase",793],[5,"Rotation",1576],[10,"ColumnType",793],[5,"FixedQuery",793],[5,"AdviceQuery",793],[5,"InstanceQuery",793],[5,"Gate",793],[5,"VerifyingKey",793],[5,"ProvingKey",793],[5,"Constraint",793],[5,"VirtualCells",793],[10,"EncodedChallenge",2282],[10,"TranscriptWrite",2282],[10,"Default",2464],[8,"ParamsVerifierIPA",1871],[5,"PinnedConstraintSystem",793],[5,"FirstPhase",793],[5,"SecondPhase",793],[5,"ThirdPhase",793],[5,"Constraints",793],[6,"TableError",793],[5,"PinnedVerificationKey",793],[5,"Error",2465],[8,"Result",2465],[5,"EvaluationDomain",1576],[10,"Hash",2456],[10,"Transcript",2282],[10,"Params",1800],[17,"FloorPlanner"],[17,"Params"],[5,"Argument",1519],[5,"VerifyingKey",1519],[10,"Read",2466],[10,"Error",2467],[10,"CommitmentScheme",1800],[10,"Verifier",1800],[10,"VerificationStrategy",1576],[10,"TranscriptRead",2282],[10,"Write",2466],[10,"IndexedParallelIterator",2468],[5,"Polynomial",1576],[10,"Basis",1576],[5,"ProverQuery",1576],[5,"VerifierQuery",1576],[10,"MSM",1800],[5,"Coeff",1576],[5,"LagrangeCoeff",1576],[5,"ExtendedLagrangeCoeff",1576],[5,"PinnedEvaluationDomain",1576],[6,"Error",1576],[5,"RangeFull",2461],[5,"RangeFrom",2461],[5,"Blind",1800],[17,"ParamsVerifier"],[10,"ParamsProver",1800],[10,"ParamsVerifier",1800],[17,"MSM"],[10,"Prover",1800],[17,"Guard"],[17,"MSMAccumulator"],[10,"Guard",1576],[5,"ParamsIPA",1871],[5,"MSMIPA",1918],[5,"IPACommitmentScheme",1871],[5,"GuardIPA",1980],[5,"ProverIPA",1948],[5,"VerifierIPA",1948],[5,"Accumulator",1980],[5,"AccumulatorStrategy",1980],[5,"SingleStrategy",1980],[5,"ParamsKZG",2057],[10,"Engine",2469],[5,"MSMKZG",2108],[5,"KZGCommitmentScheme",2057],[5,"DualMSM",2108],[10,"MultiMillerLoop",2469],[5,"ProverGWC",2157],[5,"ProverSHPLONK",2157],[5,"VerifierGWC",2157],[5,"VerifierSHPLONK",2157],[5,"GuardKZG",2222],[5,"AccumulatorStrategy",2222],[5,"SingleStrategy",2222],[17,"Input"],[5,"ChallengeScalar",2282],[5,"Blake2bRead",2282],[5,"Keccak256Read",2282],[5,"Blake2bWrite",2282],[5,"Keccak256Write",2282],[5,"Challenge255",2282],[10,"TranscriptWriterBuffer",2282],[10,"TranscriptReadBuffer",2282],[15,"InRegion",608],[15,"OutsideRegion",608],[15,"ConstraintNotSatisfied",611],[15,"CellNotAssigned",611],[15,"InstanceCellNotAssigned",611],[15,"Permutation",611],[15,"ConstraintPoisoned",611],[15,"Lookup",611],[15,"Shuffle",611],[15,"NotEnoughRowsAvailable",1518]],"b":[[90,"impl-Add-for-%26Value%3CV%3E"],[91,"impl-Add%3CValue%3CV%3E%3E-for-Value%3C%26V%3E"],[92,"impl-Add%3CF%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[93,"impl-Add%3CValue%3CF%3E%3E-for-Value%3CAssigned%3CF%3E%3E"],[94,"impl-Add%3CF%3E-for-Value%3CAssigned%3CF%3E%3E"],[95,"impl-Add%3C%26Value%3CV%3E%3E-for-Value%3CV%3E"],[96,"impl-Add%3CValue%3C%26V%3E%3E-for-Value%3CV%3E"],[97,"impl-Add%3CValue%3CF%3E%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[98,"impl-Add-for-Value%3CV%3E"],[99,"impl-Add%3CValue%3CV%3E%3E-for-%26Value%3CV%3E"],[146,"impl-Value%3C%26mut+V%3E"],[147,"impl-Value%3C%26V%3E"],[154,"impl-Value%3C%26V%3E"],[155,"impl-Value%3C%26mut+V%3E"],[256,"impl-Mul%3CValue%3CV%3E%3E-for-Value%3C%26V%3E"],[257,"impl-Mul%3CValue%3CF%3E%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[258,"impl-Mul%3CF%3E-for-Value%3CAssigned%3CF%3E%3E"],[259,"impl-Mul%3CValue%3CF%3E%3E-for-Value%3CAssigned%3CF%3E%3E"],[260,"impl-Mul%3CValue%3CV%3E%3E-for-%26Value%3CV%3E"],[261,"impl-Mul-for-Value%3CV%3E"],[262,"impl-Mul%3CValue%3C%26V%3E%3E-for-Value%3CV%3E"],[263,"impl-Mul%3CF%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[264,"impl-Mul%3C%26Value%3CV%3E%3E-for-Value%3CV%3E"],[265,"impl-Mul-for-%26Value%3CV%3E"],[277,"impl-Sub%3CF%3E-for-Value%3CAssigned%3CF%3E%3E"],[278,"impl-Sub%3CValue%3C%26V%3E%3E-for-Value%3CV%3E"],[279,"impl-Sub%3CF%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[280,"impl-Sub%3C%26Value%3CV%3E%3E-for-Value%3CV%3E"],[281,"impl-Sub-for-%26Value%3CV%3E"],[282,"impl-Sub%3CValue%3CV%3E%3E-for-Value%3C%26V%3E"],[283,"impl-Sub%3CValue%3CF%3E%3E-for-Value%3CAssigned%3CF%3E%3E"],[284,"impl-Sub%3CValue%3CV%3E%3E-for-%26Value%3CV%3E"],[285,"impl-Sub-for-Value%3CV%3E"],[286,"impl-Sub%3CValue%3CF%3E%3E-for-Value%3C%26Assigned%3CF%3E%3E"],[420,"impl-From%3CSelector%3E-for-RegionColumn"],[421,"impl-From%3CColumn%3CAny%3E%3E-for-RegionColumn"],[525,"impl-Debug-for-FailureLocation"],[526,"impl-Display-for-FailureLocation"],[527,"impl-Debug-for-VerifyFailure"],[528,"impl-Display-for-VerifyFailure"],[529,"impl-Display-for-CircuitGates"],[530,"impl-Debug-for-CircuitGates"],[724,"impl-Debug-for-Column"],[725,"impl-Display-for-Column"],[726,"impl-Debug-for-VirtualCell"],[727,"impl-Display-for-VirtualCell"],[728,"impl-Display-for-Gate"],[729,"impl-Debug-for-Gate"],[730,"impl-Display-for-Constraint"],[731,"impl-Debug-for-Constraint"],[732,"impl-Display-for-Region"],[733,"impl-Debug-for-Region"],[734,"impl-From%3CColumn%3CAny%3E%3E-for-Column"],[735,"impl-From%3C(Any,+usize)%3E-for-Column"],[738,"impl-From%3C(Column,+i32)%3E-for-VirtualCell"],[739,"impl-From%3CVirtualCell%3E-for-VirtualCell"],[740,"impl-From%3C(S,+Column,+i32)%3E-for-VirtualCell"],[745,"impl-From%3C(usize,+%26str)%3E-for-Region"],[746,"impl-From%3C(usize,+String)%3E-for-Region"],[747,"impl-From%3C(usize,+String,+HashMap%3CColumn,+String%3E)%3E-for-Region"],[749,"impl-From%3C(usize,+%26str,+HashMap%3CColumn,+String%3E)%3E-for-Region"],[861,"impl-Add%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[862,"impl-Add%3CAssigned%3CF%3E%3E-for-%26Assigned%3CF%3E"],[863,"impl-Add-for-Assigned%3CF%3E"],[864,"impl-Add%3CF%3E-for-%26Assigned%3CF%3E"],[865,"impl-Add%3CF%3E-for-Assigned%3CF%3E"],[866,"impl-Add%3C%26Assigned%3CF%3E%3E-for-%26Assigned%3CF%3E"],[868,"impl-AddAssign%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[869,"impl-AddAssign-for-Assigned%3CF%3E"],[1147,"impl-Display-for-Error"],[1148,"impl-Debug-for-Error"],[1149,"impl-Display-for-TableError"],[1150,"impl-Debug-for-TableError"],[1157,"impl-From%3C%26F%3E-for-Assigned%3CF%3E"],[1158,"impl-From%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1159,"impl-From%3C(F,+F)%3E-for-Assigned%3CF%3E"],[1160,"impl-From%3CF%3E-for-Assigned%3CF%3E"],[1161,"impl-From%3CColumn%3CInstance%3E%3E-for-Column%3CAny%3E"],[1163,"impl-From%3CColumn%3CFixed%3E%3E-for-Column%3CAny%3E"],[1164,"impl-From%3CColumn%3CAdvice%3E%3E-for-Column%3CAny%3E"],[1171,"impl-From%3CInstance%3E-for-Any"],[1172,"impl-From%3CAdvice%3E-for-Any"],[1173,"impl-From%3CFixed%3E-for-Any"],[1185,"impl-From%3C(S,+Expression%3CF%3E)%3E-for-Constraint%3CF%3E"],[1186,"impl-From%3CExpression%3CF%3E%3E-for-Constraint%3CF%3E"],[1291,"impl-Mul%3CF%3E-for-%26Assigned%3CF%3E"],[1292,"impl-Mul-for-Assigned%3CF%3E"],[1293,"impl-Mul%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1294,"impl-Mul%3CF%3E-for-Assigned%3CF%3E"],[1295,"impl-Mul%3CF%3E-for-Expression%3CF%3E"],[1296,"impl-Mul-for-Expression%3CF%3E"],[1297,"impl-MulAssign%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1298,"impl-MulAssign-for-Assigned%3CF%3E"],[1300,"impl-Neg-for-Assigned%3CF%3E"],[1301,"impl-Neg-for-%26Assigned%3CF%3E"],[1357,"impl-Sub%3CF%3E-for-Assigned%3CF%3E"],[1358,"impl-Sub%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1359,"impl-Sub%3CF%3E-for-%26Assigned%3CF%3E"],[1360,"impl-Sub%3CAssigned%3CF%3E%3E-for-%26Assigned%3CF%3E"],[1361,"impl-Sub%3C%26Assigned%3CF%3E%3E-for-%26Assigned%3CF%3E"],[1362,"impl-Sub-for-Assigned%3CF%3E"],[1364,"impl-SubAssign-for-Assigned%3CF%3E"],[1365,"impl-SubAssign%3C%26Assigned%3CF%3E%3E-for-Assigned%3CF%3E"],[1394,"impl-TryFrom%3CColumn%3CAny%3E%3E-for-Column%3CAdvice%3E"],[1396,"impl-TryFrom%3CColumn%3CAny%3E%3E-for-Column%3CInstance%3E"],[1397,"impl-TryFrom%3CColumn%3CAny%3E%3E-for-Column%3CFixed%3E"],[1701,"impl-Index%3CRangeFull%3E-for-Polynomial%3CF,+B%3E"],[1702,"impl-Index%3Cusize%3E-for-Polynomial%3CF,+B%3E"],[1703,"impl-Index%3CRangeFrom%3Cusize%3E%3E-for-Polynomial%3CF,+B%3E"],[1704,"impl-IndexMut%3Cusize%3E-for-Polynomial%3CF,+B%3E"],[1705,"impl-IndexMut%3CRangeFrom%3Cusize%3E%3E-for-Polynomial%3CF,+B%3E"],[1706,"impl-IndexMut%3CRangeFull%3E-for-Polynomial%3CF,+B%3E"],[1750,"impl-Sub%3CF%3E-for-%26Polynomial%3CF,+B%3E"],[1751,"impl-Sub%3C%26Polynomial%3CF,+B%3E%3E-for-Polynomial%3CF,+B%3E"],[1819,"impl-AddAssign-for-Blind%3CF%3E"],[1820,"impl-AddAssign%3CF%3E-for-Blind%3CF%3E"],[1847,"impl-MulAssign%3CF%3E-for-Blind%3CF%3E"],[1848,"impl-MulAssign-for-Blind%3CF%3E"],[1920,"impl-MSM%3CC%3E-for-MSMIPA%3C\'a,+C%3E"],[1921,"impl-MSMIPA%3C\'a,+C%3E"],[2201,"impl-ProverSHPLONK%3C\'a,+E%3E"],[2202,"impl-Prover%3C\'params,+KZGCommitmentScheme%3CE%3E%3E-for-ProverSHPLONK%3C\'params,+E%3E"],[2260,"impl-AccumulatorStrategy%3C\'params,+E%3E"],[2261,"impl-VerificationStrategy%3C\'params,+KZGCommitmentScheme%3CE%3E,+V%3E-for-AccumulatorStrategy%3C\'params,+E%3E"],[2262,"impl-SingleStrategy%3C\'params,+E%3E"],[2263,"impl-VerificationStrategy%3C\'params,+KZGCommitmentScheme%3CE%3E,+V%3E-for-SingleStrategy%3C\'params,+E%3E"]]}\ }'); if (typeof window !== 'undefined' && window.initSearch) {window.initSearch(searchIndex)}; if (typeof exports !== 'undefined') {exports.searchIndex = searchIndex}; diff --git a/settings.html b/settings.html index e4ed7fc69f..4980823aa5 100644 --- a/settings.html +++ b/settings.html @@ -1,4 +1,4 @@ -Settings +Settings -

    Rustdoc settings

    Back
    \ No newline at end of file +

    Rustdoc settings

    Back
    \ No newline at end of file diff --git a/src/halo2/lib.rs.html b/src/halo2/lib.rs.html index ace44ec44d..40d3a6e11c 100644 --- a/src/halo2/lib.rs.html +++ b/src/halo2/lib.rs.html @@ -1,4 +1,4 @@ -lib.rs - source +lib.rs - source +ecc.rs - source +chip.rs - source +add.rs - source +add_incomplete.rs - source +constants.rs - source +mul.rs - source +complete.rs - source +incomplete.rs - source +overflow.rs - source +mul_fixed.rs - source +base_field_elem.rs - source +full_width.rs - source +short.rs - source +witness_point.rs - source +lib.rs - source +poseidon.rs - source +pow5.rs - source +primitives.rs - source +fp.rs - source +fq.rs - source +grain.rs - source +mds.rs - source +p128pow5t3.rs - source +sha256.rs - source +table16.rs - source +compression.rs - source +compression_gates.rs - source +compression_util.rs - source +subregion_digest.rs - source +subregion_initial.rs - source +subregion_main.rs - source +gates.rs - source +message_schedule.rs - source +schedule_gates.rs - source +schedule_util.rs - source +subregion1.rs - source +subregion2.rs - source +subregion3.rs - source +spread_table.rs - source +util.rs - source +sinsemilla.rs - source +chip.rs - source +generator_table.rs - source +hash_to_point.rs - source +merkle.rs - source +chip.rs - source +message.rs - source +primitives.rs - source +addition.rs - source +sinsemilla_s.rs - source +utilities.rs - source +cond_swap.rs - source +decompose_running_sum.rs - source +lookup_range_check.rs - source +arithmetic.rs - source +circuit.rs - source +floor_planner.rs - source +single_pass.rs - source +v1.rs - source +strategy.rs - source +layouter.rs - source +table_layouter.rs - source +value.rs - source +dev.rs - source +cost.rs - source +failure.rs - source +emitter.rs - source +gates.rs - source +graph.rs - source +layout.rs - source +metadata.rs - source +tfp.rs - source +util.rs - source +helpers.rs - source +lib.rs - source +multicore.rs - source +plonk.rs - source +assigned.rs - source +circuit.rs - source +compress_selectors.rs - source +error.rs - source +evaluation.rs - source +keygen.rs - source +lookup.rs - source +prover.rs - source +verifier.rs - source +permutation.rs - source +keygen.rs - source +prover.rs - source +verifier.rs - source +prover.rs - source +shuffle.rs - source +prover.rs - source +verifier.rs - source +vanishing.rs - source +prover.rs - source +verifier.rs - source +verifier.rs - source +batch.rs - source +poly.rs - source +commitment.rs - source +domain.rs - source +commitment.rs - source +prover.rs - source +verifier.rs - source +mod.rs - source +msm.rs - source +multiopen.rs - source +prover.rs - source +verifier.rs - source +strategy.rs - source +commitment.rs - source +mod.rs - source +msm.rs - source +multiopen.rs - source +gwc.rs - source +prover.rs - source +verifier.rs - source +shplonk.rs - source +prover.rs - source +verifier.rs - source +strategy.rs - source +query.rs - source +strategy.rs - source +transcript.rs - source