From 5218ac61355902048294d54ef44a8f108e048788 Mon Sep 17 00:00:00 2001 From: Diego K <43053772+diegokingston@users.noreply.github.com> Date: Mon, 23 Sep 2024 17:53:40 -0300 Subject: [PATCH 01/12] Fields docs (#911) * error regarding size * comment * extension * extension fields * more on fields * more on extensions * fix links * make defining equation simpler * add higher degree extensions * exercise * change comments * fmt --- math/README.md | 6 +- .../curves/bls12_381/compression.rs | 6 + .../short_weierstrass/traits.rs | 2 +- math/src/field/README.md | 133 +++++++++++++++++- 4 files changed, 138 insertions(+), 9 deletions(-) diff --git a/math/README.md b/math/README.md index 81f6f8c66..e5e0830a0 100644 --- a/math/README.md +++ b/math/README.md @@ -13,9 +13,9 @@ lambdaworks-math = "0.8.0" ## Structure This crate contains all the relevant mathematical building blocks needed for proof systems and cryptography. The main parts are: -- [Finite Fields](https://github.com/lambdaclass/lambdaworks/tree/main/math/src/field) -- [Elliptic curves](https://github.com/lambdaclass/lambdaworks/tree/main/math/src/elliptic_curve) -- [Polynomials - univariate and multivariate](https://github.com/lambdaclass/lambdaworks/tree/main/math/src/polynomial) +- [Finite Fields](./src/field/README.md) +- [Elliptic curves](./src/elliptic_curve/README.md) +- [Polynomials - univariate and multivariate](./src/polynomial/README.md) - [Large unsigned integers](https://github.com/lambdaclass/lambdaworks/tree/main/math/src/unsigned_integer) - [Fast Fourier Transform](https://github.com/lambdaclass/lambdaworks/tree/main/math/src/fft) - [Optimized Multiscalar Multiplication](https://github.com/lambdaclass/lambdaworks/tree/main/math/src/msm) diff --git a/math/src/elliptic_curve/short_weierstrass/curves/bls12_381/compression.rs b/math/src/elliptic_curve/short_weierstrass/curves/bls12_381/compression.rs index 18f30299f..548f2e986 100644 --- a/math/src/elliptic_curve/short_weierstrass/curves/bls12_381/compression.rs +++ b/math/src/elliptic_curve/short_weierstrass/curves/bls12_381/compression.rs @@ -18,6 +18,11 @@ type G1Point = ShortWeierstrassProjectivePoint; type G2Point = ShortWeierstrassProjectivePoint; type BLS12381FieldElement = FieldElement; +/// This functionality includes the compression and decompression for points belonging to the BLS12-381, following the ideas in +/// Zcash curve compression, check https://hackmd.io/@benjaminion/bls12-381#Point-compression and https://github.com/zcash/librustzcash/blob/6e0364cd42a2b3d2b958a54771ef51a8db79dd29/pairing/src/bls12_381/README.md#serialization +/// The way we encode points differs from the one used ordinarily for serialization in lambdaworks. +/// G1 points are represented by their x coordinate in big-endian form (48 bytes), with the three most significant bits used to give information on the compressed format, whether the point is the point at infinity and which of the two roots to take +/// G2 points are represented by their x coordinate in big-endian form (96 bytes), following the order a * i + b. The three most significant bits contain the same type of information as in G1. impl Compress for BLS12381Curve { type G1Point = G1Point; @@ -75,6 +80,7 @@ impl Compress for BLS12381Curve { if second_bit == 1 { return Ok(G1Point::neutral_element()); } + // We obtain the third bit let third_bit = prefix_bits & 1_u8; let first_byte_without_control_bits = (first_byte << 3) >> 3; diff --git a/math/src/elliptic_curve/short_weierstrass/traits.rs b/math/src/elliptic_curve/short_weierstrass/traits.rs index b86261dfa..be456a3bd 100644 --- a/math/src/elliptic_curve/short_weierstrass/traits.rs +++ b/math/src/elliptic_curve/short_weierstrass/traits.rs @@ -16,7 +16,7 @@ pub trait IsShortWeierstrass: IsEllipticCurve + Clone + Debug { x: &FieldElement, y: &FieldElement, ) -> FieldElement { - y.pow(2_u16) - x.pow(3_u16) - Self::a() * x - Self::b() + y.square() - ((x.square() + Self::a()) * x + Self::b()) } } diff --git a/math/src/field/README.md b/math/src/field/README.md index c19b302aa..0bad353cb 100644 --- a/math/src/field/README.md +++ b/math/src/field/README.md @@ -8,10 +8,10 @@ This folder contains the different field backends, including field extensions. T - [Goldilocks-448](https://github.com/lambdaclass/lambdaworks/blob/main/math/src/field/fields/p448_goldilocks_prime_field.rs) - [Mersenne-31](https://github.com/lambdaclass/lambdaworks/blob/main/math/src/field/fields/mersenne31/field.rs): $2^{31} - 1$ and its [quadratic extension](https://github.com/lambdaclass/lambdaworks/blob/main/math/src/field/fields/mersenne31/extension.rs) - [Baby Bear](https://github.com/lambdaclass/lambdaworks/blob/main/math/src/field/fields/fft_friendly/babybear.rs) and its [quadratic extension](https://github.com/lambdaclass/lambdaworks/blob/main/math/src/field/fields/fft_friendly/quadratic_babybear.rs): FFT-friendly, $2^{31} - 2^{27} + 1$. -- [Scalar field of BN-254](https://github.com/lambdaclass/lambdaworks/blob/main/math/src/elliptic_curve/short_weierstrass/curves/bn_254/default_types.rs) -- [Base field of BN-254](https://github.com/lambdaclass/lambdaworks/blob/main/math/src/elliptic_curve/short_weierstrass/curves/bn_254/field_extension.rs) and its quadratic extension, quartic, sextic and twelth degree extensions. -- [Scalar field of BLS12-381](https://github.com/lambdaclass/lambdaworks/blob/main/math/src/elliptic_curve/short_weierstrass/curves/bls12_381/default_types.rs): FFT-friendly. -- [Base field of BLS12-381](https://github.com/lambdaclass/lambdaworks/blob/main/math/src/elliptic_curve/short_weierstrass/curves/bls12_381/field_extension.rs) and its quadratic, sextic and twelth degree extensions. +- [Scalar field of BN-254](https://github.com/lambdaclass/lambdaworks/blob/main/math/src/elliptic_curve/short_weierstrass/curves/bn_254/default_types.rs), and its quadratic extension, quartic, sextic and twelth degree extensions. This coincides with the base field of [Grumpkin](../elliptic_curve/short_weierstrass/curves/grumpkin/curve.rs) +- [Base field of BN-254](https://github.com/lambdaclass/lambdaworks/blob/main/math/src/elliptic_curve/short_weierstrass/curves/bn_254/field_extension.rs) and its quadratic extension. The base field coincides with the scalar field of [Grumpkin](../elliptic_curve/short_weierstrass/curves/grumpkin/curve.rs) +- [Scalar field of BLS12-381](https://github.com/lambdaclass/lambdaworks/blob/main/math/src/elliptic_curve/short_weierstrass/curves/bls12_381/default_types.rs), and its quadratic, sextic and twelth degree extensions. FFT-friendly. +- [Base field of BLS12-381](https://github.com/lambdaclass/lambdaworks/blob/main/math/src/elliptic_curve/short_weierstrass/curves/bls12_381/field_extension.rs) - [Scalar field of BLS12-377](https://github.com/lambdaclass/lambdaworks/blob/main/math/src/elliptic_curve/short_weierstrass/curves/bls12_377/curve.rs) - [Base field of BLS12-377](https://github.com/lambdaclass/lambdaworks/blob/main/math/src/elliptic_curve/short_weierstrass/curves/bls12_377/field_extension.rs) - [Base field of secp256k1](./fields/secp256k1_field.rs): the base field of Bitcoin's elliptic curve. @@ -233,11 +233,134 @@ Multiplication follows `cios`, unless there are spare bits in the modulus. For t Inversion is performed using Algorithm 16 (Binary Euclidean Algorithm) from [Guajardo, Kumar, Paar, Perzl](https://www.sandeep.de/my/papers/2006_ActaApplMath_EfficientSoftFiniteF.pdf). +## Extension fields + +In some applications in Cryptography, it may be necessary to work over an *extension field*. For example, to compute pairings we need to work over a larger field. Similarly, in STARKs, when we need to sample a random number, we want to do it from a large set, and we can do this by working with an extension of the original field. What are extension fields? You may have heard about [complex numbers](https://en.wikipedia.org/wiki/Complex_number). We can view them as a pair of real numbers $c = (a, b)$ with a multiplication operation defined as $(a_0 , b_0 ) \times (a_1 , b_1 ) = (a_0 a_1 - b_0 b_1 , a_0 b_1 + a_1 b_0 )$ and the addition as $(a_0 , b_0 ) + (a_1 , b_1 ) = (a_0 + a_1 , b_0 + b_1 )$. We can see real numbers as a subset of $\mathbb{C}$ of the form $(a , 0)$. It is common to introduce the imaginary unit, $i$, and write them also as $a + b i$, with $i^2 = - 1$ (you can check that $(0 , 1)^2 = - 1$). We see that when work with complex numbers of the form $(a , 0)$ this works as ordinary real numbers, and we see that complex numbers extend the real numbers, allowing us to find solutions to equations that cannot be solved over the real numbers. For example, $x^2 + 1 = 0$ does not have a solution over $\mathbb{R}$, but over $\mathbb{C}$ both $i$ and $- i$ solve the equation. We will focus on how to build the complex numbers from the real numbers, and then explain how to adapt this to the setting of finite fields. + +We will work with univariate polynomials over the real numbers. A univariate polynomial over the real numbers is an expression in an indeterminate, $x$, with coefficients taking their values over the real numbers, with the following form $p(x) = a_0 + a_1 x + a_2 x^2 + \dots + a_n x^n$. For example, $p(x) = \sqrt{2} + \pi x + 2 x^2 + 5x^3 - 56 x^4$. We can add, subtract and multiply polynomials similar to what we do with integers, which means that the polynomials form a ring. We denote the ring of polynomials over real numbers as $\mathbb{R} [x]$, the ring of polynomials over the integers as $\mathbb{Z} [x]$ and the ring of polynomials over a finite field as $\mathbb{F_p} [x]$. The highest $k$ such that $a_k \neq 0$ is called the degree of the polynomial; for our previous example it is 4. Given polynomials $p(x)$ and $d(x)$, there are polynomials $q(x)$ and $r(x)$ such that $p(x) = d(x)q(x) + r(x)$, with the degree of $r(x)$ less than the degree of $d(x)$ (this in analogous to the integer division with remainder). Given a polynomial $p(x)$, we can define the ring of polynomials modulo $p(x)$, denoted by $\mathbb{R} [x] / p(x)$. Operations in this ring work similar to integers: whenever the degree of the result exceeds or equals the degree of $p(x)$, we take the remainder $r(x)$ of the division between the result and $p(x)$ (basically, $p(x)$ acts like the modulus in finite fields). + +Many polynomials can be expressed in terms of lower degree polynomials. For example, $x^2 - 1 = (x + 1) (x - 1)$, $x^3 + 3x^2 + 3x + 1 = (x + 1)(x + 1)(x + 1)$. Over the real numbers, $I(x) = x^2 + 1$ cannot be expressed in terms of lower degree polynomials. We say that $I(x)$ is [irreducible](https://en.wikipedia.org/wiki/Irreducible_polynomial) over $\mathbb{R}$. If we consider the ring modulo an irreducible polynomial, $\mathbb{R} [x] / I(x)$, then $\mathbb{R} [x] / I(x)$ is a field. The degree of $I(x)$ is the degree of the extension. For example, in the case of the real numbers, $\mathbb{R} [x] / (x^2 + 1)$ coincides with our notion of the complex numbers. Every element there has the form $a + b x$. + +Addition (and subtraction) is done the usual way, $(a + b x) + (c + dx) = (a + c) + (b + d)x$. Multiplication is a bit more difficult, $(a + bx) \times (c + dx) = ac + (b c + a d) x + b d x^2$. But this polynomial has equal degree than $x^2 + 1$, so we take the remainder. The result is $ac - bd + (b c + a d)x$ (you can check that $x^2 = - 1$). + +In the case of complex numbers, we don't need to continue extending them further, since we can factor any polynomial over $\mathbb{C}$ (see the [fundamental theorem of algebra](https://en.wikipedia.org/wiki/Fundamental_theorem_of_algebra)). + +The recipe to build extension fields over finite fields is the same. We will start with the simplest case, when $\mathbb{F_p}$ is a prime field. For example, we are working with $p = 2^{31} - 1$, a Mersenne prime (we can see that $p \equiv 3 \pmod{4}$). We consider the polynomials with coefficients over $\mathbb{F_p} [x]$. It can be shown that $- 1$ has no square root over $\mathbb{F_p}$: this means that there is no $x$ such that $x^2 = - 1$ over $\mathbb{F_p}$. The polynomial $I(x) = x^2 + 1$ is, therefore, irreducible over $\mathbb{F_p}$ (note, $x^2 - 1$ is not always irreducible over arbitrary fields!). We can consider then $\mathbb{F_p} [x] / I(x)$ and the elements there are represented by $a + b x$. One caveat with the case of complex numbers is that the operations involving $a$ and $b$ are the operations of $\mathbb{F_p }$. For example, $(5 + 2^{31} x) + ((2^{31} - 6) - x) = 0 + 0x$. Since the degree of $I(x)$ is $2$, we say that we have a quadratic extension of $\mathbb{F_p}$ and will denote it $\mathbb{F_{ p^2 } }$. You could have chosen a different degree $2$ irreducible polynomial, but we can show that the two extensions are isomorphic. + +You can build other extensions looking for higher-degree irreducible polynomials. For example, if you consider the field $\mathbb{F_2} = \{0 , 1 \}$, the polynomial $x^8 + x^4 + x^3 + x + 1$ is irreducible, and you can define a degree $8$ extension of $\mathbb{F_2}$. + +There are different ways in which we can construct higher-degree extensions. For example, we can take our prime field and find an irreducible polynomial of degree $4$ and work with $\mathbb{F_p} / I(x)$. Each element in the field can be represented as $a + b x + c x^2 + dx^3$. We can also use a towered approach: we first find an irreducible polynomial $I(x)$ of degree $2$ and obtain $\mathbb{F_{ p^2 } } = \mathbb{F_p} / I(x)$. Each element is of the form $a + b x$. Since the extension is also a field, we can find an irreducible polynomial over ${F_{ p^2 } }$, $J(y)$, of degree $2$ and consider ${F_{ p^2 } } [y] / J(y)$. Then, each element there is of the form $a^\prime + b^\prime y$, where $a^\prime$ and $b^\prime$ live in ${F_{ p^2 } }$. Since every element in ${F_{ p^2 } }$ is of the form $a_0 + a_1 x$, we get that $a_0 + a_1 x + b_0 y + b_1 x y$. Even though the extensions look different, there is an isomorphism connecting the two. Depending on the application, one form or the other can be more efficient. + +While some of the underlying concepts can be difficult to grasp, defining extension fields is simpler in lambdaworks. While we could allow you to define arbitrary extensions, we provide methods to define quadratic and cubic extensions over fields. To define a quadratic extension, you need to implement the following trait: + +```rust +pub trait HasQuadraticNonResidue { + fn residue() -> FieldElement; +} +``` + +Here, we assume that you want to define a quadratic extension of the form $x^2 - \mathrm{residue}$, where $\mathrm{residue}$ is not a square over your field. In the case of the Mersenne prime $2^{31} - 1$, $\mathrm{residue} = - 1$ (you could use other quadratic non-residues, but this can lead to slower field extension operations). Similarly, for cubic extensions we have + +```rust +pub trait HasCubicNonResidue { + /// This function must return an element that is not a cube in Fp, + /// that is, a cubic non-residue. + fn residue() -> FieldElement; +} +``` + +For example, the following code defines the default quadratic extension for BabyBear: + +```rust +pub type QuadraticBabybearField = + QuadraticExtensionField; + +impl HasQuadraticNonResidue for Babybear31PrimeField { + fn residue() -> FieldElement { + -FieldElement::one() + } +} + +/// Field element type for the quadratic extension of Babybear +pub type QuadraticBabybearFieldElement = + QuadraticExtensionFieldElement; +``` + +You can also create a separate quadratic extension by implementing the `IsField` trait for the quadratic extension, + +```rust +#[derive(Clone, Debug)] +pub struct BLS12381FieldModulus; +impl IsModulus for BLS12381FieldModulus { + const MODULUS: U384 = BLS12381_PRIME_FIELD_ORDER; +} + +pub type BLS12381PrimeField = MontgomeryBackendPrimeField; + +////////////////// +#[derive(Clone, Debug)] +pub struct Degree2ExtensionField; + +impl IsField for Degree2ExtensionField { + type BaseType = [FieldElement; 2]; + /// Returns the component wise addition of `a` and `b` + fn add(a: &Self::BaseType, b: &Self::BaseType) -> Self::BaseType { + [&a[0] + &b[0], &a[1] + &b[1]] + } + + /// Returns the multiplication of `a` and `b` using the following + /// equation: + /// (a0 + a1 * t) * (b0 + b1 * t) = a0 * b0 + a1 * b1 * Self::residue() + (a0 * b1 + a1 * b0) * t + /// where `t.pow(2)` equals `Q::residue()`. + fn mul(a: &Self::BaseType, b: &Self::BaseType) -> Self::BaseType { + let a0b0 = &a[0] * &b[0]; + let a1b1 = &a[1] * &b[1]; + let z = (&a[0] + &a[1]) * (&b[0] + &b[1]); + [&a0b0 - &a1b1, z - a0b0 - a1b1] + } +} +``` + +You should then implement the operations for the field, such as addition, multiplication, subtraction, inversion and so on. This is more convenient if you can avoid doing extra operations and defining the residue. You can also optimize the operations between elements of the base field and the extension field by implementing the trait `IsSubFieldOf`. + +```rust +impl IsSubFieldOf for BLS12381PrimeField { + fn mul( + a: &Self::BaseType, + b: &::BaseType, + ) -> ::BaseType { + let c0 = FieldElement::from_raw(::mul(a, b[0].value())); + let c1 = FieldElement::from_raw(::mul(a, b[1].value())); + [c0, c1] + } +} +``` + +Once you have the quadratic extension, you can build another extension (tower approach). For example, to define a degree 3 extension field over the quadratic extension of the BLS12-381 scalar field, we have + +```rust +#[derive(Debug, Clone)] +pub struct LevelTwoResidue; +impl HasCubicNonResidue for LevelTwoResidue { + fn residue() -> FieldElement { + FieldElement::new([ + FieldElement::new(U384::from("1")), + FieldElement::new(U384::from("1")), + ]) + } +} + +pub type Degree6ExtensionField = CubicExtensionField; +``` + +This defines a 6th degree extension over the scalar field of BLS12-381. We only need to define the cubic (non) residue, which is an element of $\mathbb{F_{ p^2 } }$. + ## Exercises - Define the base field of the Ed25519 elliptic curve, defined by the prime $p$. - Check whether $- 1$ is a quadratic residue. -- Compute $100^{65537} \pmod p$ +- Compute $100^{65537} \pmod p$ +- Define a degree 4 extension of the BabyBear field. ## References From d663fdf8b4e1b10b770dc3137024d36dda4b545c Mon Sep 17 00:00:00 2001 From: feltroid Prime <96737978+feltroidprime@users.noreply.github.com> Date: Wed, 25 Sep 2024 00:00:09 +0200 Subject: [PATCH 02/12] xgcd method for Polynomials (#885) Co-authored-by: Diego K <43053772+diegokingston@users.noreply.github.com> Co-authored-by: Mario Rugiero --- math/src/polynomial/mod.rs | 55 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/math/src/polynomial/mod.rs b/math/src/polynomial/mod.rs index 8a0671776..ee27923d0 100644 --- a/math/src/polynomial/mod.rs +++ b/math/src/polynomial/mod.rs @@ -192,6 +192,36 @@ impl Polynomial> { } } + /// Extended Euclidean Algorithm for polynomials. + /// + /// This method computes the extended greatest common divisor (GCD) of two polynomials `self` and `y`. + /// It returns a tuple of three elements: `(a, b, g)` such that `a * self + b * y = g`, where `g` is the + /// greatest common divisor of `self` and `y`. + pub fn xgcd(&self, y: &Self) -> (Self, Self, Self) { + let one = Polynomial::new(&[FieldElement::one()]); + let zero = Polynomial::zero(); + let (mut old_r, mut r) = (self.clone(), y.clone()); + let (mut old_s, mut s) = (one.clone(), zero.clone()); + let (mut old_t, mut t) = (zero.clone(), one.clone()); + + while r != Polynomial::zero() { + let quotient = old_r.clone().div_with_ref(&r); + old_r = old_r - "ient * &r; + core::mem::swap(&mut old_r, &mut r); + old_s = old_s - "ient * &s; + core::mem::swap(&mut old_s, &mut s); + old_t = old_t - "ient * &t; + core::mem::swap(&mut old_t, &mut t); + } + + let lcinv = old_r.leading_coefficient().inv().unwrap(); + ( + old_s.scale_coeffs(&lcinv), + old_t.scale_coeffs(&lcinv), + old_r.scale_coeffs(&lcinv), + ) + } + pub fn div_with_ref(self, dividend: &Self) -> Self { let (quotient, _remainder) = self.long_division_with_remainder(dividend); quotient @@ -1122,4 +1152,29 @@ mod tests { prop_assert_eq!(q, p); } } + #[test] + fn test_xgcd() { + // Case 1: Simple polynomials + let p1 = Polynomial::new(&[FE::new(1), FE::new(0), FE::new(1)]); // x^2 + 1 + let p2 = Polynomial::new(&[FE::new(1), FE::new(1)]); // x + 1 + let (a, b, g) = p1.xgcd(&p2); + // Check that a * p1 + b * p2 = g + let lhs = a.mul_with_ref(&p1) + b.mul_with_ref(&p2); + assert_eq!(a, Polynomial::new(&[FE::new(12)])); + assert_eq!(b, Polynomial::new(&[FE::new(12), FE::new(11)])); + assert_eq!(lhs, g); + assert_eq!(g, Polynomial::new(&[FE::new(1)])); + + // x^2-1 : + let p3 = Polynomial::new(&[FE::new(ORDER - 1), FE::new(0), FE::new(1)]); + // x^3-x = x(x^2-1) + let p4 = Polynomial::new(&[FE::new(0), FE::new(ORDER - 1), FE::new(0), FE::new(1)]); + let (a, b, g) = p3.xgcd(&p4); + + let lhs = a.mul_with_ref(&p3) + b.mul_with_ref(&p4); + assert_eq!(a, Polynomial::new(&[FE::new(1)])); + assert_eq!(b, Polynomial::zero()); + assert_eq!(lhs, g); + assert_eq!(g, p3); + } } From a591186e6c4dd53301b03b4ddd69369abe99f960 Mon Sep 17 00:00:00 2001 From: jotabulacios <45471455+jotabulacios@users.noreply.github.com> Date: Wed, 25 Sep 2024 16:26:38 -0300 Subject: [PATCH 03/12] Add Jacobian coordinates for Short Weierstrass (#917) * first commit, add some operations for jacobian coordinates * save work * save work * implemented the Jacobian coordintes and tested it * do as clippy says * add tests and correct some code based on PR comments * small refactor * fix neutral element * Disable failing test temporarily * add point validation, update functions and tests * fix operate_with for jacobian coordinates --------- Co-authored-by: Diego K <43053772+diegokingston@users.noreply.github.com> --- math/src/elliptic_curve/point.rs | 75 ++++- .../curves/bls12_381/curve.rs | 2 + .../elliptic_curve/short_weierstrass/point.rs | 304 +++++++++++++++++- 3 files changed, 377 insertions(+), 4 deletions(-) diff --git a/math/src/elliptic_curve/point.rs b/math/src/elliptic_curve/point.rs index b55b541e1..7652981c5 100644 --- a/math/src/elliptic_curve/point.rs +++ b/math/src/elliptic_curve/point.rs @@ -42,7 +42,7 @@ impl ProjectivePoint { let [x, y, z] = self.coordinates(); // If it's the point at infinite if z == &FieldElement::zero() { - // We make sure all the points in the infinite have the same values + // We make sure all the points at infinite have the same values return Self::new([ FieldElement::zero(), FieldElement::one(), @@ -63,7 +63,80 @@ impl PartialEq for ProjectivePoint { } impl Eq for ProjectivePoint {} +#[derive(Debug, Clone)] + +pub struct JacobianPoint { + pub value: [FieldElement; 3], +} + +impl JacobianPoint { + /// Creates an elliptic curve point giving the Jacobian [x: y: z] coordinates. + pub const fn new(value: [FieldElement; 3]) -> Self { + Self { value } + } + /// Returns the `x` coordinate of the point. + pub fn x(&self) -> &FieldElement { + &self.value[0] + } + + /// Returns the `y` coordinate of the point. + pub fn y(&self) -> &FieldElement { + &self.value[1] + } + + /// Returns the `z` coordinate of the point. + pub fn z(&self) -> &FieldElement { + &self.value[2] + } + + /// Returns a tuple [x, y, z] with the coordinates of the point. + pub fn coordinates(&self) -> &[FieldElement; 3] { + &self.value + } + + pub fn to_affine(&self) -> Self { + let [x, y, z] = self.coordinates(); + // If it's the point at infinite + if z == &FieldElement::zero() { + // We make sure all the points at infinite have the same values + return Self::new([ + FieldElement::one(), + FieldElement::one(), + FieldElement::zero(), + ]); + }; + let inv_z = z.inv().unwrap(); + let inv_z_square = inv_z.square(); + let inv_z_cube = &inv_z_square * &inv_z; + JacobianPoint::new([x * inv_z_square, y * inv_z_cube, FieldElement::one()]) + } +} + +impl PartialEq for JacobianPoint { + fn eq(&self, other: &Self) -> bool { + // In Jacobian coordinates, the equality of two points is defined as: + // X1 * Z2^2 == X2 * Z1^2 y Y1 * Z2^3 == Y2 * Z1^3 + + let [px, py, pz] = self.coordinates(); + let [qx, qy, qz] = other.coordinates(); + + let zp_sq = pz.square(); + let zq_sq = qz.square(); + + let zp_cu = &zp_sq * pz; + let zq_cu = &zq_sq * qz; + + let xp_zq_sq = px * zq_sq; + let xq_zp_sq = qx * zp_sq; + + let yp_zq_cu = py * zq_cu; + let yq_zp_cu = qy * zp_cu; + + (xp_zq_sq == xq_zp_sq) && (yp_zq_cu == yq_zp_cu) + } +} +impl Eq for JacobianPoint {} #[cfg(test)] mod tests { use crate::cyclic_group::IsGroup; diff --git a/math/src/elliptic_curve/short_weierstrass/curves/bls12_381/curve.rs b/math/src/elliptic_curve/short_weierstrass/curves/bls12_381/curve.rs index ece973a4f..a080aa77b 100644 --- a/math/src/elliptic_curve/short_weierstrass/curves/bls12_381/curve.rs +++ b/math/src/elliptic_curve/short_weierstrass/curves/bls12_381/curve.rs @@ -13,6 +13,8 @@ use crate::{ pub const SUBGROUP_ORDER: U256 = U256::from_hex_unchecked("73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001"); +pub const CURVE_COFACTOR: U256 = U256::from_hex_unchecked("0x396c8c005555e1568c00aaab0000aaab"); + pub type BLS12381FieldElement = FieldElement; pub type BLS12381TwistCurveFieldElement = FieldElement; diff --git a/math/src/elliptic_curve/short_weierstrass/point.rs b/math/src/elliptic_curve/short_weierstrass/point.rs index ec30219b1..888d3f50a 100644 --- a/math/src/elliptic_curve/short_weierstrass/point.rs +++ b/math/src/elliptic_curve/short_weierstrass/point.rs @@ -1,7 +1,7 @@ use crate::{ cyclic_group::IsGroup, elliptic_curve::{ - point::ProjectivePoint, + point::{JacobianPoint, ProjectivePoint}, traits::{EllipticCurveError, FromAffine, IsEllipticCurve}, }, errors::DeserializationError, @@ -15,7 +15,6 @@ use super::traits::IsShortWeierstrass; use crate::traits::AsBytes; #[cfg(feature = "alloc")] use alloc::vec::Vec; - #[derive(Clone, Debug)] pub struct ShortWeierstrassProjectivePoint(pub ProjectivePoint); @@ -85,7 +84,7 @@ impl ShortWeierstrassProjectivePoint { let zp = eight_s_cube; Self::new([xp, yp, zp]) } - + // https://hyperelliptic.org/EFD/g1p/data/shortw/projective/addition/madd-1998-cmo pub fn operate_with_affine(&self, other: &Self) -> Self { let [px, py, pz] = self.coordinates(); let [qx, qy, _qz] = other.coordinates(); @@ -377,11 +376,229 @@ where } } +#[derive(Clone, Debug)] +pub struct ShortWeierstrassJacobianPoint(pub JacobianPoint); + +impl ShortWeierstrassJacobianPoint { + /// Creates an elliptic curve point giving the projective [x: y: z] coordinates. + pub const fn new(value: [FieldElement; 3]) -> Self { + Self(JacobianPoint::new(value)) + } + + /// Returns the `x` coordinate of the point. + pub fn x(&self) -> &FieldElement { + self.0.x() + } + + /// Returns the `y` coordinate of the point. + pub fn y(&self) -> &FieldElement { + self.0.y() + } + + /// Returns the `z` coordinate of the point. + pub fn z(&self) -> &FieldElement { + self.0.z() + } + + /// Returns a tuple [x, y, z] with the coordinates of the point. + pub fn coordinates(&self) -> &[FieldElement; 3] { + self.0.coordinates() + } + + /// Creates the same point in affine coordinates. That is, + /// returns [x / z^2: y / z^3: 1] where `self` is [x: y: z]. + /// Panics if `self` is the point at infinity. + pub fn to_affine(&self) -> Self { + Self(self.0.to_affine()) + } + + pub fn double(&self) -> Self { + if self.is_neutral_element() { + return self.clone(); + } + let [x1, y1, z1] = self.coordinates(); + //http://www.hyperelliptic.org/EFD/g1p/data/shortw/jacobian-0/doubling/dbl-2009-l + + if E::a() == FieldElement::zero() { + let a = x1.square(); // A = x1^2 + let b = y1.square(); // B = y1^2 + let c = b.square(); // C = B^2 + let x1_plus_b = x1 + &b; // (X1 + B) + let x1_plus_b_square = x1_plus_b.square(); // (X1 + B)^2 + let d = (&x1_plus_b_square - &a - &c).double(); // D = 2 * ((X1 + B)^2 - A - C) + let e = &a.double() + &a; // E = 3 * A + let f = e.square(); // F = E^2 + let x3 = &f - &d.double(); // X3 = F - 2 * D + let y3 = &e * (&d - &x3) - &c.double().double().double(); // Y3 = E * (D - X3) - 8 * C + let z3 = (y1 * z1).double(); // Z3 = 2 * Y1 * Z1 + + Self::new([x3, y3, z3]) + } else { + // http://www.hyperelliptic.org/EFD/g1p/data/shortw/jacobian-0/doubling/dbl-2009-alnr + // http://www.hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#doubling-dbl-2009-l + let xx = x1.square(); // XX = X1^2 + let yy = y1.square(); // YY = Y1^2 + let yyyy = yy.square(); // YYYY = YY^2 + let zz = z1.square(); // ZZ = Z1^2 + let s = ((x1 + &yy).square() - &xx - &yyyy).double(); // S = 2 * ((X1 + YY)^2 - XX - YYYY) + let m = &xx.double() + &xx + &E::a() * &zz.square(); // M = 3 * XX + a * ZZ^2 + let x3 = m.square() - &s.double(); // X3 = M^2 - 2 * S + let y3 = m * (&s - &x3) - &yyyy.double().double().double(); // Y3 = M * (S - X3) - 8 * YYYY + let z3 = (y1 + z1).square() - &yy - &zz; // Z3 = (Y1 + Z1)^2 - YY - ZZ + + Self::new([x3, y3, z3]) + } + } + + pub fn operate_with_affine(&self, other: &Self) -> Self { + let [x1, y1, z1] = self.coordinates(); + let [x2, y2, _z2] = other.coordinates(); + + if self.is_neutral_element() { + return other.clone(); + } + if other.is_neutral_element() { + return self.clone(); + } + + let z1z1 = z1.square(); + let u1 = x1; + let u2 = x2 * &z1z1; + let s1 = y1; + let s2 = y2 * z1 * &z1z1; + + if *u1 == u2 { + if *s1 == s2 { + self.double() // Is the same point + } else { + Self::neutral_element() // P + (-P) = 0 + } + } else { + let h = &u2 - u1; + let hh = h.square(); + let hhh = &h * &hh; + let r = &s2 - s1; + let v = u1 * &hh; + let x3 = r.square() - (&hhh + &v + &v); + let y3 = r * (&v - &x3) - s1 * &hhh; + let z3 = z1 * &h; + + Self::new([x3, y3, z3]) + } + } +} + +impl PartialEq for ShortWeierstrassJacobianPoint { + fn eq(&self, other: &Self) -> bool { + self.0 == other.0 + } +} + +impl Eq for ShortWeierstrassJacobianPoint {} + +impl FromAffine for ShortWeierstrassJacobianPoint { + fn from_affine( + x: FieldElement, + y: FieldElement, + ) -> Result { + if E::defining_equation(&x, &y) != FieldElement::zero() { + Err(EllipticCurveError::InvalidPoint) + } else { + let coordinates = [x, y, FieldElement::one()]; + Ok(ShortWeierstrassJacobianPoint::new(coordinates)) + } + } +} + +impl IsGroup for ShortWeierstrassJacobianPoint { + /// The point at infinity. + fn neutral_element() -> Self { + Self::new([ + FieldElement::one(), + FieldElement::one(), + FieldElement::zero(), + ]) + } + + fn is_neutral_element(&self) -> bool { + let pz = self.z(); + pz == &FieldElement::zero() + } + + /// Computes the addition of `self` and `other`. + /// https://github.com/mratsim/constantine/blob/65147ed815d96fa94a05d307c1d9980877b7d0e8/constantine/math/elliptic/ec_shortweierstrass_jacobian.md + fn operate_with(&self, other: &Self) -> Self { + if self.is_neutral_element() { + return other.clone(); + } + + if other.is_neutral_element() { + return self.clone(); + } + + let [x1, y1, z1] = self.coordinates(); + let [x2, y2, z2] = other.coordinates(); + + let z1_sq = z1.square(); // Z1^2 + let z2_sq = z2.square(); // Z2^2 + + let u1 = x1 * &z2_sq; // U1 = X1 * Z2^2 + let u2 = x2 * &z1_sq; // U2 = X2 * Z1^2 + + let z1_cu = z1 * &z1_sq; // Z1^3 + let z2_cu = z2 * &z2_sq; // Z2^3 + + let s1 = y1 * &z2_cu; // S1 = Y1 * Z2^3 + let s2 = y2 * &z1_cu; // S2 = Y2 * Z1^3 + + if u1 == u2 { + if s1 == s2 { + return self.double(); // P + P = 2P + } else { + return Self::neutral_element(); // P + (-P) = 0 + } + } + // H = U2 - U1 + let h = u2 - &u1; + // I = (2 * H)^2 + let i = h.double().square(); + // J = H * I + let j = -(&h * &i); + + // R = 2 * (S2 - S1) + let r = (s2 - &s1).double(); + + // V = U1 * I + let v = u1 * &i; + + // X3 = R^2 + J - 2 * V + let x3 = r.square() + &j - v.double(); + + // Y3 = R * (V - X3) + 2 * S1 * J + let y3 = r * (v - &x3) + (s1 * &j.double()); + + // Z3 = 2 * Z1 * Z2 * H + let z3 = z1 * z2; + let z3 = z3.double() * h; + + Self::new([x3, y3, z3]) + } + + /// Returns the additive inverse of the jacobian point `p` + fn neg(&self) -> Self { + let [x, y, z] = self.coordinates(); + Self::new([x.clone(), -y, z.clone()]) + } +} + #[cfg(test)] mod tests { use super::*; use crate::elliptic_curve::short_weierstrass::curves::bls12_381::curve::BLS12381Curve; + use crate::elliptic_curve::short_weierstrass::curves::bls12_381::curve::{ + CURVE_COFACTOR, SUBGROUP_ORDER, + }; #[cfg(feature = "alloc")] use crate::{ elliptic_curve::short_weierstrass::curves::bls12_381::field_extension::BLS12381PrimeField, @@ -399,6 +616,28 @@ mod tests { BLS12381Curve::create_point_from_affine(x, y).unwrap() } + #[cfg(feature = "alloc")] + #[test] + fn operate_with_works_jacobian() { + let x = FEE::new_base("36bb494facde72d0da5c770c4b16d9b2d45cfdc27604a25a1a80b020798e5b0dbd4c6d939a8f8820f042a29ce552ee5"); + let y = FEE::new_base("7acf6e49cc000ff53b06ee1d27056734019c0a1edfa16684da41ebb0c56750f73bc1b0eae4c6c241808a5e485af0ba0"); + let p = ShortWeierstrassJacobianPoint::::from_affine(x, y).unwrap(); + + assert_eq!(p.operate_with(&p), p.double()); + } + + #[cfg(feature = "alloc")] + #[test] + fn operate_with_self_works_jacobian() { + let x = FEE::new_base("36bb494facde72d0da5c770c4b16d9b2d45cfdc27604a25a1a80b020798e5b0dbd4c6d939a8f8820f042a29ce552ee5"); + let y = FEE::new_base("7acf6e49cc000ff53b06ee1d27056734019c0a1edfa16684da41ebb0c56750f73bc1b0eae4c6c241808a5e485af0ba0"); + let p = ShortWeierstrassJacobianPoint::::from_affine(x, y).unwrap(); + + assert_eq!( + p.operate_with_self(5_u16), + p.double().double().operate_with(&p) + ); + } #[cfg(feature = "alloc")] #[test] fn byte_conversion_from_and_to_be_projective() { @@ -586,4 +825,63 @@ mod tests { DeserializationError::InvalidAmountOfBytes ); } + + #[test] + fn test_jacobian_vs_projective_operation() { + let x = FEE::new_base("36bb494facde72d0da5c770c4b16d9b2d45cfdc27604a25a1a80b020798e5b0dbd4c6d939a8f8820f042a29ce552ee5"); + let y = FEE::new_base("7acf6e49cc000ff53b06ee1d27056734019c0a1edfa16684da41ebb0c56750f73bc1b0eae4c6c241808a5e485af0ba0"); + + let p = ShortWeierstrassJacobianPoint::::from_affine(x.clone(), y.clone()) + .unwrap(); + let q = ShortWeierstrassProjectivePoint::::from_affine(x, y).unwrap(); + + let sum_jacobian = p.operate_with_self(7_u16); + let sum_projective = q.operate_with_self(7_u16); + + // Convert the result to affine coordinates + let sum_jacobian_affine = sum_jacobian.to_affine(); + let [x_j, y_j, _] = sum_jacobian_affine.coordinates(); + + // Convert the result to affine coordinates + let binding = sum_projective.to_affine(); + let [x_p, y_p, _] = binding.coordinates(); + + assert_eq!(x_j, x_p, "x coordintates do not match"); + assert_eq!(y_j, y_p, "y coordinates do not match"); + } + + #[test] + fn test_multiplication_by_order_projective() { + let x = FEE::new_base("36bb494facde72d0da5c770c4b16d9b2d45cfdc27604a25a1a80b020798e5b0dbd4c6d939a8f8820f042a29ce552ee5"); + let y = FEE::new_base("7acf6e49cc000ff53b06ee1d27056734019c0a1edfa16684da41ebb0c56750f73bc1b0eae4c6c241808a5e485af0ba0"); + + let p = ShortWeierstrassProjectivePoint::::from_affine(x.clone(), y.clone()) + .unwrap(); + + let g = p + .operate_with_self(SUBGROUP_ORDER) + .operate_with_self(CURVE_COFACTOR); + + assert!( + g.is_neutral_element(), + "Multiplication by order should result in the neutral element" + ); + } + + #[test] + fn test_multiplication_by_order_jacobian() { + let x = FEE::new_base("36bb494facde72d0da5c770c4b16d9b2d45cfdc27604a25a1a80b020798e5b0dbd4c6d939a8f8820f042a29ce552ee5"); + let y = FEE::new_base("7acf6e49cc000ff53b06ee1d27056734019c0a1edfa16684da41ebb0c56750f73bc1b0eae4c6c241808a5e485af0ba0"); + + let p = ShortWeierstrassJacobianPoint::::from_affine(x.clone(), y.clone()) + .unwrap(); + let g = p + .operate_with_self(SUBGROUP_ORDER) + .operate_with_self(CURVE_COFACTOR); + + assert!( + g.is_neutral_element(), + "Multiplication by order should result in the neutral element" + ); + } } From 0103cee25e155e0a9dfc6ef5970361b5bfa24327 Mon Sep 17 00:00:00 2001 From: Diego K <43053772+diegokingston@users.noreply.github.com> Date: Fri, 27 Sep 2024 11:32:12 -0300 Subject: [PATCH 04/12] Clean repo, remove cairo prover and update readme (#920) * clean readme * add binary fields * remove cairo prover * remove cairo ffi * fmt * clean things * remove dependencies * fix cli * fix * fix --- .github/workflows/ci.yaml | 33 +- .github/workflows/criterion_benchs.yml | 11 +- Cargo.toml | 3 +- Makefile | 26 +- README.md | 21 +- provers/README.md | 3 +- provers/cairo/Cargo.toml | 121 - provers/cairo/Makefile | 63 - provers/cairo/README.md | 223 -- provers/cairo/benches/criterion_prover.rs | 67 - provers/cairo/benches/criterion_prover_70k.rs | 61 - provers/cairo/benches/criterion_verifier.rs | 87 - .../cairo/benches/criterion_verifier_70k.rs | 79 - provers/cairo/benches/functions/cairo.rs | 6 - provers/cairo/benches/functions/mod.rs | 2 - provers/cairo/benches/functions/stark.rs | 14 - .../cairo/benches/proofs/fibonacci_1000.proof | Bin 371566 -> 0 bytes .../cairo/benches/proofs/fibonacci_500.proof | Bin 336318 -> 0 bytes .../benches/proofs/fibonacci_70000.proof | Bin 65710 -> 0 bytes provers/cairo/cairo_compile.Dockerfile | 11 - .../cairo/cairo_programs/cairo0/.gitignore | 2 - .../cairo_programs/cairo0/call_func.cairo | 13 - .../cairo0/compare_lesser_array.cairo | 39 - .../cairo_programs/cairo0/fibonacci_10.cairo | 19 - .../cairo_programs/cairo0/fibonacci_100.cairo | 19 - .../cairo0/fibonacci_1000.cairo | 19 - .../cairo0/fibonacci_10000.cairo | 19 - .../cairo0/fibonacci_10000_loop.cairo | 21 - .../cairo_programs/cairo0/fibonacci_5.cairo | 19 - .../cairo_programs/cairo0/fibonacci_500.cairo | 19 - .../cairo0/fibonacci_5_loop.cairo | 21 - .../cairo0/fibonacci_5_memory.bin | Bin 2840 -> 0 bytes .../cairo0/fibonacci_5_trace.bin | Bin 1536 -> 0 bytes .../cairo0/fibonacci_70000.cairo | 19 - .../cairo_programs/cairo0/lt_comparison.cairo | 10 - .../cairo0/output_program.cairo | 12 - .../cairo_programs/cairo0/rc_program.cairo | 9 - .../cairo0/signed_div_rem.cairo | 50 - .../cairo0/simple_program.cairo | 7 - provers/cairo/ffi/Cargo.toml | 15 - provers/cairo/ffi/fibo_5.proof | Bin 265809 -> 0 bytes provers/cairo/ffi/src/lib.rs | 71 - provers/cairo/proof.proof | Bin 265805 -> 0 bytes provers/cairo/requirements.txt | 6 - provers/cairo/src/air.rs | 1109 ------ provers/cairo/src/cairo_layout.rs | 30 - provers/cairo/src/cairo_mem.rs | 130 - provers/cairo/src/commands.rs | 64 - provers/cairo/src/decode/instruction_flags.rs | 771 ---- .../cairo/src/decode/instruction_offsets.rs | 94 - provers/cairo/src/decode/mod.rs | 2 - provers/cairo/src/errors.rs | 24 - provers/cairo/src/execution_trace.rs | 750 ---- provers/cairo/src/lib.rs | 22 - provers/cairo/src/main.rs | 350 -- provers/cairo/src/register_states.rs | 259 -- provers/cairo/src/runner/file_writer.rs | 35 - provers/cairo/src/runner/mod.rs | 3 - provers/cairo/src/runner/run.rs | 187 - provers/cairo/src/runner/vec_writer.rs | 58 - provers/cairo/src/tests/data/mul_mem.out | Bin 320 -> 0 bytes provers/cairo/src/tests/data/mul_trace.out | Bin 72 -> 0 bytes provers/cairo/src/tests/integration_tests.rs | 194 - provers/cairo/src/tests/mod.rs | 2 - provers/cairo/src/tests/utils.rs | 49 - provers/cairo/src/transition_constraints.rs | 3219 ----------------- provers/cairo/src/wasm_wrappers.rs | 73 - provers/cairo/tests/wasm.rs | 1238 ------- 68 files changed, 15 insertions(+), 9888 deletions(-) delete mode 100644 provers/cairo/Cargo.toml delete mode 100644 provers/cairo/Makefile delete mode 100644 provers/cairo/README.md delete mode 100644 provers/cairo/benches/criterion_prover.rs delete mode 100644 provers/cairo/benches/criterion_prover_70k.rs delete mode 100644 provers/cairo/benches/criterion_verifier.rs delete mode 100644 provers/cairo/benches/criterion_verifier_70k.rs delete mode 100644 provers/cairo/benches/functions/cairo.rs delete mode 100644 provers/cairo/benches/functions/mod.rs delete mode 100644 provers/cairo/benches/functions/stark.rs delete mode 100644 provers/cairo/benches/proofs/fibonacci_1000.proof delete mode 100644 provers/cairo/benches/proofs/fibonacci_500.proof delete mode 100644 provers/cairo/benches/proofs/fibonacci_70000.proof delete mode 100644 provers/cairo/cairo_compile.Dockerfile delete mode 100644 provers/cairo/cairo_programs/cairo0/.gitignore delete mode 100644 provers/cairo/cairo_programs/cairo0/call_func.cairo delete mode 100644 provers/cairo/cairo_programs/cairo0/compare_lesser_array.cairo delete mode 100644 provers/cairo/cairo_programs/cairo0/fibonacci_10.cairo delete mode 100644 provers/cairo/cairo_programs/cairo0/fibonacci_100.cairo delete mode 100644 provers/cairo/cairo_programs/cairo0/fibonacci_1000.cairo delete mode 100644 provers/cairo/cairo_programs/cairo0/fibonacci_10000.cairo delete mode 100644 provers/cairo/cairo_programs/cairo0/fibonacci_10000_loop.cairo delete mode 100644 provers/cairo/cairo_programs/cairo0/fibonacci_5.cairo delete mode 100644 provers/cairo/cairo_programs/cairo0/fibonacci_500.cairo delete mode 100644 provers/cairo/cairo_programs/cairo0/fibonacci_5_loop.cairo delete mode 100644 provers/cairo/cairo_programs/cairo0/fibonacci_5_memory.bin delete mode 100644 provers/cairo/cairo_programs/cairo0/fibonacci_5_trace.bin delete mode 100644 provers/cairo/cairo_programs/cairo0/fibonacci_70000.cairo delete mode 100644 provers/cairo/cairo_programs/cairo0/lt_comparison.cairo delete mode 100644 provers/cairo/cairo_programs/cairo0/output_program.cairo delete mode 100644 provers/cairo/cairo_programs/cairo0/rc_program.cairo delete mode 100644 provers/cairo/cairo_programs/cairo0/signed_div_rem.cairo delete mode 100644 provers/cairo/cairo_programs/cairo0/simple_program.cairo delete mode 100644 provers/cairo/ffi/Cargo.toml delete mode 100644 provers/cairo/ffi/fibo_5.proof delete mode 100644 provers/cairo/ffi/src/lib.rs delete mode 100644 provers/cairo/proof.proof delete mode 100644 provers/cairo/requirements.txt delete mode 100644 provers/cairo/src/air.rs delete mode 100644 provers/cairo/src/cairo_layout.rs delete mode 100644 provers/cairo/src/cairo_mem.rs delete mode 100644 provers/cairo/src/commands.rs delete mode 100644 provers/cairo/src/decode/instruction_flags.rs delete mode 100644 provers/cairo/src/decode/instruction_offsets.rs delete mode 100644 provers/cairo/src/decode/mod.rs delete mode 100644 provers/cairo/src/errors.rs delete mode 100644 provers/cairo/src/execution_trace.rs delete mode 100644 provers/cairo/src/lib.rs delete mode 100644 provers/cairo/src/main.rs delete mode 100644 provers/cairo/src/register_states.rs delete mode 100644 provers/cairo/src/runner/file_writer.rs delete mode 100644 provers/cairo/src/runner/mod.rs delete mode 100644 provers/cairo/src/runner/run.rs delete mode 100644 provers/cairo/src/runner/vec_writer.rs delete mode 100644 provers/cairo/src/tests/data/mul_mem.out delete mode 100644 provers/cairo/src/tests/data/mul_trace.out delete mode 100644 provers/cairo/src/tests/integration_tests.rs delete mode 100644 provers/cairo/src/tests/mod.rs delete mode 100644 provers/cairo/src/tests/utils.rs delete mode 100644 provers/cairo/src/transition_constraints.rs delete mode 100644 provers/cairo/src/wasm_wrappers.rs delete mode 100644 provers/cairo/tests/wasm.rs diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 0156177cc..41080eb25 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -30,13 +30,13 @@ jobs: - name: Run cargo check run: cargo check - - name: Run cargo check cli and stark instruments + - name: Run cargo check and stark instruments run: | - cargo check --features cli,instruments + cargo check --features instruments - name: Run cargo check cli, stark instruments and parallel run: | - cargo check --features cli,instruments,parallel + cargo check --features instruments,parallel - name: Run cargo check for math with no-std run: cargo check --package lambdaworks-math --no-default-features @@ -104,15 +104,6 @@ jobs: - name: Set up cargo cache uses: Swatinem/rust-cache@v2 - - name: Python3 build - uses: actions/setup-python@v4 - with: - python-version: "3.9" - cache: "pip" - - - name: Install cairo-lang toolchain and dependencies - run: pip install -r provers/cairo/requirements.txt - - name: Install testing tools uses: taiki-e/install-action@v2 with: @@ -171,12 +162,6 @@ jobs: - name: Install wasm-pack tools for testing run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh - - name: Run wasm-pack tests in firefox - run: cd provers/cairo && wasm-pack test --release --firefox --headless -- --features wasm - - - name: Run wasm-pack tests in chrome - run: cd provers/cairo && wasm-pack test --release --chrome --headless -- --features wasm - test_macos: name: Test (macOS, Apple sillicon) runs-on: macos-latest @@ -196,18 +181,6 @@ jobs: toolchain: stable components: clippy - - name: Python3 build - uses: actions/setup-python@v4 - with: - python-version: "3.9" - cache: "pip" - - - name: Install cairo-lang toolchain and dependencies - env: - CFLAGS: "-I/opt/homebrew/opt/gmp/include" - LDFLAGS: "-L/opt/homebrew/opt/gmp/lib" - run: pip install -r provers/cairo/requirements.txt - - name: Run clippy run: make clippy-metal diff --git a/.github/workflows/criterion_benchs.yml b/.github/workflows/criterion_benchs.yml index a4b9a69ee..5586f5a76 100644 --- a/.github/workflows/criterion_benchs.yml +++ b/.github/workflows/criterion_benchs.yml @@ -51,16 +51,7 @@ jobs: run: | brew install gcc brew install gmp - - name: Python3 build - uses: actions/setup-python@v4 - with: - python-version: "3.9" - cache: "pip" - - name: Install cairo-lang toolchain and dependencies - env: - CFLAGS: "-I/opt/homebrew/opt/gmp/include" - LDFLAGS: "-L/opt/homebrew/opt/gmp/lib" - run: pip install -r provers/cairo/requirements.txt + - name: Run benchmark run: | cargo bench -F metal --no-fail-fast --bench "criterion_metal" \ diff --git a/Cargo.toml b/Cargo.toml index 38c9a23e0..52c7e1edf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [workspace] -members = ["math", "crypto", "gpu", "benches", "provers/plonk", "provers/stark", "provers/cairo", "provers/groth16", "provers/groth16/arkworks-adapter", "provers/groth16/circom-adapter", "examples/merkle-tree-cli", "examples/prove-miden", "provers/winterfell_adapter", "examples/shamir_secret_sharing","examples/pinocchio", "examples/prove-verify-circom", "provers/cairo/ffi", "examples/baby-snark"] +members = ["math", "crypto", "gpu", "benches", "provers/plonk", "provers/stark", "provers/groth16", "provers/groth16/arkworks-adapter", "provers/groth16/circom-adapter", "examples/merkle-tree-cli", "examples/prove-miden", "provers/winterfell_adapter", "examples/shamir_secret_sharing","examples/pinocchio", "examples/prove-verify-circom", "examples/baby-snark"] exclude = ["ensure-no_std"] resolver = "2" @@ -16,7 +16,6 @@ lambdaworks-crypto = { path = "./crypto", version = "0.10.0", default-features = lambdaworks-gpu = { path = "./gpu", version = "0.10.0" } lambdaworks-math = { path = "./math", version = "0.10.0", default-features = false } stark-platinum-prover = { path = "./provers/stark" } -cairo-platinum-prover = { path = "./provers/cairo" } lambdaworks-winterfell-adapter = { path = "./provers/winterfell_adapter"} lambdaworks-groth16 = { path = "./provers/groth16" } lambdaworks-circom-adapter = { path = "./provers/groth16/circom-adapter" } diff --git a/Makefile b/Makefile index 627feec6f..1369132d5 100644 --- a/Makefile +++ b/Makefile @@ -4,26 +4,12 @@ FUZZ_DIR = fuzz/no_gpu_fuzz ROOT_DIR:=$(shell dirname $(realpath $(firstword $(MAKEFILE_LIST)))) -CAIRO0_PROGRAMS_DIR=provers/cairo/cairo_programs/cairo0 -CAIRO0_PROGRAMS:=$(wildcard $(CAIRO0_PROGRAMS_DIR)/*.cairo) -COMPILED_CAIRO0_PROGRAMS:=$(patsubst $(CAIRO0_PROGRAMS_DIR)/%.cairo, $(CAIRO0_PROGRAMS_DIR)/%.json, $(CAIRO0_PROGRAMS)) - -# Rule to compile Cairo programs for testing purposes. -# If the `cairo-lang` toolchain is installed, programs will be compiled with it. -# Otherwise, the cairo_compile docker image will be used -# When using the docker version, be sure to build the image using `make docker_build_cairo_compiler`. -$(CAIRO0_PROGRAMS_DIR)/%.json: $(CAIRO0_PROGRAMS_DIR)/%.cairo - @echo "Compiling Cairo program..." - @cairo-compile --cairo_path="$(CAIRO0_PROGRAMS_DIR)" $< --output $@ 2> /dev/null --proof_mode || \ - docker run --rm -v $(ROOT_DIR)/$(CAIRO0_PROGRAMS_DIR):/pwd/$(CAIRO0_PROGRAMS_DIR) cairo --proof_mode /pwd/$< > $@ - -test: $(COMPILED_CAIRO0_PROGRAMS) +test: cargo test clippy: cargo clippy --workspace --all-targets -- -D warnings cargo clippy --workspace --all-targets --features wasm -- -D warnings - cargo clippy --workspace --all-targets --features cli -- -D warnings cargo clippy --workspace --all-targets --features parallel -- -D warnings cargo clippy --tests @@ -47,7 +33,7 @@ benchmark: flamegraph_stark: CARGO_PROFILE_BENCH_DEBUG=true cargo flamegraph --root --bench stark_benchmarks -- --bench -coverage: $(COMPILED_CAIRO0_PROGRAMS) +coverage: cargo llvm-cov nextest --lcov --output-path lcov.info METAL_DIR = math/src/gpu/metal @@ -57,7 +43,7 @@ build-metal: clippy-metal: cargo clippy --workspace --all-targets -F metal -- -D warnings -test-metal: $(COMPILED_CAIRO0_PROGRAMS) +test-metal: cargo test -F metal CUDA_DIR = math/src/gpu/cuda/shaders @@ -91,9 +77,3 @@ run-metal-fuzzer: run-cuda-fuzzer: cd fuzz/cuda_fuzz cargo hfuzz run $(CUDAFUZZER) - -build_wasm: - cd provers/cairo && wasm-pack build --release --target=web -- --features wasm - -test_wasm_with_firefox: - cd provers/cairo && wasm-pack test --release --firefox --headless -- --features wasm diff --git a/README.md b/README.md index 7ec04fcff..befe19dba 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,6 @@ So, we decided to build our library, focusing on performance, with clear documen - [Crypto primitives](https://github.com/lambdaclass/lambdaworks/tree/main/crypto) - [STARK Prover](https://github.com/lambdaclass/lambdaworks/tree/main/provers/stark) - [Plonk Prover](https://github.com/lambdaclass/lambdaworks/tree/main/provers/plonk) -- [Cairo Prover](https://github.com/lambdaclass/lambdaworks/tree/main/provers/cairo) - [Groth 16](https://github.com/lambdaclass/lambdaworks/tree/main/provers/groth16) ### Crypto @@ -83,9 +82,10 @@ List of symbols: | Mersenne 31 | :heavy_check_mark: | :x: | :x: | :x: | :x: | | Baby Bear | :heavy_check_mark: | :x: | :x: | :x: | :x: | | MiniGoldilocks | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | +| Binary fields | :x: | :x: | :x: | :x: | :x: | | **ZK friendly Hash function** | **Lambdaworks** | **Arkworks** | **Halo2** | **gnark** | **Constantine** | -| Poseidon | 🏗️ | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | -| Pedersen | 🏗️ | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | +| Poseidon | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | +| Pedersen | 🏗️ | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | | Rescue Prime XLIX | :x: | :x: | :x: | :x: | :x: | | **Elliptic Curves** | **Lambdaworks** | **Arkworks** | **Halo2** | **gnark** | **Constantine** | | BLS12-381 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | @@ -99,24 +99,16 @@ List of symbols: | secq256r1 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | | **STARKs** | **Lambdaworks** | **Arkworks** | **Halo2** | **gnark** | **Constantine** | | STARK Prover | :heavy_check_mark: | :x: | :x: | :x: | :x: | -| CAIRO Prover | 🏗️ | :x: | :x: | :x: | :x: | +| Circle STARKs | :x: | :x: | :x: | :x: | :x: | | **SNARKs** | **Lambdaworks** | **Arkworks** | **Halo2** | **gnark** | **Constantine** | | Groth16 | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | | Plonk | 🏗️ | :heavy_check_mark: | ✔️ | :heavy_check_mark: | :x: | -| Spartan | :x: | :heavy_check_mark: | :x: | :x: | :x: | -| Marlin | :x: | :heavy_check_mark: | :x: | :x: | :x: | | GKR | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | | **Polynomial Commitment Schemes** | **Lambdaworks** | **Arkworks** | **Halo2** | **gnark** | **Constantine** | | KZG10 | :heavy_check_mark: | ✔️ | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | FRI | 🏗️ | :x: | :x: | :heavy_check_mark: | :x: | -| IPA | 🏗️ | ✔️ | :heavy_check_mark: | :x: | :x: | -| Brakedown | :x: | :x: | :x: | :x: | :x: | -| Basefold | :x: | :x: | :x: | :x: | :x: | -| **Folding Schemes** | **Lambdaworks** | **Arkworks** | **Halo2** | **gnark** | **Constantine** | -| Nova | :x: | :heavy_check_mark: | :x: | :x: | :x: | -| Supernova | :x: | :x: | :x: | :x: | :x: | -| Protostar | :x: | :x: | :x: | :x: | :x: | -| Protogalaxy | :x: | :heavy_check_mark: | :x: | :x: | :x: | +| Binius | :x: | :x: | :x: | :x: | :x: | +| Circle FRI | :x: | :x: | :x: | :x: | :x: | Additionally, provers are compatible with the following frontends and VMs: @@ -129,7 +121,6 @@ Additionally, provers are compatible with the following frontends and VMs: | Plonk | Noir | :x: | | Stark | Winterfell | :heavy_check_mark: | | Stark | Miden | :heavy_check_mark: | -| Stark | Cairo | :heavy_check_mark: | This can be used in a multi prover setting for extra security, or as a standalone to be used with Rust. diff --git a/provers/README.md b/provers/README.md index 4ab43c974..bca05a49a 100644 --- a/provers/README.md +++ b/provers/README.md @@ -6,7 +6,7 @@ This folder contains the different provers currently supported by lambdaworks: - [Groth 16](https://github.com/lambdaclass/lambdaworks/tree/main/provers/groth16) - [Plonk](https://github.com/lambdaclass/lambdaworks/tree/main/provers/plonk) - [STARKs](https://github.com/lambdaclass/lambdaworks/tree/main/provers/stark) -- [Cairo](https://github.com/lambdaclass/lambdaworks/tree/main/provers/cairo) +- [Cairo](https://github.com/lambdaclass/lambdaworks/tree/a591186e6c4dd53301b03b4ddd69369abe99f960/provers/cairo) - This is only for learning purposes and no longer supported. The [docs](../docs/src/starks/) still contain information that could be useful to understand and learn how Cairo works. The reference papers for each of the provers is given below: - [Groth 16](https://eprint.iacr.org/2016/260) @@ -22,5 +22,4 @@ Using one prover or another depends on usecase and other desired properties. We ## Using provers -- [Cairo prover](https://github.com/lambdaclass/lambdaworks/blob/main/provers/cairo/README.md) - [Plonk prover](https://github.com/lambdaclass/lambdaworks/blob/main/provers/plonk/README.md) diff --git a/provers/cairo/Cargo.toml b/provers/cairo/Cargo.toml deleted file mode 100644 index bdc4829ec..000000000 --- a/provers/cairo/Cargo.toml +++ /dev/null @@ -1,121 +0,0 @@ -[package] -name = "cairo-platinum-prover" -rust-version = "1.66" -version.workspace = true -edition.workspace = true -license.workspace = true - -[[bin]] -name = "platinum-prover" -path = "src/main.rs" -required-features = ["cli"] - -[lib] -name = "cairo_platinum_prover" -crate-type = ["cdylib", "rlib"] - -[dependencies] -rand = "0.8.5" -lambdaworks-math = { workspace = true, default-features = true, features = ["lambdaworks-serde-binary"] } -lambdaworks-crypto = { workspace = true, default-features = true } -stark-platinum-prover = { workspace = true, features = ["wasm"] } -thiserror = "1.0.38" -log = "0.4.17" -bincode = { version = "2.0.0-rc.2", tag = "v2.0.0-rc.2", git = "https://github.com/bincode-org/bincode.git", features= ['serde'] } -# NOTE: For cairo 1 compatibility, add the `cairo-1-hints` feature. -cairo-vm = { git = "https://github.com/lambdaclass/cairo-vm", rev = "e61ae177edb94e29470fed23bdda43329b16c057", default-features = false } -sha3 = "0.10.6" -serde = { version = "1.0", features = ["derive"] } -serde_json = "1.0" -num-integer = "0.1.45" -itertools = "0.11.0" -serde_cbor = { version = "0.11.1" } -# For cli -clap = { version = "4.4.6", features = ["derive"], optional = true } -# Parallelization crates -rayon = { version = "1.8.0", optional = true } - -# wasm -wasm-bindgen = { version = "0.2", optional = true } -serde-wasm-bindgen = { version = "0.5", optional = true } -web-sys = { version = "0.3.64", features = ['console'], optional = true } - -[dev-dependencies] -hex = "0.4.3" -criterion = { version = "0.4", default-features = false } -env_logger = "*" -test-log = { version = "0.2.11", features = ["log"] } -assert_matches = "1.5.0" -rstest = "0.17.0" -rand = "0.8.5" -wasm-bindgen-test = "0.3.0" - -[features] -test_fiat_shamir = [] -instruments = ["stark-platinum-prover/instruments"]# This enables timing prints in prover and verifier -metal = ["lambdaworks-math/metal"] -parallel = ["dep:rayon", "stark-platinum-prover/parallel"] -wasm = ["dep:wasm-bindgen", "dep:serde-wasm-bindgen", "dep:web-sys"] -cli = ["dep:clap"] -[target.'cfg(not(all(target_arch = "wasm32", target_os = "unknown")))'.dev-dependencies] -proptest = "1.2.0" - -[[bench]] -name = "criterion_prover" -harness = false -metal = ["lambdaworks-math/metal"] - -[[bench]] -name = "criterion_prover_70k" -harness = false -metal = ["lambdaworks-math/metal"] - -[[bench]] -name = "criterion_verifier" -harness = false -metal = ["lambdaworks-math/metal"] - -[[bench]] -name = "criterion_verifier_70k" -harness = false - -[package.metadata.wasm-pack.profile.dev] -# Should `wasm-opt` be used to further optimize the wasm binary generated after -# the Rust compiler has finished? Using `wasm-opt` can often further decrease -# binary size or do clever tricks that haven't made their way into LLVM yet. -# -# Configuration is set to `false` by default for the dev profile, but it can -# be set to an array of strings which are explicit arguments to pass to -# `wasm-opt`. For example `['-Os']` would optimize for size while `['-O4']` -# would execute very expensive optimizations passes -wasm-opt = ['-O'] - -[package.metadata.wasm-pack.profile.dev.wasm-bindgen] -# Should we enable wasm-bindgen's debug assertions in its generated JS glue? -debug-js-glue = true -# Should wasm-bindgen demangle the symbols in the "name" custom section -demangle-name-section = true -# Should we emit the DWARF debug info custom sections -dwarf-debug-info = false -# Should we omit the default import path -omit-default-module-path = false - -[package.metadata.wasm-pack.profile.profiling] -wasm-opt = ['-O'] - -[package.metadata.wasm-pack.profile.profiling.wasm-bindgen] -debug-js-glue = false -demangle-name-section = true -dwarf-debug-info = false -omit-default-module-path = false - -# `wasm-opt` is on by default in for the release profile, but it can be -# disabled by setting it to `false` -[package.metadata.wasm-pack.profile.release] -wasm-opt = false - -[package.metadata.wasm-pack.profile.release.wasm-bindgen] -debug-js-glue = false -demangle-name-section = true -dwarf-debug-info = false -omit-default-module-path = false diff --git a/provers/cairo/Makefile b/provers/cairo/Makefile deleted file mode 100644 index 3242e95da..000000000 --- a/provers/cairo/Makefile +++ /dev/null @@ -1,63 +0,0 @@ -.PHONY: test coverage clippy clean - -ROOT_DIR:=$(shell dirname $(realpath $(firstword $(MAKEFILE_LIST)))) - -CAIRO0_PROGRAMS_DIR=cairo_programs/cairo0 -CAIRO0_PROGRAMS:=$(wildcard $(CAIRO0_PROGRAMS_DIR)/*.cairo) -COMPILED_CAIRO0_PROGRAMS:=$(patsubst $(CAIRO0_PROGRAMS_DIR)/%.cairo, $(CAIRO0_PROGRAMS_DIR)/%.json, $(CAIRO0_PROGRAMS)) - -# Variable to give compiled Cairo programas a proper name. It extracts the file extension and adds -# the .json extension to it. -COMPILED_PROGRAM=$(basename $(PROGRAM)).json - -# Rule to compile Cairo programs for testing purposes. -# If the `cairo-lang` toolchain is installed, programs will be compiled with it. -# Otherwise, the cairo_compile docker image will be used -# When using the docker version, be sure to build the image using `make docker_build_cairo_compiler`. -$(CAIRO0_PROGRAMS_DIR)/%.json: $(CAIRO0_PROGRAMS_DIR)/%.cairo - @echo "Compiling Cairo program..." - @cairo-compile --cairo_path="$(CAIRO0_PROGRAMS_DIR)" $< --output $@ 2> /dev/null --proof_mode || \ - docker run --rm -v $(ROOT_DIR)/$(CAIRO0_PROGRAMS_DIR):/pwd/$(CAIRO0_PROGRAMS_DIR) cairo --proof_mode /pwd/$< > $@ - -build: - cargo build --release - -test: $(COMPILED_CAIRO0_PROGRAMS) - cargo test - -test_metal: $(COMPILED_CAIRO0_PROGRAMS) - cargo test -F metal - -docker_build_cairo_compiler: - docker build -f cairo_compile.Dockerfile -t cairo . - -docker_compile_cairo: - docker run -v $(ROOT_DIR):/pwd cairo --proof_mode /pwd/$(PROGRAM) > $(COMPILED_PROGRAM) - -clippy: - cargo clippy --workspace --all-targets -- -D warnings - -benchmarks_sequential: $(COMPILED_CAIRO0_PROGRAMS) - cargo bench - -benchmarks_parallel: $(COMPILED_CAIRO0_PROGRAMS) - cargo bench -F parallel --bench criterion_prover - cargo bench -F parallel --bench criterion_verifier - -benchmarks_parallel_all: $(COMPILED_CAIRO0_PROGRAMS) - cargo bench -F parallel - -build_metal: - cargo b --features metal --release - -clean: - rm -f $(CAIRO0_PROGRAMS_DIR)/*.json - rm -f $(CAIRO0_PROGRAMS_DIR)/*.proof - rm -f $(CAIRO0_PROGRAMS_DIR)/*.trace - rm -f $(CAIRO0_PROGRAMS_DIR)/*.memory - -build_wasm: - wasm-pack build --target=web -- --features wasm - -test_wasm: - wasm-pack test --node --release -- --features wasm diff --git a/provers/cairo/README.md b/provers/cairo/README.md deleted file mode 100644 index e4651568c..000000000 --- a/provers/cairo/README.md +++ /dev/null @@ -1,223 +0,0 @@ -
- -# Lambdaworks Cairo Platinum Prover CLI - -
- -## ⚠️ Disclaimer - -This prover is still in development and may contain bugs. It is not intended to be used in production yet. - -Please check issues under security label, and wait for them to be resolved if they are relevant to your project. - -## [Cairo Platinum Prover Docs](https://lambdaclass.github.io/lambdaworks/starks/cairo.html) - -## Proof file - -Currently, the .proof file contains the following elements concatenated: -- Proof size -- Proof -- Public inputs - -It uses the bincode as protocol to encode the structs of the files. Fields are stored as the bytes of canonical non-Montgomery form. It is in full big-endian form. Limbs are ordered in big-endian, and each u64 of the Montgomery field is in big-endian. - -⚠️: There may be changes to how this file represents the proof, always check here to ensure you have the latest encoding. We will add presets of verifications to the public inputs so you should not need to handle the file, just enable them. - -### Cairo Platinum Prover - Introduction - -Cairo Platinum Prover is an easy to use prover to prove CairoZero and Cairo programs, with support for a web verifier. - -CLI currently runs with 100 bits of conjecturable security. - -Cairo / Cairo1 programs full integration is on the way. It can already be used generating a trace and a memory with the Cairo VM Runner, and fed to the prover with the prove command. - -For using Cairo1, use the following [VM version](https://github.com/lambdaclass/cairo-vm/commit/070aeb9dbaf55875bf1cba2cef36fccafbb4851a) until it gets fixed in main - -Notice in this version you don't need the flag ```--proof_mode``` as it's enabled by default. - -### Usage: - -To prove Cairo programs, they first need to be compiled. For compilation you need to have `cairo-lang` or `docker` installed. - -When using Docker, start by creating the container image with: - -```**bash** - make docker_build_cairo_compiler -``` - -Examples of Cairo 0 programs can be found [here](https://github.com/lambdaclass/lambdaworks/tree/main/provers/cairo/cairo-prover-lib/cairo_programs/cairo0) - - -**To compile and generate a proof you can use:** - -```bash -cargo run --release --features=cli,instruments,parallel compile-and-prove -``` - -For example: - -```bash -cargo run --release --features=cli,instruments,parallel compile-and-prove cairo_programs/cairo0/fibonacci_5.cairo cairo_programs/cairo0/fibonacci_5.proof -``` - - -**To verify a proof you can use:** - -```bash -cargo run --release --features=cli,instruments,parallel verify -``` - -For example: - -```bash -cargo run --release --features=cli,instruments,parallel verify cairo_programs/cairo0/fibonacci_5.proof -``` - -**To compile Cairo:** - -```bash -cargo run --release --features=cli,instruments,parallel compile -``` - -For example: - -```bash -cargo run --release --features=cli,instruments,parallel compile cairo_programs/cairo0/fibonacci_5.cairo -``` - -**To execute and prove a compiled program:** - -```bash -cargo run --release --features=cli,instruments,parallel run-and-prove -``` - -For example: - -```bash -cargo run --release --features=cli,instruments,parallel run-and-prove cairo_programs/cairo0/fibonacci_5.json program_proof.proof -``` - -**To prove a trace of a cairo program:** - -```bash -cargo run --release --features=cli,instruments,parallel prove -``` - -For example: - -```bash -cargo run --release --features=cli,instruments,parallel prove cairo_programs/cairo0/fibonacci_5_trace.bin cairo_programs/cairo0/fibonacci_5_memory.bin program_proof.proof -``` - -**To prove and verify with a single command you can use:** - -```bash -cargo run --release --features=cli,instruments,parallel prove-and-verify -``` - -For example: - -```bash -cargo run --release --features=cli,instruments,parallel prove-and-verify cairo_programs/cairo0/fibonacci_5.json -``` - - - -**To compile, proof, prove and verify at the same time you can use:** - -```bash -cargo run --release --features=cli,instruments,parallel compile-prove-and-verify -``` - -For example: - -```bash -cargo run --release --features=cli,instruments,parallel compile-prove-and-verify cairo_programs/cairo0/fibonacci_5.cairo -``` - -### Build Package for web verifier - -To build the node library to use the verifier on the browser, use `build_wasm`. Using as proof options the ones that match the CLI, or your configuration, you can send the proof to the exposed function and verify it seamlessly. - -### Run CLI as a binary - -**To install as a binary run the command on the root directory of the CLI:** -```bash -cargo install --features=cli,instruments,parallel --path . -``` - -To run the CLI as a binary instead of using cargo replace `cargo run --release --features=cli,instruments,parallel` with `platinum-prover`. - -for example, the command to generate a proof becomes: -```bash -platinum-prover prove cairo_programs/cairo0/fibonacci_5.json cairo_programs/cairo0/fibonacci_5.proof -``` - -**You can uninstall the binary with:** -```bash -cargo uninstall -``` - -## Running tests -To run tests, simply use -``` -make test -``` -If you have the `cairo-lang` toolchain installed, this will compile the Cairo programs needed -for tests. -If you have built the cairo-compile docker image, that will be used for compiling instead. - -Be sure to build the docker image if you don't want to install the `cairo-lang` toolchain: -``` -make docker_build_cairo_compiler -``` - -## To be added -- Stone compatibility -- Add program as a public input -- Add Cairo compilation inside Rust, to prove and verify Cairo1/Cairo2 from the .cairo file, instead of the .casm file -- Add more Layouts / Builtins -- Improve parallelization -- Benchmarks and optimizations for Graviton -- Cairo Verifier - - Batch verifier / For trees and N proofs -- Pick hash configuration with ProofOptions - -## 📚 References - -The following links, repos and projects have been important in the development of this library and we want to thank and acknowledge them. - -- [Starkware](https://starkware.co/) -- [Winterfell](https://github.com/facebook/winterfell) -- [Anatomy of a Stark](https://aszepieniec.github.io/stark-anatomy/overview) -- [Giza](https://github.com/maxgillett/giza) -- [Ministark](https://github.com/andrewmilson/ministark) -- [Sandstorm](https://github.com/andrewmilson/sandstorm) -- [STARK-101](https://starkware.co/stark-101/) -- [Risc0](https://github.com/risc0/risc0) -- [Neptune](https://github.com/Neptune-Crypto) -- [Summary on FRI low degree test](https://eprint.iacr.org/2022/1216) -- [STARKs paper](https://eprint.iacr.org/2018/046) -- [DEEP FRI](https://eprint.iacr.org/2019/336) -- [BrainSTARK](https://aszepieniec.github.io/stark-brainfuck/) -- [Plonky2](https://github.com/mir-protocol/plonky2) -- [Aztec](https://github.com/AztecProtocol) -- [Arkworks](https://github.com/arkworks-rs) -- [Thank goodness it's FRIday](https://vitalik.ca/general/2017/11/22/starks_part_2.html) -- [Diving DEEP FRI](https://blog.lambdaclass.com/diving-deep-fri/) -- [Periodic constraints](https://blog.lambdaclass.com/periodic-constraints-and-recursion-in-zk-starks/) -- [Chiplets Miden VM](https://wiki.polygon.technology/docs/miden/design/chiplets/main/) -- [Valida](https://github.com/valida-xyz/valida/tree/main) -- [Solidity Verifier](https://github.com/starkware-libs/starkex-contracts/tree/master/evm-verifier/solidity/contracts/cpu) -- [CAIRO verifier](https://github.com/starkware-libs/cairo-lang/tree/master/src/starkware/cairo/stark_verifier) -- [EthSTARK](https://github.com/starkware-libs/ethSTARK/tree/master) -- [CAIRO whitepaper](https://eprint.iacr.org/2021/1063.pdf) -- [Gnark](https://github.com/Consensys/gnark) - -## 🌞 Related Projects - -- [CAIRO VM - Rust](https://github.com/lambdaclass/cairo-vm) -- [CAIRO VM - Go](https://github.com/lambdaclass/cairo_vm.go) -- [CAIRO native](https://github.com/lambdaclass/cairo_native/) -- [StarkNet in Rust](https://github.com/lambdaclass/starknet_in_rust) -- [StarkNet Stack](https://github.com/lambdaclass/starknet_stack) diff --git a/provers/cairo/benches/criterion_prover.rs b/provers/cairo/benches/criterion_prover.rs deleted file mode 100644 index 7a8e91308..000000000 --- a/provers/cairo/benches/criterion_prover.rs +++ /dev/null @@ -1,67 +0,0 @@ -use cairo_platinum_prover::{ - air::generate_cairo_proof, cairo_layout::CairoLayout, runner::run::generate_prover_args, -}; -use criterion::{ - black_box, criterion_group, criterion_main, measurement::WallTime, BenchmarkGroup, Criterion, -}; -use stark_platinum_prover::proof::options::{ProofOptions, SecurityLevel}; - -pub mod functions; - -fn cairo_benches(c: &mut Criterion) { - #[cfg(feature = "parallel")] - { - let num_threads: usize = std::env::var("NUM_THREADS") - .unwrap_or("8".to_string()) - .parse() - .unwrap(); - println!("Running benchmarks using {} threads", num_threads); - rayon::ThreadPoolBuilder::new() - .num_threads(num_threads) - .build_global() - .unwrap(); - }; - - let mut group = c.benchmark_group("CAIRO"); - group.sample_size(10); - run_cairo_bench( - &mut group, - "fibonacci/500", - &cairo0_program_path("fibonacci_500.json"), - CairoLayout::Plain, - ); - run_cairo_bench( - &mut group, - "fibonacci/1000", - &cairo0_program_path("fibonacci_1000.json"), - CairoLayout::Plain, - ); -} - -fn cairo0_program_path(program_name: &str) -> String { - const CARGO_DIR: &str = env!("CARGO_MANIFEST_DIR"); - const PROGRAM_BASE_REL_PATH: &str = "/cairo_programs/cairo0/"; - let program_base_path = CARGO_DIR.to_string() + PROGRAM_BASE_REL_PATH; - program_base_path + program_name -} - -fn run_cairo_bench( - group: &mut BenchmarkGroup<'_, WallTime>, - benchname: &str, - program_path: &str, - layout: CairoLayout, -) { - let program_content = std::fs::read(program_path).unwrap(); - let proof_options = ProofOptions::new_secure(SecurityLevel::Provable80Bits, 3); - let (main_trace, pub_inputs) = generate_prover_args(&program_content, layout).unwrap(); - println!("Generated main trace with {} rows", main_trace.n_rows()); - - group.bench_function(benchname, |bench| { - bench.iter(|| { - black_box(generate_cairo_proof(&main_trace, &pub_inputs, &proof_options).unwrap()) - }); - }); -} - -criterion_group!(benches, cairo_benches); -criterion_main!(benches); diff --git a/provers/cairo/benches/criterion_prover_70k.rs b/provers/cairo/benches/criterion_prover_70k.rs deleted file mode 100644 index 31f73e3a1..000000000 --- a/provers/cairo/benches/criterion_prover_70k.rs +++ /dev/null @@ -1,61 +0,0 @@ -use cairo_platinum_prover::cairo_layout::CairoLayout; -use cairo_platinum_prover::{air::generate_cairo_proof, runner::run::generate_prover_args}; -use criterion::{ - black_box, criterion_group, criterion_main, measurement::WallTime, BenchmarkGroup, Criterion, - SamplingMode, -}; -use stark_platinum_prover::proof::options::{ProofOptions, SecurityLevel}; - -pub mod functions; - -fn fibo_70k_bench(c: &mut Criterion) { - #[cfg(feature = "parallel")] - { - let num_threads: usize = std::env::var("NUM_THREADS") - .unwrap_or("8".to_string()) - .parse() - .unwrap(); - println!("Running benchmarks using {} threads", num_threads); - rayon::ThreadPoolBuilder::new() - .num_threads(num_threads) - .build_global() - .unwrap(); - }; - - let mut group = c.benchmark_group("CAIRO"); - group.sampling_mode(SamplingMode::Flat); - group.sample_size(10); - run_cairo_bench( - &mut group, - "fibonacci/70000", - &cairo0_program_path("fibonacci_70000.json"), - CairoLayout::Plain, - ); -} - -fn cairo0_program_path(program_name: &str) -> String { - const CARGO_DIR: &str = env!("CARGO_MANIFEST_DIR"); - const PROGRAM_BASE_REL_PATH: &str = "/cairo_programs/cairo0/"; - let program_base_path = CARGO_DIR.to_string() + PROGRAM_BASE_REL_PATH; - program_base_path + program_name -} - -fn run_cairo_bench( - group: &mut BenchmarkGroup<'_, WallTime>, - benchname: &str, - program_path: &str, - layout: CairoLayout, -) { - let program_content = std::fs::read(program_path).unwrap(); - let proof_options = ProofOptions::new_secure(SecurityLevel::Provable80Bits, 3); - let (main_trace, pub_inputs) = generate_prover_args(&program_content, layout).unwrap(); - - group.bench_function(benchname, |bench| { - bench.iter(|| { - black_box(generate_cairo_proof(&main_trace, &pub_inputs, &proof_options).unwrap()) - }); - }); -} - -criterion_group!(benches, fibo_70k_bench); -criterion_main!(benches); diff --git a/provers/cairo/benches/criterion_verifier.rs b/provers/cairo/benches/criterion_verifier.rs deleted file mode 100644 index f4a82c957..000000000 --- a/provers/cairo/benches/criterion_verifier.rs +++ /dev/null @@ -1,87 +0,0 @@ -use cairo_platinum_prover::air::{verify_cairo_proof, PublicInputs}; -use criterion::{ - black_box, criterion_group, criterion_main, measurement::WallTime, BenchmarkGroup, Criterion, -}; -use lambdaworks_math::{ - field::fields::fft_friendly::stark_252_prime_field::Stark252PrimeField, traits::Deserializable, -}; -use stark_platinum_prover::proof::{ - options::{ProofOptions, SecurityLevel}, - stark::StarkProof, -}; - -pub mod functions; - -fn load_proof_and_pub_inputs( - input_path: &str, -) -> ( - StarkProof, - PublicInputs, -) { - let program_content = std::fs::read(input_path).unwrap(); - let mut bytes = program_content.as_slice(); - let proof_len = usize::from_be_bytes(bytes[0..8].try_into().unwrap()); - bytes = &bytes[8..]; - let proof: StarkProof = - serde_cbor::from_slice(&bytes[0..proof_len]).unwrap(); - bytes = &bytes[proof_len..]; - - let public_inputs = PublicInputs::deserialize(bytes).unwrap(); - - (proof, public_inputs) -} - -fn verifier_benches(c: &mut Criterion) { - #[cfg(feature = "parallel")] - { - let num_threads: usize = std::env::var("NUM_THREADS") - .unwrap_or("8".to_string()) - .parse() - .unwrap(); - println!("Running benchmarks using {} threads", num_threads); - rayon::ThreadPoolBuilder::new() - .num_threads(num_threads) - .build_global() - .unwrap(); - }; - - let mut group = c.benchmark_group("VERIFIER"); - run_verifier_bench( - &mut group, - "fibonacci/500", - &cairo0_proof_path("fibonacci_500.proof"), - ); - run_verifier_bench( - &mut group, - "fibonacci/1000", - &cairo0_proof_path("fibonacci_1000.proof"), - ); -} - -fn cairo0_proof_path(program_name: &str) -> String { - const CARGO_DIR: &str = env!("CARGO_MANIFEST_DIR"); - const PROGRAM_BASE_REL_PATH: &str = "/benches/proofs/"; - let program_base_path = CARGO_DIR.to_string() + PROGRAM_BASE_REL_PATH; - program_base_path + program_name -} - -fn run_verifier_bench( - group: &mut BenchmarkGroup<'_, WallTime>, - benchname: &str, - program_path: &str, -) { - let (proof, pub_inputs) = load_proof_and_pub_inputs(program_path); - let proof_options = ProofOptions::new_secure(SecurityLevel::Conjecturable80Bits, 3); - group.bench_function(benchname, |bench| { - bench.iter(|| { - assert!(black_box(verify_cairo_proof( - &proof, - &pub_inputs, - &proof_options - ))) - }); - }); -} - -criterion_group!(benches, verifier_benches); -criterion_main!(benches); diff --git a/provers/cairo/benches/criterion_verifier_70k.rs b/provers/cairo/benches/criterion_verifier_70k.rs deleted file mode 100644 index 6597d56e3..000000000 --- a/provers/cairo/benches/criterion_verifier_70k.rs +++ /dev/null @@ -1,79 +0,0 @@ -use cairo_platinum_prover::air::{verify_cairo_proof, PublicInputs}; -use criterion::{ - black_box, criterion_group, criterion_main, measurement::WallTime, BenchmarkGroup, Criterion, - SamplingMode, -}; -use lambdaworks_math::{ - field::fields::fft_friendly::stark_252_prime_field::Stark252PrimeField, traits::Deserializable, -}; -use stark_platinum_prover::proof::{ - options::{ProofOptions, SecurityLevel}, - stark::StarkProof, -}; - -pub mod functions; - -fn load_proof_and_pub_inputs( - input_path: &str, -) -> ( - StarkProof, - PublicInputs, -) { - let program_content = std::fs::read(input_path).unwrap(); - let mut bytes = program_content.as_slice(); - let proof_len = usize::from_be_bytes(bytes[0..8].try_into().unwrap()); - bytes = &bytes[8..]; - let proof: StarkProof = - serde_cbor::from_slice(&bytes[0..proof_len]).unwrap(); - bytes = &bytes[proof_len..]; - - let public_inputs = PublicInputs::deserialize(bytes).unwrap(); - - (proof, public_inputs) -} - -fn verifier_benches(c: &mut Criterion) { - #[cfg(feature = "parallel")] - { - let num_threads: usize = std::env::var("NUM_THREADS") - .unwrap_or("8".to_string()) - .parse() - .unwrap(); - println!("Running benchmarks using {} threads", num_threads); - rayon::ThreadPoolBuilder::new() - .num_threads(num_threads) - .build_global() - .unwrap(); - }; - - let mut group = c.benchmark_group("VERIFIER"); - group.sampling_mode(SamplingMode::Flat); - group.sample_size(10); - run_verifier_bench( - &mut group, - "fibonacci/70000", - &cairo0_proof_path("fibonacci_70000.proof"), - ); -} - -fn cairo0_proof_path(program_name: &str) -> String { - const CARGO_DIR: &str = env!("CARGO_MANIFEST_DIR"); - const PROGRAM_BASE_REL_PATH: &str = "/benches/proofs/"; - let program_base_path = CARGO_DIR.to_string() + PROGRAM_BASE_REL_PATH; - program_base_path + program_name -} - -fn run_verifier_bench( - group: &mut BenchmarkGroup<'_, WallTime>, - benchname: &str, - program_path: &str, -) { - let (proof, pub_inputs) = load_proof_and_pub_inputs(program_path); - let proof_options = ProofOptions::new_secure(SecurityLevel::Provable80Bits, 3); - group.bench_function(benchname, |bench| { - bench.iter(|| black_box(verify_cairo_proof(&proof, &pub_inputs, &proof_options))); - }); -} - -criterion_group!(benches, verifier_benches); -criterion_main!(benches); diff --git a/provers/cairo/benches/functions/cairo.rs b/provers/cairo/benches/functions/cairo.rs deleted file mode 100644 index fe7e4f1e4..000000000 --- a/provers/cairo/benches/functions/cairo.rs +++ /dev/null @@ -1,6 +0,0 @@ -pub fn cairo0_program_path(program_name: &str) -> String { - const CARGO_DIR: &str = env!("CARGO_MANIFEST_DIR"); - const PROGRAM_BASE_REL_PATH: &str = "/cairo_programs/cairo0/"; - let program_base_path = CARGO_DIR.to_string() + PROGRAM_BASE_REL_PATH; - program_base_path + program_name -} diff --git a/provers/cairo/benches/functions/mod.rs b/provers/cairo/benches/functions/mod.rs deleted file mode 100644 index c3514ea0b..000000000 --- a/provers/cairo/benches/functions/mod.rs +++ /dev/null @@ -1,2 +0,0 @@ -pub mod cairo; -pub mod stark; diff --git a/provers/cairo/benches/functions/stark.rs b/provers/cairo/benches/functions/stark.rs deleted file mode 100644 index 15f461148..000000000 --- a/provers/cairo/benches/functions/stark.rs +++ /dev/null @@ -1,14 +0,0 @@ -use cairo_platinum_prover::{cairo_mem::CairoMemory, register_states::RegisterStates}; - -pub fn generate_cairo_trace(filename: &str) -> (RegisterStates, CairoMemory) { - let base_dir = env!("CARGO_MANIFEST_DIR").to_string() + "/src/cairo_vm/test_data/"; - - let trace_path = format!("{base_dir}/{filename}.trace"); - let memory_path = format!("{base_dir}/{filename}.memory"); - - let register_states = - RegisterStates::from_file(&trace_path).expect("Cairo trace binary file not found"); - let memory = CairoMemory::from_file(&memory_path).expect("Cairo memory binary file not found"); - - (register_states, memory) -} diff --git a/provers/cairo/benches/proofs/fibonacci_1000.proof b/provers/cairo/benches/proofs/fibonacci_1000.proof deleted file mode 100644 index 338dce624c45e55673c4407fe70d3f73b2eddfde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 371566 zcmce;Q*b8nyEU5RP2SkHZQHhOI}=T8CllMYZQJ(5)=X@jea<)g+?@LAzc0QzebMWp zyME7l)~fEV)%A3Pfc)16QJnvO0|*Gw|Fi$E9T=c6mPWbpI`u3NBfYOB?fHK#1dsJ^L92gA z1hHlgzkV@gn8fK&7~CSoYblg_ZPw~U5@U%`m}s{<33Bp6Nw$y}bgNC4+QQ~@J&-Pj zhq!9dM#YISINp301TGrmw+0|F&_G4zl;9BleJyv1hpw*Kbi3rg!4p7h1zsotAB9_& zK&YtT3_!67RN`&g(}rxVwV0jZZ8?JSg~XwA$=zpQiOR{>Xl+w1>~}W?BoyA}l<7BK zB4$k!KwJhId(ovuj;fj197c7#;HQaMt}1f#vEy4A4Id)C{p;g@3!n(1YZU>zP`Vu7 zu5~HJSMB@9^|6HLu>KnF_H)`Z2$0y2>%ST7V-ZS!TgyxZBMDe`9o|r9NUe>Z^K;6= z2Y^oyb1+(8X>x)5pkF2|Qm8fP5Livq!$d&BWg9|8>Hgmq{&xU4vhMh5s?Lr>i;MH0K_D0*^@Cg1LBqkW`DM39nBKDD#FL)%y|$Z z4k?t5|HKcXv{*(P>DUFS-r`%>W<8HrD#~&rxxtNQnzI{S@NoqMVjMu!MZjG8d^g5k zmMiF0NBAP>=bsHv@?iq&0F46-H~3*haRS%7%Ttu&h>?MBLBRR5m4-7Gea9QUA}9(H zv~w53na}+!pDaQz%+!ZOPgbv8l%%AP zJp4Noo0*G!LqsX$CTQQG_2OBOAJZ@g4lHT_4cXdnor7G&P(?Q~2v z|GEtAQ{%F-6Cprb^z^knJmX3DhcO{2{)K{AM62zrnu)igZoZv))jBn`8bo#js7c&4 zTreZZyazO3tK$K4>4JI~hbggBc3OshVNqGJ=ta4v4xJW^Jo27#r~vP@jm)i74wY`? z^fbbHN^x|^UOpM0?BUyqozFQX?uBvWtMmIK~3zz~7_;MzaH z1K~)=*1-UZXe_^H(Q2{ZM8})C!&e5B0Fp-rajbUmY{s;ZrBx5Ivu4KRcp<0E>j$|3 z>fuIMTf-!AROw|1-e1XRs;ZC>#P$!GcAH2>@?zCX&ll{J&UYkR?6z*8MX2jKdR(0X zl;sUmM8>D>kWHvyMfOl4Jz|*Wm(u2t{Tt(E4O+s-_;&2 z2Ff8Iftcr_bRXDSASWq*DTI5p1-684B+Ygj*sG^V?#BOsw4%9m$R*f5DAYp3Oh8bZ zQ$b$j^iD1Vpy3nz`$;mvu_PK{6!Q}d|GZ9lFiY-0jas19r;e}ymVu{J^qaa6aNwSb zlO0X)6d=r%UvC=X`rx0%BYnMS25eGqplAdD-3%y-&oQm)PMLtsx0~We$BfTZ+w{@> zF=}G6%2zfpmNE8?{l@iRv`M;{o+=J>KtK?!^gH$BL1aXz1XMU=$vSjA_PD^zr35^C zaAXm?T$3EKY#tqnoBefnAqW(Rw&l^bABZf{qcu+qJj*eg1gXTOuai6EVn-GnE53OdMGB4=HC)aJzx$Z_=ynxpmujlV35&) ze(>HcWQcf8#Dg?Im-Gy@?>ULbbO6$#Z9o=QYJ03RWzZvniMw<{kC8I)>V|(qUgO3# zQY+{v4ALZIZcTsnr}G0PAMIzXRrv_DwWv9SKFw;yQRl^SJ>tB9{fC*X4m{eOpm9YZ|b`?8Mq5 zeIK8~Wlwz25%GpS;^Y7XA+hf*oHJ0XI!7rn6`7bzYUoJu9$HvnH>PcnSxf}SRJBRK z*;F#I%^H5b=i4${S+htmu2ybM85ObC{lN{~f$==R!;Vl=?ll`_iviBOfUS3Eb7V+v z$niaC#1aC3FibO2-CtE3+fZf-2r-NC$cN3o<4eBaTxUWCNt=K*j&}U*ysH7ot-0jI zu#Ekgsmph-swU`%9i|4OqzVGM0e_P2*wE!?r#P6`<3#dh(tR<&G-0cmaZ=Y4dc*vu z`z!DiC;8CTcwYhnzCtIhuOor>aiv6sCgRo3{jcZu2rA&LI>q6bygw(|j28-Sh%}3a zD#IaHwN~1OyC=0ce&RnpAO2H)h^t2~6|pwsZrdb>;`%OlS=pOTB1+m=&Mh<80|>e<^PEvB<@MUyF2XLIBgcs z*|0BL3UN101paAmkx)BR**7&1EKQB)9Zr^mPYBfG%PCoMF?HNtHJj zV7Yx+1aCyUUmBrA6-{xp!oEb)7=jDVs>QrXY(Ym2(tvS2BA3$_O~vJ8qshSrKq6IG z#9V!0PEr3_z3MCg(e{;ZbeRQ9x$xK!b^Ti{(Y>>4Bwd>=we7jde|C)oSs7{fQ%O71 zWANSh*qB0RS60$bq*w{KOO^c|2ffn^wpZUlIm=Z{DFJ8_4kQtO0zRw?AmPjr0uz1@ zZgEUQAho7X-*oOs&@h-}AmO&n_$*~+1fgm79lJW@Iq6M<9&UE5)JZ6qnJPNTvPPau z4x?FfM~Ra&rGHUh&w<8*59^fpbPKqFj41EPKatSba%yIG%u4^(GxirYYyWPVnwelsNYFO#JW7{>>y{cNFiAabG zHAHoz-vlVZ>C^e6QNG1yZkw!6#)d41Hw}fQG<#X%zCJ3W0rI8bPRL1jhEYs5!g0Up z&&+p{pA|m+V9!>Uvg{RvzfNW#O=|AA1p26}er>7@>?eA*=P_bPPbBF_{4%{s=FAiY zddEY#JL~&hO6s1?_L^*i32k@Ie9YGWY$wG-xrna=YgJ?q?MX+>o|sluxnHNs7Mcqi zD@bBa9AKqhuQGW9?=p|i7vUoJ=0Lg$!ORxLk7iV!HB}}!stIQL&1-rK$&grGx($q$ zw8d2JF-znIZaSKON7AD^0df|S7tOH%WKArZ2s`maUnW*pT5+(mvI^hcX@I2gsz~eH zSkFj6KJX-DH_COiGgGw@vO1H~6`_Uvlx-B5=3FfR^A{Uv@YDJTUxWlrzGW#?c|1z? z3;_!Eo!|JKaZB6J{egu2)1qw9_`!eOdfy@f)E^Z@@AEnlZF) z2fm0koKHE3Lq!|-5WU*6TsN`9N0e2z1($2VGD&Mpt2YzbC zd+m!(uWPn#@(p!BamH)ljYFlm{rxO~!;BtT&z0KPKA~9bh!tm^>0Klw2-J&)>)Tjw zgytia>-L7R;D!_FtgaHzPNP!a&N0Dp~{db)+YPl^rl0=zul=bkC>2CvO65mmocfB?;fqsL(gU8#Dck$NY=Z@v;eg*{}ik%OEnPS-7o5b%1_E z5)FQ=*P>Lz;hq-VP1%9S9bkDaDDw9&Jr+EOWY1m>K-F25NKajRk@*U$c3=5-e_~T& ze&009^vNbOt1ubM#X4x_zfB^T|0D*vJP>UJ9aWGGee8OE&aE?>mJ>y-FWv-1H zF9A7+d18pz^2Q1Fy*)1NkW3_(Ia++61o3F=gM;^-?#)v|qp@FN%G=t~oDK<1#)|9wxT__T zw_=uO!uk2SokCf zU?HgHRn(dB`@k3h78;f=6d8-#Tp`!*H{r4tPjOGb>N2w{ub4j2fT;OT!p68B#Qv@dznEFno|4K~&!ojF;{9z3JfekNv z>6)a~9#}YhB;4u8`8{*eAS)p*?WX6AI;fGH&EAARq=2~1HT^>tIDsv$T-c{fO?>vP z^4&Qnq-(nRV%W72D#OQ_84D#14!^s_A9)c#xkV=uB!h};YB(rw1RB7SC4Z@?wZA zkPh#nYZtV4ZqGTVD4JW?by-Z5N(5sZXjwM7z;M@TYcD|u;|IVEct~E_wdeQcXGYcl-pG^=uLz;ZHPu8AmyA&Yn^#Ea6o>ZiB|-oP zxdWvbT_yYb((XP7<}l4IGx~MC|LVGvZ$<|{nwbDO@R_9}D$LeRaom&D6$U}8t=u+W z)H`i>6eGhaUYp4%FE~ThgYcfc1bJ$l-FOP^`XI(iVNZ=LaMLIZ@cTC?Oh?`=ik$!c zOaR3V1ybGb4xd#r4J&rT~z_uHN#ZcS$ck4uaO=oRMKx zE?dHTJz5d=BJOWLN3<}_p_k?=U&XJ5OyrL=IT|WAx9$Eb(|GRY(+iA8BQY-WeyPDj z5+-L3S&uSnptG8kCVi8-Y3y9kKz;;`7N#lD8%onhJ4!3{IM*TRsIVXqtZ)3(+IGM> zmy2_!+{r`cEQjB3SXJ*Dyc+NF6@w&|_J}KMzf){;&H|EbBfM2IRe*G!=cjmR7k8M` zNsjx@CqkHDq!0a$)vU+6ApV_b+)o%}g1x#qsG7r+cdW%;FV)oqA%butYzd|{muHm{ zhQUPy{wJI-rig=&Wd*X|nrfzk^Es992ZpYD5|eK0mvJx7G1dmkjN!Ej!A>IxO;aCB zdR1>ky7ZzGjA}zlAmf0NC;Dzz@90<}6byjcjtoc;Aiog)LJW5E3&LK_;@<7>2H#bCX4@^x1&ANi&uc5!MY`^WZ6)jfzHWbGL-2*jcMUkP zl#D~OM^?ge^y*5#Q1ct3u)EUOHYAz+#xfbLSpLddMb7mNKCph&WOR(q$7E4eO_<;= zQod0aLMut_vbZYyepppP%m3z|kbBidb+Sl;UGp8B{MLX#y93Sm&b^)l`VT_^8h$D#^xV6teBb_7n6mzUYVi z_br;|e-w=WMllA}v7moHXCy~aI;8jE)h}l4hS=Lu_BQe`aFpYUIr0jg&QV8M-n$1y zHNP}Xt|ofpsQgIuPmb8oeysM4yL2w*9*Dxc6jI~3^Y;lBwl1RMG)27f#!2(l9<4kl za78QO{RwS_w|0nH1t|{tt4r?qB&0ee)YZa@eYeUtkQ|Exx>!^D=BtH>Br^Qxz0?4}ymClvez)1gqmh$D{Q}JwijC$*5h~Bp4Ho!Gb48opXprz$K%(BUMpFo=Y8O)0*0P&ZSU*a+x4hnK!U% z(kN(|J} z_qo>pT?nr{{QCWQH{}ty6>v1J& z3muO9Cbh(xlGS`h)0w!Rml4L0Yb8IMZG>W!ypaD)vugkTAVdKdN%fInupp(5aUfbv zi5@d?+^vU8vg=rNbDWPSI+~k!DB&M@S-eWgy+5F^y}PU34JDd{>C8R)>xT=|@k{+$ zq`3HPCU@J!!)?vq@<#8U53ot~JRb&@f6nL1-?Cmc*Dct~ROI&MJqY9xDCM<^VX5UB z0wJjsm&35P!Fj1NCg2hbKoV#2Hi*RfhMo9}IZNdoeL?SgNUY!TEC|vD=1(j$9t_}$ zpJm*Itz+c+6=in2cu%YxX%UNLB(IS?6ip6_Y#xK|FAy)wu+@ZJ(V z6K2R#yQ6*WkLUhSo$eSJweOoBcr*h2(Ur-2=2g*H?Yl2W7_(=z7stMEH6|8moGuJk z#qg=f0(Ad$hOudVlB5U46Vii+Rm*vE1*FQllsDlwcWtFspb|sVh9D_U;Ctu=1f)G^ z&>J#9hUr_1^Tcn#ZQPdWe?romB@b3N)RyXs-wLbj{|bD16~F&D8Gy&EM4@3E<8|DR z>-!KVFs|b+ld-Wd=)@6a`;N!!4aU^R<$uy5)4MAw;#CoN!AVv=Xb?C2dds(Olb3U& zQ#UP!AXn3t;;N&g-$DJ9xr|nGa`s-lI}mEccQ_0=@;taL{8*(9^=fRaVy;iGW)Ynn*)#Xg2sqDIiZeGXOa`vd0?+~hJ<8iI`?cwlVt7)0<+oAmYqz(E^Hk+^-FB3oX zUp&{|qZOti=!1|22g~deFH600`qcq4q{~f5G>yWytFuuW3kEBo9x^-$~15S2FoO~<}9Tyxmd6ic4F+UTIF=&5SH!>mFmsQXVR zC^ELHtM{uw7D0Y{G6g^@7uee3F_37-QX%A9@sCh^ocn}VneJ~R3hMi5SkOGU_3yUx zUcv^wLIq(t!EoQnrb~~uV~~8r!8MY*7p}am#Uo&1X<=lY-H8joEN$@Y;jHYqZ%r+; zK~)qVbJ5a*BTPr>@m&YZ*<6XOp)+(IDUldxcD87A@e1<0SOVdyGUszSxt zFE+ir$3n9@F)s=s%A`n;^Sg&#FeeY$f zPvODf&=5oGQo`P$29(%o6Ulk&0Y6*dUxmMiJh9wl8nbyRGON<@NO5^P$7@Ysj{kIk zbi_F)!H-B6nphEuhx9;$v!-3F3UROgq)Tr>#$ExL9CUiUO zHut)rgY3>!WF{J-HL>PkInpzqw2kIjkyp#Ck%SEFbZW+@EWfW0YW+l<1O>~l{so*T z>o_0t&Qw9?6!c>vR7{qKr8P54H3W9Yw}EPy@c62BVanzFSZ-j!sb5!$V&M#D3kHpw z#G<)Z1D8gKae5=}aT?16dsT0I8=!jMd|N@Cbo7Qk76T_Sz11Xf9x-c}y+Cx|JP&%C zd*(f-v{%*|SdO#T91G(M`PV1V*0|JdiKJ|cFQHr0DcY9Fqtv%unXB|}wkP%%Q;BpLTq$@45mm9KC|*hP;_zTwL0A(l zH~wkz1g<%cPe)yd^b5vAli+Sc(i-$PZf|88>&-PHuei+szTWV9(a*svx@3<=?fJaA znyi@4RPz}28vl;zKjP`E^IG>28QwIN?M4OWdJ^`jOA_8wD@yFbnM1hy1Vp;gNo3ZPC>P*0u1RkFjp%$t#1yO#Cp1acewPtwpB0E7==K!7YiP zE6d>ct9tmD`)Z%FC5nKb4K%0`d~=j zjM@^~li8l3TraxiKc3*WbtB(6ri2QBiaTlJww7aA-uI4iZ=#6VhTL;y7k!JXk=U<4 zsLJ?I_;!ed8}GB+Nh$Ss{`aXj*DWMDCg||XyO-ZInpO#-apr;j8HvDBP1f;*GmcOS_2C>JQ%*{5S?+V8O$Jx zL-`ppH%1z%d2!4tKB8l%HZtHMOU&&1zy^<^3c9r7=i_=*F}VDG`s{(Cu1^Gx_jA3~ z4Y}HKuxw*aWVrk?kH0R(Wl#iTU${P~8zzjitm^Nyt8Ypqkoi@M+|T!Y>$QgVPe0f} z3qksiW^k8Pp2GgjqukOngX^snY}y1`VHFn$kHDB5QgK|{KJmd7;CQU4TM*m)2FSm^ zG9*^!BcTvY@vKkIs7HuD1CuWsi->sN5+L;*04pcy5uR?zRda((KW9IJ)#kM}P>Nhg z@mtKp@Ot6KAc9F?YmmZbn^1f%lY?b$kK$3AO=`Q?yqpK~K>c25|Jx@}Lf(9sIE^+b zu1a%n$QTC-fI;AsO@vgm#Pak{4YU#PXd+ty+Y6n1h*h)XT@hy}H4vbM;qkLA-YSHT zg)A|s(j_*(4=gc~(y+*jvI9|)gZhz>7QU4eZMHkQSa3P8lx=@hHlKYK(6^tV^L{|T zEYI_&ou9wX-LCP)YhP@M<6}L*BSaLIxC}^lI8)_OZ_pH z4nQ!AP0tkKg1$}4MAyP3bN0&F!?7OPK$H$S?#RIu?v>u!GD^o~jzt-^Ox8w4jmC-A zV#{>?cAyVVw#mEtVldhS7=l$N56=3YwQJkt`915WZ4X&#E$;-$lZZ&%0OXG#UP*L` zQ2C=}4@smTlp}E(s1v4|<+%rLG0hq1H5VJfcnCsiBFCy$d!wU_Px1|)U;`_B@sbAl zEoT7FyO4{~63L1GOJ5O47ya(c&fB(^zYaA<~bn~F{(`6!E z0iC^8=>s3*JO+R+hPnDNSLW|Cc}naUrr#}^(&C5gl!5jMHdhjQZ6E%(PyY~6_$v3N z!vJPM$U$qm#7f>qW7|X#gCi50c3BL6 zbp_*h)91VXBk2|A%3}U@M7Rfc!c5j`;;~+Z&^e~wfn0yytohOAxl+I~YdLsqhpRqz$34>CsP}kk5X+d;{N~Tf zS6Z#DgQw{vPA}#kuVdl=nsGrs`;V@-DxOA7H|jZ1}<-7}J_M&Ral~pfi!WW(j`pTDc#9t=T?0 zz0M;xfn_Eh|MM9^j!0s6=9Z6eL3`)VOQbJZVI9K4fuL&HGw6jBHUFM{NNdKfuPdB^ zgbD`cRR~6PLYT`Nqr>fmCj4`M!7>AWI{P97_?@I+zYrXoA1x1Ff!)M_v2`bk2cUlB zuoFj{bdIhA?L@{GepQa%whSH$d5+-yHqg)1p%sd1roO`U$o>gcKc}MtI`vO5H{w3! z5R?V@H$f9y*<(?}=LYv` ztk@VUiz}J+QTf_E+664>uqYOxR0N543MaLTtsXX{6^j~)sC2%Kz7)M zJ7RW&dmr^dj^pW;ZD0;0r4g>^6$MraZ(BgM0dyJphtQu-PfDmat^I)F@tNE&*1QRP zjt$|e3#8LiLgcuZwYGO_FWUMcA8HyE!--Goj$4}| zrQ|09Kg9a(#_wP&I8wZ;CGT5rK2<;Vd$8xIN{F+Dxb6(BP7m`IVYY76{`r&AdC zWFYRylHv2Pm3R~qA?6AFd|o&8h&cH|c899FA%Oo>_Ax7D~E5It|4Ya5R6v&nyNeum9`Ler*=)=P&~ zSCyWbq0fbcA&MX#8ex=TOf2~z5)>Ey?4q?QV=1xluZI4Oqop#IU=cEZj8=d*SKL1O z!b}~%6WBye#axh}g^_K8(}_=6L=p^bL*xFU2^m92m|!0Fl3qqF(6s(gp^2yP^sBg8 z>8{QCZ(hqS0SIietu$sIj94PRtfcOBF0)Xk3;elYSS}aD2mZYBUiu!)>9_F0KcC>N z`|*jzDMQqF=>ofRnYDOroj*K`0}daH>2JPUn52nYsN=6lChlUGShrWJ$@FkvD&aGf zV%v;bta#ue#QQxYY%WjljE7k)mQId8QI-QDenBYU_?;f6Q&; z0HgF7SVTQDgBx!KXs^0_2Wtsn0UGBuV}Rlr^;cd1{%mQbW|oDtp;^Ra>gHYfFRp~F z(&6rm=E-Kb$!_-GI+|h#Z(XW0mh9o!np}78U!*^NvtHgYy1D6yYHY=J*XMO@FMX1bcMoGSW+_5J*ejmm(geqK)A+0CsX66r>Uv4q=JTMT8&c&wX% zr_uQdS4Hda-BF;S_Y8CelqQFjJtrq1?F!$dM&xx`21I3fKOL%&R~~j>mo>swEb>@O zb1Ix2ezMEM(lp(hBld`+TXYn}p+ytYy)(-rERPT@U=qw_Zc~==%1KrT;b-G6q`U9Q zmM->5=>rlWvgm`3ufk-gDEv7bEfgLGnw)ax%!DJRg+D@^e%zKW{~g!N2n3Be1}cUy zT#B|~w^^O&f_A(@_ER?Crw7`$KvP&W-73;-b%bi{qzr#A=h|+Y5ppaY)#7Wc_KYqy zv^#sC-0L$(Gw}lcZ}+Auf9m>a^fP339=oPvrEKV)T^smxFB)qaw>V#!@Hl7~-)wNJ34;?@pR(v7x zG08h#OZOFC5M8rj$^(+v8>zigo8Oap#Wqo4gZI5mPi$_27BAUHyG8MSp^@xV7ju9H zG9f`HE$#~$SqUI%dsZJmlA3s4NMln^DF$7YQ9-g)ONxOhB)EEwkM;Etncl0~!ZbGw zSDYhM4jJEA@eejqfQHx7U_h$_w5en#AHrB7NRo2SLaGiAG_3wgq}qx$=22%*JHAsX z4+_*P1x8(45})`AU>y|UBte9jfrix9=Sxgyp%!CGI-&!Mb>`2YNb~X+k6Y8A3`-@s zQD~i|hzsxkjLw~VmN-+uY5MSa!^H!~YFY5ZpdG9x6Z}FGe{g$}R+hZzam)Tf#mIs3 z=UUR`X*?osGGxeIv`}inW_kGJKBW1lBlMlkBsLLU$T1c4$!!=P~1jbv~*+F^l`WG@=H%jG{PSEJmWWkfS3; zlgoR4*MnyY|A{J`Bol)mD5fb`x%I`sg)WLUr()8!fc|mB$2Qr~_7Y`u0saB0l!iZ7lOJwM5}Pm_+iLHWzZRa*$K&%3 z{Ql_xIpSrWo6(uKqk*E6KM8VQF?v+P;J%Kp(48xG^WD>xL?B$SIwFby=gfW*meRLT z{lZss6{b;_PY(65AdwWSWifejXUvcI3;?vU9UtPQqe4|RFva{cnQOxTd`e! z<}(D)i7jAo^<;8v=9n_VF~56zI=lS)HKP#n#i4fauFry<7kxT`o0AOfu?GCG&f|UV z2}6`s)lG*_^FfV4cw?Ock1rvKL(|WKb?=?l`O03M>MsmmLRI^kEo%VY;j{A^AgxB= zKG|nM=;D&naK3bzdj&tYiRByq@I32g(xlHluzMVMt=vIrJ+bqo<2DdE@3k%x|b_~#u5~+ z_jGkR_?H;AQ*E+xDDXz0wof)LSg^B9@fADQ{Bb*U^TND||H9@@+nr`;kH0%>1UoQlGJiGs0Xn z63w$PduFSTia#46Pr4oRk0&@PBO026D4Kb9Zl z!0pWGiBb7Q_vm>w2V_32DJ%hJ)~tKYOyAy@@eWl)dfa2`5#*wzf^A^1ASo&Ho}+Nw zp{)2?qr#0Ajzs!lAP z@vewfHjq(1k$pTI-JnB--KMD^vl_E8x{w)1-Uq#_6G*_@&t$8SVbA8!WWEkJ{FQd> zpAgr&S_Nl1PrVB}`Vktx+?z|8l-y}=dpb7z9N7nke@QVvek~(8h|&u>9GGUbo#8@8 z@-j)%3G#T)3sZ5EEIxP)de=;j(3F3Ay08(1ejU7AUK!hZiW~bVN61%BVQ?{Q5(DnY zxpCV8DXpm}HEsId=Z{FHtct(?mKj>)$gQz(^1!W&1eE#G#w(6=Z|J7NS!ls-2~79rQdDQBA2kfeEK&?a#q?^*#FS*?93P~ zK1XQ3>Bfd+z3qB;NJ1E3PGQxoj9?BFE)lDuul=eJM#0DgX7O0S;f2C7aR|&30D}@x z5*l9{z)1vfTSOi{uU~B6h|^<;EQ!JrYyYRY_zK#R`q>R8@B4i$V7)W?c)@zb95gRw zc_G`;g%RPSQb?;<_vTC`g#yd;hr70AwODvqYRq|Wb)8h;OaU4}=!K_9SvSIfuG+XO zOur9ZNudnN7kbwmh(?Me{Hwmi;vD7OvcNp|+o2UVCPg?*>XtI<+*BLD(q||4nP3#J z?b(I^gTbQ6q0uJw$d;(ok|dX%HUNuELyAN@Dpy*d0~l#-DsCLJ;fJkeJ5R#XfXkPR55gzS6tCiB{mPpv+)5$ znedc6F;xl)DxRxTViise#9RQUL$bo@E{(lX(r*HbZg}R7D~W#U;9~A{wYt9&{CPjc zDY!Nxl>3&z;2%g84qr6+>@y1d;}{}+3Rn0Vb=YDNGaOYA!g(RkOJQ0)VohYd7nNv-j&~)iqW=6NqjFLj1Sk^2cuUSZ32y(8_ozb|z1a7X^ zR3}wP9ys{5d2?X9N2I zm|zzIlHqE|usWO&@$1?XOm;mKaxPwjYB9_}_LepbWoEnvA&4db7(?Jk8azoPN=Hts zRdBM@haB~;TNmL}epxnqw1V=@tyF^0&987A66OvLvTFPrL11*|r^>@HXeS26ev9)f=#^|DS2#lF* zov~;h_Coge6&LEb@y^U0MxZ-E9;_boHB!alqmQ_*dg>hlRhFl=%{D`e%NXN&1r_BB zr7ofDBrkcnI&|kvY5oxqQX5$4Y)Lv68xUuL?<*W_Joh)Bv)Hse&Ozv;>-2LOML$lM zijJP7Yz0vGWOGGYcWsvpU2D0yOaG_y7lwvsW~R6ben^Pe){geeSOpGx%PgAZtCFGu zLitZ?O6)(M?c8R|H@GlG5WZSTbkjCq3P=8OJ;J*qNx*9GY$ozpfSdk_K&zp9dnP2t z&o;4qt#r!w4ZZPpLS~8r(ve@zRmL<;fl>E3577kIAu=N*BK4YFX1|Nf=mow>&(758 zl^<%YZk18vRWds3v+!AqXngoVPF-RhNm4G|CQ;%azo%7@ua20Z!({ijCm35eQEY@y ze(GT*)tc+841wqUW~Tgf*YL~N0FMPoz07@CEY-9skVtgPXHwudfktaZq)x2Pb~Y|& z#Bq!_cx7Dg=@u8~`kuJ3n+ZNdQ=BTAYsO|51!x{RGRC%a%g4P__wjYphlFMyoG4ZG zyJmb?xpD$OyS^=EX(=UQgJ7M_4=Kz;H@s;|0h?GV^+oSE++pFMd2{3gy)wU;ISppq zf2CsYrsjf$ksYrHJ^oK~F&eS$AqYMoYUh_FcRnWR9t+(Q>?t~HPj~SKX;)dn$bjod z_&jc zf3mjYq%1#$_LFlB{7p7tOGf(yy$8v`;hwOFBFsCOuW|%Zl3)<9nlEO3_ZL@SKt~sa z{2)I5ubS_YUmbnz5BvTA_4Y0IszRQoJxI3vSVP4_Aalrt(fuRYy(Tek)0mQ#!<8zH z3g5`!)ACz2Jf*cl=l@^1*kRM`=Ne6ZpNi84E{QXK?7>re50ubyuzgi^o@j#h?pQK` z10V7QI?ckXIO3Yd?hAP~r}qOd>f7GaL_lC$5RGuD;k*nC1m5%-CBX-uE~y~Qf^yT&cier)^0n`LY zp;)F<9X>zKCQ#0rWrrx(=uK=}Rf#ynq&-2m=2 zw#|aq(Tj6^vml6>%WMrQ7|v@6ix0T;(%&SUkzWKGzrm4`RlH1t28=@sz#;%uZ=SYI ze<{JzGeN51#0vMz_Ww`KU+A>-udDU2RSMzQATXu$$n-=0;hI@sp!kbTv%Wr&g3F?x z{j=}n(%@0wWVpSd3;igu9GQ`5Ff>+oB_Uk-Y7}y`EJi}Bf68KCnbA(+N!VWmS&JQe zi}?w9BH$A)XgE2b77q$yrt|u59pMf#Y)t(h6Xeo&?6b*om*DP_#YP37y!jIKhvL?Z zNNTy5f0d_W^?nvOi^J?tfLnlYT#h_ROPQOBh&Qk?Al=MgSV9uk0JV!8i%Y6iw8YS) zXk(&Osg*pQ*vW62A%Ebn2rZ?*M znEH?(bBPWMp{py2#ms}1#bltzU;WxwU8KpRcW^_jRmE&SBgg-asLi7X{Q3zMTUuQc z?0C)>S-Km#cNfu7JvJ^*zzi4RHQ4$?Cb0~2LbSNC_q=JEP#BL;DnJqtl8O8~%T3R# znq7D!=9N1z{p>O(s?lELhthN8;UuZFGW}sXe$9-Tt@=yDPbL#})JYT#C9$NU*?7d& z7$LR)Q@I%9BCA#gllEvwmm3Uf*Q(`9zV;#NuU4KWWk%0!cDkbXRb2%_UX5cCL-r5% zrNPsQsAs3ubuu@AYn0=sx$3oD16Z6Wy+k?W!JQ?%{g?rD(BuyyDhddX&{S+abJ5vBlbpilL|Ip*cos#q_LL?tf7p02p~^8j_IrH) zr@7efaw6XJ8B1Bdof`()Yh4;SUg`$vj}{vzh))nsBi;F^MPC0^#wpoWo{l}@=-y_K zTu!Pabih<&WmDH&fHd!>dQK}(QirpUd*S14#Tp-z7Pjbk26Wom<};Q z!AVSf;ghH`Z7K&>g!UU)&3$u@&L8V_&KH_g1l&anC>rTQt++lZs64~HoD{u@dz-z3 z{?&OcsmAKONRc7dj`kqRHxvNRgIN5Z=3<$PkO`(nz5{HTvO>Z|)XInt?)4C#9WFm3 zj3?fE2l)Rpx%mJ6fdD)>Q)tG{?S^tGXjGHZt0{nG9n&nCZg+7CN@2NOf2A6PjpSkf zYk+eIe)X=b3%)@)Yap>5=P0~7-Ayf+d!`vAD~4eo{RNVSJqc+i`7bNxlKmJJQhj@v zj!W5R()TL}kvAr6=moVS7x$kDQ@0b@egrE91$N+&*>(_GH}(^NQv%$lqh(@Y$hEkG)5JJ;SAwy1hGdc)l@#m0G#c!rqaPDCS&~@su&} zp4+zVIv7+b<|p~ox&omy#LliGZez6rhRACvl*3HO-;!1)^!At8aaB{`jWF}7_w0eQ zOu4aFcmYW8ZpM;e93!!%v^364${k(juxhwun9;Sy>bPi61Le@Vko|j*Z7qclrTf<~ zA4SjR)}!Y?e75-Tf>WfiNeR7%1%)ypLeKk2FM-uRWDug)*v*wtBNAy6d$ML8wb8G$ z>cm_DG|U??LBITVeN@y`-CYPrL&EI{sj$jMPtz&4oP$$=KVn)bER4}i&!zX7f#RW; zv=!NJ$T=tW10rYcT>cOL-j~3GF|C^p={JHEDYE&Swbv*TM~zCJBgS=WEa#?W(6hIK zH1+XeCjMbqdh(qWcrIOqO`tK|&QTr1p*i*fOnXs*g74mxurU0!wi}Aw2D?Ac)ZkSc z?mVpzZ&3qJ_PD0eV$IRphR?E9|kCMICZmFUtW zX?n*((y?04q2ErEINdOKN{>At2Gvwajauhx=f_IHs9_3%7RFy)SNit-oiHf3)ww0? zt;ruvWvUg6WD6ab(7g))klKpy?x@T6XAE+6;XguGI$44C$*dZdesW+w$THJ{D{NR{ zgh#HYpZZgjY8g}gHjmctb7J!T+jFm;nA;Hs9-1^!;wJ6B!xS!Lt1N;`pO4F?O0$5e z-o<Xyx@Vn74uzkT|Li1P>qt!*uJUcN=}GrDZqb{~Si@C+wV&^qwJ z$!gH7LTr;~7rWZnyC8AH`VgcY?j|DYmL+wJl7giN>tFjRZ$d=F2Ou8QJTBrz)N_j zej-?mQp_)FOWQgTG^V(`ZS^L{`1lc>;w9IYt6OTt zEGkrAJJ5pUjGA`*g-?PEyIfK61bs_>;?i+tF7cKTf8 ztuih1C=JajfJq2~u0!^F4Onw2Z$Hg0E!QZR5E6YpheekFEfOrX;);Oyx|XENO@|Ij zL2vmsZYDvh%n_e+!T|s2<#yoYFb}t3#M}hChJNmu_KmHu)eOuJy>5`{fJ_-EnGU1O z6{74iqPnB;ka@!WA$n$ne-f&USKEv#yUHdMn3$6lfEO~?U)2%*CcA5JFIXI)d+LS0 zg)6EaX7zuu_fA2gq>Y+&*|u%lcGWK1+GV?Hm#tm4ZQHhO+qP@^pL1g7kC=<;i0SC~ z&UgAQuQP8l-&|`wEw15BF~={i%*&hd?05aQs=jw`4Tlb(KYj(Yh;HHfoH0cdWn}<)3_oAQk1~%n;kM>!Mk~ITIqarP5fsNF~SRFk%+XRRu z8ZQ;{I80=>W5KjkV%nzhV3jPR{Vt*Fb(U&Zn)ZsROzjhMl0=WFgr84dD}#dpXc#ze;$q4r;3++}#$TV=RcgUD*jD6HE|WQMjWkl&i~ z(Y*=P$su+7Fm|g`^@nENhQlr+m~Nxz)k+BQS)}Q{z2_=!CejwJu(`?rR!xLb(S+pG zzrS!{Y3wzFSFWD$GiKDMAbC%6E0&tXjm{e17g=)!`=@6Q|0>VNKE-YSKJFD!oX%VQ&w^^sYA+H_$;@i9q-nmYS9T_Zq}I zBo*zf3Mp9t`_iFw$pXgiG!Jnl<;;SZ^+6rKw|N zfr1K1eA_R_TyG4d-kQc*-7gY9s5wLO?Ue(zjK6t+zF5FXn>KD}+JZ&9<@3RaiT$s(*bGa5jkv-~3> zbucx9$D{7;A`%8cg1eu**$vWp1>>PVo9{A4pdSQ(Q6S9SD9l2gT&Zr^c2J@+ll&l~Dh&{>1 zXmYrIx^ucIQ?~==cPy}{4yZR1HIpN->h`gVCS~+}S)3RIMc@Oa&nyeEo_C@?okm-x z5l;9NW0(vY=vN}tSZP7}WSig`20ZAtPplUj{4GaNW6v=v8@-rIP#@oIqAbE982b2^ zKmO&D*_hw)R?T8o*GC_>Sh#t_Tn zf7bJ1q@#X)I6o;-0UBVcG@o|L-cG-R7`d|C>KFl@Sh{_gnX#=j$iL<7Etc7X^zRe) z9z=JhBfyhGo0#L$9STX);+ko~d`ooX&M@(LM`Px@iH?{6z_EASR}k?_q_Mq$3qYr`PTJTa9nx!kXPw-^ z1~j2E$D&wEO3CwXgZbo`sETn(uut2)`hg+DXSY{kg6&M%)~&>5Kc1lMjIu8ns3niI z3Pna+L3YI{ZgRj^2pQ)MGilyH9qAC%W9rt|BfD=2>lzmL;}*9Wh_nSRBvwHfY*0m& zcn#{UZ!vP=)WnM$ow`SSm4=v0bxj*Ubrw$$ow%CHd~2l_mNB(8{4G+x(UyRrTbX(* z`6?~c29%e?pEO3JF)K>6KR4$KwjF&h(Sn{w;fuNLu4L3^d7c?@Y|N2>^#-xS7)u zP`O;xNfE~jyVHoGNF$>SAJ-(V5THb#+H{>cez)X^9g27#Rxx)`9LemWP48aCs~$xT z81U8aIAII1E(9wp?dnJD!B=wIAIdi887~KcY!pw(G1ZSNMa8Ut9zkP>bjlA%=OChywW{B?3XDZ z65c1mL+IqmXx6as%j{bb4?WJYdY$;imx~I>OQ3JTz)bSg{fx=|oxgld$eP!XzhCat z*CbhZAB8Q}N&=Olnx)oK;p>6i>IHv)f5!}gpRKolkzt%B8-b}^Ng5x|u%21cp#^zi z+Hdh`by=Ia>^B)AX7DUwY8{c6E9C));z|K@2ze;YA2o7Z4>!~tzi;9(OO=o1?gRDQ3U`22ImAKvL0y)xd zh0?MeT%DsFu$^T5dUp(uI+DHYS*?4%x9L|jXY%s1e?dllZoG|hLd1;z?hC4f(j{{C z?A`XBuV$5o5;5uG7Yq9PlSg??3x^$><%}%BIRic(L#a1-`dRh+Y38&lyoXI5TNs;S zsVTRbgZg$r2n7gFQ}k$9EO~qC{SB5a|dwAdtk}=px0{` zkHB-reGnGv+C98Fr`0}t_P>4v^Lrhr){Z>snVGUc2Xg+PND^1i;kZ`*y|aHWx!Zn- zT}g0}m$Qr3en4Xwfl{NSc8pBv`};c%aA~dOIzf{Qw1sD7^>Q9T%xbYG;(eBFtuoI3H09IFh23Df!JoUP#qaxm69|E6+zl1}*@qYF&N(#1O z-+oR6TrE`}hEK{7C?$zL@4|=}w<_AgB`~acTV9NQBLFoSH*^Z|Tu6|Uwzjbjlda<; z?jHW=x46cbz4^1A58%OA`_iwoS(>t z`p%X%_GwS%eQKI3Z{a8siE4+yN+I6YnXC+rI<7-|4~pwWL>m_8H~VYikCycJign?% z%PxA6*+1*~T)rTM8O0lSfq#4?G633B2IXCL<7szr_Hz=yij_h({WYG?|H)s>$BZqI z?R>%s?vcxj@i-=OP1N`7$2E3m#dsiNQdXfOOIeD_08GWPsf>SVSAss;XnGlaV{2`S zb71KThR%?`9kp?2xD~n6kfd?v_Rx0s9f_{@mwsJ2L7R0Eeo)riCn{d|^bLs)m%hqB z`ojt!pt8v48-12WzRPthtqg@%aXCu{(}GMJZBZ=>#8pmzpGHl2jF6FXUmHxut+Ol_ z{GF?=J9XBcv-;xC0R3v3{#YF^48 zV9j`uiK(S4@+RmAv+s-#T5=P0Yx`{*$~Nb1kPSAcALkj>Ef8N5%1;R@dqmkz4bj5^ z_IPVke34yD$1Z?b{gHUAEuh|o8B-QaZ-&QdP5^4cZC1NlUlpl1q-T}-e$qsq^8!x^ zGx1|_Zi`Q0dykAb=aztOVrK=glA*;zj~R>1e#-yzGmHD|U&TwP=V_F-KaD*~5T3RG zKwE3M_@?pjU;?d&*d@q5xYM2pov!jsiPc7WBT;$3DMIoA`B=VykP_dY>vHH`_Cd!; zl<2qADFbs++J6hU=|iJ)1YXM;)A>M9V+_!{A<+)pdqcAWM?)nK@!=esRLG9@V<>nf z?+Sb&_Bm~w_)yGEM5lSDp3+8j!n?2tdiBQtB$dqJy*q|PK@3a+OlDTUO@y(>V04G} z*MVE%8PxB_VCewBn>BNX=TKTo+$bn=l}DTsyj#ZOiCm0 zdkTj}*>HDUTtPI9+f=jYkx|)7y~Ns3Vsi(~i!~?nlEZVo076o0rOA2&P&@M3=Z7|! zasCv8{|pE+!sM7ABS7lF$!KHH!kWmysg-`vZ9TNowfb%vGGc`<3Q%MY>N=yy^Cg`J$R({Edl0@gDuF|%B+ALI z1IN<<-^5>A$LrW@X973Pd2&5&1v2t4(^ZT3q08r4%si#87sJJNCK1G>1)}iBdF)0x zq^ZDEM5q7u7=DuI1L#Iu1->&T;gfjYafv{@=T7XfQonp0RYL>o9myVphtyIXu(6=K z?Hdeh;-Qw@GNM&3i;+W0SO{x|8^$1XiFi|oV5%~pU7;bYpVs_1Hwm4gJ1Z^2?k#3q zPq$hIbJ8!98MZg^A|l-+9h)nAdd6DAb$KWey68l;%cX5M+-`xdOaumG= zln}*bt7#P1clEZ`7|wN;LyHL7e^vjYtV4VhmZhcCl-Q}VXf2@gb$v78_;;EuUu6(j zNqeWo&ve!7@bgMdFQR}MV+Z2BN@lYvqn$e*odIpslYKM8FwvF9OhS`3h~_t+9WaT&^dCyu~i{b>S{ubW;HyUCBJsWL6F zkx|JSxi^17?T>mS2{Wnk#(v@xCJ%d`&2vN_9E*HV_E&uuXJx?Rh;(_2@!HPIzhJ#< zdpq66#gWKt>tW>tQs-8j)`u>qSe?6oQ3ZdE^pki8IAM<9a+5C{s&G@c&~JA~eNprt zo_4@!Ug}Dt-oL-Z7JwvGolN;#+#V7^3P9;<1~tYy?Xu2uvg-x-4=gy97!4^+gi?54 zI^pdFu|tVXdb;{6tliDDvEpegIUJZ;0`oaW9#L7;l?xnEB$dj~MHc*8Bwn3g&$8kS zAW1Hg13ixcP{5F&T`3&YojaPTP|?pm$I$>mOCqQy4)%-?1=o*Vw*I&}9bVvl(x@MB zwzpyD$(iJHJsAESJeFZ{etCs@siW}|L79sQL&aW%{~&_?EQ4+3$q{1G&{OQu(4W)x zTkUE^on@CDNjxFGo!BBh8QOk&vbYFR3%&cR#-mvjS=vL*aPkOuR8HS)A{`KD0&U$8csPb(Glze6X|1tXP(#cR-#{7^*iq}u|EFWxjY z&WIb`2JpIAhs*XRh#BF(MNzEp4;*wx4`DkW`XM$aGRLQ;yS#1)A$pV-jN>9+gZ)MB zlb4nYAN-$Nb`Itf)X51oabB`X#fG~ut*4rD(Qz3$P1r-(02U%T*evNPmNm$lAEzlH z8HHszLChsU3Kj>E3tRX?3q7?me2Sqge_NJCNO7@sMLQz*_HzK zea51TwV|5@=oo$v1P=xIq#5QBH~U+L(SvaJx*!9qnYJ&|Hd9x6t72xH($w$A*x?_? zG5(0E&eKRM(3}Oi$> z*{y|nzGGEWF}J}g6}FQld+IUqd7Q%v-GH2BU5;DQl4}ri{Mg{zF1A710;RGWl~qf)_7#RmgL_&D%&xMb70nL zln4f*a>9X~9SGdakQ?4un!(^m4P~5F&;B9|nvt&4m$UwV<7EEb_zQ_JH0e~7NiFlp zW*6AvM7wpj2-bB(kTPV1-{Dem?jDuu=PK^dAF0|R`n<+| zvlsz=D7P5B2d}{Z*tmzB*V$`jrom;_PlN{va(LrV6+P2f=0S}Pgl*Y>%GTITyc86g zlPO!Ed>~LU5e~=zciv$R14>;>q1cyrl4Dn7zFCN0hl$w< zvITL80L+0w3momkJCEs%k^rPLojmD0#7BJsACh=&QDZRq-MLt)H8CUOzmJ58zI4{|JLKCvdr2wj$+aB$gT8 z5-NeJ22a5Sq>SBcp=ScTC^|{%7kL%op2T2)2e|zuvsGD{dA&x(nd4Su=<^w{fKm1S z%LtcZROqlSG_bKNo06^W*;P-mY&9n>09}6d&A7~??lN|^!O$G=k$7*XdFEF3Q`m9H zX$#7~QopNk@Z;KP{=T0(VVAs^rVIgMfSs*&itf-ZpJ41eqJ1^*-C0r7^wjGVPXwy% zN--UCVna)E^4Nkm#~6>ktd2vT#q5i+P1*3bKTD-0I)V{4QXv)(AKhtf-bhenvC%T} z^sUoNun<9b(_AKrA#CPgEP!-28xo?Vh;k-rw)G|A7f}#1;2~z7UjCxYEESR;e-yME zC`=^e?|?M>K_c}(j^BPzN{86rPFSYn|tSVeMfZ3R|GO->ej`M zTQ0RyTL0WsuXBxcL=G%jh zDHAuF^nuU5L25*_sH2Hm($Om;wOh6Aw|+nax45R`#ml^{V;>}*<<+><`BUX@-{J2a zj+PCE+ej5pQK$ zXlNJ95~Rer8QiX^!td1xs$JDhn9HdezYxF@fu?^s>nL@`Sz$Su!<-F_d(=oQ`|>xb zi08i7F8wjm;(hK~HjG|cx4dSfqmW`(c_30W|Lr?^CQd!I*MlybZ?p8y-x*;xKtp{c zQCCmjf3K^rdIL`~kw@a!-~ZP6)%4VnY(!f9yk`2CnON#jri=;@gNdE}voJOBTEh97 zPx?S^TpIi;ltZq(>lCEzuj*fT8#PE?PLa8yt<20B+SEP!!LF6AM)-u9>cVedoQV?K z4DjD{i}uos9P+bfz_l20Vxci)62L+Lgg;%$gIK^xnUedFZ)iA3n?wV)Y`DqoV)kaW zqxuZy3)}-B0^O)1XAdvj!pwbv=6I{KC(HQOWp@giGzX=j)IgN@Y1qQ-+d?B7#hJ-K z;xEezS$y(k&?h-|(+Z#?eG1n3plpU6yFo zvKiG~0_tml9*lJ|QYXNQlKWvpQudv0U`!o9v*oDJ@=J%cdwRMagz(jhB6V_YbE;nL z@`UnWSg&s~s;l3szCT+3IMG4_cVwh8UN5%}F*uV?FlD``Pw$ANk^&;yHQDQFyK|K| z5HJ+(oXSl*yt5Xl%d@-gY2YV8yPMoA!mhvC6rB%@j`QFU9W*NL15kcvP-ccIj$W3D zbojVgToJzXEr>(Di^gS0Mn;vBPP55KSYu0@IXn-%YPmsBfQD}Pvz=9)rnk!JI!M~S z6UXl_tyHcBBHqSoXu|}jw78vkzd;ze$IDZmhf8+0y!CA0pQ5am=u7<51xCqUYN!{& z?iq?t1lP#41UaDh3vKXrOpDo(Abxn1vVL1KC29Z{K*8*sYh^zK%CIBXLqD!>>}6J{ z71+ZD>;=e-Ux1kv5cOp)rX|3}KFk4-pzn7OajeFS)rQ<={U|>yTF#bHpVjPt62pt{ zu!{2GJ4WCK(yD@>qFZdtl=QW}CG%5wGD2PHHwH8m!tH*j2<7mNI<)%4A>{5lnf+0~ zcRx@vM_|miD$=QylTIaE?)ur=8ek=p=6_c{Wp>!od+j0k1+Aof_3Ob!(3L6#4Dr4J zJ<}~U8;OT9)@X)m1Wr_CsZb~A&vsV-@qGSVXZ0Wc;y=!r?Ec{|{^2kF;V=FlJFEXE zf3Z1UCL=Qmue=wUAMXk(nc9u1p83!R;auOHr}a90O}V4MU|<_HINfVf!;^K>EuLjH z8_&o}yflM`TC`&=dSogdqB%`5dYfShC3N5KsLw~oHMY!sBf1d=w2;bo2?jDLNs|T7 zzt(7Gt!ejr6_YS8c}dI6bV5;C^2=ZX9Thg0&cQk6QGjP&-h8H_j#&XI&y9PoZP~MaNKGL%0+>V4T-8 zO2UL9?(uM@cz44w*|TPX^=s@!)9&B3KVsHqoI!OxL*4+$^}G~|DLIWL({2Yy?Zn=H z5GcE;iec{x-^_G3C!L*~GQcS*=+_=x8%V2lhP}MUqKUV?7Y{Gf$r8FX)ca`|$X(;> zQ#K$=sYXIUnp(AnXv|BwmpsBdtFYa9S5Nn4-PPnhx(a6oI_`nal(jLx+i_wcAdsG! zuvu3NWbOQ>8{mcb%IsDDq+Ve8?OA{u_sCvii^+LUT8z8`Dvfjp{&>N0K*-kf!@-@+ z5&dp;I^9IQNnVDUoCr8M)J;te4`;kJzIw)D{+sZ!_#%@pOPdgyR-|Vk{J0*{HYp@BK&pRAh%J@hlUjk&~47{IyZL}bpWOt@W(II-!DCzbTuE_KUg*xz}yzunJ zADv$=Rz~K`N+>13?dyWacPsDFM;{)4M;FrbG<^P`6wvu?)XBlJD}-u@SUy842_Ep{fk{CUB znd$o%P3cSn_41)^u1@Ve6-oWdi}1DQ#!REV8V$9&{x>My>fieW7*Yg3oz z0peY@;_F!iHUwCTJ?%?n08ytb?disk*JNG&YHkBvSqzMyXqaASn=LkHO?<8nj0CTD zlyiu)fM|bJ|AN4)&C!80%|_y+Wg>!wtf!u$S&zHfx*t9@+6ygj;zt*bQ77Xl$VlBx9!clw;^jo0n4${3(~(!7qZQg zMs#&zxV0|Rjm}xA<)cAdu3gHN3{o5at0~Rg@78n;s3anZw+Rr&T6C&hyq_Vz!`Ba= zy;jz<1=PP1*;vuLpiG_VB|6l-r;Gcs+SD7Dr`C-|yDE#udwT9H>#mV#RjE)M@wxog zeA36I6*^lajv02=Flzwg*$Uqei&v-5XfJ{Vr6XGeYY1;AIoyXkO8qB#%GMy1F8q&r z^uPlQP{#JXR0NI$$nKRJ`gY<{1hIF=HiW0K$tnm&1k(R1`y=Z3-SFogGHIp61HF5( zu;MO@aw=qXG#(I-m{bl1GXaC`y(BVMIhtt8et9h|eQH()Zsz*PDP{bG>kr|q zsuPH)f>!^LT(VZaZ(}au8%dp(uNg3u z7GmSW)=gRkTre+5^(774%3K?U@uHcF7t~Z;Ve~Uw z-3nY}mSQ&)DuThV_7He_yPfY8=3VtxC>$ypn}j}mb=|eyAEqr9n^_RMYMGS(9+-U*MW1WyZGW1)K^y4VFj z%0*>NT8Buzu$6+8^0wp@c!h$Qyc#rh;GuD~^_;wmZhhYx{Y=_wK2TN2Y`L-P#aW z-=4AIBr&E9Q98Hf8LX~s2-yjouw-~`1wQ!i;w5~2QOP(P>S^uF>oa`geU*q0$J#g< z&3S0gL7Nbyzi zR)KHd!i6gDl|wx*7hCP(?c~?psXZW6!?=~ z+O)BC;9LoSeG}Eh}jEGd25~C2e6T zxv>7ZF694@zXC1YQoKXxB)P>$_1+ zL1T1-E)!>it}NXUu>oR6awQ{G1Z=9(iF7x2Ip9^W#Lw6se*8$m{requgCk5{((tbQ z8=T3t7B*mEIP$IF%c~7)j)I0h7&>5{zE4@JUQb-{3S>q0%RQAeQ$u$!^KD={!Ea~} z-FFPl**Zz0W_EVv92CX)=Y=O;wQ##(5p=r4le`Qzw6-QM*_7lttq9&IGpG#VbO=PA zk0^7{h+f0a!(8-Nr=q@G<1gdZz1QH(4InH;Xctjq@eS(<^ttA3<}5<8AGVtlC6~N$ zJJ_XZfWTd?smeD(M{|U#Mfl^Xu3_F3#39;1dttIH;whsuA)r=T?&*^KL$Bc`X(}7l*d z&07vN%jwHTh2v*)_6mIYr*VEZxVBEXz=c;<@Brp<3C){4IK%1Q_t>z%-xo%Ia?jS4 zTdx^W;CNvEYW`nc1-66o*Z}nu_?+H392BjwZk2p){X0ExHiKC;Kq%mLKo@xXZTX#N z*CF27+@DuO(_Tp0h&UM-AC$3mdE8*(V0M_8pzNRvhj-GTw2Fz0ivjXKEScnGp%RsN zyvi)FK}Bi+gyp4!>@_W7z`rAx&(e(xwP9%7LfQDTfeF3M zhcUs2p+3j%LvAR(=H{T1_SrgQ!m*Lo6zP@50ZK?~25?}U7i*kwZuM0p_s9<89ujF0 zl;DG2vJz?;0=<8xm8v7ZDt)WlWgOFx;jVhBUg6MhHiwxuG?5h;0jFCx2VxA;MkV}w z^e5z2?5XgK9oCkNWyTI8sH}ir0A(-jpPwpcQ>AItx-rI@=jcWBiS^YAMD65bn802P z2evj}USk^UQZ+aeYe~&Pl)U%`$zy}nEap+D>&0vC2D?B#cQkrboG5nXS6fs&*`r)f zLS1Vb(UX;tl71sMs;X#&XTon@z&ku(5Tx(b#;gneiWm3M@_^IP zn;QDbw7{G)I-))+s2313RdCgU=H95pdaMOGk6Dl`T)Y96ZLly@m|WeD%!Oo@I>?y|BDFaMZFMZ+E0^CbE~Xs0WGuNY!8YBl3Jz+ zETSPGmT0csB_cvV9O%(vngO0Jy(bbtrc+#6WWa+AVMs)0;{kG++~kBq8NNS)#D_*; z))16qC*EOlIrpOk4s_}J6r~nt=orW4@x>KOy^^-%@}>sJd!N|gk%b-7jH&~-yZQFB zizRAua%8UMiZirT1L1Hs|L*FdWA+M`$o-3bhDZ}PrRE)FxRlf}fZHgMsk+rd(0wJ8bC-=moYO>KZFAKB@7fJ@jx?-zr!jc!ZJt=d<_cg$!RH*E2Ol0Cac!vFyKPXB{*4J!c`~cV98VJyB*kH)_j*; zhy2dGPnsaK?tS0z=49}j0G5!K(mErK7vW}Qcq%`2=OrNLc^?AL9)K7?cpR+Bh<4Im%q%j8-L*sz%Hqusa!@1`6% z#91Ri!R>8P3;b_yY$ha$h z0b>r|4`g&tqOIjFOi-!}Iq;9NNea%lngs}JBsv%?F)K7Ip7;5;OF;Y|(2;%V+! zXfXNgX;!GYbhFhdmZQ}|cm_7TkMloBkokaA5wa59XZ*_ah^Y&nW)xAycF5>hsr!!?jo)jMD_`4X)ziHfpbp@{Ouj*ewv#JzxACzcc>+&-4BTr=BJ~uyvDuDR` z1S8J^M8vB})(yd|JL6{St#CWMV<@uik>Vn9D{4EC4gx^AxXfaXZYq|wb29zHrV%jO zko1JsL{y*vE81>VE*u!@wG%HdEy@h~VZ3Cu{}Z52EKs(PxcXTc2?)w3<1>}%l~K<5 z<&Z$0$XIsWvoSBCF?tX~nG)z{%ANjQl_s`%l+-;cCJLyetsC9E?-06Hh&rg@L(^Em zJX}$>_vDP&xmkJUzst_8Q~Fx}Kw}i{db`<@scIGm_O(1Xk>*FwMEcOMD9HuT#?pKU zv`v&yH)c|$x>SFNS(Q`|9!zg59qvk;^kH5gko0W#;W0Tga-*R?lPd=^9ggGb`BoT5 zY`q4zzCD9gejVKH;-z@-<}Ino4h`iGS~SdVAg}Q8O3`D*B3@nw55d?I%ab0PuBg`0HF4-S)~D|=V5#zsJ>}YB}U=(Rf@d8 z|0??zZLq3+>@t(cOBb~MzZ~!PZt5Li@d*J3@&zgSGdrKqYm{kT%l35ogM@-1JpbpNg{qfFjm>Ir9(g;%|zp(b$h!zb^ zKV1r9o}{DEfkLR)Pwz#pnM9K9=1a3b_L2_*a~;FnX7f{tPrWK)0q8-|aC#`~woLiTMPXFn_V3ys>7EKBt)v{ML5T|12r|9>dXI>@ z5;E-oH@bw0^dvAc%jo)SkorC6xC;hOE9GSy?ezthcNS(`Z)&`ZuDiwk^6%1FtvrVb zs8<#4Ty=^RoxRctz7B#Vb7n0bD|$ZiviCG<`*6$@vqXqI4S$C3ke^wQDCj=Kp&-EsKSnx7VMEY zo8h~JmWFLny+g5@BnNl84^|0^u+w9bN%FG_a74>@YFQr$1d=&<`@8xV{^jxjiwcLb zUYk=}c`nRfzYJA`1*+;Uy8I0EJLWx1kg?DccHuyy5BQ9E)U=9K#Q0ESwLYw$04&3z z`k?jb|Em54hG2cct$ZV`OV$i>q#8aikLul|GaT49JgrQya4Jsa(bTd&%R<4{fZThp zp`gy0E+lM(0{WcCCz^pJFZE^ipWC_pKlzIX{;Wj9O9$=tinXMiqf(!uI{<51g}fG= zMpT}0;)5K(I7-o>7M3cTz#x9a-HIV~n2)&kRF=-X7s&|YW!-{9hU5Yx4<7|fvHezJ zj{{roJC4^a$w5bOFFqJ{gV4Q|%YXhXG>m96y@;6kD&sE-W` zTYW3Ah;<8$qIv*4oDl|<@f;(H+mB(Yr@*U7b&=OB(#1vU6Kk4e1XyU`&fo`aJAm8_ zXH$du(0gkm9#fj;UaqD93%d+!CzbvOH98w%ml&2}#}_?Bz7$wTEi3<>Q)~8VIpM6l z_VWUQBmyV{Khxr|S-QJ6OKUM2C~shF-=KSB0YdFSBYaS|AT*jpfS3 zk{Qh1aqOuida>3!!c{@1Bm+5(Qe{_XT7r$|K2N^v=VrQQii) zW;@YB2^O)8of#(r zH9Yo;IT2F2iPtt9rk!e^lAJ42>mhfS0_idSqD&`ub1!6+N;t+t4YwJcgg_h8+M!<`k2q?9WN~wrE zB2EEZ{lJ6sArH6nS{{+f854`DIB%K(=nIjRtIgmi20Cn6vvcGTJ;qDF^^<-PU_Brx z5tu1>mAmUnPwN|kPIi4~Omoe<%oJvNv+g8!y+OR*1J&mc3kW*G9 z{NkZJ5i27ZmXgh|7TJx}LHnZZ_t`aRn6b?rSw}Je)HI=eKcy!{lHaHGCuNm-ocl-i^Qz^Ju=I?yFc57 z6wsB|_1#0ePTAaj@b_-b?EzOi0@%F(2?x(I>Zy|JS`gIcSQfWzQBXq8sg@m8@wiuC z)>5ReE&5}+fqP@7{U83qxI6-*W&7m-ZR&*j?9dD5kH4A8?2dF71+Ynod^G=g&JH!^ zug4dPK^g}$EF>;P_VW-t7n+Cw)fp3s%*z|Q5_OLo7awZ7`2n=iR8~<*Tn~Tq7sUxc z9B|L6q&7M0`X6%9Km5i2cPk;qIKwT;D;i+$Z5&&Ho994W8L0kZ%iyQZ^X8ah(DFa0%L|P3aW{ukjF1fftL%>y^uGvxI#pg8v5Vdk z1hPIqM20_hrpdwwG>Xl{r&A>UtL%@ErE+znI5(CeEtg!zfG81lSdP|*xaULY4kWN4 zGD~y)UHc<{&o1Zx<}U#JK{2!tkAblhE-_M|OJ6b)ohb?y2!}|a)VBKS7=Hq4hM=W& z5t8B-Sns1y&kF>3S1*h6srkZ7I+N$L8DRrWoUa>I17nOPPfQ^~Z9gck9FwV8uf2RU z^0TKe* z-t*W@H%eB98ifAdS&l}+ASiKPUpgRbQ}OD3o%sMfOJXWul50Ohdg`(>HOna2qWw!; zI2!Qc(tE0MO`{Mfio&)C4(vFaUVoGn6W=p`9OMOO_hpztRSJ&#b8H4|EQ!ziB5M4^ z*&8G5+Go=4QyD9DZ|}L7U2GB+IHVNFED9JZ89Vs=5(HD=wv%o={hp2~pca)3&8^MP z%$X2SA&f8Q57;Et6z922MkTqEUk{biUB3u&Az~*~c|ibhF4)PNu`Fko;g{H!Udr9v zPiox2tzy7#{)RGq_s#wPeBXctI4VAwCqcLiax-R$%&h1%i1v7P9qDPfyOJckqOXIJ9gALCPk%#>Z zyPYTs-TWSZ{*b%}r!V(OP-*(9Lv--QAK8+o%kh%PuSkOi*LVOrMLcm2>ULrzNtw9Z z%Fb8K13zGUq-Ztoki-axfEKm9#b^!--nFDq31O>lqc|AAgH46F|GPRXU7|kJRTS>J zSs5w?&=et9x*_hk!J;_KNu!tSg&ZYZIG)frm95jtQFd4vK>WCYGkA5SVkV@zs?rv} z0()B@Bs+tmP$?;vj^pwLIJXRW17wy0Xk65c(+*g?drl_O+lf^s7yxSKK8y?mbVc{@ z@Q*wt8N>9^kt#q9*9Jw2c$X=+E(}@AE9#65&=Cr#AQH#7KL0XAH14=SWt4(kKhp*X zS)HTn0~JyZ@YInb1<6xHror6r!J0M${{@SOhAx?fEO*umO@f|o&;TOnN`&C4dL+;D zgaE1AgBaun!>V=`cZa@gK<^jo|Mi^y;{qPr4`W3pcSf=8J%PVePw0oB`6u4$tE24f+Z-Df&sFd=~V*Pd6RoPUhk?N?w@@s^Vd3Swoc$@<(|4+&V z{(;DR4g~vM6;y;rDsDNvXBZS-E{C!^yJZ`52R|!CjSaX_hCxw37QGhGsDf5%EdH;b z%ra`oY^V@|K_?EwONhv4&3^a2j)#~r0D#MOy!eM`F1Cf1a`qhov2yrB$}scYOC@=w)n_o!6D0x;a7qV3UCYJM zm{hNjc>6BX;Q`(2C$KhTX}sQW0v;m~7QGL&KLXKr%HBU2!$XNF1U3P|*7>AZiVTx1 zq&Q?7bK4R8tgiWq0F8hffZfalnIX}H7QO=Av$UfG6jWa*KQJO+I9W$gsDV>)GT`Z$ zb0UnhB*2QzrC~8`F1lI&RXVGHx%fCTDeWkAJiL8D267HLdANWLJ-I0pDIlYLKP=8m zznd9iqyXij3zMqdM;#VJlFjGoSA?h!>+=yv6ZxEX_kl!oa@luYL>o8CFMnt>OvEy* z`f)rKq$f1;ZJx+ZfStVbcXuZ4$FyPHhe6{&1G214q{8AYdWm)%TF9 zutQG+V}-80BV^UR_f+X)JDh0T1j_^`*T)vVAj2r+ZuYIvg)Aoh5V-vOMGo<%zUx~s zGMV+ooIQ%mwklYDhH!k0j~E@f-286tPF>TFILhYDyzpa{cOP}dE^goDAmxK5vz2!t zQf4|`^;G!$@9JNKc#@W_Ml=m6CCWqcfh^|BBbA7055ClsByU{Ysp|=g(WLa>)eXO= zEJW$6F)6^w&tV(8GzD#fOXrrxtjRcMMwGde6(q5VsS9HlY6t`jX$eLa-s{duoj%gN z3Ns8u&~7M}S3EPp7H>J3P9|7mgPL2{%MGERwJn28a!Na@JIyIvVd?I_=MIqHkGif8<#l8V^NXTemxBNJ7^d%%9Eq zSM@JMKoh+6q4L&1$-W}X-zq2f$Vks)PIzwZ6Ji|Rb!gkva5I8gx%bI!1nuBpk+5Mc zqJ%C!iO=Y3jI#2M6K$gZ@qCufR$$pRe_`Xo!_#}!1%e`h&4yAm#i)IFqBW3M{Mnsb z`bkI09`Dg+X0K)z}GX3}|_jxCR8l4muGmacm578~mQABxZEgdox5286qe27NA zMcoS-4(GJyxUoZ=fA|Xv*c1_LCR=G6OP`Y<6u(Xj{qBU5H$|S)VF3u(o&S8FfHL`# zkGNX1Wh7cr>{YPtyeAiav{?7nz5slF(hai5fyFKE<3B&FIZ2?Re^3~B%f;w z+9i5EAkT*r0se=-_@8$Y@}Q(Sy;e-81($UZg$kHuYl&|GTrZ(JN_S5J2}m6iFH9k< z;bpCies_VmK}>o7z^PXiHCAEMA;~hOs2OI!@V^Ux;l>~4xMWEMiZEc`0n4TPY;HUc zfXr%^diT4Ew4%as=fBI&ZAT{3Z!!S!{#yP#DXhin#TaueN}zB2kE}-+A|AW1E zh!SPn)^5|bZQHhO+qUh@mATTkZQIsL+qUh@e;3YaukZ?Y7xugDp8LO26eDJf77_Cs zF-Gr72HR(X|6TqOEei37hInf+3BdQBr5LDam}xGxr`&Z*z`m_mjlE~n|F8TbijyT* zB0U<^OX*8 z6buv)*j>dMb&?+*^*;neVsR@>)Tr$m3z4ZvU#+bvpG{=vZ4n*TLMrSQ;p^gsAucd> zGh(-H4t1i|bWamwW5gz82tjbIt9ipB18!V>MlpB>i1Lx4Jtpz_p z!N$cG_vsT!5@{W*wN{0L70`Y2JeiEyT250`T4H5CBtKaZBCH>Luc z-d~;-OyZ~|>hMY$@niLaS|z#zuo6~qUy>U{r_f>W4=(OL`JdwD)N3$F+exS6snT4s zg^FH$1(AhlUP9yCE&eih9(0gsZAZrxL{h#wr-FQ`WA7;(% zL1XptkwlHno#0lwjN8@>g~!9~vTz|=ka_!rHGqE&UKLZL@V{j)L7b{i2JIWILKVC> z_gN4xkbPpprO8dWmwT!^xmi{A?1qm})0xrBrNrk1L?(^wlN-c+4Z9lI9qmUF5&fmT z3`|s8;!5*L3AHgItqe~97&LUiK4J0+oC+It`+${Od{*c1J+Sa?FTmuF|E6nZtNESN6Q+le=k)`|#gOM#1>|-D zdoJwn#C*a8zCb(qwhS2jUi~zMU$L7~ zmY7tX$q3BG_TOE{NbYs2r5k#fHXTxK$^R+*i#31h5I@y*R~k#9 za@*Cks^Rf5hv>*r)1pYc2%8S5_qbA(b9PKEoN!#X?W63Qh-C*+P!dhI>AA~vtrB^K zIJ3cpilI_W6|fZz8Q5h`7hf_ewe#H`3puzYS&EJz`Wl|&z26k-Y;iPsgs)2?Rp$5@ zan0r#mKdSPf2KcTk%^@Qwe7JB)pG+ipprTU6B`Iz6k*?nW1l2W;OfL0M8eEp$^=6V z=bEOZuu!(^L;RWz?9Mo-lsS{}*qva&&)Gft2pRkV6QR315B0U9zIdfHFcq6+%3eVY z{ap4L05yIRx4iC{pKLu#1p)D?BNy>m;rEmxKwRVN4#U_TJ2e=h%HZLT&G8u4(JCJy zYQf3>2$ueEMkrW99>+U6pyDcaNLc^=&=`TnT{7P(KjCX$901x`YK7FtOkQ6Oupr?6 zhjMYH$#Bd0+bd+hI+ZmOWz-+(+|TfB^3w8bqvmO;5!oPZuUNgOD+NOOh@TCcHB3f@ z^Rc`u8KG5F=-(^~R8^XxW$TbJ^Fga2_0DHPF_6yeZS*itVyHM3Y1GqENTg(b?C^N-)l@S_ylS@kRBQ|2bk-G2K|@pAgvL%neNKkv>S zuO5rDn39vkD;){1at|_N3xRSQu{8z!p6&3A?wPrQzjtAP(+Guj6LL^%L0<4ZYLKyy zQP^6E|Acquiy&MVp2Q_D;+afXBj0EFtO(HSvrwKQgqiORZcA|bTyn52bMW_BKkv}z z_eK=15wZ-)y-L1N3#LsoEF!Lhr4`MEI7Gog_AF8tg zFD?4|s@2GBZMjh?r`Od|^40#^T*!N%KaoxfuL3%<(wwot@0xkqsA$K=k#Jn`7DcY7 zSP<|Kq?%e6=FS8TYX_EuD3QGvG z$;?goUea)qro@9qZR4SFebu=CJuW0>2x1hfN$D{Oq%fpo))eNFuo8Q<=8x_%n*n;c zH#LS1QBsyHTF@KNGEaRR2G4Y#{QF&s&;wlJ`7HPVTt2^~`ZAf~vUZDr1fNsSoRgPp zU?4C&D2>Y1;~6>AABAFW1KV>9Ua|!bwP#EWEJ67baoeLg`sb|v}@A9#;**tE`?<++?YtF}s+3B>&<}3p- zew*z}PQa~gK_p0S&b9}>E|t$9WaAWu6xzgy;bSoWSi&Q#tSDQtQknq&fE03l*X5+g z+v0>qG>6ujd&Td$XVkH{+M2`mnb2eX_tI+YaT$KM0;(Bt z`6_p!%VgUx)-z$%tt$LxV*kYw3>Z6sLG_>lA_*7m_)ggEIGO?UrrPk{Pw}z-zJxsC z;0<{s0zzbbr%vQFY*Igc4)4Bx7W6*z!hJ?=tEkbx7;CFO8padyuXTduia*DtH}k`w zNVs=P;jC2|4U{+rTmpIEcXgMVWO2vg?z8$i`LeQlPe;ammmlnGZG#}_RHhGS*kny- z7&5a2q(;7IA;sfKZ{=Tr-Od{+b8@6?lhUViCx>w^yb?az*%k=g-SN7%ahrO84p}?%2;Uk|T#f-B z3cuWRE4EhAx+}ZO&;f3WLIaX8+#@>xgE>IiZ);j2;LBQbMcX1f<0osxnA!mWbLxzH9&gDYyqiwC zf)5`XQ&#zJq-{*y#mpb+PJdXBIXfcz4%+>|d!h^i3XA!$L6M#>Aia~xL;5Jx1G8|b z88xamzg;%#!9S!-iB(i%5I2KtP@~`dGUpaz)gG1>3SDcc6ntws2ElDnUyWgNG-4V7* z#@g_bNSrI9GtH~^U`J(bhMZTfkC%24`X$z9(iPejzVi%`WM}6f_e&H$hqy@`sCphx zgW5kc>EzH{nck)ysfKm*9ugr%g>g%Ptsj1sjH=vMnKxK$9yj@qP5yT4jv&rG>xZFK zWSnkp)h|`ck6)oxa?G)ut*u(G^?H@{5@JFF0^~jhE%=B9&c!FNk(Y4JIUWLBfD#kJ>%S#mY5x-()Od5#>f#89J70@VOQ|}q+p86JF)>A)k2j-JHY-ZyMuBL0wX#0T?bjC#uehM?_U?L~R z2Si;O$?9f9|4o=mYneXpX+k|mv>BJ_KzI37%>4T0UoXyHVN-5vujbj2K2mfB*LK^5 z3C?`i`C*p`*Uy;DtX>h$7${gQQb}9$T`q`(mI0Q@Wd?&23eCXAH;o4t6ps|&@Kz5( z#E0E1^!Ro2YW+@_7ENGI5SCCwpW4`d)(oHknSszbjkmF5;l2;FV*TX!HVfYfl#y`s zukSRRd;+cYYE6-2y*$uezd;e79orpyiM!envi8FRkF+k8yTZO%)k7d40-|BEZC{~n z)s-^yjD!0HaNxTjK>EUmg;ipc;N_UY81{M<=dZJ)KIUT$zLe3*ZUA-2UtVnjiMIC9Sm6;9Lppb{UBzf= z|64e#Qk?||d9LHLeGz}*pTyXhWB+(f>zHe^Amg{dzr-1?E$O0E&v#!kem>N{;I6id zXzj#2{P3HM@JOV$`SnExTQJvLN982=g^@cMk4IVLFDh?$6w*u$^-@vEQH;E;^Q157 zT%un)n%CO6tF5IQQWkmL#1a-CwE(Utrnn&_NmEd(9F zaf+-5Czc$+k=buHtnKmZzT8_FfQ>&`z1#hQq-BXat5jihlJFVO#nb;|Cu<~nv=;SO z_88l0Q5yC5I54SoQq`uzwQfpSr)N`ymx&@2OJFUl4I1~kWIilCRXn0)IyeganH}%U z|4-pxG^0_lIsBXyp7wwG0y7Oy%*VUAVb-#`tw16!!(%*F%tJ)J)Kh^KE|pOK)WOVN zZ;@`F(fjX&d!xT6Nrx74$n>nYkJWz4uW$3Ybe+`uX{Lfn_Akj4wZloctRJc>6W z?v$xoCnLfm(wPwYr1s`U{U&bp6lGV{-#_0<)V#|`{}VqH=0a>>`flkW(&%@SA7(n; z>Hbn}$_7mlnnfzYOs*m(@~%@}1s=+BS*?+c8#e96A@$aONm>SIr>3lqOalqV-lvyS z@~wL<$`#h_LeLsI6!AlBjxi~%{(_=4{xB;gh$hoQdOF!l(QQL~>QQu8d zupRSyRAd_O+1Wf0x? z$dVNl+fHn1M^>!KA53Vdi(W{m=d*0)m(3lt*Ar@{zncl;zTCaX;D?h~#mcpugzcYh z8F+`4%^U+kDLNUQ7#bh*?*wqc3ggMXfkv|*8Wwn7*Eg}PtAeWm@A6WF%sDA5;(==K zE_d$7#a*lTF8I~b*4W$j1*o=dx>pu(HSU75d$vc`*Ofzgcylb?;oaZQ=e@*EW;p!U5!XKrhE0q! zsY=(I@|{)d2CkLS4K0W~|0*dw>q544uCK-GdFu?Xx{*n0(6jwTMX(5>^qR5pz+26o zT#A>C(!)Z9=chh!6;;s;vP%0wTLy-1XX>x!tF}@fQdt&%)^hJ~_k19ME1$`0qQn{A z0KgEgt_w7SIil;%48}#>-0P9}L!Yu=}{PL6(c( zC@lb%x>v=E>L+Md3qJ~^J`#fGRE~|&XXrtAWf-i~Ebk1uj0$TwEh5PNlHd)1I1hP&A@kpCZAW z6|jtoyf$9DH1kY%Eu7r~Rj1ndno9bbYXls#SQ=Rs@uuu%{SsnN1mMux!l6^`CE^W{yx^?f6sG^sP*wXGGCMq;4kfz5a#hjm&pA(Y1_15nW>$ErsL_Dop?K0FL2!C zRm*vi3aeULBH{93FF zx>NV=7I~H3P;_c$PC^|`!*v=x$FlRmc#o+Kj8Vh%X?ovxhMzpx1z}C2h+uqGr=>u} zjuyp4O*Nrw&BYm{Iy5GReVXj`8A_gD{VT4!?&# zg6(`%GQtM&zfF}o@>a8H@eu9ta2hM^N>0#HYCM{o^b_-U(H`VHN}dV_fvxnS*l>te zTpq{RCyeO3y=PK$Cs^)0Tz1-efDL*zNl6>X_&M(OIXG@lf+flk_Fqm3yhr@%|cZtRvHC5;ZZEq_SqTZw9U0tZ9 z3Kf-$zf>Mc@OqgpI<&?AwGPn#6wd1Z?feTOBH)P5TB!m11NolVgN}O&;e@L8D<3t) zV&9A9qu;Fx1$P%}#Ga`ii~U!Jn7HZQHoIhP9 zwNmIX0Ht++J%#w5aEu`8pj&+Y2`Z0Rq>9NoE>JdZ&AK0#{pjLN;6H8BpE>(Rev;U* zDh!?Zgt844_=qJNVE~q)zcgM2{VT3I{T{UU5ClD!+!6;Z2*yiybiCrbO~Au|#Miab z&Hu8%KK4KFER1hWrl-q$rkzxN$??cc}RK$t>g z91=yKE&EOUhM*I-HOV-rzE#*@gfhU-%W-4C1Kzg{&v_|BfAnCskBtFG+B3LKbQ{Xy-c$h0zjJXr4+zc88A(U4 zwzdLe#hmgOO@Qr78yHlAJQB;R(*};%!ITe9_oiu7ZW$ED3p|VXzRgG~7Tb!??&_eo zB4RDyS%D`HWwh8qq89Sz(qt(Ktaf-E zis{Rrv5x?H!-#~Svy_Yb9;2BgBr`TEw-~Rp%?ka^Ajkx3f?X0lXcAoRL@Xk+w4cK_nC+H4ql3DJ=Z0_((%>i!2`YCh}cZN z6Z#y679ig>^&w`)yo3~BRbl}16<_;ViPQ~}EH^byyEXz*o%eLuqG#yA5t;8xF7+{x z?zeH_*#`W8c%4;psF}F)0%S#5^>`?0pu28}Ag1OpOBG$lJqd zRS<7wZ8~wOZO2P!G32V9p>fe_o%15l-wsZWNHy$Zn1lrHY&2K8LwxM+^Tj7_dHDIO z)4}EghUUwv8*5#!Ih>e z76N1rvVyKU64%N65i^nIL{6Aw#2^rz!0;4Pc2bZQ4laHIy$aStIeg<;P44nk;6m{W z2l3bc^quAaYmD7q{z=Q8+L6EC79-dN7Hnhupn=%dZ23r$p^lRS3N0cD=)9V6zcrM4 zZ<%QKx=jA0=KNLYs1m&WPjMkR5jgEwE@6V+BBrzsMq6CN^1uwMG!jlNzA{&r$h=tz zMX6%+JW}Jols+G^np+So(QYN7Ye<9+_K-pSOZDnhunJTrhzQd!cXMWKmO;EH%u+O@ zz^z<$w#aW)sGBjCWak9}X8o+fUgoHBjyCwZ<@3o|N;6~_z2JXbF(PgjI&( z@%nELQ?(3h%Q>R7;gf3>b3G4zEZZd#lTJ-fEP=v3p^nSClOU?P z@)naN4KIMZ)({~0Rd+rqh)u{Z$&~~^AMyLh(jJ*7mBe|><2K=)0AozPzI}lzGQwrR@~D_%$>d;3K~gafJl<%B(_rH)RD$su_sH1RfE?xkq72QA(f{O% z@2IP9Yp1&XHi}ZgL2|I*FpB;>i*5DU8Dh%FN9@Tch|~T@{d!e{Wse<6JSnl0*eWv> z+Hq#8v;KJ!i-oRq)@8)7fLvs}x59xRGdA1{xi6vF`%{KhN zt?Ve|G-WsW-p~_W!fzTZqbUY`C`s-ARECB)?>qHij zm5UxA3^IiXMa5c2h7%HsLB>$^F)p#AaOIciUJH(2&mtu=)!|U*XifbInJx1V+k!dn ziiu4}%~_$E-Zafvtk9cqOeo2T^xkc0T0o_S1|SUIIT9PmWZjvX?9Jxq30c*H$>kSZ5O$F| zwvtzg{!mC6Ft+Ds?=fvA9APG4Ng8rFkzBI1VV%u!^dlyZS0;}o6l;kRiXR$F z@_RQsl+}E>&5MlLqP12-X4|!5G|wEc@G(`**=ye@s>{#W!jqh9bw2rlpO6yLDjtb29YePda|7(?a%=hVjGtyMSaiP$hXYT#jYqs~) zXh{jFqaF2uCo@lrclfqa{WflnoT{#sCP=0knKJPt?(Gga>aN(lt{u`C>4)>zT;_bV z0rEiKCei}g>(MnqpuJyEiBW;cY(o+naC1eV$d zglmzmY&-8Q-7w~w1+;cuJn2%BoXVB6x!Qxdo|N+tpQIZ;!dL^X0-d6yxt^mN2)TD* z{?i7v73a(z&rrxc%-D6#O#+m%O6odGqXJyQ}zN|lAe@wc% z%9M@aKrNoVFlPO?Wuk?Ek=>oA%DI~L-484?eOSe#fX3IhOgfJ%>C$Mc)O3Ht`u5!5 zm=)I8k{dx?v2dgR_2O;c>-PP-x!An+HchD|_(C^^y zyBbqn`aIS!W8rWV*WC1}wJtL5bhs?>R`kF2nIH_9h1Mm%OcXG@%)Szgk3+WLDr@iQ zMam#d=tO+m{cA6WW4^DD6>%YOZQ$|OKBhSnlk0H&A5v~_nu)TFP+=E$E`F%gE#ie^ zQK6F>n)IO0#JC)*Y93H_{R?n#*~fhK^X{DR%Ip*8F1--m9q>uZP@>J*2@K*dN9>HG z2+;p^9l%$wND(H9raj=FpUDh>j+CJVSG{;TU7UlQ#BXBdkS+hrT*CjuzW^aNY;^nv zi=R)hpjDFOFsza1qNWn!?-VnzV+SFE4+E;b=;&v4zEz3ypO{jS>GvDq0xo1-+TK|h z+t_Q&SO?bm7{gAFpz4PxKF&E1{&nyIZH;OU+$4zj8zSw<{T}e1>3J(={;P?eTgLz@ z2B=t!7+0b$U;F-UJT7#XY8AW+Adh{lv2WE(ePyimbh$cY$kXg1M?Qts){`{&h5@})jH z|0oa?FMglS5oj?&aHuTGyuUQ6=INcb{&bCbmsIlzHa|F*O{JGj0SN9doy+4-Fytom z=d9r9 z&=ZFnb!1aBN6@m(l^0aZ=(Y6lhG)J*cuFziGO$Bn?nTGT`^+8P<(+&`|Mg6LYqeENd76RIu91^6P z%dvS$$~Faz%l@V<;+`TF`6E|NVM`yo1`>IZwdz)cxg z<)UPHV}J`#Sgzu_U_CNORmz8i^eZSD3Fo{2lIJ*$U2nId8UQ$|T_|wzTLxtb$S$w3 z5LRgY4eRG>byWs1+yF0mhYn^R-9lz&h+=#uxyJ}58hSxpp7oBHeQet=bn4FG|M>6w z^sgiQWk<^wBCwaHB2p4G0JwE1lpC5O$O9&&gPi()$G5L|VUI1=Yt~-pTC&z5bSN+{ znY(f(J$$&EHt5EtTT+85*>PNtp&#w2r2_Oa!0B8f9{?TKkIV!E_KGflP}WtvycLLW z@+U`9TK*A4cl;YNYp(8G03{Qi`xr9g0O7`T<@`1CkHH)tu7+DRbvK0NB09v&rfzeP z>W!h+0tLn1F+v(?ni-GC3c2XrcJcgXCd6~em4f_TTy|Ge3I8%kd2;vf0(3Ep2MeLu z_8tc`v6%4QDLt$#TapxR%AEyWyE<O;O3opgJy(&jG>BGzUqeHt+UM0b|y`G*RH6 z^!MXxSGaxhbuR3?h&yGUhn0z8I~5N0PelpGekk~AduWjAz1CWqA|yE%8_U%RJqQ*1 z)(nb~o2~6my_H7Dm2{c(6^^J@>4ddI403iLM_#ZI)86?D0U@5R>(;LeS!OIlJ{nRZZc9 zM~4f+S8^p&mEfq(^C)tZ9QhE{&hOtyr00kVTdU_87#MqF%&Ijdta4(v7I?hKp8Td@ z;d1@>Lb7x_IwB}bMZrJmXJZuOE)Qc)j#^V^`hFedR%JPem@gcl0<*4)nj75~l z>HIR$qbd7Y2G)3(Sz>_!7?g>=5FHGv_X-~f_4~1g*I1T0aWbG4p?+{jCUGj=_wDPRf1Q^mYxosS*gvx6CTd3-!SAri za*AjWMh;qz=vaCs3mlyba0b)0^=mF_GR%3%6V2Y;o#bv~1F*?S3aF5Pm>jwU5gF6?sqYhZI%iC( zsr>9UCe*E&UreZmocl?iDpPdDLh7w|Oy>Z85Uw{CF7q^9^;-&-|9)<#7tvrzYn|P= zn^eLzSAlYipdzT$zHu89bo^O85$;QS`9#ecu1&S$iUL}+%nL^&tcE+C|3*#aT zg<)O&5^DQz87+jr9cz6U#{xRjpqwMb5VmET%AEKtd&6FQr@U`Eb^yR*n>Ba$eTBWy zK*{W0UeHCqm^HQv#4}VIsL4YNb(6jGem9MThCN-(89-kc6IvemsJ8|bfS6OSETop6 zy>zgmf($Z+nW`6NilVUzq<=7WGBbS%0@SORUt3t*qu>lsl^X0WOd%_uhLJM@`mDz; zMHs1+*U?uaL<4G-t#c5~5QrCXdlQSDnm6!Y;KbL}iDRdQX&YeAJ8*c? zoHeHUhl5J2VW6@kYMHHpp7MVzv9)qN+4?AiAykF7m5Y&`{T2=*jc(^sE5mJfbADZAGT3^x+j0*DRsag{AdJ3$Do2 z2AqGH`UsziW}mv0RN|nRRt~6|AgB8~jHA3)GsXf%m$wjbQZ_vZsKx-vo=7*pYXKTb zi4Kv2WJ~6W_`M_BQ^wMKO^LEuKBkeO5x&_8?r?*<)Uh^kUOU5>RPH=Pj>X;|X@sjd zK-vR<8~pNBwdLjGl{or*Uw?&hHzeAOV2SoR8x&#lv_k=V#_V^Roay$}uBUw@A$$3k zLoLkg3{{>3&)BC?WCOiNoB2z$lN5~A0y&hRkTzj21xq=4Z;PI~jbwiiM`5rUn}HPS zWtPQn@gr)f&IoK~RkKF#FI-Xwp&m=ZOsT%JpZZ5Az&_;i9MgxzBOg|TN%VS=lbXTe z>?C8gV7$K^B~DXoFJ(ib2*qZbLaa>wUCwGEb}nmcC}MV!@=il?c3UE^Bbi9mm@v1T z>hEji*gdQ@2+lnA5cPH8*)3>(8fN!)Y=t4+rf;Wfguu16vfXWAh3Nut`?22r()93Bd zs_<1nQ3CRPEG|PTGOD~xhFw$B&bSa$^ z=x-7t<*pk$3C1z0wU`JwhoGG8{IPU)rSGHMM8jiO1y_c%5auX^=@)G33ce8r7Z6V} zP4qZai7mDwwGIVLMCdGqFX_WwTDFw+Lx;^eiGY|Ut@p=qMrKvCQDQe54L^lN)Lcmm zgg6qS)48IdHm9h{6%pMQS&m0##4n02|e2* zJr{|GGTvmCY79;;e@Z% zVe2v5f?8Y$q|oV_W_tE57>YSihJ*^tN6+t5be|Qpk82ArE700$apu`OuWjH3NNCEUXRX6~QS<4=pBiWGd7H~)g;zp*Mj#m|{;9B$>XJFdtMfC3mTOoUemxzN2 zVo62XgEZXgDHChe*Lqh5BUR)HBsB$*#KP$~_~mE;m49l^C!B;kX^HlTro`tj##5iT zIaDo13dPt2ar|@JniU6MCWi(s(?z-KZ%ymLFoEW(sv2>t8xn}tW%xfDUOJ4^f(8g| zl3aLH310Fb0y?_@sB&4#>aS>)w?qV~UzTPjGvu)}Jhbi)PSGdRpAYEiGK<-D7(Vz4 zM!xxcrk_!kR_Gtk-j#K291d*OvvLF%4ET5q<$mCq=d~Ya*)wYJ-gX6S5o}83=G^L% zA73(c1aKf+z1xWi>m0t)X+NL5c87Mm$79jh8C3}c zW_z%HFcD2e2V7fw*)&vK#J#$Sl9D{7^;;0;roF#e;TN(K)hk~bF(?I!$?}y_;K&Ch zqBh-SXuG|Ta_lM~d2J`oBLzB;$Sera&(Oo}<=>t2p?PL6r$~U7P5(aqdM3WYhnUH4 zmXK3llkvQ!P=|Ur??t}A@3wRax!NwqB;H*NTa*tuOsO zvXJDM$K(^hd2u;Q|3H3XV#Who!I)iX(T!TU8#N4(fiI+{=fYr3k>VDcdpGIa7T}=2)_=m zEos0P9NNZe8JqRrDSZhzsMW|E`o7%Lj%P=4ph9}ZeDAPSOQH=~de;NnBX__j|qj+Q#dQpn64^pgMp)Qc(w-5kn+2u)>G4jCDBrdQ~7BD833o)ar5G*TU+Yq7MMXV}z@^FEy&ePM7i+4A~5kV+JZdTnr&|4|Q zxf5kR_Y6VQ>%L(ss96>t{VRAycB62GpKZGeHOxI;-K6{j(wjVj9bNM{XePOYz%-|h z_B%!!BWLd_Ki_5turRn9#WF*Ew(lRH-a^NZ=+rFH7wo26Gb|~VqU^LYB51Nx&<{qc z$G={e%~gD4rYo_c=z6GUnH*&L(i#D!{-^jyR&-<^uYlYAU$Leyzfi>UvwYVvtl=h$ zEcd}ROJ7^%lEDK9JG|rAkKcMlgb5)5v2<4BeEiOhWR7@i9KON1fEKfl@u{j$(>c5D zvOs0{d=eaB|Fm?6^d(AV<3?ewqV3Ek0{&syvf?Ke9f4xLY)gvnn84E{( znu@dOBT8!fkyg`m-2f*KRC^o$qD@~ta}<%o66-*2T&BDGVzk}CpiBi5`ABL0DbWHX ztEH2I53!qp%;RiRG8{l&p5ueS2X{5Rnxhme=jH{vqgO$(VFPc5EMftB1m2w0v7k&O zG0!{DCW#LKTGpbgER?0^XWcy2G;^GYTbQz?vg#FZf-afC@|G9>%8uUx6aHXvzVV9+ zgW0f;J%z^9o&{#1 zhpuwFeaL90yaX8#QeMPFZkF{CeA5Q7g<$HvZTvHxvYzwWUi)JCp*^*!_QK6m5C*O#0n+$9gfDZLR z!u~PwaqBb-*c!%+M8!_31;lhUVytRDufOVCPiR7bVSuT^6E?fkIm&y32Ag*wD3F3! zrjowErQ9Z@Da8ZPw{G2gCY>|k)xtMAi0X-oNRh?4FdermqsR49Re zRYn{U+f()%;wBcGiAnIU|26JTH-JBDWBf=2#a`luNs+xpHS!ewhLjMc6>Aw3H}{S9 zwivDr)+0*@I{%b^WDU5RD*Xk%u!72Y8ZR;qzBCY*#zGqu(^Or;m5|SWc>zbeqY>SUbEvI8+&dd=vVWvwFQ&OXx*Ec1CWZjC<1jQT=&{^t8h(aa@c4X$H|DghTQ<(SIrzACzG>!7HOeXZ3BUwQ7V008{#4NhcPJ&}!T0 zinue2rIPF!#q7ye13NkJ4reH~pYdVcY^g&fot$UOU&BH`vb_529YdR8Svoz0!^;t~ za*_F7&@ffZ5|?#(YUEGG1#m!f+LEwPE;YC!M#BAM#J?Jn*?# z`J{AJJ_O*YfDu?X2M>|tgLga5&_+V3{2wnARE`A^|rNIca$nz=J3eq}p- zb#_n8r38c6Gt;Dh{4vPbOweO3@y+8EuV!n}e^?2fF-^AOz+t9cL?pJWtsLQV)PQ^- zqLKvOdwqgc4M`h$!2el^RD{Qmy~ZVFU7pF3B*u(4VKG!fTB)7hkk1}<%>{wyFbV%U z>*KIAOrL3o=dM_BUK;f(vUR00q^P9rL;m96yW-T^mGLUEe$E?|tXD3{|DVFY2$!on zcj_m*l$Vv&Sr2uEvLPk^gSYatoJ#LIrS!?ns$P4FN;KN&!krFA)M1!_hKAH92KUH% zw4I2b7#xa(Yw&??ULjMkMqNkOCu9Ru zIEGMgYkmWKVX75rFoT2c=(gLJj(35xSx}aM|7cFG120ew&S{Hjo|H>VnM|WIb<7r? z%N1K#pwJGi`=|I9|66kL|KES{KfC_|z$N)=79p#PYT#f_F}Lq6*BipJFr0GS+!lY? z6&tMrV9Jl?fnq}>Se1W(UfJsEvxrzW(ecZ_l@Hxt2 zyN_){Ej%s2V_-UA+p*0b46N!vSd5^5Ik8CUCwQtx%CuX&^AOG4N^jrDX+Fgk;5iW( zCUv28c>tjTW2OCJxG+AF35;MWkS+&VqL_vZEJ_4H=hco>j(^BSM$UpnTUj1tjjZF1 zy0c*XK|>)9OvCULoGv1rVNI_m8*Zcl|69X??xs#gg$h&dmw$;Nm<;?7t_*IfZ`T;S z+GrJW&PL#|zRLtKy{UFVb1~Tma6R&iCy)b?ykv^F+89RhLBC&1!KR0I1?Pg)=+Yd~ zfAwGgzpMWOj3*OLM-y#`w6NUQY5-K@)5aSYLq5UhV2v3}&PvS-6innT#T3(F3^W}I zc-)}`k4){zzd10fkr7LMa8-v8XlP4F*f?gKp5a$P4C*-BWt<~@1gHG zfUT9Ssk2qu5nPbH_x*Z+TE4bi8luF?a+~+=SWgZc&|F&XL$6Rg3genxL$Fii{MUL+2`eRdKFwRc4X;P+L zvEY69iRnZvvL&RnK$;4x))B429+FQekZz}Ir9|zd*{}3OvU8V`%)17qAnlvY;{&4o zo4f310ANO(Qw+HdE-{WS0HrbnKT=Kz<``!QjYXCuXK%3Z|Ef>szq|i}REjbrjvw3E ze2@N8j+)$KO@eUtWR;wJUCq#Hb<(2Je7Sy9*q?UJ9WZ0m7ZCvTPAG@?tYRGo`{q7- zTk&m*kj8RUkM?)4(7m)Bz4TkL&~GAlrJDoLJnB`+p9ZA(6(ja_GsHW;vXp@H81d4- zs@0dd`*t}Y{)3%h0xNh~u`?%m#|%Rg;nW)LO+>W80oZk63v;YS4!nr>?Qxbjzz@xs zkXml4g&mI_;Tq0sUxFJPU*l$wb#|~9+>0*G>?@H@44P1Os|*DnkMV~B5ZnAYoE1V2 z*9|F5IVHr0hjd-6#m7-XUf<%|^7>GeY~iyhMSxe3>PJXc*d>l>{F9;0+#aw^%@s~$ zI0`lhLeN)F=}p=jwIb?HayeL^P&7FCws_zQf9)QOtA`mk{o}QAOh!jbTt-fEU2eP* z=l>6T@6aXMmZ;l?V})(owr$(CZQHi36}D~LUSZq1yO8IVv%R+OZkeau()qiL z?|p|?VfPOyQT`o1?bO~HU^RW4mmU))sl!a**HFzq$4E znDA3>O3tRmbVJa4BxZkl=wnQ~@R?U4pI9cw%*qFjKe)!t)UEw7Tcey<#iXia zY=S~>zU>()AaQ9=Qc5^Poqx$K<(J$|f!QD$`v`>bY)NTL(cJDYC=qM9`iDK24sf(j z=?1gwr;K{Ef=1H>F+_fId{+QT(c6wxQjX zg*CX`dda=`1dJY(v<(1JenNV)WVHk4n#oa$3ZN$yu)JfsZd~X09M!fh#pDHnQctPU z;`cY5WJoVRUZfw?^!~A#2n^DBXmcngHf0gk!Trmzk&Aa~dkl z=$p)bNI`e(WMb=d_BbxQyZH;xOw0Kc!VAbgOc?B?srDeo@-6}Q78E7yCGu6l^f|f> z36oYU?G!df+v+usYZ8H~D>}z0`zc-1~D%Hm7tw zmuH5YZ7(!J)?83?PK!bUNFQ6TQsajAjM|3wBHSe-*W=D3@Ca%ADZ-)7r9rr_`PYX# z0f}*pmX1o8ca4mHG{RlssF#MNBPj~7B8K_R-Ujp5Sj^k;vM9Yn`ucc8M`!jO(B2s0*2>1Yg=CIrdTO#PLbf+nR!l>F^26g8aU=X>&8^xG;C zE?mrX28e9EEXh5K1@oY|!X)78MVBeDc4D7c6k}1YqfOrh7Jfo6~lpArE z8(!%{xk+j8>u`3t%APZjj=!rvVhM+r(3}@cwMX@v#MdXmsTXQgSfq>nkJvZ{H|@am zNkf2j_86!GJ7jo2^CgE;xy~!KD4*tQ|BV7@cAGT z-oVpg3t!0OX>Jn~?zn7-(c*ZafL+5|O2Io03lagsVv#DvZj{4yNd^)*xrtmysh2Xo zgo%aFK3|4eLZQ-fZPe@ouvWwzjG~iIt7zw@j+HAbVs(owp=g&(CMixMV6=L8>iEh`N5fJ^9P3!U zXU5H6{@mhRpJOK$W4^~|(i1rowb<+;f3*X9y4dC}nYa&%UhXcM;E?P;$MThZ&KaNP z&TL>`oj;~CRAi#Dfl!Vn2c#w;>t2+lz#Hg_bwwYT9HC)=d9x(_J(5ujY`W8KQK=Za zskuO*#7E2gPycRzq`~Q2Zz}|ZpwJ+BN`dsACFKx11ZFutIGh&{GA*|cm2&F5skzS0 zl6J?@Zb&$(ki>AAcs6sS4I1o0ST)Qw^lkDdbxgOJ zQeu|hbcm9nsM{I7$opg$E=|ZH+VJ!86}g?6l9lv)+R!zopw8fPx=Thax_~L~jY&g{&pssX zOkrsifC?^sV-m3Z3UESM3`HwGPuUpT|2BNS;&hrfKFCo4xh>cv`)OfR*(6?uRl+!fD5 zOgM=|bV`wW;gYlrvUwv_(}Z;Y!K4!3)_;xvVy%kdj}&^+3`Yg%2fEyQ}n zOa)e;0hVfapZ8=ViFXD^rN5^s+yM34K0>!LvHrSHhnsM6695J)i}-xw{vVV8+a{;(>R-6mK;6Mo`_p#{oKjpuei_K02Pt4Es{9mXIcQr-{rsf z-@^I)zx~C3$Npk!1KGn}`lJ@U(B>==6-EjJ!;Y7tD+h<5q66K>eK>o~ zlYMx)vP@R+Q-Vm#6nBpBn+$dfBgFaTl|w*dESPJ8Qnz;0{1SnR3ggi8p8x(?MP#e_ z3>xYajLixfNi0Hyfb7Y2a^RY_k36a}0wtp#Qq^AdK>u1r5lN2gQ6sas3cG=ra30+} zvaAJT)ofF=B@|MBVUYW5qaek@oa%xNQSRdG_igR^iA}9{G)e4i$&nR6t&-;j@R+yr z4WAmIa6aR28~PF%Nmli>U-}T0io;b^s(fTG0$FYOSEOfqjM4D_TfC6Qa1-Fgr_(!5 z1`O}HC34QEB2$Zadf5nf^`Cc5~_ywLu^TVQ8*pvXn2Vgq2lbT9~$P# zI%r*QgMs{y5xmwe3?WiwEwu$TR=+Z~)AeU?9ZYIzih=K;$jLVbx!Vz04VYeSsyw6J zn<_21M$MFiUT$^nOiu}JG4Fxt4kw`tg?b zvP%}MvG)p|>kLpk-WpdYV!~&?ZbvG^Y=0pdFn-;M=IN@L7 zCegcLfqgNZ1Gm;fea>R=dH$7@&F?9FwA6-YFrsbS6x)^RX;j?UO#dbdh;6fVlnj$)K)Yl+H zn28}A-s`@_CF%i9lP=3{4%DR_IRsHe@Ysg%cX&;dk{t8e3HRQQ-9uIUyZ(zjbmLI; zrTg4BjkFvy=@3Y8h88F4Xy)?G)?+)>I@GzZU2)P^LHlIXqos{-A~SP+?>mtU6pBBA z?CzAustrldB4!e5n+2iD$*p$JNWM_-Z-}8mPJIFVf`ZFv+JF4!m%zC$CJV|Gcc!bD z%Zy@e(D9XBD5t(EJw98nfLYv-?bwgNpLWdSv9=g@UUcr$r!AJq!2Jx7zS#*}L34Rh z-BKk`JY;6O7uhPitH}q3Qq-MKJ=)x|Sw9@*(WDGm9zkX|p+&#iHv@VCT!YvWRc=4O z#A@$cayZ1Rt~;W2{+f~Q;aNcZ2&)EQCYfgd0Nc!Y_-Z`2!d$w5vO|X;3eY(Ucx!;4 zKPOmV_I=RgQ5VV#q>%89egd~}o2J{fF>lOVSpdB>N_(H|-Ip1!xJ#XQ4b7a7OyQf${m=9D?{$=(;rNzT zgh+7ix8RKMxg0FoW(yi1I$NtELML!snu0iHq+*(K5xh_EHfvx|j5zmtVVCW4bUl6y zBhwozbmmNQ45p7^%SQ?Z)O&mn-u`dS!PMVZyT8awlUd&VzA4EO6zZ<3-|= zyD2;l=q2AFC7?M@Q2|!@bm_KAKllNdxBUPYz|+i=NT_+>qm!7rHBHG||E?kHgc}WA z7eQ_EuLDz5B4&~Eh-o7GN=2L028(eC6n8OWSb9m{t9tigZc{A=@M+}mz(<@&(3wnB z-l4TUVCYqC_|24C6r4$HzPPe}(Ja^N$%hd2%kc;-ONoz>27KwU6Se75i{A1N&LL4+ z;T1%!t!BjF!gwT`f{yQhsy`C*QIRuDiy=8u6^$MAT^{#jf#ErMY-$MN8=MDn6uZu@ zP%#&QXA=wx@AND`iL2U#GPdA_j+WjlG-D(T>Li~^RC%kdYO=f6g&KZx>%=6g-}A@_ zaB{0PpDfI|r?<#cnz^yYV16Z;8+dStwt+o94K znFK*RR21yGt|swUcqV<~VOk04dxGD1aHI92HCd~cer+zKUo&Ls_yt(~H0u`s!|0&! z1vbWl%$|}xpf#=RG}ux3cMvw7njie{cLZEZ}y@TvB%R5p;vJx`miF=LwOXlsO^t;IA`54F?@9km7d)c?O@){;-{+{0|3gG z%5Iyl%h$nG3X`Qg%5#asD4PnyjK(u72>%6vxVyTqFpc)iE2E7c%ECNmt9VL=p?*>= zB5GrF423S-HQ!%o4Qu~Tc_EkDk+%^c*Yn=ttcv?4vE|0`E5@;9exR_5E!WT}M#sXYSy4qY_e60FWMiQZ&$)%pdH+_ z=BCA4?`U?2tA>F~RrN7=3Pizw2{>O2&e4O-!&`3rSX>anBw)W7fS9MRi_Wql&A5!B zB$l(()R4$(b#w;T(Yfm%5ig2oU8et2TtdWKj5`Ug89O%nM1@D3z00Gy*`j>IT_5rw zl>kKPoS8twu*jPp;$h72V*#{nvih`n24{}}R*0kpFH`Fms^L!j?^qZ;Z#f!7{xEcJuhV15Ypog+W@S_?`=8DuIKI z82PChEO#lpZrr?0^NtXTjlQRYf~J&udK*-h;%%pF2(`5!2WO{ z0`Nm4Aq5(6Z(T8yb=kLK792)cJkZloE9}h(%^ok(2VCkRzW-)Zhj>$Pl9b z9O?m4hOPBEKr*Bw5GZPckKw!P`(L-r43Pb^jc9jpeMNg?*hKV9EOau^fN;a1%S<@W(iBUal>HOX zngE8owqR1_NFXGXyf%|yfod%0TYDyNKO>k7`tOroX{)T6f*iOQxp;bIAhj(pz!3JG ztZXUAq{+YR!=R<6>#518RAI2vIBVUBwGb9>L5Y+{Po+ec4vR%szojhdC}$yDjRf&3 z-60xqDLFH5!7foQoQ$6or^?*;)Rxsw|4?kEqHMH`>B-7bm+Wb){m**>D?H27EVVI3 zd=*AOu03>DyQ`LV!iP>bm>FujRs#v+52p}^G@n(>oFs_r(JUrJue;haXcjTr5{t%n+A|k3 ziuwIFsGoUG(E&<<_+H~V_N)vp2p6w#z1MHH@7e>WdsOXkw8`CODPU9i95|ELN7Iyh z091#wqr^u*Kj*0;qT(5o9TQz5l5upkt>;hTUu3%G;80K`z_%dqCg3xzzlclwU(Duf zyj#O1NV7+RSct};0W1=eTerEfN3(n%uwbG-md1^^<{K()HjK%!y)Zml|K~mZ>j`&Q z{V4{NQM5ZB{+ACjU6Hx1z^yHV@xI+;V$*xyvi({4dZ9)94~3QIGP=i9F1Y8U!icO6 zyws~4*ZOb1T9!9cFNv};`Q7nw&~}|3#H{JW9i12EpPc6y{Ut02N@bo(S*NUd#iAe- zw?A8xTQE6&dQc#LGmTDYCKQ zhqK?R88Jt&cz(2kT@tR+Hs?9&7uK7^i05FdaaZ~e4N{w4s3gLlLVli>`Q|(da{I|( zMb*acWtb4`G`x^Q!Dq4b=>|hY2=S#3cs)-m-CSW1)dnyunL!x{;vh6fmjhIQ6;j&j zkvqE&avx-}HH3fuw{&iu>e~8&{aX9KMu~7~>bteq8hb4d zyWEyl>3PsNzqB>_alz5h)jEGemJhGnKU-Y58pN^i^M*(MBr3KD8PrL?2SnJslwphW z^^Wr#)`5Ysx;-ZXo^hGYV)55UAfE^S>NUwQIzxMdBC<-I|Cw8_L&t&0#@N~6Eb~wS zyGl*?z;oT|s%SH$Mm;A-3$|H&WHUUVHI?mmhTBhC%K$ZR17_mB1`;yaKqZvlo_$kf z%7~zqBqe~<`*ow*02#dJv2!w)ie2gTVdBySGtn_^(m$~y`e(-dF16&99F<7=y}cqY zWzqk~9TIF~VsG!5_0qtaIH$WH$-Y1K1eMT;1CdR|q9@P^Jvtefu+qiXDeVYRNo<84 zW-f+8_>ZRxsKXv16_vpCJFj#@1VOMA%@O;MUMBv}Nt%MV!Kz=h%Tr~$!z|HiyojK> z6lP95RkYebmKk|sT<3@pK#K|hwS#8p+VwMD_MG|*1kY(f)k=$)@p<#dGE0HL;OzWS z#aQpH#<>-J8W=cQDy(EglK~`kIn$npl?yD3=t!^Dzw5tf#7EP%hOKy`Yo%H>0B4bK zj71MQsHg|D$Mwkx_wIe?%!2grjJD-teJ;04crtdEk*KXW?o2CuVUy$JyL0c2spnqk zSEOuL){0BLT-&LnLm${a?$MsZBkD^2K-Tc=(9pg|Jz{R}H0Q7qu4`{TxwPj9_t5DW zn^is((MC>eR9(|)#oCAJ4 zx`gtklR{(kW4BlAI%#qBY5U6DSgv;NE=xJRtu=f6B_v&>~+ik zr%9XdPv!Zp;isUu5{r+J>ZZE-IJfTTc^D0APuHxR#39yD z6J~L3VAS3LKF(Os< zkbUVJVH*9}yFx(@M5ua+pSsrK^Qyh_AY-8`SRyE=YBvvZ3xDeG0g5$yw}Q&$IXcRt z88jeW@aDi%;LqZ~t~?(k&z|LHqt*RWxJ8c$B8bH=kJy{Tw&7I@7gHa-d)Nqb1i32j z%FLSGf2u!X6S%yj6%sjh#unXYGHVbye^5v1pse(qGqfL|bD?b{B!zl6(gw{bR4?p3ni){wyQ@9K|KP`L!iXPds+XsED0 zkE1q>W7WB&s`x`_BPKfP!W1|AZpBmtR5|uWpQ76Xflt|?|Jt0H;*)r2UMTD|*2m9} z#7tYB%+jFfA3;)JG18k;b>GlBgo^`Z?D2Og$e`+RAFlW8h2M z-r-`hIvIf`_G=!A=x7gy%}h%H8V&=8DO)%zz*2M3#qp6%q2d;FvO0V;d;@;-W((mg2XPYGj^qG_ov8T ztTBcQr)o=@3U9df#9cEMsQofhrG7&@A@H1o0Iy;Ca9Kig&hMyDAW#t>`bS;hOqHLn zg?*^5Fy2w}XqK;epqr4Th}gi^ZYg16R?bmbGS??%?2f0B2~-;(Ge8?whOoKJRZ-9j ztieCs*iS%I3`!TNlLVbzyhW%)&#-9ypX%K9tb-ZgH|$ZafB5wW6-25ue>lwj_6402 z*awyM=H)g;?MJwn4pTRd=s_FL_5aD8zznY~ukC-IxC>e96XtpkC4;f=o;gMfBOBIo zR~!=IWb=RtJe}$A+_@Bk*Mq86P+GvWZ^(mE;HX;d<%85sVhPW7(fbl^Pz4jBR1qDc zQggVH*U>nCU)(iXf<&(I@AmhJ{yGgqLGN5+&C0U=r#!15dlhsZFeOs8EX>~O>w(ut zdOA;<+pSSUOv0N0dGKJ&-8hoC&}S*gnk0^($L9ZQJU-PqQ zKSiBwP=JCpg19K1j|o}qm=iMlAL3npvD{m~jhhl@4inZ0J)is2K$`TKAZ-=01@@GC zypM)yF=)lAD8+oE5A7+;~J= zl8v($)6zmwBM6ZKT3AH3#h$id;ZA#EzVkcwAQ4^z-DXlm5!I8=Bg#SH+1kNj5q4A~ z{TwfJDM$uBd9j)hc1hF1&_HWJXd@K|&Pnn(mI7LBiL+@@ak z42VIO59xpp?i~zXDGC$t3xKmCY4QTfXeixGd^u0Oq(+hXORR!%q z##Vpx)E!JESC;?3{tHJN>mKJtE$b7Hb%+m_xaTLx)U;Cb@CY1OG!s8gd~f5e`4_gL z#%0i4Fs->IfYVmHTl2@sqKGNiRyv)zs$uJ4!11~+hi1aw=vtLTjF&%cQ3k7`{O8H0 zB6cTChbEH_C!lKB;Pe{!yU*G;gHY*)A_OfZc1vt#gn9_&kdYuG`>0s?s#3KUn7`QS zEvPO z-qTs(ezA`w^gT?I!-KS-qJ@7vmVSKEWI@M>q}5uUN|S-S?mhjE=XkvtNQjv=YFJt5 zD79^ArHNvCS=qZK=Ll!0AU}R_Rm}#5mM}*Y`ys9`tXaIOhkc@!ZyuM{Y+(F|S83D) zKR8MYt@Ds5#o>yuJf!dS!b-04HWTTW1(HFfu1~7fxsyWsJ$8kQ=Tf95Zrp(~CIJS1 zc|KqOSFTP<;|sE9IZhBT;$cym4G98EE#S{mk&JJof~+m$6lL%T876PZ9rpO|b~(AX z!m7>cgRjE@Fp`&|P_sqjP{_RBAd$Q2K^KlJP6Mt%eWT?#ygXC%!`M@VUwicjMrkqta>S` zt(;1AYRt}T2ooM8LqLuj?fogs7O07BT#^UT0qXTs%Zuzm8I{A zHt8YQU?uukQb!voo!xq}j3J7!Q3gg3Zy}-FQm^OIXMYf0=a$#do08pp3+RxyX{idi zikjX%O}qXo|JB#4^Yll6;cdK=5oEb!?H)wZ&34F|572_%<3m&}c-2{X(K&F5k*Dwl zqpN3TQEnY;#nxS;f<)}TZ@&D&52n(({SZk%q6@vVl>dg1L%+zVuT}_CI=#h0YmgdR zOl{voQ{(r4iWf3#nHB~e52Q1fi__sm|_Lk;#MWaAiLLQ(-S3@RO)&*Zf8ZN;$*{I>b5C+0tH#5I#-uIaBE6a znPCHsPstX%5lp1R;~|!?ec%eTr3}*uXjPbvkdC9n*2bn(3N*`0C# zz$&~!Pr4gCs&CVmtwroi+!D$^)gRFnGX2p8*XK>NL}}Fcb36uswVCYwjcEzZY#NSf z?m5MXJ-%>fEww#QQ#ahp^|aNp3Zl*yJBm(HV*bHOyy0UElj%~AYMs?Zi0s9^nit@GU;0VerT#6vVw!!`e@Fz1bL z6n=e@#bXDN2CUmTE5qEk>e@mv388a>WKp#&>jJ;^K^)x!ug1K}!-n9#or){74R_`6 zLy)>VpRgX~^nD%8UO#^@=#AUjTVLrsS|}C$#0HP9d&z=~|3{_N zs`5!u$C4-!STG~DRZLFp80QBTW?F7rJ_!*4y7fc@^8_tkKrl5mDb7Jp#HgXy()#Q_ z#U<1v9v+H<=(L|m1?Oms8={wPynW&HFMH3BpDr0a5xDN1_bgcKla}wTWmFYDjeM9~ ztfB21qyP4$5ma9iDZto&*uHKYaXjxDa>i)0S6@|RV8SFZ7J;NUI?QrQ`F@dHo6OmfjM`E@~+Mjg(F8wOqc_&Kb-m zM5+*MMg%Liv^RZ?wjEKp2_I`QEQo;g?IxjcvZWcRR)e*0ll4woPoau;&G$NWx$h^m z6e!NqE1gUMxppTyFh6QmIV9;VeeCU8w>rTR#IWr8s56ln$}C%HWQuqbRD;hCRqW5W zAi;KA0E+I;?Sty`o5!{JU20_oy%psUeJbvM%Kjp;OL*8j72A(Yk_oeIcrnB*S|a{b z%L^;IGL}rwC0a2&7L*Ec0xp1ih=|vA#Qn4yV=M5O8CbNjeAmmEvTcXrPH`Rp$Kdev zc3Ac8SzUFwh!b7(G|D=S7ckkRtL0Gn4<$+k^Gs}ILD@;dU6YYKq{gAgJLpB_ptINp zw*Jb03zzV7Bn5o@7dLFfb{S)DJJFyQPE`8vm3d12;^@Nlp@$r&7+~%%cSL7PG1sb; zLORyB=TqjxDztT`;h|>9c$+eJ4h!Ro8d8^dk;lxo;~=~UmaM-L)$&N?8UuUNUsM0_ zq9xbiQh=NS3FTN->wD@m#J{XgAx`QI8yE)&(aZIp;=j1dMYME!j4%X26VhyJ!sV$r zP$L2MQ`AvMO9*`7*|NLIBw*b)~kMV(_;Z?YSTpPxZf9kPcR`voVay*p=^0U?Iq zy;=2C2_Bh-Gk4(-(6XF zq@*9{riSuQ`7gLJOReA!(=tDMTAkxCMZP`uuOAbKi7RSW99Nud0daZHKv16rIOAlr zDhaCeCoDlSJ7EkTxQl;F1;e}zVfpPFl{@CfwoW6DA~Rv~kIa6VRBW=U z&xZaa054r zsP*7E@D-%X!aDzMf8@Zf>-vL?Yz4VWF!a>Ky1t4cqu%GhYh_XGTfL5n3GSad7q1;= zp@532+cd+)@He^IQ}VS7y5?ovUXhnKi%v`A@BZEU3lN9sk3fq7?_dN|&2db3o}k}p zR>QS5+S@qlXF|oN)S$&%iZdQ&@zI0HNY`Nci92}hn!nHp zW5CPoX7iNa@Z&7+U)xF}c zx#EL(&L2Jjvfs{g+e3k|b^{aER#%6pP%}Gb6A<)NNVvM+C56%`Vg(`6+P4<)W&r)B z7dB6xA#u8PjU`+#-?w(aFZ}^>nUA2U3e!a5`vV}K%l~1$6*+k+lJUJVc{x)UVK&6j zS|}>HOMzc)83B%{pcrOT`jW&!B(FALhpuDp<8SKy)#FBgZ#PRphz1HnDC51wEACU^ z(-tDYLhv2>Gei|)h8JXMYq8G?B?quw79y{EDxXrlW9~SOzhCinev9E3iLn!^}*(1JzPR~Eej=p{iMm{ zQi6CkE>+8$2!f7~o~{R8-+;+s5ipJ|-75C(g(|?Zrx;1DHWdfY1q;#Mu)nc@H2{#u zLh)Bk<*&VxqH5Pjh{r1=%uJpl4>kTmp35yy2EmD;x$r9; zIOo{$MPen_)dBWQR$mbGf0JCUDPXwjt~UK%-_A&c0Vebnjlh)?Rt2WldC|f&pYKMe zGc7=_q{cZqdg5t~3gfj&UFlDZRR+G5^Rj~kb7>3~s&$){*;S0RPFWW2SZ{`&D!3iz zP6OZATcIy>ME%4vRGoe#={!m?YQU#9^+35FA=E_Z;|F#oh8*bx6!Gq;Q|o!U{5~8l zmcDc<$7xjb*#Qu9CIFaY==vZ^3$9$dC9JG$Px6+pt5!0 zrYZGTd;!(Zz5^`hu;D`sxQZw;(aALd#LfpMv;(7xZC`oJ z6;cjS4+aq}Xv3ma?N1nB8+EnAnXkH!XA8Q-MHv0!ZY10J|GK9z|Fgf?SYLY2cy?^{Mql>C5MTFAO4f zoE^M`U@U^m@Av-mQ~JNn=RJ(Xf~l&FyHp$z~CKQRIv4YUkgkLmo92Ws%>b8a;2-_Qz-lQKA9Q5JR6{H7NQg)*+{&+1 zZB_CZKUWs?hcEX6$bHsXFcm}bt|u2^qkcX`p{Nyc13GGlUpM2nh!9+g(({dxjPE@C zu=|z!)ek@T>neJE(AeMy|vsb zU&t$MXaqIGAzp)CKQAal$sO;3r37K}-|gH6(FW&KLf*-KgR96^4akY12Uqxb=y!gP zR-LH3tW#IB3TH2j@dP1MnHOrq z@nUcA5nwWCKY;%RspzckN$BF|MvaO9^{e&y7)$O54G=#wsu@r?-DRWNIckv`n77#S zO|{-Te4z+Kuc}Q(a-h6=b;q*UUEUqky4ZjFSF&4y<1Vc z0Y}5_=ON4Q^6)$h2q|?2P~51?j|uZcNoILJe-b1&;jrL4Vw?T^H8M%iO4G;or;4~G zi~SgfcMAtrOd1 zFDS|uS>y%Y%k=V0XNj`x4D4roC{rUdYcc%HWxu10T}uWY3hhaz8LL8ib>i|fq|p!J zfuDC;TvBXl_5(>eWt{;iM2%7fimT_FV)I~3xXFy4|Sj-Kh^C5f2~z46#sVl(gPL&voHzU=%X?NGR< ztrVE#BN%f1-;on^JPAnTa|FYCZz2={Zu(2jWaFlIjbkRKN%Rot_8zw-t zUgn-og6RQdI;LGvQ9fVl6v9IInwP8jPxVKt z#3F^lN@JOLb^y)-jvb@!^OcODThPRKVa(16DrQU5sOk%!gcGG7(p7@Hay!hmk$DO~ zTRCdd3VM)%{i8`*`;Wb&`d|?B1L@v5I!SePj3QG0^m)i#r#s~RRB=|TX(g@6%tX7r zXhQ~1DtFR0fqdt0!%yA^q4Moe?hkPkC1LEsR2*5wp)e8)|zWBAElBzat33 zO;c5hcJaBN$}^?IFh`O!YfrWeRb#vi1(o;zki-$0c}j#Mu1D|Q<|$0^twh(JiRmb% zpI=T)MxhPwhaqTE^bt2D@63RCk4Xgrf;ii4`x~xj>HGm^eUs#k>fGlI>Xgc3_5YSJ zRj|NVu#lp%>;&tc(6mjNe3=zW7%{vL6-uiJ zX~&N8Y?c5s626xNRw#KtOP%+C>-(#`LV%$)eG6^692Y)IDj6XJcO0`BPbh$cU3UK( zW-oJ47PP_XE-fcluH>^L2O=;n0a7RSBlA_!y2q62#K;1MGlu0GQs%EZHsl&F5P=xH zJCIx(7b@%;gWu{J$}7$yMoVh@5`Jk*=4YDF=vG|%Hspz}h~_^F>;JGYZZp>9wms<) z`XpQYr|d7h&f8yl?)L#HkXrkyZA`Brg0ObX6a+Bx@@L9@h-g^lC;F?Kp4yS1^C3eo zjf!tu&S!Pi+y`j*s>`uL5{ameoKBPlj?S=O`GXMIf>#6uZgoF>B4^AGyyUB+S_$e5cZPi}-1JOu zi4iCAvvVfJBx%9c$oA*Quve0aR>k{FW+>7GFIick@hX8Qhwl5MF*ssYd zkED6`!4BYgt#ZZ3ac_2ucb?~i_KK?#6qJ{+o7$P`ogvtN%6~D|4n==l##OVcZjV{? z1$%&9iM<4sY?h^F%Quz&JEirOBY}-GEHKTQ5$XmGVQ?D?X0{8ExFde)%6lSc0R2L$ zpco`3))1slJI)??;KZm3^YisnhGenyE|X#E3X~8#k^P6;tBNUtH(G&4$jl%JT21tl z{!M|&ugqgh&oS=r>f9zA4nwX>#oVY3Fd(394f zlq&I%ojK*JVE}*w6I;)mZGzQ3Xm=|C&qwJ6tWT^7HC;A%N4FBi)DG%R$eINT6#1hLBUp%v$`!|L6HiF_fmHF}YD5-xx z?Hatf#Aa0y<(v6otzbz>@9^%xW{sP6yW>3F)>r`KDq2}?OJ3*wR!zez_9wCfc2f}M zs~!dC$)EB8E4h^Ip89xFv_85f04`BX>yvW?fz*HMTpVjYiybb$0TRFmgRN#xYCX|A zo4@Xe8IrZV3*P{7fgmjotMq{9>$r!E?*(!>h-^umP}bi0V=i5WGzu;QeF_A?vkSAT zX(bLU`mp*}5^*1bn@WK9`*9#2dy0LixtB^E5w9DDeeCFyeYzT8o-2?h^ssM3TK&L|8oqD$JU?`5QEqTNGPb_{I6f&dyU(`gOZg{ftY zj3vUbju@mJ20`Hh_QJ6k^4ZK9ZEq$#on$~12hs$YMLvCc>$_Cllm>T$`) zD#G8@+Vz259f7S_E?`5vCr(k*Y|nZo%Xp*rj;(4=O1L&%1tcS5Q1p3TD9>NXa!(v z5t;TzbAsLpIQ2kEgNMLk?qwjMvEJ5;r{mzYWXO>q;|s{aiR$LXTvZx~gJioqRP;^k#6uoS6}rOj(Dn&IACz_z5Bc6 zxhu_>r1oXQ>?tRu!ttN-LgI;L`Ak?^{YQ`Kb!;cZZ3Qz+t5j3j=*Vbl&HkC)wIhj(gL3`y;ON=TM><; zcgFvgE~iT`sPbw{kSq2^R=~4ojq=8KZ2)6P3n+fFWb4MpqMio-euE$6@b~GB!>C;| z4QG=Y_zj#0pF=~EFa}bf{s^76=z)F#mSMo{gADdgiBYt1*XbJVd8qinyvsb1^XZ-u znbx0pmGhbahvMBySpUHj8$)n_l@hw4w|RIX@MHL;Pb!hqnO#XAbkJL~m!Et%^L&7S z>Hux1t7(NmL;%Z)h$UVsJX#&)x;ahr42<8_o5hFR5^33c6gvLoCUrR*PfkzO&fZPJ{bmb*!`$oucxE+gkaZh9C!YTk7{FpS~+{pN;bWg4z4m{W|0f zm|nRDj$RGUFF9lzpi5)f;ET7-Bd2VXDL13+4^7DHVPp1kZIe&DFKFhU!^EFd3~^lU zQ+L;iRrJ+iy2jIvK{mw;iZ(N>Z@{`J68!!9`<1gBMR#F@bUPxV+X~@h@WM(!x;O=? z*3fh4nv$0$5hqHbV-VblD?{F^zyn>C1L*lr+Di=2$1)Ztd4LFebgWN-%l*(rgx@}W zvnN;rDG@Je+X-#HN2Q^lt%YR2>D#rchf)ChBHov6GQ`zO0XyXeL`AoaXf4@`3#J)m zn2mM>?hIm*pm)HePuIqRe%VH8+elm``9UIPLff35y~nm0lll5f?qXg^BGXj;U0ec2 zZS#|n*^xfMkNV;XF-1w<>C zY>Ip&8v;hRISDvb5=l7`?pV}B3x0ch)JCU|{LV*@6rN)xXfb+PK0q`h{37>o{u4Av zfpt9pQgr%5=3ajQzeX52YeLvpfL{UlkGgv3Ngq)fhdH`6b4yNI@2VG-P5h5?%@@El zT)L?*VUfm-lM$3-YMf|`QcXh-KFUBIP`(ex{reAGj8Iflzy6p>46*^KW;gO#iG?S# zkg|?CAUT{}N?`960`8!gLdjKd$B5rwOr)It>wEi!Udo^;_Wms6g~{i0GVGX~&{`Oi zRB4&pBPBCXL6!ygi61UDMJzkvqK&Hq`U4n@vaSJ%;z zlQ?Z?@X3u;2!{PEz!y@6MzDPja8)@3QHexeC^z%XteyAtPkA9TV7dU-la^_^mcPqE zTB@?JmmXmM4}0$vB*@yfYnE->)n(h&W!pBoY}>9b+qP}nwr#t1$ISX?AI!mC6R~2= zw{et*nGtU!o;R=ix}|l5QaGQQjJ{@B%$sao7@8_edmN}C1s*hpTM$gjG=K&yB)^JW zb)d7JD_vN%iIkwQs9aL@HKqGRMn1qF{4j}>ZUAkV$8{s{HUNQgDk8vUNLo*aJ<=3V z+4#Ka@nsXFp{b0Fl61j3Vw(X~3^=_M+tH;mZ5C=7v1(T2!Wr2@m;(S~#xN-FmHw&z zktGR_GlpuU=nFKzdoJ06#zv(ap;c5{N%7qPYC#G_Wp(@rSrjvKR&h!|d!>~H&i!z| zE#u#qacFhOF?BQ;(?c~JHyzdZKI%M<(=;U*&+UFeA{MDWN?2A**iR#nKmV;p=$JXk1BM7V_ox z@=3V(H9SZmiUMWX$~5q6Y#%A}pW64Q<;FG(E{G~$f4bH*J8Zh&Xa7_$C*Z+Y`_it{Grg+#cAraS@_ zLyYN#eXq{Y2?NH3tv7*>ik?|4lh(GQ?rB9dETCQy1D`%%1TV0I5CFp4^=`XZl}YW) zZ_xVo9Sk;>^Awrg(+H)iQYQ(0fr4)`eWeiV)8_NwSDJ~9rl?Y$kXQ;JIiG_yftuo3vwPXL5DKqfjbxCF>S-+=hKzO)- zmON&0mUm}IV+4wd;1DnPag2eljY+(`P!TyQnKO#!a=q^0oIdV@p|~+fAW1fCeI~$c zqMCk~=%W~(itjRj2?w21m1evlW*%Af3Y@sG`#k*DIsvW^W2RA>@z2^?&d|vLWs<2KJRwZOF?6Y^0IG@AEWGxs^`mLfu@mn{oj^kq43dqTJx!wt0{UXv)3OF=3@vuD<*(h& zSVcIej(`a_%S3fHa`&^8ZO1_{!-%5zHaDJn7(L@W^0h$MYq#Z~4aEEf&*OBFgueO` zOqXA2GE>^(eaCoYQ@#hyW)Q$jJF)Q7)-#MKh&5PdR=EqNJD{cBNp3>#(ic6rncPbC zXY0S;we*QuTIH9o7D3wuAw@u)kX5f!z=<*y$BH*g&^JW1L3-%v>qtB!3Q{F#&E5VA-KF z^Sc}zd#R$I-~L-UpZFKb>@=pfp|;VD4Wf6|N_rGCA)_SySPjNGrIA8W#jVQlt{QP8;6_+*!*Cd+S$?66sNWpQ_wL;bq z!Cjw_!GjyujXBetzGjcV&JwKKUrNmO>5u*%4}dl!D4v3FZa ziQ@I=lyefY_-W0iCo4;W(%NXLE5PDvQ5c`S=88^xe^!OSf?kaAKPs!`d@{Y6z~ek{ zoUXUhK>9qyY4BTy`gii5yo{39W8<0dXAYo?S)MtXiH;xxzfZPTHW_*A6Vqm6{aUHy zC&}`BTK_#Ph4Nfmuz6^51!S>qpx>#3{A!?5$cw8u(7qJ zzy+gfJcG=`gMD-Q)YTErs#O7TyC5;*&5m!UwZ>j2H@jc#MK=rN2)ydK12xu@o;>O} zk*9mCs(>z>f@C4T20>O_hRKUFV{dda-C6m7kwR&(K(!e^jXLCbZWEWkLeN&2v$_>v zy@B%9hV2kzI-rVvcm8)htE_N6l--?qL|aROnGr`&5yCxO!jLsGy)HH~YZ?IXH>ihD z^G{!fV-SUufDYr*n+t-e%y9bTxDXB{?hVR0?33kQ8e<3?!nRqODD$ilt#bP&XO!|N zS93gF+?^W(N`?u&aZhuc7+=OTq+1qUI<{jeM)kSE{K9PsnB2IVc$yC0l~WS5+@jY9 zUOd>YW{``!P>zs~VS|iF5?Qt0Kx{lVW$b3V(a1>OC5HjLAu;5ssBDn@t^3L5vd%a` z5*NyQD3<-dJQ*e`B8p>F3Z~vUxV+I|bG@*qy5f>3MXDGV65y2H#>*%Ce@kjj0<t-MuJtdDz$@|g<@OgcqA zS&A|#ndobe$R5kv1Nt)F?bVet+nv;U74-oGJ8K^vDKkKrg_Ms2tlB!ee7a!bTbF^p zwT}GD@T($KHjI2DqRe+b(UC4XHHSK2G+$aW@3X3JfL2RSb1h&B2{#odsJUa@CXnsb z_Hpyy4{n?xV?abakx%3j32L6W7r3*{+WCr*cvt}LJwuGT3xz4+^F^C1WS=9W)_nvH zzSLSOql(O}a?ff3{11{f^s7tRBQ@a@tL3v@$4@TIo{YKf2^1{Zele2!dAHBBr@yBT z^f#9>J~%1!*bcT2GZ{}>x^UiWaE|R#lUfeP(;_XA?D+-4rW~YUQDFZ6p@TB6O55<#EH2zclBayyIE-tnwYJ0>U zPJ^GlT#u}dvx7{sVZYSl%zQqf14Nq&l7uP_JwC^QWT!A$>VpPV9ui+JG9vfoAcSJr zxQak;yyluQm*PBVAn`YVl#qdFksg^|fF`0hijusvx?7W<%l=sS)}H+3+|k-#Ts(f| zO1c(GEmykESpFD*JMa;LA)g&=jy1~hVgO6UvpTe%=B2=_vWl4&PKDygZ7<3$-h`d5 zRjxvz@jv1x{^ose1xHEXvu;)KE3#lI-Wk{cwoHXA1{0b4RZ(m($V=39qmDZRvhdq5 z*_-^~39+9iKo2_~{Rt=aCs|>d2?yILhbYZ#;$gca0Zy#fE#s!}d|*tR2fOf~QE?xD z(mTBp6I5}`vUHUF$Iar3;H7Ut9P(WZE`2gGs;pF+bwMUT${l%+%7C*5=Zw#kYR2Hx0T{2>Xv+->0AnPFc3 z-e;XiwGLG2j192I(r~Au;#I3=`N3F5aMX<|r^GWspB0H5D1EqEz;KzLNAe+I!Y4Us z7$-B@ZDt}=IcS|+^_pXQnM$+_8<_(W_a>JH4BLau9*gSkm>~_4dmDKX%Uevqql;41zcIV|k+p0#upot-qK@v4;&+h<#}@_WGB<#z8yvxJ?IZeD&bqcD)e ze@K_xApkK)SA#wUNKnMBMM2#?q#mm&Wser68C+7|BLL{0#TpSiH>+TfLMsJdIPRbF ztkV0&9d8hIHg$5@jC38hTXIuHFI(JwGX>k`rVyhZ*xi1$B)WJXfjCy(^`>R(`lb%^ zS_m&x9f#Eb#LVt==^#(+McSXB@-0j9Lp-vWVaRT@@jV3!KBB;v&eNJ^w5N3o7bjiV zMYIC+E1nkwt>H+(cv)}VkcJO2J+4Duqfy#+&9&vGOM|qpMWwdD3{}^hJ*99MRfK@S zR5!3&7N8?#t6bo=O&woK{dS7nyWV<^Rfo?&0LGZoj^(aAg(%0SKIz3sS^h)!xVD#h`%Cr}@`+D+D*v<}(vP$Nlx^iYIDOZ|V0g zX^BpRK3bd61$m>RijNxpC?la_ZNJECO}FK{KWra~P}A`c1M^=>M>WKx+*=+{$|*}$4L3-adnIk(v4lkvaRbDIM*7ikOi0EKUp zrmuX&0$rL#YWgfpOaaeFdlTr1OPLe6v~d%#D!!m6Lv-=17;Z%Hx+8&Jj-_X-@VY4%4EHUJVD`0QJ7 z)CeE>m^i?d!xk=Y!LnI-=0lWZ0MStL$Xa9E$;V?RA%}$e?hd(9Uf}7DP54jskMuO8 zD8xEDE=G%LYQ92x4nDM(2xRfBXi$%pWzXzlV7G=Ao-&FG?*CMC(v=WpXQ}r_g%EL+ znYCpEZaT{vCq3g=4_X;M1!nqPBy0L*cSW`fBGRKQQ3=VWu#cJ-mHuyeR?U-c`FVyN zcA)&6utn1{dm3^lyemUBW~#6-um0?GZab@L5OeN8Gj;}+-OJjO>kdve#bE6-CB?2< zu`q`cACTw~WsFpdO0En^h%C1ppfmKnbEvN1M{F4!8htg+wQ(>%0ox>Vr$RCX4oSizc&_>3c3Y8|_jQZ>T z0^wX&LI`3^CZX6W;Jim>fz6-i%9;Cx6&LryEmCe+UjiZv>D{}O^=2QLGu&mL!#^eq zd>6?ptEUaI==da~@C@^El>a8|Ve}4orSV!=fzfuBC_$(m=}M5J%L|eXI`^>ng(E6- z=s`AjfuIjJr0KR-d3Nwl~?gIb#NTdg}qX^2o?8ejT z;OOTdeibQ&Y*O(9zK%0!?nxYHm=D6M;3gVrR#|6~YNVc%5-tB$YX5tlRYKRl&iDW1 z5}0zCOu;*rxnl|~1%w=eHgoZnK}(m~(0iwhU!W>!%-`#8DVW5H-EK|}{T;ubZ}y4f zT02HGKgS&r3I&IS8&OY`9D~>aoEH1kWSpbOGjs{Gs&vh@jzz*03JzdHw73{Hz8r)! z@u5dR6=A7q5scZ{C}-D9Jnht)R~FWEQs?T(LNC$pkOayw;$W4R&?zS zMy5S0e&R93@(WA;w}SsR!qOkOi*4dl>B<7=56lGMqFv2p)&>!{{1PR_Er~0t2hN<) z90H9`p#s6z;Vw=T_bU~?2wWIu>zc~kUurfCz|Z>gJFRcW^Ufk0>4t2{ zDp7VE5n}-|&&GE4YbKx{k4yZoq-azA5=D)C}MBBAyPR*fouxX?oCs4!B+8o9BMkL#5R4~p5VzT(7G zB<#gCtpfEU^sG{}x8|-EGH@YG3V@F(F%{%e3@388?>+}Ez!s$C$Fij{p3k?bswDG* zWsb-Zzft3A3jMFbUmQ%&9SQ4or~_Y3&$|a6-LR6&oVl=e*^9R#{@y^<18Q2Kz{*9T zw0*Hv{J6*QyC@r`K(Q2QVpug!Q-k85jLcAhHHg}xfMi0re34O0R44Y!dW$mg5o;yM z8>t4eEkYq}z+McHu=CgwK5-t(d?${?U@nh+qt=E$iUQ8yl)MLit*tpx|vXYtz8hdD+MGM(eNl95m#p)V#vjPmsBxTe%Bh zHT#gzZ505G8$8Qt9G2=H)l9%toSwJFqgO?(#S=P$WW{GiJ}!0bVloIXB8Dt1R9S+= zAl91pW|2*mH~ApwFl4(%6T}qr+*W6*{0zXm8>?lC=5lS}ciH5vMEumEh@mgN_`+ar4%1 zLOG;;6JC1}ENEOtbZtR{>Mbx`OgoT8%ac<*ybQ)*o{|v_Jr+Y|hR;QXY|U_pGnK9& zJWP0dOyN?rbeqy0EapCrw9Z0)_dL3yKuaFirO=;;K0Uxd!&!RfrqqolqKh7}HImtA zKlzRxkMp=xl)3ftfC=+Xl*me+4-)?^{(?JmEWFo+FAvEGPJ^`2Pe}1>{6k)Ns?5Z> z!An}BXAxbmBTBa;+|r^SH3C^}GrRdNL(Ht#!wC(B9BTMO=g33-CVDXHpcBYlwm|@a zsIjY;9qZt*`PDilqe3hZqF2mG%7{Gz^q1apD9%%uW^UVL;dJ$-K4%7RnBdVte8Q^K=L=Y2e|imq z=%JOKJ1JX~TI4mFcswb}&oIoUf>Xy7XuF{Xw8B|-T8|9h2tC)y1M`21zc5hP*&g!_ zxbv{s;a?temd)Me0zAQZ0XD|Qp%U3CQwAjG^W`T}!Q@e+l%e^UZ>Syxre28L!Lk8i zxr-!V}x#*#_tk#7@s@nIjv@b}(q^x+| z0=;38(@jao-3F2!4SJ>L2ot~FyKZj&J>yyjD;NQq#C5sDnOI5`0NEU>F{RZyHe|xW z@F?$`&+Yo$u_xG#-E?jLQ3^i<&a89IN?-d#XZ3DKI#i23HRiDjpFGP_qUuV>tWAMl z&d02);$T1P$t*f!-s^1vb|rJQ&l$}@qB518D6u3Six88&b+}v)Wc%0i4g8dLb1ui# z&V#y36H>)ORM#WOTjj`3K4DVl7*P_rpT0<5C@4sbi<7J)BPDbx^p1Gj6;3}!>tpy0 zXqW?r3g@2WegzhIlCBqJ5&n6?EchrjZ`hzRyc zqWeb>S)4^kY-i2mZFuz#blbl*7nk46qLL)`S@qjV8+Z(vZ??q3_9Q&z=pCI8`Ui{q zzT)n&c-woiuy{;G#D10TZ*OjaAZV4R4yIXVOr_~FG5aP*JZm8R#uLkVRV|TyXK~d~ zIa91aLW@)n9J$TaNl`&~|CPltr|1#<9JWJ<*tIDv?U{S`$Yz68z7-xW`}9wFA$eAb zMXL2oS$j1rKy{MdS9utenE3JgAoK)j8<_Y5_3ltCC&|Da?}L?tB5idUrIY+D102xu z9b4810)eDY-hQ@X-+oR6TrE`}hEK{8C?*L%@4^Tfw<_4cCD5;VTl`bG1oaW3;{HXQ zpIUS54m=z2{3W67TZB*_B)xOxPCqoQ79fq&Z0!PiyWmmYt^-vJ8U9EH2Cy!)mq2s(p*vSWc+a(J+C5$_gJ;55`y4tS^V6-{p1H(v;fNYI~wQcB?0;X2m?A7)* z#;l5ViU2{bpj7{?18PV3qQ z0>OAqgw^y|%yI2@x+msCZ02KZ_x`LdX&_?Bw8Gw>R*ibk8;~wjURz1rG zze^(52CU!4zf%KB_9z)y5dgpJyo zHC!6Q^-8^goOpWPsb+pV#`~3Sq8F~NfhJLV6v(zJw~xRCyV;IQDgskxKaU=TB2TC9 z^_qN?fcSDh4QWKuSArp)Z$vD5vD$UMg|0!l(vlt!g35z80I_W@a>!G*k5rS9HmsDE zduF={WY{d)|N3RYV0=OA2^sXW3>KnYe4 zzh&CGiThSF&X|wsH+h0i&OP=c3zV+|}fiooeNPo8lz@T+U{yB1lOj zw~Wv@+IDh+Bisf{qHckdb2<>!a{f^scX(nTe;FOBfwKMOA4(J*KT2eV{y8?5ATF4W zeZ8(KWRy5&6>9$m8&w||SMh~RJYsbDws1vSPjeb1RZ3s%#w*}6*O zpI`6fYX_SO)lRVVQG32_#sE6h2VPY9t*|5(1GN5^Jo}68wY$f!DkaeLD)6reim-Vpr|-khgibNa^xe0k z=;I$4Q~xX4$7%!raI~>9R@%z1YM6< zK$3br|99ap6vqIo$S)}BVdVpYqF*h|9F;x2+P$~hNXUYkVGqsMH^EF|eoBS76*O60 zlSzvO!<3I_!bG$_`qGN5#kzh-M9;f)_8$r5TvUo;yPU{3zrZO32*+@>K<#|Juru99 zV-5(11;;2`ASu8}d3{{03J!>Dd$ex5*oc5Ih-zh@NV>oYzQt{3A{YMTYIQ~tR-fpE zKmR?X>qkUv{_1TJrel8?==q4j_Xs+Fm=@?--TT7hY=Ld5@KJgyhTKq8G^oU6BRiN6 zX?4QB(|t+NoyRIbbm>m(swNLNQg}+u@V^Rw0joIJ2O)qF@@AqWOcW0$Zl1-*%zDMWMxfK*Yl_s0HMpdh@4cL`pY& z4jS=?Kv9dm&sLa&Kej_O0gh}Q&_*9C+D3_?{uOYq!C=Y(f8A*IY*{4uY^ku=QV&ki_5I3y1A!a&a=NS0FU z$QnYCf!5)!w05XNHdfJNI8~815$x?ym0l5W%jdUYH0Z^5I$E0A z99l`3KDNnW0KAJT-#zeq1f7kZfl;#3i@mUp%8{A`@Ofl9`Em&#HcNhiSPG!11a8fUS_^ZEV8S(*Ibr z!f-tBn0L{|7Kk`@#OTtYi^kB<`52dny18}3O}*iuylQsyEu$+h8*mS?nuiL zhKFIpP<^Jk?7rOudGdP0kJjqG#&?{(Xa9IV`+>jD2j^x`B+_!Fu@W7D-YCgBfl*$6 zt{l);W8>}C+g;3zWZnMVQ2BG)paN`j0I~gZKu2Q@m2FMh-)%-^MA*8UtkNu*2j zjAC&;dP>*xkKf^OU4Lpp{b;hi=4+O>`JI9(UPo_*Py}Fo7Ikg7Bv$OFGgNA2zl26{ zsZDlbYPLApC!NWtzmf7ea_%*BH+xe;WdR0q^cY1G*eF5!1S?p<`ZAWA~SZ5R_qmr1NEyUl%f?8qJU zDEI0Lfba5AudApWaFOyRhNe7QFsiBtcq#6@Ph$coR`jsUjC@+`RtGy)aa%@N6HfHI z*yo?(FIWvES?0g(3ghj&=cM>aZtW2^%g363uS-txnWF=f19AgkNw=FkeKuk7>Vx>b zI)(_tUwSj^jV*XWZ|19lVc%dj{>T+Rvhya`9K1NKjuqm;{CzqbHyLZN`pqNL1#4s3 z0&q@f?6lln7PBhVmmB@rE6?f48C)lK+-S3vy!$(hI^+QUxkT)Ji@KqiYhOBzlA=_N z7iL35^o3n7W`P8mK@ajs&qiiXCRQ%JHcu_?QAdhL)y2rSQ`0)_w-nE27W|BI(e#wV zZ1)MpKnb~_WVi}B_pyfRa6JfV`?g3iwXctF(jT|(Qo_ScVO%|$ZFAL~{MYOg>PT$% zp7($4GkuoBYX>~BLwp=t(-9Y4y~!nXN=X1?!iWNvf6yQe`nK%1d`n)pG0pUW=Fhj; zd8b?2ReF7e(T%Hg1wce#ZPOLTxbT5M2aQ><@{@Nq9SYqm&E}TGDUwB>AGf2GE`wuz zRA#q~z*te(gKYETwJX(9G*>gC$N21~RN3IthyPnSA23>VCX|#Lgd|ziJw}#$N^i(0 zC!1EqEqWJl2s)rkueO|(Od32y8$6u)a_gdFw4^H6#s=N^+#R%g8P}r6{C?nHI+3h6 zM9Yp3BWz;^be$g4$=PGfx2}%cEnUF+UC}6jzn#uxKJ$^;Ke6U{uWzLyB`ck3e~JW1 zPrVjCf&NoHw`xV|(;z@!G^|bsbKe!(rQQI}gDIT8j`xzyY$@hg?rQ?0@De4qubJH| zVQzDSjXR`YNurK?eIMIRwW411?rX}KO`P$q_WUk+kGG}E-1KUgf+MMr$;;HCr2DOp_-BU0upF`eUkc`Nb+A*v^Yh2tw@}l5!~_0~rfFVHXZG=786jTUE1I zS%eq$x8{e{6M#inbRV=X-9MG{`FA|4|8M>xXUabFn|^giOn^Y|?)KtdJ$KrF|Gr04 zXqktDHl@n6vqFw(9BSalX-XD2*fxPhUu{(>H&;*p<%SO5pp(-4&BczpCQ4!-e*^jM zPL#w$2H`*zlKpCvQMB3acKlwG zN43CcV`>rq?f@l>+iNcpuiwz?GLFI}wf^NV;|4grD7&0tLeVjQ*>S;Cm|Dq%vGF?arMV}>kn)y(*~ z@h(dJ_Pt{w4ex&3wf9D0vz8~Y=^X(nmI@spZn9aT8NL>J?_DouLJLdcH}~orSkNVf zLkRhi!`ZX&x@%|48)&LmppO+zVedCZdDm^w=~C*vDha}rpwr)k4n$f=ndx(}V+Sgn zqmSaRqrI?>SPQ%3?H%6AU7gCOq6*&S8@j z+N9i_O)U{yir|c6*%viB>stWH$6e4wy0Zvz=i3lwRYAtdrOoYLp z|E*jC*}eLuiw(LjG#KZ&BpVAw-~d5LV%hZR@|voHMw zy$YHz$O8uVu%HbBkVC96Q@mBjvy;_4c0i+*rPKa=CVCdNc1NDYq47{uwRO951|+nt!F<^q^IEA@V1_mO zGWDE!$6o~va(B(y2_dPiQ^p7cv#qr_ZVu~^OL=(un zI7jsmE06qO3qg+OZ10tvJAsnq{k+4q)Winch_Z*2if~|63}h`naAlhA#Q8bpn_@i5 z4fGXBXzA<0OV_$xfqX-u7N)4Pl=`g-M+Ml3vQl~g6|J|0Ac(1VIMNFc@~>58dg|6l zf~)twi~p2f&P8rx!jFtmAYV-f^z0eiVCg!7AT&?CRa>;mw@q4VUCrywcKnm9TkKG^ z`_Ws*ro;suQO}XD3u)64gwS9eC)!NOtNFWTaSev|=6MPYv`CbvN?z{nS~DF*V^zC|0Hu$_)E zfNT-O6%$uPl(&OUj5TH|RylUQP+)x{0!RY+x1afxHt4^YmW73-mi@7V+q$LriXIAs#_>Cfh|#NTJG_RI@0`E9rYs!(N5mgZm7PG?>>| zgC+s=Tde7vQ{#d53c5yD4lCa0bu3DTz;@Mv?#;?~0^zAzda2;u^SScTi3YZH8BGHl z9sYBuC~@$q3>aTq*eK=-E*>t77uT>}DFchD+Zn<;=L3tTZ)p z8eETKJ9Y1^6hb#|79(*}-6|-^5ztR1|88SQuY?t4cHw1LQE!C`8Q2qy(1{h8(zcD= zTTQ<~=`D^EsJDDmS+GYn+H2!GMEKT3_R|bOk9Q&E;{O!>;?tAmz3*_f(_tB2%%9IE zFT*nvQq{SA+l?~D7&e(0D3JgNyZN#6{Od{VHYo|wM4(l+jc2M`KxKXAlJCv{c5T-l zi<{LAo*x*2k4_I(-7a*RMH-6Lh|yFD*Vjd80C3Q7^nPd)>+8sfAi}^}F0bI)+x)Zq z_2iP-Vi)e7G1V!!f>u2*6`q~K5#~)0%l>)77LNX4iPicuNk=xn{NLg)$`FUyrwg5- zLtep#obC{X-?ZgBdB(dexMh~!^~Go@%6;J;iM}3ZPI798eKctgb<8n5_d}Y>fM6ev z)%(4&O^CgT9yQE-*>P7=t_h2pph}zhn&VgDuqErHwV_fW|5Ln>lu$YLLrzcRsI8c} z1Gr>8uw=Z@>$QtV;5p+y2n%)X9$uZ(s-HdkUy{LmUI!|*BTu?!rp(ZR9FpWoqG~zp z*GdsP`}g9z?T6Tv1Q&TZyJ+nP)CQ3#HHxao$P~U2|5pEq<@so=;WLK3bPER*r2C3E zVyxH=!lfEB8-S-jRvq=}kV$sWMd~rhMz)3({Ls#tzf@+DD5URrU0Hqmw68eVzcm;C zr{oeO&H_j2>$vwYC5rR#=a9=nKR8wbJ-67s_0XQU?yX_t%iyZ}a@&ng2vTD7rA)Zb zh4$26xnzCL#xc~HRCZDSUN7f==Pv-=4XH&{%K%tB@W{gEIfe+h!9*5_a-h0&>nZEm zmQlbx7rr}je>4*!#w?0>LVm-lFkdmC0iU1nnl#nD3&nzQDuhX+Z#0E6Bh0#cd(f!m z(m>n6=+G-*jmr|N;f4Wjd%}b|YrwG2`d@YJT=ovUAnjiV6FD4Hz)2dML>dBU{J{t& z&j3Bt4paI);nz*GCg8`h+8QzQ4y7;^isV6kK{aO_JH9mKeo4>4m?h#!-;yh?hiO;> z;??kEwYGwxR+Nn^4f>Dij7}vt-}}&4zy|7#nj?86TE1&4b3X!OkGRvv4w%i zteT;Pgsr3;`}`Y#WB-9tZ`7c5Q3(`>{5U57B#G-C; zl5AKGZq!Wq4De+w)^dUytT?)efok+jG2a8nbkm((taLNDyNG@F0)X)kFt8H5dNaOl zHih+I1{548wI2j~sU_V^vAC}@U7-E&h%Oj`{6WhzC>HqIlkfcjA1)6~E|YVjrzG2G zc%Xf8?ortr8ScoAoI!b&`8fT&MjeK2A>D;Fyn@og?4S$PSM5Jp;qPch+|L=7JeC#N zY)h_)3hQ9imzAs=n*di3D#Z8hna*jRF3WU@sh~`rIfXq~YQO31d%FiXdBB?+^B#(J zuc1EjpN-9jPHj9lxN!m!#W9KT-3R#i(?EjaM+=?BUAE{$_$}lGuxWCznH4E#(Usd7 z4nw5CZ2w1|lK-#%3n*EQoJaLwYtM|h8W{v9mV+L9_O+qsk15Il(g-YBOVWZ{BYV3u zfE>=gs1KyZ;-nzO*okZgQ0ZhJkB#}{9AW)icwbFYs||8doH~V~ncco%WcJW1dKFIm zzO6R=cCZg;hEv2xwI?;D~MR>3%p-nPV=#*P7Vz3O36K^QMP%rOC zgk!}uc%K=@P?3CG945)myu?NHJFTgzWE#mF-2I(12I2(zTFx_^Nc;<#UhqfM^DTkK zy?DjNr0-ETEKk>U$*NVZo||M{f(uxQwZTm%j24gaQPCaqYK(Y59%v2}(@ zt#0*vh5E2^G7T=DS1Ys5A~Lv=^PGn2dI(`pzIJd zR$fj=u@|ya=CF?##n3fz<@l{7wKOSY`!De){3%5SNF}EjJFpzm_GSLsqjrGRdX@&i z>*|hV=AH^2zzkc;FE{vFfO-J47aNt;@MZgYe`w-RN%pKROSFH>vnp8%vRtFX>Noy@ z!lB=LY$Y@Jjpo$V%Dz^zR^!Bmd)r+tq8&QlmV{r-Ml?YH0v$USGSC9QgJG-80zfdS zVR6^~aF@dH=*D$FBwpW}eGG~O06V863M)fht=VONlph)wna)8y!ulM+?u2mBb~Ov{ zq&?-v4pwM9#@wdzkX?yKp<^0{;q7T z1qA(EQc)cifAH#HPTrdr(#$R9+`fRLHyr((Uy1e3$1~ukc|J9pA^e30RIcDa`yDF!QKfvWn=S0e#YSjg+Gc8!+l z(FOZQ)qZ?y1z5d(fh@3C!wy#%Mm9G8+&xKBPsD)m=Im9EQUp{Iy7qtVGbJ=M#X_{~ z06CVe*Irz&Vfh8Z!MM#^%-N?Zj_%Q%#q%c;MICBcpl8=S>!YE@J^1Q}z=sLi6oS7p#XXsCm$$yn4*gcsE-#xAxw=k^?4V8L zy=H+K6|721{z0QkT8k@OfHG1wxRSS%?Q{=^WhTZo1Kb3y^oiiw3E5Ju2<{@AExq&%lz`v=06&{vf373AteU~ui?Ip^)sJpq&}i>XW}!^kS51>^l|O1%w<_# z^b%I+IALvFj5L5wFssN0VODc^0~VvHQ=*ldA-yS$p7CAEFmQ~8rg5l_Kx*Vzb+X93 zyX2j7K!jFk2}yIK5h*Y)7TGGd?F(1FP0S+vU2O;&chPja^q9ACp$}+#u^CbqGjVOn z*NlK`>1+j-O~VZv7apF@t1b`}32Zi$yeU@o!xOE6A>O)YqnI9Ze!{t|fjU z=NNUNeyYFDJ6{MxALw7}06h@;GJOZ8~CXPYx`-C1)-rzeX~E%(os1nGps8)E4P7vIYt|-`PqHAsVHZFarp^763zI#eDOpuqec*nkclKjk4yg=nPjP}zj+(eF%u~d_!&JGh>GH4CS+0T7 zzSan$2H6bxH51X;7TV-}LZ&_+2MmJ|>779a?ER<`qlf=z$@yef-uyHnD6m%!wZQ@< zo~#rAa+rr-dFUu=h*kG=8{Jt`C+(wcX%CF+s1AAY@5nQl$n@sk026nV31 z-8JPx%P7!fh(rq4Y++B`cYM6TWi19qY#LAldBzJQ*KszP4%sZ_y$CjFY;KmeYK5T8 z(?BD|ee6~F#JCn`_p~82lK=Rm`UtxRiMVJ#C)3G@K!$^YsM5S{hj=#MedLj8Hn~S$ z2Td>e_HeLfjnk^WRs&I4=Zdd+qx0bh$(E-Ra6h%s^Z>rkjGMq#U1;% z_>0K~iVp@mq;z_8Rz{G=qnpLhHGzlY4frqw2a{i=3A}TbXp3VZAf{m2nPxk=;WQ6c zAUm0lIR=}2OPUG_tJhWG*fG_AbUwLhA11oIqFFdq@+WF29)765@Vqm1IgS2PdTyz< zMbO_x7W7saa(lT%@_|dt!Z{Hk6ibf)XY*ScGIz*{Uc$6WRQ26 zkgxff(RrPM8OUJqfqK(I)UG^)O*H$`0BnRK1%TC6pMjNV+E2ai>8OZz*oVMp;VK4dORb71tML zoQ@=~nnA05!TyJHl&YPjLrujk(pqQFYlKv4j)(rQrf9n9Q;)kQ-iJq(C+>JjlHDGI zyTtY}nC1#%vX^4FVYgCRr1M#oR{jwmDHAJ@`qPUH+6vINTj%_5z-CJy(*1Zut2Y%$ z_cHGvVpCEh-hy2tP;w}YM=|@3;*1ziveUm9)0fS`^nBCdQ}1Yr zJ0WGN5rH@+Z2~`goVqlN48t$o$gQ#rcatx&f0qy+4un!rhCC&D8twTAKKLy&yNH7V zJrdr1YMaVF4A1A}n!Ol~hET-?W!6*Zyq)?8HqG{IRn*k45gxdOT5JYg#lmCA6K?U2 zV;wEt#G#>_YZtXsM&3iW8Dfk0E=b_n+bvC?@vH0*!Xs!#1~LNrwXD&U6D!LDA8m{l zE+yY^g=e{jJ%8Sk^14D7anrx_K+8$x0Iq*BFWQ?h_Yp*j;=IH4G9)somW49-{VWtJ zr>XiX{fUH@2A0lg0)rC-P0#vI@fSr}3TU4+Hx-dzg42U|7=>(km7>?3-hC&B!x({< zqdyn{suIZwp*fi>$#W4(h8g4Tgu{Bz3shQM zf2Oj&W+E^oj6Ze|+i!KSOJ%xo&f_>5mlFnPH1d(#P;Fjr$|E~bco!|H+ZB*T)y3E| zQQU84zD@i$_THgMw1wNYP209@+qP}n#!7poZQHh;D{b4h`F7!)c!gIuUt!0NeeQjw z`2%Lmh%v_Oy)_WV1XUa$W2D*6r&@QJNyo-$tu`LX$kBLDdm0x-?9+(<)Du!Z4H0WUx~qVWO}Y@tnP6i$ zL$ZP=d|yST@roM<%EZwHe0LpMp1_7zBEU4zupP#voivo33}qinrZC#{7!|3Nn~*us zbAnA_UQmulFqCXSv@v*gQLh)p<}sC!XP`eW$$#A0DziXh@97o}r!Y8keadg$_>NzinKFLL!-F-9RL zWawilh+mg4_+Z?ijFvvR0~~}8H)`tY6Oe3f5+awXYrUa*7li-RUfk@&T5Bg)<0lyC z%95wf+<-N*0(u)C(|7Ko!~$5lj#xXlxPRPGGw7pE*`(m%y@IlW)VdE>&B8RSDS#a{ zAZ4NCov?@FQHg6(E0h7OCev9;Yo_v$)hYxRvUD~45{f(t)jc^0jo&yt>nURT=MW=E z2d7Y5x9TVpFmNVQkfD0PZpnM~XR3j@^@tr|6;(M?20o@cwH=#(RBG)S#YO@!7Xk}P z6dMqk4GR{5v23;TQM*eyi{rvlZ8k$0TKX0|Fr?TY2qXIVJ*8LO!eLta=gsA%rRPao zrjNQ^TO8S7>JXWC=H#-vll4*uMS+4Yfb8?&>b+^v_@$xlo0JEsqOWzxC>CCRpp%PK zY=THMAV4|o)>5imeTS|^0!hi2XpAy_tj}raq|?w2f9p4~o=1t;ZyMFRef3hLgd8J> zojRCAoAzZlhuJuS!^Owmv5Bp@+_xJxP|DueM-ZQqY?W_mbE*rrRAKFHj zZmdEjE1jn?E8=k!;I2dqfxCW3_E5|di>w0~YIBc#*6=X)O<9QmtBmE5 zF4pupeJOvu7rRM;Wr@R&Jv=VR0dvw*0QgI3V-4@gl06}PwnV3DZNo7R&y8ghr+nArQ!$uVs@=<_bd+$0pK6|@&I z0q72qp+DsGIJAEk7ZP>L^nndB4T~n3Zljxhg4mYnHkystdwn{SHwm^JyGayu5xFkg zlG)0tFQ>aERhorA0nspvREdHOkt`5UH4oN?4T*uCj$1=cZP|L5juVt2of?i5s}o}M zLAI|Z1c?rYc55|0c1?6;3U@9$oI;_Ddmuaed+Q-pY7kYst)X$MFi5oC{dhtB={;1~ z=&UkaTgYdFZ8dT4#yP&#C>va#U_zeo&R5XTETGoU-O8Z@n@m9w!=?eOdVa^0TrxBYxWd^I5%(ps3jFbzeJo9 ziP}kmu;AfpWaiAX*oh2A{TGinOdQx~4HIrCq@Bfhyl+T?J*OveMe(Z+r*tGTS~i3q z$AUIj!y#d#K3&ednL;xr)8iNC0o8xqaUhu*(3pL8-eSVIFk&&N=>>txvR!kBbje#q zjzkHvHPFpfZ2VRqIrgUL#vWLeC4;qbiPre9@O}-9=o_k~e4M;CV29`s9ZZ+zaC8?4 zLgiPNO3SOZ+Cc$f&@OgO@cpdYlTzvdC5*o**s3qtg4ZuN>E$Ty5>U0;Z(C4^PlUR_ z$A3LEM|H9e(gN%ZTp+vTz99a)T~eue}fm(UGvs7M=z_{Jw+5(1Uw|vB0SNJG?|CXJ9v(>8N{FY#d@Ow!B2Y zTcLUERiBKOK)OxpQeSK%r+bgRe11FFO%6{j@nVT6caySnE^H;P*pc?7UT${;jjsM( z{EMgql_>}^%~`PixBw$u`?by?BD3~6YNN6YMBkBo$*8oh%I8-3zH(3;aF0e!`%snd zckv@j?i9>fYa)WN`N6iG(Aqqepq&)cxBC-#)Un)^U$uG{`&$7e^JcHcgNw2n^AjDE zlOh)M_uo)uly1>;=O6YDe06Iyl!z&po-F7e&)$`FZ5$44*0XX17Yz7#4CTJyndh}1 zXW27q@ZNR>Y!Pfq<>uV#k{@3(bp&uAUxJ1}A{y#zsDI`&B?G~fK4Iu?)-VVLla`G1 z@r^5Q%sY2#{%9Ij%9zGgIH3L4cL7#iGB}c{e=ekeGR4w~z+fX&PN;1zHq)VSc+5(g z9gB3Y$XhK&?Iu?h_7L3~G!@w{!^((j7GcCRCN5NMWcKUdvKRkv=_UMM%fILzoq1FO zb-8KO<`|U#w7Ec^36AEq;e)2H9!hD2q5uHF4bKN)O(_yiZJ+-!J~leT znN}aKzS67{T+=UhtEYPd4+G5M{Mb(#fRWv)))&jU?%K^}OPBtkQYfcaqfZ8Vn*_(b zCz=62HJ)@dxWp;8NK+?aQR6iI$}z$>?IeTgDh6&4MT=oEMn>WPle`$BgK=5u@YF9Z zQxIZTmc5h|odeF@qCoRiPuVk?XS?A>-jFt`1FBR^7_CzaDTIip4h8x~{H)Cp5g5G; zV?GAHEeR~&5Xtw>xCMeD(bL3f0y~_ustEF`?$UPF^t}2)sYZy}p$hLBw zJ+OJ4*S>Zk{bF@BwB5^~Y?mMgFSwtUO2UBt!@mVlfafMrF&`(|{xskse;ve==7*xPix#`F}LrW6GB4N5pzD z(vfHSCqZ@LTy6r$`T`4b`=YC2?d)D|9;1{EOBlWRgLC;S6G0BOY4t4aN>DsPsVjIn z9%JwGRjp|T%Z0u+q+m`~&i*G($=}VtfH%YC%3^PpuQxNXf#jtXpF?S~-Oq;}J~_t5 z0+|_1b6{&&MR(o5t?R8u8vQ7GtfRjy;c!QT`2)|dSmrDH8UkDP3)oB>EtH2c<)Z`a zyE`hM?fKR1aAMkM^o;Vz1Jhe8!CtwoM%gaK!TatKm-#P~=@kv~mQse=B(;t%HS8o) zav9WO;Pc>oVp^@8nH&FLzRl_!2a${!EXnXFP)6Rsy`ADS41l2G3iBcjMV;m-tXd#-$HSPLaurK!k5NY;f zmZrdr7Tlc5c67%JOsP@6e@Ld@?(SwO(8%L;kX>i*Ge2?ld<*R|~M0#{l zKD*r)N+NBclqoXmQPG_p?T((@r|K>$TB|}iEzF-BkjjyTipZT=-^!*8Y(@UsCtj$V z*utuz7H#goTjEY$-I-Um6xi*&cW&b?FZyyt@#5La6BYOVc3pax_1T;lV4b8oAd1WIuqA#|mBv zt=q9VdFdWhr!joQtPPGFEh5mULxtd+#8yBry{h!^!@W4s(%Uo8Gf>MMDCpc8yH#id z!y1<3boTto6(2|J-t*_m&&fq0mzj-4leTA{E{+lE(3c2_;Ya}|Zh*-Cu&H|60ccx4v_Qw)g&d4y__gU0{D>J##L%`sqp-!9$ji zDYQLy4ICax@b(_`;Au#3Nw0S~tp)fmMV^N9DNX7v!U9{UvVejo>P~0Uerpl=jsbfe zp}0!XQCIgteMmAcMfG>pW zjfKlRO;`Pvg5`hBTd;LYO$~`zDd=gZfYHkqHh%fH&3rWHyq{;KrU8_CrcR}r7}%r| z`L74-2o)a}Y3nXqCPg+2^b?q6l#qOGO((s1Q!nuO-1z9roOusjtgKwJiBloG{B*xVZ}f}xgx#2ml4zR?P1d$lB@97(-+G%sr0j;!J-$%2yF zqZJ4hg@MvvhN*Vsm($0m^qef=ixA!5W`-2MJA@Gcgy3(@5ajBZq9We?Rs2+hx(%xo=l{!7-#_kJ3$C7iM$*RyaR~L+RXdD&%Ip? zAiQxS0Z(Z{20huTKWD*+w(GVu;#7efj+lRUJRhI&%+{66{yQ;hMBwrL!VZVO9Z$fJ zEO}S^FM`3_@a|H}6#w)nJ+jW+pr^`Gqv(MmOvFih6|s0W6ED!^Xmt}9sp5;`i*DZF zN@0};gH=t%3Lx5788Az9Mlpl6= zZPL}P;osZ!6DQ$ubxjnE!Zol1Rd(1&iG3n{ zr#L0*hh1z}ovfV3VWl3~6GWVSb%>8SW5keL-=^v`>C}H${(`&sZ?hby%W2&a-=a?c>lC3hv6E+UTBw`WDbsjF0;J0q$ne3%uGKU!5jf_kSNT6Q(5aU z)JBet9;ak8250e9@<%(Fi8t%rU@SHkQRnpUt zcqCh#>$iiAQL3eFlisRr6vQmD*I;Wmlj@yrD^}5?*RGt{mvb}R@K;@$L**ZZ5Qrhn zfe1G7QGSncU@g%Z$iN&|d~Y-}ve$*7bDlU95;U@~#`h1r?1SacP+PoL+jw_i_Gs(g zLARo3`FL3@zt86*98wajzos1Y?p-uySJFLNqKPgA6y%!2Li23j`D4(YoG>oJ15hta z8D~8E)QW9Ndk4Mee7L{MbKAH+M{a=)jk39ltpnb{83gK!3f_WL7q3pJD({(Y#p^n1 zw7ym1hSjGdK^SH@*U>(p?b|ea;Q^a{tN87(u1xsaGF+#n-pIeH@E)C@IpzSLjM734 zu|HwHer`LJdKh+v9y?-Vs;`>gF2xoDU|e4)k^tYo7v5rDJuAN5q00*z+pU>ks?QG% zcw7NjBEAKYZ!V|^OHJoLM0X4`=*zdd3|3_Ol$_ScB(u(LuP9=&Gv2aAd5%O?JMUCdw~rPq3H zR=Ksj3SJt_O5o1Ef=p$+GfAXoRg~d!2{?piGE!@$G}n}n8VUDR&7W_Zy0R~Gw!>r> zavEtxI5AentU~-u1OyWrEP~Rm@PknZG&)dO=gv#GH4|g_pXLel^^PDoO_rur(|&nn zL9aUU)2rFkR^paWt#(~!%@)k?C{lQgGU5A`a9&SAL$y(d)Wh~2V%cirx>sMOx@w3; z8F8H}4>v!FYDT~zwEa_@)iW1gqS)+?%C4ycp)M+E)E%nRD}31Jf|>pzqPB_{P)z1= zDTM`a4FQCsHnX+_`eS#U`i2hDfvVyR^<;MvydSv)Q7-Sz4?rrVnM!9-Ih`Yj+!2v} zG5`m85iKZc3h_Oc=Yifh?Z2GQZOjM*6Ee)Je5JGIdr-8CmUQ#4Ug>2_W`LkHU~Bwq z*5~0UPn1k+G^B+tMKW1jZ17R%DRFUbLC0)*W4%SfHIyTOAjB?6P@DC}BdN)ZAj6m1 zd4CuG;?tF<$U1C;{zXmV4g6-IS?|or=Qjx}?S16X+LiEOSkHtXF)9~YSY;C{oGflT zC0ZkCbn)aq=-o~ms_FM;u1!5qtT3%u8TkIaIjrrd9-(@)CRgQ;Uqj;}G&E9*Cy$QE zx3UBt!rOkRU4eWB%>Y#qcqtj_k@c3KWQm$+QsQ%=6C8uPQxbk)93K+ z>t})QGcVj{Z74N!T)_{ir@C)s*H@tK^wLm<1X0vl4kP`d*CQo0sYF@ zBSI5XxwMR^%Fd8$hw(kyl&*<-`&gj>cUUs%_c?Sv5BMD-@o(w*{BPl`{@>2Os5yba zsE&0>R~jUlCR)grxN6$edoa9qdU^SbsJ58l`Rt)c>@HiG<9_j)bh4LpaOj0P^H7Mx zx|uX**;nM_^Nuf^|5&Ro!#&V?=T{550i~@HYmry|*oKR9(F9*;Sy6M$llC8<+q7zY z+a@MF4I~Q!L?F!jb*;(-3`glxn}C)i(gQ3u>Yqo75r%p*a9fA-dKz0V){$ z^}60WXO3383gxNxv6ZNQ#2o%JMG1_ooUR_qX@c{N@5r1!Im^PG` z+2Z>9H}Q};XXuRl8Ax3i&!JRp?;~Wb9ctwY4J++0S7pocfD)LJyjsAUyXt&2+4kry z&tF5l84m7TGnsd4wQ}(g5}&>bV`h1DdHU{A>z7lOlIyMNU#NV|)SD`tx&Voc*y`*b z-Ltke=|~+G-4p2WQbBTj-Z(jVM!$-Z`3oMS3hET0opRVQhyN{mF%6Ku+c)yGif0zD zBKI~eI=E_5{${~QcOORvCu!MeA;oQHzcm5Wyj#cnl31cCeOWrKV zad%T6KP%Y9yIc}ov&2k2rmeKc!eho$`?*W1nm;IfIc%%oQhC$CS+o3KqJ=?qm+W1D zplNOXFAvf>rK71_giJz2 zZLlQ#8&rxhE#E*I$72kaIESzIpJCDxAV+HkZHA77x$=wCA(Hl*k@VkjNv;ZuUiN&_9dKRwcJk(*nV0e?Mdnd_m@zp@QXD``6kG%DEh&pRiWRDY z8M5^n;wP+^+bM00w=`-VS0w}0mUWL&_maJ_YW}JGMF4n;#iRD;%)#PpF91Fv9f{ke z*&231f*hUBDgqX%u-M>FbV6rStG&1O?vEXK$*>dilLY$h^THGy1+btXwJgP%3+sfp zr{#v6Itv>IXggw!Qj6l%JtqU<9l1ny2R$w@9+hih=Qk_WpaG6D|BvHe!(iAO3iim^%b_`obz% zpzQR?++=V23hpo0=mv z)m^>oz+Kli3jwgwQT3HS57XnYJ3QGHU)lAK>QRj~LsFrMsK4SNl?%Nhi^u%;1%+T- zWk|Vf4nDA%(S($pLp?3Kob>8^k@rM>;Lt*mCZ)24*^bx<>TvGm5EJ0zmqKvujYoKD9AR+=2#D2ONh&D)?gYLWf*Z2*`x}1W< zkb-jfi-@7cr^bC?#cGm?t02lL&7^oeyqCDZm`z~$LDVm30(D2OuE<|f7f~vXPTuqP z`vNVvb_c_o&ycV|qKpa$T{?^-}NR1AJ8r7X>$S{GEAu(quPM)nKrx3Rc~A2e=g>ncB9 zmR`|2fJ5@?%=yjsnBtnY4K-B^_wW zDh%BU!Dg&0z~DeJ7SFNRRDnsYh!>dvd13^>S#Qx#+U6)MCWa;2S!xz1?{56E_{i=w zRoZua^cPj4eg=0X=o=$Sgy%@g55-4Neu5DgEb$7J(b zz*w^J${?#3z;_0M_AJO1E2~{eRIOO;x+Fr|mDfFP1(MMTYxKZVR3RM<`!!bwSh$x+bO{asv0$mN%LusJ%ysZKmPgW3%DfE*g7#5z^UJ$~EQRJ==W zhNo6c8mh8Mcs^q&MOprrb#cw360M9De>S@3+37weA;~e1i6?;b;&PV$f&9e8j0d)Y zF}u>D8?|ybY8WEP|J2KgA=p@Sr_fC6mNSbSt&Y#jqjo>#3J10WPb(WLoQ_j{JiTJT zvRJe|B>&NGB&d6?2MHUch(7QAg=T2YOMR95pLsd|U;YJ{OR)hT$r`(OX3aOPXG;UO zcmpp=EpO}r8g2Pd;r=L~Pq6T4PgAY$&h3%`i4YtgeEVGn@DsfvBi*4;Q>O+fGFXCI zyr5~CyQ$}|0c}Pe3Q`L^4<&a^7gGgT=kpCvE-0*^%R|n?i;a@PUTn>Wks~sjoY#uq>$0#AyIVSNb7GY>G`16%@OoI?LVa&;U%4S2NQ=a zGo%lP5#ixeg=;QB_yR(|2_R~RU=O>+XAo=~TG2t+{pj4|49WxW&1^mZv3sx62}UoJ zxOzd1VDVlBWD& z*DhE=+M^TYX|TV~gne1+(uKE?er%&Zl>uXo-rv~8F;stm$Vm1)eceCA7eP5Tf4S<= zO>c*$#kJ#mSjBHTk-AL-)~TrBE@IT6_)$*1AIl|q!$>~6Q9oSTE3`P`IJ>5SiC~eg z89tO_Vw2C)I($MqK3`2a@EZoJG8PuZX8Jy0!$y8A{xRmBYpAqcH=)4s#`J9c@AvdyPx#R53wz2h znw>X&c^rT7M~GyiwG%6kH|oru#s-@BH1Pg!%ER;L{bC_!fNwIg z2cg|^F*u0N{=A`u&s^aW?mX+4B47%mgtv#M*onT|xg@ukv2~A|{?|U)bbh z-MGitePs3C2d_SfusHCE^sFM9w6rMKNdwMx!snbv>z?_y^n9>iVEtPks7b$V*@Aho zZ$is1f2f|XBdxQdhToA>LMIJZk$Q=yq3}iQF667i zY+Aw0Wvx_O@q`>r&f1O6k@C@^Op$7TVup@jgIs`^uLOk8^1}#dj)y*^0TOr90a@&E zPHH70*mv*lW7#-K;5Qc&;a=A}eS}T4JG?HOWbvx7vdx4AoF`t9?byb zV3)St6?3=$2()ZKyv=PtrT;$7o9s?#$r4wy?qdCTk-j4?*y(Io{7pp?Yn> zIJy}=%nGgk(Y)E@`wJb(^au&i%K0bsT0_q3!ex@H^iz6a%9hHiSHKCnWCqJyUi>RN zehWWJevOQl+>O7> zwtNG$TsXy(k1k zHxd?rQJNJjpCLV|I{9;_>2L6E5_C&UG9hZVq-?PML!x8F%Z)dtM&UbI=*2B;1;OZu zElu=Qe{TBQ6ZWw6<4#I>U7#~-K{)w929X+)^l7^ON?lQl$}&>n_7<83Ug`5aX*TL@ zg%}S$dMX`6u3nDxp4F0NP(pD6aOI-Qj6^4)Pdt*TBti{CJdmbB1r;C;6Fb+qI6e7B z!u5tv=1_h@2K+jlL%y=-45Z`l;;arw`TEF!8G_{b0_OC`UZS4Bw~GsSTJu+H92sYl zt2_8dVH6gh zDCuk(%wOi{L?vKjp7u~OG(}A?W+v}8z)+*vAs#NbTL`x}HsV_U*8t!C+|^^-8D*ld z6$m&&`*$?S2rw7L9FY%O$>7k5ys3IjR-wQ8fdhR^bC+!F2W2l$7j1Az*8Z_VWuHs> zr-chU*jML|*)%n|SWF#4RSEDqhEiSO2Nq{&7+~%UX@8GYBqO`tlzU_f z=1xiuP$=cHT;e(GOYk+ig~eI3`^v402-XU!!N6dLxY@oiXD&0U$x1*E3AH9eju+_(MFD#e;R#3kC>pc&DgmF3SF2}8ngB$s*w9B1xJhNJuDt*m-*moV>wq((j>2() z*qvgb$LbnsqEZw?-_M6XX~uAFEwqS&s}~t2XGz&Ie$*E{XI$f1%=>$KcXy%r-R}x8 z@Kw278F??fD2wPo2LD1H`j6psn&|`<0hG&@*2DqgZ)=n&wJvKTM}SVKzG!~>?3CUI zUzLvD#z^&(1?Qo;sBCjnanB=wP&q)Sw&z zSmyBCh=Q>G+JhK~{BDzatBpf@2`%4!F;)~HdzI9&vq)8rB!tkKL|2pLRLMH@xW`mU ziJr$GBl-rmEE&f+Os&{2ZCU@6J@~*?e8j2y8snJ*Y^SUC48M^{)lzW;$x-ttShckl zxK$}D=>W+3iEHFT)1nl>XIpMJnAI5$mRw8Jy z31DzdU7pxvCUVg~)$@U^N{I*vq`+sy(?I{Ip52wu2ur{l(ov6nlV|Fw`!4i360U4l z!g`~sw!3!h!B!7eAMAYjq&OYpa!Hh>@@GF}ik^-7?Dl4!3ewOIrxN-MM>Zfr7&drM z1naKNN~_5s&g1DzLXIc@a#SM`V{{?y;=ZX!B7$m6oeTZ%^4xwY5@sL2@k`tzyh2`p()N|616 z3ycMX?B(tjF%`fp+$Da8+V*2^+-$i{DfmDium_77zL(5lRC=26E+0Fa&EvNGzETvl z=6oEVolcu*&N2|=x7ohr1l-ydM1thzYSe|2J9?gEuS53$-$!(qHKLJO^@57Ru#IjOdcsX8^`=NW9~Qlt@0}){ zWiF5xJ&MFt} zGbo)W>pn|?YPnoy#vRTC-YrSEDoAJJ$SHmH>h&#WJUdrdV5$uh^bI`X;1)FOOcx+Y zN8IAoukoM(j0@@fB9Q19Bak|sSO=7W6XPnZ&(}{`(uI<{493YTP@;c|fAM<>O}}!u zLJuMN`MUs2g$da`l?OB@Q;Puf6!bu*Q(!q{%*AkhB%(wI?yW0gwkiEq%7n)ZYy2Kc9(S?|l6S^N-9vv& zdR*MO_@Pp_h!>7Ug-&W{(t|z|<8rL3c|h6qE5N~JAM?@AyK}-TvrnA6^g?)dz$Yz3 zi8f~^Fo?e#u``k)K>x4(6nGZAO%`U+3jM8KP8FLlN@FJNdBVV_!&q%KEYjdP=liWgAP`jrBj{tp0!fBjUC!Y+Qxp??3PLQO=xz zaYs9QR|yA?BkNRPZ0he|P)%^JCfPR5G*}b)0dw^&`VyYGHZ~Q#V(fIb)mrxqENHR$ z70`2j&DGF&%dYChUg-xKob2eG!VVm*VPkYqUteen zN1nw-u1OBcSUVukcDi%9UWMDc(xk*cC~NW-6AR!`S;-DzBa>SE+6(&LoP-vJ>))TC znAeZ)oDf;*P|0i46YOe=CWxI&tHmA+-ew_tI#tHCpZJPZ)#PmD`;Ur~x+>gOjmq9s z1CdKDHm>T-N(wXHt}? zSb`$}0M8e^UM$)iP$KCV zS#43c*D;p6;>wcQH@ZX}OM^ZuCC|$bMNuHECwZ_G(rB{d8Y7C3ZWXS_jL_!Wd*qxx z*XGV*Qars-j(ZLSZjpeva<%oqBPl}HAy2Bo>iU*{UDbpHSZ1tw2MgrA72_I z@QHS1gq7lH0(57NdNk~sS~^q84|A1VTtkT8i+gR=AifKL29Q+DqSI?8h2;~Q*&cRg z7;x|<=^*p4c@di1K-0TICP=L@XsG;`C4}oRF)Mdv@t5Y1Z~75QdhR*+utb1>KJ{NW z;#@3@2L3Jnk^2$?=buf)MK_*)ntLtUIXUn(%e2vPeY(u7ygYOIWwHI8!FvLRoq!0;EfPxTyxn z5h~-%+gG`-r4aXrYr(6z8nNHiH+$zq2T3zZp6=IOWBMw12d1C=bT8!(FwVB*+c~Gq zR!e*92?fw+(-G9PgXAR$j{V|tWLU#10D3Pzen!uo5PjOcM430;a(AsDM0kZ)p@`<(X7DEa(NXDlE+fs}=T4@29sT@U*kA zzvZ@o<(pc1V(zRoBT~ld;jHX2U-8;3?~`YJSXou_U8$23U%>(JVblN!nLg^HU|T(` z9VXa&ZX{<=f~`?@6vXDSz{{66NuAON=~TO=g$cYTr>e*!JD< z`;084l?OK52V+VUl6ffALdTwjpus(l89os}7dQ#TQ-49Y z07eQx_w!CxIV>}sQ)J@>xzV0rNa?S?ZLF+H=HA2{)nuEni7}X%N(09EO0f(^qJ?5v ztL8Q?Sa@Wkx4O1jFDG$5e#`xQ(B{)Hov8#i9i-e!e`e3KwG+9Hs~Gal1I#0O`p_3x~Ujab~$ z0sf1ly3@>AEdMFzzgW=CjO6njA$vqGhvbEDBEWB3cnW$#1cU;Vt^7W3Bk@dX7%GnY zM*0&`SdW>9J}-zeQ)0Ao+hJd0a^ldQ77uT7%1(b3T6j9Z49|WP2Z+2`iJG=?hY7dpFvLr#Qm-biq-Fs=z$n2B^^rbvG^fT@1fwp*VMqdjwy0AzQ zcSv|9RK_mRO&&8BAKgXnJ&l*vwyJifpqAPyV}QllcJLCj6uXg72@HmpM2-=85%N$OK-Izp{^@_0mvi|c=np9pmeaZi;?ageFm~z1#=%iW(mh*W zu}kq3*LrS%Q%hmo&Fad6@&i8Xw>cmZ-WS4S_|)m2oKfM|x%UztdYluD2Jy>pH&u|= zVE>|_+0^NWS+j@xK!v)nb)S*Ifc)q0DYD-K6!uuFNmNSe*4oR(Z-?@0m;8f+U9$uM z_P&87MhRMM1m+H98GJmW`W7iiR^-JQk>WENa(45%@3KV9;5ow7x+1UFDnm}C)dJ`c z3Q$_ob@E(~c>sS`{sQehvqlP?`fyvD69{6*qWN34=JEHnMy@(}diPycn!NXAZ8=CZmc9GJz{#KAFOJKrByPYiza73zm2dvH^b-D0;X?lZ{tIg8=MEbYDfhA20orn`*a)?J?i{+72;+2%)VQoH!Yy|;H< z;4<+LVkZw~RXY4%3Oq!m%2!a5?`{r(tLh?+cmBk<7f(wfde4U-#rOb zxAEibV#WTG!x#&M$P$l;4$I>{+7?y1$FU&gwmLX$mDl<{OD>O$^}2nU8MRPo#ywjq zU!U4EPy`@zWKD{`6$O#MSL3!@PI-SDtc+AK#HAD#dLo#`a4G}3NcTd1lnw9KF^0lW z-2Yw*>C+khft3CYt2M+P6Gsn>i$KGu9(|f)UtKs`Tc%1f*E&z{s+4`RVjpQrp*#-0 zA#PzrYkQFuTR8#J05z-pz#1^kkP~x>KETn5`vh6xXaU$O zwX9$A#fJVU%}D(}d1C%)|415D$jyG5Um4pCO3!A-b1_p>Q(}+I{6W*@g>sW1u?y4d zSOY3ot&O4P5Qu2LpHi-7Ufitb&kon+{cY0QVIi~%dnVF# z!-ER&y1y&OZITzQe? z!#E%CA_px~#&!yY9>O2{icN-?6*cP1M}--UXD8 z9^h%fm_E18GnAcPlSxrp zbk3;CQvUF8aoMDLr~tS9SVHE$G}axO+}v7?P@{SXqu^&FV5h?9bP_LNZ1n~ouE}in zE3}D~<)eNvINIn%s3Ba?`whr()G&&yIV$#wVEHj@Y?VyVr{e!x{3A>p=%u{z!wQss zWhc1+ZOGM{@-zJ9Z^BOE-VJA!$w|OPd*>lUktDwKV2A-0_B*Zt~< zP`lQ_!(vCr_PSn&!g=+Zrs@uw81ED_!Wp`SpS-diRmZAY2x*RDM!&QR)Y|gzzB$&R zB8A1FYT0-`7^gz{@a(&Ba@g{91>(;H{u2D(!oOfFK#fitcDlS(3L{FFl+Bd6p@q&1fq6MErc?m`Q0 zcI$hn0u)0&hM0d0rxw~8gTXiTSJD$yDWq7czr=V=KJrCKB?@?&8}kSB0>9_q!oQe( zg{!y$%TBv0L=d@hN+*ew3X&N024$=P6>HDSMR(`M#fREyeFSYbms3&}*T>)Tq&Njg z0PZ`J)FEfxuv`8BlH=-L1Sjmc&SpQUvZ3p0=aeuzxoNASi+X*v{&HRRj_?}k1Fc_4 z^RP5PPOIQ2+<5%Wsy2z(-f-}GT-f*U=Nw>@5w&07sVKg8U?s}t@;z!o5eaprD#^*a zbDB8f7Fh$l91pTGfrlcpF(=YgKhDv-SuRyXh%+~5z|QaA((?(vMsfZeADND^9+97b z#*xFXbH2Q!DNs_R_pNzUp)QF~jA(jYub|&sByJK@IXHCbS3`|g+;U2>PAh4J88S-I z)$Bqc)E}hxA=gSF$@TE3IT(K}1OYi*chmxN3^XCkE%HM0txEDA*`{*q8`u8B!GcjV zRn53HNfjv`RQaMM1&ojCL}tjbpNEcGPab<-+NRX(zT8Ir+)lx=F4vD zOPNojCTbDrQORg#B5fmTc2*)wli09rES|b zR@%1hTxr|3ZQHhOJF_eL)OWs%bJ6=mR8;TXU03t=jrpH*#u(!rzvqc7MjsU{sOvhd zpTOtG!58xt1rAI@Tu*n_a<5?KUyXca_e(iBkNjO{C14}>9JW73BrZ?ApMqOCX=tJR zQtL#guZ%o~q#`F2pFb4?zZA)*^jGa)*h2f8Mv#sd`h=zU?gMjVh*&VA_KxMFSm2dW zdkNHr#94EDDo@>_VkKMA7+Uop>&_%t(i(jwZZ|qZjyX>MB zn*CSzFaCG=M`)e151*n4xK_xXVFQjLx^*}&b)d@bg``g+Ut*8H?r*r)C3Q6*LP22- zL1zj01x)mCfWPZ%un4m5D4s zXuLXbOZxzAojNYKzU0LE7;fuSj;_BYaZ=ZRG~8oheU=`kIh!-y$_sJYP55+AFU%40 ztiC21lRxJ-ei7+rC9b;<6kSOkFW`mtG*~O)uA8j*=Nb0ZZaKI?^Dw|Rp+-b^?#|nW z`b9B@qU={qlOPZ|TO_EAI69lVg>ESJrE$vefVyLnWOLt4`#y-d;c zY^m_65;Jb1@V7h(D+bHei?os%48NHAAgVFF9DBYLcVO76-H3oXA*)`efD>jaj{Q-| zqi=}(0_mZnl_&1yVj0AS&IAj}RNnA1y_NJ+sZc)mMWL!@gnW~{@tEw$+dsSY2hv$r z#->BKw4R@mlH?ygV+7nDz_LSU;&VAT_EJSZzeO(_xx~YF%2yRLY(pIp2Lr!2>(hfT zQ6r`H2H7zm{oyy{W>%B|1p-IK@5@}8KwzMZq9yGRuJ-^HB4^GO@<5wh-+I~zAP1R- z&_0E?zHREV2efSQX!kk;Uk{WPclhUi51h~u&jB*6e)*;03z!mSA^=@q(N;bImjW20 zb2Eziqcu7$Tw0uw(+v6uLHI~kcmh3`d&zWIZc(*3jrpo$w;yur4}ryA{c(EtZ>})X zk+$yQT=fWy2TD;@r&g9uFvXvY4Qen#*rdY)-Au2aUM3ao6$op{N#gO*q!FZFvzL`_wfud=ZFu zT6>~U7*TI(+GP>)RdA)If$ZYzFk3(J#@ob|{}=`;y$qZpZp9gMQBUeeo{+h2 z^7?5O;M3^5SCa_9Kb;TTVvK+|>bL!{4`p7- zF}AsJw>ja{)lgS;ovwcf=0Lt~*jAPf5JhK?@FUb>iFuc3Pb+KppaeR%iN_}yTbl1q zoT5d=uk>IgW(l|GBd7LEWMm%Mcnh9G3#hzXl5G#rQ1)Zng{=&U%+L)OdARVXgKDL+ z-e`Ul!iwZelgwe?d4L$p_mRg9;O%+K7&cat;30JwLQ~9wW1b(~kld+H|Zh-lIi=Y>4~+}Bol)V#pw9BNbTTg&ci_tJQ7^if3K~p zasy91kw@&;-~ZP6)%4VnY)Df5yk_#4nOJK7cjXdX>Qq7>*tf0Q){+*Q&&DO3cw6I& zmv*PsHq}J*KYa%qBVM(2)X(0CPN5AbPNOxv>(;bBXmlW$B*SVdDj_Uut}Ei!I)VnF zV@@JNGA)roy%epI#z($}orS<6CjEZ^j>^E)tZNl$U=V1s^I$-gM+Ou}xDMaNr|4SB zS{Q9Pk^4a=Gz1HqXiNUGr^F8TBtGS)*ss$UHLtEheK1Y0B3<*lLEx6hc(pXv9fd}| z55jje&~{+w%3B^3qJ0CtL6qAsCN`}2ZZUVa$F?ULg*ehl2-}SHT~7rO>D=*K_+%yXGt<0ClQS0sGk2GIx9@J0eD{*UD-P0uqTQKWcYvn`u4xwK z+JszONKSUosAP`Zo4=s+M?DgUnN)sbJ@E;XgT2q@I-(7ZMLsC|tN0fst9F;h2>jci zueB9C3p#HZ{-wNh(bqYDJV+5b;>ku&fGGz3{_hB(R+0~=*fUfz4*>GPtDdkk3PQ8X z7lNAsOaV&2t`KBkR#jz-JtDM6=7I0<<|1CpX5pKtJRhhU5uk?0afhvr3+fFlT#pKW z9g@Ojv_?zl*>+&R_&~d-r|fnS{=#s#=6s*H7QIOcoD3$5gnE9Je}1o7+HZhLch~jt zEX-fRK)}Iy?dnkaL-63i9{s!?S`-Q>Q&6?_pVAlqlS}w({3HMHFKB*e_d-%JZwyrK zch*OdWG&TME6Tbl8g0=l;PYz!S4B1i+}hRe;xkdNd@}K&knL=|kDBYS|dD>PB>`g#}5jK&GmJeN#k59$%9`o4!4l zF{JCjL5rD4C8=d(zN_1u|G*vnBKpixrGumawgz_r;jsJ;vS0S$k{!#3nE46f`@iBU z{NKXA09LWz=d7N^70g2RCAqUvnoNI)93qF_8!4OANcYm}1-+O(Tt6s1*=<2Ltd(S-fg446-ikcKAM1)IU?uJy!gQ>m|kl@H?9d1h58+ zGm%HE%Cn#|9_u@avK^%%cGnLDYf0K8`DnSM&5v=9GDC7^gO|L*uR zAr(ZR-+POVyE8*_ERENfmIoFvWNow}Y4j)F)~tcu?>=V=zF^3^(tVu!W%JbKBWL|j zd<4+jd?H>xI&XohVG9}R-9ulUY_}v^85|(_gS<0!xf0@s2Pv#GE{PYyv04ccPM!3W zCo@o}81KWx$b^uZfJw^`R$qF*&Nno}&1xpjxTlzVXe)A#m9NR&S4uB%>iQ;VkhIHW zN_t);*yTeAya(55X_Bb`42XHH>0gTn{NyL?4;|5CB8F##V_fXif1r~~1js!%5fw%$ zO^>dINqu{1RuD|Z*DLZVUQG|G1quth2eM*N_b(TlU1vfJ-As_I^F zK2Yp%8UnChbjUf5_e%OKWD_^LYGX*zduST~I7P55kIxYKlll$yP5|pO@8DL;rE>?_ zXXA~v?^mKMf)Q{BLC%|M$Qd1>;MAH+EOG=rk_U#+Qte{Y>2$LLQWahC@0kk`$48j; z#!;^KB28s>l!*P-bc2D{*8!ngvu}~4e0C>&Vg75*v>&ypKFg|Kx;&GQh8S?WXK8~4 zuo(wTGQ`q7<2NVIDor`4H&+`)`#!P&Ff&Bd&d<>MXz2}^=mPW)(Nd@`fN^{3C($ocf+#@N-{R^SB{kf#+icG6gHN09>iH+c0 zMP^8e5&* z?0&Hq?JSTZ@T%ty)L2h?@~GoPp3bqV0=jStl7;*l1X*zzCJ)Yxz2V7pXXOJ%3Wfdx zX75POQ;dD2FhC-wnMbZfGYak`M>J9Z8^gU^EQfYgYQl+1!rkb z1kRm@(0;pv&si^R&@&Zvafn!{KeFp0)+l))2bp7F+L_T@k@3eFa@?*{y5}&UiTu?G zi*y|xbXDHt(4Z_+Ap(+ujO_zyxbBB|HA=|D5KOTJbg;JH2FI@K*eoA!%g4+?ZgnZb z*KfiYOvmb>xvm$ICz&5^_5NBH1n$)>)+F?5hf7Uz`3dfl8BmyxGQ($ND!G_Q%@b6ky&|m&7qW^d#EuMH7C-~2DdWCO3R$d5BXJajew*^#$Zna+JDOJEQ?~vdm-&5c{mu+laJq?71 zJ!aE7!5-g+j==2zxGXFudQHPiTqgUW|InWLa7XiI=58^#y=!euc3NndGN8f@cPjq* zP&_et<6p(Uz{>z$0&2i5lEEsx3A!DeXb#4o-Weg33SyF9CzX8{XP)LtHDYt7MsGo? zY*xZ=DW8QcM;=4et3&8mWFf-a8lxnINGcb!^uBv|s@FrE2D>0tJ}^ZZOUpt^ABhB zuknxk!@mekU?yc5wnMf%y%5LQ&I8;+HHMZg<%$%$J0D9t`L8+CKm3dTXU_Bw|KcD1 z#XtOuzn*^)Vf|D3m&k|BQn1}Q7w`FW1;!zi;IGRBJWqU^8w(rh>I1g@tq=u!qTn6B z>e^_hbU)Yh2dk|>(hBvK zR)&~oqXFTd-SSAtcRk(*+g3$__{saxMxo`C0MhA>E0Rw*K$wz2smpsA&9;_cqQl;X zrL4{})y^%~iIL90mZL9q@9QMjJ6n+ZVoYW#K^t<=tym+m8v4#dk;+ldM{G340E7j4VAF( zHsS;9J&Tm2HJ|{S+FP38PhhJiY;#W-@@DpiS|PjzFc*|_S(NEV|EWdi6HwTBe4>kc z6eN#R)qpIy#Kh+pmznO16FA*d-Wu{IxvhQA`*(RcQ36(R2YqJJnThErUk!Ze^G@(x zXM*E!Rx@*yIt=B!{i^S65PS5_g$5^q;$<)<7#Tc9EM#TXn*0wu_WJmH7p4JCV@$0@ z+)$C(tQ4VOUUJMfS$gHk6GCZbms^owW)2r8a3gt_N?$T-`Yjp#o-_#4)!tU!}Pc4G`*Gv{((dAYH? zgl;eUY0=W$xHSsh5Ws;%DcUiD?sk&#)1QJM~^1vRrA`tgHa`=TFeuZu*V%nQh4o7k$#|Zmk&(Xz6DIY}Ktx)z< z^}UsI(TPL!k6%Rog_QCq`d=_8BAkM6ehCR<|l1q{}s+;t5=R9k9 zXXVenfkZXO6So$Z43>9$Idn-q<_D1Jbr_M))^)!wKj#3}IOUs%2Tx)aJV;!USprSl7V|oe zRqX6V_4Wm_z+w$MoM9N**nD&M#7RBj1HzlLS3OGMP)X>&{;b5HCeJ*I z2fu~?+*w&+*XRwiF0l*8pGB{)|59?UgmV#ou~UNEUh5>!#rT9F`eq`NM{omZ_`pEZ zB@|g%qpR^5f+g^JNt?PY0apq4enDK`&n21J*vwAUmpb0VJ^*O74{WWVyz%WAu#CM{ z*LD)n`uVwUj7G#Hd=@rIWLvIal~iXoDvs(ZY6wRs;eGi>2$RcLlOB8$CDi``_c!QN z8XC{Q$__BhvKGR6;teY9I1X=gaj!_a^VJ_wOSOy9Fl=-2_n|rhsgYyV$s)7vl6Q^) z5gMT-B+ZRRq`4H+zY2THU5f-}x|1M(Xn(cd7*5h>&$r2fgg>#e0~X^k=P)hW*| zKqcF_Ul?qZAVF`Y{`3V^OlT!0BUjJ#xqtq1-i);6W`>02b)(;9EHX0MYa`gQ?t#43 z^=c8}O0(ibUY}b*jOtl;68XbGwg(OH$=Ms&z;zMjWtD-Xico(H*5sLA=yGKp1|F`5 zMh)OG(y)K6`Mfznvzl&YCa6~`KkpeX(u~ZOg3Yfvx%ec|Ua2gA z4M#=A$;j?d{^5|SH$))O7u9RD#R8e(m39aHZHkPGaaTlPA7D= ztk3a{%=N&`5R;yCl!?p!Dh4oZUoUo#s1f|Fxxb1F`9+vB0b5&$Svd@LMkcKOvzAQ0 zTU8tYG!gnqK7F9tKT3}6ny8yVSf_KVoCAlCt?aTw5quBwyBk!I;JKNKcYLWqyy+3S zdLAAIeP=Bzlz9(sSnnhnRul`Di%{ljk$tU9lCKOqay|6p`o>Org;Jh1Y`~6>)aV76 zQ65oO`eIrPZ0y4f015hj2NB0|%t&>}b=Hsk!@T8e8TDD!&VUGBbcb1(2j3wAKag4l z1Qp$UW2U69^(~qArzbtsm2P7|Lm}Mmhq6Ep&!~N?PaHz-uA}Kr0J{5uq8S2xzGcy` zT3M;oAIn_^y{!S3(rNy8^?V&ipPEAz+C24d|J!so6+eg5TRi-6KQm_P#vY)+EfZ{|#+bE-x{+tM z`}T?bL&dAk&m1t|tME8MbCE6tOG~ZlN9@5@G8;)H>+_5jN(O!p!_$|P_?MOrgXw(v z0Pz&$FsRD}y6w455zM-aJb<+sW3V z&>oA7b&}hL6r;t_ufg8B!9ZU9t2UKiVt~eoB~K%=j2^(}&wGP&B%N)`k9I9a;osx~ zDZ^?^zuwh+JS{~3wZ3@#2>0v&tMkAqp@6rZxB1S7C$lYV*)bgyvq!V3!wYKCiIGY1 zri$6GhvI@QrF z2|-rR?Wq1gC6}Q2{x$LW=CAIsc36gT3``|Vq#@@~x=UcwBLV<-Kp}ZH5@)@O@Zf;!W04QIiJ`)(aOJQ9y~8)0?Z`W2ghPf8Fnli{<89-y+i)1 z{3Cx)F5$oZBcK6~A|H5SB@FK<5Ipv_W?S_bokL^-ODX;`K@GO2&)@@m^MPhn9fkf@ zYQX58)=k%KXjkgj4t|d_zSOqr>wtKEq7V_7Su7^;^)z1{Rx^#wYHDjS#jwm-p4y<> zNx%?>C`Zhzj7#(dh!ipM6kAX6Kd61vTb~*VuleabodBo|X1~PSpU(28ae0tzZ)FE9 zCR8&CjEl$Cr`RM)C_wD|ndJs&ariJ75rVp1NO(CW4)3k-JDC!apE@8Rg}`#(kD_A_ zt-gyKHE(A8+|=mV@!o?j;g%fB{O+yhv|CVFfs> zp3igiUIJzE%`B}l6_jiK4eRY>epv!ASO+hDiwKijPBBe1WDm7Kj% zG5Uv;4gx$T-s+1vBNNn{q7dR$oV0wFQ@6|m@oR0sKVU> zF51hK!?^Iu-(Tm^SR=m`?hK?7Ao9(-DZTRL+zM}x>XDJo+>3jz&!3(S0&>Mjei}I6 z>cKp@N5CvMzT#Z?_H*63o~`n2-sI)I?FMUgt`j8BC?geCeU(;=ZNTX6Dx3N@)>(nR z?^4jyfY7#s_5>I!Sv&*`C_eN6hB|i3BEC@rn=yLtSp|j6SeXPRMl*>1B`h=Us;R@? zIE-rCBr6CIPCQqnGikQ%AcP=e`V@dvQk zYQJ&e@K#MN60h{-ZmYPEFAaI=gcX2rwI2+c5QI6r+PTAx=+=K!4o~_63qNSpv&@A8a7liR zE$OPAvj+1_9yGRe0$2HELT~ks;eX0O34Q|8Z)+$c!UIHE9M0@)N&EF9nc6IM&drc= zmT)5`-InI!vyk!S)2CLHwal{A%0|VlEp@2i6t3l_0~4I_w*B2Y9Z_C=2`vpQox>OgCkUF3g=Y#6%s&<>w(hkSgpdcjQQ+b8`o-eyM@l4t2|;jN z)xVna(QxLhWk3Jkfn*JIt1UKC)$M9ro|g;8`R<&lgOZd%S~%s`Vs2BH`f2>x6u4br zaL3SnasM6rdw&CGPfsgd2Lesixs_wbg}VqYCSx$?2-3;yLD@eJ^MkMZi@uxYK0QYU zwVUyBXh-DJ)B4C%ycZ0=w783c3DF!a$0Vq+FK+Z)XIf+{8iO6Y1(hk3HFXbp`}ZgcuofiX3VMuPMQln%tTN*z?-j@#DpOcGAH$GeeJ z2kcneq*3qKmdM_e>uplu%TF{SskheB?8JHBZ&xU=wXvO@BbEz2OXAGV+<4pGsADuj z19l`ht2Z90y09OClGKN6 z13GC0-^a=FVtUIy5l)Zgt#;Ey%Q3#x0jTUWf>*Ad z@H1xArXaabax0daL=Ddx-xry4`TM754@*b7Z`98$=#s&}(UagL!W#6Ts7e@j+$@~n zm_>%VHA5Is_1O0kK9nYD3I$Y~ZyC-2ydj*fO&#Z`I%+rN%>L`W{ozdhIJj`vK1fmp z)KlN(-d#Bv)&}Em)qsNAejajH36cUh?%jgYb2Hoce8fkilNtB>^A^PQJjpF|_(pbI zYcLqumWo+1%sp}Ll17Dkh`I<8+wqwg`sb8Q)$eLGYZ~Q~FB+=)Q8XLA@zq1>GWuum z`FeSeqURnL;{I&vE=Xr&CCED+n*2Y~>7)}z84M2tQC#t4tSyAuc_}(ym&_PPK&*CY z3)Pj$_C6rx6oN8n(b^&KJi~r=)}MyO6-dU=?#~mvDIZBbs~L7h8HEqs5NF{S7-Fi1@y%PPSUh-L)8{UlA&z_WTDpI z+oYsh7o671Py;0thbt+nd7VYim*xO_${U=;2Ks?JBfpcf19kk(Kl|r7!CdxFrb>^y zj7eo})Tc_y%8TByH%P4;_3Fg9IASy)E$9 zAxwVCqBuUDuaE5~t%cU+%48TlNu+~IQ;6L2K-LJ_1#Nx?wde#fH!_0xZIWJTT1&s0 zN?Yt!q@$SO&M642#cKQT(k>>GvQL~1*-a}WK6Rc=wK5n+xKCvDX#IH((2oiP%&5GX!kgNv2K)%t_dY|^s587E7!IWFmsccW=Obv+ zzw9xKe^NBOB9=*?+6ZAS?G*X|xr}!rIO73~>@>@Q)E=uJysjuVYst0X2C8FT751}s z1AhA=pc<8A9c%QNU{RdetTIB-aH<~AC5{QSKH8iVd2-9?E6}s6p`sqhzMhKr+Mz(U zT}wY=emyO+M4}b!8L{uPU(#5g0k=vxUL$x0O;~^kD3BU>(=M>X?so8#tx})l5EXkT z*2m^S1B2?MPna=bT6y?3{LV=<6(ymu)7DZ}5|0=)IWkGOr2=(X1WVgFZoZgt#l zhikKsT{tM|!P4ZyZIDeZxds_(X$rKW(qBH({7$L)r+Vg-Lh=qiK%y@dLnX6E9L#O` z85F|=Y0*ab-6xv!pn1P%`E!$BmEx?MeWHq!mLZ_|u|J1X1@6wFDE&}`@1)uSi!a_Z z)X#_-T?g>Gn1{>uCWz?azlBk(?hovLjUK{wKJ-IuPGpWxO?P?S{DA0DS}=->cn$U! zx=&tOE`0ERZrM4QPf#QKp@H*~O(HVfg=sa_l#7l_&u+{b$^x(u(ZOOtQ?aa0+Wa_8 z4oNR4!wzC522!v%h+Nph6I$r0nc-6mWf5*s79r-LYoT}9B~8Sll595!h0=|4Q4pmg z_1koI+)@xS-Yz9%;L}#ZlOr7&0sBL_8TUntT{0XQEfd0rZC;b3?%+qg4o%jav0Ni2 z!^0>0KE;h0!bx8KILw< z6}#ym4AxWqzRte<(V5bOjm6Fi0v=#>zA1)2{34>z+Q{uB7;Iuqf`vNz`KzNva!n*L zKb*~M@baUrG=`H*Q)h^CsJolKEDgxUDWxA)yFu2ZUfmAs`d;=o0fWZputN~7j=@hS8h1gD_G z(rR<#ZR8U|rnGloP$lHfk+Wy-HupR=t5oEONf&NR=gH;*Y2*?%`-f4vNSrzUwgvX781J*&SarbmQi&iE&IF$5;r5$|1O@}&TStp!u@;? zzH)`;OuxfVh43A5$S1}lvu~>XUKQ4eW2VluT^0AMYubtqF`OtH780Jaa(yL0^~wWf zp_3Q9zso;Dhna6t6k;fc;comHXK)m_30GcyM=MkUVMrt7)#_7yF&OoAi7bx`folnm zzxqDK9-ml)<8z;MbKOXosgDZ#SNTW&9?t6j*FSPa8$Ob-Zj-`}qx?JhlpM%YH)sxU zQ^NujSaTiZJ~8ja$?YNjU71crb}n1Jw>Msx z&uK!9R@_d{I!yx{%-eS%&gu^~wu7|XLS$pvtc|zTiBA28juaslE26_7J+b(oCtt-! zT9?|8zxJIh%b>GPfe5YcLi?S4zM?ZHaJ81YjDmFNX=L*8@P#oY6lUhXVW~s1(jIfM zzZqC#BNA9>wZzSTP2`zkM0j@|ji!|AV;;&sdwO@H3nON2#{wGM`<{BR1&b?ll|!c` zi8Y`$AT-X4F@lXWJ7uTbZBQcqyY$5s6Z4ZFtRx_5@forsdqK>S0i_oSiHM^X6LYE- zV8vGTqi@KfK<{&LID@x4`Psvx(T)$Hs3XDV%)!yvOg!VYp{K?N%{wN9itv1^pcZo! zgGB8{&Xm;^(lF|Fhh9T_kS6Oa26KFL^$Xk3nvTXKs!|~pE=nAu1aT= zU&=2p1N9!RgpIFmaFOV_?gx*Z2CLzo19o?prFtt&k#&rWYue*MIsf8hYTw5^-(#y3 zsC=lY)Zh4OF8mgzIuWckau--oKygZqVD-s#Dm*}7*5*o{q@Vmzr*zoWGk!+>L_ru~ z-oAcxXq6%)6`}L{@7lkZTUmRI{+$&zHE>dVHfIT7!oAOrO?-NSD^)CEG+Z|KZPvaOF&C2W5i^!>#ZS6bm??lux7Ov=l*)u5#5q+i|ON zHaJhGrRcgjEO3XyCI8abaC~fM3-?@37ohV!0pfZv)00-kIG&B=bgC__ZA3;CbcBT# z?dlHSM|JsKvB{X=&QxyUwCq1T27QKX5Hg;1vgE-{0iqmqPLi91+`(FUOl^(92J3}1 z*ADw0#cD-T8wk$$HoJ1Yp>Q`huzhf?x`n&_BYQ4Cu(XwGD=B}Ungrzz;^f5r(10Rj zf#e-h&Fj|3R*#5|D%GMK67}-~YHSm<%C++xt%KDn)p-U4!zqNWn;>A8(}PIl#H5kO z6DJ50PNhT#1t+$qMie_GSW_2!&X&!M>a;%DClpj{6$6ziUc-15^n~|)k)@gA{^oNE zlaj;!uiC$eBGLf2!1)Q}bko2?=5?B!`!;}0pmAU%Ci<%o&PpZrUFHZ!0g%5>Z0ne? zc0zMH?f(7jVj`Jp&(xl_{OoH$J;f{$8wLM8fax`Q%KyNiHLuNZkX9#jB=Mu&P#{nO zk0!LtNBAaF*v;CWdHopK!RL1rueJ{mg>rC5$JNwGFOnt)(|1+LQr&>`zh8febS;ubQiv!HCTNC{xGgDm&-mY-B#3N z;Vt?wUb>Okd&)XXsYZa;u+4lYoypI#|CC$;VO9S;v(^%lfLk`oCp7Ez9ZrqEMQ;8k z`9T{2nm?iwTZ_`u-m&#XVn5I8okF0yP|5RWO6j$47C&$D85NYHinEK$rqnw?-tmnw-*a zb(7&i{zwl#rW0Ai`GGU87!+bO(vbSMcf8E~rH^1Mycerj7hu*%i|&5se-|#K&9*eK zXsv_4QfrmpE}#pC$@)%GW?_xvL4qS?&W60i*H~_$?+r(PWG`kt4-7``m9N|4UUgrAvEv;Z{s0)z9x!Z3kYx%bA>%|)^O!aE1Jia*v5vHQb!T555pjl4JI!_5r4@oiwH~fWkb{u|+ZgOCqn%O3 z$|h!@^G&MTd}Kvb|1K}51>aMm2G4}w6M&kx91MctL;5Pw++(R&8oyc-S;w{m)JQX0 z*$q1f$IH53+mB-odH_}MJVqMv7?z>}0?x;t(S62YMmyfz#Mdg5t6gSb-<=KLf zRXxB}wNJEG?*=48wdhl09;@)lv& ziK=l{gA1mGBXGES5vFzq)3?X&-Jiff&B<`%=rxIGmrNRuhwn{N3{!riQgAHp=@IJX z!AHSMrD4AsD>cXOf*yQeXJ7}zkKYwhD|hhd+MqJ5fdDp^RgZ)XjY+&QWIR|eUr zT`Id4w3_o2CC6aYAsm-^q)Y@E^sn~CKtflCJSYTV1I=Do`R=p|Qb7#hKEn#BrT6zKQTY12 z-FixQO_nL~(_x9kgeHFPx>PohlanPifAPayxAr#5g&^BgyzrzDf&N4>T)I^78+s>4 z)TFrxYPAtij9vjGt8T}6_=yfAGy_8TJ#fEs(W0Acq$OgNG%w;Yz9`4cpVp7Pi$|at zLGt($21esN@z3)DO%Mhs2XUfe8Yw?gT=YX-*%7qn1A^6yQB}5*FWo^n{A5_;>yP%~ z`{?Z1ZbgsFQK*d#f8|AK&qS}}#*a;zC)Op*7^xPOXbEX@Igf3tWv(=KGCfYE-%+!y2T| zAB^CbojS4jg^W8DDowN*`RDHh$^L~frpXTVu`c-kj|&NVLW`ly(l(C_Yd=#nQ-4^CF2j6tFf%HzhHr;FA>;hlcsc)j{{ozb z5mP*@nGhP(%aMmx_|nd3`KB!q!h~bBa0Vno8V%IKiZ5@eNtL4;JPq6$e@%#)y0^@y z;x?Zl){F9{^9>MoK)mKBl?vT^Tos_l&M**QVL*b)lUj0W4QOJK77^f)?1~kYLK`O2 z*j0`;0gTeNa^B?8+Y|C9-zDK%j1W){q*?B!ULL2wJ^mQ92fnqf!#G902C%#889XZ^ zV=>TsE7zXXr@FPAGuYlkd`1Zr;y9V#2F&F}aIWCfzC4g@dJ}Y?kr6Pgm({@5 zLN%)cTU^;R{3e!HJ_Y~K@I>L!Q%YhWF$wS;JqlKYm*|U~89CtwCfv+pyCyK&R*lix z8LMP6tO=0Etu9@j7(G$g@85m%${s~Ah8i4(VX^KQj0r?bR!hL(@xY=3O;PvB19DYJ z3ykIAZURcMy7)D7<A@3j}xh>cc!T{+=Zl78jhm*YTCQ0 z3d>O-PVoDP_2Eguq*Plgj?GaDEFkc~zRr!y*=G&8#zvL}Z-AgAZ%1}0q#2eY^hXtl zMG}c|s-GNYS$0c+OLB4@Y2drr8LnfIfQ|~+9$1ALTps7d>EQbTmj1kPpK&|D#sKLZ z3OWy#tj#mrfjSVG{e@EYa(dVdZq&L`#@fs3{Xk%VLlGXH$`xa&vKxX%yGsr>R>B5A zeFL!&1RMS-Zh$A45_^ojv8dsYTwF3+7h3S!`p0xDuGFn>z!9)14uBQB!IOnK(Z=Ji zpBa@yao{;Dou~w#xgCPom+iwM)-$94@c!6k&^;mFWN8(WDY0 zO+PQGGPn!upi={$b)wAVrp3|;s!i?rj)$mrF@cF35y28Q2T4EXa7!ZzxDYUl^zZAI z!fDTEKd1)=PAKCX^?%z z@2#ls!9iDXLLpG}Y;ZdQkan)!oK%er=UktCUNSie=(@yDVj_*21GH7;h5<~qlZviG z;26?65$5EP&YVcUaFB5(!uQP4g&vv6ba-QtGIf+kZr>}MhBuTIA}Gei7B(u0G1PUT`SQFp4eMB5loiFN7khuOv#%60MY2vE^MKTC>9@+( zE{)1J(Sv?_iAzL42r2foE9D9=CEP?Fxr)VMaVvPgk2xVa)|kJpQDBBB2v1hK^bT>3 z0{3O2N9cHU+`Tpqwjvh22+c-{!5p_wkhrk0UtjLPtO_#5(#GaUGzycfFnxy7cGCX-fuiwQHIJTt*4*&5ym^Kgv3z>%0JDXHnBDf zLeVg<0?ZqxORE(T;M(0ONCuCdNBzv-Vp+f-`gZ}{mAhI+JjBzF(eEzSjK}-9 zu@XOXyQOr9iEI35L(tRERwfLNivt`jbgMsNkEmH^v}48fo_nv7MRLhH^COXjM3Xw9*N zDYrfy%X7xWxy-&7y_D2m8C>j#Vl2SNZ;xmJ`mZ7BxRl&2mZ$BZ?+9N%i!kf5_SZZ5 zYpg7Xj7skjI=uaM=*7y*j@$g@^F(W6&X@B;kl=^sbNw$F)UwTN>0Qq%OhxyCcYiGZ zY5)Hi&g!Il<@IU?=}P;7Ha-Tuh+l_D!M)+*Fp6x~V~FNcOwOgh%s9KbkZU_4YK{@6v*6FE{q#W2l=js9mHqJo=u)>OZm<(s zYal5Vp?~Y|PX3B8N1_;Ul-t=!B>E!xn1WBje_}Ifea>kuxEvRkKjVPxGa)$vfWMG5 zQ1h55+7-}YiMOxRl-~{3DHTGrbpCho+Y3zJ5QqMtd1H zj*2QDan5Ivw|yp#275hhJ1ohU+&JfUR$u!J9hZ?~$Se9N4fuEw5k@Yn(&T)0OQHK- zInH+E=<<7q3d~KL87(@P_t7gD+%NEoX6z0Jw8{V_|mI5a(oa zLe@WnO4=l-)Y9)|6vJ>xskDLSCe!HS@(COBI{K$PkfAml2eHGgd)Z@ z{RXAC*iWF|@=avH9@S{BjqVWPTNBw%GXy=}g_Mh{FZDPwc)|pa4&oD5r9NN43j5P* z5JV5HblpicHOdV+qP}nwr$&8wz_Ov zUAC*swr%V5;M;Kqd+>idPRD!RJ<4fjWJbnX&${pH8r3*3Zvd)kO$+4sdg)RGVpu3E z)O$iWYV35B{}{$nRa515c#{udG5Fy0x2HkJ%&%VLJL1WB5yP0bUwhSqR-bZT(pFN% zWdcTrup9siE0cR*fIfAqzm3%dv2)~@6u~bBh(*tvb;jG|F%>$S*e~j?a}9|f36zEc zW@S{Xd!zRk0Lh;oNyXG|D5hQ0_fXc1*s9^#b5_Jsi^m-&L1r|7JTkDC+mnk|$f_^U zNPN_j;Z=7x3Fy+c%S@2r-OPdity(fO?L6CaLOEDQVJsb`M!|Eer9RRKLi%f4tdu6e zKOmJ{-*qYZ;ifpT5zV2s=1%cz_6c<~K6lUWKkIjJr8X{Gud;6gTQ+SBn5LN*w^YpU z9C?ud-b6Ri8N#9$-luDQ>AYgo2uW^N_%^LtZ1&g4Vu$pBoO(a)k1rdvCH}?oNUtGO z2Du*YehWH}XycMmy+9yMWRmde9QA&?#jlNuBM1ez=2yUHrdp8(GdSpuF1tPH1Q$4) zd1VRs_vVy3@B-D~oVM8J3AyytiF7(s$DhKpxnlG46xxAxAd+w~j&Forjw6{suc{4i zeH8C&Z;Qy|4&IQ5A|OP@x9UVrLnigpXYlT8r$KKs&)lcvwu%~k3vssUBVjxt|9MU@ zmA$qSu}*EAp_t}pM>FrpDVxYGBCs?>#mMmB@7y`}!=T*Gy zw$QU3cNqhpd#Mq(hKb4Fid&znD{YKQn(-u0%Wm0yO`FS=9{5_ZEN0vvPhJ?m{kLRd zgn*IVou|sVn)TiHEwg-B#iN17RyR$49aYk$(^jeJM#1`aU*nh+*4UC8L0z(NqeGOT zweNQMI%=xW3)Vn3m3_FaSXbS)ra|_yR>Ae-1ui3kl zl&C6JW`JMg`$<{IFz23@n>(zzA!-7G=-V?LvFQ`e2B*jRFkJ`@0R3;qU00M<%D)27 zCt(c$T6gRUzU5aC$VOzdbKn!t<(*`Qk7vzARQp46r&Q)qo=kT1Wx7$#|8t)pnxjOe z1B-fsI&&P(ycKT7zU1>8TSf?ft@C5o8})MSimd#4wbN zgba0Mi#hraht-}?%kQqYzgB!~^ofhyb;8udKr#--;M@|e_m7)^xe&67q2PQsY(#26 zor~O%_{XE{u5;TRfQTWj8q6uSvZ6MZZK`xotk{lE@+zHbwEmBhP>pD+B-+btoN0i56%&X>P+Qa{fJ_p*$1$# z$$ka=A>m6aFahX(kFVsu-o57uTkB<_akX@D@Yk}ivk6@vstGdmk>80Z(b%v(oKZcH zlN}Yc6Km>5G1XFpN%W5Z03-vW_5zsU8l92DwaXBy`a%|KjmE7^N6`g92H;Cy zWE_Kfh3m4fP={$L%1KqhYUWqtYeGo$?=jyO%hy+Dv0Q|9Gt;)b?u6a`p=IG@>sKHXFH|K*Z^!|f&wZeAU20CQAEZxVe0Fcoz5APYAXNd zDiiAF%zxWUILM#EdZwKz^uJwQ{hJ*1-WO3sEsO+PKX@=RV?)(l?i!1{^4l!dp~M!Z`{EJ410`3^S7` z3A&P_`lV^N5!nwP;8)}R)b!mA$1x8B=7rs2=>iRzhYx8fN?<@Z&K6lRsRQ4(^gq>07>Mf*Q~u$l0lL`ZrCWIG8$7?9J2R=|ut6)9!*HJm zQMun`H0Gb|c*iBzmg$#0dmFofBkJF5D0-I`WLyx~?uKCK#*0Y;M0m7SF&YAL&)l~e zHbsl@eY&e3J8sYtQSc2y*ClG0?}V#1Ajd~W-&)AI(o6Jv8TmK;b4rqL+ddVLA6BiE zsyH>$z6^q-C@n|cx(PsA;DbvVjGUHy{gU(!EEMMM0PDri)=3K1V-IALCCn`ZbUBtV zM%b%8jxs^%sF^mukcRPI@ZHmDMmS0Gem)EiPpG@=+hx!Kt{I%QQF{c1W4lRYD?>S; z48Kjqv)@K;I-fkcNU|~&n~~J(5zYN^fz}EW#}V;$O%#m6HL(3vcGyTsy&}CQI3?-_ zootuCSUHWuOFe#05OMa_AwJ}c5<_x*nX1!dQ2#CdMMGKCd|ZYW2o#PC{o=$rdq>#H zNv_$RpHTvF6Fy3UifBB|Q)~j3IE0;{nf>Sp)+7Qzy(r025BhW9e!di=*XT=en$G@c zp4V~0Xn$6csa9H9%;3em#8fQ77<;KBpBHyQWuOb{8fbAJ;qn-K4Bgp`Q-q_&n%K7w zX%4BtrPJ{K+iHomF25h7!Bs)%eH7imXR2uta-(aUWeS+xVx~)QEfWtvrfj`WE81ov}Z8^ z=nj#=F>-nw+JK@&gZYvGJ}?K(iu~z zZZinE6K0@+v4?paZxC~Nf;=otBDAwoRQ`rc)nX9RqiOuGl`2ixirM)F zZ^k#8lOyCz313lM5F~l~9ht*41QJsJ6<0A4Vh3 z2+N{*ctubU1kH6)p{Sgl*5s@AiWXGLKPxqw_DkZH;ks8|aRnqT`JLB9i8HhgfFWF6 z7ib1^NY|AWjElOl+buEa%8rh>h)5Z=LqPhcZsr_^$x^L>bH3O4)(w+p^CsZoigej4A_d$`Mst4w|WU8rd3)R zK2kMj9YKMNWFsLh1Suyy)2ks%QgoQcXzAu8thKb$0kr8HL64*e zt)j*gFe{bM?L$T6$;$`MSr37u*#{V)N;4O(`N`i$cS#5Hw{%zTh}2rzI?uk+qk^B4 z<&?6;2VFSOQ%^Y%zwm1zb;1xc%9zXmL21BN`B$yaB2XSFnO12?3tft2vboscqt8;~ zWzofQW!yoF0}Lh*1kA`ggbeW_K>E;C%~JdSKJ(` z79*8nbeuThscqGYgD;CigO=&M+%-zmdLT@oxvHv0-0GSHqIC&=Qo~D!aazy-flZPN zk1Eki9z;NA2LM$rTUq@D&GLqbAnnuA%w&c3cWJws;UXB~zQzJif& zKA-7Fw58QQ)l1-Lp1-4IG;}o_Z~WtK%Iir6ccdDCkupnIe%&p4A`muir3_@sJj_g?%JOx7vOVPI4fdM$bK+#idQ9PGj z5_E#Vm8(HJEl=r=Y##pN6BK7y)&q9Tc$Gy=YVm>^I~1Ll{+^1Pb)R{Mt4Nqa>xnxK z%?IRKIFm#_T@1z#>b_dbxk4`|9u9)HNw0$prg(_5v;{(vpKFh9BKqaWH~2_FT(J>= z9GP~YiTcx0vvH%<4g$!(B}R%yj%_n6RL?$8w^%UGjo;pfm98$FWXOFxVFhfNFdzIA z)XwoEQr!7@Mf$w;C4|fSIMqPls9T&?x(C$vF?v5zsvTfp3#nP%UWC&!aVEG5o&=hW zJ@h!_OcK!6n?O9esVaC7W6F8+Ha8x!DgBiS+fq4^Z;;OFgc~_&b z8T*8z_r}w>{p0dEu9woBw~} zD*U(n3!u(Mp6bnAoIo;LUe`o$s=Jdwm19=$b84f$*&z5ENH8Z;!6LavI(8?dsu`1m z^hqc2+(PApD?Tk{WTU8JXaH%%ERqE8C)r;Q)_i_&jE<>|!DHz!cfT$uc97dx>%qFN zKv8|S=g-PO&A{`%tb(iTuW#tgWzDP(15>KU62SE{w%?#WU52x{>sICSw6B^d#)tip zDj}Sa@G#+5T>&83qsOWnf-glE;^sqL97%uuj(sjddm`%bYznOkjsz!Jhpa!kVQa;~ zWi~&YT~z1>5=$;vhP0ArF|^F!h6KC%!aL0gR2jxe#eA1H2G_URaM|+h4Le+xqKab; ztpZF*27dH#<-M1v#96Y)4Jb5#Qc9dC8oG$Y5|>Sj%L3l+=Y1Z#^!4>ETp+tQ_Cs_= z)erV^ftxb0%0i?fOCI6@V z3k#|E<*70}>92PdEgvRmE6rhXmUgk3I)hx3X)d6}sNmelK-m3YyqCFiPv2Re4#YXr{4IfGNOO}+M`6F;5+{&W}J zFuM4N79s7a!j;iMA7_KO!Ikc_AeaBdb8=1DYbEL7IMq*0NvoZnQ9Y!FaEM{BKB-$< zeSgt9;-l(+Up&f(+zOT35aJ{rl10q>tgvvHh-Zw<@Z#auFi;?8x}wnjwX1@ad*+_EUv z0i`pXFwCP50e&GFM=Xl)BZWs;RfZ!o2_HTfJ20}!?j8I;Gbd&MzP*%tYjHkC*LG0t zNgHrDLZWi@`UXB@in`tV&FXPez#JB3@2-Em%dXbN6;z2qfTh!%{eZRXYV$l{t5*+q z5XYxJ=w@(QT=a1l8%5{Id3zM#=3y4`tav^<;KD553?sF)jknr|7+`m5p<2#%LBCmk z59>BfxAoQ5(paQR-x(bB6|~g%ik*emooFsWXo=PB0shc9lLw!c_jue%DyO~Sb*H)E zbaXJg?rcfn!NH3&S4cU_>ba_qwy(m>zM(G9sNM*Pt|gmUjqUDfpfMUv(LPZCG`4>+!WLAVK@p84l><4 zNGH=fZAhe6S4QM6eeo_x`?;r zO|@er#ml|8bn)u|mFEemqxmLA)GOgIBVHhxC&x!;>~})151ptf2&O9_4Qnuk!!&Sn znSq|@lDF`VBWsK*7j%p}5xQy9t!E5OmCyOE}R&nC} zxx*x~i`;F-k)d)sPVjT_Umq)ou+s9EmL7(`J)vfVU>Uk2t1KSlO44nMCpD0c%Tf#q z@se}np98F4E@Yv5fjZPS4|-r6W$>7dNGKI?Q2-}1D2VhCv}8$5fDxMU7aZv7>+ijM zT4p-@QvNB{nvpE;DQ~q8;OZ|gZS!2NaP|n?`FfudR}>Fn&6P|>DAJQBdF{4 zoD574H}_m=`X>XyGnnQ zQPOUl225nle2ub0X4 z`RA0@r<)w|)}z4^(OSJEz1HR#(iJgkI^Rjc=P?jjD*&>nEx{{41Bpd`3n~ckC14G- zD|kMS9E(3?bry(zU0>3MTDa24`IYwq9}KfqsOpC3q|3FZNON!=XF{K&T+LX;xh9%n zQy;9i=<^^|^tKKf#lg$>|KcJQn;;Sm3{+0Pv6L!T-==GkKvMD}8l}t_?R6SF{$*%~ zzZpfW=TRaSMWcGVr(TMbnDe*z7fKho*O0CSFx?HWij0n8n!?u9{kXGo1LX8`=H+0o z0_4FZU>c7QjIgB3U_t>uP2A`A6EQ`wwi~|V&Mkq(H5uoz>WfqYzQ#N=!MIEPfj?Wa zW?4~y1scdv#@i+}fSPR_jj8N^1f_(zc!9W}?^ZddB;Y2fVIMfu-}!_@?UywNYjE~d zU$p8oTN@1t#gzmm!rP-Fbrc~blvtB-25Iz$S-sak=oe;LNJn>^(dK#&AwePEg8 z`?u?=JF9%t3%8n{h~eeLDb*Yln*a2hI|A*_3Fji*2lc{~amKSxtJtEnchGyvha8!q@(xnbFf?Y_1 zab$(ZmDMIV!Vty&7y_~)3ui>(;R$-~Q$xZ2F%X1gB`@QkKEu#_pa|f~H&5%vD{`Rp zOn@pFk%HaQ-M^K;;ON{v$lEaK1DW+XH;2Y`S|c9fF|iwxYPqq*WaQ79AXySrF*4w@ zSgOJr!QFZCFBB;V$3MTi)Cy-D3mQSLTgA}9I-Tm89GJ0X`w<@X!JfE|5=O{PJ~|sU zUn*dIOCGc8@T^hoOI<2HapK^mahu9*K{^+vy3Wx@-8nWm;e^0E=$>bCqnsjv&Qbxn z#0J)h)wZl->v1TFkAhDm2SE4K-n@M{3D1X7VFax*1o!dX_PDTCUtKA4HuiZShWMbz z?w2%diiLf4dJ@g#!v1Zgh8tyJtszMA)0x~s^>1-jEA}sWXUJm}kv`9jpK&r;bBGoj z_ycQYeq_`WjXAnM4_=&3vfYK%>>c@Qt7hO55y4`s{3)L$UJ`HYx*CFaiCBQOF^~s9 zp?Ws*aO3Oz4%~vU(8SO~6hJo1;K1Wyttara0eQ?iJd3nhGMK~g`cj|8@gH1IkOGF* zvP6lkyw1u%-L+!l5NomJC5mc==CN0OG+G4dGO0^@w*4{PbL8b4{j`GucyU0xG=m%@?+EIsFtot>Yp$mCq z@!1c^%b=8`jC0wm9>Z42+uYO{w#Xsn(mxVEBG<1ZRU4e$WTS2bqjcFO_r!|3vGi0o z?c$7Z^Zzz~ksn_+SX6Ud0WZdlEDe6*q4T{qMdux14_+wTlrh(*988M{ZkC!NyoD?6 zO1HgIjP5+OPeIoC*5$;6bp~JQw3km_yG^^*?Xh6&jH(0zvo%mZkc1|p1Fo&TWEv_i z@=x`AXr9>1DH5S&GrmqfpNKEqN+Bw=lC2b~@>}L9vT!4 z)N64UfLbfLr$g|pJP;`4j5>OW3u7fr3Hy`K&^G86hLS~#rvPMFmHIo69&(|QksI|V zoJw5w!|uIUU#2BFToDP1lH}e46pg@>$~GJpK`RyDShm)sExjg{XdBN^+r?DEva^N2 z7F8?XIt&pcjr{!@z1&J%ACJDvz;|$xH`XrI8Kn!~*4J=H3uAO|Su8^4)BXs!Pi7^( zX6+q=qXJl7osOQuz8gF+Mi31Q0tv1uHi%(loqUyXFn^OCPX3XI`{g3wUw2Ss@eU3y z(RdEEETj$Qmwf%gzzXhC>GA*-kC%b3&rn@yQSM{px+C zF+H~PLDc#w7tT~G%JuN2BQt3NvkOOJ$J6X@^ZtMu=aoo5c~=8>?gILdpTuO_%wkPc z1q#aPf9io9`mex)@09$9u~+sPC2>K<}gS4le)GC z_TGzmMzCR74R9X`$UV@#YnljE#3z#aktzpI~8BhO*(}|^AZu|P5#x^&Y}nMJ9LCaZMSkV_n*pNK>taixF^T$ zeoKYJKz7_9TBMDllP0|G@ugJRX@vq12K0^C`6MB^Rf@%KRMZy$ZmbchO4em^?r0^S zM2dmfG`LFpc@9HSQ{_r3G8@srk_#FmcTWQ3Y%t&D(JSg$g-H5g86h{@ADmNeZ0Ym# z@G!Qc{n{=RE^$Ngv1$q3pEAN08SOJE_B)?`-|bZYDXe+MP_u1>Oz^`g1s=QqwZW^C zAM|WeFOo6wp+kgj_77Vb^_ikiOy6al)=wQs5v-%I$dXsBsgsiZI=4K=_RtuMM3B97 zu}S>!=50FmthHFt*3NDRjP*-!&?tIZ4j|jqqxMV!BJo<(^+%PorhzgWB`32%u)1Sc zMI|7~!1$ z>Oa*>7?|jKX-F#t)MKPR7zqMs^aI=9ic_lxJSYmb z&Qq#8agN1;=F8-POGV?1a4}5&zAJDPvvD@|X2jYpa?Z3G%m50d>OR+jRBT|@>><3t zCFEut86Fh5g4IN1=Sl*PofSX}jxdJ;k629hII2}Mc+S9ccG~@eaK~tU2fS5yi0_9= ze0kn>O;hq}x4}ei;57`Ty1(V+T%^kEap7=X#YL45GDSm16NE|8)bBK@ z6`s|Mm&<<226pv8+2m^si>6sZn68RYjvbfc?Pg!zZZ$xRrJBHQbBR-+AgACi!H=mq>e1p8Vy}{yJTb*MzjV5cx?Pc>4}mw(V)TT{SqG zh?%tOsK^8)a1=I9N0_@95Qfmn0RVaRFg+GVGT%|23#wYpLo?RQfLo1=-?ztKDnC2Y z|8MCflxyVI7m*W#pFKWMWm7Io)2b)>5C;}?!Xl^v&Vp0Z3#`?!;qdogjV@{cOXiaj z=@L3SsOsb=n{UR3K^$tulXUA%_^+TSJ>w|z6Oko#kl^6Kwpe{n9VM7kJWE@u#?Xc| zOVK^~avB<`2r9 zJyUVF{7?I!hC^z_hvX~}f)lD|I3$cOoM4SU*v&w-@B8gpkrvT(5x=n+qVN;RzvnEL z&`=FW^dXUI_JgXOiqbKus$RE1Z&(%d)3b25f#km*G)@dIf{-^jCj5nO8Gc=}WW64?DL#^v8IhM&39HmY0*t*EK+p}rN zvckOc!baP2^!D^E1G1|M`q*(FIDL28Fzh~AYzki|;RRDQuL8PxY0`=WBrJ;5^cRJ; zrD0?Hi%yNk4f^dy)KufT)?A!Hs)M6q*e5AoAED%l*5UD8b&t1EwL8!qo7HFjM5#s) zO=XX4b*5eXycSXlNT}~#kSmo%K3>>_e~W*i;y8NxM`IA{Z)qRKu&?(g=UI#s*fz|` z#c4~*!RhBn>4S1;@a92j$2P|RU2f{SEU^KoGoFoqcy1^y0gKLbo;SDgma$RSA~~>d z_mTvw#34;@Sc0i5u$r7Yhx>x4hVX8c!#Sty9rhf#Lx|YDDJtuefA`34k5#!96(#>f zlkCx;`8&6^IxD6l)ij2++P{7BQZ$|Ux5j-$hBsBkf6Kp!T13;Y9IDVmNO}4y08?Q? zc2DC0&B@Xt06hWSm-!{I6gukSJSWZ}Mb#$c*1i$Do_l4dcmXOPsxbUrtz=X6PjMk3 zm!9XqX6Xp0e&Nv>)MmN|=Fli5)u~GE^4q?o;azYuJho!eP?i0ej~PQL%JM(2iEAE~ zXl1qpu+csJp6+G(TmBIY!N#Ing=Si}oZrYX>iE1oYIjqvaA4c;w6bBs893E{r)NaC%getAv=E&4%qV7h!8~?iXm(f(Iv{vAcUeIC>gSejizv4Xq6T@a1yM9R zvIY@i7;ONjFv^G-ELwooTmh$%uq0qsQTZQbg8kmPYAL#MM*vF6qq!aq#K1w4F{n6Y ze<*KLi?V@`%5EtQ@ja6OJf>Uv+I4ve2U&yq$8Vg*#tp+#d!us7w{ZDDhKmL53SUbZ zY87}a#kK-`1)c)zcLDJc8~%FWTrlD9=Mfg+vr;Kcy9#uDJ=_7yEA7U{=%RIdnXD0X zU41=EifgHod!61b#7C2=1Tq0K@`)5?>b(HIoXdsvg)qI6y`BIWkg#e+f{EZ4yr5ab*H0dvpesD83Xxt@x;)-tLuCr?wn zqoe+xIXo=53dgkh8&BNHHu$KBdwi=k<9VU<`1!>iqR9wW^7;w*FW$85DlaY`M_#JI z(s4v<#2}2?6$-oMf25R6=J>30t^An9JULqWf|Ks^OA# zHR2HM8IvuKQ3-Lt^1Ztp^omXe!UeFQaw2|&0D>1q8HAH)o%$<26%<~9Iv;Ti_Diy5 z?5@D}vX#HEYq2NOAjx7woP4%6Ibl|TMC*LsgpIQz_AX8>T+z(G;&7k>?d-FsGGq{z zpkkH-^Vy{SUKZ|FSF@j-bqf$JBjON(KWevuJTT=6kp)x$B*UaCz2yp%!jc303mPPMpjkbTEOnwh1~a1w=h6}xlvrit zL|Sa&ph#@_OWLxIY6jBHSO~w;1F`{+iYxO5z%ntpb(05YB+Ks}8}`Th!k97lY(u5( znh6DtH>PLn|9VgVxx%L_Sdm}%tQQkLh`ThNOp|5`#*TGx->NLh>Pq0|Q+^AcPEUH_ zqZk7zY9>6<$0rX7pFCn4_g(vKs|5%#mpmI0b<$f*1lrpf#$1ebT3i7e+6`-RVm6~q z81d)czo>?|H^RVE5dIR+lHEsz`FIApQ`n#G+Al?{x_C~IoK}$=rt0dbdJ`Zw7Rpq*7?=d>}Yd_bSkYe<@KOttuxM69o zqr|SImG%eo^U}@@1!n|fImOYln_4z7jHCsU_%}&?LCySSJ=`OWLi3o6Rs+*}ylSHs z`2OL)C4T|u?h(5Cj^m~r(~67tt0be$OV(#C(cLog#*O$6!Ml$j-OE-GHur37c6C(^ zrkphmRyQd?vgkxZy5FG2N3M)J#E@xL58hsG5k;CbKKMo^ccc|DO_u=9W9qbmql?;^ zWTN0c5Kk-r_2)rLKw$WB?*d{lkS37#+>~EMfVKO6>dE;NfWY>32{eInWepowzuOY-Us>EaupWOIKPgfa%PaMzPimy%;EVb6ObAClx(F0=h4NY%Lq zF{Sue&1MQRg-Csi5y0euy0#wU(hR^2LnhUA`Q`iWb;(xtQX?4=)8F4Q^@5@V$C*2Y zJxSt5GBD`h-r+y!xgGDyC@yG#nnjo2dmxWpmYkIQ3oZRvCzlk#5_$%_Xhv)83v0I9 z5-b=4Gd=BH@`Bj!k9=s5?zV8@+4}u}c%4;B-Na>p6W1woTIEu(q$=l4724a;cDH<mMBa>!*O}ibUv-YFgaSx- zp7)Z?ZkONwz4;>@*&Rc@N{)bzF{=`D?jVU^@TCzi0hEacW*z15^3t=!@eg_a6?%%Vyc z*INPE_gWvVjKINjn@tE!)>^OJLc$*q0S!@FdPScCQC;w ziifR$?S1)~Dt5dRW4i(1R*(m?$M0&1qVVBIY!@BXcD_pUW9ufXfw={=QJwtqve^>n zP*$Rs+#IccinBTbrZ!~&{LS@_l3;#&d%qS-Ym>xAhXc%B#d_md#~=#^XbzgML%Spn zm!XK&*DFso`oXc4q+xoQ|n_Dapya*J~P|p=>dA z=z`6DC>ZtuMG!LKrV2JX&ScsmGZ?enmm34H!p^=o4I^y=vXG(>!f=G%RC-W4aZs_` z1%4~}1sCrq2Id?^n@PBur`^_ltnr3@AZ>puMDmk~$}Rr7ap+i6fCp7~3D5HJeeWf& zkd{WWZrWrdnv# zm*>TK2z%*$<*7IaXhE_3VBY=E8|ySpFGySfj|x!nSAAiN)iPw4(7fqw1q(>eFLF)V z_BI`7!C6p6rW9!g(Lsa*@>$U^i5@RlC{U9|hn zPr#1EU9P#l_1odHS=J7ZEQ!5}YOuoKdF!`E<7t4OR%sZR{ z-7HBvbUjSk>8e@Mu->`G1kLquGJ~5muufqFUp!38B4|c*1>yL<@D6Dl(QB0>1$O zyZl}Sy#O4y&7VGBQ^BgWFvd`{5wdL@K+P%1X2)RWODO0owVu&`5g=EvwZYvUn_USX z@|r-i)52g%lH1u^(xih>@taB)g@d{b0KVvxaFsFP_yKBVupEK&6seuxF;zVCZ{c5f zAObUlVaDg9YN#gubwYZAlI4rHBz!aU$ zB%rM%@Ta;i} z8EwddmSsY5rxKfep(v`=O`qH9i|c5+E#F1ic=WLFwIN}$0%JE>l#^Dz>)d&&MBFXF zu|BGE+eTq*DV;#J1@L~U)Kj+BGNH%$@21z-<1$3G0;(Bt`6~ZHm-%VGP|t)_x1tcm z#2(HP3>Y_#L3OY4xA+%LHUx(#r7xR3BnqTlt*h_=i4&2m7}2mpJV-9iN;`(3A^{4K zQ7qjhaW#4;fzWLT-P9f3;PDcw*oQtS8R}PHvvUJoVO0;f+gkt<`Sda2w0Sx_6=X<7 z8`5Iq1`3U_D1ZsBXL6r~$Q++o^L*F0GSSl2uJwXq!Lrk@#ZREXY1Mr9$v(3JXXoVl zze^U2+flk^Fqm3yh9ZL4cZf#+TmFS5@EECwzm-~7`(g!L3yP1iVEwh75+@SG4<+-JQw{WlAUVdqcL-3Om z{R)+dhtk8`rx4s7DnJCjZzQ5b2kxmWVzw#$Qp$qI3~&4zOc{5w3YK@qM%_h!NPhTR z{*m9{ZL%;6R_L$wa;n&b(Hb-9PZI{d9mZ-a;Xe$Xa_;^PXZ3&QUzjg=-Lf`GgYZOs zvNRiTr!HzmD$P1x+&bDvEGBPWt!EEX)z{t-hw1Q9c(oe-Rtxq^x@lmRw06 zFW^P=Hrc7*uA8p}6`1tbZ#jEH^D)7;phm}a?an(y1jaH)pzPPokRlMfStqNFy0}?+ zhF>;S9UCP$T5R6AFIW8jQglt!^z^QtfV5*odYPu{-BJ@!Ct==15o~)BRSr{V6l*6p z9(l3wN7P_>Ire!e?Zj}H*WfWKH8{-H<8~?bH?bdkgXxt%#QIN0^ zksBPqb+fTpAz~a%yGWiGm;3!@?hlj`P`Yp$tPs}L(S2$*r9?tqhf6YJ0<%xU&?j0 zHSmjsRhD>a4SaD}^ku$1lEPmbKD}tG zFf*Ab(KT(^?;^@9(f+VvaHQZ>s()XLiSBSB&RnCz@=@{dGUDIjU!*&~RzRaX)9XcL>!BQ^ zlKb6FRy7oVT|y;(WxByH+o6n)SVAPYcVppu3?(CYRuwGEKXfbHGVP~r9R^V?d5h#~ zC#LMW>HV1+PTNvu?fC!nvnilQ2tX;Yg^LT~6!rd4tDj=;A`Sr>0L?e{0X5@>)&D3> z)LyL34p}KwlplS#@NR%=r?J~;eH6ip5y+IzOu5^N*7l;+X`3~ogp+@-iDt?KDDNpn}D4QGz zY7QX&-7{lER`Rxh`_9fL@`*cdh?Q0v$NiVddj=iy?qOq?bKS69KZUjr)>4aHJU$e& z%i|)gvx^lU7bWm$SjE7-o`Kp8JjrAMN#MZ1Th~|1Q)ik9Y3=ix`Qy)&a;FLvRDgI) z>|EpGjFf8$*K0nR1NjLV@IQ+u`O5B7kdAqsj2bZGx_!Auu7cyQq9%pAR?Dm0=36`f z=wxe2^q&9L%UQyhFkR!GrjTHp-=uOh~)jhVq1H1d5YzKgM*Gbc~M@{kDq8}JRH!hR`< zN!53om6sE?6Y&_tk$!UIW*?9LgW)`JlX2D6uEm zkhjOJ*SJ18E@~bCnc3OOiGq&nnO$(XmB5X8IoIIW2~w!sXKjjIGJFz~(DC*7bld86 z^DSBFyWK>(7+!YV?~~W!H|Zf$VdODT&wo1H?{!Q2O;A~02L3+9g-aL+I5@A}ohmIb zUEZ8=&+8E-5rA?D}emWsnjj+%!d zs;#xatxDO+`%va^;>7IJ;L3x2^-DhzDK?@Fxm4*?4)2u8f&z6)z@o0r36FgFF!lykc<8)|Hy2>t7U$Mv8ABBe7aS`lyU(bnVcj)9Vo}cgibnwk>tV3 zpEHPtAM|l5o904zR!to!A1dwHL6(gD_1;v_qvr&+!YpLLo>5u`(8Y6u_*`>f?KE+| zL4@%{HR21e4MPnub-lr_ZAR%zVCqIQR1++Rb1Rcj&M*r*YmFT6M85zbA$U$KUyxAN z)}2M^&2qGY-7embr+aSg#r>`;+BndWa@8(yJEo5>WfEMY_pY~|<2B*45r8qKb>n%e zPa!I?X-@hu(w9GxfaVytfPnmfY^uPdR>X@;fIKM@ z;IyacJAGpW78An~?KCZ$lXoX!Nql%`nksMCit@T+QrCOI;#06cI5b4xvIM_-pdKl9 z(n$Qj^pA8<5RRh9xJLTfZoiu@FGRZRA(DVU;$AU+r#G_3YQ|F&)jQA@S|AUy1#?g` zVF;AaZpM`6h{P_pzp{GprmCMm=%gg$ej>=`THO_U?Obeleb_K4<=*EQ&?FhAOF;fx zxRA&AeAB4mXOD0EhJ|bw0yL$YxHU4LMuC41c2sv zdYJeC=^y5zGwb0| zd}9CT8Hr(}jOBvc@gqKcV2QaN^&=eekma%N-&r>U>qvV2g5gj1DTv$vos9YSpm;Nb zb`?`1VA7SMc<>$oA4g+rh}szU;V469Z=zAVfFp`4ao+6wCDMxr0Y1N=Oplk7mx^1z2%l+*H zcvo5>Bt_pr_#4>4;3eLqfRU`yKp6~60dy#n5qI3LaTxy(ckd7+%C@%amTlX%ZQHi( znq_O2ZQJH7+qP}nysNR#y^Y)W_la1s&fce$-HaTO89Bc3zR#1CjAVQ_;!tZF3H{Zt z#S#u|16;9MtViBQ<9OZck)|%}WmIzoYA2?#yrzUQmGeSa1JXs1L^5hzqns%IH`U9qe8pi!cjMJ8VqsI z+1ie3REFZqArwY>s-A|NS`8LEm8;gBL>qD8_J7LB{O{&3(5(zq*<`m_33a`Bg~!uN zSk=2J(iN`fDMWk+VtO(%ig(Ry?gJsZgrIkM(hrx!F{T6;^ha&XTw9}sAUY5U-8V;s zvtFTIJZd|6V7z{zXa8cQ@9Yve90x8c!2Y;VwJvf>}vFdj{tgCNX#$5;44%!Vl79zcjT|1>yhFhhXbT|Sa7bX zP)73jD1&v*BlSu&UN0rat)H3pYzYb#=X;bKofKLZG-VUY?#~#|^^Rt;Rm;Mi@ErF5 zZA;0u`aQMxM(qPm+t>mPl5v$v&B(6;yK)49_vk(&OFA8d0kNPnqq}q{NO{`v*cm%6 zW^zt6&cjLjS9PyUh|+rtQE80Y;`n-m%)gIr6~RJsqpFbV&El|DsJOUiXs3Up#!aWq zX^wt#GyrM^y)>sKx8r`Zrr{Om6U7myDG2LTpOWijzpUR{K6$IVK8_5%m%a&rTMWzQ z(C!ib;x4Sa{>e>FsBgNLx{&Z9nw2?s{+3#X&(UeU(QDc!`O->)-&zRt%`lDuiTg^2G#3Ppq#n4Co_%p>P;b9-Bf8%Eu9 z7MYh9`}XX)yEB4KrwZb3QEJqe1K&|+ouffv?x56%eh%mt@S687)Oc@Z>e#Qz0{s(p zC3Mj=Bx}WW2=dYjOg@}hCzI2euIfjOG%BM->c5MBfya&cOWI)HqMU&&B6Xtc*DO}m zSS(lo*C;!qSZ)IDxSHBr0_SMpz_&TXs<9P2D_5bFxC<7_6_u_b!KJR@c!r-*?TU%p ztvK29MM(Q0_OTB1HEXdhkTVxyU0-1^$C{_9|JIN8BhmRmT)#chkFG5D=Vdq_Csq>| zUVt(R|At{`fplTCW1-`y(YwUg34+$EtgIGZlD`2d1S=1TpWg3w%Nu1mT*jnsYg+9K zX-zX;YGV-15#)!)C3f2dES2WdMl7KRCHX*JAEr@Ep1pm9X-Mi8uT#$WY&$Lx!Jx>` zl+oAw3H}{S9wiqrA*27B(Iz9oU7;KP5>YBIT%>+c@p>KD(bvow9mmHrp2Z?P} zV2w^i^1u>JyWHUzx!3~p4y5@GtqK$ z*lXhl3;T0@Xd19!x?Adm5qb)3@3IBI^Vv+)&$Lo=OdU$_;H2c(lO8Y&?m}n~tL@>Z z2>rjsa|_J8-1ECPHLZV5joV9U7ZbIzESTvyvdEB(xm{2XnbbWeMZ%6xyf8JRC z%b633z)|u@R;m|K>veM%7xSypa8h(7AKK=%N9b*l>H&f=Qm|-tD2FE^xI3HdrZ4pQhYA=auA(woa`b{GQM#y zSh1R9;wp%8N;4^5H}54bFlG~2eh~Ewnn2x=iwp9X)J2qvqm$SC{k}j8uH8ZKp~wDR z!RIO!QfY==p@kd_!CQ?mXrjkB$4m=H*w)BeE}T2g#RbZ`FFXvvHkoP_~YqapwCuKnkJ2k*^#jWN&d?J4o19|*7$xlrp`_&lu{why+m)c$mM%0o`I zZD>JS%K_0K=l53j9++nx?8@;B`PH6Cog~8~wat(WV(r2p7hWRag&xPL;%5~o<2t6N2KOqwqDKbqOIMt{+7y94jAK9AnFe8kyV22APimNXdXbS8D%a6Iq1G$vWY|Mv?mJ;c>h-Y!L zc8Y_T7~K^S;KkA(AnbyuNH7lYD26=MW;6IeH?NQ>Sfj3^>y@<&b4JSQ8+RZH(D%>o z*B!1y)c!#2{8l56-4wQ1R2AEIZ&e9v{rFWxcjo9YrV6~HXqC4Pt6_G50` zY`IP;_(1Qs2a6fHm&{>QdYbVnA3dARo&hPMc`XG7#gp*}mii+}ajI zg5>6Gech1HQJ73<|LlPIN!eBINZ7GhK`j4*`yMtOhczwbu^;0V{TR{hf7+EPYUx^@PE&b zrU?#+9?@0Fjr!Qp(T7-|fN(;oL^lgRBdn_YY~rRv5MdcUJzop!JPg3{PSyF>eKPHG zMA)8{kIes(*-Ci2uZAP$ms~AKBPyS5@=CQl6n&kVbTkI#Jg8<03P49ug`E6FKu2KB z9%~}fxv06Td1EM4y3m5ZJGgEwI4N$A> zc>z4?{p*Hb9Z)2Xslt|_SXPQnV->;xvQlZNs!ENY{6#RcHSdb-Y?mnt!7cSIzO1`` z-VV$=b;!)d1zb(noYD3JBk+ui8vGPyz`;aLj1P#qG?LZThW?u{mDVzS-ou1?j%YJ3 z(}C{ttC;!q%dcLXy~3v4)?Uq{J$<<746gOI6BC^IuH(Zl5w4FhnOVIej4?p4SfrA+ z=DS=F2`vLGlgkVSCj^>-jc*zcEHEA^zTvGNgoqEjS?KZWuXyJ>VOlhSIl=FQ8v4}6 zwzFmc1;`A9j%mD&9SgU8pcU&U$G2JdMxcy@qksLU!%>o>C=q$ccqL#Az#`-IQA5Rc zg`vCt9@)3q1ApS>wa>*a%bz3do|iNVdmp^yhlC~D$_$pz3e){ePb4ru;!d{0sVOD2 zH_vlvEz5^bxP62(<0xEGd7RVY6=Z0F-tY|K#d^0yl6&}O4v_P%sV@tqHxq9>aXEHP zdK<6v**i+uQaDHk{L22Bh%ysNa#k)tmh-I82*bQFwTw(2G#dBmcsun%vwSk4sOp-s z07;AM-V;jj#%4WFk+ZaRa3cBsab0w1c3X*CVLG~q6wmK2nQ*a%9zg#$%(VR1~J@R9P#j8?=3b# zA83kfNp7RRF8RnYh%%hlE<~W+YrKT?n9p9M=YI4ax|}W9t4jQ#<@QVYbFT|?hN74- zbAaPs&*J1DcOGits9w{OaR@?Qb0J3O4s+C9awumkZ-SMR6 z#!}y=^z6@^MHNqpdzPPyp+;sMGQPHd0_(5MRCb29xh*v$k3NnlV(f`3 zLE_!^;u|>xb_7^Ty&cOH05NAQ9hs(2H)Q`57ZSa?(2K}JarygD1Vb6AULWV|_pEq> zjY`0QM)C_s59& zwJHrXJtAw%u@{GIJ_y103=t)7>-BoL+RGHPu9;W6u^L>PNX2~t**om@`<2Fo`&O1X%A{Sr?AUQg0_J%61v42sc-EF)=eHX{WW z#39?}w}0a*wo6z?d}s_q<1U%+l%Mc5FZKiNEd7Dh$4p*d_P6-E{39)jd<5M!4A%$9 zsU5dJ9zpCF&=K38?#$>SiE!VMFS-?lW~D=HGb2sl5w`OvgjwpdByhW+Yvg=QY-Vo+XNQ{i zW}-}94b(7!>G}I`dc}<5Z_oc-y@dN&zS|N;H}zJ%LbD`(vmaeC|GQFq>Voiry0%&X zIIGW#WXCb@$JFT%-)(Y*1FGP=Q=WP0iBKHm6a$4k6r7LZQi!7A>t2QL%Eol*e$%jG z)Vo5(Lrz>n@VW)f{!C|1Ab<{*4o9oDAPQZ`@*S(E0N5#s-i(~x>I##pL?f*GfqG=v z8V|BekM5i*83$YXXASHZ(`@xUR754S z?Yu&ellojUZOKiqOpmzlRkYs)Ua;fMbCgg!4YoY#(ix; zHnJIk_m$HYN3DG~UV`7y$|~0$kFJ7lRH0yq4^8OV?&-NmJe2V!vs9ySqN>Zqx*_Zd zR23a}uq_g&m|HsOMw6SzC*?;_XEPqII1j3=zW8bA2;%f zFETnwSvc{QgEFdvr77B~*E~ph8eEssVap8XW;pN+ULS+o2vgTt;hJ*QEBu$;(?C zz%&f&NoxIX;X&89 zA}f42AT zp@+?VT3w);zx-7axTKogS0r9#%&H+Vjd7FU40J?RV}7EYa#F;C{{9=PjM6oF?)=04 zfv;|jh7vL5(u3un@{e%QK7-PEun;QnfsEb`PyeTsKm3nOIJH`H8Ue5oPUc!IMzWATc zUw{@Jx-<`WvPgk-ynz^pmI*5lIAEf1FRBJZJ0oX8`m)_*zfGMP)Fa-y5w=0a$cuBJs;?)E9(YeVU! z8ubE4KLgF(`*_eIs`!vUsFXx+USF0m2J5Ca{*YVqK3POQG?<~IrV-lm*fQ_`Rq#l zaA~j5;)vtylJ-Aw75=Al{eL%q0hpQ##R_&6+ohcUQLFkGwAEyeT>6m z59~Pgv5cw=@tlByp4OToI9OV=WN#*aS3LI3Ly-@SV@%fkmHLB|cPJb6GLrwSKdD>qPG4T#Ai<>0hY zmT)v_UUKQt>~mAEb5HO}IzOMc#(NWa5*&v+L9{|huEO$ol5?RA7(Dn7Fbw@050!K% z!?%+wDv&2h3YYxA1k!x>T8WKlscNLGdZ%zhN+qU)39N++JHT;|K_NiKqF{UCYcpJa z$h-sJ8IHXdm#nw)x44DJGq8weC!#zk#tX8iXA+zQl4%>wEE=Z^92Oj$Roml?I=JcJ zYMu}EAA9i_^F4-=mIb?Fah*4SALT7(*fH%B$Q%7K{>Bw^1I#IEa=(}o z=DL)QEl*Y^4SbkvtkSVYDpkluhIrvR*CKatb`TZmgEM|DRdb8f{MFNP7QF6LlkjpnvkWJSp)(SvNQd0f@gXw z+d|)^ck~|ki~O}uJW)5Xg;jrBw7NyK#GSmlF|TYXu-^~dsrlc(Hyt^FN_zygif-fj zoijxhXF~x$9ef*ozT?jWVQY^>jItU|pxo?7TgdIIkOZt7{083G0EBAGy+e}m+ne%- z`CoG;{YJI&)5(@fA)B!73#zvrW5dn|OIQ`70RdURNIG-hxYTUU5}Gn5i<0&4^UUQA ztUiQ9f@A4n^jqIaBS3N+bS9r%bi@y}CV#--yItZ!!KL=<&iY^Yp{IJDJf?LFJB7Il zpL|BpgCc!W(R;vcyP|Px-Cqb z=0svwwd@Xb#)wJ+CaQGtbxu7(QWjrkfSrw|6xsK50d?FZqNWzSe&>^E2qz4draj^q z)XyOJIZ0KNFkJDAa(Sw3bDSYwi4zslkjBc6qmEMV&orkNprtmK}j!d7vH;sg))6Mg8{eh+WU+3U78y zPwm(*z*9t-gNYu=W@Dnl(;SdTO9pcY8fG?3l8*7(aqdDdtnfSfalgh|yFZmj^R~ckzRlzll+h4rqSdi@Za71wU<>LgE>FoY z5ZPDPm_5JK+KdG=QlL#8TF})OC4Tr?r{nnKiGXD&!a1tbqj#}7+`jPdn^%@*<9?k% z#1C9M*Qs5|Zyu189_~N#{VvIRRLzrsm|yFRvX2Ai1kiYhtnMmER$DhABuKn|u5P-k zkXEv)jb>0~6K-3`^=)|cVL@C*5(01?*a+na(kYRn{bRFVoXp!ROH{WiecGo1Pl|lI zRynO*`0}Q&5`$T&6Q5CL{G&|}7!7LUF2uH*f5ORJ%8g{3;+9{zG)qr)G>s0V2i_cb z3jA3V*qQ5t?Ag8aY`n5}3cuhHP7Jy5mp*gCXA>0;)ie-9UKfhb?)U71m{b2{As zK`(wT`;}_Z`tym81R|8;Ek?%_0)RR5dUkm8rs(-h zOqaf|RLp&t)3aOaV~3h6`@Wt;GCw2B?;Z$uu7=i<)hpQv7+CbeEDIc0FWD5r<{j{j zl0GYiuxl7qkqdm(Jp!flnMrNel`9T}?FpF(Br@h(S#8QP-7iSjZ$z5FWoBxOcoKkw* znsOe?7H#ndHKMulJ`Nz$2C#V_)Gw)j&A$qkKA3sn%9V_f;xr_^nzv5^G`!Kc4#Vw~ zW3w)b^dV|$Eb{N~H;|Y+eh)?Yzvnp!;8{p%u;@=(0-9I@JHb%d;NwL;9gqDfBgX)m%(yJ@kia4stEpFutEB4mT@+*b1jA|@yiqV&eu$Y^$5r#~3ObZ?Sa**=o%0x!M{#5;g`>Mk!9f^#V4dKVJ zpv~2ANZ6=Pmosms(2U9S_{DiZ^}ps!;FH$paWh;EgumSMW5AcsjLFlVTlKIa6)&8> z$`*Kx4Bc9AdvaDVo)5)tZ`qw)mo8P793l@FcZIGme@QnDHi8FyZ}pWK6$5Nr2$W+t zADc$c0{SP{@hI<7m)fSb(1Xxfz`mo+y|N9ItEGh7$a&PFRv4>aHlB$<88dIZVE>M)g z!zIY$d3+f8-7wY{bWIoodho`;3p~D4o_aF9q=J_nmtFTVf@sPzIZEWa#(A_5H2!h| zH4e9Mqc%|UrmGnQkvlJvm%}>j^XQ0tD@))Z3_Lyr(v6K$!nx-;5mo#!c1)=g2}qz~ z{!{*uXWhv?vA~CIp73AP4e@^rqTylmm~37P7)v%@8D#YW_|8Dko&~vLWwk4bsuinU zmPBYf^SZ{ZKr%XDjUIT4Dx`y9-v+V$_KeG%a$^2Wp^Ts~V+jn;e3_PSuxZTv{z(8_ zUT?ig(&7Sbe3@IQ2z`WYKR0O(-EuMr7h#f;WlM+1ktrF(D`l$&g(tvUU(y6vZmq*8Ag<7idanb{?=M&z9M9>ejnOT z=6s95gsP4b87iu6h5e8i;j0O+yuic7 zDlWVM(sR6`+CS));uCyJ9w+-GQg6IlF|};qh${Cx>JcOzElXNKYBrXYEC*YenWcB& zX6y~r2f<=VBGFldGq7^5*k)1OPC2w0?;)0nQ;<2T+kO&K4GD zLoy;yvGc%X=Ws()gcLhqg3k*|(xejZ$w;<%Ptyt6i&m2DTl{6qUN+Q0s%u8n+iLIS zO*_w&7H$+H9%8@?Q(MGuYghSE59VJ`a2kKgtn-AuQU{08(jDV884PlR(v{uuA6SbK zC;r`iu}lIT$%d*V_EY}EZIioOBtpb4n`yb{`-E6=NgGX{alHQHGn;7#Vv>ZA`vRqIrxih*j2#>9C zPV&lbC-7zgd(ET~&ECaGFy=<6D~`o0gCGTT5DO7LS4$A~wN(*xLYAf`_zw-r}h-H-X{kRjawW;zj#KcJPv)} zu`tG32_iMJ1SsGCVf}CMa*{>Q>TK5D2j+#JIKWN0I-f^q$JL5{NEgA11bsbfa$T=S zrd*+`h#`Q`&ZvzD3K4kcKD;2_LKTyK`3e5aC9WMQTqyJl$%6{si(QH!Z%$!dkI9VU zWUwCs6IsS>+MEs_J&M~B2R?2nHViiO_9>?md+Za|Sw62?jL6`C(VrCSBbc8p=o%f#VJug>}0#@ zVC6IpEp^YHAmZ$;Lww8`C5GhsHdUudr~bS07h9GiLv56Q4DAU;q05R$W6v+2C=3C_ ze&ut=?Qb`^21=7=nxLuvmgonELyvbIpRj~6m8G@MfCe99U3-yqJAU?+BD|@hKzfux zo-IDATt+(nS=(mUa`^^m0@@<#w*WwOHD^Qc6`J8Mj=+5r;~TqU@;e<5*A)c?SDPWL zw6y<`=0A4FW7^7e67EImCbzGrkko)`IQ+cV^kyx0VRz4G4GU%8l$8ju%2*!mWKEyb zm-5GZv6~cFmN@*_!{dVNHzz#>fWMSB*6^Av*%Q)dOLVH%R^0ooUoL`ZP^E5}ab)%bzJayit?S*_0L@qT^_nPe2_Xl>kEV zUCuoTc!ASwfS#(P6K^68vy%&}8C(6m?pWu!U;ZrehZ?3CxOW;+P!(kM0CLp|+NJL{ zai67EqXNl7;-F#uY1LhmP452DG zszk-)EOeoHZM&bmnEF4(znBz7c!~D&41u^XPh?;=mwj$e7fN|U)qLReW5jrOhLLw4 zyfleA;Tt#RG5u50iz@t^mUBnzy1W)+#qyy<3LKlmA^_ED_2ai)JF^)MH4SKEp&j%! zn+R;lEQK9F0T}cI7%*ikD>2*{#-W=}xwC2_LT}IxbNPlPGfUU$0YX?yo&}fQIzWgp zY2oK_>q_)6IAefQi9*N|2ZF@pU>Ho-FtHK}{9i^Bp0QFUucu7S+Okvug9kG61u`Q~ zsGOQ!;N^sieyvHMIPs&3zi^)tcY4@y$~$tZ+Hm4OrG9@G|00IZNx)~15Dp=@jS=C` z2j41-*Uu@c1dj?_OmmLC(!+2SswkU0q}>T>5&k@D9T~G~?W1*0gcb$+^l_`n;JX&C zA{co{dRzDEI5xgIT3EgO+^-ddh6Xle;PP)2mlN#NpB%2Gu-}|r20LyUYrPo(?)IEl z$OPNpxaxNZ6V~9Qs%$e8O_|R1&zIHCX%h~UgT|VxUH+fXt2#w6kaYi)m$SQ`Mn&VN zed%k(pWyY3W_bg69GiWEE{95jd=cG-Sd)tFa}Nc7xox!^{Le;ur=8(-mCN}qb>dIf zg`afSe$$I7X^DFO_s~9MP*nrOHLJ+;*-3FH28WsC)?n1RA$WyJQ^NFN{3?;>b6+Y* zlL0f7onn^Yu1dG}@zA~OaGWGGM(6$8Zz4MUufo@^5c*$_PZ2__#nfU2rQBptQ=@hT zY~gH5<>uV#k{@3(bp&uAUxJ1}A{y#zsAKb)l7V1KpD=VcYZwFrNlQlh_{Nnt<{djV zW15DQGNy4A4ru?H7lD~g&EJX|T-|}Hyo{hk)rI-%smpC)d9&$PqV-w&eSg!fJlh3l zCRX(*KeX-Zh*qfDmPREBG+IG*D7;qpy-uAAXojqgoB=b(m&lucJ6@CTfr$00N>xL$ zD;=N~L}%jg#3!<;`6Mdlm! zE+r+Ziq#q5x43>%7BbBF=auGmYi@`d|3Lb-3`cDG`18NZ%bBZ-Fs{uTimoYR9`iX} zz4B@s^xM&gT?9ho2a;+zDGM13J!uaPH1?3slt*2=R8@=*HD3GE_8GuBJfw zz##r|*v?3b0R3O<4h(xrkDJEo|C?}$7p=lb_>A^$)B z2*@1FKn`qJ2RQ;xkPC;uAd}9Gr7D4B8XdgmZW~NN3_$$*oef0nv#-8GIUv8K^fR)hIymguHbK2` z>>(Z2ae6>c@WC*bK=(TaOiO$r8-n{j5SZ54V4EqKi#6LHnDQ=;n^z%l1<-vOC9(fqZ5WzciOgh;3(KMXJGI|VDZ70n1|Fs zg&L$q=E_J9Ar)8y{JQx{S!wmq4-m2ZR%|-8zW9Fj5m$TMxvKj(_Ml5V#E~zaM)K|d z_na3N)aAuS&3!P&&iGW0HjjpHsKxl&rINgiO5Us%ZQgR`{#bZ4L`rcRLAl*Ir~KuTDnz3)6Wox>?RfrC@kA{&2@nIfuE?jyjaBCyBPx#Tk~ z@J0;-vuwud0Zq;c;6-gEo5G#NR{_YVlDOa<6EJaX z|5bJ(nT>(RQ0G{4kf-f#1HL#zaoC@T{smR9k~kABE|c(hPYmWH;$_=qz$*UVQ^k3) zW)p7{pz1j0XM085IbY2!On3F6N}x9Y!0=$B2*~R-K>poUpU%U`PyjU<#`z*7j?G-j zZ`f);|9XF6|8<4;xir#mK+P-8uJ%3_xHa=rW1*O~17^av{2;5o7-1TaS&+H2aW5NJ zWpuSDcuq3{)lm%5Sd{eMmv1mH0Oy-DQLoY`V}rJ zTK%?qKaT`=r*(~iSw^$c>9h=P8pCIVbnUJt2o5|v#WjG*Dnxn9j;d43sKE-kz^a4K zU^@#ffY{OMcUFkCAh*79!is_h_9ZOBEi4n(RXF)IRm=xnl~Lqi0Y6PSoIs@{FaJAR z_>3CdWh9`C8pn_(8$GdXJ(w;fsH(>Jgb4pMN|{~f1ng*br=1Y`d632%s<}yLNF1hm z4ms{<9`mhHS%R;Ny~S+blEg}=Gi&nz1wsUMZ~m!Q%~Z2_K{6Z*0i2+Y$SBmd47uae zTJkxN>nU!pVd^S89AuL=L_P10Q1gSqZ&N4Nq2U+D z0A^kZi3<%Y9PXcyfME~Ik}N0?I2u8J*776*V^tI#S?5T@N2pK*E1uBDf4AooODx06 z{MIn}!i!F)p#f6oIMD1GC${l*SF!^|;R)4(N89A@ZY0ZQ1c*;Dp=TGz+bWOr08Z!T za%j39543L-s9wq@q!B-Z00UI|7~FFMcsQUu57!f-{!d)ZL4gL6nEt)KU-GA&fGh1McoibqC0Y zBaU?HKc(k0PwV4<9h!UG&U0a{*h@E_I;tH;Lt}f+NT^t(-_j~Ie~C%>=IGtQvQlfp{f*yVz(J9-IS{aTYIB*}XYR!1&d;wr`}4eKK;Y=i_*Q1)FiJ)65eO4}Uak zIHq@-?%{K&^av^`A~@6wbs536Vk)ulyk8w0&%OAd8d*+DEt3GD2|2&Mq+f4yq#V|di1B*Fr(;|fQS~9b zobP&vVtk~tO_oIJz_%m)PvtLu3a|VrG|{MjPvyj!3zsq(b_p41FXOY#wdbmdF^kNn zLK-q3DBmDOxwgVTjfyiLWT- z)h2a{yI4r9&?rum^vy3m#1W!qr*`uG+%AHKV`q$#)S(i|$s6ha^dG5f>W#7Fqu z$APs(XCMP}T=2cn%*b9B2G4ooP)N|oLL1*d@UjnWt%Juvbv*Ndl5AUv-2Y&Wk#mC7gUZIRHy{=jW&+B0Z0BEml1$8R1 zr_aOUTU`b#vVBTUYh;pHXSY`rG1(b!*`hp0qN?$IbOVT6xKj27@w`#aj@BxvhJetF zlsAqFOiV&>QvE_{tvhM{r}!5)1BC#p?X=@V$9e(Kwv9OFKQ7M}8uK@)7Fa}W**bu@ zR8b**82W)~Lo7<`*To)i%yX;XFX<7Z-zhR(M!a}QY*Ep03#;Q+#d<$;Mrcw2%n&=v zt}-|PB+k$ zkolDiqqP8(_XL0T5)uEb9$(I+FyJ4zQis&T_8wx{YU8?9U#7Zfh(#H3ohuJDKZ$CF z!y&ZZph+f@q6mg#wiKQHN`rPBZbB=b6%p zbBOpocHY$cgyn$7Kj_#VI?1|qY*WEI4hOoVfzmT9d>y3v~lNmvVF17P`w{qZTRZC{3o#%Q^DF@3ajHM&gD0oh^)JGaY zNIQ1^UH-*bbkgM?8>jLw{}tb9+VQT)#qgU*)`cJP29`FohW3&7_*b7htPW>6T(xfw z^o#9oCzfOXh+&Y>1oh+Bw>@Ns?F_u3AqD$T2(cK={loV@sc$>h)a{u5HRhzh`q~zf z=z@@{zx9H@)z98%Zeq0o+xMV?#N_O_E~??KC8t%tZVsjVNVmY*;~Rmy8gM4}0brX2 zAB>Bkt!fD$Mq;D?g2)lMd?%{f;Or$Cbt4$1$u_wqRNRlHrMPMrr-z!~sS`O3nbc38 z!@I4Y1-{R`aG#OeDr)pC#@ecn{N@S%Uvs8?q1ra=Hp7OjwiYW7ZfL)#KO$#^3fOYI zo{*aYw`Uwd4J8& zmSMbf1cZoLr~9d3*)n54k3tGczM?%g^6%6qu0Z}^cUPn`-`>D;i(2*J>I|+Hy7XWE zU7p({QGiMi7aEq)%46lF0Myl8VLJgJSi?AVRa?dKU4)}ArgedVSU-W!uHKzC^n^U6 z`uNBE5*WQ7@AZz-z6y;wp^x^JFPP%_w(*JbgZp zT+sQ)rEeT@ks~ki`CE^!%ZOlKd?PCVkL+d+wdbG)Pi_#?_h%_ib6XL3!i?m$xw7aRP+ zX|V2!Z7*2^^GkUXaVbI^cO6}EKUQkhP#Q^=>~K%WGC+>{wXZ#D2vHQWNq>bSZ^;C9 zJVkR@8MYd1`?zSyawm^3zE!P`3IO2EkQg6SQ?gx&>vnM-1`nWH z0*c>qhX6(HbTmVFhRH4n(UvDXr|kXISNCU{;d3@o%7@-~9^@9z8Cp5 z;PtZZ$h@5NYPWje*W9=*_s~OjIAc}nNolw=2g@=yQG7;AP1y{RCAjAYS1iOS^o@dd z1d-%7GJ`N#^vfNA*3-x_46CGj_p@A+4@lJC)k}y;B^b`iAkWJW5LKWv0~ed1mKnOS zn%CH%w*{h5r8CwY?LTt4h_~-3In8BhkqwFTIcNTyq7`f|!XR2m>0_Sg9fCk0FQD9Q z5O}2yr&Ty4#=i?=ohlJtWj)NEMpFuGy2-j)zq-@565ql18OI(WY{HtScJ_K|V9H$h z5K3(8yO@GZ;|h7#Jim?6t{5sg{T-rQt4`aWc98o+D)A%)l{nZCXVVG_Fh{lH(XUu! z4XukE`VFp&#&oOTBkGO3gIqn`XplSOcPscJ3q1Ieqg2GsTI1-ldpu*za`MprqSGf- z9f9E9(aAmKCqhl+<|5uYru1NL2#je=GDrP?3m4K+qld?&a!qOMkK!lb%83V^&hg1J z8OVMn0bEXA%V;+2aM5Kxuynl`J5+a_R%05F_=ErNK`mb?Jk>9H4&KULcd(v5%nzr= z#ft^*jr%wwC*uZKZoj_eR@(avh?y9#^%16CQ&t|Xdjqn zDPyO6MO}+~aJxWo{9XN;Mi=Tt*A_&&-kNoZqL`U#9 zwT47T(3m5>_@`OAY^67oha-UK1nFdxFGFtsTl^#4EhyOw4Jlb^FEfS$`n^|b!X!D$^YD%yptnsq?2m zWP5NyuY-7Pc!^1yK_1n=lAiq?w>3~GonxItHP+G&d9`B@t(1Ay82%sj-l<8@HCx+F zo0Yb0+qO|@+qPM0+qPM0+qP{xcg5bl_IL0dtUj1AqkFCX4{yYH$9V4hx{8|U4Ep5D z!U^<6!dwy{&{WiB@AY15H5(%A@bn}G@{ zf3`9*$<)y+2Th%;Z~OfzLMM3|tE~KVpOlch z)U5q8MZ`!e+g4Zyo$J}0aL~K?NI}Aq9az9fFa~Rxc9i{LVj|a@n(F<{-PTf{xTh1PeCCco zyRt($3HCufFr*!EZBxp(C~WO?p7P*`EHYA{?WZS8iXk=8y1!~YTSSolbp8z{k8noi z^vp&&w=G~(g|QfIrEM&IPlA#CJ1z9O6Hne0xlf1rAz*j@@&5v)aW|1Q)4QNa0~wus zFKE;SYWALIJKgXqO8DiR!Tb3h=ib&ClTvBi^92IWIzO7xZa606VvHr zZ+pcq$Hzo&WYSora`MNkts?uXoss9b$Q90gxB8q?z`P1qidqRl?zC(wMOlUG5}l-_ ze0vi=f<+!(?~{DG9@TwIP~W(~7r(eoPpHLzA-)PiZ-XMD#G~I}eT$w4rzTd?S=reoR&s=auE=)~Dv?pG(hu#BPgGr%JC8+8d7x{a~7inq!_Z9sWR>`BA5-PQe` z7_MwOw~+#Sa2)_$sH)cA1m=*oGb0cOWn;HXe8QOx4RuB3)V;`o6h_U9+Y=@hY`B^c zCj`>QY%I|^Pc?Bnk@48RP^fpt^R&fCpVismCN9MBn`B0=*5LSGnJ7EH!?p5jAp zV^T1=RM@w|-L7&s1BB6Ls^8DWPaq~shOnu`MN!Zbtllrx$X7sA3|a^2Hwiksc(YKE zu0g@-Xt8`VNi2bjxh-x1=6x9p6r2Lpc4~*tq+P8lLP~pa3h3wKb?Kod8E}h`xB#p4 z?3nijH3vy@99ZNQE-L3|wJYtfoL)$3mW_d`{mzDHlI*2=8znh+CF3myMLa&ue|&Ec zc(zr<)pV?vqd>7`mQZ5YIEKOEiNnRXH4x@`$pn^2^Lseclp?$gzl6-Fv1xROxOu7K+t(Vcv8j-2JW zU1*|s6u}a>cGT_?{de^e4sx`2;JKC>DcN;00X*iUkhjz=_pwMmI)#g9JEi#p|OZ&{#E=Vy$(6Tq3D^6uKF|v2X!@{ zLW{#LnEIPs&qsn3O(qJ!hQAjEik50@)sDhkbqpt8?hXo_hsJ zx`{i8nCj+Yyy4C@7a9d*8xsE;sN7kls^ zPztt$JE95eXuw{eV<61z{--9P8U5rZy1u5nv92rZ^P1jMs@?Fo5Q!deOJ6v>*qmOA z_qj&YfXyWJ9-6+k%jsJ0xlb?*&&VrqVns074)39?V&#AlmuwZ{(byVDYFADZn#vzp zxdBB0Ejca+HER=HgECrMd}qK0BG6e6D7fNGOh3O4Are;sp^P|s1#44-xP&S>)HEYZ zexxm#PEi6u6Rq|lK_l4>k;gN|~of=P|kEmQqwdKl7AEGs%?oj}w<~#Up zxDRwDs`7*7!WcuKwFG96E3xnFBtlX9iXtbOI8**o`PCWsaw~x@xNEGyN(ir3uF6g` z+?SKUmOZc4s`5WVv(A&(`?tj`E1li_$- zm@U%)pz^$;2aSEl^c>Z290fM9TqbD_sSIy*Xt#NsYk39$peSxaq%M~i1gd{Rr>;?b zW4ILwYN(}KU@|_qN>Xxxj~ozqYD!ttc^lcE0&Y@kjkwRNIy|3j=Iv(guJm+*HnoCP zCW{kPLPA_45_36h^yzbgXNS+bb$01cx2k~vVq$}9B^Xa&6%SyZ_V4c;Rvhz(lxy1N zZAA}*rujPoD~iG$-wZeaB3pa`U>V5713b-Zy-K)MCzV!-R*ilGY?cJe>zv4_Z3zHz zki>C^-tm%RdH8I+WnJ(sgtbWgvpJc6%xn0rhHvx!{=CiLvWpN_aI1v#<`m7NaJZoe zA_#O=$6qE#`9$v6Yj|MwvwLw51hw&1;y?D<%$OgJz42}0%w}pSZtx8HWiomUuPbH4p9Is@dY&Dsx8AI z&uKTxK>C3);bL}BwRL!NE3rew7>>f8LKuo(%AeCfmi}2!ERRRHEK!#u#i@p@Z|bdaQ}7vm6^}BQJ9AM;J;tf6X$s|dbvn*$^CZvBljrytP^L30fTS-w zU&lBaWD^C2J=0Rky)RA>^(ryhU7FjZUGz9Xu+KnPfT*j;N%o5dpphW(b9G=gFhaL# z)*VQ(I&J^slfm{p&1*xDxtg;nzTr53{ekVKHkpDQj>#{w@8)$ZsAEDi#o*yXFMAtu z=ot$!^^LCp5aQ{ocI~QwdD=Yay#eMrnU10Mui~sKlrSx*y7!UJ;HMq`Y{pXmb)_-l zjJfSO!JlV7A%hA$jx1n|^V{%6zYxWnzi|jPF5ZFV=2L5~cZ&)a^Y?rizQXAi1wmi+ zHV;A+Fbk>5is)_tuH;CX4^oSD?pcDQUhqwRb2tjC-($*<41AT-?DQH^ZDvgx0M{cQ zo0qX+{W9@_AgW=@WTxtxJjX}Zw$N6|Yttk0_9d2mJ)&Na6n#etiO7-|uWJ@rT=xs1 zXUKLj%DxlPZ)Z_Q!vS1ira<`unCFbw44h!0MvouyJ$N3t} zzc6#=iav_pJ*KIbOKL2iTt+wvfXi`piyA`F|EG9vgK~Uodq=|oV)LT5G8)?8RXaio zGCb~4-{GBH=xz}h_QL}|hGMNH?z;qOBtd89)0nCd+yjI;f;F0rSGakT$>8$|bO#Q4 zq-G060gbV=ww2G{-bsOOcxRb@Dc!;Sj>{}#30S9$fAt4v5zvvr3@hcGz{Z0?zxtwp zuZCpq5NR!b|F#c<0i?qvNv!JS_>+W!%7|0`QOjcot)f8RVTw$!+%KSbD)^pMblOY@ z%D=_HJXAlQyuCf66F$(IXKVSH02>*&Nn zdDVLu+{iEHer6>ejyBm?wd;`H;$*5!$X4Ni@$cdv!4YQVh_o7l5s0z5MH~528Y-G; zrl%ji+X#T8#b?aMgbsET@TaEOlir`R5EO1e6sZsIEhXBP6s7i_k8){v?#(yzeJII2 zJlr8V8s-i#khDW#Xs(hiKqXDhF*U7Lv#0gCo0QqCW{R2Z##*~#)DLRjS1*=h@n>lG zFim3YS9t7h3ZWDqEbl`67Cs`qL)Gl%#+^LH^)0zrkZRSsr7Hj%(Dtmn0toCQ^#@^K zV5B>)*Gpj*)c(F;tZ!#5@EuAlt7S%4B7nVZ)o@=8;!L`Qs{-ksz-V5_-{arV6}%k)mxJX( zt8ILV&*C@?7~1_<9wP{*Ulf;{6g;&HmMqQ+z7NGOa7s}8F z`j7brZH+cJvg(8*Ug;dDJ{COBlxzM9f!ZZGXEigSm!485ZH_{s%_2yX)%~M|&M<-P zhD)AZX1Qi1akRtz80SER2EiY1yL{D}(CJsX20DH`3XA&o>HEsVm(qYNL4Hu8S!IL= zQ3L^E@Y8^ucsp3pFie5@asfHy{7DM&j*RNX1mL@- zlYkHjs12W7K2TivdhKff54C#8ACFIGI~D;Fq>NykLrJmopV+#bC1tgyDuY;aM}*Db zn?jc8Q;k13g@!aLHoazR5_7T@mJ@2y_3!6fegb=D<>jkc75@tib(Xi@bktv*`O ze{)@+h7hXx|3N+Lx;DWB0U9ieMj?3nu#ji@FjbWeE3}B980oQorw7Uve+$#QHc5ht z8eam(`Cm+|6Jn#D;Yig?D>OsnIiQ$kA4uC2IP=w`z=PFGQa@7OOd}3>K)h~}NX8j! zuS|g9U>ZrsAUDV*zqt$W4)&Yz_q#_g+9lZGLW~0B3#Z$MuQ?(TwI3Cs-%r3Hq^zo> zhD53!1Sami4*%2|UHqZX<^gfq8+w1ZI>Vi0)r)nFVKM7*@ZwP0$OmBLI8}uNg!x*; z=mjD%f0cka7=gRG4uX)V=wTSps~?;P6b4-J=5E<=MFy0b4p0droWEPLTi>Jx{}?FB zOc*v$YXM$T`1x6*p3%~Ltz1T@t)b|x`Ok7z^%JGwEm>e4Y{2kDHchNA2t`ky%)6#h z<(ITKrkLv26ZS|K);cc$rf=>e29?np306y4Og>Xw!~6A1B9QncNLX6>&18}s?TD$- z2cn|%0?e})7bcEJF1SEH_pGZB<{0n|C+p(AwI|K;1A=z?-baS>HQ7Ers~;4k2gOai z7zI3yPG3?JURpa0rwbGUB~p>Xp?b3#xp@)VT+yBN$S~B8t3*Vt z4UeGFg*#?@^R3|QCfka`dMq>7Np2fcjTcA127BuVgZK=t+Eum10ZkA~pGM@EJb}-j z_Xg)kI@^~Y?OTl_z9|M$ht-+2-_?D+EXBeSSx8xj?UC$HFC?(H^8vR|OrYh;xTD1H z&c~8Y{_DA*%;g4^Q(AkW+C_SXUo{b;#q%Vh8`2My&0mTOK8m#!HcBSdO+{3zN z$%htXMd=Y@)9SJ|b2)D^giPSsLR8wqFIUO~4kcCmXb|#H8d9}#oDaDGf0gI9o7~*+ zL7nbEok~}tVA~Hiu(Afo(>MJjhfX{1Y|~jrvjA}OvR;=RmWdKjs1gF#P?Fax+*lfl z3>WsdUg0Ra9s;WbCoW~Yha3pM)(!xQY^IXh3#$1IA%4oIxrxyquVt6tN2IuZ9A^s$;g(F zD+NPNjIHV_Dbnh^_dS>9)xOkgnV8_|A6qb}DN85dc@3cyWcZ%f#C{$YYos^(vC=-x zO!Y7dN{qOTKLVT;l`;4B}=6hCZwKcU#*E#a^8#HeaPG zt+Z5}EPX_J`k{D+@lGvgwcPrbw$K^qIb&{6eVi<|QWP>z z56~$q*|^mJ{FaE#uOe@uSsN|U(liq$9nLQUHL^1Gr1H(ob*qCikF;&N!FHSq?dIf$ z7_S!`?9c&xlFUT-RZ7>tD}V93k*MoSYJoBK4a*KoXK4+?)7Gwieq0V;`C++k>3)fbk@X&^;$PG;Wc7e+-F z9vZN&8#mZ`9Y6iIB4+dpdaS$*zNwF%=4^w=rgef{#bL^Uk_8FD0Itl{mFbrm$5=AA zkAQNhaa)q zYls+n;mW<)On+W9-hxzL5@fC$4v$xR>FQXZy$Yv`NK8rV`(yCgQEaYZNm-awQf_rh zydipL?YN)ae2NG7D0Va3ZTC33G3&zX2E8Te^lEfhcRjViNRrMEDt2*oT4zh87k0~v zfSE143@C@%(|Z`=@QJUMNuGpGhwC??0L5CM`@`g=t#5$(DCYdX%F8M5QbMOWy($hD z&!f&PnyZ1F-3D`-02~lz!zGCTA&EN#n@YUcdlCtJ6v@GNJC-7x#OrY4E-5h2qULif z2Bb*|dSl^vhUoe;!fFt!p7k>A>3RZIpO|i-UDqP4R1o|b7V$VsIfDTduEA>iUE}G|ib9p*TXYy%L zilrc3dIm{Tqe#9+?K}?kV`ZadsOq;Jw30r}SOUpntFr4A^H`s@a>5RKQQ=ef1D`1& zep2X}Yy%uP;MSge?uvDuc%@iixsZxHhkD;#Rg3&vy$4eBaGF}DGLBH3*Waz|eHu_S z+x$hXI0w0Db!P*rLhxl#!wAar@9<#HRy9>72s8qmumG=3V_hD5!R_rai`L06R^*pW zb57e4)cq8ZBxT^?{OzOpv^0eTOrUHN;m-D;32jnT@MTw=?K?s0-wB%@w@i=L?j-_% zcvKM!cr5U{is2y6akU2_Z1%s^=_5DN#z9w2JK$tDC!zB$6>%^{EC?Cntg zF8@f=&-rG$d?v=s`Nl=~?SKJf?ONxNc4Z2anx9f~+MzTQ=K8-V&9)i(_UF!j3)UXd zYF3)kf@1a9l}M55s`{5=>g9q=fG9dI)_gxE$o2|FZiO5wdXaNr`!fUgwc?Qwy0Jaf z0lhFKN?wFNyvtUpIt;2xEzIYAga=vz?6W(A2|F?pE#6BWIgmzbmo@Yx^T}Z7B;>4I z&jowFYj0-MxVeqiP*~$RkgHjCpZXbHfC;=-bI}Cef98w=KbiKKicDqsw?;{O*j~jw zJ*}5v6WKC3i2Q7-cXc<^fl#!ucod$ljyHZ_@YJklGi{+~4VuriMq}C-W&Vx|kQ3*h zJ-UsNBq1%i3|rvCAn=Gn2FwCYqjrB!iN(6GG3}E4tNbI0*09>YkvW1L@yStg0<{`~ zm|(PW%MMSc%dwz@>Sw%nG}gicSBvGrM}QRLhACmgsQ`nVq31t`VEtH$oOBVvlTH9d!gkGu3k-uh)pCXcbEbwmldiZ=`K;ffGOEvt z^tGJ(SNl%dsZ++4TYUK;F|lCoXx^g%qOfZVQ03cqw+HUFnb5dXbGgQM>jkl7&SU*z z#Mot2k6D#m?I5NydJ9XI+D-6xA@#9|hy1^Pz+ zuD$p_T*!YefAJsx$p3pG0RNAFv$wjDj;8_S|q>IAZ|77qS6Ob zZBQo&bZNH+z*OIn?&hnMT3U0y>P^QJ0OR-_Yln@fpDQJB>0d{@W=!2)Ku1{cwEL@PJev&~M#HKRl}|O{0A) zqx?^`UXX0r|ITaiKgB-+KHtYw*iz4qgq;+(0&B9-mIsOu;6)8mBsKG$>vS&wlqt9P zVw7lwETQd+uvHW@C;?MV7fqp@Q_0T+tP5t-uZ=oz{3?Mj7i!BIFq~S5=4{~9 zb zjqqW-^k+SDw86+Gsv;y z|IQQhKg~b#n@IQ_NYCHT%&YmBjLRUsQFE&_xi%!O=l23Sd(2Px%hCq|O>M_tKLamI zhCzpSCDuurFJW0!fH)~qe?4pdI1Ls%Q6I3HHC^iL(0T=GIzXoLIwa@&H10O=W_l&Y z$8c-eJP5y%pZ&H&Qc@Qk8uEPiodF*{DF)6(6o~2G4TML zP7&>?_D4{1I;{MIvD&NuRpYqWPx0XmH5_*s_ z5t6>^^c-w9#B^V)0JJI1cR1~qv{zWkpuDPW8+dS>Z25t7i7FxZ7aeW2fwwUF8vB#D zR%g0u{Rs?6uOsOCxy8i~YGvn+>j0=#5$XIyxuttI4BwccQz|@*XZjdfq$W$76HmnK zGaxIhL_)n3*5cSFn!kf&o8__@WMjM1J)}c=EQ_S0&NfgMeA=~uZ~dW|fa$nR0td&L zSFqbNCilZXV`oYxZNeBglV`P!uV7b&A+oJy0xyzkM}w;r6PpjbD4db_yqx&K_su4j z&AnUfM&T$4Xv#}H6+Z{TgGn^5V13R94O5>?a zI3tvkYnZZa`kj+7jGyKq|@y2+w3ycEkaM+?tF4>Z`{eYrgFn+X*p3 z@Z)Cz;~!#ml(&u={vddF)Km52dG2B_3UVD97{%mGW~uYr*FpF9YK0q#i5Mzf8K>zs zZ!E4pWfQc8@$NpY1oKLhr(EvfdWaW&%vN!r?>V;CIXJ!X>e>}2)gKTR3`Ng;(UcReQyDs@&%c83FH9U zPez?}El&tGuShY*KB(WCFhL0)Bm5c*&2#r7wWF@yz zB6dC<^OBvZzxb6YhX1R0Zf(HH9k(kXe&%Q@sQ~F|F0)4e!c`SIP1^-Io`4@C#2>o% z-vbNd`gQ^7bbs0KSL6&~LpIl-OYH7FB3pM2 zEP#BRwWiB`JLzH`uC6wiqmtz8kjal`bG;;p^i!rjkBtmNs+;JV3Il&V|FHTuEG14;ku{j+tp`V_Z|_h0dgdvG+aUlTSxw6(g;Me&p(}A5nnoa=qf7KW z5_+fEXC7coxUBR*o#7q5p`>ipIIv76lU;CGP4v`Z zI%647rswzGi}UkD0GT1^Oz-}Y_+E_wt6^B)%;rLgQjvSG?`h$!5|+$dwtbVgAtaJ| z31O--OeuOylBbJpdAmgqF`Alu?lt=7q~>4c9~mz?HbMHl^c+wm;~_c%d9PxHe;Wu| z3wGm2yWK;7bEW{V=}&iWS8qb=$CI9_;dVD9Zo!T;FP*5;_M-lpl|chp*j_RFy;X#{ zp2C`zG=)*Np9O^pJTX0UcwZ$=?yX$NQANHHVSRilE)=2lxZCHR={*{u9T+|bsC=w@ zc((Hm-h^i`CriMQ6uP3YBy`eN5jao3qo|4~BChlcOZz9Ae3eBS z{17TxT1W=X_&|GP8&$3OBP{|Fw=1pRYHjqJtfHv&+zabu?-_k}naNn1P1FzGrT z;_jhTzr{8B><#I#OlCHG{JETi%+T?ysjy04P|l?CJo1y#j;?eUis?V{O(6f<{UdTt zh|5FCgp9T8Lf(H87^2^9xX@O1C0*j=`NngbvKl85W3m%w`<2cD+hlbEQD<}HW{I~+ z+Z0(~d78*sFIp9ck{TDZF=4Ycgi9*eheQ^Z#xFoZe8hCrZV=lfe)*}L4#>^;tHk3D z5r)AO4&Y`2%r*EYThsV0gEoug$7fiXwv_9rjNFxG2LxTS3zWm{&MlB-y7XRh<= z*60~V?Ko%w+&)x>2lP-3#Sw;}JjwfZsnzru7oZBIY^7U99%0i49n%d8;jUKhWmMO)F!}HWl+1wm zN$rY*<{HmoK@(=Xo79G)VVXBGFu~?C@s*$gcyDE^pr*{KAAA2QTu2AV6D!01FM{$T zIwrp559~eqdlBgk!LXT#7NStsD*>Z^Fi&1ZT#!gQuD9y%jSd|D&_L9geq5Enw|o3@ z1EAhoQY3zif{+FYIJf|Y`+l%}EgXx`pe5m-#j)Vh+e-c z!RU5n?pOPvr46*qQ46z7(uq;icJ@MNuk1GuzMy8QKOI1fEOT_+$$dmhSMwiFb!BWt zA#I1A*$5^OG%9O2eIa;^=Je3g*MV17>>lSPm7&vyciK2!^G3?4k)#&iA%hu`9AgE4 zyMu9+<7#b{<6I3QsVyV3Y%`J?*rq~$Ys|;=Cf1~c*6+jEtxh!@nspltyNqDCjh@#i zAtYpzWcc--tGJm+Te!mJDFawF6G+AokWoc^;lTb~UQY5ZOE3Nbof?y8Q-kgM^iwS* zG)vZvj6&qOT@J*6<1I}|a3FJn(0*-qauu+}Y3Z9vDJ!eym!Kv_i9~@k7u0pK@jfyB zNO{%sE0#pOkYs`DV4k6MJFn>@g0^{T`w6E-YYPFgB$ycMR$mW>wua|@^=T6txqv&D|VEQBvP*&5WR4Jp21pyI3O zD9i~OCaa()eD8~_Eu8l^pHmoAoDKmfL@PAYX$7`N^aTe`;+DKWxTUfMo3}0Jb)Bj? zIEot_3gv*s8+W+E(Q~l)=kAGCv zF4&&*4i~fL*DfHOdfav&A8pH2_tZDUt@`QbhXL>XsQ=Wn%Xzs(fo zdegfdn+9B{)73y>%Y~KX1YF6i5q|W4!vs|o@>2ks7{{#$4|k$zaXGRwXYB4;7QLDs z4gg20hb50LO|{oAq{Xm~)On;`?`RelW_uqwvKa9_M3NrM8LLHS7Wk>{+tEcgb;!iL zQ*?88&;$i%?j6Zj^f;w`m^rb5eg6J7nW7>SjShfzFy1FM4qo-7ECyafSFHW3dI^2i zjFG{edQrjGPTD5Yb4);Zo*b_XYLVdcS|yM*{SuE-lYpGPy%k^ODJMArHv> z1k4%EXo*Cw^o`iH4h%Q22D>6my7GDGg%U2z`UOlfBcg9+XWnCcVCEhcI}K27LqfD2 z=oYaQdc-86^n-*v-)SvFBbCcnLU1$IT8jI&EIh8ECs55_@5aPKKtLe{dj{eBh<4kT zGg|%g$_io%Xiw9|>#_Bc$shSeqV*3GbISGvw0r+9d+}b9#7Ac+Myfv}q&{|v zw`$()Lx>gKiW(RAK*OEG(PH|Wn!?(!8oIF%8%_u7&mGwxI2uiv@e0sU!~q)Jy?u#M z%Gy6i$MY~wyo4w!&k!^qB&<4LD*D`;^HG7cuBWApUk!K|t4O7yH%!ucWwxm|u?_rm zD8$zfY|9TvMfrF^?)smNE?j}O(Iyw0*!(l+oav?m*2(nquZ}rWz_}*Z^TH%9J4o!K zs-a8BphauwJl&gCkb1-l%hJO(SegD+@)z~O?^U|QN+i*30$_eP&8UbEHgxWic#6Gd zqzDQL&|whX&n*503-EQmcN6o(0Sa^sAc@>jRP5%0TNx6oL;+V&e9#fOP5pbckOC=4 z!9%s4^4Uy9gk5HFm5fz-c^+VVO+$+hjDBP_0%q7Q$B|lW7|S}S)P2^>p;D?ulMzHo zS_-zk)-W&5i?nIbXMjF36PTcqyQTWv^5qyyfFunllt^Qt++OM7;&;Ca4kgf(_m%Tq zFUEhA#JT5&9>}D2im;jV^hZtTHoMIPy5Sa6hG7{`8uSeKZG~ygY-#^h{0oWb!6{>= zzP?pI=N`Gfoz(Xw^9oT%#7c==wmAO~!+jTSb@j60GRTT$uC>QNAQP(m(>$LjUgn7# zM6nGjk||dAY!zG;YSVjQ%G9kvvk7~VR4VJ;-7*^nJk(jzVM4AIiQgUe(Qy(3B!(AG z%ySi~YFCb(%c}?l8}9e&B_wg-)S(CP&!yt;Thxs$T>CQVloVy^yf7Q0VlV7^F$=^< z40@19dbYBAva#|Rb@}S?k2=ykYOY3potif3angSk7m`@s658-OEU833=wEiAYPFj>^nEJ2*5HiCZVPa3a?2&JXKJ4 zrP9_2VST;^QPhd%*w+q#hl^B~k?BthkB)M#_*dXqO|w7h@&S;rpl83rqbB&s$D{$S zT((~dmMoi9XTF5V1`v&7rP=w}JY&k_ z)`C}apQ7a%jXOl*vyN1VAcOx||42}{rQgdH3@=PENE$wQp_&kOQRCb|UrSy{ z0~H6(apEYJF{f8sP0-)Ph5UEvCH!yYUw~VNn4c@Gklwc3Vmuw~U_umoDl4}!TjWqRA>l`H*FByK)kD596SR2-r{49<{oVGrFg>;_ZZAr@J|n+qQRHUbZ( zEWbbo!D2ulWlO7i9XNFdhX8HhR6*1SCGQav5JdhoFdTkc4yyBJCl?2N7(5Mn!Ub3@ z#Z76xi3h~+rDcf0?lQ(1PhK{^vKO$JeN>4zIYYEp45wY-bx0bRulsXH;I z5mlkup$F)>Q3h|;_7c};l$1o>L0s}>M`_W$Wc4E4KTM~*KJr3@y8{Oq_4F;UHCwm9VZPsxQBAw{Z#Ue@gcpSTNb2}!MN+rF~tP=E)0oMxp7i}}@xaQRyx zky5G?R21)BXalHC3oO-zXn{Kg)@n3jauVnG_2()YUd83>49+=$MY;(#^}d|3QU5zm z$zRRCs2Lulf&$P(N9lBH-Is`qP$CLr_+WVo&f0mIidclr`JKuSMd3P%>7A))+q0qO zS;i(z^mbeV$zc8{2~m)BA);6?&MNbRSj|eb0n57i`zoFQ%(k0E#+m#P(yM@l!_I~j zNfnk?kyf~Vk3M4{a~#Uwgz{uy0IgrWxXln*ncGA@7p-9P$(M!r*IVc2HRukQAH0-T z(Ib0y-rmWS5&?jXJg5_||7kIetFhxOM=7(Tn2QX*x-ocd6$!$Xhm3cI8F2trWvc z*|I<3f@f>T{RR+GOi&pr`Xj{mZ)hP?(lbrUhj)6YF76e*QrzlTVtah(mlOd#8L2)w z{t{v&cs9hu9M%a6Ks3;g>1of_1u>{i7Bwv>fNiqFn5?0J>6>;d0oKQ#Gyf`{ThZ>g zozQOCsqs@uMVRJZtI{Y5R5>q~#n&h)#q8U?dLQ|*Ut)EdYb{dB$i}w0d-N1Zn$0j< zdy5^=0r!MMk`$+b)GBN%u&?$ZN5+2I$Hr9z2|)F%VR3a|w@(5(W9ZCTxpEHLv+ILu z*zMC(nn$>5gbmay24M*|xf}7;=GW;wDCEH<#dvGwt>n_?AdA`|kFSv;Uvt$4fL9e! z8SjtrK_E5b#xIU6Abv<4mlUuEC*`-{%Sx%YUH2{m!%ted>|p%}>*@{;UxH)O;ReVu zE2CRJx7u=Zz+Q@ZpBS6~&-#0yB?99z1msDCNZ3yH@fDa=pwoVAHi@#w+mzPw3G28f z9k2{-7ot5BfrT8Y$~9M_JUPxHr0i>93f=QSun$DC`!8zT)@gaZF|^@c`HS538qCq~ zX?BWmGAugWDU%G71og^?T|MJxG*6U-kruz#j}EOLK>Y-&b#KKkQA8SqzLD+3FdG294jU{;^4GgvMkPsEQWbya3iMp+s8mSbX*ibMM>Hdyl zlIuJ^gDidsx&8!-Jqpe+WiQ)=KK9Y4YIlV#!xlP1o8amK=62A+Cb*LMn!chag?YMe zBXk(Pj9**N60;aoVqG&6Bi^%HJ8Ke>{(d zbPZh$9Yu42i-^+@%6`Cs@!92D(A^uK3Kab;>U+^sVx{0<(hF3x?+pKLcCMsdM9WN- zLLr8SAfy(>1AKn|b>MBi-S*LlT(L6*u#BMJmFkLs>eKjXV;(&fvw$K^6)OuATuAKq z`*O_nMql!+d92OjBI$#QBecL?IdIGPn;Ynh8Jwhf_vu?a!9gc*%mPyi=?img9XpD+$6G=oA8C=yLbEfa zq1jp>Dv1pAazGBIgHb$9P7AayTJ3tJLcj7jwT7TzqP)S-WR-h0aSZVb5ECsSP?zY> z;uWp*7_wuqDQUWUct}AG^ScdEroHxELX9ns1P4<(ftyRlWU=~z?F-eMEWB}oSY*ys2;;fRm z=xNLe29x`~@6>@p{@A=0>EsJNFK}B;wXL8e1+WD2JE;T)>4hU&>(|}LsWLT^M8(X_ z0w>)kBU6AL3B(6-Eh7}Q>k4)ggzZslfxg3u+deJPv^B|%z?xz}LKpiW(`#!PslaM* zbe0kN76`!KULH9&P}v@!hUtAUJF^?9C}?vLxoSSjCQ+JP`ksTh*D0J$N|et_|6E(H zg3P5G3r?%ixP0`NkWhN#Ljaa(Q?Jt?*;L#(1nW%Cc@Fz`>G|ki&V#N!;jI-Sa@$Rl zQ-wm6S1;D&!@-iCx;#4B_F>U2@}6qok$&omQ*9IVr4mK58kt>~fpep{z_xdFP(ieM0)f`%9f=-EaxLrrDDAkmFV4i5Y5Ojp?}q@8L-d2dG)4Ay1h0 zt5U^y)+s8*r;8ty=R;nwJtDkW^UnWQ$zMcAxK-=``s+V^ZM?9xX9tV)zMo<$o0X>C8OaWnSi=~l0e``#6B0Iq^(DC?$ zPfY+h|8921Qg)K+g&?x6y&~HT?{qynrAp9zW)z)2e}z69dcx>>tK^Uf=O=VTX;23isucluEeiMzF3{s14*>WZtV~6c|5oK_xPZJ~ZA9;VeyCUKuFFqIftT*fk2_HT2Sr2Ja2tiWX3v2Xxh6&e+( zkb>RcY_MHIegnYP_61ahJy* zgBl~OIVqdz;xgXuR5jrAR{D)5on^aF$B0?GBL9n#EtEMBFlG#$@?IH4 z0xrt_jiA$hI34I!rT(p#{C(|h5oyfM6Y@|PgwXJx^^eRnx#dZsBH&s#!B(FBh)as% zobZ62Sg|Xmlj`;*WxouIP_~>=Qnp3nX6iPlp0h~pf?GfOYR3~yLSc|rDZJxCnTX?H zBSwC#0@<%|d!K$n6=G6y(co5lP^J}FT_OFuJh%TYoYnvB{EH%|%hnCWNbEW<><_(T zvFs>^XEHJ5Y~s&n*=BZu-^G)T@P~PaBG?01zI#RGYUxeHd3PPmNZS*k*I&=vRf)#L zKrFU)6O+IM4*0Y}$48Gnw-}0#%hh>5@5m7Fs2pDTnafYlh~6WPB(8h72pwi+oj*`s zlN(XRo%fQxteWXB6O(XHQ8i~lkq3}ovZ8W2wG<2ZtCCt;p9XHV#P}*I}QL)*I1R%?`@o4AQ5{uNcA5pdg z+#ZUKmVfk8w^|Y6eDkbyeg=H@2-~^8dW&S--HH@wu~`qr(d%pqg`QF{vxmoa-+HyH zR-3~t-NuMN)G}I0c5}|}yN&Al7wivYd+f$Q%okk>&f~q(K1;cz&91swQnVhrMgT5R zOsnHFM1kafBmEP=hO9fd)e4!sL5|r36P^2&Xv+`;oI#ND=2{9SCnz}emQu@HAQ=K@}$%B*vYD>cL9RX6W z+t>&JPtPpq97+0no4p!!l4enNg%|Z?BB&$BVaB+`wT~bb5y{9?w znK^MVoFR4l!g_Pl!Q{>nQUp}8ESx~Vxc+iv2Er3rp!K;s>rdV3Hgss9qW+tizVm@p znG5isz)<;~z;;fAdQJQs{V*X_VE_-6`B;&?wjD9%`@T%sthuD3>xnx6+nxZ|;q*LS zyKrV5PI@&8q#HCirju&0a}$ed84JWgZ80cY41)YQ?71T`@bn3Ep z!0j1RSux%otA>*p?~$=-4uWXjo&;3=-lo9ai&g_uKa!DdXZ*FJD&tM;I0U0+u893D}I6#5|Ufojgg^Ge>$+r336c9AxO6sD5 zEC=C;1TFD8flgy#!)q!VN}TbT~}@NDTNAT>rd!FQ;Xy_o2PB+wdQ)G?o4Npos}_C+;V8&gw~|V0{J%5jg_8EA5vd?a9;fOq)f6-+%_HP*ZlI~*6+hk*XChyhiE!bg zCeuJ<>tsppSj?IG#TCW@m(M#)h_&K-#3C4r!&TA60{$QN-YLkkwf*+Y%$0VfZQHhO z+qP}nwrxAJ(zYsHiAvi#JEHghsxQv&jvZfo(WkH8%Na4B6*1rOtTD!qrb-1BC;<~Y z-?%h0^;*L9nos6Xeo6-7DuP44y6+UUYe^@w4&1omw_Gz<(aBdyi^5&Iny>iqm54y9C3df2za;GKE-H*nGR~=BPLw0~`waBJD|& z2*l;7t2o}XgdB`NxRNLR(vL+S4N!M<|>IF4eRidJvh z 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%0DRK6zS`rg!7w2E@|`t?oMW=kpNctqsX4s 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 Ts{{B~$Nzf?v-@8-fyw^@_z(2- diff --git a/provers/cairo/benches/proofs/fibonacci_500.proof b/provers/cairo/benches/proofs/fibonacci_500.proof deleted file mode 100644 index d297fae15bac42c549d1df593bca7c8c4a6fc1fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 336318 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
7S6~U10aud?_4%|f`rAUF=M%wnc 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%0DF+=zrxu7BxgWbPka08F1#)0qRW#&>R`E(40 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
    82%-)km&t{9= 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

    ?8(JYE??#5i{_+K___ni{Sp$1(w&YlUOOr z7VOvOkFjA@1a2h3ICMM0UccC%VkRd~dBMq05EH9XH@)1W_E0GZYr_3A5l#;On zioeg1O$P6oe9geH9R5Xg3={M6o`lDOdxLTx5tb?%!u%6_L4>{p%WzkbF0}XpabWr= z81D@qjt6|u4dh;HE?H@{80gRGi^%$|QBPGc63IX~fOC!C?sLyww0f z%^vl@d?&|a!eK8_ob%}iLMB?hLcdlD?5oiYK3C<4iCkFsH^aB$7kK@GdG>i`uy^jG{8%!v`U=iSC0ZCa!WHB`Pnn!>Na zywxNV`64U%$M%22|0{p}V~dzR`}u+gpcC2b7zv6)U%qaIZ!l5HG#?ca?AO2Y(^j5D z*99y*E_vV*R&Sl!C{{BE6!E9}uX{A8Hm}-1E-nScQ7xbyd+n7Ga=bh$)<}vY}jLxew|P~`hJNHO6@_(H&HU!;K4~> zwXEQ%aL^RzXE}!+=^~NWw6)0t;m9+D@{|QkAV-GG_tGp)IMpF z^>B?ZG%kcnRZwApk6xWaqLstZ5;#XVBPt9X?8!xP?KV)K?{zYXfoA#M6l}O1aQVT=A#GnUO&l2A7Ku1 zFzWk)kR>13S72g)xBYHX802M?^`-sx0#_i?@E)#oHA3P9)o0PUUGu$K7YsefXz2X< zn@~mxdd%wkdEJRplmbmH(09Y$Uli#7*^DcmXmP89!Lwg>j6~8itUS78YN}5UObgfG zlqK^b55a8relK5mwN+CjI=vZ3&T(2S^L!!)kYhQHr+OTf#A?Ls*%fHXTW$WPX!ZNc zjIuvb^Xc<3WX~XIPO7L#Ru)AA&tBCdTv)_}HUG8Xm$yy9ForW6w0RJNIGj4n2g_GgR+^&I>q(mfCv?xjmUR5;IjfnR%<4t=pH5{pW`u z2+fJRWe;`qUcUD<~(!uz7Z~LV2CTt!W!DqcW~M?Gbb8`-#LqO zlXmEIH$*?@Vh>T$NYq z#*|!rV+58~j&|zCIEeg0CBhnn!ygeb0Zw8AWik;Nf%pfeymHyh$CW4_@ukf7VLJ}0 z#_>?SAhsMd@}c_E#k*;Xz6D0@ed59+2v#+Wr8^zF1+v|QV z805w%abYl2gQiQy*8?=7t;o&veU1DnF z9GW`{%bVVICksIQBzMZtKVp120gSzTL@eZKVMt=kCN4t0ZK82Dm?fc*K!@aM&~1hX z3*~4il=c#;Ki+aCp6V{6t#!CIfX0QxDm79*MUsh?+@$l$4>40@8FL}&dxVd`zRiHI$cx$IJf?7-hi^h z{%T#uVSO?;8tH^eZDSZ`NQMaoAihbm&Dv20c;(y`_~17W9d974g|Q zBPrew=DB2q5r->5RH$XVgAnbLHYL0>c?uEc|08+hR2GNYK62jj_d(;yp$i@ag6no^ zz9v2@vs$IT4a-(h6JWmZB0bnXqCM9;=p2_10{n?0rbf7`29t5n7`whnRkiDQ^u+-% zEK|Wu*aftn(4)`NO}P^!pm+Im@XgO?R=N@yde@k%KpP3YZw^$w(1LK01B6gX9?KhJ zh~vjxeGOWv5-5F;HB`oBIoP}hf78Xlj(Hvz)otvOq>0q<1Og_PhRPZL(!9#|*0w$x z6tQUNcD|PUBJY&&HhVbklp*mMW8>rIr^Ux`^N*Y97k4o>@

    Fuo>iQc5 zhRlrc^b@$`XQnw~Zw)NyFAxVDuIBr2dJCiNQmn48&kSz*f9i)MToM{kul>ScszD4z z#1i!ZADNITuYkSFzuG}<29x0T>MrG&{Y@~1p1LNWIUBm(2SZ2l(Z2J8Or{2F6mHrG zUM&)mH3YV@1tBa@uMyLovqlw=y&a9I0x?tX2DvfT8CDD&9vhmTVwLd*whzc1)V?%9n6n<|VkrqtT`kxiG?y-$*ugj5%HkcZYP$e)>h)F$ zsPu0I#*fs*>upANoN5$&nSEaC^Bvk%F&<4&GdkOUFeLk6xAS0LI+8=)IS>i4_OvAHGd=T&Ctac_s*bLF0GW-=FCz zOqyPCtawe&l&A+ibLRQhs5j)=&wvZz{W(#GHQ!F2oVZn*Pf_*$=Nea@(Qel)dsBhy+4}+#GytVxw zXAhz4w2JZSok4t~5ZJ&H23U7&IsTD%?|o-^3sf z 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 diff --git a/provers/cairo/benches/proofs/fibonacci_70000.proof b/provers/cairo/benches/proofs/fibonacci_70000.proof deleted file mode 100644 index 99813bb8847aaed8bed868ee28de8f95028f83dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65710 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 l|MH=rke=fI%lVJ_s{_!Vs^>TOlX9{c0S|x9-=8 (res: felt) { - return (res = x * y); -} - -func main() { - let x = 2; - let y = 3; - - let (res) = mul(x, y); - assert res = 6; - - return (); -} diff --git a/provers/cairo/cairo_programs/cairo0/compare_lesser_array.cairo b/provers/cairo/cairo_programs/cairo0/compare_lesser_array.cairo deleted file mode 100644 index 78d3ca454..000000000 --- a/provers/cairo/cairo_programs/cairo0/compare_lesser_array.cairo +++ /dev/null @@ -1,39 +0,0 @@ -%builtins range_check - -from starkware.cairo.common.bool import TRUE, FALSE -from starkware.cairo.common.alloc import alloc -from starkware.cairo.common.math_cmp import is_le - -// Returns TRUE is array_a is lesser than array_b, which means every element in a is lesser than every element in b -func compare_lesser_array{range_check_ptr: felt}( - array_a: felt*, array_b: felt*, array_length: felt, iterator: felt -) -> (r: felt) { - if (iterator == array_length) { - return (TRUE,); - } - let comparison = is_le(array_a[iterator], array_b[iterator]); - if (comparison == FALSE) { - return (FALSE,); - } - return compare_lesser_array(array_a, array_b, array_length, iterator + 1); -} - -func fill_array(array: felt*, base: felt, step: felt, array_length: felt, iterator: felt) { - if (iterator == array_length) { - return (); - } - assert array[iterator] = base + step * iterator; - return fill_array(array, base, step, array_length, iterator + 1); -} - -func main{range_check_ptr: felt}() { - alloc_locals; - tempvar array_length = 10; - let (array_a: felt*) = alloc(); - let (array_b: felt*) = alloc(); - fill_array(array_a, 5, 2, array_length, 0); - fill_array(array_b, 7, 3, array_length, 0); - let result: felt = compare_lesser_array(array_a, array_b, array_length, 0); - assert result = TRUE; - return (); -} diff --git a/provers/cairo/cairo_programs/cairo0/fibonacci_10.cairo b/provers/cairo/cairo_programs/cairo0/fibonacci_10.cairo deleted file mode 100644 index f8f4da371..000000000 --- a/provers/cairo/cairo_programs/cairo0/fibonacci_10.cairo +++ /dev/null @@ -1,19 +0,0 @@ -func main() { - // Call fib(1, 1, 10). - let result: felt = fib(1, 1, 10); - - // Make sure the 10th Fibonacci number is 144. - assert result = 144; - ret; -} - -func fib(first_element, second_element, n) -> (res: felt) { - jmp fib_body if n != 0; - tempvar result = second_element; - return (second_element,); - - fib_body: - tempvar y = first_element + second_element; - return fib(second_element, y, n - 1); -} - diff --git a/provers/cairo/cairo_programs/cairo0/fibonacci_100.cairo b/provers/cairo/cairo_programs/cairo0/fibonacci_100.cairo deleted file mode 100644 index 6b3c2907e..000000000 --- a/provers/cairo/cairo_programs/cairo0/fibonacci_100.cairo +++ /dev/null @@ -1,19 +0,0 @@ -func main() { - // Call fib(1, 1, 10). - let result: felt = fib(1, 1, 100); - - // Make sure the 100th Fibonacci number is 927372692193078999176. - assert result = 927372692193078999176; - ret; -} - -func fib(first_element, second_element, n) -> (res: felt) { - jmp fib_body if n != 0; - tempvar result = second_element; - return (second_element,); - - fib_body: - tempvar y = first_element + second_element; - return fib(second_element, y, n - 1); -} - diff --git a/provers/cairo/cairo_programs/cairo0/fibonacci_1000.cairo b/provers/cairo/cairo_programs/cairo0/fibonacci_1000.cairo deleted file mode 100644 index d1acf9c8d..000000000 --- a/provers/cairo/cairo_programs/cairo0/fibonacci_1000.cairo +++ /dev/null @@ -1,19 +0,0 @@ -func main() { - // Call fib(1, 1, 1000). - let result: felt = fib(1, 1, 1000); - - // Make sure the 1000th Fibonacci number is 222450955505511890955301767713383614666194461405743219770606958667979327682. - assert result = 222450955505511890955301767713383614666194461405743219770606958667979327682; - ret; -} - -func fib(first_element, second_element, n) -> (res: felt) { - jmp fib_body if n != 0; - tempvar result = second_element; - return (second_element,); - - fib_body: - tempvar y = first_element + second_element; - return fib(second_element, y, n - 1); -} - diff --git a/provers/cairo/cairo_programs/cairo0/fibonacci_10000.cairo b/provers/cairo/cairo_programs/cairo0/fibonacci_10000.cairo deleted file mode 100644 index 61bb5d43a..000000000 --- a/provers/cairo/cairo_programs/cairo0/fibonacci_10000.cairo +++ /dev/null @@ -1,19 +0,0 @@ -func main() { - // Call fib(1, 1, 10000). - let result: felt = fib(1, 1, 10000); - - // Make sure the 10000th Fibonacci number is 2287375788429092341882876480321135809824733217263858843173749298459021701670. - assert result = 2287375788429092341882876480321135809824733217263858843173749298459021701670; - ret; -} - -func fib(first_element, second_element, n) -> (res: felt) { - jmp fib_body if n != 0; - tempvar result = second_element; - return (second_element,); - - fib_body: - tempvar y = first_element + second_element; - return fib(second_element, y, n - 1); -} - diff --git a/provers/cairo/cairo_programs/cairo0/fibonacci_10000_loop.cairo b/provers/cairo/cairo_programs/cairo0/fibonacci_10000_loop.cairo deleted file mode 100644 index 63ceaf213..000000000 --- a/provers/cairo/cairo_programs/cairo0/fibonacci_10000_loop.cairo +++ /dev/null @@ -1,21 +0,0 @@ - -// Looped fibonacci is more efficient -// than calling the fibo function with recursion -// For n = 5, it's 31 steps vs 49 steps -// This is useful to compare with other vms that are not validating the call stack for fibonacci - -func main{}() { - tempvar x0 = 0; - tempvar x1 = 1; - tempvar fib_acc = x0 + x1; - tempvar n = 10000; - loop: - tempvar x0 = x1; - tempvar x1 = fib_acc; - tempvar fib_acc = x0 + x1; - tempvar n = n - 1; - jmp loop if n != 0; - - assert fib_acc = 2287375788429092341882876480321135809824733217263858843173749298459021701670; - return (); -} diff --git a/provers/cairo/cairo_programs/cairo0/fibonacci_5.cairo b/provers/cairo/cairo_programs/cairo0/fibonacci_5.cairo deleted file mode 100644 index 6723ba9b8..000000000 --- a/provers/cairo/cairo_programs/cairo0/fibonacci_5.cairo +++ /dev/null @@ -1,19 +0,0 @@ -func main() { - // Call fib(1, 1, 5). - let result: felt = fib(1, 1, 5); - - // Make sure the 5th Fibonacci number is 13. - assert result = 13; - ret; -} - -func fib(first_element, second_element, n) -> (res: felt) { - jmp fib_body if n != 0; - tempvar result = second_element; - return (second_element,); - - fib_body: - tempvar y = first_element + second_element; - return fib(second_element, y, n - 1); -} - diff --git a/provers/cairo/cairo_programs/cairo0/fibonacci_500.cairo b/provers/cairo/cairo_programs/cairo0/fibonacci_500.cairo deleted file mode 100644 index c2bccb34d..000000000 --- a/provers/cairo/cairo_programs/cairo0/fibonacci_500.cairo +++ /dev/null @@ -1,19 +0,0 @@ -func main() { - // Call fib(1, 1, 500). - let result: felt = fib(1, 1, 500); - - // Make sure the 500th Fibonacci number is 2703462216091053821850160095716009632185810905688261857143077152353261240886. - assert result = 2703462216091053821850160095716009632185810905688261857143077152353261240886; - ret; -} - -func fib(first_element, second_element, n) -> (res: felt) { - jmp fib_body if n != 0; - tempvar result = second_element; - return (second_element,); - - fib_body: - tempvar y = first_element + second_element; - return fib(second_element, y, n - 1); -} - diff --git a/provers/cairo/cairo_programs/cairo0/fibonacci_5_loop.cairo b/provers/cairo/cairo_programs/cairo0/fibonacci_5_loop.cairo deleted file mode 100644 index 328b2085c..000000000 --- a/provers/cairo/cairo_programs/cairo0/fibonacci_5_loop.cairo +++ /dev/null @@ -1,21 +0,0 @@ - -// Looped fibonacci is more efficient -// than calling the fibo function with recursion -// For n = 5, it's 31 steps vs 49 steps -// This is useful to compare with other vms that are not validating the call stack for fibonacci - -func main{}() { - tempvar x0 = 0; - tempvar x1 = 1; - tempvar fib_acc = x0 + x1; - tempvar n = 5; - loop: - tempvar x0 = x1; - tempvar x1 = fib_acc; - tempvar fib_acc = x0 + x1; - tempvar n = n - 1; - jmp loop if n != 0; - - assert fib_acc = 13; - return (); -} diff --git a/provers/cairo/cairo_programs/cairo0/fibonacci_5_memory.bin b/provers/cairo/cairo_programs/cairo0/fibonacci_5_memory.bin deleted file mode 100644 index d2757322289e73359afb66815ed8f515bb98f5ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2840 zcma)-*IL3r5QT{%MC{l*HdO4rD|X*1x%Yv+P>Au%Ir(&#aVA`x%-KIPTP7qZWLFX; zQ4p7l2tDcYoX$o!?Knt(#SwGBbr?oo-vtn}LE35mCDD6LzzS6i zw6Z=G+i?_}wl8BWl%CsHR1y1N+{jIU)7CMW=le|SHpIG9Irsnkrhjqms4C{0$+=eA z_jQq*B_}A(E1cuF(pU4~K9bHC`XpQcr|sV&xFyyXv?lnj%{)|hobfVlw7yyar~PlN z8o4!N-8wkdN9f5q9KOdM0Am9xzGxWVglg+;81rp`)4mJa;5bi&p6tM3e|Z3mU1@?^BowuLvWlYLQjt1XzM)&r}gs*IBj1}jrq>NY5R8$j`Kw5$psv3y_euZ zFT-Es3Zb?y*T#G|;I#MS798h^(33kj+IpMdwD0ddIBj1ZjQJkHY4QZ1sesQI*Vg+2 KPFwG*k^2S=9A&cr diff --git a/provers/cairo/cairo_programs/cairo0/fibonacci_5_trace.bin b/provers/cairo/cairo_programs/cairo0/fibonacci_5_trace.bin deleted file mode 100644 index 6362f9ef71482f1f57dbf519bba36a4018aa908d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1536 zcmeH{(Mm!=6h(~)kq}YT@*=^-6id;H(x?VkUxp8q)%1JuTKZ7@I(;NwPai8=>a5>{KWP0n{ZYJ^J`pd{r{ewenGzp!eCC?R z=Sdu&XK{R9#PN9zC-I?^_`GQzpM^L+OL2VO#qs$FC-I?^_dH diff --git a/provers/cairo/cairo_programs/cairo0/fibonacci_70000.cairo b/provers/cairo/cairo_programs/cairo0/fibonacci_70000.cairo deleted file mode 100644 index 791ab2dfb..000000000 --- a/provers/cairo/cairo_programs/cairo0/fibonacci_70000.cairo +++ /dev/null @@ -1,19 +0,0 @@ -func main() { - // Call fib(1, 1, 70000). - let result: felt = fib(1, 1, 70000); - - // Make sure the 70000th Fibonacci number is 2824861842081921227084209061704696342102277985526232307654372591609636515753. - assert result = 2824861842081921227084209061704696342102277985526232307654372591609636515753; - ret; -} - -func fib(first_element, second_element, n) -> (res: felt) { - jmp fib_body if n != 0; - tempvar result = second_element; - return (second_element,); - - fib_body: - tempvar y = first_element + second_element; - return fib(second_element, y, n - 1); -} - diff --git a/provers/cairo/cairo_programs/cairo0/lt_comparison.cairo b/provers/cairo/cairo_programs/cairo0/lt_comparison.cairo deleted file mode 100644 index bf52c5d66..000000000 --- a/provers/cairo/cairo_programs/cairo0/lt_comparison.cairo +++ /dev/null @@ -1,10 +0,0 @@ -%builtins range_check - -from starkware.cairo.common.math_cmp import is_le - -func main{range_check_ptr: felt}() { - let result = is_le(2, 6); - assert result = 1; - return (); -} - diff --git a/provers/cairo/cairo_programs/cairo0/output_program.cairo b/provers/cairo/cairo_programs/cairo0/output_program.cairo deleted file mode 100644 index 5b1a96e74..000000000 --- a/provers/cairo/cairo_programs/cairo0/output_program.cairo +++ /dev/null @@ -1,12 +0,0 @@ -%builtins output - -from starkware.cairo.common.serialize import serialize_word - -func main{output_ptr: felt*}() { - const MY_INT = 1234; - - // this will print MY_INT - serialize_word(MY_INT); - - return (); -} diff --git a/provers/cairo/cairo_programs/cairo0/rc_program.cairo b/provers/cairo/cairo_programs/cairo0/rc_program.cairo deleted file mode 100644 index a2c2614b2..000000000 --- a/provers/cairo/cairo_programs/cairo0/rc_program.cairo +++ /dev/null @@ -1,9 +0,0 @@ -%builtins range_check - -from starkware.cairo.common.math import assert_nn - -func main{range_check_ptr: felt}() { - assert_nn(5); - assert_nn(2); - return (); -} diff --git a/provers/cairo/cairo_programs/cairo0/signed_div_rem.cairo b/provers/cairo/cairo_programs/cairo0/signed_div_rem.cairo deleted file mode 100644 index 705869437..000000000 --- a/provers/cairo/cairo_programs/cairo0/signed_div_rem.cairo +++ /dev/null @@ -1,50 +0,0 @@ -%builtins output range_check -from starkware.cairo.common.math import signed_div_rem, assert_le -from starkware.cairo.common.serialize import serialize_word - -func signed_div_rem_man{range_check_ptr}(value, div, bound) -> (q: felt, r: felt) { - let r = [range_check_ptr]; - let biased_q = [range_check_ptr + 1]; // == q + bound. - let range_check_ptr = range_check_ptr + 2; - %{ - from starkware.cairo.common.math_utils import as_int, assert_integer - - assert_integer(ids.div) - assert 0 < ids.div <= PRIME // range_check_builtin.bound, \ - f'div={hex(ids.div)} is out of the valid range.' - - assert_integer(ids.bound) - assert ids.bound <= range_check_builtin.bound // 2, \ - f'bound={hex(ids.bound)} is out of the valid range.' - - int_value = as_int(ids.value, PRIME) - q, ids.r = divmod(int_value, ids.div) - - assert -ids.bound <= q < ids.bound, \ - f'{int_value} / {ids.div} = {q} is out of the range [{-ids.bound}, {ids.bound}).' - - ids.biased_q = q + ids.bound - %} - let q = biased_q - bound; - assert value = q * div + r; - assert_le(r, div - 1); - assert_le(biased_q, 2 * bound - 1); - return (q, r); -} - -func main{output_ptr: felt*, range_check_ptr: felt}() { - let (q_negative_expected, r_negative_expected) = signed_div_rem(-10, 3, 29); - let (q_negative, r_negative) = signed_div_rem_man(-10, 3, 29); - assert q_negative_expected = q_negative; - assert r_negative_expected = r_negative; - serialize_word(q_negative_expected); - serialize_word(q_negative); - serialize_word(r_negative_expected); - serialize_word(r_negative); - - let (q_expected, r_expected) = signed_div_rem(10, 3, 29); - let (q, r) = signed_div_rem_man(10, 3, 29); - assert q_expected = q; - assert r_expected = r; - return (); -} diff --git a/provers/cairo/cairo_programs/cairo0/simple_program.cairo b/provers/cairo/cairo_programs/cairo0/simple_program.cairo deleted file mode 100644 index f42affecb..000000000 --- a/provers/cairo/cairo_programs/cairo0/simple_program.cairo +++ /dev/null @@ -1,7 +0,0 @@ -func main() { - let x = 1; - let y = 2; - assert x + y = 3; - return (); -} - diff --git a/provers/cairo/ffi/Cargo.toml b/provers/cairo/ffi/Cargo.toml deleted file mode 100644 index f7437cf02..000000000 --- a/provers/cairo/ffi/Cargo.toml +++ /dev/null @@ -1,15 +0,0 @@ -[package] -name = "cairo-platinum-ffi" -version = "0.1.0" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -# libc = "0.2" -stark-platinum-prover = { path = "../../stark" } -cairo-platinum-prover = { path = "../" } -bincode = { version = "2.0.0-rc.2", tag = "v2.0.0-rc.2", git = "https://github.com/bincode-org/bincode.git", features = ['serde'] } - -[lib] -crate-type = ["cdylib", "staticlib", "lib"] diff --git a/provers/cairo/ffi/fibo_5.proof b/provers/cairo/ffi/fibo_5.proof deleted file mode 100644 index fc112dec4c6077560ff5305655964d8482db223f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 265809 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

    pWvZlaTzCQUr@((&v5 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

    ~G$M8OzL%h7CR+euuv!p(S>DtTENd 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%0Afgr6sf^oRJT4XY-Kx#OXH*dD3N(RO>Hi_h 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�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 diff --git a/provers/cairo/ffi/src/lib.rs b/provers/cairo/ffi/src/lib.rs deleted file mode 100644 index b5ea7e0a5..000000000 --- a/provers/cairo/ffi/src/lib.rs +++ /dev/null @@ -1,71 +0,0 @@ -use cairo_platinum_prover::air::CairoAIR; -use stark_platinum_prover::proof::options::ProofOptions; -use stark_platinum_prover::proof::options::SecurityLevel; -use stark_platinum_prover::transcript::StoneProverTranscript; -use stark_platinum_prover::verifier::{IsStarkVerifier, Verifier}; - -fn verify_cairo_proof_ffi(proof_bytes: &[u8], proof_options: &ProofOptions) -> bool { - let bytes = proof_bytes; - - // This logic is the same as main verify, with only error handling changing. In ffi, we simply return a false if the proof is invalid, instead of rising an error. - - // Proof len was stored as an u32, 4u8 needs to be read - let proof_len = u32::from_le_bytes(bytes[0..4].try_into().unwrap()) as usize; - - let bytes = &bytes[4..]; - if bytes.len() < proof_len { - return false; - } - - let Ok((proof, _)) = - bincode::serde::decode_from_slice(&bytes[0..proof_len], bincode::config::standard()) - else { - return false; - }; - let bytes = &bytes[proof_len..]; - - let Ok((pub_inputs, _)) = bincode::serde::decode_from_slice(bytes, bincode::config::standard()) - else { - return false; - }; - - Verifier::::verify( - &proof, - &pub_inputs, - proof_options, - StoneProverTranscript::new(&[]), - ) -} - -// Fibo 70k is 260 kb -// 2 MiB is more than enough -const MAX_PROOF_SIZE: usize = 1024 * 1024; - -/// WASM Function for verifying a proof with default 100 bits of security -#[no_mangle] -pub extern "C" fn verify_cairo_proof_ffi_100_bits( - proof_bytes: &[u8; MAX_PROOF_SIZE], - real_len: usize, -) -> bool { - let (real_proof_bytes, _) = proof_bytes.split_at(real_len); - - println!("Len: {:?} ", real_proof_bytes.len()); - let proof_options = ProofOptions::new_secure(SecurityLevel::Conjecturable100Bits, 3); - verify_cairo_proof_ffi(real_proof_bytes, &proof_options) -} - -#[cfg(test)] -mod tests { - use super::*; - - const PROOF: &[u8; 265809] = include_bytes!("../fibo_5.proof"); - - #[test] - fn fibo_5_proof_verifies() { - let mut proof_buffer = [0u8; super::MAX_PROOF_SIZE]; - let proof_size = PROOF.len(); - proof_buffer[..proof_size].clone_from_slice(PROOF); - let result = verify_cairo_proof_ffi_100_bits(&proof_buffer, proof_size); - assert!(result) - } -} diff --git a/provers/cairo/proof.proof b/provers/cairo/proof.proof deleted file mode 100644 index 82d522cb27fa6c315efaf36d6a1e1013ae865695..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 265805 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�Gj0AtcKT%u-GLiM$ zqMZ%n4a;IRRI^H%4{9X)3(*+xMJFN~&EW4d0EmXf)H1W+L=koTUr)&fY|C*k(wNKI z8!{L!><=U=RRCnQEfGEQikUowxR~JwoW-H>6OZ}fz7L+~Qe1gL=_~-G4liBn&~Ozk zf40}_v}0dX7TsNuZCz+icGWDMjP1gfU37$kS?sm)aF> ztaUB`U;@*Xy=uv#e>GTkE(m3Ep^jYAS6CcJB@jNuWr$G@j zdyt=k!<>XPH-G*2>Z)RsuRV!2=c+c1pUt)7RDbFU$;n3u z?SQe2|L_+C%dpY;fhC1XWxrlXl80X9x%P>y&6Ni=3b(~o7@gM4Z$VF6D)9_S>H2BE zfd9MS1vYcM`2^E-XNOn&=o@eYEj3VJ+{WIhw}@EfOOBZYdZLMVkbFzAR#UNzm+Ghd z9oUZwpxqz|rziOh#-)7R;JU!?E)SHcC^g^eZDw{pQBJQ^SA-^)U#3@Z507!okwNu# zvIc5{wrOam-yTp+mH50?DQuHwMpmxTTz4ZXJ6Uc{o+lSy?MYYgbSK)%*Pw~bEivk# zHzI93jm&U(xUqtTsy~^~-G2qb3@?!8F(L-(G zy}3JM#+dZE`nLf%-+ite{sYF3?lYRAX_P4B0wsE%X($pO4rB{3JZL9cMhGRlUIFw_)VfXO!WAk?c9`Rj7vcJR?qv3OLC zWl2!&YMMylaWeq>VDbf5xZk^n+gZ1Ls_SBHU@hf4Rg^38Qmze4>?JwqqhMzX2MmQa z()p@%P1o}!3>QYn9AxSuY|x!n76iPp*IxH6{3svX(aT>y+IJ83EO_bXl5i()rU z1ImDLZ+E1R&hZ%Hr8rX%K^p+9OPW@9Aq5V1PB@7Z+H3>gXIiBtjg4bDbs4BJr#&G6 zvKtb^fS3w)(|L{ev#n(fT{gwR*Z4$1%~JbKky80zl>c^qY~22-2a0|6OMEz3>O@wYzQ=HI7S7hT=YB813Khqp;G0 z%6P)Icig4)+5q*ofh6bDNdi^iavH!{`7oD?*aglkEHP z(LOF4-Ub`B)l?TqW~YR?H_q%IH^G1{xO8T@g!dP+Sxs&4dQ0ZAvl#@pb2if54|L%8 zHM%81KD)s9htzz&{Dk6T+&z_^X_Ns4=(ddYi?w)Ii~P7He*nTN^Zo3YjF(re2hle( z3k;&x8XJaLr51u~DHGa>13Lh+gWmLl-U)51wYqJwCRbM7m6v9hE;uF$@^w=GmjMVy z(BDv;pKeMG0s=L�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 ruD@%^*}u?m2Wt3doWu for SegmentName { - fn from(value: &str) -> Self { - match value { - "range_check" => SegmentName::RangeCheck, - "output" => SegmentName::Output, - "program" => SegmentName::Program, - "execution" => SegmentName::Execution, - "ecdsa" => SegmentName::Ecdsa, - "pedersen" => SegmentName::Pedersen, - n => panic!("Invalid segment name {n}"), - } - } -} - -#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] -pub struct Segment { - pub begin_addr: usize, - pub stop_ptr: usize, -} - -impl Segment { - pub fn new(begin_addr: u64, stop_ptr: u64) -> Self { - let begin_addr: usize = begin_addr.try_into().unwrap(); - let stop_ptr: usize = stop_ptr.try_into().unwrap(); - - stop_ptr.checked_sub(begin_addr).unwrap(); - - Self { - begin_addr, - stop_ptr, - } - } - - pub fn segment_size(&self) -> usize { - self.stop_ptr - self.begin_addr - 1 - } -} - -impl From<&MemorySegmentAddresses> for Segment { - fn from(value: &MemorySegmentAddresses) -> Self { - Self { - begin_addr: value.begin_addr, - stop_ptr: value.stop_ptr, - } - } -} - -pub type MemorySegmentMap = HashMap; - -#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] -pub struct PublicInputs { - pub pc_init: Felt252, - pub ap_init: Felt252, - pub fp_init: Felt252, - pub pc_final: Felt252, - pub ap_final: Felt252, - // These are Option because they're not known until - // the trace is obtained. They represent the minimum - // and maximum offsets used during program execution. - // TODO: A possible refactor is moving them to the proof. - // minimum range check value (0 < range_check_min < range_check_max < 2^16) - pub range_check_min: Option, - // maximum range check value - pub range_check_max: Option, - // Range-check builtin address range - pub memory_segments: MemorySegmentMap, - pub public_memory: HashMap, - pub num_steps: usize, // number of execution steps -} - -impl PublicInputs { - /// Creates a Public Input from register states and memory - /// - In the future we should use the output of the Cairo Runner. This is not currently supported in Cairo RS - /// - RangeChecks are not filled, and the prover mutates them inside the prove function. This works but also should be loaded from the Cairo RS output - pub fn from_regs_and_mem( - register_states: &RegisterStates, - memory: &CairoMemory, - codelen: usize, - ) -> Self { - let public_memory = (1..=codelen as u64) - .map(|i| (Felt252::from(i), *memory.get(&i).unwrap())) - .collect::>(); - - let last_step = ®ister_states.rows[register_states.steps() - 1]; - - PublicInputs { - pc_init: Felt252::from(register_states.rows[0].pc), - ap_init: Felt252::from(register_states.rows[0].ap), - fp_init: Felt252::from(register_states.rows[0].fp), - pc_final: FieldElement::from(last_step.pc), - ap_final: FieldElement::from(last_step.ap), - range_check_min: None, - range_check_max: None, - memory_segments: MemorySegmentMap::new(), - public_memory, - num_steps: register_states.steps(), - } - } -} - -impl AsBytes for PublicInputs { - fn as_bytes(&self) -> Vec { - let mut bytes = vec![]; - let pc_init_bytes = self.pc_init.to_bytes_be(); - let felt_length = pc_init_bytes.len(); - bytes.extend(felt_length.to_be_bytes()); - bytes.extend(pc_init_bytes); - bytes.extend(self.ap_init.to_bytes_be()); - bytes.extend(self.fp_init.to_bytes_be()); - bytes.extend(self.pc_final.to_bytes_be()); - bytes.extend(self.ap_final.to_bytes_be()); - - if let Some(range_check_min) = self.range_check_min { - bytes.extend(1u8.to_be_bytes()); - bytes.extend(range_check_min.to_be_bytes()); - } else { - bytes.extend(0u8.to_be_bytes()); - } - - if let Some(range_check_max) = self.range_check_max { - bytes.extend(1u8.to_be_bytes()); - bytes.extend(range_check_max.to_be_bytes()); - } else { - bytes.extend(0u8.to_be_bytes()); - } - - let mut memory_segment_bytes = vec![]; - for (segment, range) in self.memory_segments.iter() { - let segment_type = match segment { - SegmentName::RangeCheck => 0u8, - SegmentName::Output => 1u8, - SegmentName::Program => 2u8, - SegmentName::Execution => 3u8, - SegmentName::Ecdsa => 4u8, - SegmentName::Pedersen => 5u8, - }; - memory_segment_bytes.extend(segment_type.to_be_bytes()); - memory_segment_bytes.extend(range.begin_addr.to_be_bytes()); - memory_segment_bytes.extend(range.stop_ptr.to_be_bytes()); - } - let memory_segment_length = self.memory_segments.len(); - bytes.extend(memory_segment_length.to_be_bytes()); - bytes.extend(memory_segment_bytes); - - let mut public_memory_bytes = vec![]; - for (address, value) in self.public_memory.iter() { - public_memory_bytes.extend(address.to_bytes_be()); - public_memory_bytes.extend(value.to_bytes_be()); - } - let public_memory_length = self.public_memory.len(); - bytes.extend(public_memory_length.to_be_bytes()); - bytes.extend(public_memory_bytes); - - bytes.extend(self.num_steps.to_be_bytes()); - - bytes - } -} - -impl Deserializable for PublicInputs { - fn deserialize(bytes: &[u8]) -> Result - where - Self: Sized, - { - let mut bytes = bytes; - let felt_len = usize::from_be_bytes( - bytes - .get(0..8) - .ok_or(DeserializationError::InvalidAmountOfBytes)? - .try_into() - .map_err(|_| DeserializationError::InvalidAmountOfBytes)?, - ); - bytes = &bytes[8..]; - let pc_init = Felt252::from_bytes_be( - bytes - .get(..felt_len) - .ok_or(DeserializationError::InvalidAmountOfBytes)?, - )?; - bytes = &bytes[felt_len..]; - let ap_init = Felt252::from_bytes_be( - bytes - .get(..felt_len) - .ok_or(DeserializationError::InvalidAmountOfBytes)?, - )?; - bytes = &bytes[felt_len..]; - let fp_init = Felt252::from_bytes_be( - bytes - .get(..felt_len) - .ok_or(DeserializationError::InvalidAmountOfBytes)?, - )?; - bytes = &bytes[felt_len..]; - let pc_final = Felt252::from_bytes_be( - bytes - .get(..felt_len) - .ok_or(DeserializationError::InvalidAmountOfBytes)?, - )?; - bytes = &bytes[felt_len..]; - let ap_final = Felt252::from_bytes_be( - bytes - .get(..felt_len) - .ok_or(DeserializationError::InvalidAmountOfBytes)?, - )?; - bytes = &bytes[felt_len..]; - - if bytes.is_empty() { - return Err(DeserializationError::InvalidAmountOfBytes); - } - let range_check_min = match bytes[0] { - 0 => { - bytes = &bytes[1..]; - None - } - 1 => { - bytes = &bytes[1..]; - let range_check_min = u16::from_be_bytes( - bytes[..2] - .try_into() - .map_err(|_| DeserializationError::InvalidAmountOfBytes)?, - ); - bytes = &bytes[2..]; - Some(range_check_min) - } - _ => return Err(DeserializationError::FieldFromBytesError), - }; - - if bytes.is_empty() { - return Err(DeserializationError::InvalidAmountOfBytes); - } - let range_check_max = match bytes[0] { - 0 => { - bytes = &bytes[1..]; - None - } - 1 => { - bytes = &bytes[1..]; - let range_check_max = u16::from_be_bytes( - bytes[..2] - .try_into() - .map_err(|_| DeserializationError::InvalidAmountOfBytes)?, - ); - bytes = &bytes[2..]; - Some(range_check_max) - } - _ => return Err(DeserializationError::FieldFromBytesError), - }; - - let mut memory_segments = MemorySegmentMap::new(); - let memory_segment_length = usize::from_be_bytes( - bytes - .get(0..8) - .ok_or(DeserializationError::InvalidAmountOfBytes)? - .try_into() - .map_err(|_| DeserializationError::InvalidAmountOfBytes)?, - ); - bytes = &bytes[8..]; - for _ in 0..memory_segment_length { - if bytes.is_empty() { - return Err(DeserializationError::InvalidAmountOfBytes); - } - let segment_type = match bytes[0] { - 0u8 => SegmentName::RangeCheck, - 1u8 => SegmentName::Output, - 2u8 => SegmentName::Program, - 3u8 => SegmentName::Execution, - 4u8 => SegmentName::Ecdsa, - 5u8 => SegmentName::Pedersen, - _ => return Err(DeserializationError::FieldFromBytesError), - }; - bytes = &bytes[1..]; - let start = u64::from_be_bytes( - bytes - .get(0..8) - .ok_or(DeserializationError::InvalidAmountOfBytes)? - .try_into() - .map_err(|_| DeserializationError::InvalidAmountOfBytes)?, - ); - bytes = &bytes[8..]; - let end = u64::from_be_bytes( - bytes - .get(0..8) - .ok_or(DeserializationError::InvalidAmountOfBytes)? - .try_into() - .map_err(|_| DeserializationError::InvalidAmountOfBytes)?, - ); - bytes = &bytes[8..]; - memory_segments.insert(segment_type, Segment::new(start, end)); - } - - let mut public_memory = HashMap::new(); - let public_memory_length = usize::from_be_bytes( - bytes - .get(0..8) - .ok_or(DeserializationError::InvalidAmountOfBytes)? - .try_into() - .map_err(|_| DeserializationError::InvalidAmountOfBytes)?, - ); - bytes = &bytes[8..]; - for _ in 0..public_memory_length { - let address = Felt252::from_bytes_be( - bytes - .get(..felt_len) - .ok_or(DeserializationError::InvalidAmountOfBytes)?, - )?; - bytes = &bytes[felt_len..]; - let value = Felt252::from_bytes_be( - bytes - .get(..felt_len) - .ok_or(DeserializationError::InvalidAmountOfBytes)?, - )?; - bytes = &bytes[felt_len..]; - public_memory.insert(address, value); - } - - let num_steps = usize::from_be_bytes( - bytes - .get(0..8) - .ok_or(DeserializationError::InvalidAmountOfBytes)? - .try_into() - .map_err(|_| DeserializationError::InvalidAmountOfBytes)?, - ); - - Ok(Self { - pc_init, - ap_init, - fp_init, - pc_final, - ap_final, - range_check_min, - range_check_max, - memory_segments, - public_memory, - num_steps, - }) - } -} - -pub struct CairoAIR { - pub context: AirContext, - pub trace_length: usize, - pub pub_inputs: PublicInputs, - pub transition_constraints: - Vec>>, -} - -/// Receives two slices corresponding to the accessed addresses and values, filled with -/// the memory holes and with the (0, 0) public memory dummy accesses. -/// Each (address, value) public memory pair is written in a (0, 0) dummy access until -/// there is no one left. -/// -/// NOTE: At the end of this process there might be some additional (0, 0) dummy accesses -/// that were not overwritten. This is not a problem as long as all the public memory pairs -/// have been written. -fn add_pub_memory_in_public_input_section( - addresses: &[Felt252], - values: &[Felt252], - public_input: &PublicInputs, -) -> (Vec, Vec) { - let mut a_aux = addresses.to_owned(); - let mut v_aux = values.to_owned(); - - let mut pub_addrs = public_input.public_memory.iter(); - - // Iterate over addresses - for (i, a) in a_aux.iter_mut().enumerate() { - // When address `0` is found, it means it corresponds to a dummy access. - if a == &Felt252::zero() { - // While there are public memory addresses left, overwrite the dummy - // (addr, value) accesses with the real public memory pairs. - if let Some((pub_addr, pub_value)) = pub_addrs.next() { - *a = *pub_addr; - v_aux[i] = *pub_value; - } else { - // When there are no public memory pairs left to write, break the - // loop and return the (addr, value) pairs with dummy accesses - // overwritten. - break; - } - } - } - - (a_aux, v_aux) -} - -fn sort_columns_by_memory_address( - adresses: Vec, - values: Vec, -) -> (Vec, Vec) { - let mut tuples: Vec<_> = adresses.into_iter().zip(values).collect(); - tuples.sort_by(|(x, _), (y, _)| x.representative().cmp(&y.representative())); - tuples.into_iter().unzip() -} - -fn generate_memory_permutation_argument_column( - addresses_original: Vec, - values_original: Vec, - addresses_sorted: &[Felt252], - values_sorted: &[Felt252], - rap_challenges: &[Felt252], -) -> Vec { - let z = &rap_challenges[1]; - let alpha = &rap_challenges[0]; - - let mut denom: Vec<_> = addresses_sorted - .iter() - .zip(values_sorted) - .map(|(ap, vp)| z - (ap + alpha * vp)) - .collect(); - FieldElement::inplace_batch_inverse(&mut denom).unwrap(); - // Returns the cumulative products of the numerators and denominators - addresses_original - .iter() - .zip(&values_original) - .zip(&denom) - .scan(Felt252::one(), |product, ((a_i, v_i), den_i)| { - let ret = *product; - *product = ret * ((z - (a_i + alpha * v_i)) * den_i); - Some(*product) - }) - .collect::>() -} - -fn generate_range_check_permutation_argument_column( - offset_column_original: &[Felt252], - offset_column_sorted: &[Felt252], - rap_challenges: &[Felt252], -) -> Vec { - let z = rap_challenges[2]; - - let mut denom: Vec<_> = offset_column_sorted.iter().map(|x| z - x).collect(); - FieldElement::inplace_batch_inverse(&mut denom).unwrap(); - - offset_column_original - .iter() - .zip(&denom) - .scan(Felt252::one(), |product, (num_i, den_i)| { - let ret = *product; - *product = ret * (z - num_i) * den_i; - Some(*product) - }) - .collect::>() -} - -impl AIR for CairoAIR { - type Field = Stark252PrimeField; - type FieldExtension = Stark252PrimeField; - type PublicInputs = PublicInputs; - - const STEP_SIZE: usize = 1; - - /// Creates a new CairoAIR from proof_options - /// - /// # Arguments - /// - /// * `trace_length` - Length of the Cairo execution trace. Must be a power fo two. - /// * `pub_inputs` - Public inputs sent by the Cairo runner. - /// * `proof_options` - STARK proving configuration options. - fn new( - trace_length: usize, - pub_inputs: &Self::PublicInputs, - proof_options: &ProofOptions, - ) -> Self { - debug_assert!(trace_length.is_power_of_two()); - let trace_columns = 59; - - let transition_constraints: Vec< - Box>, - > = vec![ - Box::new(BitPrefixFlag0::new()), - Box::new(BitPrefixFlag1::new()), - Box::new(BitPrefixFlag2::new()), - Box::new(BitPrefixFlag3::new()), - Box::new(BitPrefixFlag4::new()), - Box::new(BitPrefixFlag5::new()), - Box::new(BitPrefixFlag6::new()), - Box::new(BitPrefixFlag7::new()), - Box::new(BitPrefixFlag8::new()), - Box::new(BitPrefixFlag9::new()), - Box::new(BitPrefixFlag10::new()), - Box::new(BitPrefixFlag11::new()), - Box::new(BitPrefixFlag12::new()), - Box::new(BitPrefixFlag13::new()), - Box::new(BitPrefixFlag14::new()), - Box::new(ZeroFlagConstraint::new()), - Box::new(InstructionUnpacking::new()), - Box::new(CpuOperandsMemDstAddr::new()), - Box::new(CpuOperandsMem0Addr::new()), - Box::new(CpuOperandsMem1Addr::new()), - Box::new(CpuUpdateRegistersApUpdate::new()), - Box::new(CpuUpdateRegistersFpUpdate::new()), - Box::new(CpuUpdateRegistersPcCondPositive::new()), - Box::new(CpuUpdateRegistersPcCondNegative::new()), - Box::new(CpuUpdateRegistersUpdatePcTmp0::new()), - Box::new(CpuUpdateRegistersUpdatePcTmp1::new()), - Box::new(CpuOperandsOpsMul::new()), - Box::new(CpuOperandsRes::new()), - Box::new(CpuOpcodesCallPushFp::new()), - Box::new(CpuOpcodesCallPushPc::new()), - Box::new(CpuOpcodesAssertEq::new()), - Box::new(MemoryDiffIsBit0::new()), - Box::new(MemoryDiffIsBit1::new()), - Box::new(MemoryDiffIsBit2::new()), - Box::new(MemoryDiffIsBit3::new()), - Box::new(MemoryDiffIsBit4::new()), - Box::new(MemoryIsFunc0::new()), - Box::new(MemoryIsFunc1::new()), - Box::new(MemoryIsFunc2::new()), - Box::new(MemoryIsFunc3::new()), - Box::new(MemoryIsFunc4::new()), - Box::new(MemoryMultiColumnPermStep0_0::new()), - Box::new(MemoryMultiColumnPermStep0_1::new()), - Box::new(MemoryMultiColumnPermStep0_2::new()), - Box::new(MemoryMultiColumnPermStep0_3::new()), - Box::new(MemoryMultiColumnPermStep0_4::new()), - Box::new(Rc16DiffIsBit0::new()), - Box::new(Rc16DiffIsBit1::new()), - Box::new(Rc16DiffIsBit2::new()), - Box::new(Rc16DiffIsBit3::new()), - Box::new(Rc16PermStep0_0::new()), - Box::new(Rc16PermStep0_1::new()), - Box::new(Rc16PermStep0_2::new()), - Box::new(Rc16PermStep0_3::new()), - Box::new(FlagOp1BaseOp0BitConstraint::new()), - Box::new(FlagResOp1BitConstraint::new()), - Box::new(FlagPcUpdateRegularBit::new()), - Box::new(FlagFpUpdateRegularBit::new()), - Box::new(CpuOpcodesCallOff0::new()), - Box::new(CpuOpcodesCallOff1::new()), - Box::new(CpuOpcodesCallFlags::new()), - Box::new(CpuOpcodesRetOff0::new()), - Box::new(CpuOpcodesRetOff2::new()), - Box::new(CpuOpcodesRetFlags::new()), - ]; - - #[cfg(debug_assertions)] - { - use std::collections::HashSet; - let constraints_set: HashSet<_> = transition_constraints - .iter() - .map(|c| c.constraint_idx()) - .collect(); - debug_assert_eq!( - constraints_set.len(), - transition_constraints.len(), - "There are repeated constraint indexes" - ); - (0..transition_constraints.len()) - .for_each(|idx| debug_assert!(constraints_set.iter().contains(&idx))); - - assert_eq!(transition_constraints.len(), 64); - } - - assert_eq!(transition_constraints.len(), 64); - - let transition_exemptions = transition_constraints - .iter() - .map(|c| c.end_exemptions()) - .collect(); - - let context = AirContext { - proof_options: proof_options.clone(), - trace_columns, - transition_exemptions, - transition_offsets: vec![0, 1], - num_transition_constraints: transition_constraints.len(), - }; - - // The number of the transition constraints - // and transition exemptions should be the same always. - debug_assert_eq!( - context.transition_exemptions.len(), - context.num_transition_constraints - ); - - Self { - context, - pub_inputs: pub_inputs.clone(), - trace_length, - transition_constraints, - } - } - - fn build_auxiliary_trace( - &self, - main_trace: &TraceTable, - rap_challenges: &[Felt252], - ) -> TraceTable { - let addresses_original = main_trace.merge_columns(&[ - FRAME_PC, - FRAME_DST_ADDR, - FRAME_OP0_ADDR, - FRAME_OP1_ADDR, - EXTRA_ADDR, - ]); - - let values_original = - main_trace.merge_columns(&[FRAME_INST, FRAME_DST, FRAME_OP0, FRAME_OP1, EXTRA_VAL]); - - let (addresses, values) = add_pub_memory_in_public_input_section( - &addresses_original, - &values_original, - &self.pub_inputs, - ); - - let (addresses, values) = sort_columns_by_memory_address(addresses, values); - - let permutation_col = generate_memory_permutation_argument_column( - addresses_original, - values_original, - &addresses, - &values, - rap_challenges, - ); - - // Range Check - let offsets_original = main_trace.merge_columns(&[OFF_DST, OFF_OP0, OFF_OP1, RC_HOLES]); - - let mut offsets_sorted: Vec = offsets_original - .iter() - .map(|x| x.representative().into()) - .collect(); - offsets_sorted.sort(); - let offsets_sorted: Vec<_> = offsets_sorted - .iter() - .map(|x| FieldElement::from(*x as u64)) - .collect(); - - let range_check_permutation_col = generate_range_check_permutation_argument_column( - &offsets_original, - &offsets_sorted, - rap_challenges, - ); - - // Convert from long-format to wide-format again - let mut aux_data = Vec::new(); - for i in 0..main_trace.n_rows() { - aux_data.push(offsets_sorted[4 * i]); - aux_data.push(offsets_sorted[4 * i + 1]); - aux_data.push(offsets_sorted[4 * i + 2]); - aux_data.push(offsets_sorted[4 * i + 3]); - aux_data.push(addresses[5 * i]); - aux_data.push(addresses[5 * i + 1]); - aux_data.push(addresses[5 * i + 2]); - aux_data.push(addresses[5 * i + 3]); - aux_data.push(addresses[5 * i + 4]); - aux_data.push(values[5 * i]); - aux_data.push(values[5 * i + 1]); - aux_data.push(values[5 * i + 2]); - aux_data.push(values[5 * i + 3]); - aux_data.push(values[5 * i + 4]); - aux_data.push(permutation_col[5 * i]); - aux_data.push(permutation_col[5 * i + 1]); - aux_data.push(permutation_col[5 * i + 2]); - aux_data.push(permutation_col[5 * i + 3]); - aux_data.push(permutation_col[5 * i + 4]); - aux_data.push(range_check_permutation_col[4 * i]); - aux_data.push(range_check_permutation_col[4 * i + 1]); - aux_data.push(range_check_permutation_col[4 * i + 2]); - aux_data.push(range_check_permutation_col[4 * i + 3]); - } - - let aux_table = Table::new(aux_data, self.num_auxiliary_rap_columns()); - - let (num_main_columns, num_aux_columns) = self.trace_layout(); - TraceTable { - table: aux_table, - num_main_columns, - num_aux_columns, - step_size: Self::STEP_SIZE, - } - } - - fn build_rap_challenges( - &self, - transcript: &mut impl IsTranscript, - ) -> Vec { - let alpha_memory = transcript.sample_field_element(); - let z_memory = transcript.sample_field_element(); - let z_rc = transcript.sample_field_element(); - - vec![alpha_memory, z_memory, z_rc] - } - - fn trace_layout(&self) -> (usize, usize) { - (36, 23) - } - - /// From the Cairo whitepaper, section 9.10. - /// These are part of the register constraints. - /// - /// Boundary constraints: - /// * ap_0 = fp_0 = ap_i - /// * ap_t = ap_f - /// * pc_0 = pc_i - /// * pc_t = pc_f - fn boundary_constraints(&self, rap_challenges: &[Felt252]) -> BoundaryConstraints { - let initial_pc = - BoundaryConstraint::new_main(MEM_A_TRACE_OFFSET, 0, self.pub_inputs.pc_init); - let initial_ap = - BoundaryConstraint::new_main(MEM_P_TRACE_OFFSET, 0, self.pub_inputs.ap_init); - - let final_pc = BoundaryConstraint::new_main( - MEM_A_TRACE_OFFSET, - self.pub_inputs.num_steps - 1, - self.pub_inputs.pc_final, - ); - let final_ap = BoundaryConstraint::new_main( - MEM_P_TRACE_OFFSET, - self.pub_inputs.num_steps - 1, - self.pub_inputs.ap_final, - ); - - // Auxiliary constraint: permutation argument final value - let final_index = self.trace_length - 1; - - let z_memory = rap_challenges[1]; - let alpha_memory = rap_challenges[0]; - - let cumulative_product = self - .pub_inputs - .public_memory - .iter() - .fold(FieldElement::one(), |product, (address, value)| { - product * (z_memory - (address + alpha_memory * value)) - }) - .inv() - .unwrap(); - - let permutation_final = - z_memory.pow(self.pub_inputs.public_memory.len()) * cumulative_product; - - let permutation_final_constraint = - BoundaryConstraint::new_aux(PERMUTATION_ARGUMENT_COL_4, final_index, permutation_final); - - let one: FieldElement = FieldElement::one(); - let range_check_final_constraint = - BoundaryConstraint::new_aux(PERMUTATION_ARGUMENT_RANGE_CHECK_COL_4, final_index, one); - - let range_check_min = BoundaryConstraint::new_aux( - RANGE_CHECK_COL_1, - 0, - FieldElement::from(self.pub_inputs.range_check_min.unwrap() as u64), - ); - - let range_check_max = BoundaryConstraint::new_aux( - RANGE_CHECK_COL_4, - final_index, - FieldElement::from(self.pub_inputs.range_check_max.unwrap() as u64), - ); - - let constraints = vec![ - initial_pc, - initial_ap, - final_pc, - final_ap, - permutation_final_constraint, - range_check_final_constraint, - range_check_min, - range_check_max, - ]; - - BoundaryConstraints::from_constraints(constraints) - } - - fn transition_constraints( - &self, - ) -> &Vec>> { - &self.transition_constraints - } - - fn context(&self) -> &AirContext { - &self.context - } - - fn composition_poly_degree_bound(&self) -> usize { - 2 * self.trace_length - } - - fn trace_length(&self) -> usize { - self.trace_length - } - - fn pub_inputs(&self) -> &Self::PublicInputs { - &self.pub_inputs - } - - fn compute_transition_verifier( - &self, - frame: &Frame, - periodic_values: &[FieldElement], - rap_challenges: &[FieldElement], - ) -> Vec> { - self.compute_transition_prover(frame, periodic_values, rap_challenges) - } -} - -/// Wrapper function for generating Cairo proofs without the need to specify -/// concrete types. -/// The field is set to Stark252PrimeField and the AIR to CairoAIR. -pub fn generate_cairo_proof( - trace: &TraceTable, - pub_input: &PublicInputs, - proof_options: &ProofOptions, -) -> Result, ProvingError> { - Prover::::prove( - trace, - pub_input, - proof_options, - StoneProverTranscript::new(&[]), - ) -} - -/// Wrapper function for verifying Cairo proofs without the need to specify -/// concrete types. -/// The field is set to Stark252PrimeField and the AIR to CairoAIR. -pub fn verify_cairo_proof( - proof: &StarkProof, - pub_input: &PublicInputs, - proof_options: &ProofOptions, -) -> bool { - Verifier::::verify( - proof, - pub_input, - proof_options, - StoneProverTranscript::new(&[]), - ) -} - -#[cfg(test)] -#[cfg(debug_assertions)] -mod test { - use super::*; - use lambdaworks_math::field::element::FieldElement; - - #[test] - fn test_build_auxiliary_trace_sort_columns_by_memory_address() { - let a = vec![ - FieldElement::from(2), - FieldElement::one(), - FieldElement::from(3), - FieldElement::from(2), - ]; - let v = vec![ - FieldElement::from(6), - FieldElement::from(4), - FieldElement::from(5), - FieldElement::from(6), - ]; - let (ap, vp) = sort_columns_by_memory_address(a, v); - assert_eq!( - ap, - vec![ - FieldElement::one(), - FieldElement::from(2), - FieldElement::from(2), - FieldElement::from(3) - ] - ); - assert_eq!( - vp, - vec![ - FieldElement::from(4), - FieldElement::from(6), - FieldElement::from(6), - FieldElement::from(5), - ] - ); - } - - #[test] - fn test_build_auxiliary_trace_generate_permutation_argument_column() { - let a = vec![ - FieldElement::from(3), - FieldElement::one(), - FieldElement::from(2), - ]; - let v = vec![ - FieldElement::from(5), - FieldElement::one(), - FieldElement::from(2), - ]; - let ap = vec![ - FieldElement::one(), - FieldElement::from(2), - FieldElement::from(3), - ]; - let vp = vec![ - FieldElement::one(), - FieldElement::from(2), - FieldElement::from(5), - ]; - let rap_challenges = vec![ - FieldElement::from(15), - FieldElement::from(10), - FieldElement::zero(), - ]; - - let p = generate_memory_permutation_argument_column(a, v, &ap, &vp, &rap_challenges); - assert_eq!( - p, - vec![ - FieldElement::from_hex( - "2aaaaaaaaaaaab0555555555555555555555555555555555555555555555561" - ) - .unwrap(), - FieldElement::from_hex( - "1745d1745d174602e8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8ba2ec" - ) - .unwrap(), - FieldElement::one(), - ] - ); - } -} - -#[cfg(not(all(target_arch = "wasm32", target_os = "unknown")))] -#[cfg(test)] -mod prop_test { - use lambdaworks_math::{ - field::fields::fft_friendly::stark_252_prime_field::Stark252PrimeField, - traits::{AsBytes, Deserializable}, - }; - use proptest::{prelude::*, prop_compose, proptest}; - use stark_platinum_prover::proof::{options::ProofOptions, stark::StarkProof}; - - use crate::{ - air::{generate_cairo_proof, verify_cairo_proof}, - cairo_layout::CairoLayout, - runner::run::generate_prover_args, - tests::utils::cairo0_program_path, - Felt252, - }; - - use super::{MemorySegmentMap, PublicInputs, Segment, SegmentName}; - - prop_compose! { - fn some_felt()(base in any::(), exponent in any::()) -> Felt252 { - Felt252::from(base).pow(exponent) - } - } - - prop_compose! { - fn some_public_inputs()( - pc_init in some_felt(), - ap_init in some_felt(), - fp_init in some_felt(), - pc_final in some_felt(), - ap_final in some_felt(), - public_memory in proptest::collection::hash_map(any::(), any::(), (8_usize, 16_usize)), - range_check_max in proptest::option::of(any::()), - range_check_min in proptest::option::of(any::()), - num_steps in any::(), - ) -> PublicInputs { - let public_memory = public_memory.iter().map(|(k, v)| (Felt252::from(*k), Felt252::from(*v))).collect(); - let memory_segments = MemorySegmentMap::from([(SegmentName::Output, Segment::new(10u64, 16u64)), (SegmentName::RangeCheck, Segment::new(20u64, 71u64))]); - PublicInputs { - pc_init, - ap_init, - fp_init, - pc_final, - ap_final, - public_memory, - range_check_max, - range_check_min, - num_steps, - memory_segments, - } - } - } - - proptest! { - #![proptest_config(ProptestConfig {cases: 5, .. ProptestConfig::default()})] - #[test] - fn test_public_inputs_serialization( - public_inputs in some_public_inputs(), - ){ - let serialized = AsBytes::as_bytes(&public_inputs); - let deserialized: PublicInputs = Deserializable::deserialize(&serialized).unwrap(); - prop_assert_eq!(public_inputs.pc_init, deserialized.pc_init); - prop_assert_eq!(public_inputs.ap_init, deserialized.ap_init); - prop_assert_eq!(public_inputs.fp_init, deserialized.fp_init); - prop_assert_eq!(public_inputs.pc_final, deserialized.pc_final); - prop_assert_eq!(public_inputs.ap_final, deserialized.ap_final); - prop_assert_eq!(public_inputs.public_memory, deserialized.public_memory); - prop_assert_eq!(public_inputs.range_check_max, deserialized.range_check_max); - prop_assert_eq!(public_inputs.range_check_min, deserialized.range_check_min); - prop_assert_eq!(public_inputs.num_steps, deserialized.num_steps); - prop_assert_eq!(public_inputs.memory_segments, deserialized.memory_segments); - } - } - - #[test] - fn deserialize_and_verify() { - let program_content = std::fs::read(cairo0_program_path("fibonacci_10.json")).unwrap(); - let (main_trace, pub_inputs) = - generate_prover_args(&program_content, CairoLayout::Plain).unwrap(); - - let proof_options = ProofOptions::default_test_options(); - - // The proof is generated and serialized. - let proof = generate_cairo_proof(&main_trace, &pub_inputs, &proof_options).unwrap(); - let proof_bytes: Vec = serde_cbor::to_vec(&proof).unwrap(); - - // The trace and original proof are dropped to show that they are decoupled from - // the verifying process. - drop(main_trace); - drop(proof); - - // At this point, the verifier only knows about the serialized proof, the proof options - // and the public inputs. - let proof: StarkProof = - serde_cbor::from_slice(&proof_bytes).unwrap(); - - // The proof is verified successfully. - assert!(verify_cairo_proof(&proof, &pub_inputs, &proof_options)); - } -} diff --git a/provers/cairo/src/cairo_layout.rs b/provers/cairo/src/cairo_layout.rs deleted file mode 100644 index 13a7ae227..000000000 --- a/provers/cairo/src/cairo_layout.rs +++ /dev/null @@ -1,30 +0,0 @@ -#[derive(Debug, Clone, PartialEq, Eq)] -pub enum CairoLayout { - Plain, - Small, - Dex, - Recursive, - Starknet, - StarknetWithKeccak, - RecursiveLargeOutput, - AllCairo, - AllSolidity, - Dynamic, -} - -impl CairoLayout { - pub fn as_str(&self) -> &'static str { - match self { - CairoLayout::Plain => "plain", - CairoLayout::Small => "small", - CairoLayout::Dex => "dex", - CairoLayout::Recursive => "recursive", - CairoLayout::Starknet => "starknet", - CairoLayout::StarknetWithKeccak => "starknet_with_keccak", - CairoLayout::RecursiveLargeOutput => "recursive_large_output", - CairoLayout::AllCairo => "all_cairo", - CairoLayout::AllSolidity => "all_solidity", - CairoLayout::Dynamic => "dynamic", - } - } -} diff --git a/provers/cairo/src/cairo_mem.rs b/provers/cairo/src/cairo_mem.rs deleted file mode 100644 index 3079d9ca1..000000000 --- a/provers/cairo/src/cairo_mem.rs +++ /dev/null @@ -1,130 +0,0 @@ -use super::errors::CairoImportError; -use crate::Felt252; -use lambdaworks_math::traits::ByteConversion; -use std::{collections::HashMap, fs}; - -// `Felt252` is used as the type of values stored in -// the Cairo memory. We should decide if this is -// correct or we should consider another type. -#[derive(Clone, Debug, PartialEq)] -pub struct CairoMemory { - pub data: HashMap, -} - -impl CairoMemory { - pub fn new(data: HashMap) -> Self { - Self { data } - } - - /// Given a memory address, gets the value stored in it if - /// the address exists. - pub fn get(&self, addr: &u64) -> Option<&Felt252> { - self.data.get(addr) - } - - pub fn len(&self) -> usize { - self.data.len() - } - - pub fn is_empty(&self) -> bool { - self.data.is_empty() - } - - pub fn from_bytes_le(bytes: &[u8]) -> Result { - // Each row is an 8 bytes address - // and a value of 32 bytes (which is a field) - const ROW_SIZE: usize = 8 + 32; - - if bytes.len() % ROW_SIZE != 0 { - return Err(CairoImportError::IncorrectNumberOfBytes); - } - let num_rows = bytes.len() / ROW_SIZE; - - let mut data = HashMap::with_capacity(num_rows); - - for i in 0..num_rows { - let address = - u64::from_le_bytes(bytes[i * ROW_SIZE..i * ROW_SIZE + 8].try_into().unwrap()); - let value = Felt252::from_bytes_le( - bytes[i * ROW_SIZE + 8..i * ROW_SIZE + 40] - .try_into() - .unwrap(), - ) - .unwrap(); - - data.insert(address, value); - } - - Ok(Self::new(data)) - } - - pub fn from_file(path: &str) -> Result { - let data = fs::read(path)?; - Self::from_bytes_le(&data) - } -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn mem_indexes_are_contiguos_in_bytes_of_mul_program() { - /* - Hex from the trace of the following cairo program - - func main() { - let x = 2; - let y = 3; - assert x * y = 6; - return(); - } - - Generated with: - - cairo-compile multiply.cairo --output multiply.out - - cairo-run --layout all --trace_file trace.out --memory_file mem.out --program multiply.out - - xxd -p mem.out - */ - - let bytes = hex::decode("01000000000000000080ff7f01800648000000000000000000000000000000000000000000000000020000000000000006000000000000000000000000000000000000000000000000000000000000000300000000000000ff7fff7f01800640000000000000000000000000000000000000000000000000040000000000000006000000000000000000000000000000000000000000000000000000000000000500000000000000fe7fff7fff7f8b20000000000000000000000000000000000000000000000000060000000000000009000000000000000000000000000000000000000000000000000000000000000700000000000000090000000000000000000000000000000000000000000000000000000000000008000000000000000600000000000000000000000000000000000000000000000000000000000000").unwrap(); - - let memory = CairoMemory::from_bytes_le(&bytes).unwrap(); - - let mut sorted_addrs = memory.data.into_keys().collect::>(); - sorted_addrs.sort(); - - for (i, addr) in sorted_addrs.into_iter().enumerate() { - assert_eq!(addr, (i + 1) as u64); - } - } - - #[test] - fn test_wrong_amount_of_bytes_gives_err() { - let bytes = hex::decode("01000000000000000080ff7f01800648000000000000000000000000000000000000000000000000020000000000000006000000000000000000000000000000000000000000000000000000000000000300000000000000ff7fff7f01800640000000000000000000000000000000000000000000000000040000000000000006000000000000000000000000000000000000000000000000000000000000000500000000000000fe7fff7fff7f8b2000000000000000000000000000000000000000000000000006000000000000000900000000000000000000000000000000000000000000000000000000000000070000000000000009000000000000000000000000000000000000000000000000000000000000000800000000000000060000000000000000000000000000000000000000000000000000000000000088").unwrap(); - - match CairoMemory::from_bytes_le(&bytes) { - Err(CairoImportError::IncorrectNumberOfBytes) => (), - Err(_) => panic!(), - Ok(_) => panic!(), - } - } - - #[test] - fn mem_indexes_are_contiguos_when_loading_from_file_mul_program() { - let base_dir = env!("CARGO_MANIFEST_DIR"); - dbg!(base_dir); - let dir = base_dir.to_owned() + "/src/tests/data/mul_mem.out"; - - let memory = CairoMemory::from_file(&dir).unwrap(); - - let mut sorted_addrs = memory.data.into_keys().collect::>(); - sorted_addrs.sort(); - - for (i, addr) in sorted_addrs.into_iter().enumerate() { - assert_eq!(addr, (i + 1) as u64); - } - } -} diff --git a/provers/cairo/src/commands.rs b/provers/cairo/src/commands.rs deleted file mode 100644 index 7c81a02e1..000000000 --- a/provers/cairo/src/commands.rs +++ /dev/null @@ -1,64 +0,0 @@ -use clap::{Args, Parser, Subcommand}; - -#[derive(Parser, Debug)] -#[command(author = "Lambdaworks", version, about)] -pub struct ProverArgs { - #[clap(subcommand)] - pub entity: ProverEntity, -} - -#[derive(Subcommand, Debug)] -pub enum ProverEntity { - #[clap(about = "Compile a given cairo program")] - Compile(CompileArgs), - #[clap(about = "Run and generate a proof for a given compiled cairo program")] - RunAndProve(RunAndProveArgs), - #[clap(about = "Generate a proof from a given trace of a cairo program execution")] - Prove(ProveArgs), - #[clap(about = "Verify a proof for a given compiled cairo program")] - Verify(VerifyArgs), - #[clap(about = "Generate and verify a proof for a given compiled cairo program")] - ProveAndVerify(ProveAndVerifyArgs), - #[clap(about = "Compile and prove a given cairo program")] - CompileAndProve(CompileAndProveArgs), - #[clap(about = "Compile, prove and verify a given cairo program")] - CompileProveAndVerify(CompileAndRunAllArgs), -} - -#[derive(Args, Debug)] -pub struct CompileArgs { - pub program_path: String, -} - -#[derive(Args, Debug)] -pub struct RunAndProveArgs { - pub program_path: String, - pub proof_path: String, -} -#[derive(Args, Debug)] -pub struct ProveArgs { - pub trace_bin_path: String, - pub memory_bin_path: String, - pub proof_path: String, -} - -#[derive(Args, Debug)] -pub struct VerifyArgs { - pub proof_path: String, -} - -#[derive(Args, Debug)] -pub struct ProveAndVerifyArgs { - pub program_path: String, -} - -#[derive(Args, Debug)] -pub struct CompileAndProveArgs { - pub program_path: String, - pub proof_path: String, -} - -#[derive(Args, Debug)] -pub struct CompileAndRunAllArgs { - pub program_path: String, -} diff --git a/provers/cairo/src/decode/instruction_flags.rs b/provers/cairo/src/decode/instruction_flags.rs deleted file mode 100644 index d049e6ee9..000000000 --- a/provers/cairo/src/decode/instruction_flags.rs +++ /dev/null @@ -1,771 +0,0 @@ -use crate::{errors::InstructionDecodingError, Felt252}; - -// Constants for instructions decoding -const DST_REG_MASK: u64 = 0x0001; -const DST_REG_OFF: u64 = 0; -const OP0_REG_MASK: u64 = 0x0002; -const OP0_REG_OFF: u64 = 1; -const OP1_SRC_MASK: u64 = 0x001C; -const OP1_SRC_OFF: u64 = 2; -const RES_LOGIC_MASK: u64 = 0x0060; -const RES_LOGIC_OFF: u64 = 5; -const PC_UPDATE_MASK: u64 = 0x0380; -const PC_UPDATE_OFF: u64 = 7; -const AP_UPDATE_MASK: u64 = 0x0C00; -const AP_UPDATE_OFF: u64 = 10; -const OPCODE_MASK: u64 = 0x7000; -const OPCODE_OFF: u64 = 12; -const FLAGS_OFFSET: u64 = 48; - -// TODO: This is just an auxiliary function done to get out of the way. -// It should be deleted afterwards -pub(crate) fn aux_get_last_nim_of_field_element(value: &Felt252) -> u64 { - let mem_value_bytes = value.to_bytes_be(); - - // we are taking the last nim of the field element, - // since it is a U256 - u64::from_be_bytes([ - mem_value_bytes[24], - mem_value_bytes[25], - mem_value_bytes[26], - mem_value_bytes[27], - mem_value_bytes[28], - mem_value_bytes[29], - mem_value_bytes[30], - mem_value_bytes[31], - ]) -} - -#[derive(Clone, Debug, PartialEq)] -pub struct CairoInstructionFlags { - pub opcode: CairoOpcode, - pub ap_update: ApUpdate, - pub pc_update: PcUpdate, - pub res_logic: ResLogic, - pub op1_src: Op1Src, - pub op0_reg: Op0Reg, - pub dst_reg: DstReg, -} - -impl CairoInstructionFlags { - /// Gives a bit trace representation of all flags. - /// Altough the flags can be interpreted as bits, they are - /// represented by field elements: Felt252::zero() for bit 0 and - /// Felt252::one() for bit 1. - #[rustfmt::skip] - pub fn to_bit_representation(&self) -> [Felt252; 16] { - let b0 = self.dst_reg.to_bit_representation(); - let b1 = self.op0_reg.to_bit_representation(); - let [b2, b3, b4] = self.op1_src.to_bit_representation(); - let [b5, b6] = self.res_logic.to_bit_representation(); - let [b7, b8, b9] = self.pc_update.to_bit_representation(); - let [b10, b11] = self.ap_update.to_bit_representation(); - let [b12, b13, b14] = self.opcode.to_bit_representation(); - - // In the paper, a little-endian format for the bit flags is - // mentioned. That is why they are arranged in this way (section 4.4 - // of the Cairo whitepaper - https://eprint.iacr.org/2021/1063.pdf) - [ - b0, // dst_reg bits - b1, // op0_reg bits - b4, b3, b2, // op1_src bits - b6, b5, // res_logic bits - b9, b8, b7, // pc_update bits - b11, b10, // ap_update bits - b14, b13, b12, // opcode bits - Felt252::zero(), - ] - } - - pub fn to_trace_representation(&self) -> [Felt252; 16] { - let bit_flags = self.to_bit_representation(); - to_bit_prefixes(bit_flags) - } -} - -#[derive(Debug, PartialEq, Eq, Clone)] -pub enum Op0Reg { - AP = 0, - FP = 1, -} - -impl Op0Reg { - pub fn to_bit_representation(&self) -> Felt252 { - match self { - Op0Reg::AP => Felt252::zero(), - Op0Reg::FP => Felt252::one(), - } - } -} - -impl TryFrom<&Felt252> for Op0Reg { - type Error = InstructionDecodingError; - - fn try_from(mem_value: &Felt252) -> Result { - let flags = aux_get_last_nim_of_field_element(mem_value) >> FLAGS_OFFSET; - - let op0_reg = ((flags & OP0_REG_MASK) >> OP0_REG_OFF) as u8; - - if op0_reg == 0 { - Ok(Op0Reg::AP) - } else if op0_reg == 1 { - Ok(Op0Reg::FP) - } else { - Err(InstructionDecodingError::InvalidOp0Reg) - } - } -} - -#[derive(Debug, PartialEq, Eq, Clone)] -pub enum DstReg { - AP = 0, - FP = 1, -} -impl DstReg { - pub fn to_bit_representation(&self) -> Felt252 { - match self { - DstReg::AP => Felt252::zero(), - DstReg::FP => Felt252::one(), - } - } -} - -impl TryFrom<&Felt252> for DstReg { - type Error = InstructionDecodingError; - - fn try_from(mem_value: &Felt252) -> Result { - let flags = aux_get_last_nim_of_field_element(mem_value) >> FLAGS_OFFSET; - let dst_reg = ((flags & DST_REG_MASK) >> DST_REG_OFF) as u8; - - if dst_reg == 0 { - Ok(DstReg::AP) - } else if dst_reg == 1 { - Ok(DstReg::FP) - } else { - Err(InstructionDecodingError::InvalidDstReg) - } - } -} - -#[derive(Clone, Debug, PartialEq, Eq)] -pub enum Op1Src { - Op0 = 0, - Imm = 1, - FP = 2, - AP = 4, -} - -impl Op1Src { - pub fn to_bit_representation(&self) -> [Felt252; 3] { - match self { - Op1Src::Op0 => [Felt252::zero(), Felt252::zero(), Felt252::zero()], - Op1Src::Imm => [Felt252::zero(), Felt252::zero(), Felt252::one()], - Op1Src::FP => [Felt252::zero(), Felt252::one(), Felt252::zero()], - Op1Src::AP => [Felt252::one(), Felt252::zero(), Felt252::zero()], - } - } -} - -impl TryFrom<&Felt252> for Op1Src { - type Error = InstructionDecodingError; - - fn try_from(mem_value: &Felt252) -> Result { - let flags = aux_get_last_nim_of_field_element(mem_value) >> FLAGS_OFFSET; - let op1_src = ((flags & OP1_SRC_MASK) >> OP1_SRC_OFF) as u8; - - match op1_src { - 0 => Ok(Op1Src::Op0), - 1 => Ok(Op1Src::Imm), - 2 => Ok(Op1Src::FP), - 4 => Ok(Op1Src::AP), - _ => Err(InstructionDecodingError::InvalidOp1Src), - } - } -} - -#[derive(Clone, Debug, PartialEq, Eq)] -pub enum ResLogic { - Op1 = 0, - Add = 1, - Mul = 2, - // TODO: Check if this is correct - Unconstrained, -} - -impl ResLogic { - pub fn to_bit_representation(&self) -> [Felt252; 2] { - match self { - ResLogic::Op1 => [Felt252::zero(), Felt252::zero()], - ResLogic::Add => [Felt252::zero(), Felt252::one()], - ResLogic::Mul => [Felt252::one(), Felt252::zero()], - ResLogic::Unconstrained => todo!(), - } - } -} - -impl TryFrom<&Felt252> for ResLogic { - type Error = InstructionDecodingError; - - fn try_from(mem_value: &Felt252) -> Result { - let flags = aux_get_last_nim_of_field_element(mem_value) >> FLAGS_OFFSET; - let res_logic = ((flags & RES_LOGIC_MASK) >> RES_LOGIC_OFF) as u8; - - match res_logic { - 0 => Ok(ResLogic::Op1), - 1 => Ok(ResLogic::Add), - 2 => Ok(ResLogic::Mul), - // TODO: Check this is correct - 4 => Ok(ResLogic::Unconstrained), - _ => Err(InstructionDecodingError::InvalidResLogic), - } - } -} - -#[derive(Clone, Debug, PartialEq, Eq)] -pub enum PcUpdate { - Regular = 0, - Jump = 1, - JumpRel = 2, - Jnz = 4, -} - -impl PcUpdate { - pub fn to_bit_representation(&self) -> [Felt252; 3] { - match self { - PcUpdate::Regular => [Felt252::zero(), Felt252::zero(), Felt252::zero()], - PcUpdate::Jump => [Felt252::zero(), Felt252::zero(), Felt252::one()], - PcUpdate::JumpRel => [Felt252::zero(), Felt252::one(), Felt252::zero()], - PcUpdate::Jnz => [Felt252::one(), Felt252::zero(), Felt252::zero()], - } - } -} - -impl TryFrom<&Felt252> for PcUpdate { - type Error = InstructionDecodingError; - - fn try_from(mem_value: &Felt252) -> Result { - let flags = aux_get_last_nim_of_field_element(mem_value) >> FLAGS_OFFSET; - let pc_update = ((flags & PC_UPDATE_MASK) >> PC_UPDATE_OFF) as u8; - - match pc_update { - 0 => Ok(PcUpdate::Regular), - 1 => Ok(PcUpdate::Jump), - 2 => Ok(PcUpdate::JumpRel), - 4 => Ok(PcUpdate::Jnz), - _ => Err(InstructionDecodingError::InvalidPcUpdate), - } - } -} - -#[derive(Clone, Debug, PartialEq, Eq)] -pub enum ApUpdate { - Regular = 0, - Add = 1, - Add1 = 2, - // TODO: Check if this is correct - Add2, -} - -impl ApUpdate { - pub fn to_bit_representation(&self) -> [Felt252; 2] { - match self { - ApUpdate::Regular => [Felt252::zero(), Felt252::zero()], - ApUpdate::Add => [Felt252::zero(), Felt252::one()], - ApUpdate::Add1 => [Felt252::one(), Felt252::zero()], - ApUpdate::Add2 => todo!(), - } - } -} - -impl TryFrom<&Felt252> for ApUpdate { - type Error = InstructionDecodingError; - - fn try_from(mem_value: &Felt252) -> Result { - let flags = aux_get_last_nim_of_field_element(mem_value) >> FLAGS_OFFSET; - let ap_update = ((flags & AP_UPDATE_MASK) >> AP_UPDATE_OFF) as u8; - - match ap_update { - 0 => Ok(ApUpdate::Regular), - 1 => Ok(ApUpdate::Add), - 2 => Ok(ApUpdate::Add1), - 4 => Ok(ApUpdate::Add2), - _ => Err(InstructionDecodingError::InvalidApUpdate), - } - } -} - -impl TryFrom<&Felt252> for CairoInstructionFlags { - type Error = InstructionDecodingError; - - fn try_from(mem_value: &Felt252) -> Result { - Ok(CairoInstructionFlags { - opcode: CairoOpcode::try_from(mem_value)?, - pc_update: PcUpdate::try_from(mem_value)?, - ap_update: ApUpdate::try_from(mem_value)?, - res_logic: ResLogic::try_from(mem_value)?, - op1_src: Op1Src::try_from(mem_value)?, - op0_reg: Op0Reg::try_from(mem_value)?, - dst_reg: DstReg::try_from(mem_value)?, - }) - } -} - -#[derive(Clone, Debug, PartialEq)] -pub enum CairoOpcode { - NOp = 0, - Call = 1, - Ret = 2, - AssertEq = 4, -} - -impl CairoOpcode { - pub fn to_bit_representation(&self) -> [Felt252; 3] { - match self { - CairoOpcode::NOp => [Felt252::zero(), Felt252::zero(), Felt252::zero()], - CairoOpcode::Call => [Felt252::zero(), Felt252::zero(), Felt252::one()], - CairoOpcode::Ret => [Felt252::zero(), Felt252::one(), Felt252::zero()], - CairoOpcode::AssertEq => [Felt252::one(), Felt252::zero(), Felt252::zero()], - } - } -} - -impl TryFrom<&Felt252> for CairoOpcode { - type Error = InstructionDecodingError; - - fn try_from(mem_value: &Felt252) -> Result { - let flags = aux_get_last_nim_of_field_element(mem_value) >> FLAGS_OFFSET; - let opcode = ((flags & OPCODE_MASK) >> OPCODE_OFF) as u8; - - match opcode { - 0 => Ok(CairoOpcode::NOp), - 1 => Ok(CairoOpcode::Call), - 2 => Ok(CairoOpcode::Ret), - 4 => Ok(CairoOpcode::AssertEq), - _ => Err(InstructionDecodingError::InvalidOpcode), - } - } -} - -fn to_bit_prefixes(bit_array: [Felt252; 16]) -> [Felt252; 16] { - let two = Felt252::from(2); - (0..bit_array.len()) - .map(|i| { - bit_array - .iter() - .enumerate() - .fold(Felt252::zero(), |acc, (j, flag_j)| { - let sum_term = if j < i { - Felt252::zero() - } else { - let exponent = j - i; - two.pow(exponent) * flag_j - }; - acc + sum_term - }) - }) - .collect::>() - .try_into() - .unwrap() -} - -#[cfg(test)] -mod tests { - use super::*; - /* - For the purpose of testing the decoding, we are going to use instructions obtained - directly from valid Cairo programs. The decoding shown here is obtained by inspecting - cairo-rs: - * Instruction A: 0x480680017fff8000 -> - Instruction { - off0: 0, - off1: -1, - off2: 1, - imm: Some(3618502680826344545094760424199446925499834509564823019178951359862461693953), - dst_register: AP, - op0_register: FP, - op1_addr: Imm, - res: Op1, - pc_update: Regular, - ap_update: Add1, - fp_update: Regular, - opcode: AssertEq - } - - * Instruction B: 0x1104800180018000 -> - Instruction { - off0: 0, - off1: 1, - off2: 1, - imm: Some(3618502788666131213697322783095070105623107215331596699973092056135872020275), - dst_register: AP, - op0_register: AP, - op1_addr: Imm, - res: Op1, - pc_update: JumpRel, - ap_update: Add2, - fp_update: APPlus2, - opcode: Call - } - - * Instruction C: 0x208b7fff7fff7fFelt252 -> - Instruction { - off0: -2, - off1: -1, - off2: -1, - imm: None, - dst_register: FP, - op0_register: FP, - op1_addr: FP, - res: Op1, - pc_update: Jump, - ap_update: Regular, - fp_update: Dst, - opcode: Ret - } - - * Instruction D: 0xa0680017fff7fff -> - Instruction { off0: -1, - off1: -1, - off2: 1, - imm: Some(7), - dst_register: AP, - op0_register: FP, - op1_addr: Imm, - res: Unconstrained, - pc_update: Jnz, - ap_update: Add1, - fp_update: Regular, - opcode: NOp - } - - * Instruction E: 0x48327ffc7ffa8000 -> - Instruction { - off0: 0, - off1: -6, - off2: -4, - imm: None, - dst_register: AP, - op0_register: FP, - op1_addr: AP, - res: Add, - pc_update: Regular, - ap_update: Add1, - fp_update: Regular, - opcode: AssertEq - } - - * Instruction F: 0x4000800d7ff07fff -> - Instruction { - off0: -1, - off1: -16, - off2: 13, - imm: None, - dst_register: AP, - op0_register: AP, - op1_addr: Op0, - res: Op1, - pc_update: Regular, - ap_update: Regular, - fp_update: Regular, - opcode: AssertEq - } - - * Instruction G: 0x48507fff7fFelt2528000 -> - Instruction { - off0: 0, - off1: -1, - off2: 1, - imm: Some(3), - dst_register: AP, - op0_register: AP, - op1_addr: Imm, - res: Mul, - pc_update: Regular, - ap_update: Add1, - fp_update: Regular, - opcode: AssertEq - } - - * Instruction H: 0x40780017fff7fff -> - Instruction { - off0: -1, - off1: -1, - off2: 1, - imm: Some(2), - dst_register: FP, - op0_register: FP, - op1_addr: Imm, - res: Op1, - pc_update: Regular, - ap_update: Add, - fp_update: Regular, - opcode: NOp - } - */ - - #[test] - fn assert_opcode_flag_is_correct() { - // Instruction A - let value = Felt252::from(0x480680017fff8000); - - assert_eq!(CairoOpcode::try_from(&value), Ok(CairoOpcode::AssertEq)); - } - - #[test] - fn call_opcode_flag_is_correct() { - // Instruction B - let value = Felt252::from(0x1104800180018000); - - assert_eq!(CairoOpcode::try_from(&value), Ok(CairoOpcode::Call)); - } - - #[test] - fn ret_opcode_flag_is_correct() { - // Instruction C - let value = Felt252::from(0x208b7fff7fff7ffe); - - assert_eq!(CairoOpcode::try_from(&value), Ok(CairoOpcode::Ret)); - } - - #[test] - fn nop_opcode_flag_is_correct() { - // Instruction D - let value = Felt252::from(0xa0680017fff7fff); - - assert_eq!(CairoOpcode::try_from(&value), Ok(CairoOpcode::NOp)); - } - - #[test] - fn regular_pc_update_flag_is_correct() { - // Instruction A - let value = Felt252::from(0x480680017fff8000); - - assert_eq!(PcUpdate::try_from(&value), Ok(PcUpdate::Regular)); - } - - #[test] - fn jump_pc_update_flag_is_correct() { - // Instruction C - let value = Felt252::from(0x208b7fff7fff7ffe); - - assert_eq!(PcUpdate::try_from(&value), Ok(PcUpdate::Jump)); - } - - #[test] - fn jumprel_pc_update_flag_is_correct() { - // Instruction B - let value = Felt252::from(0x1104800180018000); - - assert_eq!(PcUpdate::try_from(&value), Ok(PcUpdate::JumpRel)); - } - - #[test] - fn jnz_pc_update_flag_is_correct() { - // Instruction D - let value = Felt252::from(0xa0680017fff7fff); - - assert_eq!(PcUpdate::try_from(&value), Ok(PcUpdate::Jnz)); - } - - #[test] - fn regular_ap_update_flag_is_correct() { - // Instruction C - let value = Felt252::from(0x208b7fff7fff7ffe); - - assert_eq!(ApUpdate::try_from(&value), Ok(ApUpdate::Regular)); - } - - #[test] - fn add_ap_update_flag_is_correct() { - // Instruction H - let value = Felt252::from(0x40780017fff7fff); - - assert_eq!(ApUpdate::try_from(&value), Ok(ApUpdate::Add)); - } - - #[test] - fn add1_ap_update_flag_is_correct() { - // Instruction A - let value = Felt252::from(0x480680017fff8000); - - assert_eq!(ApUpdate::try_from(&value), Ok(ApUpdate::Add1)); - } - - #[test] - fn op1_res_logic_flag_is_correct() { - // Instruction A - let value = Felt252::from(0x480680017fff8000); - - assert_eq!(ResLogic::try_from(&value), Ok(ResLogic::Op1)); - } - - #[test] - fn add_res_logic_flag_is_correct() { - // Instruction E - let value = Felt252::from(0x48327ffc7ffa8000); - - assert_eq!(ResLogic::try_from(&value), Ok(ResLogic::Add)); - } - - #[test] - fn mul_res_logic_flag_is_correct() { - // Instruction G - let value = Felt252::from(0x48507fff7ffe8000); - - assert_eq!(ResLogic::try_from(&value), Ok(ResLogic::Mul)); - } - - #[test] - fn op0_op1_src_flag_is_correct() { - // Instruction F - let value = Felt252::from(0x4000800d7ff07fff); - - assert_eq!(Op1Src::try_from(&value), Ok(Op1Src::Op0)); - } - - #[test] - fn imm_op1_src_flag_is_correct() { - // Instruction A - let value = Felt252::from(0x480680017fff8000); - - assert_eq!(Op1Src::try_from(&value), Ok(Op1Src::Imm)); - } - - #[test] - fn ap_op1_src_flag_is_correct() { - // Instruction E - let value = Felt252::from(0x48327ffc7ffa8000); - - assert_eq!(Op1Src::try_from(&value), Ok(Op1Src::AP)); - } - - #[test] - fn fp_op1_src_flag_is_correct() { - // Instruction C - let value = Felt252::from(0x208b7fff7fff7ffe); - - assert_eq!(Op1Src::try_from(&value), Ok(Op1Src::FP)); - } - - #[test] - fn ap_op0_reg_flag_is_correct() { - // Instruction B - let value = Felt252::from(0x1104800180018000); - - assert_eq!(Op0Reg::try_from(&value), Ok(Op0Reg::AP)); - } - - #[test] - fn fp_op0_reg_flag_is_correct() { - // Instruction A - let value = Felt252::from(0x480680017fff8000); - - assert_eq!(Op0Reg::try_from(&value), Ok(Op0Reg::FP)); - } - - #[test] - fn ap_dst_reg_flag_is_correct() { - // Instruction A - let value = Felt252::from(0x480680017fff8000); - - assert_eq!(DstReg::try_from(&value), Ok(DstReg::AP)); - } - - #[test] - fn fp_dst_reg_flag_is_correct() { - // Instruction C - let value = Felt252::from(0x208b7fff7fff7ffe); - - assert_eq!(DstReg::try_from(&value), Ok(DstReg::FP)); - } - - #[test] - fn decoded_flags_of_assert_are_correct() { - let value = Felt252::from(0x400380837ffb8000); - let expected_flags = CairoInstructionFlags { - opcode: CairoOpcode::AssertEq, - pc_update: PcUpdate::Regular, - ap_update: ApUpdate::Regular, - op0_reg: Op0Reg::FP, - op1_src: Op1Src::Op0, - res_logic: ResLogic::Op1, - dst_reg: DstReg::FP, - }; - - let flags = CairoInstructionFlags::try_from(&value).unwrap(); - - assert_eq!(expected_flags, flags); - } - - #[test] - fn flags_bit_representation() { - // Bit-trace representation for each flag: - // DstReg::FP = 1 - // Op0Reg::FP = 1 - // Op1Src::Op0 = 0 0 0 - // ResLogic::Op1 = 0 0 - // PcUpdate::Regular = 0 0 0 - // ApUpdate::Regular = 0 0 - // CairoOpcode::AssertEq = 0 0 1 - - let flags = CairoInstructionFlags { - opcode: CairoOpcode::AssertEq, - pc_update: PcUpdate::Regular, - ap_update: ApUpdate::Regular, - op0_reg: Op0Reg::FP, - op1_src: Op1Src::Op0, - res_logic: ResLogic::Op1, - dst_reg: DstReg::FP, - }; - - #[rustfmt::skip] - let expected_representation = [ - Felt252::one(), - Felt252::one(), - Felt252::zero(), Felt252::zero(), Felt252::zero(), - Felt252::zero(), Felt252::zero(), - Felt252::zero(), Felt252::zero(), Felt252::zero(), - Felt252::zero(), Felt252::zero(), - Felt252::zero(), Felt252::zero(), Felt252::one(), - Felt252::zero(), - ]; - - let representation = flags.to_bit_representation(); - - assert_eq!(representation, expected_representation); - } - - #[test] - fn to_bit_prefixes_all_zeros_works() { - let bit_array = [Felt252::zero(); 16]; - - let result = to_bit_prefixes(bit_array); - let expected = [Felt252::zero(); 16]; - - assert_eq!(result, expected); - } - - #[test] - fn to_bit_prefixes_flag14_on_works() { - let mut bit_array = [Felt252::zero(); 16]; - // We turn on only the 14th bit, which is the most significant. - - bit_array[14] = Felt252::one(); - - let result = to_bit_prefixes(bit_array); - // The bit prefix value of f0 should be 16384, and the rest - // should be the bit prefixes of that number. - let expected: [Felt252; 16] = (0..16u32) - .map(|idx| { - if idx == 15 { - return Felt252::zero(); - } - Felt252::from(16384) / Felt252::from(2).pow(idx) - }) - .collect::>() - .try_into() - .unwrap(); - - assert_eq!(result, expected); - } -} diff --git a/provers/cairo/src/decode/instruction_offsets.rs b/provers/cairo/src/decode/instruction_offsets.rs deleted file mode 100644 index 09716045a..000000000 --- a/provers/cairo/src/decode/instruction_offsets.rs +++ /dev/null @@ -1,94 +0,0 @@ -use crate::Felt252; -use lambdaworks_math::field::{element::FieldElement, traits::IsField}; - -use super::instruction_flags::aux_get_last_nim_of_field_element; - -const OFF_DST_OFF: u32 = 0; -const OFF_OP0_OFF: u32 = 16; -const OFF_OP1_OFF: u32 = 32; -const OFFX_MASK: u64 = 0xFFFF; - -#[derive(Debug, PartialEq, Eq)] -pub struct InstructionOffsets { - pub off_dst: i32, - pub off_op0: i32, - pub off_op1: i32, -} - -impl InstructionOffsets { - pub fn new(mem_value: &Felt252) -> Self { - Self { - off_dst: Self::decode_offset(mem_value, OFF_DST_OFF), - off_op0: Self::decode_offset(mem_value, OFF_OP0_OFF), - off_op1: Self::decode_offset(mem_value, OFF_OP1_OFF), - } - } - - pub fn decode_offset(mem_value: &Felt252, instruction_offset: u32) -> i32 { - let offset = aux_get_last_nim_of_field_element(mem_value) >> instruction_offset & OFFX_MASK; - let vectorized_offset = offset.to_le_bytes(); - let aux = [ - vectorized_offset[0], - vectorized_offset[1].overflowing_sub(128).0, - ]; - i32::from(i16::from_le_bytes(aux)) - } - - pub fn to_trace_representation(&self) -> [FieldElement; 3] { - [ - to_unbiased_representation(self.off_dst), - to_unbiased_representation(self.off_op0), - to_unbiased_representation(self.off_op1), - ] - } -} - -/// Returns an unbiased representation of the number. This is applied to -/// instruction offsets as explained in section 9.4 of the Cairo whitepaper -/// to be in the range [0, 2^16). https://eprint.iacr.org/2021/1063.pdf -fn to_unbiased_representation(n: i32) -> FieldElement { - let b15 = 2u64.pow(15u32); - if n < 0 { - FieldElement::::from(b15 - n.unsigned_abs() as u64) - } else { - FieldElement::::from(n as u64 + b15) - } -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn assert_opcode_flag_is_correct_1() { - // Instruction A - let value = Felt252::from(0x480680017fff8000); - let instruction_offsets = InstructionOffsets::new(&value); - - assert_eq!(instruction_offsets.off_dst, 0); - assert_eq!(instruction_offsets.off_op0, -1); - assert_eq!(instruction_offsets.off_op1, 1); - } - - #[test] - fn assert_opcode_flag_is_correct_2() { - // Instruction A - let value = Felt252::from(0x208b7fff7fff7ffe); - let instruction_offsets = InstructionOffsets::new(&value); - - assert_eq!(instruction_offsets.off_dst, -2); - assert_eq!(instruction_offsets.off_op0, -1); - assert_eq!(instruction_offsets.off_op1, -1); - } - - #[test] - fn assert_opcode_flag_is_correct_3() { - // Instruction A - let value = Felt252::from(0x48327ffc7ffa8000); - let instruction_offsets = InstructionOffsets::new(&value); - - assert_eq!(instruction_offsets.off_dst, 0); - assert_eq!(instruction_offsets.off_op0, -6); - assert_eq!(instruction_offsets.off_op1, -4); - } -} diff --git a/provers/cairo/src/decode/mod.rs b/provers/cairo/src/decode/mod.rs deleted file mode 100644 index 85d3adbaa..000000000 --- a/provers/cairo/src/decode/mod.rs +++ /dev/null @@ -1,2 +0,0 @@ -pub mod instruction_flags; -pub mod instruction_offsets; diff --git a/provers/cairo/src/errors.rs b/provers/cairo/src/errors.rs deleted file mode 100644 index 38d74937f..000000000 --- a/provers/cairo/src/errors.rs +++ /dev/null @@ -1,24 +0,0 @@ -#[derive(Debug)] -pub enum CairoImportError { - /// Bytes should be a multiple of 24 for trace or 40 for memory - IncorrectNumberOfBytes, - FileError(std::io::Error), -} - -impl From for CairoImportError { - fn from(err: std::io::Error) -> CairoImportError { - CairoImportError::FileError(err) - } -} - -#[derive(Debug, PartialEq)] -pub enum InstructionDecodingError { - InvalidOpcode, - InvalidPcUpdate, - InvalidApUpdate, - InvalidResLogic, - InvalidOp1Src, - InvalidOp0Reg, - InvalidDstReg, - InstructionNotFound, -} diff --git a/provers/cairo/src/execution_trace.rs b/provers/cairo/src/execution_trace.rs deleted file mode 100644 index eece1d28d..000000000 --- a/provers/cairo/src/execution_trace.rs +++ /dev/null @@ -1,750 +0,0 @@ -use super::{ - cairo_mem::CairoMemory, - decode::{ - instruction_flags::{ - aux_get_last_nim_of_field_element, ApUpdate, CairoInstructionFlags, CairoOpcode, - DstReg, Op0Reg, Op1Src, PcUpdate, ResLogic, - }, - instruction_offsets::InstructionOffsets, - }, - register_states::RegisterStates, -}; -use crate::air::{EXTRA_ADDR, RC_HOLES}; -use crate::{ - air::{ - PublicInputs, FRAME_DST_ADDR, FRAME_OP0_ADDR, FRAME_OP1_ADDR, FRAME_PC, OFF_DST, OFF_OP0, - OFF_OP1, - }, - Felt252, -}; -use cairo_vm::without_std::collections::HashMap; -use lambdaworks_math::{ - field::fields::fft_friendly::stark_252_prime_field::Stark252PrimeField, - unsigned_integer::element::UnsignedInteger, -}; -use stark_platinum_prover::trace::TraceTable; - -type CairoTraceTable = TraceTable; - -// MAIN TRACE LAYOUT -// ----------------------------------------------------------------------------------------- -// A. flags (16) : Decoded instruction flags -// B. res (1) : Res value -// C. mem_p (2) : Temporary memory pointers (ap and fp) -// D. mem_a (4) : Memory addresses (pc, dst_addr, op0_addr, op1_addr) -// E. mem_v (4) : Memory values (inst, dst, op0, op1) -// F. offsets (3) : (off_dst, off_op0, off_op1) -// G. derived (3) : (t0, t1, mul) -// -// A B C D E F G -// ├xxxxxxxxxxxxxxxx|x|xx|xxxx|xxxx|xxx|xxx┤ -// - -/// Builds the Cairo main trace (i.e. the trace without the auxiliary columns). -/// Builds the execution trace, fills the offset range-check holes and memory holes, adds -/// public memory dummy accesses (See section 9.8 of the Cairo whitepaper) and pads the result -/// so that it has a trace length equal to the closest power of two. -pub fn build_main_trace( - register_states: &RegisterStates, - memory: &CairoMemory, - public_input: &mut PublicInputs, -) -> CairoTraceTable { - let mut main_trace = build_cairo_execution_trace(register_states, memory); - - let mut address_cols = - main_trace.merge_columns(&[FRAME_PC, FRAME_DST_ADDR, FRAME_OP0_ADDR, FRAME_OP1_ADDR]); - - address_cols.sort_by_key(|x| x.representative()); - - let (rc_holes, rc_min, rc_max) = get_rc_holes(&main_trace, &[OFF_DST, OFF_OP0, OFF_OP1]); - - // this will avaluate to true if the public inputs weren't obtained from the run_program() function - if public_input.range_check_min.is_none() && public_input.range_check_max.is_none() { - public_input.range_check_min = Some(rc_min); - public_input.range_check_max = Some(rc_max); - } - fill_rc_holes(&mut main_trace, &rc_holes); - - let memory_holes = get_memory_holes(&address_cols, &public_input.public_memory); - - if !memory_holes.is_empty() { - fill_memory_holes(&mut main_trace, &memory_holes); - } - - add_pub_memory_dummy_accesses( - &mut main_trace, - public_input.public_memory.len(), - memory_holes.len(), - ); - - let trace_len_next_power_of_two = main_trace.n_rows().next_power_of_two(); - let padding_len = trace_len_next_power_of_two - main_trace.n_rows(); - main_trace.pad_with_last_row(padding_len); - - main_trace -} - -/// Artificial `(0, 0)` dummy memory accesses must be added for the public memory. -/// See section 9.8 of the Cairo whitepaper. -fn add_pub_memory_dummy_accesses( - main_trace: &mut CairoTraceTable, - pub_memory_len: usize, - last_memory_hole_idx: usize, -) { - for i in 0..pub_memory_len { - main_trace.set_or_extend(last_memory_hole_idx + i, EXTRA_ADDR, &Felt252::zero()); - } -} - -/// Gets holes from the range-checked columns. These holes must be filled for the -/// permutation range-checks, as can be read in section 9.9 of the Cairo whitepaper. -/// Receives the trace and the indexes of the range-checked columns. -/// Outputs the holes that must be filled to make the range continuous and the extreme -/// values rc_min and rc_max, corresponding to the minimum and maximum values of the range. -/// NOTE: These extreme values should be received as public inputs in the future and not -/// calculated here. -fn get_rc_holes(trace: &CairoTraceTable, columns_indices: &[usize]) -> (Vec, u16, u16) { - let offset_columns = trace.merge_columns(columns_indices); - - let mut sorted_offset_representatives: Vec = offset_columns - .iter() - .map(|x| x.representative().into()) - .collect(); - sorted_offset_representatives.sort(); - - let mut all_missing_values: Vec = Vec::new(); - - for window in sorted_offset_representatives.windows(2) { - if window[1] != window[0] { - let mut missing_range: Vec<_> = ((window[0] + 1)..window[1]) - .map(|x| Felt252::from(x as u64)) - .collect(); - all_missing_values.append(&mut missing_range); - } - } - - let multiple_of_three_padding = - ((all_missing_values.len() + 2) / 3) * 3 - all_missing_values.len(); - let padding_element = Felt252::from(*sorted_offset_representatives.last().unwrap() as u64); - all_missing_values.append(&mut vec![padding_element; multiple_of_three_padding]); - - ( - all_missing_values, - sorted_offset_representatives[0], - sorted_offset_representatives.last().cloned().unwrap(), - ) -} - -/// Fills holes found in the range-checked columns. -fn fill_rc_holes(trace: &mut CairoTraceTable, holes: &[Felt252]) { - holes.iter().enumerate().for_each(|(i, hole)| { - trace.set_or_extend(i, RC_HOLES, hole); - }); - - // Fill the rest of the RC_HOLES column to avoid inexistent zeros - let mut offsets = trace.merge_columns(&[OFF_DST, OFF_OP0, OFF_OP1, RC_HOLES]); - - offsets.sort_by_key(|x| x.representative()); - let greatest_offset = offsets.last().unwrap(); - (holes.len()..trace.n_rows()).for_each(|i| { - trace.set_or_extend(i, RC_HOLES, greatest_offset); - }); -} - -/// Get memory holes from accessed addresses. These memory holes appear -/// as a consequence of interaction with builtins. -/// Returns a vector of addresses that were not present in the input vector (holes) -/// -/// # Arguments -/// -/// * `sorted_addrs` - Vector of sorted memory addresses. -/// * `pub_memory` - The public memory of the executed program. -fn get_memory_holes( - sorted_addrs: &[Felt252], - pub_memory: &HashMap, -) -> Vec { - let mut memory_holes = Vec::new(); - let mut prev_addr = &sorted_addrs[0]; - - for addr in sorted_addrs.iter() { - let addr_diff = addr - prev_addr; - - // If the candidate memory hole has an address belonging to the program segment (public - // memory), that is not accounted here since public memory is added in a posterior step of - // the protocol. - if addr_diff != Felt252::one() && addr_diff != Felt252::zero() { - let mut hole_addr = prev_addr + Felt252::one(); - - while hole_addr.representative() < addr.representative() { - if !pub_memory.contains_key(&hole_addr) { - memory_holes.push(hole_addr); - } - hole_addr += Felt252::one(); - } - } - prev_addr = addr; - } - - memory_holes -} - -/// Fill memory holes in the extra address column of the trace with the missing addresses. -fn fill_memory_holes(trace: &mut CairoTraceTable, memory_holes: &[Felt252]) { - memory_holes.iter().enumerate().for_each(|(i, hole)| { - trace.set_or_extend(i, EXTRA_ADDR, hole); - }); -} - -/// Receives the raw Cairo trace and memory as outputted from the Cairo VM and returns -/// the trace table used to Felt252ed the Cairo STARK prover. -/// The constraints of the Cairo AIR are defined over this trace rather than the raw trace -/// obtained from the Cairo VM, this is why this function is needed. -pub fn build_cairo_execution_trace( - register_states: &RegisterStates, - memory: &CairoMemory, -) -> CairoTraceTable { - let n_steps = register_states.steps(); - - // Instruction flags and offsets are decoded from the raw instructions and represented - // by the CairoInstructionFlags and InstructionOffsets as an intermediate representation - let (flags, offsets): (Vec, Vec) = register_states - .flags_and_offsets(memory) - .unwrap() - .into_iter() - .unzip(); - - // dst, op0, op1 and res are computed from flags and offsets - let (dst_addrs, mut dsts): (Vec, Vec) = - compute_dst(&flags, &offsets, register_states, memory); - let (op0_addrs, mut op0s): (Vec, Vec) = - compute_op0(&flags, &offsets, register_states, memory); - let (op1_addrs, op1s): (Vec, Vec) = - compute_op1(&flags, &offsets, register_states, memory, &op0s); - let mut res = compute_res(&flags, &op0s, &op1s, &dsts); - - // In some cases op0, dst or res may need to be updated from the already calculated values - update_values(&flags, register_states, &mut op0s, &mut dsts, &mut res); - - // Flags and offsets are transformed to a bit representation. This is needed since - // the flag constraints of the Cairo AIR are defined over bit representations of these - let trace_repr_flags: Vec<[Felt252; 16]> = flags - .iter() - .map(CairoInstructionFlags::to_trace_representation) - .collect(); - let trace_repr_offsets: Vec<[Felt252; 3]> = offsets - .iter() - .map(InstructionOffsets::to_trace_representation) - .collect(); - - // ap, fp, pc and instruction columns are computed - let aps: Vec = register_states - .rows - .iter() - .map(|t| Felt252::from(t.ap)) - .collect(); - let fps: Vec = register_states - .rows - .iter() - .map(|t| Felt252::from(t.fp)) - .collect(); - let pcs: Vec = register_states - .rows - .iter() - .map(|t| Felt252::from(t.pc)) - .collect(); - let instructions: Vec = register_states - .rows - .iter() - .map(|t| *memory.get(&t.pc).unwrap()) - .collect(); - - // t0, t1 and mul derived values are constructed. For details reFelt252r to - // section 9.1 of the Cairo whitepaper - let two = Felt252::from(2); - let t0: Vec = trace_repr_flags - .iter() - .zip(&dsts) - .map(|(repr_flags, dst)| (repr_flags[9] - two * repr_flags[10]) * dst) - .collect(); - let t1: Vec = t0.iter().zip(&res).map(|(t, r)| t * r).collect(); - let mul: Vec = op0s.iter().zip(&op1s).map(|(op0, op1)| op0 * op1).collect(); - - // A structure change of the flags and offsets representations to fit into the arguments - // expected by the TraceTable constructor. A vector of columns of the representations - // is obtained from the rows representation. - let trace_repr_flags = rows_to_cols(&trace_repr_flags); - let trace_repr_offsets = rows_to_cols(&trace_repr_offsets); - - let extra_addrs = vec![Felt252::zero(); n_steps]; - let extra_vals = extra_addrs.clone(); - let rc_holes = extra_addrs.clone(); - - // Build Cairo trace columns to instantiate TraceTable struct as defined in the trace layout - let mut trace_cols: Vec> = Vec::new(); - (0..trace_repr_flags.len()).for_each(|n| trace_cols.push(trace_repr_flags[n].clone())); - trace_cols.push(res); - trace_cols.push(aps); - trace_cols.push(fps); - trace_cols.push(pcs); - trace_cols.push(dst_addrs); - trace_cols.push(op0_addrs); - trace_cols.push(op1_addrs); - trace_cols.push(instructions); - trace_cols.push(dsts); - trace_cols.push(op0s); - trace_cols.push(op1s); - (0..trace_repr_offsets.len()).for_each(|n| trace_cols.push(trace_repr_offsets[n].clone())); - trace_cols.push(t0); - trace_cols.push(t1); - trace_cols.push(mul); - trace_cols.push(extra_addrs); - trace_cols.push(extra_vals); - trace_cols.push(rc_holes); - - TraceTable::from_columns_main(trace_cols, 1) -} - -/// Returns the vector of res values. -fn compute_res( - flags: &[CairoInstructionFlags], - op0s: &[Felt252], - op1s: &[Felt252], - dsts: &[Felt252], -) -> Vec { - /* - Cairo whitepaper, page 33 - https://eprint.iacr.org/2021/1063.pdf - # Compute res. - if pc_update == 4: - if res_logic == 0 && opcode == 0 && ap_update != 1: - res = Unused - else: - Undefined Behavior - else if pc_update = 0, 1 or 2: - switch res_logic: - case 0: res = op1 - case 1: res = op0 + op1 - case 2: res = op0 * op1 - default: Undefined Behavior - else: Undefined Behavior - */ - flags - .iter() - .zip(op0s) - .zip(op1s) - .zip(dsts) - .map(|(((f, op0), op1), dst)| { - match f.pc_update { - PcUpdate::Jnz => { - match (&f.res_logic, &f.opcode, &f.ap_update) { - ( - ResLogic::Op1, - CairoOpcode::NOp, - ApUpdate::Regular | ApUpdate::Add1 | ApUpdate::Add2, - ) => { - // In a `jnz` instruction, res is not used, so it is used - // to hold the value v = dst^(-1) as an optimization. - // This is important for the calculation of the `t1` virtual column - // values later on. - // See section 9.5 of the Cairo whitepaper, page 53. - if dst == &Felt252::zero() { - *dst - } else { - dst.inv().unwrap() - } - } - _ => { - panic!("Undefined Behavior"); - } - } - } - PcUpdate::Regular | PcUpdate::Jump | PcUpdate::JumpRel => match f.res_logic { - ResLogic::Op1 => *op1, - ResLogic::Add => op0 + op1, - ResLogic::Mul => op0 * op1, - ResLogic::Unconstrained => { - panic!("Undefined Behavior"); - } - }, - } - }) - .collect() -} - -/// Returns the vector of: -/// - dst_addrs -/// - dsts -fn compute_dst( - flags: &[CairoInstructionFlags], - offsets: &[InstructionOffsets], - register_states: &RegisterStates, - memory: &CairoMemory, -) -> (Vec, Vec) { - /* Cairo whitepaper, page 33 - https://eprint.iacr.org/2021/1063.pdf - - # Compute dst - if dst_reg == 0: - dst = m(ap + offdst) - else: - dst = m(fp + offdst) - */ - flags - .iter() - .zip(offsets) - .zip(register_states.rows.iter()) - .map(|((f, o), t)| match f.dst_reg { - DstReg::AP => { - let addr = t.ap.checked_add_signed(o.off_dst.into()).unwrap(); - (Felt252::from(addr), *memory.get(&addr).unwrap()) - } - DstReg::FP => { - let addr = t.fp.checked_add_signed(o.off_dst.into()).unwrap(); - (Felt252::from(addr), *memory.get(&addr).unwrap()) - } - }) - .unzip() -} - -/// Returns the vector of: -/// - op0_addrs -/// - op0s -fn compute_op0( - flags: &[CairoInstructionFlags], - offsets: &[InstructionOffsets], - register_states: &RegisterStates, - memory: &CairoMemory, -) -> (Vec, Vec) { - /* Cairo whitepaper, page 33 - https://eprint.iacr.org/2021/1063.pdf - - # Compute op0. - if op0_reg == 0: - op0 = m(ap + offop0) - else: - op0 = m(fp + offop0) - */ - flags - .iter() - .zip(offsets) - .zip(register_states.rows.iter()) - .map(|((f, o), t)| match f.op0_reg { - Op0Reg::AP => { - let addr = t.ap.checked_add_signed(o.off_op0.into()).unwrap(); - (Felt252::from(addr), *memory.get(&addr).unwrap()) - } - Op0Reg::FP => { - let addr = t.fp.checked_add_signed(o.off_op0.into()).unwrap(); - (Felt252::from(addr), *memory.get(&addr).unwrap()) - } - }) - .unzip() -} - -/// Returns the vector of: -/// - op1_addrs -/// - op1s -fn compute_op1( - flags: &[CairoInstructionFlags], - offsets: &[InstructionOffsets], - register_states: &RegisterStates, - memory: &CairoMemory, - op0s: &[Felt252], -) -> (Vec, Vec) { - /* Cairo whitepaper, page 33 - https://eprint.iacr.org/2021/1063.pdf - # Compute op1 and instruction_size. - switch op1_src: - case 0: - instruction_size = 1 - op1 = m(op0 + offop1) - case 1: - instruction_size = 2 - op1 = m(pc + offop1) - # If offop1 = 1, we have op1 = immediate_value. - case 2: - instruction_size = 1 - op1 = m(fp + offop1) - case 4: - instruction_size = 1 - op1 = m(ap + offop1) - default: - Undefined Behavior - */ - flags - .iter() - .zip(offsets) - .zip(op0s) - .zip(register_states.rows.iter()) - .map(|(((flag, offset), op0), trace_state)| match flag.op1_src { - Op1Src::Op0 => { - let addr = aux_get_last_nim_of_field_element(op0) - .checked_add_signed(offset.off_op1.into()) - .unwrap(); - (Felt252::from(addr), *memory.get(&addr).unwrap()) - } - Op1Src::Imm => { - let pc = trace_state.pc; - let addr = pc.checked_add_signed(offset.off_op1.into()).unwrap(); - (Felt252::from(addr), *memory.get(&addr).unwrap()) - } - Op1Src::AP => { - let ap = trace_state.ap; - let addr = ap.checked_add_signed(offset.off_op1.into()).unwrap(); - (Felt252::from(addr), *memory.get(&addr).unwrap()) - } - Op1Src::FP => { - let fp = trace_state.fp; - let addr = fp.checked_add_signed(offset.off_op1.into()).unwrap(); - (Felt252::from(addr), *memory.get(&addr).unwrap()) - } - }) - .unzip() -} - -/// Depending on the instruction opcodes, some values should be updated. -/// This function updates op0s, dst, res in place when the conditions hold. -fn update_values( - flags: &[CairoInstructionFlags], - register_states: &RegisterStates, - op0s: &mut [Felt252], - dst: &mut [Felt252], - res: &mut [Felt252], -) { - for (i, f) in flags.iter().enumerate() { - if f.opcode == CairoOpcode::Call { - let instruction_size = if flags[i].op1_src == Op1Src::Imm { - 2 - } else { - 1 - }; - op0s[i] = (register_states.rows[i].pc + instruction_size).into(); - dst[i] = register_states.rows[i].fp.into(); - } else if f.opcode == CairoOpcode::AssertEq { - res[i] = dst[i]; - } - } -} - -/// Utility function to change from a rows representation to a columns -/// representation of a slice of arrays. -fn rows_to_cols(rows: &[[Felt252; N]]) -> Vec> { - let n_cols = rows[0].len(); - - (0..n_cols) - .map(|col_idx| { - rows.iter() - .map(|elem| elem[col_idx]) - .collect::>() - }) - .collect::>>() -} - -// NOTE: Leaving this function despite not being used anywhere. It could be useful once -// we implement layouts with the range-check builtin. -#[allow(dead_code)] -fn decompose_rc_values_into_trace_columns(rc_values: &[&Felt252]) -> [Vec; 8] { - let mask = UnsignedInteger::from_hex("FFFF").unwrap(); - let mut rc_base_types: Vec> = - rc_values.iter().map(|x| x.representative()).collect(); - - let mut decomposition_columns: Vec> = Vec::new(); - - for _ in 0..8 { - decomposition_columns.push( - rc_base_types - .iter() - .map(|&x| Felt252::from(&(x & mask))) - .collect(), - ); - - rc_base_types = rc_base_types.iter().map(|&x| x >> 16).collect(); - } - - // This can't fail since we have 8 pushes - decomposition_columns.try_into().unwrap() -} - -#[cfg(test)] -mod test { - use crate::air::EXTRA_VAL; - - use super::*; - use lambdaworks_math::field::element::FieldElement; - use stark_platinum_prover::table::Table; - - #[test] - fn test_rc_decompose() { - let fifteen = Felt252::from_hex("000F000F000F000F000F000F000F000F").unwrap(); - let sixteen = Felt252::from_hex("00100010001000100010001000100010").unwrap(); - let one_two_three = Felt252::from_hex("00010002000300040005000600070008").unwrap(); - - let decomposition_columns = - decompose_rc_values_into_trace_columns(&[&fifteen, &sixteen, &one_two_three]); - - for row in &decomposition_columns { - assert_eq!(row[0], Felt252::from_hex("F").unwrap()); - assert_eq!(row[1], Felt252::from_hex("10").unwrap()); - } - - assert_eq!(decomposition_columns[0][2], Felt252::from_hex("8").unwrap()); - assert_eq!(decomposition_columns[1][2], Felt252::from_hex("7").unwrap()); - assert_eq!(decomposition_columns[2][2], Felt252::from_hex("6").unwrap()); - assert_eq!(decomposition_columns[3][2], Felt252::from_hex("5").unwrap()); - assert_eq!(decomposition_columns[4][2], Felt252::from_hex("4").unwrap()); - assert_eq!(decomposition_columns[5][2], Felt252::from_hex("3").unwrap()); - assert_eq!(decomposition_columns[6][2], Felt252::from_hex("2").unwrap()); - assert_eq!(decomposition_columns[7][2], Felt252::from_hex("1").unwrap()); - } - - #[test] - fn test_fill_range_check_values() { - let columns = vec![ - vec![FieldElement::from(1); 3], - vec![FieldElement::from(4); 3], - vec![FieldElement::from(7); 3], - ]; - let expected_col = vec![ - FieldElement::from(2), - FieldElement::from(3), - FieldElement::from(5), - FieldElement::from(6), - FieldElement::from(7), - FieldElement::from(7), - ]; - let table = TraceTable::::from_columns(columns, 3, 1); - - let (col, rc_min, rc_max) = get_rc_holes(&table, &[0, 1, 2]); - assert_eq!(col, expected_col); - assert_eq!(rc_min, 1); - assert_eq!(rc_max, 7); - } - - #[test] - fn test_add_missing_values_to_rc_holes_column() { - let mut row = vec![Felt252::from(5); 36]; - row[35] = Felt252::zero(); - let data = row.repeat(8); - let table = Table::new(data, 36); - - let mut main_trace = TraceTable:: { - table, - num_main_columns: 36, - num_aux_columns: 23, - step_size: 1, - }; - - let rc_holes = vec![ - Felt252::from(1), - Felt252::from(2), - Felt252::from(3), - Felt252::from(4), - Felt252::from(5), - Felt252::from(6), - ]; - - fill_rc_holes(&mut main_trace, &rc_holes); - - let expected_rc_holes_column = vec![ - Felt252::from(1), - Felt252::from(2), - Felt252::from(3), - Felt252::from(4), - Felt252::from(5), - Felt252::from(6), - Felt252::from(6), - Felt252::from(6), - ]; - - let rc_holes_column = main_trace.columns()[35].clone(); - - assert_eq!(expected_rc_holes_column, rc_holes_column); - } - - #[test] - fn test_get_memory_holes_empty_pub_memory() { - // We construct a sorted addresses list [1, 2, 3, 6, 7, 8, 9, 13, 14, 15], and - // an empty public memory. This way, any holes present between - // the min and max addresses should be returned by the function. - let mut addrs: Vec = (1..4).map(Felt252::from).collect(); - let addrs_extension: Vec = (6..10).map(Felt252::from).collect(); - addrs.extend_from_slice(&addrs_extension); - let addrs_extension: Vec = (13..16).map(Felt252::from).collect(); - addrs.extend_from_slice(&addrs_extension); - let pub_memory = HashMap::new(); - - let expected_memory_holes = vec![ - Felt252::from(4), - Felt252::from(5), - Felt252::from(10), - Felt252::from(11), - Felt252::from(12), - ]; - let calculated_memory_holes = get_memory_holes(&addrs, &pub_memory); - - assert_eq!(expected_memory_holes, calculated_memory_holes); - } - - #[test] - fn test_get_memory_holes_inside_program_section() { - // We construct a sorted addresses list [1, 2, 3, 8, 9] and we - // set public memory from address 1 to 9. Since all the holes will be inside the - // program segment (meaning from addresses 1 to 9), the function - // should not return any of them. - let mut addrs: Vec = (1..4).map(Felt252::from).collect(); - let addrs_extension: Vec = (8..10).map(Felt252::from).collect(); - addrs.extend_from_slice(&addrs_extension); - - let mut pub_memory = HashMap::new(); - (1..=9).for_each(|k| { - let addr = Felt252::from(k); - pub_memory.insert(addr, addr * Felt252::from(2)); - }); - - let calculated_memory_holes = get_memory_holes(&addrs, &pub_memory); - let expected_memory_holes: Vec = Vec::new(); - - assert_eq!(expected_memory_holes, calculated_memory_holes); - } - - #[test] - fn test_get_memory_holes_outside_program_section() { - // We construct a sorted addresses list [1, 2, 3, 8, 9] and we - // set public memory from addresses 1 to 6. The holes found inside the program section, - // i.e. in the address range between 1 to 6, should not be returned. - // So addresses 4, 5 and 6 will no be returned, only address 7. - let mut addrs: Vec = (1..4).map(Felt252::from).collect(); - let addrs_extension: Vec = (8..10).map(Felt252::from).collect(); - addrs.extend_from_slice(&addrs_extension); - - let mut pub_memory = HashMap::new(); - (1..=6).for_each(|k| { - let addr = Felt252::from(k); - pub_memory.insert(addr, addr * Felt252::from(2)); - }); - - let calculated_memory_holes = get_memory_holes(&addrs, &pub_memory); - let expected_memory_holes = vec![Felt252::from(7)]; - - assert_eq!(expected_memory_holes, calculated_memory_holes); - } - - #[test] - fn test_fill_memory_holes() { - const TRACE_COL_LEN: usize = 2; - const NUM_TRACE_COLS: usize = EXTRA_VAL + 1; - - let mut trace_cols = vec![vec![Felt252::zero(); TRACE_COL_LEN]; NUM_TRACE_COLS]; - trace_cols[FRAME_PC][0] = Felt252::one(); - trace_cols[FRAME_DST_ADDR][0] = Felt252::from(2); - trace_cols[FRAME_OP0_ADDR][0] = Felt252::from(3); - trace_cols[FRAME_OP1_ADDR][0] = Felt252::from(5); - trace_cols[FRAME_PC][1] = Felt252::from(6); - trace_cols[FRAME_DST_ADDR][1] = Felt252::from(9); - trace_cols[FRAME_OP0_ADDR][1] = Felt252::from(10); - trace_cols[FRAME_OP1_ADDR][1] = Felt252::from(11); - let mut trace = TraceTable::from_columns(trace_cols, 2, 1); - - let memory_holes = vec![Felt252::from(4), Felt252::from(7), Felt252::from(8)]; - fill_memory_holes(&mut trace, &memory_holes); - - let extra_addr = &trace.columns()[EXTRA_ADDR]; - assert_eq!(extra_addr, &memory_holes); - } -} diff --git a/provers/cairo/src/lib.rs b/provers/cairo/src/lib.rs deleted file mode 100644 index 54384a63c..000000000 --- a/provers/cairo/src/lib.rs +++ /dev/null @@ -1,22 +0,0 @@ -use lambdaworks_math::field::{ - element::FieldElement, fields::fft_friendly::stark_252_prime_field::Stark252PrimeField, -}; - -pub mod air; -pub mod cairo_layout; -pub mod cairo_mem; -pub mod decode; -pub mod errors; -pub mod execution_trace; -pub mod register_states; -pub mod runner; -pub mod transition_constraints; - -#[cfg(test)] -pub mod tests; - -#[cfg(feature = "wasm")] -pub mod wasm_wrappers; - -pub type PrimeField = Stark252PrimeField; -pub type Felt252 = FieldElement; diff --git a/provers/cairo/src/main.rs b/provers/cairo/src/main.rs deleted file mode 100644 index b64a51f26..000000000 --- a/provers/cairo/src/main.rs +++ /dev/null @@ -1,350 +0,0 @@ -use cairo_platinum_prover::air::{generate_cairo_proof, verify_cairo_proof, PublicInputs}; -use cairo_platinum_prover::cairo_layout::CairoLayout; -use cairo_platinum_prover::runner::run::generate_prover_args; -use cairo_platinum_prover::runner::run::generate_prover_args_from_trace; -use lambdaworks_math::field::fields::fft_friendly::stark_252_prime_field::Stark252PrimeField; -use stark_platinum_prover::proof::options::{ProofOptions, SecurityLevel}; -use stark_platinum_prover::proof::stark::StarkProof; -mod commands; -use clap::Parser; - -use std::env; -use std::fs::File; -use std::io::{Error, ErrorKind}; -use std::process::{Command, Stdio}; -use std::time::Instant; - -/// Get current directory and return it as a String -fn get_root_dir() -> Result { - let path_buf = env::current_dir()?.canonicalize()?; - if let Some(path) = path_buf.to_str() { - return Ok(path.to_string()); - } - - Err(Error::new(ErrorKind::NotFound, "not found")) -} - -/// Attemps to compile the Cairo program with `cairo-compile` -/// and then save it to the desired path. -/// Returns `Ok` on success else returns `Error` -fn cairo_compile(program_path: &String, out_file_path: &String) -> Result<(), Error> { - let out_file = File::create(out_file_path)?; - - match Command::new("cairo-compile") - .arg("--proof_mode") - .arg(program_path) - .stderr(Stdio::null()) - .stdout(out_file) - .spawn() - { - Ok(mut child) => { - // wait for spawned proccess to finish - match child.wait() { - Ok(_) => Ok(()), - Err(err) => Err(err), - } - } - Err(err) => Err(err), - } -} - -/// Attemps to compile the Cairo program with `docker` -/// and then save it to the desired path. -/// Returns `Ok` on success else returns `Error` -fn docker_compile(program_path: &String, out_file_path: &String) -> Result<(), Error> { - let out_file = File::create(out_file_path)?; - let root_dir = get_root_dir()?; - match Command::new("docker") - .arg("run") - .arg("--rm") - .arg("-v") - .arg(format!("{}/:/pwd", root_dir)) - .arg("cairo") - .arg("--proof_mode") - .arg(format!("/pwd/{}", program_path)) - .stderr(Stdio::null()) - .stdout(out_file) - .spawn() - { - Ok(mut child) => { - // wait for spawned proccess to finish - match child.wait() { - Ok(status) => match status.code() { - Some(0) => Ok(()), // exit success - _ => Err(Error::new( - ErrorKind::Other, - "File provided is not a Cairo uncompiled", - )), - }, - Err(err) => Err(err), - } - } - Err(err) => Err(err), - } -} - -/// Attemps to compile the Cairo program -/// with either `cairo-compile` or `docker`` -fn try_compile(program_path: &String, out_file_path: &String) -> Result<(), Error> { - if !program_path.contains(".cairo") { - return Err(Error::new( - ErrorKind::Other, - "Provided file is not a Cairo source file", - )); - } - - if cairo_compile(program_path, out_file_path).is_ok() - || docker_compile(program_path, out_file_path).is_ok() - { - Ok(()) - } else { - Err(Error::new( - ErrorKind::Other, - "Failed to compile cairo program, neither cairo-compile nor docker found", - )) - } -} - -fn generate_proof( - input_path: &String, - proof_options: &ProofOptions, -) -> Option<( - StarkProof, - PublicInputs, -)> { - let timer = Instant::now(); - - let Ok(program_content) = std::fs::read(input_path) else { - eprintln!("Error opening {input_path} file"); - return None; - }; - - // FIXME: We should set this through the CLI in the future - let layout = CairoLayout::Plain; - - let Ok((main_trace, pub_inputs)) = generate_prover_args(&program_content, layout) else { - eprintln!("Error generating prover args"); - return None; - }; - - println!(" Time spent: {:?} \n", timer.elapsed()); - - let timer = Instant::now(); - println!("Making proof ..."); - let proof = match generate_cairo_proof(&main_trace, &pub_inputs, proof_options) { - Ok(p) => p, - Err(err) => { - eprintln!("Error generating proof: {:?}", err); - return None; - } - }; - - println!(" Time spent in proving: {:?} \n", timer.elapsed()); - - Some((proof, pub_inputs)) -} - -fn generate_proof_from_trace( - trace_bin_path: &str, - memory_bin_path: &str, - proof_options: &ProofOptions, -) -> Option<( - StarkProof, - PublicInputs, -)> { - // ## Generating the prover args - let timer = Instant::now(); - let Ok((main_trace, pub_inputs)) = - generate_prover_args_from_trace(trace_bin_path, memory_bin_path) - else { - eprintln!("Error generating prover args"); - return None; - }; - println!(" Time spent: {:?} \n", timer.elapsed()); - - // ## Prove - let timer = Instant::now(); - println!("Making proof ..."); - let proof = match generate_cairo_proof(&main_trace, &pub_inputs, proof_options) { - Ok(p) => p, - Err(err) => { - eprintln!("Error generating proof: {:?}", err); - return None; - } - }; - println!(" Time spent in proving: {:?} \n", timer.elapsed()); - - Some((proof, pub_inputs)) -} - -fn verify_proof( - proof: StarkProof, - pub_inputs: PublicInputs, - proof_options: &ProofOptions, -) -> bool { - let timer = Instant::now(); - - println!("Verifying ..."); - let proof_verified = verify_cairo_proof(&proof, &pub_inputs, proof_options); - println!(" Time spent in verifying: {:?} \n", timer.elapsed()); - - if proof_verified { - println!("Verification succeeded"); - } else { - println!("Verification failed"); - } - - proof_verified -} - -fn write_proof( - proof: StarkProof, - pub_inputs: PublicInputs, - proof_path: String, -) { - let mut bytes = vec![]; - let proof_bytes: Vec = - bincode::serde::encode_to_vec(proof, bincode::config::standard()).unwrap(); - - let pub_inputs_bytes: Vec = - bincode::serde::encode_to_vec(&pub_inputs, bincode::config::standard()).unwrap(); - - // This should be reworked - // Public inputs shouldn't be stored in the proof if the verifier wants to check them - - // An u32 is enough for storing proofs up to 32 GiB - // They shouldn't exceed the order of kbs - // Reading an usize leads to problem in WASM (32 bit vs 64 bit architecture) - - bytes.extend((proof_bytes.len() as u32).to_le_bytes()); - bytes.extend(proof_bytes); - bytes.extend(pub_inputs_bytes); - - let Ok(()) = std::fs::write(&proof_path, bytes) else { - eprintln!("Error writing proof to file: {}", &proof_path); - return; - }; - - println!("Proof written to {}", &proof_path); -} - -fn main() { - let proof_options = ProofOptions::new_secure(SecurityLevel::Conjecturable100Bits, 3); - let args: commands::ProverArgs = commands::ProverArgs::parse(); - match args.entity { - commands::ProverEntity::Compile(args) => { - let out_file_path = args.program_path.replace(".cairo", ".json"); - if let Err(err) = try_compile(&args.program_path, &out_file_path) { - eprintln!("{}", err); - } else { - println!("Compiled cairo program"); - } - } - commands::ProverEntity::RunAndProve(args) => { - // verify input file is .cairo - if args.program_path.contains(".cairo") { - eprintln!("\nYou are trying to prove a non compiled Cairo program. Please compile it before sending it to the prover.\n"); - return; - } - - let Some((proof, pub_inputs)) = generate_proof(&args.program_path, &proof_options) - else { - return; - }; - - write_proof(proof, pub_inputs, args.proof_path); - } - commands::ProverEntity::Prove(args) => { - let Some((proof, pub_inputs)) = generate_proof_from_trace( - &args.trace_bin_path, - &args.memory_bin_path, - &proof_options, - ) else { - return; - }; - - write_proof(proof, pub_inputs, args.proof_path); - } - commands::ProverEntity::Verify(args) => { - let Ok(program_content) = std::fs::read(&args.proof_path) else { - eprintln!("Error opening {} file", args.proof_path); - return; - }; - let mut bytes = program_content.as_slice(); - if bytes.len() < 8 { - eprintln!("Error reading proof from file: {}", args.proof_path); - return; - } - - // Proof len was stored as an u32, 4u8 needs to be read - let proof_len = u32::from_le_bytes(bytes[0..4].try_into().unwrap()) as usize; - - bytes = &bytes[4..]; - if bytes.len() < proof_len { - eprintln!("Error reading proof from file: {}", args.proof_path); - return; - } - - let Ok((proof, _)) = bincode::serde::decode_from_slice( - &bytes[0..proof_len], - bincode::config::standard(), - ) else { - println!("Error reading proof from file: {}", args.proof_path); - return; - }; - bytes = &bytes[proof_len..]; - - let Ok((pub_inputs, _)) = - bincode::serde::decode_from_slice(bytes, bincode::config::standard()) - else { - println!("Error reading proof from file: {}", args.proof_path); - return; - }; - - verify_proof(proof, pub_inputs, &proof_options); - } - commands::ProverEntity::ProveAndVerify(args) => { - if args.program_path.contains(".cairo") { - eprintln!("\nYou are trying to prove a non compiled Cairo program. Please compile it before sending it to the prover.\n"); - return; - } - - let Some((proof, pub_inputs)) = generate_proof(&args.program_path, &proof_options) - else { - return; - }; - verify_proof(proof, pub_inputs, &proof_options); - } - commands::ProverEntity::CompileAndProve(args) => { - let out_file_path = args.program_path.replace(".cairo", ".json"); - match try_compile(&args.program_path, &out_file_path) { - Ok(_) => { - let Some((proof, pub_inputs)) = generate_proof(&out_file_path, &proof_options) - else { - return; - }; - - write_proof(proof, pub_inputs, args.proof_path); - } - Err(err) => { - eprintln!("{}", err) - } - } - } - commands::ProverEntity::CompileProveAndVerify(args) => { - let out_file_path = args.program_path.replace(".cairo", ".json"); - match try_compile(&args.program_path, &out_file_path) { - Ok(_) => { - let Some((proof, pub_inputs)) = generate_proof(&out_file_path, &proof_options) - else { - return; - }; - verify_proof(proof, pub_inputs, &proof_options); - } - Err(err) => { - eprintln!("{}", err) - } - } - } - } -} diff --git a/provers/cairo/src/register_states.rs b/provers/cairo/src/register_states.rs deleted file mode 100644 index a63afcbdf..000000000 --- a/provers/cairo/src/register_states.rs +++ /dev/null @@ -1,259 +0,0 @@ -use super::{ - cairo_mem::CairoMemory, - decode::{instruction_flags::CairoInstructionFlags, instruction_offsets::InstructionOffsets}, - errors::{CairoImportError, InstructionDecodingError}, -}; -use std::fs; - -#[derive(PartialEq, Clone, Debug)] -pub struct RegistersState { - pub pc: u64, - pub fp: u64, - pub ap: u64, -} - -impl RegistersState { - fn instruction_flags_and_offsets( - &self, - memory: &CairoMemory, - ) -> Result<(CairoInstructionFlags, InstructionOffsets), InstructionDecodingError> { - let instruction = memory - .get(&self.pc) - .ok_or(InstructionDecodingError::InstructionNotFound)?; - - let flags = CairoInstructionFlags::try_from(instruction)?; - let offsets = InstructionOffsets::new(instruction); - - Ok((flags, offsets)) - } -} - -#[derive(PartialEq, Clone, Debug)] -pub struct RegisterStates { - pub rows: Vec, -} - -impl RegisterStates { - pub fn steps(&self) -> usize { - self.rows.len() - } - - pub fn flags_and_offsets( - &self, - memory: &CairoMemory, - ) -> Result, InstructionDecodingError> { - self.rows - .iter() - .map(|state| state.instruction_flags_and_offsets(memory)) - .collect() - } - - pub fn from_bytes_le(bytes: &[u8]) -> Result { - // Each row of the trace is a RegisterState - // ap, fp, pc, each 8 bytes long (u64) - const ROW_SIZE: usize = 8 * 3; - - if bytes.len() % ROW_SIZE != 0 { - return Err(CairoImportError::IncorrectNumberOfBytes); - } - let num_rows = bytes.len() / ROW_SIZE; - - let rows = (0..num_rows) - .map(|i| RegistersState { - ap: u64::from_le_bytes(bytes[i * ROW_SIZE..i * ROW_SIZE + 8].try_into().unwrap()), - fp: u64::from_le_bytes( - bytes[i * ROW_SIZE + 8..i * ROW_SIZE + 16] - .try_into() - .unwrap(), - ), - pc: u64::from_le_bytes( - bytes[i * ROW_SIZE + 16..i * 24 + ROW_SIZE] - .try_into() - .unwrap(), - ), - }) - .collect::>(); - - Ok(Self { rows }) - } - - pub fn from_file(path: &str) -> Result { - let data = fs::read(path)?; - Self::from_bytes_le(&data) - } -} - -#[cfg(test)] -mod tests { - - use crate::{ - decode::instruction_flags::{ - ApUpdate, CairoOpcode, DstReg, Op0Reg, Op1Src, PcUpdate, ResLogic, - }, - Felt252, - }; - - use super::*; - use std::collections::HashMap; - - #[test] - fn mul_program_gives_expected_trace() { - /* - Hex from the trace of the following cairo program - - func main() { - let x = 2; - let y = 3; - assert x * y = 6; - return(); - } - - Generated with: - - cairo-compile multiply.cairo --output multiply.out - - cairo-run --layout all --trace_file trace.out --memory_file mem.out --program multiply.out - - xxd -p trace.out - */ - - let bytes = hex::decode("080000000000000008000000000000000100000000000000090000000000000008000000000000000300000000000000090000000000000008000000000000000500000000000000").unwrap(); - - let register_states = RegisterStates::from_bytes_le(&bytes); - - let expected_state0 = RegistersState { - ap: 8, - fp: 8, - pc: 1, - }; - - let expected_state1 = RegistersState { - ap: 9, - fp: 8, - pc: 3, - }; - - let expected_state2 = RegistersState { - ap: 9, - fp: 8, - pc: 5, - }; - - let expected_reg_states = RegisterStates { - rows: [expected_state0, expected_state1, expected_state2].to_vec(), - }; - - assert_eq!(register_states.unwrap(), expected_reg_states) - } - - #[test] - fn wrong_amount_of_bytes_gives_err() { - let bytes = hex::decode("080000000000").unwrap(); - - match RegisterStates::from_bytes_le(&bytes) { - Err(CairoImportError::IncorrectNumberOfBytes) => (), - Err(_) => panic!(), - Ok(_) => panic!(), - } - } - - #[test] - fn loads_mul_trace_from_file_correctly() { - let base_dir = env!("CARGO_MANIFEST_DIR"); - - dbg!(base_dir); - let dir = base_dir.to_owned() + "/src/tests/data/mul_trace.out"; - - let register_states = RegisterStates::from_file(&dir).unwrap(); - - let expected_state0 = RegistersState { - ap: 8, - fp: 8, - pc: 1, - }; - - let expected_state1 = RegistersState { - ap: 9, - fp: 8, - pc: 3, - }; - - let expected_state2 = RegistersState { - ap: 9, - fp: 8, - pc: 5, - }; - - let expected_reg_states = RegisterStates { - rows: [expected_state0, expected_state1, expected_state2].to_vec(), - }; - - assert_eq!(register_states, expected_reg_states); - } - - #[test] - fn decode_instruction_flags_and_offsets() { - let data = HashMap::from([ - (1u64, Felt252::from(0x480680017fff8000)), - (2u64, Felt252::from(0x1104800180018000)), - ]); - - let memory = CairoMemory::new(data); - let state1 = RegistersState { - ap: 8, - fp: 8, - pc: 1, - }; - let state2 = RegistersState { - ap: 9, - fp: 8, - pc: 2, - }; - - let trace = RegisterStates { - rows: [state1, state2].to_vec(), - }; - - let expected_flags1 = CairoInstructionFlags { - opcode: CairoOpcode::AssertEq, - pc_update: PcUpdate::Regular, - ap_update: ApUpdate::Add1, - op0_reg: Op0Reg::FP, - op1_src: Op1Src::Imm, - res_logic: ResLogic::Op1, - dst_reg: DstReg::AP, - }; - - let expected_offsets1 = InstructionOffsets { - off_dst: 0, - off_op0: -1, - off_op1: 1, - }; - - let expected_flags2 = CairoInstructionFlags { - opcode: CairoOpcode::Call, - pc_update: PcUpdate::JumpRel, - ap_update: ApUpdate::Regular, - op0_reg: Op0Reg::AP, - op1_src: Op1Src::Imm, - res_logic: ResLogic::Op1, - dst_reg: DstReg::AP, - }; - - let expected_offsets2 = InstructionOffsets { - off_dst: 0, - off_op0: 1, - off_op1: 1, - }; - - let flags_and_offsets = trace.flags_and_offsets(&memory).unwrap(); - - assert_eq!( - flags_and_offsets, - vec![ - (expected_flags1, expected_offsets1), - (expected_flags2, expected_offsets2) - ] - ); - } -} diff --git a/provers/cairo/src/runner/file_writer.rs b/provers/cairo/src/runner/file_writer.rs deleted file mode 100644 index a116c66cc..000000000 --- a/provers/cairo/src/runner/file_writer.rs +++ /dev/null @@ -1,35 +0,0 @@ -use bincode::enc::write::Writer; -use std::io::{self, Write}; - -pub struct FileWriter { - buf_writer: io::BufWriter, - bytes_written: usize, -} - -impl Writer for FileWriter { - fn write(&mut self, bytes: &[u8]) -> Result<(), bincode::error::EncodeError> { - self.buf_writer - .write_all(bytes) - .map_err(|e| bincode::error::EncodeError::Io { - inner: e, - index: self.bytes_written, - })?; - - self.bytes_written += bytes.len(); - - Ok(()) - } -} - -impl FileWriter { - pub fn new(buf_writer: io::BufWriter) -> Self { - Self { - buf_writer, - bytes_written: 0, - } - } - - pub fn flush(&mut self) -> io::Result<()> { - self.buf_writer.flush() - } -} diff --git a/provers/cairo/src/runner/mod.rs b/provers/cairo/src/runner/mod.rs deleted file mode 100644 index cb9e2c994..000000000 --- a/provers/cairo/src/runner/mod.rs +++ /dev/null @@ -1,3 +0,0 @@ -pub mod file_writer; -pub mod run; -pub mod vec_writer; diff --git a/provers/cairo/src/runner/run.rs b/provers/cairo/src/runner/run.rs deleted file mode 100644 index b46770630..000000000 --- a/provers/cairo/src/runner/run.rs +++ /dev/null @@ -1,187 +0,0 @@ -use crate::air::{PublicInputs, Segment, SegmentName}; -use crate::cairo_layout::CairoLayout; -use crate::cairo_mem::CairoMemory; -use crate::execution_trace::build_main_trace; -use crate::register_states::RegisterStates; -use crate::Felt252; - -use super::vec_writer::VecWriter; -use cairo_vm::cairo_run::{self, EncodeTraceError}; - -use cairo_vm::hint_processor::builtin_hint_processor::builtin_hint_processor_definition::BuiltinHintProcessor; - -use cairo_vm::vm::errors::{ - cairo_run_errors::CairoRunError, trace_errors::TraceError, vm_errors::VirtualMachineError, -}; - -use cairo_vm::without_std::collections::HashMap; -use lambdaworks_math::field::fields::fft_friendly::stark_252_prime_field::Stark252PrimeField; -use stark_platinum_prover::trace::TraceTable; - -#[derive(Debug)] -pub enum Error { - IO(std::io::Error), - Runner(CairoRunError), - EncodeTrace(EncodeTraceError), - VirtualMachine(VirtualMachineError), - Trace(TraceError), -} - -impl From for Error { - fn from(err: std::io::Error) -> Error { - Error::IO(err) - } -} - -impl From for Error { - fn from(err: CairoRunError) -> Error { - Error::Runner(err) - } -} - -impl From for Error { - fn from(err: EncodeTraceError) -> Error { - Error::EncodeTrace(err) - } -} - -impl From for Error { - fn from(err: VirtualMachineError) -> Error { - Error::VirtualMachine(err) - } -} - -impl From for Error { - fn from(err: TraceError) -> Error { - Error::Trace(err) - } -} - -/// Runs a cairo program in JSON format and returns trace, memory and program length. -/// Uses [cairo-rs](https://github.com/lambdaclass/cairo-rs/) project to run the program. -/// -/// # Params -/// -/// `entrypoint_function` - the name of the entrypoint function tu run. If `None` is provided, the default value is `main`. -/// `layout` - type of layout of Cairo. -/// `program_content` - content of the input file. -/// `trace_path` - path where to store the generated trace file. -/// `memory_path` - path where to store the generated memory file. -/// -/// # Returns -/// -/// Ok() in case of succes, with the following values: -/// - register_states -/// - cairo_mem -/// - data_len -/// - range_check: an Option<(usize, usize)> containing the start and end of range check. -/// `Error` indicating the type of error. -#[allow(clippy::type_complexity)] -pub fn run_program( - entrypoint_function: Option<&str>, - layout: CairoLayout, - program_content: &[u8], -) -> Result<(RegisterStates, CairoMemory, PublicInputs), Error> { - // default value for entrypoint is "main" - let entrypoint = entrypoint_function.unwrap_or("main"); - - let trace_enabled = true; - let mut hint_executor = BuiltinHintProcessor::new_empty(); - let cairo_run_config = cairo_run::CairoRunConfig { - entrypoint, - trace_enabled, - relocate_mem: true, - layout: layout.as_str(), - proof_mode: true, - secure_run: None, - disable_trace_padding: false, - }; - - let (runner, vm) = - match cairo_run::cairo_run(program_content, &cairo_run_config, &mut hint_executor) { - Ok(runner) => runner, - Err(error) => { - eprintln!("{error}"); - panic!(); - } - }; - - let relocated_trace = vm.get_relocated_trace().unwrap(); - - let mut trace_vec = Vec::::new(); - let mut trace_writer = VecWriter::new(&mut trace_vec); - trace_writer.write_encoded_trace(relocated_trace); - - let relocated_memory = &runner.relocated_memory; - - let mut memory_vec = Vec::::new(); - let mut memory_writer = VecWriter::new(&mut memory_vec); - memory_writer.write_encoded_memory(relocated_memory); - - trace_writer.flush().unwrap(); - memory_writer.flush().unwrap(); - - //TO DO: Better error handling - let cairo_mem = CairoMemory::from_bytes_le(&memory_vec).unwrap(); - let register_states = RegisterStates::from_bytes_le(&trace_vec).unwrap(); - - let vm_pub_inputs = runner.get_air_public_input(&vm).unwrap(); - - let mut pub_memory: HashMap = HashMap::new(); - vm_pub_inputs.public_memory.iter().for_each(|mem_cell| { - let addr = Felt252::from(mem_cell.address as u64); - let value = Felt252::from_hex_unchecked(&mem_cell.value.as_ref().unwrap().to_str_radix(16)); - pub_memory.insert(addr, value); - }); - - let mut memory_segments: HashMap = HashMap::new(); - vm_pub_inputs.memory_segments.iter().for_each(|(k, v)| { - memory_segments.insert(SegmentName::from(*k), Segment::from(v)); - }); - - let num_steps = register_states.steps(); - let public_inputs = PublicInputs { - pc_init: Felt252::from(register_states.rows[0].pc), - ap_init: Felt252::from(register_states.rows[0].ap), - fp_init: Felt252::from(register_states.rows[0].fp), - pc_final: Felt252::from(register_states.rows[num_steps - 1].pc), - ap_final: Felt252::from(register_states.rows[num_steps - 1].ap), - range_check_min: Some(vm_pub_inputs.rc_min as u16), - range_check_max: Some(vm_pub_inputs.rc_max as u16), - memory_segments, - public_memory: pub_memory, - num_steps, - }; - - Ok((register_states, cairo_mem, public_inputs)) -} - -pub fn generate_prover_args( - program_content: &[u8], - layout: CairoLayout, -) -> Result<(TraceTable, PublicInputs), Error> { - let (register_states, memory, mut public_inputs) = run_program(None, layout, program_content)?; - - let main_trace = build_main_trace(®ister_states, &memory, &mut public_inputs); - - Ok((main_trace, public_inputs)) -} - -pub fn generate_prover_args_from_trace( - trace_bin_path: &str, - memory_bin_path: &str, -) -> Result<(TraceTable, PublicInputs), Error> { - // ## Generating the prover args - let register_states = - RegisterStates::from_file(trace_bin_path).expect("Cairo trace bin file not found"); - let memory = - CairoMemory::from_file(memory_bin_path).expect("Cairo memory binary file not found"); - - // data length - let data_len = 0_usize; - let mut pub_inputs = PublicInputs::from_regs_and_mem(®ister_states, &memory, data_len); - - let main_trace = build_main_trace(®ister_states, &memory, &mut pub_inputs); - - Ok((main_trace, pub_inputs)) -} diff --git a/provers/cairo/src/runner/vec_writer.rs b/provers/cairo/src/runner/vec_writer.rs deleted file mode 100644 index 7e8cb52d0..000000000 --- a/provers/cairo/src/runner/vec_writer.rs +++ /dev/null @@ -1,58 +0,0 @@ -use cairo_vm::felt::Felt252; -use std::io::{self, Write}; - -pub struct VecWriter<'a> { - buf_writer: &'a mut Vec, -} - -impl bincode::enc::write::Writer for VecWriter<'_> { - fn write(&mut self, bytes: &[u8]) -> Result<(), bincode::error::EncodeError> { - self.buf_writer - .write_all(bytes) - .expect("Shouldn't fail in memory vector"); - - Ok(()) - } -} - -impl<'a> VecWriter<'a> { - pub fn new(vec: &'a mut Vec) -> Self { - Self { buf_writer: vec } - } - - pub fn flush(&mut self) -> io::Result<()> { - self.buf_writer.flush() - } - - pub fn write_encoded_trace( - &mut self, - relocated_trace: &[cairo_vm::vm::trace::trace_entry::TraceEntry], - ) { - for entry in relocated_trace.iter() { - self.buf_writer - .extend_from_slice(&((entry.ap as u64).to_le_bytes())); - self.buf_writer - .extend_from_slice(&((entry.fp as u64).to_le_bytes())); - self.buf_writer - .extend_from_slice(&((entry.pc as u64).to_le_bytes())); - } - } - - /// Writes a binary representation of the relocated memory. - /// - /// The memory pairs (address, value) are encoded and concatenated: - /// * address -> 8-byte encoded - /// * value -> 32-byte encoded - pub fn write_encoded_memory(&mut self, relocated_memory: &[Option]) { - for (i, memory_cell) in relocated_memory.iter().enumerate() { - match memory_cell { - None => continue, - Some(unwrapped_memory_cell) => { - self.buf_writer.extend_from_slice(&(i as u64).to_le_bytes()); - self.buf_writer - .extend_from_slice(&unwrapped_memory_cell.to_le_bytes()); - } - } - } - } -} diff --git a/provers/cairo/src/tests/data/mul_mem.out b/provers/cairo/src/tests/data/mul_mem.out deleted file mode 100644 index f4f866c2dd56b3c7571324a967539e35d6d6a5c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 320 zcmZQ%fP#kq^^6T{9xyIC%>)%-Lzh6~Gei0R>%rzZph?5IEKn99^H`zk{sGPVU*D|& dHvo+RGlvsR9G%M!6(FRJ1F8;YF1k4|J^<$b3;h59 diff --git a/provers/cairo/src/tests/data/mul_trace.out b/provers/cairo/src/tests/data/mul_trace.out deleted file mode 100644 index a4a295fdb52952db4d5db326f73186433a4adc4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72 Ycmd;JfB+6C%?PDA(Zrc?h_gb)0SS-*JOBUy diff --git a/provers/cairo/src/tests/integration_tests.rs b/provers/cairo/src/tests/integration_tests.rs deleted file mode 100644 index 79f051830..000000000 --- a/provers/cairo/src/tests/integration_tests.rs +++ /dev/null @@ -1,194 +0,0 @@ -use crate::{ - air::{generate_cairo_proof, verify_cairo_proof, CairoAIR}, - cairo_layout::CairoLayout, - runner::run::generate_prover_args, - tests::utils::{ - cairo0_program_path, test_prove_cairo_program, test_prove_cairo_program_from_trace, - }, - Felt252, -}; -use lambdaworks_math::field::fields::fft_friendly::stark_252_prime_field::Stark252PrimeField; -use stark_platinum_prover::{ - debug::validate_trace, - domain::Domain, - proof::{ - options::{ProofOptions, SecurityLevel}, - stark::StarkProof, - }, - traits::AIR, - transcript::StoneProverTranscript, -}; - -#[test_log::test] -fn test_prove_cairo_simple_program() { - let layout = CairoLayout::Plain; - test_prove_cairo_program(&cairo0_program_path("simple_program.json"), layout); -} - -#[test_log::test] -fn test_prove_cairo_fibonacci_5() { - let layout = CairoLayout::Plain; - test_prove_cairo_program(&cairo0_program_path("fibonacci_5.json"), layout); -} - -#[test_log::test] -fn test_prove_cairo_fibonacci_5_from_trace() { - test_prove_cairo_program_from_trace( - &cairo0_program_path("fibonacci_5_trace.bin"), - &cairo0_program_path("fibonacci_5_memory.bin"), - ); -} - -#[test_log::test] -fn test_verifier_rejects_wrong_authentication_paths() { - // Setup - let proof_options = ProofOptions::default_test_options(); - let program_content = std::fs::read(cairo0_program_path("fibonacci_5.json")).unwrap(); - let (main_trace, pub_inputs) = - generate_prover_args(&program_content, CairoLayout::Plain).unwrap(); - - // Generate the proof - let mut proof = generate_cairo_proof(&main_trace, &pub_inputs, &proof_options).unwrap(); - - // Change order of authentication path hashes - let query = 0; - let mut original_path = proof.deep_poly_openings[query] - .main_trace_polys - .proof - .merkle_path - .clone(); - original_path.swap(0, 1); - // For the test to make sense, we have to make sure - // that the two hashes are different. - assert_ne!(original_path[0], original_path[1]); - proof.deep_poly_openings[query] - .main_trace_polys - .proof - .merkle_path = original_path; - - // Verifier should reject the proof - assert!(!verify_cairo_proof(&proof, &pub_inputs, &proof_options)); -} - -#[test_log::test] -fn test_prove_cairo_fibonacci_1000() { - let layout = CairoLayout::Plain; - test_prove_cairo_program(&cairo0_program_path("fibonacci_1000.json"), layout); -} - -// #[cfg_attr(feature = "metal", ignore)] -// #[test_log::test] -// fn test_prove_cairo_fibonacci_casm() { -// let layout = CairoLayout::Plain; -// test_prove_cairo1_program(&cairo1_program_path("fibonacci_cairo1_mod.casm"), layout); -// } - -#[test_log::test] -fn test_verifier_rejects_proof_of_a_slightly_different_program() { - let program_content = std::fs::read(cairo0_program_path("simple_program.json")).unwrap(); - let (main_trace, mut pub_input) = - generate_prover_args(&program_content, CairoLayout::Plain).unwrap(); - - let proof_options = ProofOptions::default_test_options(); - - let proof = generate_cairo_proof(&main_trace, &pub_input, &proof_options).unwrap(); - - // We modify the original program and verify using this new "corrupted" version - let mut corrupted_program = pub_input.public_memory.clone(); - corrupted_program.insert(Felt252::one(), Felt252::from(5)); - corrupted_program.insert(Felt252::from(3), Felt252::from(5)); - - // Here we use the corrupted version of the program in the public inputs - pub_input.public_memory = corrupted_program; - assert!(!verify_cairo_proof(&proof, &pub_input, &proof_options)); -} - -#[test_log::test] -fn test_verifier_rejects_proof_with_different_range_bounds() { - let program_content = std::fs::read(cairo0_program_path("simple_program.json")).unwrap(); - let (main_trace, mut pub_inputs) = - generate_prover_args(&program_content, CairoLayout::Plain).unwrap(); - - let proof_options = ProofOptions::default_test_options(); - let proof = generate_cairo_proof(&main_trace, &pub_inputs, &proof_options).unwrap(); - - pub_inputs.range_check_min = Some(pub_inputs.range_check_min.unwrap() + 1); - assert!(!verify_cairo_proof(&proof, &pub_inputs, &proof_options)); - - pub_inputs.range_check_min = Some(pub_inputs.range_check_min.unwrap() - 1); - pub_inputs.range_check_max = Some(pub_inputs.range_check_max.unwrap() - 1); - assert!(!verify_cairo_proof(&proof, &pub_inputs, &proof_options)); -} - -#[test_log::test] -fn test_verifier_rejects_proof_with_different_security_params() { - let program_content = std::fs::read(cairo0_program_path("fibonacci_5.json")).unwrap(); - let (main_trace, pub_inputs) = - generate_prover_args(&program_content, CairoLayout::Plain).unwrap(); - - let proof_options_prover = ProofOptions::new_secure(SecurityLevel::Conjecturable80Bits, 3); - - let proof = generate_cairo_proof(&main_trace, &pub_inputs, &proof_options_prover).unwrap(); - - let proof_options_verifier = ProofOptions::new_secure(SecurityLevel::Conjecturable128Bits, 3); - - assert!(!verify_cairo_proof( - &proof, - &pub_inputs, - &proof_options_verifier - )); -} - -#[test] -fn check_simple_cairo_trace_evaluates_to_zero() { - let program_content = std::fs::read(cairo0_program_path("simple_program.json")).unwrap(); - let (main_trace, public_input) = - generate_prover_args(&program_content, CairoLayout::Plain).unwrap(); - let mut trace_polys = main_trace.compute_trace_polys::(); - let mut transcript = StoneProverTranscript::new(&[]); - - let proof_options = ProofOptions::default_test_options(); - let cairo_air = CairoAIR::new(main_trace.n_rows(), &public_input, &proof_options); - let rap_challenges = cairo_air.build_rap_challenges(&mut transcript); - - let aux_trace = cairo_air.build_auxiliary_trace(&main_trace, &rap_challenges); - let aux_polys = aux_trace.compute_trace_polys::(); - - trace_polys.extend_from_slice(&aux_polys); - - let domain = Domain::new(&cairo_air); - - assert!(validate_trace( - &cairo_air, - &trace_polys, - &aux_polys, - &domain, - &rap_challenges - )); -} - -#[test] -fn deserialize_and_verify() { - let program_content = std::fs::read(cairo0_program_path("fibonacci_10.json")).unwrap(); - let (main_trace, pub_inputs) = - generate_prover_args(&program_content, CairoLayout::Plain).unwrap(); - - let proof_options = ProofOptions::default_test_options(); - - // The proof is generated and serialized. - let proof = generate_cairo_proof(&main_trace, &pub_inputs, &proof_options).unwrap(); - let proof_bytes: Vec = serde_cbor::to_vec(&proof).unwrap(); - - // The trace and original proof are dropped to show that they are decoupled from - // the verifying process. - drop(main_trace); - drop(proof); - - // At this point, the verifier only knows about the serialized proof, the proof options - // and the public inputs. - let proof: StarkProof = - serde_cbor::from_slice(&proof_bytes).unwrap(); - - // The proof is verified successfully. - assert!(verify_cairo_proof(&proof, &pub_inputs, &proof_options)); -} diff --git a/provers/cairo/src/tests/mod.rs b/provers/cairo/src/tests/mod.rs deleted file mode 100644 index 8ffce3ed0..000000000 --- a/provers/cairo/src/tests/mod.rs +++ /dev/null @@ -1,2 +0,0 @@ -pub mod integration_tests; -pub mod utils; diff --git a/provers/cairo/src/tests/utils.rs b/provers/cairo/src/tests/utils.rs deleted file mode 100644 index 671d74f94..000000000 --- a/provers/cairo/src/tests/utils.rs +++ /dev/null @@ -1,49 +0,0 @@ -use crate::{ - air::{generate_cairo_proof, verify_cairo_proof}, - cairo_layout::CairoLayout, - runner::run::generate_prover_args, - runner::run::generate_prover_args_from_trace, -}; -use stark_platinum_prover::proof::options::ProofOptions; -use std::time::Instant; - -pub fn cairo0_program_path(program_name: &str) -> String { - const CARGO_DIR: &str = env!("CARGO_MANIFEST_DIR"); - const CAIRO0_BASE_REL_PATH: &str = "/cairo_programs/cairo0/"; - let program_base_path = CARGO_DIR.to_string() + CAIRO0_BASE_REL_PATH; - program_base_path + program_name -} - -pub fn cairo1_program_path(program_name: &str) -> String { - const CARGO_DIR: &str = env!("CARGO_MANIFEST_DIR"); - const CAIRO1_BASE_REL_PATH: &str = "/cairo_programs/cairo1/"; - let program_base_path = CARGO_DIR.to_string() + CAIRO1_BASE_REL_PATH; - program_base_path + program_name -} - -/// Loads the program in path, runs it with the Cairo VM, and makes a proof of it -pub fn test_prove_cairo_program(file_path: &str, layout: CairoLayout) { - let proof_options = ProofOptions::default_test_options(); - let timer = Instant::now(); - println!("Making proof ..."); - - let program_content = std::fs::read(file_path).unwrap(); - let (main_trace, pub_inputs) = generate_prover_args(&program_content, layout).unwrap(); - let proof = generate_cairo_proof(&main_trace, &pub_inputs, &proof_options).unwrap(); - println!(" Time spent in proving: {:?} \n", timer.elapsed()); - - assert!(verify_cairo_proof(&proof, &pub_inputs, &proof_options)); -} - -pub fn test_prove_cairo_program_from_trace(trace_bin_path: &str, memory_bin_path: &str) { - let proof_options = ProofOptions::default_test_options(); - let (main_trace, pub_inputs) = - generate_prover_args_from_trace(trace_bin_path, memory_bin_path).unwrap(); - - // println - let timer = Instant::now(); - println!("Making proof ..."); - let proof = generate_cairo_proof(&main_trace, &pub_inputs, &proof_options).unwrap(); - println!(" Time spent in proving: {:?} \n", timer.elapsed()); - assert!(verify_cairo_proof(&proof, &pub_inputs, &proof_options)); -} diff --git a/provers/cairo/src/transition_constraints.rs b/provers/cairo/src/transition_constraints.rs deleted file mode 100644 index c5a761622..000000000 --- a/provers/cairo/src/transition_constraints.rs +++ /dev/null @@ -1,3219 +0,0 @@ -use crate::Felt252; -use lambdaworks_math::field::fields::fft_friendly::stark_252_prime_field::Stark252PrimeField; -use stark_platinum_prover::{ - constraints::transition::TransitionConstraint, frame::Frame, table::TableView, -}; - -#[derive(Clone)] -pub struct BitPrefixFlag0; -impl BitPrefixFlag0 { - pub fn new() -> Self { - Self - } -} -impl Default for BitPrefixFlag0 { - fn default() -> Self { - Self::new() - } -} - -impl TransitionConstraint for BitPrefixFlag0 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 0 - } - - fn evaluate( - &self, - frame: &stark_platinum_prover::frame::Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let constraint_idx = self.constraint_idx(); - - let current_flag = current_step.get_main_evaluation_element(0, constraint_idx); - let next_flag = current_step.get_main_evaluation_element(0, constraint_idx + 1); - - let one = Felt252::one(); - let two = Felt252::from(2); - - let bit = current_flag - two * next_flag; - - let res = bit * (bit - one); - - transition_evaluations[constraint_idx] = res; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -#[derive(Clone)] -pub struct BitPrefixFlag1; -impl BitPrefixFlag1 { - pub fn new() -> Self { - Self - } -} -impl Default for BitPrefixFlag1 { - fn default() -> Self { - Self::new() - } -} - -impl TransitionConstraint for BitPrefixFlag1 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 1 - } - - fn evaluate( - &self, - frame: &stark_platinum_prover::frame::Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let constraint_idx = self.constraint_idx(); - - let current_flag = current_step.get_main_evaluation_element(0, constraint_idx); - let next_flag = current_step.get_main_evaluation_element(0, constraint_idx + 1); - - let one = Felt252::one(); - let two = Felt252::from(2); - - let bit = current_flag - two * next_flag; - - let res = bit * (bit - one); - - transition_evaluations[constraint_idx] = res; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -#[derive(Clone)] -pub struct BitPrefixFlag2; -impl BitPrefixFlag2 { - pub fn new() -> Self { - Self - } -} -impl Default for BitPrefixFlag2 { - fn default() -> Self { - Self::new() - } -} - -impl TransitionConstraint for BitPrefixFlag2 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 2 - } - - fn evaluate( - &self, - frame: &stark_platinum_prover::frame::Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let constraint_idx = self.constraint_idx(); - - let current_flag = current_step.get_main_evaluation_element(0, constraint_idx); - let next_flag = current_step.get_main_evaluation_element(0, constraint_idx + 1); - - let one = Felt252::one(); - let two = Felt252::from(2); - - let bit = current_flag - two * next_flag; - - let res = bit * (bit - one); - - transition_evaluations[constraint_idx] = res; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -#[derive(Clone)] -pub struct BitPrefixFlag3; -impl BitPrefixFlag3 { - pub fn new() -> Self { - Self - } -} -impl Default for BitPrefixFlag3 { - fn default() -> Self { - Self::new() - } -} - -impl TransitionConstraint for BitPrefixFlag3 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 3 - } - - fn evaluate( - &self, - frame: &stark_platinum_prover::frame::Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let constraint_idx = self.constraint_idx(); - - let current_flag = current_step.get_main_evaluation_element(0, constraint_idx); - let next_flag = current_step.get_main_evaluation_element(0, constraint_idx + 1); - - let one = Felt252::one(); - let two = Felt252::from(2); - - let bit = current_flag - two * next_flag; - - let res = bit * (bit - one); - - transition_evaluations[constraint_idx] = res; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -#[derive(Clone)] -pub struct BitPrefixFlag4; -impl BitPrefixFlag4 { - pub fn new() -> Self { - Self - } -} -impl Default for BitPrefixFlag4 { - fn default() -> Self { - Self::new() - } -} - -impl TransitionConstraint for BitPrefixFlag4 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 4 - } - - fn evaluate( - &self, - frame: &stark_platinum_prover::frame::Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let constraint_idx = self.constraint_idx(); - - let current_flag = current_step.get_main_evaluation_element(0, constraint_idx); - let next_flag = current_step.get_main_evaluation_element(0, constraint_idx + 1); - - let one = Felt252::one(); - let two = Felt252::from(2); - - let bit = current_flag - two * next_flag; - - let res = bit * (bit - one); - - transition_evaluations[constraint_idx] = res; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -#[derive(Clone)] -pub struct BitPrefixFlag5; -impl BitPrefixFlag5 { - pub fn new() -> Self { - Self - } -} -impl Default for BitPrefixFlag5 { - fn default() -> Self { - Self::new() - } -} - -impl TransitionConstraint for BitPrefixFlag5 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 5 - } - - fn evaluate( - &self, - frame: &stark_platinum_prover::frame::Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let constraint_idx = self.constraint_idx(); - - let current_flag = current_step.get_main_evaluation_element(0, constraint_idx); - let next_flag = current_step.get_main_evaluation_element(0, constraint_idx + 1); - - let one = Felt252::one(); - let two = Felt252::from(2); - - let bit = current_flag - two * next_flag; - - let res = bit * (bit - one); - - transition_evaluations[constraint_idx] = res; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -#[derive(Clone)] -pub struct BitPrefixFlag6; -impl BitPrefixFlag6 { - pub fn new() -> Self { - Self - } -} -impl Default for BitPrefixFlag6 { - fn default() -> Self { - Self::new() - } -} - -impl TransitionConstraint for BitPrefixFlag6 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 6 - } - - fn evaluate( - &self, - frame: &stark_platinum_prover::frame::Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let constraint_idx = self.constraint_idx(); - - let current_flag = current_step.get_main_evaluation_element(0, constraint_idx); - let next_flag = current_step.get_main_evaluation_element(0, constraint_idx + 1); - - let one = Felt252::one(); - let two = Felt252::from(2); - - let bit = current_flag - two * next_flag; - - let res = bit * (bit - one); - - transition_evaluations[constraint_idx] = res; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -#[derive(Clone)] -pub struct BitPrefixFlag7; -impl Default for BitPrefixFlag7 { - fn default() -> Self { - Self::new() - } -} - -impl BitPrefixFlag7 { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for BitPrefixFlag7 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 7 - } - - fn evaluate( - &self, - frame: &stark_platinum_prover::frame::Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let constraint_idx = self.constraint_idx(); - - let current_flag = current_step.get_main_evaluation_element(0, constraint_idx); - let next_flag = current_step.get_main_evaluation_element(0, constraint_idx + 1); - - let one = Felt252::one(); - let two = Felt252::from(2); - - let bit = current_flag - two * next_flag; - - let res = bit * (bit - one); - - transition_evaluations[constraint_idx] = res; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -#[derive(Clone)] -pub struct BitPrefixFlag8; -impl Default for BitPrefixFlag8 { - fn default() -> Self { - Self::new() - } -} - -impl BitPrefixFlag8 { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for BitPrefixFlag8 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 8 - } - - fn evaluate( - &self, - frame: &stark_platinum_prover::frame::Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let constraint_idx = self.constraint_idx(); - - let current_flag = current_step.get_main_evaluation_element(0, constraint_idx); - let next_flag = current_step.get_main_evaluation_element(0, constraint_idx + 1); - - let one = Felt252::one(); - let two = Felt252::from(2); - - let bit = current_flag - two * next_flag; - - let res = bit * (bit - one); - - transition_evaluations[constraint_idx] = res; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -#[derive(Clone)] -pub struct BitPrefixFlag9; -impl Default for BitPrefixFlag9 { - fn default() -> Self { - Self::new() - } -} - -impl BitPrefixFlag9 { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for BitPrefixFlag9 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 9 - } - - fn evaluate( - &self, - frame: &stark_platinum_prover::frame::Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let constraint_idx = self.constraint_idx(); - - let current_flag = current_step.get_main_evaluation_element(0, constraint_idx); - let next_flag = current_step.get_main_evaluation_element(0, constraint_idx + 1); - - let one = Felt252::one(); - let two = Felt252::from(2); - - let bit = current_flag - two * next_flag; - - let res = bit * (bit - one); - - transition_evaluations[constraint_idx] = res; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -#[derive(Clone)] -pub struct BitPrefixFlag10; -impl Default for BitPrefixFlag10 { - fn default() -> Self { - Self::new() - } -} - -impl BitPrefixFlag10 { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for BitPrefixFlag10 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 10 - } - - fn evaluate( - &self, - frame: &stark_platinum_prover::frame::Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let constraint_idx = self.constraint_idx(); - - let current_flag = current_step.get_main_evaluation_element(0, constraint_idx); - let next_flag = current_step.get_main_evaluation_element(0, constraint_idx + 1); - - let one = Felt252::one(); - let two = Felt252::from(2); - - let bit = current_flag - two * next_flag; - - let res = bit * (bit - one); - - transition_evaluations[constraint_idx] = res; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -pub struct BitPrefixFlag11; -impl Default for BitPrefixFlag11 { - fn default() -> Self { - Self::new() - } -} - -impl BitPrefixFlag11 { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for BitPrefixFlag11 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 11 - } - - fn evaluate( - &self, - frame: &stark_platinum_prover::frame::Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let constraint_idx = self.constraint_idx(); - - let current_flag = current_step.get_main_evaluation_element(0, constraint_idx); - let next_flag = current_step.get_main_evaluation_element(0, constraint_idx + 1); - - let one = Felt252::one(); - let two = Felt252::from(2); - - let bit = current_flag - two * next_flag; - - let res = bit * (bit - one); - - transition_evaluations[constraint_idx] = res; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -pub struct BitPrefixFlag12; -impl Default for BitPrefixFlag12 { - fn default() -> Self { - Self::new() - } -} - -impl BitPrefixFlag12 { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for BitPrefixFlag12 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 12 - } - - fn evaluate( - &self, - frame: &stark_platinum_prover::frame::Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let constraint_idx = self.constraint_idx(); - - let current_flag = current_step.get_main_evaluation_element(0, constraint_idx); - let next_flag = current_step.get_main_evaluation_element(0, constraint_idx + 1); - - let one = Felt252::one(); - let two = Felt252::from(2); - - let bit = current_flag - two * next_flag; - - let res = bit * (bit - one); - - transition_evaluations[constraint_idx] = res; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -pub struct BitPrefixFlag13; -impl Default for BitPrefixFlag13 { - fn default() -> Self { - Self::new() - } -} - -impl BitPrefixFlag13 { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for BitPrefixFlag13 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 13 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let constraint_idx = self.constraint_idx(); - - let current_flag = current_step.get_main_evaluation_element(0, constraint_idx); - let next_flag = current_step.get_main_evaluation_element(0, constraint_idx + 1); - - let one = Felt252::one(); - let two = Felt252::from(2); - - let bit = current_flag - two * next_flag; - - let res = bit * (bit - one); - - transition_evaluations[constraint_idx] = res; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -pub struct BitPrefixFlag14; -impl Default for BitPrefixFlag14 { - fn default() -> Self { - Self::new() - } -} - -impl BitPrefixFlag14 { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for BitPrefixFlag14 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 14 - } - - fn evaluate( - &self, - frame: &stark_platinum_prover::frame::Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let constraint_idx = self.constraint_idx(); - - let current_flag = current_step.get_main_evaluation_element(0, constraint_idx); - let next_flag = current_step.get_main_evaluation_element(0, constraint_idx + 1); - - let one = Felt252::one(); - let two = Felt252::from(2); - - let bit = current_flag - two * next_flag; - - let res = bit * (bit - one); - - transition_evaluations[constraint_idx] = res; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -pub struct ZeroFlagConstraint; -impl Default for ZeroFlagConstraint { - fn default() -> Self { - Self::new() - } -} - -impl ZeroFlagConstraint { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for ZeroFlagConstraint { - fn degree(&self) -> usize { - 1 - } - - fn constraint_idx(&self) -> usize { - 15 - } - - fn evaluate( - &self, - frame: &stark_platinum_prover::frame::Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let zero_flag = current_step.get_main_evaluation_element(0, 15); - - transition_evaluations[self.constraint_idx()] = *zero_flag; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -pub struct FlagOp1BaseOp0BitConstraint; -impl Default for FlagOp1BaseOp0BitConstraint { - fn default() -> Self { - Self::new() - } -} - -impl FlagOp1BaseOp0BitConstraint { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for FlagOp1BaseOp0BitConstraint { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 54 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let one = Felt252::one(); - let two = Felt252::from(2); - - let f_op1_imm = current_step.get_main_evaluation_element(0, 2) - - two * current_step.get_main_evaluation_element(0, 3); - let f_op1_fp = current_step.get_main_evaluation_element(0, 3) - - two * current_step.get_main_evaluation_element(0, 4); - let f_op1_ap = current_step.get_main_evaluation_element(0, 4) - - two * current_step.get_main_evaluation_element(0, 5); - - let f_op1_base_op0_bit = one - f_op1_imm - f_op1_fp - f_op1_ap; - - let res = f_op1_base_op0_bit * (f_op1_base_op0_bit - one); - - transition_evaluations[self.constraint_idx()] = res; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -pub struct FlagResOp1BitConstraint; -impl Default for FlagResOp1BitConstraint { - fn default() -> Self { - Self::new() - } -} - -impl FlagResOp1BitConstraint { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for FlagResOp1BitConstraint { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 55 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let one = Felt252::one(); - let two = Felt252::from(2); - - let f_res_add = current_step.get_main_evaluation_element(0, 5) - - two * current_step.get_main_evaluation_element(0, 6); - let f_res_mul = current_step.get_main_evaluation_element(0, 6) - - two * current_step.get_main_evaluation_element(0, 7); - let f_pc_jnz = current_step.get_main_evaluation_element(0, 9) - - two * current_step.get_main_evaluation_element(0, 10); - - let f_res_op1_bit = one - f_res_add - f_res_mul - f_pc_jnz; - - let res = f_res_op1_bit * (f_res_op1_bit - one); - - transition_evaluations[self.constraint_idx()] = res; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -pub struct FlagPcUpdateRegularBit; -impl Default for FlagPcUpdateRegularBit { - fn default() -> Self { - Self::new() - } -} - -impl FlagPcUpdateRegularBit { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for FlagPcUpdateRegularBit { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 56 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let one = Felt252::one(); - let two = Felt252::from(2); - - let f_jump_abs = current_step.get_main_evaluation_element(0, 7) - - two * current_step.get_main_evaluation_element(0, 8); - let f_jump_rel = current_step.get_main_evaluation_element(0, 8) - - two * current_step.get_main_evaluation_element(0, 9); - let f_pc_jnz = current_step.get_main_evaluation_element(0, 9) - - two * current_step.get_main_evaluation_element(0, 10); - - let flag_pc_update_regular_bit = one - f_jump_abs - f_jump_rel - f_pc_jnz; - - let res = flag_pc_update_regular_bit * (flag_pc_update_regular_bit - one); - - transition_evaluations[self.constraint_idx()] = res; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -pub struct FlagFpUpdateRegularBit; -impl Default for FlagFpUpdateRegularBit { - fn default() -> Self { - Self::new() - } -} - -impl FlagFpUpdateRegularBit { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for FlagFpUpdateRegularBit { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 57 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let one = Felt252::one(); - let two = Felt252::from(2); - - let f_opcode_call = current_step.get_main_evaluation_element(0, 12) - - two * current_step.get_main_evaluation_element(0, 13); - let f_opcode_ret = current_step.get_main_evaluation_element(0, 13) - - two * current_step.get_main_evaluation_element(0, 14); - - let flag_fp_update_regular_bit = one - f_opcode_call - f_opcode_ret; - - let res = flag_fp_update_regular_bit * (flag_fp_update_regular_bit - one); - - transition_evaluations[self.constraint_idx()] = res; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -pub struct InstructionUnpacking; -impl Default for InstructionUnpacking { - fn default() -> Self { - Self::new() - } -} - -impl InstructionUnpacking { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for InstructionUnpacking { - fn degree(&self) -> usize { - 1 - } - - fn constraint_idx(&self) -> usize { - 16 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let two = Felt252::from(2); - let b16 = two.pow(16u32); - let b32 = two.pow(32u32); - let b48 = two.pow(48u32); - - // Named like this to match the Cairo whitepaper's notation. - let f0_squiggle = current_step.get_main_evaluation_element(0, 0); - - let instruction = current_step.get_main_evaluation_element(0, 23); - let off_dst = current_step.get_main_evaluation_element(0, 27); - let off_op0 = current_step.get_main_evaluation_element(0, 28); - let off_op1 = current_step.get_main_evaluation_element(0, 29); - - let res = off_dst + b16 * off_op0 + b32 * off_op1 + b48 * f0_squiggle - instruction; - - transition_evaluations[self.constraint_idx()] = res; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -pub struct CpuOpcodesCallOff0; -impl Default for CpuOpcodesCallOff0 { - fn default() -> Self { - Self::new() - } -} - -impl CpuOpcodesCallOff0 { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for CpuOpcodesCallOff0 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 58 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - let two = Felt252::from(2); - let b15 = two.pow(15u32); - - let f_opcode_call = current_step.get_main_evaluation_element(0, 12) - - two * current_step.get_main_evaluation_element(0, 13); - - let off_dst = current_step.get_main_evaluation_element(0, 27); - - let res = f_opcode_call * (off_dst - b15); - - transition_evaluations[self.constraint_idx()] = res; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -pub struct CpuOpcodesCallOff1; -impl Default for CpuOpcodesCallOff1 { - fn default() -> Self { - Self::new() - } -} - -impl CpuOpcodesCallOff1 { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for CpuOpcodesCallOff1 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 59 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let one = Felt252::one(); - let two = Felt252::from(2); - let b15 = two.pow(15u32); - - let f_opcode_call = current_step.get_main_evaluation_element(0, 12) - - two * current_step.get_main_evaluation_element(0, 13); - let off_op0 = current_step.get_main_evaluation_element(0, 28); - - let res = f_opcode_call * (off_op0 - b15 - one); - - transition_evaluations[self.constraint_idx()] = res; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -pub struct CpuOpcodesCallFlags; -impl Default for CpuOpcodesCallFlags { - fn default() -> Self { - Self::new() - } -} - -impl CpuOpcodesCallFlags { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for CpuOpcodesCallFlags { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 60 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let one = Felt252::one(); - let two = Felt252::from(2); - - let f_opcode_call = current_step.get_main_evaluation_element(0, 12) - - two * current_step.get_main_evaluation_element(0, 13); - - let bit_flag0 = current_step.get_main_evaluation_element(0, 0) - - two * current_step.get_main_evaluation_element(0, 1); - let bit_flag1 = current_step.get_main_evaluation_element(0, 1) - - two * current_step.get_main_evaluation_element(0, 2); - - let res = - f_opcode_call * (two * f_opcode_call + one + one - bit_flag0 - bit_flag1 - two - two); - - transition_evaluations[self.constraint_idx()] = res; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -pub struct CpuOpcodesRetOff0; -impl Default for CpuOpcodesRetOff0 { - fn default() -> Self { - Self::new() - } -} - -impl CpuOpcodesRetOff0 { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for CpuOpcodesRetOff0 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 61 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let two = Felt252::from(2); - let b15 = two.pow(15u32); - - let f_opcode_ret = current_step.get_main_evaluation_element(0, 13) - - two * current_step.get_main_evaluation_element(0, 14); - let off_dst = current_step.get_main_evaluation_element(0, 27); - - let res = f_opcode_ret * (off_dst + two - b15); - - transition_evaluations[self.constraint_idx()] = res; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -pub struct CpuOpcodesRetOff2; -impl Default for CpuOpcodesRetOff2 { - fn default() -> Self { - Self::new() - } -} - -impl CpuOpcodesRetOff2 { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for CpuOpcodesRetOff2 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 62 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let one = Felt252::one(); - let two = Felt252::from(2); - let b15 = two.pow(15u32); - - let f_opcode_ret = current_step.get_main_evaluation_element(0, 13) - - two * current_step.get_main_evaluation_element(0, 14); - let off_op1 = current_step.get_main_evaluation_element(0, 29); - - let res = f_opcode_ret * (off_op1 + one - b15); - - transition_evaluations[self.constraint_idx()] = res; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -pub struct CpuOpcodesRetFlags; -impl Default for CpuOpcodesRetFlags { - fn default() -> Self { - Self::new() - } -} - -impl CpuOpcodesRetFlags { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for CpuOpcodesRetFlags { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 63 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let one = Felt252::one(); - let two = Felt252::from(2); - - let f_opcode_ret = current_step.get_main_evaluation_element(0, 13) - - two * current_step.get_main_evaluation_element(0, 14); - let flag0 = current_step.get_main_evaluation_element(0, 0) - - two * current_step.get_main_evaluation_element(0, 1); - let flag3 = current_step.get_main_evaluation_element(0, 3) - - two * current_step.get_main_evaluation_element(0, 4); - let flag7 = current_step.get_main_evaluation_element(0, 7) - - two * current_step.get_main_evaluation_element(0, 8); - - let f_res_add = current_step.get_main_evaluation_element(0, 5) - - two * current_step.get_main_evaluation_element(0, 6); - let f_res_mul = current_step.get_main_evaluation_element(0, 6) - - two * current_step.get_main_evaluation_element(0, 7); - let f_pc_jnz = current_step.get_main_evaluation_element(0, 9) - - two * current_step.get_main_evaluation_element(0, 10); - - let f_res_op1_bit = one - f_res_add - f_res_mul - f_pc_jnz; - - let res = f_opcode_ret * (flag7 + flag0 + flag3 + f_res_op1_bit - two - two); - - transition_evaluations[self.constraint_idx()] = res; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -pub struct CpuOperandsMemDstAddr; -impl Default for CpuOperandsMemDstAddr { - fn default() -> Self { - Self::new() - } -} - -impl CpuOperandsMemDstAddr { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for CpuOperandsMemDstAddr { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 17 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let two = Felt252::from(2); - let one = Felt252::one(); - let b15 = two.pow(15u32); - let dst_fp = current_step.get_main_evaluation_element(0, 0) - - two * current_step.get_main_evaluation_element(0, 1); - let ap = current_step.get_main_evaluation_element(0, 17); - let fp = current_step.get_main_evaluation_element(0, 18); - let off_dst = current_step.get_main_evaluation_element(0, 27); - let dst_addr = current_step.get_main_evaluation_element(0, 20); - - let res = dst_fp * fp + (one - dst_fp) * ap + (off_dst - b15) - dst_addr; - - transition_evaluations[self.constraint_idx()] = res; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -pub struct CpuOperandsMem0Addr; -impl Default for CpuOperandsMem0Addr { - fn default() -> Self { - Self::new() - } -} - -impl CpuOperandsMem0Addr { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for CpuOperandsMem0Addr { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 18 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let two = Felt252::from(2); - let one = Felt252::one(); - let b15 = two.pow(15u32); - - let op0_fp = current_step.get_main_evaluation_element(0, 1) - - two * current_step.get_main_evaluation_element(0, 2); - - let ap = current_step.get_main_evaluation_element(0, 17); - let fp = current_step.get_main_evaluation_element(0, 18); - - let off_op0 = current_step.get_main_evaluation_element(0, 28); - let op0_addr = current_step.get_main_evaluation_element(0, 21); - - let res = op0_fp * fp + (one - op0_fp) * ap + (off_op0 - b15) - op0_addr; - - transition_evaluations[self.constraint_idx()] = res; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -pub struct CpuOperandsMem1Addr; -impl Default for CpuOperandsMem1Addr { - fn default() -> Self { - Self::new() - } -} - -impl CpuOperandsMem1Addr { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for CpuOperandsMem1Addr { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 19 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let one = Felt252::one(); - let two = Felt252::from(2); - let b15 = two.pow(15u32); - - let op1_val = current_step.get_main_evaluation_element(0, 2) - - two * current_step.get_main_evaluation_element(0, 3); - let op1_fp = current_step.get_main_evaluation_element(0, 3) - - two * current_step.get_main_evaluation_element(0, 4); - let op1_ap = current_step.get_main_evaluation_element(0, 4) - - two * current_step.get_main_evaluation_element(0, 5); - - let op0 = current_step.get_main_evaluation_element(0, 25); - let off_op1 = current_step.get_main_evaluation_element(0, 29); - let op1_addr = current_step.get_main_evaluation_element(0, 22); - - let ap = current_step.get_main_evaluation_element(0, 17); - let fp = current_step.get_main_evaluation_element(0, 18); - let pc = current_step.get_main_evaluation_element(0, 19); - - let res = op1_val * pc - + op1_ap * ap - + op1_fp * fp - + (one - op1_val - op1_ap - op1_fp) * op0 - + (off_op1 - b15) - - op1_addr; - - transition_evaluations[self.constraint_idx()] = res; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -// cpu/update_registers/update_ap/ap_update -pub struct CpuUpdateRegistersApUpdate; -impl Default for CpuUpdateRegistersApUpdate { - fn default() -> Self { - Self::new() - } -} - -impl CpuUpdateRegistersApUpdate { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for CpuUpdateRegistersApUpdate { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 20 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - let next_step = frame.get_evaluation_step(1); - - let two = Felt252::from(2); - - let ap = current_step.get_main_evaluation_element(0, 17); - let next_ap = next_step.get_main_evaluation_element(0, 17); - let res = current_step.get_main_evaluation_element(0, 16); - - let ap_one = current_step.get_main_evaluation_element(0, 11) - - two * current_step.get_main_evaluation_element(0, 12); - let opc_call = current_step.get_main_evaluation_element(0, 12) - - two * current_step.get_main_evaluation_element(0, 13); - let ap_add = current_step.get_main_evaluation_element(0, 10) - - two * current_step.get_main_evaluation_element(0, 11); - - let res = ap + ap_add * res + ap_one + opc_call * two - next_ap; - - transition_evaluations[self.constraint_idx()] = res; - } - - fn end_exemptions(&self) -> usize { - 1 - } -} - -pub struct CpuUpdateRegistersFpUpdate; -impl Default for CpuUpdateRegistersFpUpdate { - fn default() -> Self { - Self::new() - } -} - -impl CpuUpdateRegistersFpUpdate { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for CpuUpdateRegistersFpUpdate { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 21 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - let next_step = frame.get_evaluation_step(1); - - let one = Felt252::one(); - let two = Felt252::from(2); - - let ap = current_step.get_main_evaluation_element(0, 17); - let fp = current_step.get_main_evaluation_element(0, 18); - let next_fp = next_step.get_main_evaluation_element(0, 18); - let dst = current_step.get_main_evaluation_element(0, 24); - - let opc_call = current_step.get_main_evaluation_element(0, 12) - - two * current_step.get_main_evaluation_element(0, 13); - let opc_ret = current_step.get_main_evaluation_element(0, 13) - - two * current_step.get_main_evaluation_element(0, 14); - - let res = opc_ret * dst + opc_call * (ap + two) + (one - opc_ret - opc_call) * fp - next_fp; - - transition_evaluations[self.constraint_idx()] = res; - } - - fn end_exemptions(&self) -> usize { - 1 - } -} - -// cpu/update_registers/update_pc/pc_cond_negative: -pub struct CpuUpdateRegistersPcCondNegative; -impl Default for CpuUpdateRegistersPcCondNegative { - fn default() -> Self { - Self::new() - } -} - -impl CpuUpdateRegistersPcCondNegative { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint - for CpuUpdateRegistersPcCondNegative -{ - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 23 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - let next_step = frame.get_evaluation_step(1); - - let one = Felt252::one(); - let two = Felt252::from(2); - - let t0 = current_step.get_main_evaluation_element(0, 30); - let pc = current_step.get_main_evaluation_element(0, 19); - let next_pc = next_step.get_main_evaluation_element(0, 19); - let op1 = current_step.get_main_evaluation_element(0, 26); - - let pc_jnz = current_step.get_main_evaluation_element(0, 9) - - two * current_step.get_main_evaluation_element(0, 10); - let pc_abs = current_step.get_main_evaluation_element(0, 7) - - two * current_step.get_main_evaluation_element(0, 8); - let pc_rel = current_step.get_main_evaluation_element(0, 8) - - two * current_step.get_main_evaluation_element(0, 9); - let res = current_step.get_main_evaluation_element(0, 16); - - let res = t0 * (next_pc - (pc + op1)) + (one - pc_jnz) * next_pc - - ((one - pc_abs - pc_rel - pc_jnz) * (pc + frame_inst_size(current_step)) - + pc_abs * res - + pc_rel * (pc + res)); - transition_evaluations[self.constraint_idx()] = res; - } - - fn end_exemptions(&self) -> usize { - 1 - } -} - -pub struct CpuUpdateRegistersPcCondPositive; -impl Default for CpuUpdateRegistersPcCondPositive { - fn default() -> Self { - Self::new() - } -} - -impl CpuUpdateRegistersPcCondPositive { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint - for CpuUpdateRegistersPcCondPositive -{ - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 22 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - let next_step = frame.get_evaluation_step(1); - - let two = Felt252::from(2); - - let t1 = current_step.get_main_evaluation_element(0, 31); - let pc_jnz = current_step.get_main_evaluation_element(0, 9) - - two * current_step.get_main_evaluation_element(0, 10); - let pc = current_step.get_main_evaluation_element(0, 19); - let next_pc = next_step.get_main_evaluation_element(0, 19); - - let res = (t1 - pc_jnz) * (next_pc - (pc + frame_inst_size(current_step))); - - transition_evaluations[self.constraint_idx()] = res; - } - - fn end_exemptions(&self) -> usize { - 1 - } -} - -//cpu/update_registers/update_pc/tmp0 -pub struct CpuUpdateRegistersUpdatePcTmp0; -impl Default for CpuUpdateRegistersUpdatePcTmp0 { - fn default() -> Self { - Self::new() - } -} - -impl CpuUpdateRegistersUpdatePcTmp0 { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint - for CpuUpdateRegistersUpdatePcTmp0 -{ - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 24 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let two = Felt252::from(2); - let dst = current_step.get_main_evaluation_element(0, 24); - let t0 = current_step.get_main_evaluation_element(0, 30); - let pc_jnz = current_step.get_main_evaluation_element(0, 9) - - two * current_step.get_main_evaluation_element(0, 10); - - let res = pc_jnz * dst - t0; - - transition_evaluations[self.constraint_idx()] = res; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -pub struct CpuUpdateRegistersUpdatePcTmp1; -impl Default for CpuUpdateRegistersUpdatePcTmp1 { - fn default() -> Self { - Self::new() - } -} - -impl CpuUpdateRegistersUpdatePcTmp1 { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint - for CpuUpdateRegistersUpdatePcTmp1 -{ - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 25 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let t1 = current_step.get_main_evaluation_element(0, 31); - let t0 = current_step.get_main_evaluation_element(0, 30); - let res = current_step.get_main_evaluation_element(0, 16); - - let transition_res = t0 * res - t1; - - transition_evaluations[self.constraint_idx()] = transition_res; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -pub struct CpuOperandsOpsMul; -impl Default for CpuOperandsOpsMul { - fn default() -> Self { - Self::new() - } -} - -impl CpuOperandsOpsMul { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for CpuOperandsOpsMul { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 26 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let mul = current_step.get_main_evaluation_element(0, 32); - let op0 = current_step.get_main_evaluation_element(0, 25); - let op1 = current_step.get_main_evaluation_element(0, 26); - - transition_evaluations[self.constraint_idx()] = mul - op0 * op1; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -// cpu/operands/res -pub struct CpuOperandsRes; -impl Default for CpuOperandsRes { - fn default() -> Self { - Self::new() - } -} - -impl CpuOperandsRes { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for CpuOperandsRes { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 27 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - let one = Felt252::one(); - let two = Felt252::from(2); - - let mul = current_step.get_main_evaluation_element(0, 32); - let op0 = current_step.get_main_evaluation_element(0, 25); - let op1 = current_step.get_main_evaluation_element(0, 26); - let res = current_step.get_main_evaluation_element(0, 16); - - let res_add = current_step.get_main_evaluation_element(0, 5) - - two * current_step.get_main_evaluation_element(0, 6); - let res_mul = current_step.get_main_evaluation_element(0, 6) - - two * current_step.get_main_evaluation_element(0, 7); - let pc_jnz = current_step.get_main_evaluation_element(0, 9) - - two * current_step.get_main_evaluation_element(0, 10); - - let transition_res = - res_add * (op0 + op1) + res_mul * mul + (one - res_add - res_mul - pc_jnz) * op1 - - (one - pc_jnz) * res; - - transition_evaluations[self.constraint_idx()] = transition_res; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -// cpu/opcodes/call/push_fp -pub struct CpuOpcodesCallPushFp; -impl Default for CpuOpcodesCallPushFp { - fn default() -> Self { - Self::new() - } -} - -impl CpuOpcodesCallPushFp { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for CpuOpcodesCallPushFp { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 28 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let two = Felt252::from(2); - - let opc_call = current_step.get_main_evaluation_element(0, 12) - - two * current_step.get_main_evaluation_element(0, 13); - - let dst = current_step.get_main_evaluation_element(0, 24); - let fp = current_step.get_main_evaluation_element(0, 18); - - transition_evaluations[self.constraint_idx()] = opc_call * (dst - fp); - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -pub struct CpuOpcodesCallPushPc; -impl Default for CpuOpcodesCallPushPc { - fn default() -> Self { - Self::new() - } -} - -impl CpuOpcodesCallPushPc { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for CpuOpcodesCallPushPc { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 29 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let two = Felt252::from(2); - - let opc_call = current_step.get_main_evaluation_element(0, 12) - - two * current_step.get_main_evaluation_element(0, 13); - - let op0 = current_step.get_main_evaluation_element(0, 25); - let pc = current_step.get_main_evaluation_element(0, 19); - - transition_evaluations[self.constraint_idx()] = - opc_call * (op0 - (pc + frame_inst_size(current_step))); - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -// cpu/opcodes/assert_eq/assert_eq -pub struct CpuOpcodesAssertEq; -impl Default for CpuOpcodesAssertEq { - fn default() -> Self { - Self::new() - } -} - -impl CpuOpcodesAssertEq { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for CpuOpcodesAssertEq { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 30 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let two = Felt252::from(2); - - let opc_aeq = current_step.get_main_evaluation_element(0, 14) - - two * current_step.get_main_evaluation_element(0, 15); - let dst = current_step.get_main_evaluation_element(0, 24); - let res = current_step.get_main_evaluation_element(0, 16); - - transition_evaluations[self.constraint_idx()] = opc_aeq * (dst - res) - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -// memory/diff_is_bit -pub struct MemoryDiffIsBit0; -impl Default for MemoryDiffIsBit0 { - fn default() -> Self { - Self::new() - } -} - -impl MemoryDiffIsBit0 { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for MemoryDiffIsBit0 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 31 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let one = Felt252::one(); - - let mem_addr_sorted_0 = current_step.get_aux_evaluation_element(0, 4); - let mem_addr_sorted_1 = current_step.get_aux_evaluation_element(0, 5); - - transition_evaluations[self.constraint_idx()] = - (mem_addr_sorted_0 - mem_addr_sorted_1) * (mem_addr_sorted_1 - mem_addr_sorted_0 - one); - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -pub struct MemoryDiffIsBit1; -impl Default for MemoryDiffIsBit1 { - fn default() -> Self { - Self::new() - } -} - -impl MemoryDiffIsBit1 { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for MemoryDiffIsBit1 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 32 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let one = Felt252::one(); - - let mem_addr_sorted_1 = current_step.get_aux_evaluation_element(0, 5); - let mem_addr_sorted_2 = current_step.get_aux_evaluation_element(0, 6); - - transition_evaluations[self.constraint_idx()] = - (mem_addr_sorted_1 - mem_addr_sorted_2) * (mem_addr_sorted_2 - mem_addr_sorted_1 - one); - } - - fn end_exemptions(&self) -> usize { - 0 - } -} -pub struct MemoryDiffIsBit2; -impl Default for MemoryDiffIsBit2 { - fn default() -> Self { - Self::new() - } -} - -impl MemoryDiffIsBit2 { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for MemoryDiffIsBit2 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 33 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let one = Felt252::one(); - - let mem_addr_sorted_2 = current_step.get_aux_evaluation_element(0, 6); - let mem_addr_sorted_3 = current_step.get_aux_evaluation_element(0, 7); - - transition_evaluations[self.constraint_idx()] = - (mem_addr_sorted_2 - mem_addr_sorted_3) * (mem_addr_sorted_3 - mem_addr_sorted_2 - one); - } - - fn end_exemptions(&self) -> usize { - 0 - } -} -pub struct MemoryDiffIsBit3; -impl Default for MemoryDiffIsBit3 { - fn default() -> Self { - Self::new() - } -} - -impl MemoryDiffIsBit3 { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for MemoryDiffIsBit3 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 34 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let one = Felt252::one(); - - let mem_addr_sorted_3 = current_step.get_aux_evaluation_element(0, 7); - let mem_addr_sorted_4 = current_step.get_aux_evaluation_element(0, 8); - - transition_evaluations[self.constraint_idx()] = - (mem_addr_sorted_3 - mem_addr_sorted_4) * (mem_addr_sorted_4 - mem_addr_sorted_3 - one); - } - - fn end_exemptions(&self) -> usize { - 0 - } -} -pub struct MemoryDiffIsBit4; -impl Default for MemoryDiffIsBit4 { - fn default() -> Self { - Self::new() - } -} - -impl MemoryDiffIsBit4 { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for MemoryDiffIsBit4 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 35 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - let next_step = frame.get_evaluation_step(1); - - let one = Felt252::one(); - - let next_mem_addr_sorted_0 = next_step.get_aux_evaluation_element(0, 4); - let mem_addr_sorted_4 = current_step.get_aux_evaluation_element(0, 8); - - transition_evaluations[self.constraint_idx()] = (mem_addr_sorted_4 - - next_mem_addr_sorted_0) - * (next_mem_addr_sorted_0 - mem_addr_sorted_4 - one); - } - - fn end_exemptions(&self) -> usize { - 1 - } -} - -// memory/is_func (single-valued) -pub struct MemoryIsFunc0; -impl Default for MemoryIsFunc0 { - fn default() -> Self { - Self::new() - } -} - -impl MemoryIsFunc0 { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for MemoryIsFunc0 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 36 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let one = Felt252::one(); - - let mem_addr_sorted_0 = current_step.get_aux_evaluation_element(0, 4); - let mem_addr_sorted_1 = current_step.get_aux_evaluation_element(0, 5); - - let mem_val_sorted_0 = current_step.get_aux_evaluation_element(0, 9); - let mem_val_sorted_1 = current_step.get_aux_evaluation_element(0, 10); - - transition_evaluations[self.constraint_idx()] = - (mem_val_sorted_0 - mem_val_sorted_1) * (mem_addr_sorted_1 - mem_addr_sorted_0 - one); - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -pub struct MemoryIsFunc1; -impl Default for MemoryIsFunc1 { - fn default() -> Self { - Self::new() - } -} - -impl MemoryIsFunc1 { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for MemoryIsFunc1 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 37 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let one = Felt252::one(); - - let mem_addr_sorted_1 = current_step.get_aux_evaluation_element(0, 5); - let mem_addr_sorted_2 = current_step.get_aux_evaluation_element(0, 6); - - let mem_val_sorted_1 = current_step.get_aux_evaluation_element(0, 10); - let mem_val_sorted_2 = current_step.get_aux_evaluation_element(0, 11); - - transition_evaluations[self.constraint_idx()] = - (mem_val_sorted_1 - mem_val_sorted_2) * (mem_addr_sorted_2 - mem_addr_sorted_1 - one); - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -pub struct MemoryIsFunc2; -impl Default for MemoryIsFunc2 { - fn default() -> Self { - Self::new() - } -} - -impl MemoryIsFunc2 { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for MemoryIsFunc2 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 38 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let one = Felt252::one(); - - let mem_addr_sorted_2 = current_step.get_aux_evaluation_element(0, 6); - let mem_addr_sorted_3 = current_step.get_aux_evaluation_element(0, 7); - - let mem_val_sorted_2 = current_step.get_aux_evaluation_element(0, 11); - let mem_val_sorted_3 = current_step.get_aux_evaluation_element(0, 12); - - transition_evaluations[self.constraint_idx()] = - (mem_val_sorted_2 - mem_val_sorted_3) * (mem_addr_sorted_3 - mem_addr_sorted_2 - one); - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -pub struct MemoryIsFunc3; -impl Default for MemoryIsFunc3 { - fn default() -> Self { - Self::new() - } -} - -impl MemoryIsFunc3 { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for MemoryIsFunc3 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 39 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let one = Felt252::one(); - - let mem_addr_sorted_3 = current_step.get_aux_evaluation_element(0, 7); - let mem_addr_sorted_4 = current_step.get_aux_evaluation_element(0, 8); - - let mem_val_sorted_3 = current_step.get_aux_evaluation_element(0, 12); - let mem_val_sorted_4 = current_step.get_aux_evaluation_element(0, 13); - - transition_evaluations[self.constraint_idx()] = - (mem_val_sorted_3 - mem_val_sorted_4) * (mem_addr_sorted_4 - mem_addr_sorted_3 - one); - } - - fn end_exemptions(&self) -> usize { - 0 - } -} -pub struct MemoryIsFunc4; -impl Default for MemoryIsFunc4 { - fn default() -> Self { - Self::new() - } -} - -impl MemoryIsFunc4 { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for MemoryIsFunc4 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 40 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - let next_step = frame.get_evaluation_step(1); - - let one = Felt252::one(); - - let next_mem_addr_sorted_0 = next_step.get_aux_evaluation_element(0, 4); - let mem_addr_sorted_4 = current_step.get_aux_evaluation_element(0, 8); - - let next_mem_val_sorted_0 = next_step.get_aux_evaluation_element(0, 9); - let mem_val_sorted_4 = current_step.get_aux_evaluation_element(0, 13); - - transition_evaluations[self.constraint_idx()] = (mem_val_sorted_4 - next_mem_val_sorted_0) - * (next_mem_addr_sorted_0 - mem_addr_sorted_4 - one); - } - - fn end_exemptions(&self) -> usize { - 1 - } -} - -// memory/multi_column_perm/perm/step0 -pub struct MemoryMultiColumnPermStep0_0; -impl Default for MemoryMultiColumnPermStep0_0 { - fn default() -> Self { - Self::new() - } -} - -impl MemoryMultiColumnPermStep0_0 { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for MemoryMultiColumnPermStep0_0 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 41 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let alpha = rap_challenges[0]; - let z = rap_challenges[1]; - - let a1 = current_step.get_main_evaluation_element(0, 20); - let v1 = current_step.get_main_evaluation_element(0, 24); - - let p0 = current_step.get_aux_evaluation_element(0, 14); - let ap1 = current_step.get_aux_evaluation_element(0, 5); - let vp1 = current_step.get_aux_evaluation_element(0, 10); - let p1 = current_step.get_aux_evaluation_element(0, 15); - - transition_evaluations[self.constraint_idx()] = - (z - (ap1 + alpha * vp1)) * p1 - (z - (a1 + alpha * v1)) * p0; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -pub struct MemoryMultiColumnPermStep0_1; -impl Default for MemoryMultiColumnPermStep0_1 { - fn default() -> Self { - Self::new() - } -} - -impl MemoryMultiColumnPermStep0_1 { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for MemoryMultiColumnPermStep0_1 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 42 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let alpha = rap_challenges[0]; - let z = rap_challenges[1]; - - let a2 = current_step.get_main_evaluation_element(0, 21); - let v2 = current_step.get_main_evaluation_element(0, 25); - - let p1 = current_step.get_aux_evaluation_element(0, 15); - let ap2 = current_step.get_aux_evaluation_element(0, 6); - let vp2 = current_step.get_aux_evaluation_element(0, 11); - let p2 = current_step.get_aux_evaluation_element(0, 16); - - transition_evaluations[self.constraint_idx()] = - (z - (ap2 + alpha * vp2)) * p2 - (z - (a2 + alpha * v2)) * p1; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -pub struct MemoryMultiColumnPermStep0_2; -impl Default for MemoryMultiColumnPermStep0_2 { - fn default() -> Self { - Self::new() - } -} - -impl MemoryMultiColumnPermStep0_2 { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for MemoryMultiColumnPermStep0_2 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 43 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let alpha = rap_challenges[0]; - let z = rap_challenges[1]; - let a3 = current_step.get_main_evaluation_element(0, 22); - let v3 = current_step.get_main_evaluation_element(0, 26); - - let p2 = current_step.get_aux_evaluation_element(0, 16); - let ap3 = current_step.get_aux_evaluation_element(0, 7); - let vp3 = current_step.get_aux_evaluation_element(0, 12); - let p3 = current_step.get_aux_evaluation_element(0, 17); - - transition_evaluations[self.constraint_idx()] = - (z - (ap3 + alpha * vp3)) * p3 - (z - (a3 + alpha * v3)) * p2; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -pub struct MemoryMultiColumnPermStep0_3; -impl Default for MemoryMultiColumnPermStep0_3 { - fn default() -> Self { - Self::new() - } -} - -impl MemoryMultiColumnPermStep0_3 { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for MemoryMultiColumnPermStep0_3 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 44 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let alpha = rap_challenges[0]; - let z = rap_challenges[1]; - let a4 = current_step.get_main_evaluation_element(0, 33); - let v4 = current_step.get_main_evaluation_element(0, 34); - - let p3 = current_step.get_aux_evaluation_element(0, 17); - let p4 = current_step.get_aux_evaluation_element(0, 18); - let ap4 = current_step.get_aux_evaluation_element(0, 8); - let vp4 = current_step.get_aux_evaluation_element(0, 13); - - transition_evaluations[self.constraint_idx()] = - (z - (ap4 + alpha * vp4)) * p4 - (z - (a4 + alpha * v4)) * p3; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -pub struct MemoryMultiColumnPermStep0_4; -impl Default for MemoryMultiColumnPermStep0_4 { - fn default() -> Self { - Self::new() - } -} - -impl MemoryMultiColumnPermStep0_4 { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for MemoryMultiColumnPermStep0_4 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 45 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - let next_step = frame.get_evaluation_step(1); - - let alpha = rap_challenges[0]; - let z = rap_challenges[1]; - let next_a0 = next_step.get_main_evaluation_element(0, 19); - let next_v0 = next_step.get_main_evaluation_element(0, 23); - - let next_ap0 = next_step.get_aux_evaluation_element(0, 4); - let next_vp0 = next_step.get_aux_evaluation_element(0, 9); - let next_p0 = next_step.get_aux_evaluation_element(0, 14); - let p4 = current_step.get_aux_evaluation_element(0, 18); - - transition_evaluations[self.constraint_idx()] = - (z - (next_ap0 + alpha * next_vp0)) * next_p0 - (z - (next_a0 + alpha * next_v0)) * p4; - } - - fn end_exemptions(&self) -> usize { - 1 - } -} - -// rc16/diff_is_bit -pub struct Rc16DiffIsBit0; -impl Default for Rc16DiffIsBit0 { - fn default() -> Self { - Self::new() - } -} - -impl Rc16DiffIsBit0 { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for Rc16DiffIsBit0 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 46 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - let one = Felt252::one(); - - let rc_col_1 = current_step.get_aux_evaluation_element(0, 0); - let rc_col_2 = current_step.get_aux_evaluation_element(0, 1); - - transition_evaluations[self.constraint_idx()] = - (rc_col_1 - rc_col_2) * (rc_col_2 - rc_col_1 - one); - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -pub struct Rc16DiffIsBit1; -impl Default for Rc16DiffIsBit1 { - fn default() -> Self { - Self::new() - } -} - -impl Rc16DiffIsBit1 { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for Rc16DiffIsBit1 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 47 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - let one = Felt252::one(); - - let rc_col_2 = current_step.get_aux_evaluation_element(0, 1); - let rc_col_3 = current_step.get_aux_evaluation_element(0, 2); - - transition_evaluations[self.constraint_idx()] = - (rc_col_2 - rc_col_3) * (rc_col_3 - rc_col_2 - one); - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -pub struct Rc16DiffIsBit2; -impl Default for Rc16DiffIsBit2 { - fn default() -> Self { - Self::new() - } -} - -impl Rc16DiffIsBit2 { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for Rc16DiffIsBit2 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 48 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - let one = Felt252::one(); - - let rc_col_3 = current_step.get_aux_evaluation_element(0, 2); - let rc_col_4 = current_step.get_aux_evaluation_element(0, 3); - - transition_evaluations[self.constraint_idx()] = - (rc_col_3 - rc_col_4) * (rc_col_4 - rc_col_3 - one); - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -pub struct Rc16DiffIsBit3; -impl Default for Rc16DiffIsBit3 { - fn default() -> Self { - Self::new() - } -} - -impl Rc16DiffIsBit3 { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for Rc16DiffIsBit3 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 49 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - _rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - let next_step = frame.get_evaluation_step(1); - let one = Felt252::one(); - - let rc_col_4 = current_step.get_aux_evaluation_element(0, 3); - let next_rc_col_1 = next_step.get_aux_evaluation_element(0, 0); - - transition_evaluations[self.constraint_idx()] = - (rc_col_4 - next_rc_col_1) * (next_rc_col_1 - rc_col_4 - one); - } - - fn end_exemptions(&self) -> usize { - 1 - } -} - -// rc16/perm/step0 -pub struct Rc16PermStep0_0; -impl Default for Rc16PermStep0_0 { - fn default() -> Self { - Self::new() - } -} - -impl Rc16PermStep0_0 { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for Rc16PermStep0_0 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 50 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let z = rap_challenges[2]; - let a1 = current_step.get_main_evaluation_element(0, 28); - - let ap1 = current_step.get_aux_evaluation_element(0, 1); - let p1 = current_step.get_aux_evaluation_element(0, 20); - let p0 = current_step.get_aux_evaluation_element(0, 19); - - transition_evaluations[self.constraint_idx()] = (z - ap1) * p1 - (z - a1) * p0; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -pub struct Rc16PermStep0_1; -impl Default for Rc16PermStep0_1 { - fn default() -> Self { - Self::new() - } -} - -impl Rc16PermStep0_1 { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for Rc16PermStep0_1 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 51 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let z = rap_challenges[2]; - - let a2 = current_step.get_main_evaluation_element(0, 29); - - let ap2 = current_step.get_aux_evaluation_element(0, 2); - let p2 = current_step.get_aux_evaluation_element(0, 21); - let p1 = current_step.get_aux_evaluation_element(0, 20); - - transition_evaluations[self.constraint_idx()] = (z - ap2) * p2 - (z - a2) * p1; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -pub struct Rc16PermStep0_2; -impl Default for Rc16PermStep0_2 { - fn default() -> Self { - Self::new() - } -} - -impl Rc16PermStep0_2 { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for Rc16PermStep0_2 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 52 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - - let z = rap_challenges[2]; - let a3 = current_step.get_main_evaluation_element(0, 35); - - let ap3 = current_step.get_aux_evaluation_element(0, 3); - let p3 = current_step.get_aux_evaluation_element(0, 22); - let p2 = current_step.get_aux_evaluation_element(0, 21); - - transition_evaluations[self.constraint_idx()] = (z - ap3) * p3 - (z - a3) * p2; - } - - fn end_exemptions(&self) -> usize { - 0 - } -} - -pub struct Rc16PermStep0_3; -impl Default for Rc16PermStep0_3 { - fn default() -> Self { - Self::new() - } -} - -impl Rc16PermStep0_3 { - pub fn new() -> Self { - Self - } -} - -impl TransitionConstraint for Rc16PermStep0_3 { - fn degree(&self) -> usize { - 2 - } - - fn constraint_idx(&self) -> usize { - 53 - } - - fn evaluate( - &self, - frame: &Frame, - transition_evaluations: &mut [Felt252], - _periodic_values: &[Felt252], - rap_challenges: &[Felt252], - ) { - let current_step = frame.get_evaluation_step(0); - let next_step = frame.get_evaluation_step(1); - - let z = rap_challenges[2]; - - let p3 = current_step.get_aux_evaluation_element(0, 22); - - let next_a0 = next_step.get_main_evaluation_element(0, 27); - let next_ap0 = next_step.get_aux_evaluation_element(0, 0); - - let next_p0 = next_step.get_aux_evaluation_element(0, 19); - - transition_evaluations[self.constraint_idx()] = - (z - next_ap0) * next_p0 - (z - next_a0) * p3; - } - - fn end_exemptions(&self) -> usize { - 1 - } -} - -fn frame_inst_size(step: &TableView) -> Felt252 { - let op1_val = step.get_main_evaluation_element(0, 2) - - Felt252::from(2) * step.get_main_evaluation_element(0, 3); - op1_val + Felt252::one() -} diff --git a/provers/cairo/src/wasm_wrappers.rs b/provers/cairo/src/wasm_wrappers.rs deleted file mode 100644 index 7ab9f3c14..000000000 --- a/provers/cairo/src/wasm_wrappers.rs +++ /dev/null @@ -1,73 +0,0 @@ -use super::air::CairoAIR; -use lambdaworks_math::field::element::FieldElement; -use lambdaworks_math::field::fields::fft_friendly::stark_252_prime_field::Stark252PrimeField; -use serde::{Deserialize, Serialize}; -use stark_platinum_prover::proof::options::ProofOptions; -use stark_platinum_prover::proof::options::SecurityLevel; -use stark_platinum_prover::transcript::StoneProverTranscript; -use stark_platinum_prover::verifier::{IsStarkVerifier, Verifier}; -use std::collections::HashMap; -use wasm_bindgen::prelude::wasm_bindgen; - -#[wasm_bindgen] -#[derive(Debug, Clone, Copy, Serialize, Deserialize, Eq, PartialEq, Hash)] -pub struct FE(FieldElement); - -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct MemoryMap(HashMap); - -#[wasm_bindgen] -pub fn verify_cairo_proof_wasm(proof_bytes: &[u8], proof_options: &ProofOptions) -> bool { - let bytes = proof_bytes; - - // This logic is the same as main verify, with only error handling changing. In wasm, we simply return a false if the proof is invalid, instead of rising an error. - - // Proof len was stored as an u32, 4u8 needs to be read - let proof_len = u32::from_le_bytes(bytes[0..4].try_into().unwrap()) as usize; - - let bytes = &bytes[4..]; - if bytes.len() < proof_len { - return false; - } - - let Ok((proof, _)) = - bincode::serde::decode_from_slice(&bytes[0..proof_len], bincode::config::standard()) - else { - return false; - }; - let bytes = &bytes[proof_len..]; - - let Ok((pub_inputs, _)) = bincode::serde::decode_from_slice(bytes, bincode::config::standard()) - else { - return false; - }; - - Verifier::::verify( - &proof, - &pub_inputs, - proof_options, - StoneProverTranscript::new(&[]), - ) -} - -/// WASM Function for verifying a proof with default 100 bits of security -#[wasm_bindgen] -pub fn verify_cairo_proof_wasm_100_bits(proof_bytes: &[u8]) -> bool { - let proof_options = ProofOptions::new_secure(SecurityLevel::Conjecturable100Bits, 3); - verify_cairo_proof_wasm(proof_bytes, &proof_options) -} - -#[wasm_bindgen] -pub fn new_proof_options( - blowup_factor: u8, - fri_number_of_queries: usize, - coset_offset: usize, - grinding_factor: u8, -) -> ProofOptions { - ProofOptions { - blowup_factor, - fri_number_of_queries, - coset_offset: coset_offset as u64, - grinding_factor, - } -} diff --git a/provers/cairo/tests/wasm.rs b/provers/cairo/tests/wasm.rs deleted file mode 100644 index eb8fb6604..000000000 --- a/provers/cairo/tests/wasm.rs +++ /dev/null @@ -1,1238 +0,0 @@ -use wasm_bindgen_test::wasm_bindgen_test_configure; -wasm_bindgen_test_configure!(run_in_browser); - -#[cfg(feature = "wasm")] -use cairo_platinum_prover::wasm_wrappers::verify_cairo_proof_wasm; -#[cfg(feature = "wasm")] -use stark_platinum_prover::proof::options::ProofOptions; - -#[cfg(feature = "wasm")] -use wasm_bindgen_test::*; - -#[cfg(feature = "wasm")] -#[wasm_bindgen_test] -#[test] -fn test_prove_cairo1_program_wasm() { - let proof_options = ProofOptions::default_test_options(); - assert!(verify_cairo_proof_wasm(&PROOF, &proof_options)); -} - -// Test case is fibo5, with default test options -#[cfg(feature = "wasm")] -static PROOF: [u8; 25527] = [ - 189, 90, 0, 0, 64, 34, 150, 252, 123, 41, 36, 58, 219, 76, 25, 24, 145, 52, 128, 169, 121, 212, - 127, 31, 128, 230, 237, 60, 212, 165, 171, 81, 190, 191, 157, 241, 200, 1, 77, 31, 232, 212, - 215, 170, 34, 124, 137, 195, 171, 208, 228, 24, 74, 34, 237, 107, 135, 106, 205, 168, 33, 72, - 193, 202, 8, 15, 250, 12, 38, 185, 118, 32, 4, 121, 119, 154, 112, 215, 149, 181, 135, 19, 126, - 111, 29, 70, 31, 188, 18, 213, 57, 174, 39, 158, 20, 84, 21, 255, 108, 8, 130, 181, 210, 188, - 32, 6, 160, 9, 128, 25, 11, 118, 22, 20, 151, 71, 31, 175, 86, 16, 174, 137, 223, 219, 241, - 181, 35, 4, 196, 138, 91, 86, 112, 137, 228, 116, 81, 32, 7, 107, 149, 38, 34, 86, 96, 114, - 159, 34, 99, 135, 158, 58, 25, 31, 76, 30, 86, 40, 212, 147, 139, 195, 62, 99, 10, 139, 2, 32, - 214, 196, 32, 6, 108, 34, 191, 254, 254, 228, 247, 135, 134, 229, 235, 224, 97, 77, 120, 157, - 43, 153, 217, 41, 102, 201, 99, 134, 117, 228, 144, 48, 163, 25, 129, 32, 2, 20, 45, 228, 132, - 42, 246, 70, 86, 114, 189, 79, 91, 197, 193, 77, 249, 25, 48, 253, 126, 70, 191, 158, 197, 112, - 103, 222, 171, 146, 253, 45, 32, 7, 117, 162, 64, 207, 150, 67, 187, 96, 148, 96, 38, 49, 9, - 133, 44, 90, 236, 197, 169, 22, 115, 1, 96, 121, 62, 95, 14, 18, 245, 96, 28, 32, 5, 99, 63, - 92, 105, 2, 109, 50, 41, 189, 169, 18, 51, 142, 198, 244, 225, 45, 184, 128, 162, 195, 173, - 132, 26, 158, 29, 73, 185, 108, 189, 223, 32, 6, 177, 159, 174, 52, 129, 54, 161, 148, 222, - 212, 137, 25, 199, 99, 122, 112, 150, 220, 64, 81, 97, 214, 194, 13, 79, 14, 164, 220, 182, 94, - 240, 32, 7, 21, 63, 67, 83, 232, 93, 14, 9, 158, 191, 21, 234, 220, 250, 2, 20, 252, 77, 157, - 2, 107, 56, 219, 24, 198, 119, 137, 150, 248, 184, 108, 32, 6, 118, 104, 204, 170, 167, 72, 36, - 24, 28, 178, 178, 199, 153, 3, 48, 248, 109, 16, 177, 203, 221, 79, 51, 65, 123, 50, 17, 24, - 186, 245, 98, 32, 6, 53, 4, 218, 106, 98, 29, 135, 172, 151, 167, 87, 84, 29, 48, 173, 143, - 159, 203, 207, 109, 62, 43, 234, 243, 200, 173, 51, 81, 205, 214, 159, 32, 1, 192, 54, 174, - 176, 150, 192, 232, 159, 124, 165, 164, 227, 190, 10, 213, 99, 13, 175, 251, 178, 63, 130, 157, - 229, 200, 157, 4, 248, 245, 91, 170, 32, 3, 131, 77, 129, 155, 122, 112, 105, 14, 166, 108, 44, - 230, 88, 128, 192, 101, 208, 9, 193, 199, 170, 102, 165, 219, 33, 6, 149, 50, 190, 136, 4, 32, - 1, 166, 22, 90, 183, 236, 147, 229, 114, 124, 118, 30, 172, 157, 47, 152, 43, 185, 156, 176, - 233, 211, 41, 241, 244, 91, 35, 247, 220, 48, 167, 119, 32, 0, 143, 122, 153, 149, 158, 11, - 167, 120, 109, 143, 224, 180, 71, 224, 16, 242, 141, 173, 213, 78, 163, 226, 115, 12, 76, 130, - 51, 22, 181, 220, 175, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 2, 1, 253, 138, 34, 207, 195, 158, 101, 246, 72, 80, 69, 234, - 134, 69, 254, 0, 214, 200, 65, 117, 252, 210, 179, 241, 125, 139, 80, 132, 22, 88, 32, 5, 207, - 6, 122, 136, 121, 97, 74, 64, 92, 10, 82, 129, 253, 207, 93, 27, 141, 1, 155, 169, 154, 254, - 206, 37, 170, 143, 226, 127, 127, 197, 136, 32, 2, 82, 215, 180, 74, 233, 38, 140, 152, 162, - 68, 165, 53, 110, 9, 215, 1, 145, 213, 78, 167, 109, 84, 4, 109, 31, 245, 125, 198, 84, 65, - 158, 32, 6, 254, 118, 48, 225, 227, 141, 219, 18, 3, 186, 152, 178, 114, 191, 66, 55, 89, 219, - 95, 200, 151, 29, 176, 74, 41, 179, 109, 99, 230, 201, 88, 32, 6, 54, 190, 65, 189, 147, 32, - 77, 11, 90, 84, 204, 243, 122, 213, 92, 228, 209, 124, 145, 16, 62, 177, 252, 154, 93, 164, 93, - 254, 68, 192, 203, 32, 7, 146, 93, 121, 26, 128, 203, 73, 35, 188, 123, 51, 179, 189, 238, 11, - 106, 121, 76, 173, 19, 223, 23, 158, 122, 246, 192, 227, 134, 2, 231, 8, 32, 0, 158, 30, 24, - 198, 212, 205, 150, 208, 38, 174, 245, 134, 86, 168, 184, 120, 219, 209, 14, 217, 183, 243, - 240, 193, 102, 22, 97, 21, 230, 145, 150, 32, 4, 215, 231, 29, 42, 198, 22, 162, 226, 157, 128, - 71, 137, 216, 168, 228, 206, 159, 159, 52, 172, 88, 144, 103, 86, 202, 201, 230, 40, 78, 112, - 45, 32, 5, 235, 155, 127, 149, 142, 77, 54, 242, 17, 239, 182, 3, 107, 250, 74, 164, 113, 37, - 129, 249, 242, 46, 29, 220, 59, 254, 100, 15, 23, 32, 202, 32, 0, 100, 208, 10, 200, 88, 205, - 233, 28, 178, 96, 76, 200, 165, 11, 14, 9, 60, 200, 108, 74, 226, 251, 191, 116, 36, 106, 38, - 238, 105, 49, 59, 32, 3, 109, 137, 42, 78, 68, 171, 105, 86, 141, 182, 33, 18, 186, 138, 195, - 43, 158, 64, 240, 244, 44, 15, 82, 62, 95, 159, 208, 99, 128, 120, 166, 32, 6, 80, 221, 32, - 107, 188, 148, 20, 172, 97, 46, 213, 33, 96, 119, 194, 172, 209, 57, 171, 231, 161, 116, 77, - 146, 91, 127, 153, 116, 194, 6, 119, 32, 7, 95, 148, 33, 184, 38, 17, 124, 108, 165, 3, 157, - 11, 105, 123, 140, 78, 201, 252, 56, 201, 189, 40, 44, 160, 20, 181, 223, 97, 246, 63, 212, 32, - 4, 199, 196, 123, 36, 185, 76, 235, 127, 222, 243, 141, 18, 227, 51, 51, 179, 61, 186, 186, 17, - 65, 133, 204, 48, 129, 249, 79, 59, 212, 119, 134, 32, 1, 14, 184, 241, 108, 147, 105, 134, - 173, 126, 26, 113, 63, 210, 43, 210, 50, 231, 28, 98, 224, 126, 88, 254, 170, 63, 113, 191, - 174, 199, 229, 91, 32, 2, 188, 189, 236, 183, 2, 74, 99, 103, 10, 113, 112, 169, 116, 72, 218, - 15, 195, 180, 92, 244, 7, 8, 151, 187, 53, 116, 18, 145, 165, 235, 146, 32, 2, 213, 207, 119, - 50, 184, 15, 218, 181, 76, 123, 149, 88, 220, 220, 174, 163, 206, 82, 138, 209, 248, 253, 254, - 252, 104, 112, 41, 95, 243, 234, 85, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 7, 255, 255, 255, 254, 239, 253, 240, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 239, 255, 225, 32, 2, 58, 120, 103, 31, 144, 59, 36, 56, 216, 9, 143, 28, 152, 182, 24, - 101, 45, 40, 210, 92, 137, 3, 122, 137, 71, 129, 229, 131, 142, 200, 44, 32, 4, 95, 194, 144, - 22, 191, 76, 52, 100, 111, 16, 86, 25, 205, 60, 214, 40, 4, 73, 84, 53, 241, 111, 62, 89, 113, - 219, 34, 79, 171, 193, 213, 32, 4, 95, 194, 144, 22, 191, 76, 52, 100, 111, 16, 86, 25, 205, - 60, 214, 40, 4, 73, 84, 53, 241, 111, 62, 89, 113, 219, 34, 79, 171, 193, 213, 32, 4, 95, 194, - 144, 22, 191, 76, 52, 100, 111, 16, 86, 25, 205, 60, 214, 40, 4, 73, 84, 53, 241, 111, 62, 89, - 113, 219, 34, 79, 171, 193, 213, 32, 6, 170, 73, 20, 201, 41, 221, 95, 49, 88, 98, 198, 144, - 97, 178, 19, 20, 21, 54, 82, 199, 12, 45, 76, 215, 6, 123, 35, 238, 137, 202, 40, 32, 7, 100, - 98, 115, 53, 180, 216, 211, 207, 130, 160, 111, 216, 133, 121, 40, 24, 215, 122, 245, 214, 76, - 187, 71, 161, 160, 17, 97, 55, 180, 8, 5, 32, 2, 20, 170, 80, 81, 77, 23, 100, 85, 178, 255, - 127, 197, 138, 93, 120, 122, 114, 55, 153, 40, 18, 61, 181, 194, 255, 250, 174, 72, 182, 102, - 209, 32, 7, 20, 154, 141, 85, 62, 150, 185, 19, 107, 229, 104, 250, 70, 91, 203, 144, 9, 161, - 212, 234, 206, 29, 214, 118, 61, 199, 234, 111, 121, 255, 145, 32, 5, 113, 191, 41, 145, 51, - 220, 90, 222, 148, 12, 129, 249, 149, 236, 127, 207, 145, 201, 137, 53, 197, 218, 85, 9, 95, - 116, 43, 126, 1, 50, 243, 32, 7, 41, 143, 167, 119, 191, 45, 94, 57, 127, 51, 171, 183, 74, - 209, 143, 108, 123, 105, 127, 183, 37, 13, 103, 64, 232, 8, 200, 130, 138, 61, 78, 32, 7, 179, - 106, 203, 33, 8, 218, 190, 122, 33, 209, 80, 113, 38, 227, 184, 137, 24, 216, 11, 254, 221, - 197, 142, 70, 5, 141, 108, 0, 183, 75, 60, 32, 1, 117, 211, 84, 179, 151, 225, 227, 192, 48, - 144, 91, 223, 191, 221, 189, 250, 107, 130, 65, 174, 248, 46, 237, 4, 150, 1, 161, 15, 237, - 175, 140, 32, 7, 151, 193, 227, 109, 196, 148, 8, 12, 2, 93, 154, 254, 190, 168, 126, 115, 176, - 87, 244, 18, 245, 176, 255, 184, 74, 60, 134, 197, 64, 47, 198, 32, 1, 117, 234, 61, 180, 193, - 236, 53, 166, 68, 245, 7, 239, 133, 162, 169, 113, 184, 48, 142, 65, 35, 165, 252, 108, 157, - 51, 214, 79, 106, 127, 100, 32, 1, 55, 188, 132, 102, 25, 136, 86, 128, 254, 76, 150, 65, 68, - 67, 141, 141, 199, 5, 54, 5, 54, 193, 66, 219, 226, 231, 176, 237, 235, 86, 24, 32, 3, 13, 246, - 153, 18, 135, 58, 85, 177, 66, 112, 254, 233, 238, 154, 39, 78, 236, 149, 51, 145, 161, 115, - 190, 55, 59, 3, 153, 248, 255, 14, 59, 32, 4, 44, 148, 208, 135, 107, 26, 190, 55, 245, 96, - 224, 168, 146, 28, 132, 121, 112, 244, 136, 170, 187, 113, 14, 84, 158, 238, 144, 99, 64, 212, - 162, 32, 6, 3, 108, 124, 197, 209, 187, 234, 214, 106, 11, 99, 173, 24, 108, 50, 113, 93, 111, - 81, 184, 68, 126, 53, 149, 82, 4, 249, 241, 1, 38, 45, 32, 4, 99, 217, 80, 21, 33, 240, 160, - 192, 206, 148, 125, 201, 15, 226, 223, 205, 54, 196, 69, 238, 196, 211, 131, 106, 163, 155, 71, - 254, 69, 148, 35, 32, 2, 48, 20, 156, 33, 221, 241, 152, 186, 21, 217, 133, 210, 195, 96, 76, - 182, 89, 195, 57, 141, 140, 194, 34, 98, 73, 184, 74, 158, 222, 233, 204, 32, 2, 104, 146, 122, - 157, 155, 177, 23, 184, 43, 123, 16, 201, 28, 174, 245, 3, 129, 93, 122, 56, 72, 221, 119, 158, - 48, 136, 129, 156, 146, 129, 85, 32, 7, 204, 154, 228, 196, 116, 47, 11, 22, 136, 232, 70, 49, - 217, 80, 27, 27, 71, 148, 85, 106, 137, 239, 44, 60, 142, 255, 114, 199, 138, 131, 115, 32, 0, - 109, 148, 114, 107, 9, 10, 135, 133, 203, 14, 200, 143, 22, 176, 132, 91, 191, 120, 231, 4, 11, - 27, 29, 2, 144, 66, 74, 172, 180, 238, 173, 32, 5, 41, 106, 199, 66, 209, 86, 79, 26, 114, 96, - 115, 160, 206, 94, 45, 101, 109, 218, 61, 240, 250, 236, 254, 99, 11, 208, 173, 123, 237, 172, - 218, 32, 7, 195, 15, 52, 113, 31, 59, 106, 153, 94, 78, 59, 116, 234, 101, 79, 99, 50, 165, 71, - 164, 242, 93, 229, 173, 68, 76, 63, 130, 180, 245, 171, 32, 7, 178, 233, 172, 78, 145, 162, - 101, 232, 61, 41, 82, 127, 140, 193, 65, 50, 22, 164, 191, 140, 197, 45, 169, 27, 70, 249, 29, - 104, 25, 145, 54, 32, 5, 103, 27, 203, 24, 80, 17, 106, 37, 200, 66, 30, 240, 30, 10, 130, 161, - 220, 169, 53, 232, 88, 202, 248, 230, 100, 254, 37, 91, 86, 106, 130, 32, 1, 7, 154, 215, 176, - 200, 223, 248, 219, 75, 86, 84, 157, 153, 63, 218, 154, 146, 99, 255, 244, 68, 127, 59, 3, 133, - 63, 233, 75, 12, 125, 229, 32, 4, 162, 25, 132, 194, 188, 89, 153, 243, 148, 200, 111, 120, - 234, 187, 113, 250, 211, 203, 196, 216, 19, 241, 186, 152, 174, 93, 135, 96, 219, 84, 120, 32, - 3, 94, 57, 26, 147, 93, 208, 42, 251, 160, 44, 253, 234, 225, 221, 209, 83, 232, 56, 222, 73, - 86, 22, 34, 133, 66, 159, 217, 36, 198, 149, 248, 32, 1, 175, 28, 141, 73, 174, 232, 21, 125, - 208, 22, 126, 245, 112, 238, 232, 169, 244, 28, 111, 36, 171, 11, 17, 66, 161, 79, 236, 146, - 99, 74, 252, 32, 6, 105, 207, 161, 80, 227, 125, 57, 107, 219, 234, 242, 8, 57, 180, 6, 79, - 244, 114, 176, 90, 196, 160, 93, 93, 148, 250, 136, 178, 122, 77, 203, 32, 5, 170, 248, 163, - 232, 122, 43, 2, 147, 175, 63, 152, 67, 184, 111, 129, 199, 252, 147, 171, 35, 206, 159, 120, - 115, 29, 71, 80, 34, 233, 231, 67, 32, 5, 235, 92, 54, 78, 181, 54, 43, 197, 26, 242, 212, 164, - 133, 161, 32, 206, 244, 132, 107, 0, 119, 161, 192, 98, 107, 132, 45, 35, 61, 151, 241, 32, 1, - 52, 115, 199, 154, 130, 145, 138, 77, 44, 24, 92, 225, 232, 60, 191, 17, 133, 174, 225, 68, - 248, 253, 109, 190, 219, 85, 222, 106, 223, 199, 237, 32, 4, 65, 124, 175, 73, 120, 63, 43, 8, - 5, 100, 6, 79, 135, 103, 228, 149, 4, 66, 187, 228, 34, 215, 155, 81, 4, 227, 10, 152, 83, 210, - 90, 32, 2, 79, 92, 69, 142, 186, 27, 253, 104, 116, 175, 206, 98, 172, 37, 88, 202, 4, 207, 66, - 55, 197, 109, 23, 99, 221, 158, 135, 165, 106, 210, 221, 32, 2, 185, 239, 125, 115, 105, 23, - 36, 225, 46, 55, 153, 190, 215, 79, 62, 95, 252, 204, 25, 228, 81, 209, 96, 110, 51, 33, 214, - 59, 254, 17, 187, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 32, 6, 115, 185, 251, 251, 2, 194, 113, 34, 165, 158, 201, 2, 155, 58, - 231, 207, 183, 88, 168, 36, 176, 229, 83, 109, 5, 228, 104, 251, 149, 0, 169, 32, 0, 23, 30, - 73, 111, 138, 235, 54, 146, 59, 69, 100, 119, 174, 18, 9, 159, 47, 91, 41, 166, 49, 108, 197, - 98, 121, 163, 236, 57, 127, 71, 230, 32, 3, 135, 193, 17, 66, 204, 31, 13, 198, 104, 151, 87, - 201, 70, 48, 171, 93, 196, 213, 133, 72, 38, 70, 160, 168, 13, 131, 96, 7, 226, 139, 241, 32, - 0, 97, 102, 235, 176, 150, 14, 255, 3, 82, 45, 214, 73, 26, 71, 248, 125, 155, 45, 139, 124, - 80, 247, 214, 243, 124, 101, 179, 141, 154, 195, 162, 32, 6, 2, 0, 84, 32, 175, 214, 204, 21, - 56, 3, 253, 30, 16, 24, 127, 110, 182, 243, 196, 52, 84, 5, 188, 1, 231, 85, 219, 238, 138, - 212, 128, 32, 5, 41, 245, 43, 9, 88, 252, 140, 241, 50, 247, 88, 201, 134, 107, 10, 138, 185, - 129, 84, 20, 180, 247, 156, 48, 190, 41, 60, 144, 165, 148, 158, 32, 0, 128, 135, 202, 252, 45, - 176, 31, 143, 187, 108, 30, 148, 161, 37, 7, 111, 221, 225, 16, 14, 94, 38, 96, 113, 129, 116, - 34, 2, 216, 200, 159, 32, 6, 227, 189, 138, 109, 9, 174, 87, 133, 125, 196, 131, 133, 203, 175, - 233, 36, 232, 231, 106, 46, 254, 207, 133, 169, 31, 102, 114, 167, 133, 218, 49, 32, 0, 32, 35, - 156, 126, 100, 217, 21, 5, 4, 77, 161, 75, 187, 104, 12, 133, 33, 8, 191, 243, 252, 247, 101, - 117, 215, 71, 248, 98, 127, 216, 63, 32, 0, 115, 15, 50, 93, 55, 31, 152, 56, 32, 35, 75, 80, - 60, 95, 38, 34, 171, 102, 52, 111, 219, 210, 246, 116, 152, 47, 203, 146, 37, 25, 223, 32, 6, - 14, 95, 6, 196, 226, 244, 244, 239, 116, 1, 198, 58, 8, 219, 245, 5, 138, 203, 23, 67, 23, 84, - 232, 149, 164, 19, 227, 167, 195, 146, 206, 32, 7, 208, 64, 211, 244, 126, 177, 122, 187, 50, - 96, 64, 242, 176, 168, 204, 138, 69, 128, 232, 60, 106, 201, 93, 194, 23, 92, 253, 161, 90, 49, - 208, 32, 6, 0, 189, 207, 176, 242, 9, 66, 167, 122, 73, 10, 123, 39, 169, 19, 60, 103, 43, 164, - 118, 82, 94, 190, 127, 214, 40, 39, 73, 4, 49, 45, 32, 6, 144, 193, 234, 226, 255, 169, 98, - 233, 235, 134, 35, 35, 19, 131, 173, 15, 201, 217, 186, 130, 0, 141, 35, 195, 40, 10, 100, 18, - 7, 101, 159, 32, 2, 81, 151, 245, 177, 252, 226, 204, 173, 85, 24, 4, 95, 205, 23, 25, 251, 17, - 156, 214, 90, 28, 206, 86, 238, 192, 134, 49, 32, 50, 220, 6, 32, 1, 244, 205, 177, 90, 120, - 13, 60, 46, 86, 37, 234, 225, 106, 184, 139, 212, 169, 168, 244, 158, 52, 14, 135, 165, 147, - 70, 141, 255, 230, 132, 71, 32, 5, 82, 227, 139, 2, 40, 141, 165, 126, 161, 195, 112, 160, 172, - 14, 82, 222, 80, 169, 222, 77, 78, 246, 49, 169, 210, 143, 72, 95, 111, 245, 232, 32, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 32, 7, 255, 255, 255, 254, 239, 253, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 255, 225, 32, 0, 85, 163, 31, 56, - 23, 227, 210, 35, 188, 95, 188, 220, 211, 243, 28, 54, 224, 187, 98, 102, 204, 33, 75, 193, - 122, 112, 91, 160, 41, 141, 89, 32, 4, 82, 203, 137, 115, 201, 150, 191, 166, 99, 222, 69, 222, - 149, 93, 212, 145, 31, 93, 65, 137, 126, 195, 126, 14, 129, 233, 26, 176, 49, 82, 127, 32, 4, - 82, 203, 137, 115, 201, 150, 191, 166, 99, 222, 69, 222, 149, 93, 212, 145, 31, 93, 65, 137, - 126, 195, 126, 14, 129, 233, 26, 176, 49, 82, 127, 32, 4, 82, 203, 137, 115, 201, 150, 191, - 166, 99, 222, 69, 222, 149, 93, 212, 145, 31, 93, 65, 137, 126, 195, 126, 14, 129, 233, 26, - 176, 49, 82, 127, 32, 1, 233, 68, 16, 26, 231, 26, 13, 224, 136, 35, 186, 24, 94, 164, 6, 24, - 215, 201, 121, 43, 164, 110, 63, 246, 152, 162, 110, 47, 24, 96, 170, 32, 3, 68, 254, 241, 184, - 31, 136, 240, 123, 184, 28, 56, 127, 116, 64, 6, 24, 157, 254, 225, 103, 224, 242, 60, 247, - 114, 65, 92, 85, 90, 123, 96, 32, 1, 10, 116, 233, 164, 250, 215, 87, 154, 28, 170, 97, 52, - 177, 105, 39, 86, 87, 202, 11, 143, 8, 136, 89, 112, 142, 108, 124, 64, 80, 51, 114, 32, 4, 21, - 88, 73, 189, 248, 220, 154, 103, 98, 52, 113, 214, 220, 147, 30, 108, 56, 18, 71, 125, 178, - 247, 106, 67, 91, 72, 195, 182, 228, 234, 65, 32, 3, 116, 200, 211, 20, 250, 150, 46, 138, 158, - 89, 97, 125, 50, 0, 184, 211, 5, 226, 38, 227, 131, 150, 173, 187, 92, 236, 2, 129, 165, 162, - 90, 32, 7, 246, 141, 58, 113, 220, 125, 16, 230, 82, 174, 150, 52, 27, 174, 148, 207, 155, 224, - 31, 47, 161, 188, 93, 245, 241, 130, 244, 30, 255, 124, 38, 32, 0, 135, 49, 230, 77, 253, 147, - 32, 220, 149, 28, 235, 161, 217, 174, 36, 68, 19, 159, 36, 83, 233, 51, 51, 186, 156, 127, 58, - 125, 30, 96, 122, 32, 7, 240, 8, 218, 58, 141, 142, 100, 113, 185, 80, 234, 52, 191, 204, 177, - 223, 215, 24, 78, 11, 179, 213, 100, 59, 147, 142, 164, 74, 151, 202, 69, 32, 1, 140, 105, 137, - 196, 179, 164, 211, 17, 24, 142, 88, 14, 86, 92, 225, 103, 24, 147, 40, 187, 235, 183, 55, 67, - 206, 227, 76, 204, 85, 184, 0, 32, 1, 135, 21, 139, 177, 98, 238, 207, 121, 193, 232, 92, 193, - 84, 9, 31, 216, 230, 39, 94, 172, 170, 159, 131, 182, 200, 138, 149, 14, 209, 206, 112, 32, 7, - 11, 30, 72, 239, 66, 212, 25, 127, 66, 185, 63, 122, 54, 102, 90, 179, 208, 114, 222, 205, 233, - 100, 158, 102, 46, 172, 22, 211, 50, 169, 25, 32, 5, 248, 84, 239, 52, 205, 176, 109, 244, 251, - 122, 75, 246, 35, 127, 128, 70, 49, 32, 115, 224, 197, 164, 76, 145, 73, 103, 249, 203, 3, 8, - 34, 32, 3, 182, 251, 2, 76, 2, 142, 40, 178, 93, 156, 100, 212, 170, 206, 213, 16, 219, 191, - 26, 30, 42, 165, 137, 226, 93, 53, 48, 171, 66, 68, 90, 32, 2, 86, 24, 111, 255, 37, 44, 8, 32, - 247, 101, 8, 1, 159, 181, 86, 5, 193, 11, 78, 116, 183, 128, 190, 11, 37, 228, 66, 246, 42, 97, - 110, 32, 4, 117, 243, 32, 94, 173, 84, 240, 137, 39, 233, 131, 234, 166, 202, 0, 236, 27, 207, - 132, 222, 66, 210, 98, 108, 171, 189, 246, 230, 47, 41, 26, 32, 1, 199, 163, 213, 238, 169, - 173, 178, 245, 231, 214, 11, 255, 224, 62, 111, 59, 172, 254, 158, 85, 74, 156, 10, 152, 165, - 56, 235, 116, 4, 108, 183, 32, 2, 170, 60, 84, 163, 133, 239, 248, 198, 183, 45, 151, 159, 73, - 224, 53, 124, 40, 72, 25, 104, 121, 11, 35, 168, 248, 70, 79, 138, 210, 80, 221, 32, 1, 40, 99, - 5, 136, 12, 170, 142, 106, 37, 14, 66, 49, 32, 54, 247, 127, 114, 170, 81, 249, 107, 55, 134, - 56, 187, 193, 158, 240, 253, 108, 80, 32, 5, 182, 30, 113, 205, 238, 106, 8, 90, 89, 34, 99, - 100, 150, 116, 249, 10, 180, 155, 11, 70, 101, 71, 184, 180, 231, 244, 181, 56, 64, 98, 130, - 59, 2, 81, 40, 194, 94, 50, 95, 48, 102, 131, 97, 175, 28, 49, 71, 186, 139, 175, 98, 168, 189, - 34, 246, 11, 62, 140, 164, 7, 236, 183, 220, 165, 23, 2, 32, 3, 59, 152, 143, 8, 230, 240, 130, - 56, 157, 110, 161, 54, 201, 38, 88, 116, 51, 223, 114, 113, 15, 169, 45, 163, 3, 70, 102, 109, - 19, 244, 104, 32, 0, 186, 60, 10, 233, 92, 232, 39, 29, 239, 122, 223, 0, 178, 158, 152, 250, - 205, 162, 150, 109, 186, 214, 94, 94, 177, 99, 135, 250, 5, 221, 183, 5, 191, 197, 255, 113, - 37, 76, 111, 0, 114, 147, 242, 154, 7, 31, 117, 190, 38, 136, 123, 37, 94, 212, 249, 107, 104, - 80, 4, 117, 47, 28, 126, 105, 100, 93, 30, 7, 47, 90, 129, 239, 158, 228, 34, 172, 127, 112, - 154, 50, 12, 80, 235, 240, 221, 100, 64, 218, 90, 178, 60, 166, 125, 246, 131, 68, 196, 7, 41, - 61, 53, 191, 99, 192, 168, 51, 141, 240, 195, 73, 136, 178, 77, 77, 171, 230, 34, 95, 63, 72, - 43, 244, 57, 163, 39, 196, 98, 156, 57, 136, 29, 175, 0, 243, 46, 77, 13, 125, 6, 114, 48, 71, - 249, 99, 8, 128, 225, 34, 110, 147, 55, 27, 63, 175, 194, 217, 227, 77, 218, 94, 36, 156, 0, - 179, 231, 72, 31, 255, 38, 212, 167, 10, 174, 191, 110, 250, 162, 207, 161, 168, 79, 19, 104, - 168, 119, 188, 151, 153, 175, 9, 106, 34, 32, 7, 89, 44, 91, 159, 254, 36, 38, 170, 34, 219, - 45, 217, 23, 164, 181, 224, 3, 112, 229, 190, 172, 251, 223, 99, 32, 86, 157, 216, 159, 150, - 134, 3, 5, 6, 246, 179, 126, 106, 191, 68, 175, 91, 52, 134, 173, 220, 51, 251, 208, 40, 255, - 118, 102, 190, 251, 93, 123, 255, 212, 245, 224, 113, 116, 137, 206, 87, 57, 244, 148, 152, 0, - 128, 157, 16, 56, 116, 99, 227, 198, 250, 122, 186, 236, 42, 50, 76, 9, 83, 241, 89, 4, 230, - 27, 247, 214, 211, 214, 51, 101, 38, 74, 72, 251, 114, 60, 34, 69, 106, 109, 151, 42, 19, 129, - 17, 81, 158, 13, 73, 210, 188, 86, 240, 151, 220, 230, 52, 216, 38, 80, 103, 198, 152, 20, 115, - 160, 242, 252, 109, 20, 133, 222, 45, 134, 88, 23, 53, 141, 242, 248, 15, 11, 233, 149, 220, 8, - 24, 184, 75, 145, 67, 83, 65, 38, 70, 80, 71, 140, 74, 31, 138, 79, 5, 128, 132, 58, 43, 187, - 35, 22, 21, 18, 103, 216, 32, 162, 130, 102, 175, 17, 149, 195, 87, 73, 219, 140, 227, 135, - 197, 119, 17, 126, 237, 56, 57, 61, 0, 204, 10, 66, 81, 3, 129, 39, 95, 45, 65, 40, 41, 56, 45, - 134, 5, 204, 210, 97, 78, 5, 38, 124, 9, 101, 142, 27, 84, 214, 74, 16, 193, 162, 40, 79, 83, - 118, 130, 252, 144, 216, 117, 20, 36, 197, 120, 236, 91, 6, 122, 117, 5, 112, 130, 41, 45, 144, - 152, 96, 9, 196, 129, 48, 16, 255, 225, 194, 146, 230, 3, 53, 10, 11, 140, 129, 168, 180, 93, - 205, 17, 231, 9, 178, 140, 111, 27, 159, 166, 190, 249, 104, 99, 61, 107, 11, 219, 187, 68, - 171, 121, 0, 216, 199, 162, 138, 56, 29, 97, 137, 103, 186, 71, 26, 99, 115, 20, 70, 113, 12, - 29, 203, 98, 47, 50, 42, 188, 136, 157, 159, 108, 58, 187, 27, 127, 128, 169, 115, 229, 0, 246, - 172, 193, 39, 151, 134, 244, 58, 180, 120, 43, 49, 21, 2, 128, 38, 87, 184, 224, 109, 146, 99, - 207, 186, 154, 49, 150, 19, 204, 201, 19, 234, 99, 213, 91, 151, 9, 196, 58, 87, 229, 152, 4, - 4, 126, 143, 216, 213, 112, 139, 15, 201, 95, 2, 36, 217, 63, 3, 105, 156, 95, 192, 51, 127, - 107, 106, 121, 210, 131, 78, 183, 183, 69, 25, 120, 44, 193, 12, 209, 45, 134, 135, 222, 241, - 166, 46, 114, 171, 24, 250, 218, 189, 180, 56, 88, 31, 14, 10, 88, 91, 149, 46, 96, 221, 211, - 22, 124, 81, 167, 63, 169, 248, 220, 97, 31, 195, 229, 74, 177, 27, 61, 77, 171, 136, 91, 82, - 220, 194, 82, 248, 99, 188, 73, 122, 16, 71, 237, 134, 1, 196, 199, 25, 78, 137, 117, 178, 73, - 206, 207, 21, 100, 255, 225, 230, 110, 174, 195, 238, 33, 12, 156, 193, 51, 0, 240, 58, 209, - 103, 211, 116, 115, 3, 170, 100, 105, 36, 129, 157, 209, 253, 124, 53, 241, 6, 182, 23, 7, 159, - 88, 62, 158, 115, 188, 253, 2, 170, 17, 70, 168, 52, 61, 68, 51, 253, 196, 42, 0, 254, 183, - 240, 250, 12, 238, 185, 121, 26, 184, 50, 44, 34, 3, 2, 220, 217, 35, 28, 228, 108, 234, 188, - 173, 162, 148, 6, 20, 215, 109, 161, 59, 133, 175, 155, 138, 223, 67, 58, 208, 208, 57, 184, - 255, 208, 223, 253, 96, 77, 82, 94, 162, 149, 202, 120, 84, 168, 8, 120, 5, 21, 2, 228, 224, - 251, 183, 51, 241, 205, 70, 71, 174, 39, 70, 44, 98, 213, 82, 247, 7, 238, 179, 81, 161, 63, - 253, 211, 240, 78, 26, 76, 138, 88, 174, 238, 69, 131, 238, 10, 18, 9, 29, 216, 100, 199, 207, - 12, 176, 207, 8, 112, 14, 218, 7, 227, 62, 90, 189, 46, 251, 64, 37, 198, 110, 193, 8, 5, 32, - 2, 53, 177, 181, 73, 30, 205, 173, 220, 83, 85, 163, 122, 76, 72, 209, 174, 204, 185, 68, 148, - 87, 57, 211, 21, 124, 77, 1, 138, 67, 232, 204, 32, 5, 190, 49, 41, 170, 42, 123, 189, 134, 59, - 109, 96, 132, 2, 113, 248, 182, 19, 95, 37, 38, 246, 165, 169, 167, 77, 234, 132, 114, 252, - 193, 202, 32, 4, 99, 225, 118, 96, 244, 206, 204, 17, 221, 132, 21, 229, 37, 141, 247, 211, 4, - 68, 142, 191, 195, 88, 152, 220, 88, 76, 4, 197, 177, 12, 214, 32, 5, 38, 255, 173, 131, 70, - 110, 116, 26, 128, 12, 98, 202, 124, 252, 80, 65, 8, 229, 49, 246, 78, 241, 67, 60, 23, 64, - 185, 65, 39, 206, 81, 32, 4, 25, 69, 22, 53, 127, 102, 201, 107, 148, 46, 230, 100, 85, 108, - 147, 141, 9, 174, 163, 116, 96, 182, 151, 135, 10, 113, 114, 236, 245, 181, 238, 5, 6, 35, 206, - 103, 148, 205, 117, 76, 61, 12, 48, 23, 5, 242, 56, 0, 215, 228, 225, 136, 53, 59, 169, 81, 8, - 40, 155, 103, 197, 99, 235, 16, 209, 178, 57, 5, 119, 238, 168, 13, 118, 11, 238, 238, 224, - 190, 249, 62, 193, 98, 60, 71, 89, 220, 228, 201, 68, 103, 220, 150, 109, 187, 47, 224, 77, - 196, 7, 66, 181, 5, 42, 122, 97, 187, 255, 117, 22, 153, 101, 77, 11, 139, 70, 191, 8, 251, 29, - 151, 211, 11, 0, 186, 240, 214, 153, 111, 90, 88, 71, 125, 201, 195, 48, 92, 86, 191, 88, 229, - 232, 219, 36, 59, 39, 114, 20, 132, 73, 45, 70, 209, 110, 10, 29, 36, 145, 114, 251, 67, 187, - 198, 56, 212, 81, 250, 16, 79, 103, 92, 154, 98, 38, 219, 99, 170, 32, 195, 125, 84, 232, 191, - 119, 194, 156, 205, 244, 79, 241, 78, 89, 141, 126, 26, 205, 114, 67, 180, 106, 213, 33, 106, - 197, 243, 69, 119, 34, 222, 128, 69, 79, 102, 182, 187, 255, 109, 118, 158, 221, 63, 140, 221, - 181, 100, 171, 5, 133, 145, 42, 78, 125, 28, 43, 70, 42, 186, 177, 41, 99, 205, 160, 88, 110, - 62, 192, 104, 20, 151, 182, 248, 160, 121, 133, 52, 4, 160, 118, 246, 116, 92, 46, 138, 126, - 248, 114, 8, 31, 247, 96, 127, 173, 15, 249, 167, 220, 38, 136, 204, 21, 6, 121, 161, 160, 170, - 182, 226, 186, 169, 22, 163, 69, 162, 168, 54, 117, 238, 54, 206, 179, 27, 90, 253, 221, 89, - 105, 212, 143, 173, 228, 71, 158, 186, 45, 166, 56, 3, 126, 48, 100, 210, 124, 189, 23, 14, - 128, 47, 97, 219, 227, 61, 143, 51, 202, 139, 93, 234, 28, 241, 172, 82, 17, 137, 229, 105, - 116, 130, 254, 8, 172, 3, 64, 131, 41, 219, 198, 75, 234, 228, 214, 85, 172, 171, 128, 249, - 187, 230, 112, 23, 37, 20, 157, 7, 27, 41, 84, 224, 191, 3, 23, 75, 240, 27, 100, 70, 210, 195, - 4, 191, 241, 3, 182, 94, 188, 246, 181, 59, 105, 212, 62, 227, 163, 12, 135, 24, 51, 112, 25, - 199, 64, 13, 77, 147, 139, 80, 0, 92, 130, 148, 26, 17, 247, 231, 121, 216, 41, 3, 10, 252, - 187, 119, 114, 164, 108, 234, 49, 175, 234, 231, 41, 45, 30, 39, 1, 190, 145, 201, 15, 8, 22, - 55, 53, 139, 155, 53, 18, 168, 188, 29, 162, 181, 3, 207, 53, 159, 91, 89, 96, 109, 77, 124, - 29, 240, 31, 46, 218, 129, 77, 115, 141, 91, 102, 234, 124, 198, 244, 147, 73, 94, 30, 79, 130, - 91, 218, 2, 130, 225, 38, 52, 218, 233, 69, 30, 157, 212, 66, 234, 171, 133, 143, 124, 183, 11, - 235, 31, 177, 3, 204, 32, 166, 100, 39, 193, 38, 248, 52, 4, 129, 217, 9, 220, 182, 49, 251, - 39, 107, 211, 0, 245, 201, 107, 242, 143, 71, 121, 51, 249, 165, 46, 23, 128, 11, 61, 175, 105, - 39, 37, 155, 204, 121, 212, 38, 230, 164, 115, 57, 156, 245, 171, 246, 232, 129, 6, 254, 141, - 215, 29, 141, 58, 47, 66, 43, 4, 254, 39, 139, 195, 145, 92, 32, 238, 239, 240, 50, 213, 218, - 68, 133, 46, 151, 110, 52, 2, 169, 49, 135, 165, 218, 89, 49, 237, 210, 243, 2, 14, 84, 56, 39, - 228, 229, 73, 77, 195, 22, 26, 100, 255, 181, 102, 59, 30, 163, 16, 139, 27, 85, 234, 67, 146, - 230, 156, 100, 127, 246, 127, 171, 148, 223, 151, 248, 153, 169, 41, 238, 236, 5, 236, 194, - 181, 156, 241, 35, 232, 9, 159, 4, 166, 114, 64, 17, 238, 81, 45, 149, 246, 230, 19, 206, 5, - 32, 5, 11, 127, 120, 224, 216, 11, 231, 157, 196, 26, 184, 246, 76, 29, 50, 215, 189, 157, 230, - 11, 54, 160, 49, 108, 231, 52, 99, 92, 194, 102, 207, 32, 1, 214, 182, 1, 138, 8, 244, 88, 230, - 8, 201, 161, 57, 243, 99, 19, 79, 63, 229, 54, 218, 119, 91, 204, 48, 115, 27, 238, 119, 64, - 172, 118, 32, 4, 207, 122, 49, 125, 13, 117, 161, 85, 171, 186, 253, 30, 163, 122, 5, 237, 245, - 144, 169, 104, 212, 7, 140, 51, 160, 138, 148, 16, 34, 249, 195, 32, 0, 71, 172, 162, 180, 200, - 209, 207, 156, 53, 1, 127, 200, 71, 88, 190, 236, 124, 110, 38, 123, 155, 251, 231, 114, 116, - 156, 53, 89, 208, 61, 151, 32, 4, 113, 153, 32, 192, 100, 22, 16, 201, 77, 239, 20, 86, 1, 235, - 53, 150, 98, 235, 96, 18, 233, 179, 164, 25, 193, 63, 21, 122, 3, 248, 105, 5, 6, 164, 12, 33, - 111, 122, 156, 1, 168, 199, 62, 164, 37, 109, 13, 28, 3, 127, 52, 192, 217, 20, 217, 54, 30, - 87, 115, 28, 245, 103, 74, 204, 0, 33, 202, 205, 4, 20, 17, 50, 16, 132, 83, 34, 132, 92, 235, - 201, 102, 52, 188, 200, 76, 18, 228, 92, 83, 175, 155, 103, 228, 215, 118, 159, 182, 42, 16, - 72, 162, 176, 102, 176, 177, 203, 127, 144, 107, 144, 163, 132, 11, 78, 241, 164, 167, 58, 193, - 114, 216, 171, 102, 38, 70, 53, 126, 61, 191, 34, 147, 34, 168, 7, 171, 42, 57, 249, 70, 123, - 175, 213, 73, 149, 142, 114, 23, 172, 114, 124, 202, 224, 28, 255, 135, 221, 159, 60, 24, 20, - 74, 200, 160, 22, 80, 246, 8, 128, 255, 119, 25, 125, 123, 242, 124, 209, 136, 143, 121, 34, - 111, 211, 122, 132, 110, 158, 250, 151, 69, 95, 234, 251, 130, 26, 205, 114, 67, 180, 106, 213, - 33, 106, 197, 243, 69, 119, 34, 222, 128, 69, 79, 102, 182, 187, 255, 109, 118, 158, 221, 63, - 140, 221, 181, 100, 171, 5, 76, 4, 146, 12, 139, 155, 4, 69, 46, 236, 79, 234, 143, 225, 193, - 76, 161, 84, 99, 142, 60, 88, 70, 75, 192, 217, 64, 11, 133, 46, 61, 183, 94, 146, 82, 29, 91, - 253, 170, 49, 236, 176, 134, 51, 185, 95, 198, 253, 19, 65, 164, 204, 219, 223, 36, 211, 74, - 208, 80, 100, 57, 142, 168, 132, 37, 147, 49, 205, 88, 172, 2, 224, 153, 28, 130, 48, 63, 67, - 23, 141, 110, 169, 137, 140, 14, 158, 178, 115, 42, 63, 15, 138, 144, 192, 134, 183, 2, 97, - 142, 39, 229, 55, 34, 94, 78, 5, 218, 84, 0, 30, 78, 76, 82, 4, 220, 16, 244, 123, 162, 2, 206, - 104, 149, 68, 211, 41, 53, 120, 198, 75, 234, 228, 214, 85, 172, 171, 128, 249, 187, 230, 112, - 23, 37, 20, 157, 7, 27, 41, 84, 224, 191, 3, 23, 75, 240, 27, 100, 70, 210, 195, 4, 36, 147, - 74, 215, 10, 150, 175, 201, 114, 187, 212, 216, 113, 108, 70, 126, 123, 34, 249, 1, 16, 138, - 44, 152, 22, 64, 197, 6, 214, 137, 190, 124, 209, 146, 155, 107, 173, 13, 115, 125, 79, 120, - 64, 145, 109, 4, 128, 230, 136, 148, 180, 64, 244, 246, 189, 144, 211, 133, 148, 22, 165, 229, - 189, 148, 245, 16, 104, 133, 160, 196, 74, 85, 185, 148, 61, 92, 177, 127, 14, 181, 231, 188, - 46, 27, 197, 25, 218, 197, 52, 57, 15, 211, 31, 26, 193, 124, 198, 244, 147, 73, 94, 30, 79, - 130, 91, 218, 2, 130, 225, 38, 52, 218, 233, 69, 30, 157, 212, 66, 234, 171, 133, 143, 124, - 183, 11, 235, 31, 177, 3, 181, 87, 26, 195, 234, 251, 110, 37, 94, 116, 176, 226, 137, 38, 150, - 183, 154, 99, 204, 62, 251, 0, 160, 251, 54, 167, 246, 16, 125, 152, 175, 87, 96, 226, 24, 189, - 180, 160, 122, 77, 21, 164, 175, 149, 249, 178, 201, 78, 33, 211, 7, 235, 1, 46, 34, 226, 21, - 209, 136, 255, 205, 21, 88, 139, 43, 4, 254, 39, 139, 195, 145, 92, 32, 238, 239, 240, 50, 213, - 218, 68, 133, 46, 151, 110, 52, 2, 169, 49, 135, 165, 218, 89, 49, 237, 210, 243, 2, 22, 16, - 32, 133, 38, 144, 148, 13, 159, 247, 18, 246, 110, 7, 144, 92, 69, 243, 171, 15, 68, 175, 124, - 39, 1, 27, 129, 52, 118, 71, 249, 245, 148, 223, 151, 248, 153, 169, 41, 238, 236, 5, 236, 194, - 181, 156, 241, 35, 232, 9, 159, 4, 166, 114, 64, 17, 238, 81, 45, 149, 246, 230, 19, 206, 5, - 32, 0, 229, 232, 96, 40, 27, 42, 229, 74, 187, 121, 137, 94, 87, 197, 134, 9, 128, 187, 209, - 125, 112, 130, 153, 34, 103, 150, 223, 78, 208, 76, 194, 32, 1, 100, 26, 54, 125, 116, 61, 194, - 159, 148, 251, 27, 155, 109, 210, 52, 127, 174, 154, 134, 79, 0, 141, 136, 16, 13, 211, 200, - 65, 58, 146, 239, 32, 7, 6, 136, 117, 146, 55, 105, 142, 209, 136, 219, 203, 115, 223, 180, - 210, 28, 11, 196, 55, 79, 90, 201, 103, 72, 12, 59, 45, 112, 201, 24, 65, 32, 0, 7, 94, 141, - 111, 191, 0, 195, 202, 200, 119, 6, 132, 212, 134, 216, 57, 227, 2, 221, 200, 201, 178, 143, - 58, 84, 219, 80, 220, 2, 253, 92, 32, 1, 50, 62, 152, 210, 206, 241, 144, 59, 40, 86, 111, 87, - 191, 90, 95, 229, 37, 203, 207, 141, 0, 20, 107, 249, 224, 98, 219, 39, 215, 89, 68, 3, 7, 71, - 144, 201, 240, 215, 250, 18, 240, 139, 173, 118, 113, 1, 120, 216, 213, 149, 8, 143, 89, 203, - 46, 33, 53, 71, 53, 253, 178, 194, 46, 59, 100, 171, 107, 164, 145, 127, 127, 217, 45, 10, 226, - 211, 248, 68, 149, 90, 192, 188, 192, 30, 254, 73, 35, 168, 255, 180, 188, 48, 68, 197, 148, - 222, 213, 42, 119, 202, 24, 60, 23, 71, 111, 65, 143, 210, 93, 54, 41, 77, 47, 122, 249, 201, - 154, 44, 97, 221, 116, 227, 181, 225, 50, 142, 87, 197, 106, 67, 105, 202, 95, 192, 177, 11, - 247, 91, 10, 64, 41, 240, 160, 50, 16, 165, 50, 96, 148, 30, 52, 10, 84, 26, 209, 100, 142, 24, - 51, 60, 35, 69, 6, 89, 219, 68, 130, 201, 173, 86, 12, 163, 244, 36, 211, 115, 211, 9, 223, - 146, 68, 41, 67, 173, 118, 97, 81, 9, 162, 13, 100, 154, 99, 129, 111, 221, 39, 86, 255, 239, - 138, 10, 47, 174, 101, 145, 166, 252, 152, 243, 80, 232, 77, 7, 203, 91, 247, 4, 116, 31, 134, - 174, 248, 93, 33, 95, 169, 207, 128, 27, 89, 1, 160, 211, 197, 106, 105, 8, 18, 198, 172, 47, - 142, 177, 111, 50, 53, 251, 44, 163, 208, 234, 221, 23, 2, 131, 243, 7, 71, 144, 201, 240, 215, - 250, 18, 240, 139, 173, 118, 113, 1, 120, 216, 213, 149, 8, 143, 89, 203, 46, 33, 53, 71, 53, - 253, 178, 194, 46, 59, 100, 171, 107, 164, 145, 127, 127, 217, 45, 10, 226, 211, 248, 68, 149, - 90, 192, 188, 192, 30, 254, 73, 35, 168, 255, 180, 188, 48, 68, 197, 148, 222, 213, 42, 119, - 202, 24, 60, 23, 71, 111, 65, 143, 210, 93, 54, 41, 77, 47, 122, 249, 201, 154, 44, 97, 221, - 116, 227, 181, 225, 50, 142, 87, 197, 106, 67, 105, 202, 95, 192, 177, 11, 247, 91, 10, 64, 41, - 240, 160, 50, 16, 165, 50, 96, 148, 30, 52, 10, 84, 26, 209, 100, 142, 24, 51, 60, 35, 69, 6, - 89, 219, 68, 130, 201, 173, 86, 12, 163, 244, 36, 211, 115, 211, 9, 223, 146, 68, 41, 67, 173, - 118, 97, 81, 9, 162, 13, 100, 154, 99, 129, 111, 221, 39, 86, 255, 239, 138, 10, 47, 174, 101, - 145, 166, 252, 152, 243, 80, 232, 77, 7, 203, 91, 247, 4, 116, 31, 134, 174, 248, 93, 33, 95, - 169, 207, 128, 27, 89, 1, 160, 211, 197, 106, 105, 8, 18, 198, 172, 47, 142, 177, 111, 50, 53, - 251, 44, 163, 208, 234, 221, 23, 2, 131, 243, 2, 32, 0, 121, 56, 250, 191, 145, 92, 188, 216, - 190, 101, 171, 195, 113, 99, 119, 186, 15, 113, 37, 206, 159, 148, 1, 23, 162, 196, 34, 66, - 103, 235, 2, 32, 1, 185, 21, 77, 118, 124, 60, 175, 74, 130, 102, 105, 31, 124, 163, 66, 180, - 173, 28, 124, 14, 110, 11, 98, 167, 60, 140, 179, 22, 255, 254, 168, 2, 32, 7, 93, 221, 51, - 199, 202, 203, 104, 105, 110, 183, 155, 74, 106, 124, 166, 229, 248, 123, 245, 231, 137, 153, - 69, 29, 164, 232, 54, 185, 177, 144, 156, 32, 6, 92, 247, 229, 32, 239, 44, 49, 110, 136, 183, - 170, 109, 161, 234, 43, 34, 77, 148, 180, 29, 121, 194, 196, 241, 24, 8, 254, 84, 31, 188, 206, - 8, 194, 103, 122, 106, 133, 250, 174, 125, 151, 130, 221, 8, 187, 134, 62, 93, 238, 46, 68, 61, - 167, 238, 72, 165, 138, 70, 15, 221, 227, 108, 159, 211, 131, 70, 125, 230, 181, 220, 27, 253, - 58, 252, 147, 128, 189, 210, 74, 207, 212, 17, 72, 163, 85, 131, 170, 38, 103, 189, 141, 248, - 61, 249, 136, 57, 241, 119, 208, 181, 134, 105, 21, 33, 166, 131, 235, 219, 32, 129, 118, 34, - 232, 235, 114, 0, 195, 67, 28, 186, 223, 56, 179, 11, 237, 203, 61, 182, 16, 240, 189, 10, 233, - 240, 239, 118, 135, 208, 4, 191, 121, 46, 76, 28, 224, 7, 202, 70, 81, 20, 212, 158, 154, 216, - 34, 129, 208, 84, 111, 9, 55, 77, 55, 213, 97, 55, 55, 220, 12, 76, 40, 77, 61, 52, 184, 157, - 58, 168, 66, 193, 21, 82, 135, 102, 126, 82, 211, 245, 178, 95, 90, 192, 177, 115, 174, 223, - 201, 148, 203, 101, 124, 93, 251, 60, 92, 6, 129, 157, 253, 12, 39, 179, 125, 49, 33, 231, 78, - 160, 206, 9, 108, 129, 86, 213, 205, 155, 79, 131, 108, 160, 52, 154, 213, 1, 2, 193, 57, 70, - 160, 111, 191, 152, 93, 207, 46, 157, 48, 185, 149, 118, 242, 43, 120, 37, 73, 122, 229, 1, - 245, 56, 5, 205, 93, 162, 166, 145, 96, 161, 33, 161, 65, 184, 51, 169, 25, 255, 44, 212, 36, - 131, 40, 81, 24, 243, 77, 184, 160, 102, 8, 80, 73, 236, 40, 41, 138, 13, 203, 77, 220, 39, - 192, 112, 219, 4, 167, 70, 28, 67, 119, 81, 103, 37, 40, 147, 203, 205, 85, 240, 83, 155, 176, - 131, 70, 125, 230, 181, 220, 27, 253, 58, 252, 147, 128, 189, 210, 74, 207, 212, 17, 72, 163, - 85, 131, 170, 38, 103, 189, 141, 248, 61, 249, 136, 57, 241, 119, 208, 181, 134, 105, 21, 33, - 166, 131, 235, 219, 32, 129, 118, 34, 232, 235, 114, 0, 195, 67, 28, 186, 223, 56, 179, 11, - 237, 203, 61, 182, 16, 240, 189, 10, 233, 240, 239, 118, 135, 208, 4, 191, 121, 46, 76, 28, - 224, 7, 202, 70, 81, 20, 212, 158, 154, 216, 34, 129, 208, 84, 111, 9, 55, 77, 55, 213, 97, 55, - 55, 220, 12, 76, 40, 77, 61, 52, 184, 157, 58, 168, 66, 193, 21, 82, 135, 102, 126, 82, 211, - 245, 178, 95, 90, 192, 177, 115, 174, 223, 201, 148, 203, 101, 124, 93, 251, 60, 92, 6, 129, - 157, 253, 12, 39, 179, 125, 49, 33, 231, 78, 160, 206, 9, 108, 129, 86, 213, 205, 155, 79, 131, - 108, 160, 52, 154, 213, 1, 2, 193, 57, 70, 160, 111, 191, 152, 93, 207, 46, 157, 48, 185, 149, - 118, 242, 43, 120, 37, 73, 122, 229, 1, 245, 56, 5, 205, 93, 162, 166, 145, 96, 161, 33, 161, - 65, 184, 51, 169, 25, 255, 44, 212, 36, 131, 40, 81, 24, 243, 77, 184, 160, 102, 36, 32, 3, - 129, 119, 190, 233, 95, 78, 6, 164, 208, 157, 160, 250, 100, 42, 203, 176, 155, 49, 231, 195, - 75, 98, 177, 115, 153, 74, 226, 248, 25, 241, 7, 32, 6, 30, 171, 74, 37, 11, 19, 154, 170, 254, - 51, 117, 130, 110, 115, 62, 192, 170, 139, 56, 62, 57, 158, 94, 28, 100, 88, 173, 48, 170, 207, - 140, 32, 5, 20, 146, 220, 46, 138, 162, 114, 98, 139, 169, 186, 205, 89, 171, 101, 133, 249, - 107, 248, 175, 10, 75, 108, 59, 159, 233, 43, 80, 213, 109, 94, 32, 3, 98, 145, 109, 12, 196, - 173, 204, 125, 79, 154, 75, 3, 29, 114, 109, 4, 145, 157, 223, 188, 165, 15, 192, 123, 214, - 165, 253, 55, 68, 28, 81, 32, 2, 10, 123, 248, 147, 236, 105, 36, 203, 106, 196, 189, 79, 212, - 58, 99, 118, 26, 109, 22, 220, 58, 70, 105, 25, 56, 26, 154, 2, 136, 245, 131, 32, 7, 211, 194, - 187, 70, 236, 198, 225, 140, 232, 165, 89, 61, 51, 255, 74, 133, 166, 176, 129, 11, 21, 122, - 161, 83, 72, 148, 74, 11, 132, 45, 214, 32, 0, 55, 64, 185, 27, 30, 92, 171, 102, 124, 242, - 227, 150, 231, 16, 104, 44, 2, 124, 152, 92, 159, 52, 70, 171, 219, 107, 38, 84, 198, 8, 37, - 32, 4, 27, 160, 92, 141, 143, 46, 94, 51, 62, 121, 113, 203, 115, 136, 52, 22, 1, 62, 76, 46, - 79, 154, 35, 85, 237, 181, 147, 42, 99, 4, 19, 32, 3, 75, 39, 32, 29, 166, 11, 219, 98, 39, - 181, 83, 161, 195, 143, 239, 231, 232, 8, 88, 81, 117, 221, 8, 36, 251, 170, 187, 80, 31, 93, - 194, 32, 3, 6, 149, 89, 255, 239, 143, 122, 54, 188, 9, 228, 199, 26, 104, 189, 59, 237, 133, - 253, 67, 140, 226, 103, 143, 213, 180, 223, 107, 159, 236, 170, 32, 3, 60, 210, 185, 66, 121, - 78, 183, 213, 211, 116, 101, 54, 192, 162, 238, 230, 148, 228, 44, 51, 70, 109, 7, 123, 71, - 213, 240, 152, 54, 164, 65, 32, 3, 159, 58, 200, 43, 22, 119, 51, 45, 204, 247, 143, 15, 4, 98, - 94, 200, 132, 49, 204, 255, 169, 167, 158, 72, 20, 54, 106, 231, 84, 92, 52, 32, 1, 218, 176, - 67, 127, 66, 251, 233, 84, 65, 226, 188, 240, 237, 20, 202, 237, 113, 7, 46, 155, 214, 62, 226, - 28, 23, 237, 26, 102, 55, 39, 176, 32, 6, 232, 26, 234, 163, 156, 102, 112, 157, 20, 97, 94, - 108, 84, 24, 159, 81, 20, 93, 58, 189, 253, 163, 51, 224, 158, 57, 184, 122, 155, 142, 81, 32, - 4, 177, 100, 103, 40, 172, 167, 228, 151, 18, 169, 73, 242, 51, 216, 37, 133, 113, 151, 207, - 153, 76, 225, 144, 106, 83, 236, 205, 248, 59, 162, 225, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 6, 71, 147, 94, 188, 32, - 176, 254, 19, 157, 26, 137, 172, 32, 163, 155, 79, 52, 255, 175, 229, 18, 186, 113, 105, 132, - 104, 52, 163, 248, 142, 208, 32, 4, 166, 238, 8, 11, 43, 74, 210, 63, 25, 67, 189, 207, 187, - 245, 253, 52, 248, 231, 14, 189, 154, 43, 250, 35, 76, 37, 215, 135, 65, 227, 22, 32, 4, 47, - 103, 10, 197, 213, 252, 162, 42, 145, 131, 167, 96, 151, 25, 47, 48, 38, 129, 163, 167, 107, - 249, 172, 38, 253, 151, 177, 87, 200, 173, 28, 32, 7, 186, 189, 130, 192, 153, 251, 2, 33, 229, - 165, 127, 180, 249, 35, 117, 112, 33, 115, 145, 147, 172, 33, 142, 187, 170, 4, 139, 29, 224, - 160, 210, 32, 4, 28, 184, 49, 152, 3, 85, 40, 119, 139, 199, 84, 181, 196, 60, 206, 122, 105, - 218, 219, 126, 46, 144, 52, 99, 90, 200, 68, 230, 112, 50, 7, 32, 0, 143, 89, 58, 248, 81, 33, - 199, 61, 217, 53, 87, 115, 72, 77, 3, 61, 95, 207, 90, 227, 78, 127, 46, 65, 119, 75, 251, 158, - 31, 6, 8, 32, 0, 1, 96, 195, 251, 88, 10, 103, 180, 61, 142, 122, 134, 133, 249, 113, 231, 174, - 231, 255, 139, 209, 47, 182, 98, 238, 34, 83, 54, 254, 99, 49, 32, 1, 82, 59, 58, 227, 77, 153, - 24, 209, 88, 85, 186, 180, 254, 171, 109, 253, 16, 57, 88, 219, 90, 239, 17, 0, 17, 100, 240, - 220, 183, 85, 182, 32, 1, 142, 178, 105, 92, 163, 212, 56, 242, 59, 143, 191, 116, 0, 215, 124, - 174, 173, 137, 49, 254, 194, 89, 242, 69, 21, 189, 14, 89, 248, 245, 88, 32, 2, 54, 63, 177, - 227, 177, 184, 102, 42, 51, 209, 207, 67, 54, 99, 26, 65, 219, 56, 113, 205, 38, 44, 209, 138, - 155, 63, 110, 28, 200, 151, 241, 32, 7, 229, 236, 148, 234, 123, 72, 117, 113, 139, 172, 110, - 99, 178, 167, 122, 62, 13, 136, 204, 74, 10, 226, 91, 173, 138, 154, 97, 151, 123, 223, 206, - 32, 5, 85, 34, 196, 27, 77, 181, 221, 26, 73, 1, 22, 10, 80, 110, 66, 21, 49, 199, 67, 162, - 116, 49, 144, 44, 61, 99, 198, 139, 76, 135, 36, 32, 4, 200, 179, 24, 128, 240, 75, 3, 198, - 248, 102, 12, 18, 182, 96, 105, 231, 198, 74, 33, 224, 93, 145, 21, 175, 17, 1, 237, 91, 204, - 229, 171, 32, 4, 227, 19, 99, 106, 229, 101, 222, 183, 158, 106, 45, 38, 55, 145, 83, 24, 92, - 146, 26, 59, 11, 30, 30, 92, 238, 22, 85, 224, 224, 21, 141, 32, 5, 161, 95, 191, 179, 148, 84, - 11, 254, 155, 247, 34, 140, 107, 99, 2, 47, 150, 238, 214, 74, 231, 255, 38, 86, 141, 136, 194, - 251, 152, 182, 131, 32, 5, 102, 212, 36, 93, 231, 48, 242, 148, 77, 217, 10, 122, 125, 133, - 208, 97, 3, 54, 255, 252, 0, 28, 14, 96, 187, 107, 212, 242, 23, 182, 175, 32, 7, 155, 119, - 145, 237, 64, 119, 216, 95, 27, 96, 211, 100, 166, 152, 172, 113, 70, 11, 18, 181, 196, 177, - 34, 236, 37, 32, 167, 27, 170, 157, 230, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 7, 255, 255, 255, 254, 239, 253, 240, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 239, 255, 225, 36, 32, 3, 199, 206, 107, 71, 236, 106, 177, 255, 227, 253, 123, 135, - 103, 188, 215, 62, 209, 46, 59, 208, 236, 108, 98, 191, 187, 157, 98, 142, 102, 121, 68, 32, 6, - 79, 95, 173, 160, 177, 131, 243, 161, 131, 164, 120, 178, 230, 68, 12, 56, 5, 13, 48, 171, 116, - 183, 133, 250, 53, 60, 106, 41, 207, 159, 70, 32, 3, 133, 132, 119, 163, 155, 63, 179, 68, 227, - 9, 34, 105, 250, 219, 126, 152, 35, 54, 6, 188, 215, 173, 99, 99, 246, 139, 178, 182, 111, 81, - 89, 32, 3, 16, 73, 63, 92, 193, 214, 229, 171, 227, 122, 234, 245, 100, 209, 126, 146, 63, 98, - 124, 212, 85, 39, 132, 238, 183, 145, 147, 71, 220, 109, 4, 32, 3, 194, 163, 50, 173, 39, 36, - 9, 15, 158, 149, 55, 207, 227, 100, 8, 83, 61, 204, 168, 66, 179, 54, 162, 168, 108, 22, 76, - 96, 202, 181, 204, 32, 2, 89, 76, 2, 204, 217, 35, 122, 196, 176, 124, 127, 210, 89, 82, 251, - 217, 83, 3, 112, 210, 231, 167, 157, 230, 105, 113, 233, 134, 228, 23, 85, 32, 3, 30, 155, 129, - 254, 166, 255, 133, 144, 179, 238, 60, 171, 69, 71, 87, 43, 120, 24, 0, 133, 178, 36, 127, 188, - 104, 76, 223, 203, 230, 99, 170, 32, 1, 143, 77, 192, 255, 83, 127, 194, 200, 89, 247, 30, 85, - 162, 163, 171, 149, 188, 12, 0, 66, 217, 18, 63, 222, 52, 38, 111, 229, 243, 49, 213, 32, 2, - 172, 109, 220, 174, 129, 204, 2, 220, 164, 38, 94, 136, 55, 130, 146, 75, 17, 206, 218, 3, 102, - 105, 224, 101, 153, 229, 87, 246, 68, 221, 135, 32, 1, 149, 198, 58, 96, 9, 49, 126, 79, 110, - 13, 207, 32, 134, 103, 226, 155, 88, 36, 213, 112, 46, 32, 203, 202, 12, 4, 107, 213, 240, 153, - 108, 32, 6, 193, 52, 80, 237, 249, 242, 12, 225, 6, 202, 166, 240, 255, 170, 218, 37, 43, 77, - 92, 142, 72, 136, 146, 178, 206, 145, 59, 149, 98, 224, 13, 32, 3, 83, 150, 131, 170, 224, 26, - 20, 11, 16, 234, 249, 188, 157, 51, 86, 97, 143, 44, 30, 124, 95, 47, 52, 177, 91, 85, 243, - 131, 66, 78, 105, 32, 1, 149, 172, 10, 54, 235, 79, 163, 113, 233, 57, 53, 160, 204, 17, 63, - 219, 80, 112, 152, 37, 92, 157, 224, 143, 148, 148, 85, 62, 136, 248, 71, 32, 4, 109, 1, 100, - 72, 51, 43, 48, 196, 211, 101, 180, 191, 222, 79, 39, 113, 135, 136, 221, 171, 144, 253, 79, - 224, 238, 92, 172, 253, 188, 250, 126, 32, 0, 27, 71, 174, 82, 241, 161, 177, 90, 224, 221, - 169, 189, 85, 88, 80, 56, 247, 141, 72, 183, 194, 95, 104, 102, 247, 0, 118, 130, 41, 193, 219, - 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 4, 82, 54, 7, 49, 101, 106, 214, 102, 1, 233, 244, 193, 93, 130, 32, 168, 188, 230, - 188, 102, 61, 93, 127, 170, 101, 59, 128, 142, 1, 166, 157, 32, 5, 22, 159, 20, 167, 73, 185, - 156, 152, 182, 115, 119, 33, 171, 4, 130, 136, 241, 249, 169, 27, 145, 189, 187, 225, 208, 142, - 201, 30, 217, 49, 142, 32, 1, 216, 131, 104, 255, 119, 205, 58, 40, 87, 24, 234, 123, 77, 230, - 124, 147, 18, 242, 223, 147, 224, 14, 78, 131, 214, 46, 209, 231, 96, 118, 128, 32, 6, 14, 2, - 93, 58, 182, 69, 1, 144, 4, 105, 104, 4, 165, 212, 174, 81, 110, 147, 28, 86, 3, 222, 22, 192, - 82, 65, 67, 142, 232, 202, 154, 32, 0, 29, 182, 99, 6, 235, 18, 171, 131, 144, 6, 40, 124, 61, - 43, 49, 232, 111, 44, 32, 9, 31, 137, 242, 110, 97, 17, 83, 106, 154, 215, 208, 32, 3, 235, - 152, 197, 209, 31, 116, 249, 67, 15, 152, 183, 253, 89, 66, 168, 244, 218, 238, 163, 71, 220, - 170, 229, 51, 105, 118, 51, 218, 30, 54, 126, 32, 3, 85, 95, 59, 189, 104, 31, 126, 237, 244, - 220, 58, 232, 85, 74, 3, 57, 252, 91, 195, 83, 196, 252, 25, 226, 26, 141, 71, 67, 177, 5, 6, - 32, 0, 46, 64, 74, 73, 217, 110, 9, 7, 230, 209, 80, 169, 79, 124, 10, 37, 62, 144, 81, 146, - 215, 48, 78, 42, 83, 60, 74, 132, 253, 137, 146, 32, 5, 0, 131, 147, 109, 164, 234, 81, 154, - 201, 228, 8, 110, 246, 226, 165, 245, 22, 162, 158, 87, 9, 197, 77, 179, 233, 77, 181, 211, - 242, 158, 42, 32, 6, 224, 18, 1, 92, 0, 105, 103, 2, 32, 249, 162, 231, 161, 253, 97, 76, 1, - 125, 180, 142, 51, 60, 18, 236, 206, 224, 84, 246, 57, 248, 19, 32, 7, 190, 69, 246, 70, 79, - 127, 166, 210, 157, 182, 194, 131, 128, 118, 120, 81, 24, 111, 209, 9, 32, 207, 178, 229, 124, - 201, 148, 246, 246, 142, 205, 32, 4, 134, 186, 120, 56, 3, 243, 134, 229, 174, 74, 246, 217, - 210, 192, 228, 1, 148, 39, 70, 28, 154, 56, 232, 132, 11, 232, 154, 249, 112, 55, 217, 32, 7, - 56, 41, 190, 58, 231, 12, 246, 237, 190, 195, 110, 213, 75, 31, 17, 222, 134, 100, 120, 71, 69, - 72, 1, 230, 15, 217, 66, 4, 248, 16, 124, 32, 5, 188, 38, 77, 159, 63, 83, 169, 219, 60, 152, - 18, 161, 242, 114, 61, 130, 47, 11, 179, 82, 207, 98, 10, 144, 216, 130, 239, 83, 193, 199, - 178, 32, 7, 132, 124, 61, 241, 128, 83, 243, 79, 248, 74, 43, 81, 202, 182, 233, 133, 100, 14, - 57, 111, 26, 126, 150, 64, 165, 234, 134, 181, 34, 55, 165, 32, 3, 31, 73, 229, 68, 144, 202, - 228, 21, 130, 252, 252, 27, 80, 25, 50, 89, 42, 169, 99, 161, 108, 162, 154, 112, 242, 72, 137, - 122, 241, 112, 17, 32, 4, 243, 143, 69, 72, 200, 7, 170, 13, 200, 59, 116, 20, 205, 217, 246, - 128, 202, 68, 44, 142, 204, 203, 42, 76, 164, 238, 72, 153, 122, 75, 246, 32, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 7, 255, - 255, 255, 254, 239, 253, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 239, 255, 225, 1, 8, 237, 179, 98, 88, 233, 51, 210, 6, - 167, 130, 93, 55, 232, 127, 156, 91, 76, 239, 68, 134, 208, 25, 99, 61, 106, 114, 100, 100, - 202, 115, 37, 44, 218, 2, 186, 144, 37, 166, 153, 158, 219, 68, 61, 12, 200, 233, 21, 123, 232, - 231, 149, 163, 253, 55, 215, 25, 161, 141, 13, 65, 220, 15, 139, 189, 37, 60, 56, 238, 45, 238, - 233, 34, 144, 42, 54, 124, 105, 102, 152, 94, 136, 247, 211, 162, 165, 228, 46, 138, 68, 134, - 151, 182, 34, 159, 199, 90, 226, 219, 154, 242, 175, 197, 229, 250, 42, 205, 231, 1, 122, 176, - 198, 108, 147, 169, 190, 77, 175, 107, 114, 43, 235, 227, 197, 214, 26, 158, 224, 83, 185, 9, - 104, 243, 92, 148, 83, 190, 60, 176, 106, 175, 140, 147, 73, 101, 237, 188, 108, 19, 65, 116, - 145, 149, 253, 252, 105, 5, 138, 211, 73, 79, 204, 232, 61, 172, 180, 83, 99, 114, 24, 173, - 181, 9, 249, 66, 244, 243, 28, 6, 22, 9, 93, 177, 36, 120, 20, 204, 68, 64, 7, 53, 234, 171, - 124, 38, 37, 149, 112, 6, 12, 208, 212, 253, 153, 162, 216, 88, 168, 5, 228, 76, 95, 190, 212, - 22, 65, 3, 76, 99, 63, 137, 25, 155, 214, 236, 74, 55, 153, 234, 37, 81, 232, 1, 225, 172, 216, - 197, 57, 78, 49, 214, 188, 52, 42, 124, 251, 8, 13, 109, 160, 212, 245, 228, 41, 239, 40, 109, - 8, 146, 194, 27, 204, 132, 238, 53, 16, 202, 207, 17, 239, 164, 33, 229, 252, 20, 224, 104, - 164, 17, 183, 14, 67, 59, 128, 223, 116, 189, 121, 132, 18, 218, 2, 186, 144, 37, 166, 153, - 158, 219, 68, 61, 12, 200, 233, 21, 123, 232, 231, 149, 163, 253, 55, 215, 25, 161, 141, 13, - 65, 220, 15, 139, 189, 37, 60, 56, 238, 45, 238, 233, 34, 144, 42, 54, 124, 105, 102, 152, 94, - 136, 247, 211, 162, 165, 228, 46, 138, 68, 134, 151, 182, 34, 159, 199, 90, 226, 219, 154, 242, - 175, 197, 229, 250, 42, 205, 231, 1, 122, 176, 198, 108, 147, 169, 190, 77, 175, 107, 114, 43, - 235, 227, 197, 214, 26, 158, 224, 83, 185, 9, 104, 243, 92, 148, 83, 190, 60, 176, 106, 175, - 140, 147, 73, 101, 237, 188, 108, 19, 65, 116, 145, 149, 253, 252, 105, 5, 138, 211, 73, 79, - 204, 232, 61, 172, 180, 83, 99, 114, 24, 173, 181, 9, 249, 66, 244, 243, 28, 6, 22, 9, 93, 177, - 36, 120, 20, 204, 68, 64, 7, 53, 234, 171, 124, 38, 37, 149, 112, 6, 12, 208, 212, 253, 153, - 162, 216, 88, 168, 5, 228, 76, 95, 190, 212, 22, 65, 3, 76, 99, 63, 137, 25, 155, 214, 236, 74, - 55, 153, 234, 37, 81, 232, 1, 225, 172, 216, 197, 57, 78, 49, 214, 188, 52, 42, 124, 251, 8, - 13, 109, 160, 212, 245, 228, 41, 239, 40, 109, 23, 32, 2, 17, 191, 13, 65, 119, 85, 249, 17, - 92, 237, 204, 127, 184, 15, 49, 197, 226, 130, 126, 99, 36, 96, 197, 179, 187, 31, 31, 233, - 160, 68, 241, 32, 7, 206, 4, 40, 55, 114, 159, 241, 252, 234, 135, 168, 67, 180, 39, 1, 141, - 115, 86, 91, 161, 177, 119, 16, 209, 235, 177, 203, 87, 86, 251, 228, 32, 7, 206, 4, 40, 55, - 114, 159, 241, 252, 234, 135, 168, 67, 180, 39, 1, 141, 115, 86, 91, 161, 177, 119, 16, 209, - 235, 177, 203, 87, 86, 251, 228, 32, 7, 206, 4, 40, 55, 114, 159, 241, 252, 234, 135, 168, 67, - 180, 39, 1, 141, 115, 86, 91, 161, 177, 119, 16, 209, 235, 177, 203, 87, 86, 251, 228, 32, 5, - 126, 4, 169, 71, 226, 140, 162, 112, 243, 69, 253, 126, 213, 128, 226, 16, 138, 133, 74, 70, - 108, 227, 47, 153, 174, 224, 203, 12, 147, 52, 200, 32, 6, 193, 153, 141, 245, 54, 105, 175, - 163, 190, 14, 56, 253, 228, 176, 47, 69, 123, 172, 229, 19, 43, 113, 9, 64, 97, 146, 143, 28, - 203, 68, 10, 32, 0, 122, 157, 210, 13, 110, 158, 52, 190, 198, 246, 219, 175, 7, 178, 97, 22, - 253, 39, 96, 202, 39, 176, 47, 88, 122, 181, 4, 80, 217, 224, 135, 32, 2, 1, 65, 165, 19, 156, - 3, 194, 188, 84, 56, 251, 199, 184, 63, 212, 35, 203, 230, 255, 53, 40, 165, 222, 102, 153, - 115, 131, 114, 111, 166, 151, 32, 3, 213, 7, 129, 95, 200, 126, 66, 11, 191, 185, 128, 148, 80, - 66, 169, 92, 172, 239, 52, 14, 53, 250, 103, 91, 190, 3, 234, 137, 149, 105, 144, 32, 3, 43, - 147, 169, 240, 19, 141, 49, 203, 199, 89, 254, 62, 221, 82, 120, 12, 34, 18, 249, 33, 53, 55, - 248, 38, 98, 227, 188, 150, 92, 244, 204, 32, 7, 27, 152, 244, 181, 72, 109, 103, 173, 57, 198, - 123, 161, 69, 99, 86, 52, 64, 81, 176, 204, 94, 127, 95, 69, 136, 164, 152, 230, 3, 174, 14, - 32, 3, 247, 63, 85, 225, 79, 59, 246, 5, 110, 6, 58, 2, 194, 174, 172, 211, 221, 136, 206, 6, - 136, 213, 91, 112, 25, 229, 153, 20, 36, 168, 27, 32, 6, 131, 91, 36, 183, 36, 123, 45, 244, - 20, 248, 176, 94, 105, 52, 114, 33, 67, 143, 103, 160, 49, 228, 190, 75, 52, 26, 237, 192, 77, - 15, 46, 32, 2, 168, 103, 36, 140, 83, 102, 213, 43, 88, 27, 226, 198, 236, 195, 184, 25, 176, - 119, 124, 140, 173, 36, 73, 154, 193, 159, 230, 137, 186, 29, 71, 32, 7, 168, 168, 94, 122, - 106, 150, 128, 222, 47, 144, 21, 246, 173, 13, 236, 165, 178, 44, 71, 216, 199, 138, 141, 122, - 226, 164, 156, 123, 246, 17, 134, 32, 5, 9, 164, 60, 239, 241, 202, 222, 129, 1, 170, 58, 6, - 68, 66, 5, 242, 35, 239, 58, 230, 242, 157, 55, 32, 42, 0, 5, 43, 3, 101, 213, 32, 4, 51, 23, - 189, 56, 46, 233, 132, 3, 173, 9, 115, 191, 198, 227, 211, 90, 195, 182, 222, 243, 230, 167, - 143, 52, 49, 35, 53, 200, 207, 120, 99, 32, 0, 251, 241, 177, 6, 220, 102, 123, 6, 27, 124, 19, - 183, 66, 27, 37, 6, 216, 64, 143, 188, 82, 19, 147, 145, 80, 221, 202, 191, 60, 91, 86, 32, 0, - 214, 134, 34, 147, 200, 13, 138, 217, 65, 115, 234, 191, 204, 190, 82, 70, 202, 191, 80, 101, - 118, 51, 178, 192, 62, 242, 200, 56, 54, 192, 9, 32, 1, 110, 27, 195, 98, 170, 43, 59, 217, - 232, 98, 32, 22, 139, 57, 70, 169, 63, 110, 250, 22, 236, 155, 154, 100, 47, 198, 140, 235, - 204, 111, 217, 32, 3, 75, 35, 91, 24, 169, 136, 139, 155, 133, 24, 28, 191, 73, 57, 143, 9, - 241, 206, 251, 36, 93, 85, 135, 152, 143, 37, 92, 177, 223, 15, 184, 32, 0, 250, 132, 115, 105, - 253, 239, 192, 45, 73, 230, 199, 246, 175, 224, 180, 183, 37, 138, 177, 98, 51, 90, 49, 103, - 207, 76, 68, 99, 22, 187, 176, 32, 3, 201, 205, 13, 7, 146, 33, 137, 199, 197, 4, 205, 247, 22, - 234, 67, 160, 44, 65, 218, 237, 87, 174, 145, 11, 246, 234, 123, 215, 163, 253, 153, 23, 32, 7, - 40, 186, 42, 229, 144, 128, 104, 28, 141, 143, 69, 147, 62, 158, 76, 84, 172, 75, 247, 6, 108, - 67, 166, 2, 173, 252, 132, 4, 108, 124, 8, 32, 7, 83, 140, 31, 122, 3, 69, 159, 7, 232, 129, - 164, 132, 12, 48, 240, 50, 12, 148, 235, 148, 110, 234, 156, 238, 71, 230, 119, 211, 1, 228, - 27, 32, 7, 83, 140, 31, 122, 3, 69, 159, 7, 232, 129, 164, 132, 12, 48, 240, 50, 12, 148, 235, - 148, 110, 234, 156, 238, 71, 230, 119, 211, 1, 228, 27, 32, 7, 83, 140, 31, 122, 3, 69, 159, 7, - 232, 129, 164, 132, 12, 48, 240, 50, 12, 148, 235, 148, 110, 234, 156, 238, 71, 230, 119, 211, - 1, 228, 27, 32, 6, 81, 4, 5, 187, 206, 59, 110, 65, 84, 150, 241, 236, 179, 248, 177, 175, 111, - 158, 196, 105, 92, 71, 203, 232, 52, 75, 138, 69, 207, 241, 248, 32, 2, 128, 65, 140, 233, 102, - 199, 198, 75, 33, 0, 137, 159, 117, 51, 62, 172, 159, 215, 245, 74, 173, 55, 140, 15, 213, 196, - 132, 85, 135, 141, 98, 32, 0, 79, 210, 136, 54, 105, 220, 119, 179, 48, 57, 215, 193, 250, 145, - 108, 224, 19, 203, 205, 248, 52, 89, 144, 152, 17, 12, 251, 207, 67, 78, 64, 32, 4, 68, 211, - 92, 201, 60, 140, 253, 162, 89, 86, 1, 183, 232, 242, 134, 180, 46, 79, 222, 180, 52, 206, 84, - 243, 126, 55, 22, 133, 20, 72, 199, 32, 6, 186, 118, 199, 147, 149, 206, 181, 154, 137, 217, - 96, 17, 196, 58, 155, 244, 155, 82, 24, 143, 113, 126, 35, 144, 132, 72, 183, 54, 130, 16, 139, - 32, 2, 82, 36, 138, 153, 216, 233, 108, 58, 21, 22, 112, 231, 100, 131, 225, 204, 114, 67, 87, - 249, 103, 22, 219, 175, 183, 229, 88, 61, 185, 173, 141, 32, 6, 50, 107, 206, 160, 16, 163, - 226, 125, 10, 148, 73, 7, 46, 253, 201, 6, 236, 13, 218, 23, 224, 219, 131, 165, 46, 231, 93, - 204, 232, 50, 131, 32, 0, 239, 92, 91, 87, 138, 39, 92, 122, 130, 163, 126, 38, 34, 40, 255, - 69, 139, 139, 45, 213, 190, 8, 87, 196, 235, 249, 168, 78, 37, 250, 199, 32, 5, 120, 113, 181, - 132, 210, 218, 53, 230, 246, 181, 76, 26, 15, 74, 72, 106, 31, 116, 173, 140, 91, 219, 183, 32, - 187, 142, 89, 110, 132, 88, 129, 32, 7, 155, 198, 105, 157, 249, 47, 37, 44, 97, 123, 71, 251, - 65, 204, 111, 111, 14, 173, 217, 223, 153, 105, 223, 201, 210, 231, 85, 189, 135, 196, 0, 32, - 6, 200, 219, 128, 22, 203, 43, 126, 142, 87, 15, 86, 37, 243, 106, 43, 56, 156, 131, 15, 81, - 72, 66, 124, 77, 59, 157, 7, 42, 60, 244, 124, 32, 6, 181, 126, 106, 82, 115, 69, 76, 107, 51, - 167, 68, 162, 210, 117, 215, 89, 58, 243, 130, 155, 21, 234, 183, 250, 129, 155, 85, 155, 108, - 151, 140, 32, 0, 166, 82, 192, 45, 78, 203, 142, 155, 201, 20, 171, 193, 107, 184, 156, 89, 2, - 19, 198, 85, 209, 81, 76, 180, 82, 156, 58, 224, 52, 205, 221, 32, 1, 196, 61, 126, 137, 240, - 148, 9, 9, 253, 171, 13, 92, 127, 29, 56, 205, 152, 45, 138, 62, 254, 193, 238, 205, 70, 57, - 121, 179, 242, 138, 251, 32, 4, 75, 100, 121, 255, 134, 223, 225, 177, 159, 210, 35, 241, 156, - 130, 95, 120, 173, 124, 47, 177, 97, 224, 57, 23, 25, 165, 108, 57, 1, 155, 35, 32, 7, 171, 44, - 251, 194, 49, 135, 254, 79, 91, 67, 109, 186, 188, 59, 243, 55, 145, 223, 165, 19, 66, 57, 205, - 129, 32, 175, 119, 209, 167, 220, 183, 32, 5, 212, 43, 29, 105, 249, 35, 186, 54, 219, 114, 24, - 170, 94, 3, 224, 223, 145, 70, 62, 32, 101, 203, 15, 120, 138, 130, 73, 207, 197, 29, 83, 32, - 3, 31, 248, 59, 171, 202, 243, 209, 210, 123, 161, 240, 53, 28, 192, 168, 254, 69, 157, 162, - 74, 58, 196, 12, 171, 253, 192, 65, 67, 179, 176, 37, 32, 2, 180, 24, 98, 175, 164, 83, 76, - 108, 48, 87, 254, 102, 209, 34, 235, 189, 202, 219, 31, 1, 250, 240, 170, 135, 21, 82, 2, 124, - 240, 29, 223, 7, 192, 156, 247, 205, 120, 212, 60, 245, 215, 170, 209, 61, 234, 57, 186, 21, 3, - 201, 140, 27, 79, 94, 235, 24, 172, 136, 92, 51, 137, 84, 9, 162, 91, 13, 118, 116, 9, 129, 94, - 37, 189, 55, 94, 221, 169, 97, 203, 178, 72, 137, 43, 10, 37, 137, 39, 19, 214, 251, 44, 76, - 119, 4, 28, 219, 57, 31, 20, 137, 195, 106, 191, 245, 220, 79, 189, 93, 101, 69, 139, 76, 115, - 50, 176, 17, 248, 92, 90, 164, 247, 161, 171, 5, 122, 189, 196, 196, 66, 244, 153, 153, 71, - 115, 77, 64, 170, 99, 107, 104, 247, 203, 194, 73, 39, 223, 114, 133, 173, 168, 188, 208, 144, - 230, 249, 24, 120, 52, 18, 144, 188, 164, 84, 194, 241, 223, 113, 165, 231, 181, 152, 254, 41, - 240, 73, 64, 234, 214, 216, 171, 198, 249, 179, 124, 117, 181, 227, 21, 88, 139, 201, 99, 94, - 182, 137, 64, 49, 209, 57, 79, 45, 174, 180, 237, 177, 0, 192, 84, 117, 162, 245, 229, 181, - 108, 139, 243, 210, 255, 152, 33, 0, 94, 234, 148, 90, 146, 42, 221, 95, 80, 55, 238, 93, 29, - 130, 15, 78, 32, 160, 44, 76, 21, 121, 200, 67, 65, 126, 167, 75, 214, 73, 208, 141, 214, 158, - 78, 7, 192, 156, 247, 205, 120, 212, 60, 245, 215, 170, 209, 61, 234, 57, 186, 21, 3, 201, 140, - 27, 79, 94, 235, 24, 172, 136, 92, 51, 137, 84, 9, 162, 91, 13, 118, 116, 9, 129, 94, 37, 189, - 55, 94, 221, 169, 97, 203, 178, 72, 137, 43, 10, 37, 137, 39, 19, 214, 251, 44, 76, 119, 4, 28, - 219, 57, 31, 20, 137, 195, 106, 191, 245, 220, 79, 189, 93, 101, 69, 139, 76, 115, 50, 176, 17, - 248, 92, 90, 164, 247, 161, 171, 5, 122, 189, 196, 196, 66, 244, 153, 153, 71, 115, 77, 64, - 170, 99, 107, 104, 247, 203, 194, 73, 39, 223, 114, 133, 173, 168, 188, 208, 144, 230, 249, 24, - 120, 52, 18, 144, 188, 164, 84, 194, 241, 223, 113, 165, 231, 181, 152, 254, 41, 240, 73, 64, - 234, 214, 216, 171, 198, 249, 179, 124, 117, 181, 227, 21, 88, 139, 201, 99, 94, 182, 137, 64, - 49, 209, 57, 79, 45, 174, 180, 237, 177, 0, 192, 84, 117, 162, 245, 229, 181, 108, 139, 243, - 210, 255, 152, 33, 0, 94, 234, 148, 90, 146, 42, 221, 95, 80, 55, 238, 93, 29, 130, 15, 78, 32, - 160, 44, 76, 21, 121, 200, 67, 65, 126, 167, 75, 214, 73, 208, 141, 214, 158, 78, 2, 32, 7, 73, - 235, 9, 96, 20, 1, 215, 159, 45, 71, 249, 155, 149, 166, 224, 99, 74, 236, 37, 102, 72, 166, - 58, 55, 21, 85, 217, 244, 243, 72, 75, 32, 1, 13, 36, 205, 80, 43, 186, 90, 203, 147, 164, 116, - 81, 229, 76, 201, 109, 212, 114, 48, 146, 182, 200, 118, 87, 75, 161, 243, 178, 37, 82, 101, 2, - 32, 6, 9, 177, 156, 115, 142, 155, 161, 253, 247, 214, 243, 170, 39, 98, 33, 204, 207, 94, 91, - 84, 148, 82, 246, 133, 44, 70, 182, 42, 226, 140, 51, 32, 6, 167, 188, 136, 203, 46, 86, 45, - 139, 104, 250, 207, 142, 220, 121, 120, 13, 77, 141, 173, 142, 98, 192, 211, 104, 115, 136, 43, - 207, 116, 81, 241, 8, 44, 69, 185, 80, 55, 3, 222, 29, 34, 112, 141, 158, 251, 32, 144, 58, - 236, 247, 40, 69, 163, 108, 139, 175, 154, 118, 150, 145, 155, 186, 129, 74, 156, 34, 239, 170, - 195, 232, 217, 4, 82, 144, 237, 128, 36, 75, 172, 149, 49, 83, 164, 176, 123, 255, 208, 155, - 144, 249, 250, 146, 255, 221, 62, 114, 94, 108, 213, 105, 135, 23, 255, 209, 119, 48, 26, 243, - 196, 116, 100, 241, 131, 127, 39, 175, 8, 157, 247, 51, 21, 63, 74, 243, 121, 94, 98, 189, 204, - 198, 43, 185, 179, 198, 237, 189, 24, 32, 140, 222, 145, 236, 159, 0, 98, 215, 209, 124, 33, - 167, 49, 213, 50, 139, 220, 60, 210, 221, 125, 168, 113, 133, 214, 212, 35, 65, 15, 46, 66, - 236, 230, 143, 236, 201, 133, 220, 194, 11, 113, 221, 162, 252, 140, 61, 144, 114, 7, 147, 163, - 59, 168, 74, 91, 20, 121, 18, 62, 47, 39, 126, 212, 24, 254, 178, 85, 161, 200, 242, 152, 12, - 170, 188, 64, 83, 185, 115, 79, 110, 157, 110, 36, 70, 237, 105, 66, 144, 121, 111, 142, 106, - 110, 205, 82, 243, 51, 105, 97, 181, 211, 187, 170, 237, 19, 228, 114, 218, 82, 26, 79, 205, - 42, 79, 159, 194, 210, 203, 252, 89, 141, 6, 13, 139, 105, 158, 82, 26, 166, 148, 184, 91, 40, - 185, 45, 214, 150, 78, 230, 134, 109, 250, 24, 78, 249, 49, 197, 186, 141, 6, 8, 146, 74, 18, - 85, 100, 13, 160, 41, 134, 108, 126, 43, 243, 252, 80, 45, 42, 32, 73, 154, 141, 94, 93, 87, - 230, 56, 40, 29, 54, 181, 100, 203, 156, 34, 239, 170, 195, 232, 217, 4, 82, 144, 237, 128, 36, - 75, 172, 149, 49, 83, 164, 176, 123, 255, 208, 155, 144, 249, 250, 146, 255, 221, 62, 114, 94, - 108, 213, 105, 135, 23, 255, 209, 119, 48, 26, 243, 196, 116, 100, 241, 131, 127, 39, 175, 8, - 157, 247, 51, 21, 63, 74, 243, 121, 94, 98, 189, 204, 198, 43, 185, 179, 198, 237, 189, 24, 32, - 140, 222, 145, 236, 159, 0, 98, 215, 209, 124, 33, 167, 49, 213, 50, 139, 220, 60, 210, 221, - 125, 168, 113, 133, 214, 212, 35, 65, 15, 46, 66, 236, 230, 143, 236, 201, 133, 220, 194, 11, - 113, 221, 162, 252, 140, 61, 144, 114, 7, 147, 163, 59, 168, 74, 91, 20, 121, 18, 62, 47, 39, - 126, 212, 24, 254, 178, 85, 161, 200, 242, 152, 12, 170, 188, 64, 83, 185, 115, 79, 110, 157, - 110, 36, 70, 237, 105, 66, 144, 121, 111, 142, 106, 110, 205, 82, 243, 51, 105, 97, 181, 211, - 187, 170, 237, 19, 228, 114, 218, 82, 26, 79, 205, 42, 79, 159, 194, 210, 203, 252, 89, 141, 6, - 13, 139, 105, 158, 82, 26, 166, 148, 184, 91, 40, 185, 45, 214, 150, 78, 230, 134, 109, 250, - 24, 78, 249, 49, 197, 186, 141, 6, 36, 32, 5, 67, 65, 187, 226, 147, 101, 55, 58, 16, 241, 10, - 222, 30, 122, 37, 116, 98, 22, 42, 33, 141, 241, 197, 84, 85, 235, 89, 96, 51, 5, 148, 32, 7, - 57, 166, 250, 191, 201, 145, 30, 36, 33, 78, 36, 110, 97, 41, 23, 14, 208, 158, 12, 171, 238, - 42, 24, 91, 244, 153, 174, 242, 29, 141, 238, 32, 3, 16, 204, 119, 247, 145, 22, 195, 161, 228, - 105, 160, 17, 110, 233, 99, 231, 165, 51, 57, 130, 189, 131, 150, 20, 207, 140, 114, 217, 190, - 119, 155, 32, 1, 84, 54, 105, 1, 55, 44, 91, 134, 14, 245, 124, 185, 191, 101, 16, 224, 223, - 52, 105, 164, 87, 116, 234, 252, 114, 221, 170, 210, 119, 197, 160, 32, 2, 121, 230, 186, 66, - 142, 126, 114, 149, 48, 233, 26, 133, 252, 126, 117, 215, 180, 161, 174, 109, 20, 244, 214, - 208, 85, 76, 221, 212, 76, 95, 87, 32, 7, 161, 87, 170, 89, 229, 183, 27, 195, 82, 69, 132, - 104, 217, 130, 238, 151, 136, 174, 144, 184, 168, 140, 234, 36, 3, 176, 245, 25, 125, 41, 99, - 32, 0, 88, 67, 92, 71, 241, 32, 23, 38, 147, 66, 114, 209, 11, 251, 35, 112, 6, 86, 246, 23, - 45, 18, 208, 40, 24, 7, 103, 142, 243, 208, 70, 32, 0, 44, 33, 174, 35, 248, 144, 11, 147, 73, - 161, 57, 104, 133, 253, 145, 184, 3, 43, 123, 11, 150, 137, 104, 20, 12, 3, 179, 199, 121, 232, - 35, 32, 0, 190, 153, 0, 87, 9, 24, 136, 55, 141, 84, 141, 190, 137, 98, 86, 14, 167, 124, 221, - 20, 103, 195, 105, 147, 214, 11, 57, 232, 95, 60, 79, 32, 7, 2, 75, 27, 144, 45, 141, 18, 17, - 197, 29, 209, 193, 41, 103, 212, 203, 69, 251, 58, 229, 64, 68, 251, 196, 233, 158, 44, 7, 57, - 77, 100, 32, 3, 206, 150, 159, 110, 197, 166, 239, 109, 88, 196, 252, 96, 243, 114, 21, 183, - 251, 127, 145, 101, 84, 97, 22, 11, 151, 10, 216, 49, 162, 201, 213, 32, 3, 114, 96, 155, 157, - 209, 179, 39, 101, 148, 71, 255, 233, 3, 119, 212, 135, 111, 200, 173, 68, 173, 210, 162, 34, - 207, 12, 33, 180, 115, 164, 222, 32, 5, 102, 58, 97, 209, 193, 218, 107, 34, 46, 13, 224, 179, - 255, 212, 219, 152, 247, 162, 11, 146, 32, 247, 155, 254, 13, 124, 237, 185, 121, 20, 46, 32, - 3, 63, 36, 54, 81, 52, 160, 17, 1, 67, 68, 98, 127, 193, 149, 149, 108, 62, 236, 210, 156, 74, - 13, 68, 24, 49, 126, 219, 124, 12, 217, 131, 32, 2, 72, 26, 68, 109, 167, 32, 138, 238, 138, - 38, 34, 74, 39, 46, 87, 232, 197, 93, 136, 220, 193, 133, 87, 149, 232, 200, 205, 194, 168, - 180, 255, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 32, 6, 157, 51, 20, 126, 24, 171, 219, 83, 113, 176, 134, 159, 213, 92, 150, - 133, 67, 235, 2, 44, 141, 134, 94, 252, 183, 45, 81, 178, 193, 187, 88, 32, 7, 39, 244, 27, - 175, 73, 179, 134, 107, 184, 136, 76, 211, 49, 69, 110, 221, 22, 113, 80, 88, 44, 157, 146, - 196, 227, 83, 126, 41, 3, 139, 54, 32, 1, 49, 232, 14, 7, 76, 32, 178, 247, 39, 65, 91, 29, - 231, 93, 9, 136, 36, 176, 72, 92, 63, 78, 121, 43, 48, 56, 66, 70, 133, 99, 48, 32, 0, 145, - 154, 219, 32, 156, 27, 197, 255, 214, 192, 230, 207, 33, 197, 55, 174, 39, 213, 138, 192, 238, - 173, 22, 247, 249, 93, 8, 176, 31, 109, 71, 32, 2, 243, 229, 117, 197, 255, 122, 250, 110, 201, - 31, 116, 254, 193, 241, 228, 98, 239, 97, 168, 95, 254, 50, 197, 37, 219, 228, 30, 1, 75, 37, - 146, 32, 2, 251, 95, 40, 126, 75, 198, 15, 89, 219, 83, 79, 188, 119, 46, 143, 32, 239, 124, - 60, 150, 0, 99, 126, 170, 74, 181, 237, 134, 110, 55, 6, 32, 6, 149, 5, 76, 142, 231, 0, 142, - 241, 181, 85, 73, 250, 247, 101, 96, 235, 88, 30, 55, 194, 36, 239, 22, 72, 194, 253, 245, 170, - 77, 86, 138, 32, 1, 130, 28, 118, 182, 141, 212, 15, 115, 26, 105, 190, 143, 91, 142, 125, 93, - 179, 212, 15, 84, 203, 43, 152, 249, 215, 69, 53, 127, 186, 4, 123, 32, 7, 188, 212, 79, 117, - 224, 48, 21, 132, 24, 203, 184, 43, 159, 57, 44, 102, 65, 62, 39, 35, 169, 155, 34, 206, 199, - 163, 103, 4, 20, 100, 230, 32, 7, 177, 217, 196, 41, 199, 253, 106, 197, 179, 235, 189, 122, - 190, 152, 124, 130, 168, 39, 48, 150, 172, 176, 249, 186, 184, 183, 153, 193, 183, 190, 48, 32, - 6, 90, 178, 87, 183, 16, 44, 145, 121, 253, 254, 45, 149, 160, 193, 42, 145, 252, 195, 180, - 150, 92, 184, 72, 197, 24, 248, 54, 251, 236, 40, 157, 32, 2, 20, 178, 102, 77, 107, 189, 105, - 174, 137, 145, 138, 75, 136, 55, 149, 196, 168, 35, 11, 98, 2, 184, 73, 172, 135, 147, 69, 196, - 45, 250, 210, 32, 1, 14, 10, 106, 98, 138, 75, 176, 118, 144, 9, 206, 43, 165, 78, 196, 34, - 253, 229, 32, 158, 41, 166, 34, 95, 227, 24, 235, 84, 92, 131, 172, 32, 4, 133, 28, 17, 71, - 214, 252, 106, 118, 134, 29, 190, 64, 157, 56, 44, 222, 229, 18, 91, 194, 37, 190, 132, 97, 76, - 179, 57, 46, 209, 5, 252, 32, 6, 99, 7, 73, 218, 173, 225, 144, 13, 237, 152, 82, 222, 52, 173, - 137, 235, 94, 44, 138, 79, 181, 153, 108, 186, 165, 54, 135, 8, 9, 242, 235, 32, 5, 48, 127, - 150, 223, 172, 207, 58, 53, 228, 107, 136, 242, 14, 98, 85, 248, 152, 107, 106, 155, 84, 180, - 62, 11, 170, 99, 26, 119, 0, 26, 152, 32, 5, 150, 111, 125, 40, 103, 113, 4, 198, 91, 120, 42, - 55, 194, 34, 156, 213, 118, 98, 226, 116, 37, 35, 58, 203, 240, 123, 124, 167, 27, 86, 117, 32, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 7, 255, 255, 255, 254, 239, 253, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 255, 225, 36, 32, 5, 113, 4, - 132, 41, 62, 211, 190, 57, 115, 226, 29, 236, 84, 66, 103, 143, 107, 143, 132, 0, 189, 123, 89, - 115, 151, 114, 173, 78, 206, 16, 27, 32, 5, 178, 169, 38, 158, 45, 64, 176, 152, 162, 46, 4, - 130, 160, 119, 48, 93, 180, 26, 159, 93, 16, 75, 9, 55, 73, 82, 63, 231, 143, 90, 240, 32, 5, - 129, 28, 11, 54, 157, 116, 223, 41, 180, 53, 230, 180, 162, 192, 75, 115, 52, 231, 160, 198, - 165, 202, 235, 171, 121, 171, 248, 69, 239, 171, 165, 32, 4, 148, 123, 66, 220, 147, 249, 219, - 22, 50, 133, 191, 3, 46, 204, 32, 255, 78, 7, 216, 144, 240, 197, 105, 37, 253, 144, 63, 219, - 5, 224, 19, 32, 3, 60, 206, 209, 73, 124, 219, 99, 213, 107, 200, 77, 39, 69, 30, 196, 245, 99, - 97, 155, 149, 23, 235, 133, 94, 106, 143, 237, 20, 113, 57, 16, 32, 6, 215, 232, 251, 136, 70, - 80, 241, 31, 10, 243, 237, 69, 23, 106, 178, 191, 65, 191, 22, 80, 78, 140, 254, 147, 136, 197, - 229, 171, 60, 73, 82, 32, 2, 73, 154, 109, 136, 227, 115, 86, 25, 32, 98, 40, 10, 104, 153, - 159, 21, 207, 107, 83, 67, 122, 144, 110, 234, 176, 129, 215, 92, 124, 242, 167, 32, 5, 36, - 205, 54, 196, 113, 185, 179, 140, 144, 49, 20, 5, 52, 76, 207, 138, 231, 181, 169, 161, 189, - 72, 55, 117, 88, 64, 235, 174, 62, 121, 84, 32, 5, 68, 225, 208, 192, 61, 230, 9, 15, 223, 141, - 211, 67, 156, 13, 203, 95, 95, 222, 131, 139, 121, 135, 42, 245, 42, 225, 196, 87, 150, 110, - 215, 32, 0, 48, 249, 21, 152, 12, 29, 189, 81, 197, 24, 228, 71, 100, 241, 213, 176, 240, 172, - 174, 58, 244, 166, 105, 180, 141, 41, 211, 204, 144, 52, 119, 32, 4, 158, 53, 245, 127, 169, - 138, 163, 190, 77, 178, 159, 168, 221, 104, 97, 40, 84, 47, 51, 32, 182, 223, 132, 101, 228, - 253, 118, 155, 61, 39, 204, 32, 1, 218, 189, 154, 24, 70, 25, 7, 212, 212, 9, 239, 129, 206, - 195, 175, 250, 196, 246, 46, 161, 224, 5, 132, 160, 134, 49, 255, 101, 109, 171, 227, 32, 5, - 24, 157, 127, 103, 49, 148, 150, 136, 145, 89, 44, 171, 187, 246, 34, 174, 33, 106, 73, 106, - 110, 254, 60, 162, 243, 176, 254, 18, 117, 217, 51, 32, 3, 228, 135, 71, 204, 17, 246, 220, - 230, 229, 141, 177, 226, 139, 118, 94, 18, 181, 218, 211, 157, 25, 217, 183, 65, 164, 213, 166, - 183, 18, 238, 125, 32, 0, 164, 190, 217, 68, 14, 4, 149, 61, 10, 60, 34, 50, 71, 162, 146, 163, - 70, 241, 24, 137, 39, 207, 234, 219, 81, 44, 33, 220, 0, 169, 107, 32, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 6, 149, 17, 221, - 202, 105, 0, 31, 33, 26, 217, 147, 78, 247, 103, 12, 128, 28, 193, 247, 88, 242, 51, 131, 79, - 111, 43, 121, 15, 105, 25, 22, 32, 7, 254, 27, 57, 67, 21, 121, 98, 12, 174, 115, 93, 211, 254, - 204, 55, 232, 22, 4, 49, 56, 27, 28, 183, 62, 74, 166, 103, 103, 84, 58, 71, 32, 3, 116, 89, - 217, 70, 248, 192, 197, 108, 66, 140, 160, 141, 248, 42, 92, 236, 59, 59, 118, 143, 222, 223, - 51, 13, 91, 20, 29, 2, 235, 222, 151, 32, 3, 233, 228, 245, 165, 212, 209, 212, 118, 120, 80, - 237, 22, 221, 66, 138, 123, 227, 47, 177, 61, 67, 228, 207, 198, 235, 236, 24, 167, 22, 69, 57, - 32, 0, 167, 220, 91, 5, 166, 130, 243, 38, 200, 208, 20, 171, 72, 125, 142, 242, 87, 141, 131, - 207, 224, 63, 172, 154, 165, 16, 140, 211, 85, 229, 155, 32, 1, 187, 10, 218, 105, 114, 29, 65, - 28, 236, 65, 201, 231, 214, 125, 89, 45, 16, 18, 67, 29, 220, 10, 134, 50, 174, 92, 75, 157, - 210, 25, 226, 32, 1, 162, 222, 29, 125, 140, 22, 50, 197, 50, 193, 120, 51, 189, 79, 43, 130, - 243, 16, 145, 195, 16, 89, 144, 212, 141, 96, 70, 233, 137, 71, 86, 32, 1, 53, 111, 177, 148, - 38, 252, 138, 106, 253, 254, 51, 189, 137, 67, 217, 198, 10, 50, 215, 34, 236, 120, 116, 86, - 141, 179, 242, 113, 190, 94, 149, 32, 7, 85, 179, 63, 144, 238, 1, 2, 243, 105, 223, 39, 168, - 36, 16, 104, 16, 101, 213, 7, 195, 16, 225, 251, 50, 116, 6, 54, 222, 193, 249, 106, 32, 1, - 243, 144, 133, 144, 53, 44, 106, 28, 171, 117, 167, 125, 229, 3, 94, 231, 111, 69, 162, 147, - 117, 120, 177, 130, 168, 13, 102, 120, 1, 68, 100, 32, 2, 115, 110, 122, 204, 241, 7, 97, 255, - 207, 137, 222, 176, 43, 103, 188, 223, 109, 97, 219, 46, 175, 66, 88, 158, 213, 204, 249, 182, - 122, 60, 32, 32, 4, 116, 237, 160, 162, 120, 154, 57, 103, 83, 24, 167, 167, 171, 109, 113, - 154, 127, 65, 11, 127, 101, 75, 54, 29, 191, 250, 131, 185, 132, 144, 113, 32, 6, 64, 89, 16, - 14, 28, 156, 232, 240, 95, 165, 200, 103, 135, 237, 37, 237, 54, 239, 7, 237, 0, 67, 167, 164, - 168, 224, 41, 173, 195, 93, 58, 32, 0, 163, 210, 15, 175, 253, 202, 171, 103, 170, 213, 57, 27, - 122, 238, 152, 153, 51, 232, 115, 193, 41, 145, 51, 237, 50, 57, 199, 72, 137, 185, 204, 32, 3, - 234, 223, 251, 69, 119, 7, 60, 185, 191, 161, 181, 126, 115, 59, 120, 53, 102, 193, 71, 170, - 44, 109, 9, 178, 70, 59, 85, 0, 43, 122, 23, 32, 1, 23, 143, 177, 10, 146, 76, 7, 182, 122, 8, - 57, 75, 111, 126, 122, 130, 218, 140, 246, 169, 115, 201, 66, 131, 194, 50, 179, 128, 32, 14, - 38, 32, 1, 17, 140, 170, 61, 218, 5, 177, 217, 117, 34, 160, 216, 36, 165, 117, 187, 250, 50, - 7, 187, 193, 228, 26, 4, 16, 182, 169, 164, 182, 255, 71, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 7, 255, 255, 255, 254, - 239, 253, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 239, 255, 225, 1, 8, 53, 76, 190, 184, 244, 36, 126, 255, 134, 180, - 213, 61, 112, 41, 244, 182, 188, 22, 10, 147, 91, 158, 90, 131, 148, 157, 56, 245, 63, 60, 132, - 97, 179, 21, 130, 172, 74, 138, 253, 38, 56, 180, 102, 39, 111, 136, 166, 55, 53, 85, 254, 63, - 223, 5, 225, 253, 154, 57, 29, 217, 247, 8, 124, 152, 135, 34, 188, 151, 17, 187, 220, 0, 165, - 108, 251, 46, 107, 166, 181, 205, 71, 218, 163, 122, 119, 132, 70, 149, 13, 167, 45, 27, 16, - 248, 130, 246, 62, 140, 105, 159, 88, 38, 247, 37, 228, 16, 114, 143, 17, 195, 241, 138, 53, - 178, 151, 238, 26, 248, 33, 227, 5, 41, 194, 29, 250, 21, 194, 122, 94, 135, 249, 215, 243, 35, - 175, 188, 241, 148, 240, 29, 134, 150, 249, 169, 156, 239, 74, 76, 156, 247, 185, 194, 128, 66, - 214, 36, 211, 116, 90, 38, 107, 227, 92, 168, 83, 134, 109, 180, 211, 28, 204, 33, 14, 245, 72, - 86, 236, 114, 107, 238, 242, 209, 141, 32, 188, 207, 90, 66, 55, 99, 210, 105, 248, 192, 4, 62, - 145, 208, 140, 147, 51, 213, 13, 119, 168, 48, 157, 15, 196, 33, 110, 183, 87, 150, 74, 188, - 70, 155, 201, 215, 23, 246, 142, 253, 16, 200, 158, 124, 254, 165, 5, 73, 12, 53, 221, 137, - 122, 171, 78, 203, 75, 123, 4, 181, 50, 42, 37, 32, 13, 234, 176, 114, 190, 190, 94, 157, 8, - 34, 114, 134, 201, 115, 56, 140, 49, 142, 12, 86, 177, 21, 174, 54, 113, 237, 107, 139, 115, - 165, 7, 246, 48, 26, 84, 165, 99, 169, 89, 113, 30, 179, 21, 130, 172, 74, 138, 253, 38, 56, - 180, 102, 39, 111, 136, 166, 55, 53, 85, 254, 63, 223, 5, 225, 253, 154, 57, 29, 217, 247, 8, - 124, 152, 135, 34, 188, 151, 17, 187, 220, 0, 165, 108, 251, 46, 107, 166, 181, 205, 71, 218, - 163, 122, 119, 132, 70, 149, 13, 167, 45, 27, 16, 248, 130, 246, 62, 140, 105, 159, 88, 38, - 247, 37, 228, 16, 114, 143, 17, 195, 241, 138, 53, 178, 151, 238, 26, 248, 33, 227, 5, 41, 194, - 29, 250, 21, 194, 122, 94, 135, 249, 215, 243, 35, 175, 188, 241, 148, 240, 29, 134, 150, 249, - 169, 156, 239, 74, 76, 156, 247, 185, 194, 128, 66, 214, 36, 211, 116, 90, 38, 107, 227, 92, - 168, 83, 134, 109, 180, 211, 28, 204, 33, 14, 245, 72, 86, 236, 114, 107, 238, 242, 209, 141, - 32, 188, 207, 90, 66, 55, 99, 210, 105, 248, 192, 4, 62, 145, 208, 140, 147, 51, 213, 13, 119, - 168, 48, 157, 15, 196, 33, 110, 183, 87, 150, 74, 188, 70, 155, 201, 215, 23, 246, 142, 253, - 16, 200, 158, 124, 254, 165, 5, 73, 12, 53, 221, 137, 122, 171, 78, 203, 75, 123, 4, 181, 50, - 42, 37, 32, 13, 234, 176, 114, 190, 190, 94, 157, 23, 32, 5, 186, 158, 17, 4, 199, 30, 144, - 201, 38, 11, 250, 108, 122, 224, 128, 16, 54, 3, 22, 121, 52, 205, 27, 220, 62, 254, 5, 5, 96, - 103, 139, 32, 7, 59, 132, 58, 0, 159, 27, 9, 41, 149, 70, 135, 241, 46, 173, 1, 149, 22, 148, - 213, 68, 148, 155, 241, 153, 175, 198, 3, 251, 1, 177, 222, 32, 7, 59, 132, 58, 0, 159, 27, 9, - 41, 149, 70, 135, 241, 46, 173, 1, 149, 22, 148, 213, 68, 148, 155, 241, 153, 175, 198, 3, 251, - 1, 177, 222, 32, 7, 59, 132, 58, 0, 159, 27, 9, 41, 149, 70, 135, 241, 46, 173, 1, 149, 22, - 148, 213, 68, 148, 155, 241, 153, 175, 198, 3, 251, 1, 177, 222, 32, 0, 105, 212, 236, 199, - 239, 28, 54, 213, 225, 236, 74, 163, 155, 99, 70, 108, 178, 43, 245, 88, 11, 111, 170, 159, - 159, 33, 58, 96, 204, 29, 11, 32, 3, 206, 0, 174, 2, 104, 127, 150, 87, 237, 207, 22, 241, 3, - 9, 155, 152, 245, 234, 183, 232, 240, 217, 138, 46, 74, 161, 162, 39, 132, 23, 77, 32, 5, 208, - 70, 213, 49, 253, 16, 182, 213, 162, 3, 62, 154, 172, 201, 108, 198, 33, 9, 163, 29, 246, 138, - 142, 204, 208, 212, 219, 227, 218, 38, 125, 32, 5, 137, 156, 64, 105, 64, 51, 90, 199, 221, 86, - 116, 210, 235, 217, 67, 53, 99, 154, 234, 105, 110, 151, 32, 128, 61, 53, 240, 217, 19, 140, - 135, 32, 1, 32, 30, 162, 132, 42, 50, 45, 45, 82, 75, 169, 1, 127, 111, 8, 159, 37, 72, 164, - 217, 124, 74, 113, 81, 8, 196, 143, 85, 201, 211, 146, 32, 7, 192, 192, 46, 130, 184, 228, 219, - 107, 64, 19, 135, 51, 19, 38, 223, 184, 90, 194, 80, 30, 108, 99, 89, 69, 28, 35, 126, 196, 2, - 204, 98, 32, 1, 45, 221, 64, 177, 51, 59, 84, 97, 184, 119, 103, 199, 85, 35, 64, 59, 125, 12, - 239, 233, 77, 17, 59, 132, 59, 163, 179, 135, 199, 20, 223, 32, 1, 2, 251, 108, 216, 187, 36, - 189, 54, 162, 37, 18, 116, 131, 155, 30, 145, 213, 19, 36, 123, 201, 153, 119, 20, 216, 85, - 135, 36, 110, 185, 46, 32, 6, 123, 154, 60, 47, 212, 237, 207, 194, 253, 45, 101, 86, 179, 69, - 3, 34, 103, 64, 50, 131, 172, 22, 51, 87, 73, 218, 82, 220, 93, 150, 119, 32, 5, 120, 233, 13, - 54, 248, 167, 31, 72, 6, 136, 240, 245, 243, 230, 176, 66, 93, 46, 150, 109, 126, 60, 152, 221, - 91, 157, 136, 87, 139, 136, 234, 32, 4, 143, 65, 110, 148, 247, 167, 104, 3, 87, 209, 157, 58, - 96, 39, 81, 37, 2, 216, 55, 134, 215, 85, 47, 154, 183, 17, 242, 100, 50, 158, 95, 32, 0, 64, - 107, 195, 205, 225, 33, 232, 80, 95, 118, 77, 242, 68, 226, 166, 76, 13, 158, 58, 156, 126, 1, - 39, 113, 228, 237, 125, 194, 71, 219, 243, 32, 3, 203, 42, 99, 32, 148, 99, 137, 238, 191, 1, - 36, 39, 248, 146, 42, 50, 42, 150, 226, 174, 228, 246, 140, 163, 221, 70, 172, 9, 224, 161, - 141, 32, 1, 164, 166, 114, 98, 225, 94, 86, 220, 67, 159, 142, 200, 239, 158, 128, 59, 63, 244, - 200, 149, 178, 88, 122, 153, 159, 43, 229, 99, 130, 176, 213, 32, 6, 169, 97, 59, 109, 42, 177, - 241, 154, 69, 148, 121, 125, 6, 94, 174, 66, 175, 11, 229, 220, 249, 18, 34, 2, 160, 9, 239, - 122, 119, 121, 83, 32, 0, 113, 217, 179, 47, 12, 210, 21, 180, 101, 98, 32, 129, 125, 69, 23, - 156, 167, 69, 139, 17, 110, 127, 16, 32, 226, 158, 43, 211, 208, 95, 106, 32, 6, 66, 54, 132, - 34, 88, 227, 47, 71, 74, 74, 117, 11, 188, 95, 242, 236, 119, 26, 90, 56, 194, 126, 180, 87, - 48, 21, 155, 142, 228, 230, 211, 32, 1, 8, 232, 148, 173, 220, 235, 206, 152, 38, 185, 100, - 198, 14, 72, 189, 13, 12, 212, 47, 115, 244, 123, 221, 143, 219, 156, 97, 194, 199, 30, 182, - 32, 7, 142, 85, 159, 235, 76, 225, 193, 220, 214, 98, 183, 199, 106, 5, 128, 73, 21, 138, 21, - 133, 93, 23, 96, 224, 25, 220, 170, 83, 210, 66, 181, 23, 32, 2, 163, 37, 122, 174, 56, 142, - 216, 245, 244, 184, 125, 39, 223, 238, 134, 178, 190, 78, 68, 69, 240, 60, 60, 85, 185, 29, - 136, 8, 47, 77, 48, 32, 5, 134, 123, 84, 149, 88, 171, 143, 12, 2, 179, 5, 248, 244, 63, 61, - 250, 98, 223, 173, 74, 59, 42, 3, 141, 127, 106, 217, 226, 16, 176, 72, 32, 5, 134, 123, 84, - 149, 88, 171, 143, 12, 2, 179, 5, 248, 244, 63, 61, 250, 98, 223, 173, 74, 59, 42, 3, 141, 127, - 106, 217, 226, 16, 176, 72, 32, 5, 134, 123, 84, 149, 88, 171, 143, 12, 2, 179, 5, 248, 244, - 63, 61, 250, 98, 223, 173, 74, 59, 42, 3, 141, 127, 106, 217, 226, 16, 176, 72, 32, 4, 92, 215, - 77, 64, 206, 190, 217, 231, 204, 138, 52, 187, 225, 6, 195, 184, 148, 146, 98, 142, 10, 237, - 132, 238, 196, 103, 185, 79, 194, 106, 136, 32, 3, 46, 151, 117, 185, 146, 93, 232, 151, 44, - 106, 244, 141, 173, 239, 52, 56, 135, 91, 188, 25, 179, 249, 178, 233, 219, 75, 220, 85, 224, - 185, 209, 32, 2, 56, 187, 99, 96, 73, 48, 196, 162, 85, 121, 87, 137, 132, 0, 59, 48, 163, 133, - 42, 64, 251, 175, 198, 248, 130, 201, 199, 19, 56, 163, 114, 32, 2, 172, 72, 17, 36, 178, 144, - 116, 175, 221, 11, 124, 163, 187, 41, 241, 245, 235, 100, 187, 15, 172, 6, 189, 60, 251, 173, - 63, 2, 144, 176, 203, 32, 7, 194, 200, 168, 120, 214, 176, 202, 129, 184, 40, 234, 93, 192, 96, - 149, 93, 27, 207, 30, 82, 103, 197, 14, 57, 60, 237, 110, 40, 137, 127, 178, 32, 0, 146, 147, - 27, 150, 232, 183, 159, 61, 81, 156, 49, 23, 171, 214, 123, 84, 145, 61, 177, 155, 161, 247, - 107, 159, 235, 213, 8, 223, 170, 234, 88, 32, 3, 48, 147, 58, 168, 56, 95, 160, 86, 124, 159, - 140, 248, 6, 18, 224, 187, 96, 136, 232, 45, 215, 140, 153, 173, 36, 239, 28, 65, 147, 132, - 227, 32, 1, 39, 121, 52, 204, 102, 136, 60, 217, 100, 93, 56, 68, 161, 91, 53, 36, 118, 239, - 179, 199, 132, 39, 21, 134, 8, 127, 77, 214, 86, 1, 151, 32, 7, 15, 168, 86, 36, 5, 223, 136, - 141, 130, 114, 241, 60, 171, 135, 22, 64, 144, 76, 189, 171, 105, 238, 199, 215, 248, 15, 43, - 124, 82, 216, 100, 32, 6, 63, 121, 168, 212, 175, 97, 183, 41, 55, 6, 157, 118, 25, 237, 140, - 10, 226, 38, 108, 72, 133, 2, 20, 194, 105, 90, 234, 237, 127, 31, 135, 32, 3, 95, 90, 246, - 146, 220, 220, 126, 124, 221, 229, 120, 229, 121, 95, 66, 18, 111, 5, 39, 64, 234, 189, 232, - 60, 159, 0, 147, 67, 124, 160, 81, 32, 0, 128, 196, 177, 18, 102, 194, 247, 111, 5, 184, 24, - 121, 42, 79, 59, 157, 32, 59, 47, 201, 87, 49, 140, 36, 207, 154, 233, 55, 156, 85, 20, 32, 6, - 62, 129, 192, 53, 29, 18, 19, 220, 210, 210, 124, 2, 184, 146, 46, 63, 85, 62, 153, 96, 202, - 189, 179, 217, 249, 228, 208, 168, 157, 171, 85, 32, 4, 252, 20, 112, 128, 70, 142, 15, 151, - 58, 44, 107, 29, 87, 123, 89, 197, 199, 250, 144, 132, 224, 120, 23, 72, 171, 230, 249, 115, - 103, 168, 121, 32, 4, 60, 231, 255, 193, 168, 52, 217, 217, 202, 195, 20, 89, 217, 87, 29, 192, - 63, 88, 181, 124, 111, 98, 76, 244, 242, 19, 120, 128, 217, 152, 2, 32, 0, 191, 48, 142, 1, - 122, 139, 54, 112, 203, 106, 113, 208, 27, 51, 82, 50, 5, 74, 173, 182, 74, 138, 26, 102, 72, - 156, 187, 195, 46, 2, 64, 32, 6, 255, 188, 219, 98, 117, 141, 235, 142, 127, 232, 100, 141, - 181, 71, 41, 93, 30, 54, 159, 61, 216, 140, 181, 69, 141, 233, 175, 62, 217, 202, 156, 32, 4, - 99, 247, 11, 27, 207, 183, 69, 247, 182, 4, 61, 13, 223, 66, 13, 24, 87, 237, 199, 6, 87, 70, - 190, 204, 21, 255, 59, 202, 68, 204, 246, 32, 5, 225, 146, 39, 232, 171, 250, 119, 5, 75, 119, - 156, 34, 22, 69, 148, 221, 12, 244, 207, 17, 223, 208, 148, 99, 157, 19, 211, 91, 251, 107, - 184, 7, 252, 11, 21, 38, 31, 183, 75, 252, 11, 109, 101, 0, 223, 66, 171, 63, 19, 183, 139, - 142, 40, 174, 191, 87, 11, 222, 129, 124, 101, 75, 123, 70, 199, 158, 120, 185, 8, 172, 104, - 202, 129, 51, 166, 239, 100, 28, 87, 199, 146, 146, 226, 245, 22, 221, 52, 20, 178, 168, 107, - 218, 157, 192, 83, 17, 243, 148, 90, 0, 157, 43, 19, 77, 53, 64, 134, 77, 63, 197, 63, 243, 41, - 44, 218, 23, 127, 103, 9, 194, 201, 58, 143, 151, 62, 85, 75, 217, 143, 98, 74, 76, 140, 137, - 217, 143, 157, 127, 73, 13, 30, 154, 115, 104, 31, 52, 74, 172, 134, 205, 100, 44, 195, 181, - 60, 156, 125, 108, 163, 218, 226, 24, 112, 45, 211, 8, 154, 246, 16, 159, 237, 206, 177, 157, - 162, 154, 64, 186, 79, 84, 23, 81, 132, 104, 72, 66, 186, 25, 81, 168, 118, 233, 92, 41, 171, - 144, 132, 246, 76, 246, 142, 86, 209, 111, 24, 65, 183, 87, 141, 130, 215, 53, 217, 166, 72, - 61, 175, 41, 33, 248, 102, 55, 7, 57, 90, 146, 42, 221, 95, 80, 55, 238, 93, 29, 130, 15, 78, - 32, 160, 44, 76, 21, 121, 200, 67, 65, 126, 167, 75, 214, 73, 208, 141, 214, 158, 78, 7, 252, - 11, 21, 38, 31, 183, 75, 252, 11, 109, 101, 0, 223, 66, 171, 63, 19, 183, 139, 142, 40, 174, - 191, 87, 11, 222, 129, 124, 101, 75, 123, 70, 199, 158, 120, 185, 8, 172, 104, 202, 129, 51, - 166, 239, 100, 28, 87, 199, 146, 146, 226, 245, 22, 221, 52, 20, 178, 168, 107, 218, 157, 192, - 83, 17, 243, 148, 90, 0, 157, 43, 19, 77, 53, 64, 134, 77, 63, 197, 63, 243, 41, 44, 218, 23, - 127, 103, 9, 194, 201, 58, 143, 151, 62, 85, 75, 217, 143, 98, 74, 76, 140, 137, 217, 143, 157, - 127, 73, 13, 30, 154, 115, 104, 31, 52, 74, 172, 134, 205, 100, 44, 195, 181, 60, 156, 125, - 108, 163, 218, 226, 24, 112, 45, 211, 8, 154, 246, 16, 159, 237, 206, 177, 157, 162, 154, 64, - 186, 79, 84, 23, 81, 132, 104, 72, 66, 186, 25, 81, 168, 118, 233, 92, 41, 171, 144, 132, 246, - 76, 246, 142, 86, 209, 111, 24, 65, 183, 87, 141, 130, 215, 53, 217, 166, 72, 61, 175, 41, 33, - 248, 102, 55, 7, 57, 90, 146, 42, 221, 95, 80, 55, 238, 93, 29, 130, 15, 78, 32, 160, 44, 76, - 21, 121, 200, 67, 65, 126, 167, 75, 214, 73, 208, 141, 214, 158, 78, 2, 32, 0, 179, 251, 140, - 44, 139, 6, 94, 64, 141, 189, 35, 254, 12, 27, 211, 162, 142, 138, 211, 124, 152, 90, 62, 191, - 1, 150, 162, 11, 201, 237, 84, 32, 0, 5, 52, 81, 173, 157, 123, 17, 228, 220, 86, 223, 6, 220, - 169, 67, 186, 126, 121, 118, 203, 118, 138, 201, 72, 162, 221, 245, 67, 29, 54, 105, 2, 32, 4, - 59, 167, 10, 174, 78, 27, 164, 37, 184, 185, 58, 172, 94, 255, 217, 40, 43, 224, 65, 187, 205, - 196, 83, 218, 117, 172, 94, 162, 228, 116, 187, 32, 0, 59, 195, 41, 28, 105, 216, 158, 77, 47, - 61, 181, 95, 59, 232, 102, 220, 180, 100, 248, 53, 31, 84, 26, 212, 152, 188, 91, 145, 245, - 173, 130, 8, 72, 157, 52, 65, 131, 107, 51, 203, 161, 9, 236, 138, 220, 146, 47, 117, 159, 8, - 235, 198, 120, 15, 215, 252, 32, 210, 210, 40, 184, 17, 38, 68, 138, 172, 80, 210, 73, 228, - 117, 59, 0, 40, 28, 69, 91, 166, 191, 11, 97, 172, 37, 28, 174, 5, 94, 106, 50, 248, 229, 59, - 162, 89, 94, 231, 74, 147, 252, 163, 246, 133, 208, 151, 87, 189, 40, 208, 243, 159, 219, 5, - 173, 34, 96, 18, 158, 19, 99, 83, 193, 175, 94, 97, 238, 97, 169, 236, 150, 245, 207, 203, 230, - 180, 210, 239, 201, 38, 87, 47, 79, 103, 91, 115, 144, 169, 207, 195, 17, 196, 182, 226, 74, - 106, 171, 149, 236, 195, 101, 146, 225, 111, 62, 174, 168, 68, 214, 215, 129, 69, 23, 126, 173, - 62, 129, 192, 223, 180, 220, 93, 110, 122, 57, 46, 181, 95, 198, 39, 137, 90, 39, 24, 90, 125, - 16, 25, 41, 188, 114, 58, 89, 239, 63, 64, 105, 4, 102, 211, 3, 43, 180, 109, 69, 210, 168, 47, - 199, 3, 231, 17, 41, 201, 253, 197, 66, 155, 36, 12, 34, 61, 169, 95, 84, 39, 35, 149, 250, - 234, 76, 165, 17, 124, 40, 205, 185, 201, 27, 71, 191, 77, 148, 228, 244, 148, 31, 91, 252, 89, - 141, 6, 13, 139, 105, 158, 82, 26, 166, 148, 184, 91, 40, 185, 45, 214, 150, 78, 230, 134, 109, - 250, 24, 78, 249, 49, 197, 186, 141, 6, 8, 80, 32, 245, 250, 73, 182, 254, 224, 221, 201, 126, - 136, 9, 100, 226, 76, 104, 161, 124, 29, 227, 115, 194, 205, 218, 183, 229, 180, 154, 171, 16, - 114, 138, 172, 80, 210, 73, 228, 117, 59, 0, 40, 28, 69, 91, 166, 191, 11, 97, 172, 37, 28, - 174, 5, 94, 106, 50, 248, 229, 59, 162, 89, 94, 231, 74, 147, 252, 163, 246, 133, 208, 151, 87, - 189, 40, 208, 243, 159, 219, 5, 173, 34, 96, 18, 158, 19, 99, 83, 193, 175, 94, 97, 238, 97, - 169, 236, 150, 245, 207, 203, 230, 180, 210, 239, 201, 38, 87, 47, 79, 103, 91, 115, 144, 169, - 207, 195, 17, 196, 182, 226, 74, 106, 171, 149, 236, 195, 101, 146, 225, 111, 62, 174, 168, 68, - 214, 215, 129, 69, 23, 126, 173, 62, 129, 192, 223, 180, 220, 93, 110, 122, 57, 46, 181, 95, - 198, 39, 137, 90, 39, 24, 90, 125, 16, 25, 41, 188, 114, 58, 89, 239, 63, 64, 105, 4, 102, 211, - 3, 43, 180, 109, 69, 210, 168, 47, 199, 3, 231, 17, 41, 201, 253, 197, 66, 155, 36, 12, 34, 61, - 169, 95, 84, 39, 35, 149, 250, 234, 76, 165, 17, 124, 40, 205, 185, 201, 27, 71, 191, 77, 148, - 228, 244, 148, 31, 91, 252, 89, 141, 6, 13, 139, 105, 158, 82, 26, 166, 148, 184, 91, 40, 185, - 45, 214, 150, 78, 230, 134, 109, 250, 24, 78, 249, 49, 197, 186, 141, 6, 36, 32, 3, 11, 190, - 10, 245, 46, 197, 227, 241, 252, 227, 191, 255, 125, 8, 152, 30, 193, 129, 20, 117, 98, 43, - 205, 180, 85, 212, 192, 84, 108, 211, 147, 32, 6, 105, 154, 54, 32, 217, 251, 178, 189, 125, - 44, 74, 148, 158, 166, 35, 31, 32, 123, 202, 155, 237, 245, 244, 162, 130, 75, 66, 176, 19, 4, - 95, 32, 2, 53, 72, 92, 244, 10, 199, 85, 215, 98, 197, 202, 53, 55, 48, 73, 121, 142, 75, 201, - 211, 59, 249, 82, 99, 28, 177, 49, 24, 229, 179, 18, 32, 3, 147, 151, 167, 74, 59, 143, 23, - 251, 79, 191, 28, 36, 70, 115, 138, 125, 47, 234, 176, 10, 181, 87, 6, 92, 201, 241, 192, 251, - 131, 0, 88, 32, 4, 39, 97, 124, 163, 176, 81, 173, 238, 229, 62, 141, 71, 149, 157, 213, 58, - 29, 88, 81, 70, 210, 37, 247, 98, 32, 227, 122, 92, 107, 158, 25, 32, 1, 61, 39, 156, 131, 15, - 116, 96, 118, 150, 228, 16, 100, 173, 143, 116, 225, 32, 132, 100, 64, 218, 62, 42, 82, 24, - 237, 250, 224, 123, 138, 97, 32, 2, 146, 189, 233, 22, 145, 97, 183, 76, 47, 228, 86, 179, 24, - 44, 22, 187, 234, 165, 124, 212, 168, 28, 48, 170, 172, 113, 149, 59, 111, 126, 0, 32, 1, 73, - 94, 244, 139, 72, 176, 219, 166, 23, 242, 43, 89, 140, 22, 11, 93, 245, 82, 190, 106, 84, 14, - 24, 85, 86, 56, 202, 157, 183, 191, 0, 32, 7, 49, 84, 83, 237, 209, 73, 126, 221, 105, 98, 146, - 151, 69, 38, 138, 147, 197, 172, 158, 154, 130, 67, 143, 205, 176, 10, 185, 201, 66, 199, 20, - 32, 1, 75, 213, 109, 3, 8, 2, 241, 101, 42, 61, 134, 159, 48, 52, 142, 224, 44, 155, 89, 243, - 73, 37, 137, 11, 64, 126, 128, 131, 255, 70, 42, 32, 1, 104, 35, 95, 92, 228, 27, 175, 98, 140, - 205, 91, 31, 157, 252, 165, 220, 105, 251, 241, 140, 219, 12, 161, 65, 197, 62, 110, 124, 61, - 193, 122, 32, 1, 149, 72, 216, 225, 106, 116, 178, 76, 86, 77, 33, 43, 180, 163, 197, 44, 142, - 52, 198, 3, 206, 173, 228, 211, 204, 13, 227, 175, 28, 97, 231, 32, 2, 232, 98, 147, 59, 174, - 70, 149, 38, 167, 15, 131, 123, 149, 113, 85, 110, 221, 121, 170, 84, 232, 24, 79, 75, 130, 8, - 99, 192, 32, 16, 235, 32, 2, 115, 182, 7, 186, 57, 90, 222, 26, 175, 88, 28, 210, 226, 219, - 114, 205, 112, 174, 240, 165, 47, 13, 207, 147, 229, 120, 162, 31, 51, 215, 163, 32, 3, 198, - 127, 221, 133, 73, 158, 119, 151, 181, 21, 139, 83, 240, 137, 62, 75, 131, 90, 183, 183, 239, - 195, 107, 108, 247, 170, 165, 138, 0, 211, 101, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 6, 148, 216, 207, 2, 3, 139, 221, - 191, 137, 87, 81, 23, 179, 133, 145, 206, 30, 137, 32, 236, 3, 210, 246, 126, 171, 104, 57, - 139, 240, 51, 41, 32, 4, 36, 244, 60, 5, 202, 242, 129, 217, 68, 10, 21, 74, 144, 101, 2, 160, - 60, 17, 219, 171, 167, 13, 137, 161, 241, 186, 130, 225, 71, 234, 214, 32, 1, 120, 99, 212, 90, - 47, 150, 255, 235, 159, 211, 99, 64, 152, 122, 210, 217, 205, 190, 167, 6, 216, 51, 109, 66, - 132, 35, 200, 191, 124, 240, 108, 32, 0, 85, 76, 196, 128, 0, 235, 158, 110, 54, 224, 100, 184, - 2, 249, 168, 88, 22, 127, 135, 187, 9, 7, 183, 255, 194, 35, 136, 175, 95, 212, 5, 32, 6, 232, - 9, 192, 228, 11, 65, 179, 232, 87, 242, 201, 109, 203, 41, 107, 35, 226, 68, 234, 223, 245, 93, - 27, 222, 156, 178, 238, 17, 166, 94, 17, 32, 4, 211, 244, 238, 153, 155, 124, 251, 84, 27, 24, - 181, 30, 62, 39, 10, 205, 80, 36, 200, 169, 126, 135, 91, 34, 243, 59, 138, 71, 139, 81, 122, - 32, 4, 249, 127, 248, 99, 200, 239, 97, 58, 47, 101, 113, 234, 47, 153, 251, 99, 195, 238, 58, - 209, 62, 79, 82, 158, 246, 104, 189, 122, 227, 79, 141, 32, 4, 216, 135, 181, 159, 147, 233, - 118, 112, 189, 56, 66, 185, 24, 223, 247, 190, 251, 107, 14, 55, 253, 118, 20, 103, 13, 146, - 118, 84, 217, 114, 68, 32, 3, 55, 72, 118, 32, 193, 11, 90, 79, 171, 240, 210, 127, 212, 50, - 136, 202, 240, 242, 91, 53, 27, 176, 114, 48, 235, 25, 155, 191, 85, 215, 179, 32, 7, 60, 186, - 164, 44, 164, 3, 52, 158, 62, 202, 42, 164, 34, 156, 39, 97, 241, 242, 57, 98, 16, 0, 46, 234, - 50, 242, 103, 36, 5, 42, 220, 32, 3, 54, 237, 18, 222, 139, 112, 60, 46, 63, 108, 110, 174, 47, - 57, 160, 216, 32, 41, 246, 139, 129, 182, 57, 27, 28, 201, 29, 194, 2, 3, 166, 32, 1, 231, 166, - 140, 238, 19, 197, 108, 196, 234, 26, 189, 31, 111, 60, 13, 157, 180, 28, 203, 124, 18, 218, - 112, 151, 28, 237, 157, 142, 74, 234, 145, 32, 1, 222, 126, 43, 229, 237, 144, 32, 71, 228, - 134, 109, 56, 4, 9, 182, 82, 226, 22, 57, 57, 96, 237, 189, 201, 188, 250, 143, 228, 168, 242, - 134, 32, 3, 84, 196, 181, 38, 231, 130, 57, 41, 14, 217, 197, 28, 205, 198, 192, 14, 222, 219, - 165, 223, 64, 96, 139, 249, 108, 125, 122, 1, 206, 33, 168, 32, 4, 127, 37, 41, 40, 69, 83, - 115, 128, 57, 163, 238, 214, 120, 89, 132, 32, 75, 86, 205, 195, 101, 38, 142, 53, 46, 0, 96, - 56, 121, 245, 198, 32, 3, 131, 244, 217, 63, 35, 70, 189, 36, 185, 108, 151, 105, 132, 254, - 196, 196, 113, 57, 67, 7, 30, 248, 110, 177, 121, 138, 20, 4, 224, 60, 97, 32, 1, 53, 24, 227, - 221, 240, 49, 77, 110, 222, 152, 144, 32, 81, 121, 130, 16, 67, 138, 39, 2, 205, 235, 235, 21, - 253, 57, 139, 32, 242, 128, 248, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 7, 255, 255, 255, 254, 239, 253, 240, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 239, 255, 225, 36, 32, 1, 95, 221, 207, 191, 219, 55, 97, 99, 251, 192, 205, 3, 114, 74, - 92, 4, 36, 106, 253, 169, 75, 241, 254, 245, 24, 64, 21, 99, 212, 158, 109, 32, 0, 168, 155, - 93, 165, 62, 251, 124, 91, 82, 159, 226, 74, 255, 187, 119, 61, 168, 110, 222, 26, 135, 252, - 101, 233, 211, 126, 44, 147, 141, 111, 220, 32, 5, 244, 149, 55, 66, 246, 81, 145, 22, 178, - 191, 85, 183, 29, 228, 251, 146, 44, 196, 156, 226, 189, 245, 232, 111, 128, 226, 94, 134, 161, - 94, 215, 32, 0, 124, 211, 136, 212, 237, 132, 89, 190, 157, 73, 240, 3, 81, 253, 127, 143, 159, - 153, 111, 44, 228, 127, 176, 196, 153, 73, 204, 148, 222, 43, 243, 32, 2, 41, 134, 84, 204, 74, - 209, 68, 173, 234, 92, 215, 26, 246, 3, 176, 88, 94, 125, 120, 106, 171, 106, 25, 227, 153, - 146, 168, 108, 130, 87, 102, 32, 1, 167, 29, 172, 208, 222, 255, 9, 85, 21, 140, 71, 76, 106, - 241, 229, 213, 23, 86, 218, 165, 151, 6, 14, 227, 167, 2, 244, 194, 160, 109, 207, 32, 4, 255, - 123, 163, 6, 56, 129, 72, 164, 9, 96, 223, 95, 8, 21, 6, 147, 165, 46, 5, 220, 82, 218, 95, 65, - 51, 106, 29, 31, 60, 158, 170, 32, 2, 127, 189, 209, 131, 28, 64, 164, 82, 4, 176, 111, 175, - 132, 10, 131, 73, 210, 151, 2, 238, 41, 109, 47, 160, 153, 181, 14, 143, 158, 79, 85, 32, 0, - 180, 83, 227, 153, 248, 117, 67, 240, 124, 101, 20, 41, 99, 46, 170, 12, 1, 89, 22, 76, 105, - 220, 131, 35, 133, 36, 67, 140, 78, 156, 196, 32, 7, 103, 245, 221, 83, 165, 245, 206, 121, - 240, 5, 30, 33, 100, 156, 91, 148, 19, 184, 179, 147, 241, 121, 17, 38, 224, 246, 100, 155, - 166, 20, 195, 32, 5, 78, 64, 59, 220, 248, 56, 206, 236, 165, 189, 155, 85, 14, 110, 172, 58, - 48, 178, 228, 63, 118, 241, 158, 35, 122, 56, 31, 125, 113, 108, 125, 32, 4, 226, 254, 215, - 177, 61, 91, 140, 61, 196, 148, 104, 63, 127, 119, 114, 0, 4, 21, 91, 215, 147, 158, 175, 142, - 12, 235, 253, 25, 228, 146, 119, 32, 0, 49, 226, 144, 38, 216, 177, 200, 182, 133, 44, 17, 153, - 251, 225, 40, 140, 62, 69, 147, 216, 223, 181, 69, 77, 206, 246, 108, 141, 251, 71, 52, 32, 2, - 120, 169, 191, 163, 21, 134, 50, 114, 57, 38, 164, 59, 95, 233, 84, 82, 198, 149, 156, 22, 245, - 226, 237, 44, 80, 87, 238, 10, 34, 252, 194, 32, 4, 176, 201, 218, 169, 245, 24, 19, 128, 150, - 160, 46, 111, 81, 30, 18, 144, 123, 88, 98, 224, 208, 23, 97, 233, 96, 117, 179, 73, 144, 243, - 123, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 32, 6, 173, 49, 21, 158, 122, 84, 204, 189, 120, 170, 50, 50, 9, 148, 55, 132, 167, - 68, 143, 159, 255, 247, 71, 172, 115, 243, 3, 155, 196, 167, 138, 32, 4, 217, 76, 180, 139, - 176, 217, 11, 243, 207, 252, 154, 192, 137, 41, 111, 57, 90, 135, 71, 231, 114, 174, 44, 36, - 171, 238, 221, 46, 44, 4, 212, 32, 3, 104, 235, 170, 158, 191, 37, 78, 41, 40, 108, 103, 133, - 159, 242, 130, 224, 242, 191, 52, 213, 37, 102, 143, 126, 151, 189, 193, 84, 210, 197, 175, 32, - 3, 89, 248, 104, 149, 197, 48, 181, 235, 34, 205, 235, 12, 240, 143, 145, 205, 250, 4, 236, 30, - 10, 92, 101, 252, 193, 159, 143, 180, 230, 6, 225, 32, 5, 136, 251, 4, 187, 109, 185, 93, 122, - 224, 220, 126, 200, 40, 109, 217, 39, 36, 21, 190, 240, 232, 250, 196, 91, 188, 89, 172, 80, - 121, 251, 197, 32, 1, 111, 83, 106, 97, 202, 254, 209, 6, 173, 240, 252, 164, 82, 7, 224, 97, - 43, 170, 100, 11, 116, 202, 231, 251, 250, 128, 242, 226, 82, 136, 48, 32, 4, 153, 150, 239, - 193, 196, 177, 132, 172, 200, 165, 223, 53, 24, 235, 76, 250, 245, 197, 80, 180, 170, 139, 2, - 254, 136, 131, 70, 46, 37, 49, 231, 32, 0, 86, 74, 64, 98, 112, 228, 198, 26, 65, 236, 91, 39, - 36, 6, 154, 69, 20, 124, 58, 213, 99, 176, 37, 229, 246, 236, 43, 208, 15, 23, 156, 32, 4, 103, - 120, 243, 154, 150, 52, 17, 243, 253, 106, 159, 106, 191, 121, 159, 177, 200, 92, 26, 253, 67, - 248, 230, 35, 16, 176, 38, 229, 139, 47, 217, 32, 6, 222, 171, 49, 136, 19, 201, 120, 131, 213, - 222, 1, 253, 81, 182, 155, 115, 141, 254, 169, 37, 142, 182, 74, 161, 16, 21, 243, 201, 239, - 166, 237, 32, 3, 194, 35, 118, 25, 203, 239, 88, 140, 107, 15, 136, 189, 11, 41, 196, 36, 17, - 147, 104, 53, 45, 41, 248, 175, 68, 242, 183, 160, 235, 76, 182, 32, 5, 17, 199, 242, 192, 147, - 65, 0, 240, 120, 32, 247, 227, 118, 152, 107, 93, 4, 25, 227, 81, 107, 67, 188, 206, 52, 204, - 225, 191, 11, 196, 128, 32, 6, 186, 164, 209, 236, 178, 225, 233, 6, 195, 82, 146, 237, 249, - 168, 60, 158, 33, 10, 76, 196, 40, 127, 22, 31, 165, 117, 101, 239, 29, 7, 76, 32, 1, 226, 126, - 209, 63, 20, 29, 90, 89, 251, 20, 179, 140, 218, 217, 69, 48, 115, 38, 193, 235, 196, 169, 22, - 196, 204, 232, 239, 3, 239, 92, 41, 32, 0, 5, 15, 121, 103, 3, 117, 142, 239, 173, 234, 237, - 79, 27, 214, 108, 5, 207, 244, 232, 195, 236, 211, 88, 66, 32, 141, 141, 132, 196, 193, 86, 32, - 7, 158, 68, 239, 145, 204, 224, 145, 205, 170, 63, 191, 196, 153, 22, 160, 11, 146, 44, 74, - 225, 60, 110, 38, 49, 152, 149, 191, 244, 145, 10, 194, 32, 5, 173, 0, 28, 169, 187, 187, 96, - 93, 152, 117, 4, 157, 177, 36, 34, 201, 16, 52, 49, 208, 136, 121, 107, 138, 228, 95, 165, 135, - 26, 69, 47, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 32, 7, 255, 255, 255, 254, 239, 253, 240, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 239, 255, 225, 1, 8, - 122, 107, 46, 123, 111, 34, 21, 230, 57, 88, 106, 172, 247, 89, 5, 135, 225, 209, 37, 8, 43, - 63, 196, 70, 132, 198, 92, 63, 41, 32, 3, 37, 79, 82, 161, 150, 171, 6, 235, 166, 230, 28, 75, - 255, 199, 173, 5, 64, 127, 243, 17, 216, 246, 121, 201, 242, 72, 71, 190, 113, 0, 94, 74, 254, - 1, 190, 5, 61, 96, 250, 121, 19, 39, 152, 157, 244, 3, 124, 85, 63, 93, 4, 173, 148, 68, 213, - 168, 183, 190, 219, 147, 115, 143, 161, 69, 180, 197, 73, 177, 234, 208, 27, 60, 41, 216, 97, - 7, 238, 84, 243, 112, 223, 124, 198, 87, 62, 100, 1, 182, 121, 114, 68, 57, 96, 130, 251, 242, - 178, 56, 157, 104, 149, 253, 46, 114, 210, 221, 95, 187, 154, 66, 26, 149, 116, 247, 66, 212, - 37, 90, 22, 88, 55, 4, 71, 127, 215, 53, 53, 16, 36, 165, 107, 85, 164, 80, 243, 242, 36, 235, - 226, 199, 191, 219, 14, 217, 84, 59, 78, 176, 165, 80, 100, 218, 54, 140, 125, 197, 249, 99, - 247, 17, 71, 160, 180, 121, 49, 249, 172, 16, 189, 110, 38, 119, 42, 116, 95, 138, 195, 26, - 201, 251, 87, 172, 17, 108, 168, 101, 136, 252, 118, 147, 242, 33, 11, 16, 200, 158, 124, 254, - 165, 5, 73, 12, 53, 221, 137, 122, 171, 78, 203, 75, 123, 4, 181, 50, 42, 37, 32, 13, 234, 176, - 114, 190, 190, 94, 157, 8, 119, 121, 78, 36, 5, 32, 246, 204, 151, 153, 10, 5, 249, 73, 32, - 144, 122, 132, 32, 190, 22, 176, 120, 255, 129, 202, 116, 185, 1, 55, 125, 178, 79, 82, 161, - 150, 171, 6, 235, 166, 230, 28, 75, 255, 199, 173, 5, 64, 127, 243, 17, 216, 246, 121, 201, - 242, 72, 71, 190, 113, 0, 94, 74, 254, 1, 190, 5, 61, 96, 250, 121, 19, 39, 152, 157, 244, 3, - 124, 85, 63, 93, 4, 173, 148, 68, 213, 168, 183, 190, 219, 147, 115, 143, 161, 69, 180, 197, - 73, 177, 234, 208, 27, 60, 41, 216, 97, 7, 238, 84, 243, 112, 223, 124, 198, 87, 62, 100, 1, - 182, 121, 114, 68, 57, 96, 130, 251, 242, 178, 56, 157, 104, 149, 253, 46, 114, 210, 221, 95, - 187, 154, 66, 26, 149, 116, 247, 66, 212, 37, 90, 22, 88, 55, 4, 71, 127, 215, 53, 53, 16, 36, - 165, 107, 85, 164, 80, 243, 242, 36, 235, 226, 199, 191, 219, 14, 217, 84, 59, 78, 176, 165, - 80, 100, 218, 54, 140, 125, 197, 249, 99, 247, 17, 71, 160, 180, 121, 49, 249, 172, 16, 189, - 110, 38, 119, 42, 116, 95, 138, 195, 26, 201, 251, 87, 172, 17, 108, 168, 101, 136, 252, 118, - 147, 242, 33, 11, 16, 200, 158, 124, 254, 165, 5, 73, 12, 53, 221, 137, 122, 171, 78, 203, 75, - 123, 4, 181, 50, 42, 37, 32, 13, 234, 176, 114, 190, 190, 94, 157, 23, 32, 2, 185, 190, 201, - 81, 118, 127, 96, 227, 30, 92, 42, 34, 163, 3, 82, 215, 27, 61, 147, 164, 148, 214, 45, 15, 93, - 249, 51, 219, 250, 115, 162, 32, 7, 41, 187, 255, 90, 251, 72, 136, 90, 235, 48, 9, 216, 9, 78, - 76, 17, 47, 221, 89, 51, 162, 235, 172, 239, 223, 131, 112, 12, 195, 222, 159, 32, 7, 41, 187, - 255, 90, 251, 72, 136, 90, 235, 48, 9, 216, 9, 78, 76, 17, 47, 221, 89, 51, 162, 235, 172, 239, - 223, 131, 112, 12, 195, 222, 159, 32, 7, 41, 187, 255, 90, 251, 72, 136, 90, 235, 48, 9, 216, - 9, 78, 76, 17, 47, 221, 89, 51, 162, 235, 172, 239, 223, 131, 112, 12, 195, 222, 159, 32, 4, - 25, 60, 113, 191, 207, 181, 53, 117, 122, 157, 0, 52, 14, 179, 224, 96, 126, 206, 249, 137, - 120, 223, 79, 77, 70, 102, 148, 246, 30, 58, 59, 32, 0, 13, 140, 11, 79, 101, 213, 145, 52, - 151, 147, 74, 78, 103, 93, 96, 173, 180, 60, 14, 117, 196, 252, 7, 85, 187, 0, 72, 233, 241, - 227, 226, 32, 5, 73, 104, 77, 54, 58, 127, 149, 22, 14, 148, 198, 175, 42, 217, 184, 24, 217, - 191, 17, 201, 39, 5, 212, 245, 108, 51, 110, 191, 153, 243, 73, 32, 2, 19, 137, 96, 155, 213, - 247, 87, 65, 5, 174, 150, 54, 6, 243, 229, 50, 214, 13, 128, 243, 254, 241, 107, 94, 56, 172, - 117, 35, 224, 76, 237, 32, 7, 165, 244, 153, 74, 91, 203, 107, 64, 211, 140, 180, 235, 183, 23, - 25, 98, 144, 119, 65, 0, 11, 136, 213, 221, 77, 186, 231, 81, 54, 204, 250, 32, 4, 234, 254, - 109, 135, 47, 223, 117, 85, 66, 213, 205, 86, 115, 126, 131, 201, 76, 195, 96, 235, 238, 108, - 170, 120, 240, 43, 149, 170, 111, 0, 202, 32, 3, 108, 248, 59, 224, 216, 59, 170, 178, 81, 36, - 101, 253, 115, 81, 14, 17, 134, 248, 147, 250, 14, 134, 171, 69, 10, 197, 67, 112, 96, 26, 248, - 32, 6, 11, 203, 39, 1, 5, 246, 221, 26, 247, 230, 248, 242, 187, 79, 151, 83, 135, 41, 139, 29, - 158, 127, 26, 249, 133, 73, 37, 39, 95, 41, 201, 32, 0, 245, 100, 132, 184, 51, 39, 115, 169, - 27, 16, 178, 240, 215, 220, 85, 146, 222, 3, 48, 155, 249, 104, 95, 142, 12, 146, 91, 23, 143, - 224, 32, 32, 5, 136, 91, 212, 33, 174, 9, 235, 179, 25, 47, 15, 159, 1, 199, 174, 64, 153, 78, - 210, 20, 183, 139, 87, 134, 132, 0, 77, 92, 31, 145, 68, 32, 4, 79, 182, 21, 112, 215, 33, 13, - 211, 20, 53, 56, 100, 79, 14, 49, 52, 108, 154, 163, 96, 203, 186, 242, 206, 132, 194, 83, 204, - 125, 206, 119, 32, 2, 47, 144, 43, 30, 233, 166, 165, 0, 216, 53, 137, 49, 126, 40, 117, 130, - 187, 14, 197, 190, 84, 5, 54, 119, 243, 71, 96, 254, 84, 174, 78, 32, 5, 172, 2, 122, 225, 228, - 225, 136, 13, 98, 203, 118, 42, 130, 102, 124, 29, 193, 182, 209, 61, 122, 87, 168, 75, 146, - 115, 225, 201, 185, 209, 185, 32, 2, 29, 234, 213, 87, 181, 6, 132, 210, 24, 41, 25, 13, 46, - 248, 241, 45, 101, 13, 194, 102, 214, 0, 251, 58, 130, 37, 67, 216, 247, 28, 192, 32, 4, 85, - 26, 129, 216, 192, 23, 218, 104, 224, 233, 37, 158, 65, 139, 21, 169, 239, 82, 54, 103, 184, - 61, 123, 239, 22, 53, 51, 25, 203, 56, 10, 32, 1, 197, 88, 69, 30, 42, 29, 232, 20, 113, 239, - 94, 203, 74, 129, 148, 18, 136, 8, 228, 174, 19, 89, 19, 99, 143, 33, 65, 121, 209, 186, 64, - 32, 1, 40, 249, 95, 107, 238, 241, 61, 121, 0, 251, 76, 248, 241, 141, 199, 14, 252, 192, 174, - 99, 252, 21, 125, 236, 237, 205, 31, 17, 122, 136, 65, 32, 3, 58, 205, 98, 230, 49, 144, 14, - 123, 71, 11, 32, 127, 229, 127, 214, 174, 17, 86, 204, 202, 214, 91, 189, 188, 173, 197, 42, - 131, 68, 53, 158, 32, 2, 148, 100, 44, 115, 248, 179, 128, 111, 48, 110, 86, 181, 103, 101, - 153, 25, 42, 122, 126, 63, 38, 39, 182, 68, 109, 62, 203, 152, 1, 182, 93, 23, 32, 0, 177, 112, - 221, 230, 64, 11, 164, 35, 3, 8, 65, 218, 108, 182, 90, 245, 190, 38, 24, 154, 229, 253, 43, - 142, 0, 130, 222, 131, 163, 199, 191, 32, 5, 253, 167, 130, 154, 76, 153, 7, 23, 68, 51, 154, - 166, 154, 10, 20, 9, 65, 61, 135, 73, 47, 129, 187, 29, 120, 18, 32, 204, 8, 228, 138, 32, 5, - 253, 167, 130, 154, 76, 153, 7, 23, 68, 51, 154, 166, 154, 10, 20, 9, 65, 61, 135, 73, 47, 129, - 187, 29, 120, 18, 32, 204, 8, 228, 138, 32, 5, 253, 167, 130, 154, 76, 153, 7, 23, 68, 51, 154, - 166, 154, 10, 20, 9, 65, 61, 135, 73, 47, 129, 187, 29, 120, 18, 32, 204, 8, 228, 138, 32, 4, - 204, 242, 235, 254, 170, 58, 180, 146, 175, 33, 98, 116, 149, 249, 198, 214, 176, 105, 176, 63, - 251, 152, 191, 49, 93, 107, 35, 141, 179, 214, 198, 32, 5, 88, 0, 73, 35, 11, 51, 169, 127, - 189, 228, 4, 80, 200, 106, 181, 180, 224, 42, 189, 206, 155, 93, 50, 70, 78, 17, 221, 63, 122, - 64, 87, 32, 0, 65, 187, 83, 167, 237, 79, 88, 148, 50, 180, 230, 202, 144, 62, 23, 152, 26, - 148, 150, 210, 159, 60, 162, 94, 88, 128, 241, 0, 62, 177, 87, 32, 6, 202, 120, 8, 33, 88, 198, - 76, 203, 241, 179, 83, 210, 208, 13, 97, 224, 119, 3, 192, 245, 59, 54, 140, 117, 59, 97, 76, - 216, 121, 67, 255, 32, 1, 218, 169, 233, 62, 98, 15, 85, 98, 119, 31, 162, 109, 182, 171, 175, - 155, 59, 166, 160, 232, 76, 98, 188, 118, 125, 117, 24, 130, 227, 157, 116, 32, 2, 10, 131, - 133, 220, 5, 113, 0, 251, 247, 79, 249, 46, 174, 45, 4, 106, 227, 192, 154, 202, 126, 111, 12, - 70, 49, 42, 138, 182, 129, 119, 206, 32, 2, 177, 236, 177, 120, 193, 106, 63, 83, 255, 158, 47, - 96, 53, 228, 187, 29, 82, 48, 98, 144, 58, 32, 181, 93, 166, 99, 160, 16, 147, 126, 205, 32, 3, - 124, 158, 193, 250, 134, 70, 161, 37, 180, 66, 215, 240, 91, 103, 81, 55, 119, 151, 240, 122, - 49, 152, 253, 21, 157, 194, 118, 204, 154, 50, 210, 32, 1, 130, 58, 19, 35, 168, 37, 175, 91, - 187, 4, 137, 46, 126, 147, 175, 240, 122, 106, 145, 247, 4, 6, 28, 219, 110, 6, 89, 106, 171, - 122, 46, 32, 7, 46, 219, 171, 86, 142, 56, 253, 17, 210, 82, 40, 178, 123, 251, 223, 224, 181, - 1, 51, 161, 211, 168, 142, 233, 27, 44, 173, 149, 68, 196, 148, 32, 2, 195, 209, 107, 42, 33, - 250, 250, 220, 20, 186, 72, 57, 139, 57, 243, 166, 239, 195, 172, 209, 146, 1, 198, 238, 81, - 17, 120, 140, 123, 53, 66, 32, 1, 89, 244, 9, 149, 65, 28, 145, 169, 192, 160, 50, 161, 195, - 170, 236, 161, 142, 62, 193, 177, 63, 71, 153, 208, 64, 177, 255, 91, 82, 10, 156, 32, 4, 243, - 116, 187, 26, 108, 113, 71, 86, 1, 14, 120, 31, 168, 141, 184, 220, 29, 214, 174, 245, 90, 149, - 208, 226, 238, 117, 214, 233, 212, 252, 241, 32, 7, 229, 192, 89, 78, 105, 2, 255, 174, 236, - 100, 177, 115, 255, 9, 182, 190, 4, 53, 118, 48, 193, 8, 237, 45, 177, 217, 202, 9, 79, 121, 7, - 32, 5, 90, 40, 57, 46, 10, 89, 140, 53, 199, 232, 129, 134, 25, 222, 218, 39, 42, 143, 83, 161, - 44, 6, 191, 133, 174, 201, 176, 207, 148, 97, 131, 32, 7, 132, 111, 173, 88, 120, 117, 200, - 143, 251, 234, 181, 34, 111, 125, 83, 133, 144, 97, 13, 6, 68, 53, 15, 112, 15, 45, 196, 240, - 246, 250, 24, 32, 7, 15, 67, 4, 99, 90, 199, 22, 114, 244, 176, 34, 72, 8, 195, 232, 234, 216, - 152, 130, 213, 75, 146, 49, 248, 226, 79, 226, 240, 28, 170, 55, 32, 6, 7, 240, 50, 223, 56, - 217, 122, 130, 10, 217, 101, 58, 143, 84, 234, 212, 3, 132, 11, 197, 138, 192, 188, 30, 131, - 169, 7, 245, 175, 161, 162, 32, 6, 232, 158, 56, 95, 230, 63, 244, 175, 237, 55, 162, 218, 226, - 159, 76, 184, 15, 30, 11, 204, 189, 241, 87, 181, 136, 203, 175, 53, 110, 126, 67, 1, 0, 32, 7, - 255, 255, 255, 255, 255, 253, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 32, 7, 255, 255, 255, 255, 255, - 185, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 251, 225, 32, 7, 255, 255, 255, 255, 255, 185, 240, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 251, 225, 32, 7, 255, 255, 255, 255, 255, 245, 112, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 97, 32, 7, 255, 255, - 255, 255, 255, 103, 16, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 247, 1, 1, 251, 251, 127, 1, 251, 1, 128, 2, 2, 1, 5, - 3, 33, 72, 32, 32, 7, 255, 255, 255, 255, 255, 200, 208, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 193, 32, 6, 47, - 252, 208, 5, 81, 69, 218, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 246, 251, 47, 255, 208, 0, 80, 19, 43, 32, 7, 255, 255, 255, 255, 255, 194, 112, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 252, 97, 32, 0, 0, 0, 0, 0, 0, 21, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 64, 32, 7, 255, 255, 255, 255, 255, 209, 80, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 65, 32, 7, - 144, 1, 16, 1, 16, 151, 69, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 251, 238, 144, 0, 16, 0, 16, 8, 230, 32, 7, 255, 255, 255, 255, 255, 243, 80, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 65, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 32, 7, 255, 255, 255, 255, 255, 224, 48, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 33, 32, 2, - 47, 252, 208, 1, 17, 35, 65, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 247, 255, 47, 255, 208, 0, 16, 17, 34, 32, 7, 255, 255, 255, 255, 255, 213, 144, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 253, 129, 32, 1, 176, 7, 112, 1, 17, 69, 82, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 246, 254, 176, 0, 112, 0, 16, 19, 35, 32, 7, 255, 255, 255, - 255, 255, 192, 80, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 252, 65, 32, 7, 144, 1, 16, 1, 16, 151, 69, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 238, 144, 0, 16, 0, 16, 8, - 230, 32, 7, 255, 255, 255, 255, 255, 205, 16, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 1, 32, 1, 176, 7, 112, 1, 17, - 69, 82, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 254, - 176, 0, 112, 0, 16, 19, 35, 32, 7, 255, 255, 255, 255, 255, 251, 208, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 193, - 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 7, 255, 255, 255, 255, 255, 230, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 129, 32, 7, 255, 255, - 255, 255, 255, 245, 112, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 97, 32, 7, 255, 255, 255, 255, 255, 249, 176, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 161, 32, 6, 111, 252, 207, 252, 208, 76, 229, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 253, 223, 111, 255, 207, 255, 208, 4, 134, 32, 7, 255, - 255, 255, 255, 255, 196, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 129, 32, 6, 111, 252, 207, 252, 208, 76, 229, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 223, 111, 255, - 207, 255, 208, 4, 134, 32, 7, 255, 255, 255, 255, 255, 232, 176, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 161, 32, - 2, 47, 252, 208, 1, 17, 69, 65, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 246, 255, 47, 255, 208, 0, 16, 19, 34, 32, 7, 255, 255, 255, 255, 255, 226, 80, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 254, 65, 32, 7, 255, 255, 255, 255, 255, 245, 112, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 97, 32, 7, - 255, 255, 255, 255, 255, 198, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 161, 32, 0, 0, 0, 0, 0, 0, 2, 32, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 32, 7, 255, 255, 255, 255, - 255, 222, 16, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 254, 1, 32, 7, 255, 255, 255, 255, 255, 228, 112, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 254, 97, 32, 7, 255, 255, 255, 255, 255, 188, 16, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 1, 32, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 7, 255, 255, - 255, 255, 255, 253, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 32, 0, 15, 252, 208, 1, 16, 20, 81, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127, 15, 255, 208, 0, 16, - 1, 50, 32, 7, 255, 255, 255, 255, 255, 241, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 33, 32, 2, 47, 252, 208, - 1, 17, 69, 65, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, - 255, 47, 255, 208, 0, 16, 19, 34, 32, 7, 255, 255, 255, 255, 255, 219, 240, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, - 225, 32, 7, 144, 1, 16, 1, 16, 151, 69, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 251, 238, 144, 0, 16, 0, 16, 8, 230, 32, 7, 255, 255, 255, 255, 255, 217, - 208, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 253, 193, 32, 0, 15, 252, 208, 1, 16, 15, 137, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 191, 15, 255, 208, 0, 16, 0, 234, 32, 7, - 255, 255, 255, 255, 255, 211, 112, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 97, 32, 1, 176, 7, 112, 1, 17, 69, 82, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 254, 176, 0, - 112, 0, 16, 19, 35, 32, 7, 255, 255, 255, 255, 255, 234, 208, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 193, 32, - 7, 255, 255, 255, 255, 255, 253, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 32, 7, 255, 255, 255, 255, - 255, 215, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 253, 161, 32, 7, 255, 255, 255, 255, 255, 245, 112, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 97, 32, 7, 255, 255, 255, 255, 255, 228, 112, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 97, 32, 6, 111, 252, - 207, 252, 208, 76, 229, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 253, 223, 111, 255, 207, 255, 208, 4, 134, 32, 7, 255, 255, 255, 255, 255, 202, 240, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 252, 225, 32, 0, 176, 3, 48, 1, 17, 69, 116, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 246, 253, 176, 0, 48, 0, 16, 19, 37, 32, 7, 255, 255, 255, - 255, 255, 247, 144, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 129, 32, 7, 255, 255, 255, 255, 255, 247, 144, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 129, 32, 7, 255, 255, 255, 255, 255, 245, 112, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 97, 32, 0, - 15, 252, 208, 1, 16, 6, 197, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 223, 15, 255, 208, 0, 16, 0, 102, 32, 7, 255, 255, 255, 255, 255, 236, 240, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 254, 225, 32, 2, 47, 252, 208, 1, 17, 69, 65, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 246, 255, 47, 255, 208, 0, 16, 19, 34, 32, 7, 255, 255, 255, - 255, 255, 190, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 252, 33, 32, 7, 255, 255, 255, 255, 255, 185, 240, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 251, 225, 32, 7, 255, 255, 255, 255, 255, 239, 16, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 1, 32, 7, 255, 255, - 255, 255, 255, 253, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 225, 32, 7, 255, 255, 255, 255, 255, 207, 48, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 253, 33, 32, 5, 176, 7, 112, 9, 145, 69, 235, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 246, 250, 176, 0, 112, 0, 144, 19, 44, 64, -]; From efd46f0b0aea3aa95d94bba7de86cb96611b40d3 Mon Sep 17 00:00:00 2001 From: Uriel Mihura <43704209+uri-99@users.noreply.github.com> Date: Fri, 27 Sep 2024 18:53:58 -0300 Subject: [PATCH 05/12] feat: Allow merkle trees of 1 node (its root) (#919) * feat: change is_power_of_two to allow merkle trees of 1 node (its root) * fix: unit tests * chore: cargo fmt * Update crypto/src/merkle_tree/proof.rs Co-authored-by: Mario Rugiero --------- Co-authored-by: Diego K <43053772+diegokingston@users.noreply.github.com> Co-authored-by: Mario Rugiero --- crypto/src/merkle_tree/merkle.rs | 2 +- crypto/src/merkle_tree/proof.rs | 4 ++-- crypto/src/merkle_tree/utils.rs | 14 ++++++-------- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/crypto/src/merkle_tree/merkle.rs b/crypto/src/merkle_tree/merkle.rs index 9f4b126d1..bbfe89bf7 100644 --- a/crypto/src/merkle_tree/merkle.rs +++ b/crypto/src/merkle_tree/merkle.rs @@ -123,7 +123,7 @@ mod tests { let values: Vec = vec![FE::new(1)]; // Single element let merkle_tree = MerkleTree::>::build(&values).unwrap(); - assert_eq!(merkle_tree.root, FE::new(4)); // Adjusted expected value + assert_eq!(merkle_tree.root, FE::new(2)); // Adjusted expected value } #[test] diff --git a/crypto/src/merkle_tree/proof.rs b/crypto/src/merkle_tree/proof.rs index 6f875fa6a..65e37555a 100644 --- a/crypto/src/merkle_tree/proof.rs +++ b/crypto/src/merkle_tree/proof.rs @@ -163,8 +163,8 @@ mod tests { let merkle_tree = MerkleTree::>::build(&values).unwrap(); // Update the expected root value based on the actual logic of TestBackend - // For example, if combining two `1`s results in `4`, update this accordingly - let expected_root = FE::new(4); // Assuming combining two `1`s results in `4` + // For example, in this case hashing a single `1` results in `2` + let expected_root = FE::new(2); // Assuming hashing a `1`s results in `2` assert_eq!( merkle_tree.root, expected_root, "The root of the Merkle tree does not match the expected value." diff --git a/crypto/src/merkle_tree/utils.rs b/crypto/src/merkle_tree/utils.rs index 33740780e..1a32d205a 100644 --- a/crypto/src/merkle_tree/utils.rs +++ b/crypto/src/merkle_tree/utils.rs @@ -29,13 +29,12 @@ pub fn complete_until_power_of_two(mut values: Vec) -> Vec { } // ! NOTE ! -// We in this function we say 2^0 = 1 is not a power of two when it is infact true. We -// need this to maintain that the smallest tree at two leaves counts and we could not find -// a name that wasn't overly verbose. In the case of a single value being present in a leaf node -// this indicates we pad to next power of two (i.e. 2). The function is private and is only used -// to ensure the tree has a power of 2 number of leaves. +// In this function we say 2^0 = 1 is a power of two. +// In turn, this makes the smallest tree of one leaf, possible. +// The function is private and is only used to ensure the tree +// has a power of 2 number of leaves. fn is_power_of_two(x: usize) -> bool { - (x > 1) && ((x & (x - 1)) == 0) + (x & (x - 1)) == 0 } // ! CAUTION ! @@ -124,9 +123,8 @@ mod tests { let mut expected_leaves = vec![FE::new(2)]; expected_leaves.extend([FE::new(2)]); - assert_eq!(hashed_leaves.len(), 2); + assert_eq!(hashed_leaves.len(), 1); assert_eq!(hashed_leaves[0], expected_leaves[0]); - assert_eq!(hashed_leaves[1], expected_leaves[1]); } const ROOT: usize = 0; From 9617e52e88d5422787192244cd9648727b9cd4ab Mon Sep 17 00:00:00 2001 From: erhant Date: Tue, 1 Oct 2024 17:16:14 +0300 Subject: [PATCH 06/12] add prime field for stark101 tutorial (#875) Co-authored-by: Diego K <43053772+diegokingston@users.noreply.github.com> --- math/src/field/fields/fft_friendly/mod.rs | 2 + .../fft_friendly/stark_101_prime_field.rs | 113 ++++++++++++++++++ 2 files changed, 115 insertions(+) create mode 100644 math/src/field/fields/fft_friendly/stark_101_prime_field.rs diff --git a/math/src/field/fields/fft_friendly/mod.rs b/math/src/field/fields/fft_friendly/mod.rs index a9b2f0f2e..535b94ecc 100644 --- a/math/src/field/fields/fft_friendly/mod.rs +++ b/math/src/field/fields/fft_friendly/mod.rs @@ -2,6 +2,8 @@ pub mod babybear; /// Implemenation of the quadratic extension of the babybear field pub mod quadratic_babybear; +/// Implementation of the prime field used in [Stark101](https://starkware.co/stark-101/) tutorial, p = 3 * 2^30 + 1 +pub mod stark_101_prime_field; /// Implementation of two-adic prime field over 256 bit unsigned integers. pub mod stark_252_prime_field; /// Implemenation of the Goldilocks Prime Field p = 2^64 - 2^32 + 1 diff --git a/math/src/field/fields/fft_friendly/stark_101_prime_field.rs b/math/src/field/fields/fft_friendly/stark_101_prime_field.rs new file mode 100644 index 000000000..d6232a414 --- /dev/null +++ b/math/src/field/fields/fft_friendly/stark_101_prime_field.rs @@ -0,0 +1,113 @@ +use crate::{ + field::{ + element::FieldElement, + fields::montgomery_backed_prime_fields::{IsModulus, U64PrimeField}, + traits::IsFFTField, + }, + unsigned_integer::element::{UnsignedInteger, U64}, +}; + +#[derive(Clone, Debug, Hash, Copy)] +pub struct MontgomeryConfigStark101PrimeField; +impl IsModulus for MontgomeryConfigStark101PrimeField { + /// 3 * 2^30 + 1 + const MODULUS: U64 = U64::from_hex_unchecked("c0000001"); +} + +pub type Stark101PrimeField = U64PrimeField; + +impl IsFFTField for Stark101PrimeField { + const TWO_ADICITY: u64 = 30; + + const TWO_ADIC_PRIMITVE_ROOT_OF_UNITY: U64 = UnsignedInteger::from_hex_unchecked("bb6e79d"); + + fn field_name() -> &'static str { + "stark101" + } +} + +impl FieldElement { + pub fn to_bytes_le(&self) -> [u8; 8] { + let limbs = self.representative().limbs; + limbs[0].to_le_bytes() + } + + pub fn to_bytes_be(&self) -> [u8; 8] { + let limbs = self.representative().limbs; + limbs[0].to_be_bytes() + } +} + +#[allow(clippy::non_canonical_partial_ord_impl)] +impl PartialOrd for FieldElement { + fn partial_cmp(&self, other: &Self) -> Option { + self.representative().partial_cmp(&other.representative()) + } +} + +impl Ord for FieldElement { + fn cmp(&self, other: &Self) -> core::cmp::Ordering { + self.representative().cmp(&other.representative()) + } +} + +#[cfg(test)] +mod test_stark101_prime_field { + use super::Stark101PrimeField; + use crate::{ + field::{element::FieldElement, traits::IsFFTField}, + traits::ByteConversion, + }; + + #[test] + fn two_adic_order() { + let w = FieldElement::::from( + Stark101PrimeField::TWO_ADIC_PRIMITVE_ROOT_OF_UNITY.limbs[0], + ); + + assert_eq!( + w.pow(1u64 << Stark101PrimeField::TWO_ADICITY), + FieldElement::one() + ); + assert_ne!( + w.pow(1u64 << (Stark101PrimeField::TWO_ADICITY >> 1)), + FieldElement::one() + ); + } + + #[test] + #[cfg(feature = "alloc")] + fn byte_serialization_for_a_number_matches_with_byte_conversion_implementation_le() { + let element = FieldElement::::from_hex_unchecked("0123456701234567"); + let bytes = element.to_bytes_le(); + let expected_bytes: [u8; 8] = ByteConversion::to_bytes_le(&element).try_into().unwrap(); + assert_eq!(bytes, expected_bytes); + } + + #[test] + #[cfg(feature = "alloc")] + fn byte_serialization_for_a_number_matches_with_byte_conversion_implementation_be() { + let element = FieldElement::::from_hex_unchecked("0123456701234567"); + let bytes = element.to_bytes_be(); + let expected_bytes: [u8; 8] = ByteConversion::to_bytes_be(&element).try_into().unwrap(); + assert_eq!(bytes, expected_bytes); + } + + #[test] + + fn byte_serialization_and_deserialization_works_le() { + let element = FieldElement::::from_hex_unchecked("7654321076543210"); + let bytes = element.to_bytes_le(); + let from_bytes = FieldElement::::from_bytes_le(&bytes).unwrap(); + assert_eq!(element, from_bytes); + } + + #[test] + + fn byte_serialization_and_deserialization_works_be() { + let element = FieldElement::::from_hex_unchecked("7654321076543210"); + let bytes = element.to_bytes_be(); + let from_bytes = FieldElement::::from_bytes_be(&bytes).unwrap(); + assert_eq!(element, from_bytes); + } +} From 7a427aacfd9241276c17f38ecbfd5e6dfae4e032 Mon Sep 17 00:00:00 2001 From: Nicole Graus Date: Tue, 1 Oct 2024 16:34:56 -0300 Subject: [PATCH 07/12] Optimize Mersenne31 Field (#921) * optimize add * save changes. Add, sub and mul checked * fix tests * add new inv * add mult by powers of two * replace inverse * test new inv * modify old algorithm for inv * fix tests extension * add mul for degree 4 extension * add fp4 isField and isSubField operations and benchmarks * new version for fp4 mul based on the paper * add mul of a fp2e by non-residue * change inv using mul_fp2_by_non_resiude * save work * wip fp2 test * add fp2 tests * add 2 * a^2 - 1 function * use karatsuba in fp4 mul version 1 * clean up * fix Fp as subfield of Fp2. Tests Fp plus Fp4 is now correct * fix inv * fix comments * fix comments * fixes * fix clippy * fix cargo check no-std * fix clippy * change zero function of isField to rust default * fix two_square_minus_one function and optimize inv function * fix clippy --------- Co-authored-by: Nicole Co-authored-by: Joaquin Carletti Co-authored-by: diegokingston Co-authored-by: Diego K <43053772+diegokingston@users.noreply.github.com> Co-authored-by: Joaquin Carletti <56092489+ColoCarletti@users.noreply.github.com> --- math/benches/criterion_field.rs | 4 +- math/benches/fields/mersenne31.rs | 64 +- math/src/field/fields/mersenne31/extension.rs | 304 --------- .../src/field/fields/mersenne31/extensions.rs | 627 ++++++++++++++++++ math/src/field/fields/mersenne31/field.rs | 272 ++++---- math/src/field/fields/mersenne31/mod.rs | 2 +- .../fields/p448_goldilocks_prime_field.rs | 2 +- math/src/field/traits.rs | 8 +- math/src/unsigned_integer/element.rs | 8 + 9 files changed, 863 insertions(+), 428 deletions(-) delete mode 100644 math/src/field/fields/mersenne31/extension.rs create mode 100644 math/src/field/fields/mersenne31/extensions.rs diff --git a/math/benches/criterion_field.rs b/math/benches/criterion_field.rs index 1c21822de..6e41cbb4b 100644 --- a/math/benches/criterion_field.rs +++ b/math/benches/criterion_field.rs @@ -2,7 +2,7 @@ use criterion::{criterion_group, criterion_main, Criterion}; use pprof::criterion::{Output, PProfProfiler}; mod fields; -use fields::mersenne31::mersenne31_ops_benchmarks; +use fields::mersenne31::{mersenne31_extension_ops_benchmarks, mersenne31_ops_benchmarks}; use fields::mersenne31_montgomery::mersenne31_mont_ops_benchmarks; use fields::{ stark252::starkfield_ops_benchmarks, u64_goldilocks::u64_goldilocks_ops_benchmarks, @@ -12,6 +12,6 @@ use fields::{ criterion_group!( name = field_benches; config = Criterion::default().with_profiler(PProfProfiler::new(100, Output::Flamegraph(None))); - targets = starkfield_ops_benchmarks, mersenne31_ops_benchmarks, mersenne31_mont_ops_benchmarks, u64_goldilocks_ops_benchmarks, u64_goldilocks_montgomery_ops_benchmarks + targets = mersenne31_ops_benchmarks, mersenne31_extension_ops_benchmarks, mersenne31_mont_ops_benchmarks, starkfield_ops_benchmarks, u64_goldilocks_ops_benchmarks, u64_goldilocks_montgomery_ops_benchmarks ); criterion_main!(field_benches); diff --git a/math/benches/fields/mersenne31.rs b/math/benches/fields/mersenne31.rs index 99e3921a5..e8d99d1c2 100644 --- a/math/benches/fields/mersenne31.rs +++ b/math/benches/fields/mersenne31.rs @@ -1,10 +1,18 @@ use std::hint::black_box; use criterion::Criterion; -use lambdaworks_math::field::{element::FieldElement, fields::mersenne31::field::Mersenne31Field}; +use lambdaworks_math::field::{ + element::FieldElement, + fields::mersenne31::{ + extensions::{Degree2ExtensionField, Degree4ExtensionField}, + field::Mersenne31Field, + }, +}; use rand::random; pub type F = FieldElement; +pub type Fp2E = FieldElement; +pub type Fp4E = FieldElement; #[inline(never)] #[no_mangle] @@ -17,6 +25,60 @@ pub fn rand_field_elements(num: usize) -> Vec<(F, F)> { result } +//TODO: Check if this is the correct way to bench. +pub fn rand_fp4e(num: usize) -> Vec<(Fp4E, Fp4E)> { + let mut result = Vec::with_capacity(num); + for _ in 0..result.capacity() { + result.push(( + Fp4E::new([ + Fp2E::new([F::new(random()), F::new(random())]), + Fp2E::new([F::new(random()), F::new(random())]), + ]), + Fp4E::new([ + Fp2E::new([F::new(random()), F::new(random())]), + Fp2E::new([F::new(random()), F::new(random())]), + ]), + )); + } + result +} + +pub fn mersenne31_extension_ops_benchmarks(c: &mut Criterion) { + let input: Vec> = [1000000].into_iter().map(rand_fp4e).collect::>(); + + let mut group = c.benchmark_group("Mersenne31 Fp4 operations"); + + for i in input.clone().into_iter() { + group.bench_with_input(format!("Mul of Fp4 {:?}", &i.len()), &i, |bench, i| { + bench.iter(|| { + for (x, y) in i { + black_box(black_box(x) * black_box(y)); + } + }); + }); + } + + for i in input.clone().into_iter() { + group.bench_with_input(format!("Square of Fp4 {:?}", &i.len()), &i, |bench, i| { + bench.iter(|| { + for (x, _) in i { + black_box(black_box(x).square()); + } + }); + }); + } + + for i in input.clone().into_iter() { + group.bench_with_input(format!("Inv of Fp4 {:?}", &i.len()), &i, |bench, i| { + bench.iter(|| { + for (x, _) in i { + black_box(black_box(x).inv().unwrap()); + } + }); + }); + } +} + pub fn mersenne31_ops_benchmarks(c: &mut Criterion) { let input: Vec> = [1, 10, 100, 1000, 10000, 100000, 1000000] .into_iter() diff --git a/math/src/field/fields/mersenne31/extension.rs b/math/src/field/fields/mersenne31/extension.rs deleted file mode 100644 index 3c89a2147..000000000 --- a/math/src/field/fields/mersenne31/extension.rs +++ /dev/null @@ -1,304 +0,0 @@ -use crate::field::{ - element::FieldElement, - errors::FieldError, - extensions::{ - cubic::{CubicExtensionField, HasCubicNonResidue}, - quadratic::{HasQuadraticNonResidue, QuadraticExtensionField}, - }, - traits::IsField, -}; - -use super::field::Mersenne31Field; - -//Note: The inverse calculation in mersenne31/plonky3 differs from the default quadratic extension so I implemented the complex extension. -////////////////// -#[derive(Clone, Debug)] -pub struct Mersenne31Complex; - -impl IsField for Mersenne31Complex { - //Elements represents a[0] = real, a[1] = imaginary - type BaseType = [FieldElement; 2]; - - /// Returns the component wise addition of `a` and `b` - fn add(a: &Self::BaseType, b: &Self::BaseType) -> Self::BaseType { - [a[0] + b[0], a[1] + b[1]] - } - - //NOTE: THIS uses Gauss algorithm. Bench this against plonky 3 implementation to see what is faster. - /// Returns the multiplication of `a` and `b` using the following - /// equation: - /// (a0 + a1 * t) * (b0 + b1 * t) = a0 * b0 + a1 * b1 * Self::residue() + (a0 * b1 + a1 * b0) * t - /// where `t.pow(2)` equals `Q::residue()`. - fn mul(a: &Self::BaseType, b: &Self::BaseType) -> Self::BaseType { - let a0b0 = a[0] * b[0]; - let a1b1 = a[1] * b[1]; - let z = (a[0] + a[1]) * (b[0] + b[1]); - [a0b0 - a1b1, z - a0b0 - a1b1] - } - - fn square(a: &Self::BaseType) -> Self::BaseType { - let [a0, a1] = a; - let v0 = a0 * a1; - let c0 = (a0 + a1) * (a0 - a1); - let c1 = v0 + v0; - [c0, c1] - } - /// Returns the component wise subtraction of `a` and `b` - fn sub(a: &Self::BaseType, b: &Self::BaseType) -> Self::BaseType { - [a[0] - b[0], a[1] - b[1]] - } - - /// Returns the component wise negation of `a` - fn neg(a: &Self::BaseType) -> Self::BaseType { - [-a[0], -a[1]] - } - - /// Returns the multiplicative inverse of `a` - fn inv(a: &Self::BaseType) -> Result { - let inv_norm = (a[0].pow(2_u64) + a[1].pow(2_u64)).inv()?; - Ok([a[0] * inv_norm, -a[1] * inv_norm]) - } - - /// Returns the division of `a` and `b` - fn div(a: &Self::BaseType, b: &Self::BaseType) -> Self::BaseType { - Self::mul(a, &Self::inv(b).unwrap()) - } - - /// Returns a boolean indicating whether `a` and `b` are equal component wise. - fn eq(a: &Self::BaseType, b: &Self::BaseType) -> bool { - a[0] == b[0] && a[1] == b[1] - } - - /// Returns the additive neutral element of the field extension. - fn zero() -> Self::BaseType { - [FieldElement::zero(), FieldElement::zero()] - } - - /// Returns the multiplicative neutral element of the field extension. - fn one() -> Self::BaseType { - [FieldElement::one(), FieldElement::zero()] - } - - /// Returns the element `x * 1` where 1 is the multiplicative neutral element. - fn from_u64(x: u64) -> Self::BaseType { - [FieldElement::from(x), FieldElement::zero()] - } - - /// Takes as input an element of BaseType and returns the internal representation - /// of that element in the field. - /// Note: for this case this is simply the identity, because the components - /// already have correct representations. - fn from_base_type(x: Self::BaseType) -> Self::BaseType { - x - } -} - -pub type Mersenne31ComplexQuadraticExtensionField = - QuadraticExtensionField; - -//TODO: Check this should be for complex and not base field -impl HasQuadraticNonResidue for Mersenne31Complex { - // Verifiable in Sage with - // ```sage - // p = 2**31 - 1 # Mersenne31 - // F = GF(p) # The base field GF(p) - // R. = F[] # The polynomial ring over F - // K. = F.extension(x^2 + 1) # The complex extension field - // R2. = K[] - // f2 = y^2 - i - 2 - // assert f2.is_irreducible() - // ``` - fn residue() -> FieldElement { - FieldElement::from(&Mersenne31Complex::from_base_type([ - FieldElement::::from(2), - FieldElement::::one(), - ])) - } -} - -pub type Mersenne31ComplexCubicExtensionField = - CubicExtensionField; - -impl HasCubicNonResidue for Mersenne31Complex { - // Verifiable in Sage with - // ```sage - // p = 2**31 - 1 # Mersenne31 - // F = GF(p) # The base field GF(p) - // R. = F[] # The polynomial ring over F - // K. = F.extension(x^2 + 1) # The complex extension field - // R2. = K[] - // f2 = y^3 - 5*i - // assert f2.is_irreducible() - // ``` - fn residue() -> FieldElement { - FieldElement::from(&Mersenne31Complex::from_base_type([ - FieldElement::::zero(), - FieldElement::::from(5), - ])) - } -} - -#[cfg(test)] -mod tests { - use crate::field::fields::mersenne31::field::MERSENNE_31_PRIME_FIELD_ORDER; - - use super::*; - - type Fi = Mersenne31Complex; - type F = FieldElement; - - //NOTE: from_u64 reflects from_real - //NOTE: for imag use from_base_type - - #[test] - fn add_real_one_plus_one_is_two() { - assert_eq!(Fi::add(&Fi::one(), &Fi::one()), Fi::from_u64(2)) - } - - #[test] - fn add_real_neg_one_plus_one_is_zero() { - assert_eq!(Fi::add(&Fi::neg(&Fi::one()), &Fi::one()), Fi::zero()) - } - - #[test] - fn add_real_neg_one_plus_two_is_one() { - assert_eq!(Fi::add(&Fi::neg(&Fi::one()), &Fi::from_u64(2)), Fi::one()) - } - - #[test] - fn add_real_neg_one_plus_neg_one_is_order_sub_two() { - assert_eq!( - Fi::add(&Fi::neg(&Fi::one()), &Fi::neg(&Fi::one())), - Fi::from_u64((MERSENNE_31_PRIME_FIELD_ORDER - 2).into()) - ) - } - - #[test] - fn add_complex_one_plus_one_two() { - //Manually declare the complex part to one - let one = Fi::from_base_type([F::zero(), F::one()]); - let two = Fi::from_base_type([F::zero(), F::from(2)]); - assert_eq!(Fi::add(&one, &one), two) - } - - #[test] - fn add_complex_neg_one_plus_one_is_zero() { - //Manually declare the complex part to one - let neg_one = Fi::from_base_type([F::zero(), -F::one()]); - let one = Fi::from_base_type([F::zero(), F::one()]); - assert_eq!(Fi::add(&neg_one, &one), Fi::zero()) - } - - #[test] - fn add_complex_neg_one_plus_two_is_one() { - let neg_one = Fi::from_base_type([F::zero(), -F::one()]); - let two = Fi::from_base_type([F::zero(), F::from(2)]); - let one = Fi::from_base_type([F::zero(), F::one()]); - assert_eq!(Fi::add(&neg_one, &two), one) - } - - #[test] - fn add_complex_neg_one_plus_neg_one_imag_is_order_sub_two() { - let neg_one = Fi::from_base_type([F::zero(), -F::one()]); - assert_eq!( - Fi::add(&neg_one, &neg_one)[1], - F::new(MERSENNE_31_PRIME_FIELD_ORDER - 2) - ) - } - - #[test] - fn add_order() { - let a = Fi::from_base_type([-F::one(), F::one()]); - let b = Fi::from_base_type([F::from(2), F::new(MERSENNE_31_PRIME_FIELD_ORDER - 2)]); - let c = Fi::from_base_type([F::one(), -F::one()]); - assert_eq!(Fi::add(&a, &b), c) - } - - #[test] - fn add_equal_zero() { - let a = Fi::from_base_type([-F::one(), -F::one()]); - let b = Fi::from_base_type([F::one(), F::one()]); - assert_eq!(Fi::add(&a, &b), Fi::zero()) - } - - #[test] - fn add_plus_one() { - let a = Fi::from_base_type([F::one(), F::from(2)]); - let b = Fi::from_base_type([F::one(), F::one()]); - let c = Fi::from_base_type([F::from(2), F::from(3)]); - assert_eq!(Fi::add(&a, &b), c) - } - - #[test] - fn sub_real_one_sub_one_is_zero() { - assert_eq!(Fi::sub(&Fi::one(), &Fi::one()), Fi::zero()) - } - - #[test] - fn sub_real_two_sub_two_is_zero() { - assert_eq!( - Fi::sub(&Fi::from_u64(2u64), &Fi::from_u64(2u64)), - Fi::zero() - ) - } - - #[test] - fn sub_real_neg_one_sub_neg_one_is_zero() { - assert_eq!( - Fi::sub(&Fi::neg(&Fi::one()), &Fi::neg(&Fi::one())), - Fi::zero() - ) - } - - #[test] - fn sub_real_two_sub_one_is_one() { - assert_eq!(Fi::sub(&Fi::from_u64(2), &Fi::one()), Fi::one()) - } - - #[test] - fn sub_real_neg_one_sub_zero_is_neg_one() { - assert_eq!( - Fi::sub(&Fi::neg(&Fi::one()), &Fi::zero()), - Fi::neg(&Fi::one()) - ) - } - - #[test] - fn sub_complex_one_sub_one_is_zero() { - let one = Fi::from_base_type([F::zero(), F::one()]); - assert_eq!(Fi::sub(&one, &one), Fi::zero()) - } - - #[test] - fn sub_complex_two_sub_two_is_zero() { - let two = Fi::from_base_type([F::zero(), F::from(2)]); - assert_eq!(Fi::sub(&two, &two), Fi::zero()) - } - - #[test] - fn sub_complex_neg_one_sub_neg_one_is_zero() { - let neg_one = Fi::from_base_type([F::zero(), -F::one()]); - assert_eq!(Fi::sub(&neg_one, &neg_one), Fi::zero()) - } - - #[test] - fn sub_complex_two_sub_one_is_one() { - let two = Fi::from_base_type([F::zero(), F::from(2)]); - let one = Fi::from_base_type([F::zero(), F::one()]); - assert_eq!(Fi::sub(&two, &one), one) - } - - #[test] - fn sub_complex_neg_one_sub_zero_is_neg_one() { - let neg_one = Fi::from_base_type([F::zero(), -F::one()]); - assert_eq!(Fi::sub(&neg_one, &Fi::zero()), neg_one) - } - - #[test] - fn mul() { - let a = Fi::from_base_type([F::from(2), F::from(2)]); - let b = Fi::from_base_type([F::from(4), F::from(5)]); - let c = Fi::from_base_type([-F::from(2), F::from(18)]); - assert_eq!(Fi::mul(&a, &b), c) - } -} diff --git a/math/src/field/fields/mersenne31/extensions.rs b/math/src/field/fields/mersenne31/extensions.rs new file mode 100644 index 000000000..27c2ab118 --- /dev/null +++ b/math/src/field/fields/mersenne31/extensions.rs @@ -0,0 +1,627 @@ +use super::field::Mersenne31Field; +use crate::field::{ + element::FieldElement, + errors::FieldError, + traits::{IsField, IsSubFieldOf}, +}; +#[cfg(feature = "alloc")] +use alloc::vec::Vec; + +type FpE = FieldElement; + +#[derive(Clone, Debug)] +pub struct Degree2ExtensionField; + +impl Degree2ExtensionField { + pub fn mul_fp2_by_nonresidue(a: &Fp2E) -> Fp2E { + Fp2E::new([ + a.value()[0].double() - a.value()[1], + a.value()[1].double() + a.value()[0], + ]) + } +} + +impl IsField for Degree2ExtensionField { + //Element representation: a[0] = real part, a[1] = imaginary part + type BaseType = [FpE; 2]; + + /// Returns the component wise addition of `a` and `b` + fn add(a: &Self::BaseType, b: &Self::BaseType) -> Self::BaseType { + [a[0] + b[0], a[1] + b[1]] + } + + /// Returns the multiplication of `a` and `b`. + fn mul(a: &Self::BaseType, b: &Self::BaseType) -> Self::BaseType { + let a0b0 = a[0] * b[0]; + let a1b1 = a[1] * b[1]; + let z = (a[0] + a[1]) * (b[0] + b[1]); + [a0b0 - a1b1, z - a0b0 - a1b1] + } + + fn square(a: &Self::BaseType) -> Self::BaseType { + let [a0, a1] = a; + let v0 = a0 * a1; + let c0 = (a0 + a1) * (a0 - a1); + let c1 = v0.double(); + [c0, c1] + } + /// Returns the component wise subtraction of `a` and `b` + fn sub(a: &Self::BaseType, b: &Self::BaseType) -> Self::BaseType { + [a[0] - b[0], a[1] - b[1]] + } + + /// Returns the component wise negation of `a` + fn neg(a: &Self::BaseType) -> Self::BaseType { + [-a[0], -a[1]] + } + + /// Returns the multiplicative inverse of `a` + fn inv(a: &Self::BaseType) -> Result { + let inv_norm = (a[0].square() + a[1].square()).inv()?; + Ok([a[0] * inv_norm, -a[1] * inv_norm]) + } + + /// Returns the division of `a` and `b` + fn div(a: &Self::BaseType, b: &Self::BaseType) -> Self::BaseType { + ::mul(a, &Self::inv(b).unwrap()) + } + + /// Returns a boolean indicating whether `a` and `b` are equal component wise. + fn eq(a: &Self::BaseType, b: &Self::BaseType) -> bool { + a[0] == b[0] && a[1] == b[1] + } + + /// Returns the multiplicative neutral element of the field extension. + fn one() -> Self::BaseType { + [FpE::one(), FpE::zero()] + } + + /// Returns the element `x * 1` where 1 is the multiplicative neutral element. + fn from_u64(x: u64) -> Self::BaseType { + [FpE::from(x), FpE::zero()] + } + + /// Takes as input an element of BaseType and returns the internal representation + /// of that element in the field. + /// Note: for this case this is simply the identity, because the components + /// already have correct representations. + fn from_base_type(x: Self::BaseType) -> Self::BaseType { + x + } +} + +impl IsSubFieldOf for Mersenne31Field { + fn add( + a: &Self::BaseType, + b: &::BaseType, + ) -> ::BaseType { + [FpE::from(a) + b[0], b[1]] + } + + fn sub( + a: &Self::BaseType, + b: &::BaseType, + ) -> ::BaseType { + [FpE::from(a) - b[0], -b[1]] + } + + fn mul( + a: &Self::BaseType, + b: &::BaseType, + ) -> ::BaseType { + [FpE::from(a) * b[0], FpE::from(a) * b[1]] + } + + fn div( + a: &Self::BaseType, + b: &::BaseType, + ) -> ::BaseType { + let b_inv = Degree2ExtensionField::inv(b).unwrap(); + >::mul(a, &b_inv) + } + + fn embed(a: Self::BaseType) -> ::BaseType { + [FieldElement::from_raw(a), FieldElement::zero()] + } + + #[cfg(feature = "alloc")] + fn to_subfield_vec( + b: ::BaseType, + ) -> alloc::vec::Vec { + b.into_iter().map(|x| x.to_raw()).collect() + } +} + +type Fp2E = FieldElement; + +#[derive(Clone, Debug)] +pub struct Degree4ExtensionField; + +impl IsField for Degree4ExtensionField { + type BaseType = [Fp2E; 2]; + + fn add(a: &Self::BaseType, b: &Self::BaseType) -> Self::BaseType { + [&a[0] + &b[0], &a[1] + &b[1]] + } + + fn sub(a: &Self::BaseType, b: &Self::BaseType) -> Self::BaseType { + [&a[0] - &b[0], &a[1] - &b[1]] + } + + fn neg(a: &Self::BaseType) -> Self::BaseType { + [-&a[0], -&a[1]] + } + + fn mul(a: &Self::BaseType, b: &Self::BaseType) -> Self::BaseType { + // Algorithm from: https://github.com/ingonyama-zk/papers/blob/main/Mersenne31_polynomial_arithmetic.pdf (page 5): + let a0b0 = &a[0] * &b[0]; + let a1b1 = &a[1] * &b[1]; + [ + &a0b0 + Degree2ExtensionField::mul_fp2_by_nonresidue(&a1b1), + (&a[0] + &a[1]) * (&b[0] + &b[1]) - a0b0 - a1b1, + ] + } + + fn square(a: &Self::BaseType) -> Self::BaseType { + let a0_square = &a[0].square(); + let a1_square = &a[1].square(); + [ + a0_square + Degree2ExtensionField::mul_fp2_by_nonresidue(a1_square), + (&a[0] + &a[1]).square() - a0_square - a1_square, + ] + } + + fn inv(a: &Self::BaseType) -> Result { + let inv_norm = + (a[0].square() - Degree2ExtensionField::mul_fp2_by_nonresidue(&a[1].square())).inv()?; + Ok([&a[0] * &inv_norm, -&a[1] * &inv_norm]) + } + + fn div(a: &Self::BaseType, b: &Self::BaseType) -> Self::BaseType { + ::mul(a, &Self::inv(b).unwrap()) + } + + fn eq(a: &Self::BaseType, b: &Self::BaseType) -> bool { + a[0] == b[0] && a[1] == b[1] + } + + fn zero() -> Self::BaseType { + [Fp2E::zero(), Fp2E::zero()] + } + + fn one() -> Self::BaseType { + [Fp2E::one(), Fp2E::zero()] + } + + fn from_u64(x: u64) -> Self::BaseType { + [Fp2E::from(x), Fp2E::zero()] + } + + fn from_base_type(x: Self::BaseType) -> Self::BaseType { + x + } +} + +impl IsSubFieldOf for Mersenne31Field { + fn add( + a: &Self::BaseType, + b: &::BaseType, + ) -> ::BaseType { + [FpE::from(a) + &b[0], b[1].clone()] + } + + fn sub( + a: &Self::BaseType, + b: &::BaseType, + ) -> ::BaseType { + [FpE::from(a) - &b[0], -&b[1]] + } + + fn mul( + a: &Self::BaseType, + b: &::BaseType, + ) -> ::BaseType { + let c0 = FpE::from(a) * &b[0]; + let c1 = FpE::from(a) * &b[1]; + [c0, c1] + } + + fn div( + a: &Self::BaseType, + b: &::BaseType, + ) -> ::BaseType { + let b_inv = Degree4ExtensionField::inv(b).unwrap(); + >::mul(a, &b_inv) + } + + fn embed(a: Self::BaseType) -> ::BaseType { + [ + Fp2E::from_raw(>::embed(a)), + Fp2E::zero(), + ] + } + + #[cfg(feature = "alloc")] + fn to_subfield_vec( + b: ::BaseType, + ) -> alloc::vec::Vec { + // TODO: Repace this for with a map similarly to this: + // b.into_iter().map(|x| x.to_raw()).collect() + let mut result = Vec::new(); + for fp2e in b { + result.push(fp2e.value()[0].to_raw()); + result.push(fp2e.value()[1].to_raw()); + } + result + } +} + +#[cfg(test)] +mod tests { + use core::ops::Neg; + + use crate::field::fields::mersenne31::field::MERSENNE_31_PRIME_FIELD_ORDER; + + use super::*; + + type FpE = FieldElement; + type Fp2E = FieldElement; + type Fp4E = FieldElement; + + #[test] + fn add_real_one_plus_one_is_two() { + assert_eq!(Fp2E::one() + Fp2E::one(), Fp2E::from(2)) + } + + #[test] + fn add_real_neg_one_plus_one_is_zero() { + assert_eq!(Fp2E::one() + Fp2E::one().neg(), Fp2E::zero()) + } + + #[test] + fn add_real_neg_one_plus_two_is_one() { + assert_eq!(Fp2E::one().neg() + Fp2E::from(2), Fp2E::one()) + } + + #[test] + fn add_real_neg_one_plus_neg_one_is_order_sub_two() { + assert_eq!( + Fp2E::one().neg() + Fp2E::one().neg(), + Fp2E::new([FpE::from(&(MERSENNE_31_PRIME_FIELD_ORDER - 2)), FpE::zero()]) + ) + } + + #[test] + fn add_complex_one_plus_one_two() { + let one_i = Fp2E::new([FpE::zero(), FpE::one()]); + let two_i = Fp2E::new([FpE::zero(), FpE::from(2)]); + assert_eq!(&one_i + &one_i, two_i) + } + + #[test] + fn add_complex_neg_one_plus_one_is_zero() { + //Manually declare the complex part to one + let neg_one_i = Fp2E::new([FpE::zero(), -FpE::one()]); + let one_i = Fp2E::new([FpE::zero(), FpE::one()]); + assert_eq!(neg_one_i + one_i, Fp2E::zero()) + } + + #[test] + fn add_complex_neg_one_plus_two_is_one() { + let neg_one_i = Fp2E::new([FpE::zero(), -FpE::one()]); + let two_i = Fp2E::new([FpE::zero(), FpE::from(2)]); + let one_i = Fp2E::new([FpE::zero(), FpE::one()]); + assert_eq!(&neg_one_i + &two_i, one_i) + } + + #[test] + fn add_complex_neg_one_plus_neg_one_imag_is_order_sub_two() { + let neg_one_i = Fp2E::new([FpE::zero(), -FpE::one()]); + assert_eq!( + (&neg_one_i + &neg_one_i).value()[1], + FpE::from(&(MERSENNE_31_PRIME_FIELD_ORDER - 2)) + ) + } + + #[test] + fn add_order() { + let a = Fp2E::new([-FpE::one(), FpE::one()]); + let b = Fp2E::new([ + FpE::from(2), + FpE::from(&(MERSENNE_31_PRIME_FIELD_ORDER - 2)), + ]); + let c = Fp2E::new([FpE::one(), -FpE::one()]); + assert_eq!(&a + &b, c) + } + + #[test] + fn add_equal_zero() { + let a = Fp2E::new([-FpE::one(), -FpE::one()]); + let b = Fp2E::new([FpE::one(), FpE::one()]); + assert_eq!(&a + &b, Fp2E::zero()) + } + + #[test] + fn add_plus_one() { + let a = Fp2E::new([FpE::one(), FpE::from(2)]); + let b = Fp2E::new([FpE::one(), FpE::one()]); + let c = Fp2E::new([FpE::from(2), FpE::from(3)]); + assert_eq!(&a + &b, c) + } + + #[test] + fn sub_real_one_sub_one_is_zero() { + assert_eq!(&Fp2E::one() - &Fp2E::one(), Fp2E::zero()) + } + + #[test] + fn sub_real_two_sub_two_is_zero() { + assert_eq!(&Fp2E::from(2) - &Fp2E::from(2), Fp2E::zero()) + } + + #[test] + fn sub_real_neg_one_sub_neg_one_is_zero() { + assert_eq!(Fp2E::one().neg() - Fp2E::one().neg(), Fp2E::zero()) + } + + #[test] + fn sub_real_two_sub_one_is_one() { + assert_eq!(Fp2E::from(2) - Fp2E::one(), Fp2E::one()) + } + + #[test] + fn sub_real_neg_one_sub_zero_is_neg_one() { + assert_eq!(Fp2E::one().neg() - Fp2E::zero(), Fp2E::one().neg()) + } + + #[test] + fn sub_complex_one_sub_one_is_zero() { + let one = Fp2E::new([FpE::zero(), FpE::one()]); + assert_eq!(&one - &one, Fp2E::zero()) + } + + #[test] + fn sub_complex_two_sub_two_is_zero() { + let two = Fp2E::new([FpE::zero(), FpE::from(2)]); + assert_eq!(&two - &two, Fp2E::zero()) + } + + #[test] + fn sub_complex_neg_one_sub_neg_one_is_zero() { + let neg_one = Fp2E::new([FpE::zero(), -FpE::one()]); + assert_eq!(&neg_one - &neg_one, Fp2E::zero()) + } + + #[test] + fn sub_complex_two_sub_one_is_one() { + let two = Fp2E::new([FpE::zero(), FpE::from(2)]); + let one = Fp2E::new([FpE::zero(), FpE::one()]); + assert_eq!(&two - &one, one) + } + + #[test] + fn sub_complex_neg_one_sub_zero_is_neg_one() { + let neg_one = Fp2E::new([FpE::zero(), -FpE::one()]); + assert_eq!(&neg_one - &Fp2E::zero(), neg_one) + } + + #[test] + fn mul_fp2_is_correct() { + let a = Fp2E::new([FpE::from(2), FpE::from(2)]); + let b = Fp2E::new([FpE::from(4), FpE::from(5)]); + let c = Fp2E::new([-FpE::from(2), FpE::from(18)]); + assert_eq!(&a * &b, c) + } + + #[test] + fn square_equals_mul_by_itself() { + let a = Fp2E::new([FpE::from(2), FpE::from(3)]); + assert_eq!(a.square(), &a * &a) + } + + #[test] + fn test_fp2_add() { + let a = Fp2E::new([FpE::from(0), FpE::from(3)]); + let b = Fp2E::new([-FpE::from(2), FpE::from(8)]); + let expected_result = Fp2E::new([FpE::from(0) - FpE::from(2), FpE::from(3) + FpE::from(8)]); + assert_eq!(a + b, expected_result); + } + + #[test] + fn test_fp2_add_2() { + let a = Fp2E::new([FpE::from(2), FpE::from(4)]); + let b = Fp2E::new([-FpE::from(2), -FpE::from(4)]); + let expected_result = Fp2E::new([FpE::from(2) - FpE::from(2), FpE::from(4) - FpE::from(4)]); + assert_eq!(a + b, expected_result); + } + + #[test] + fn test_fp2_add_3() { + let a = Fp2E::new([FpE::from(&MERSENNE_31_PRIME_FIELD_ORDER), FpE::from(1)]); + let b = Fp2E::new([FpE::from(1), FpE::from(&MERSENNE_31_PRIME_FIELD_ORDER)]); + let expected_result = Fp2E::new([FpE::from(1), FpE::from(1)]); + assert_eq!(a + b, expected_result); + } + + #[test] + fn test_fp2_sub() { + let a = Fp2E::new([FpE::from(0), FpE::from(3)]); + let b = Fp2E::new([-FpE::from(2), FpE::from(8)]); + let expected_result = Fp2E::new([FpE::from(0) + FpE::from(2), FpE::from(3) - FpE::from(8)]); + assert_eq!(a - b, expected_result); + } + + #[test] + fn test_fp2_sub_2() { + let a = Fp2E::new([FpE::zero(), FpE::from(&MERSENNE_31_PRIME_FIELD_ORDER)]); + let b = Fp2E::new([FpE::one(), -FpE::one()]); + let expected_result = + Fp2E::new([FpE::from(&(MERSENNE_31_PRIME_FIELD_ORDER - 1)), FpE::one()]); + assert_eq!(a - b, expected_result); + } + + #[test] + fn test_fp2_sub_3() { + let a = Fp2E::new([FpE::from(5), FpE::from(&MERSENNE_31_PRIME_FIELD_ORDER)]); + let b = Fp2E::new([FpE::from(5), FpE::from(&MERSENNE_31_PRIME_FIELD_ORDER)]); + let expected_result = Fp2E::new([FpE::zero(), FpE::zero()]); + assert_eq!(a - b, expected_result); + } + + #[test] + fn test_fp2_mul() { + let a = Fp2E::new([FpE::from(12), FpE::from(5)]); + let b = Fp2E::new([-FpE::from(4), FpE::from(2)]); + let expected_result = Fp2E::new([-FpE::from(58), FpE::new(4)]); + assert_eq!(a * b, expected_result); + } + + #[test] + fn test_fp2_mul_2() { + let a = Fp2E::new([FpE::one(), FpE::zero()]); + let b = Fp2E::new([FpE::from(12), -FpE::from(8)]); + let expected_result = Fp2E::new([FpE::from(12), -FpE::new(8)]); + assert_eq!(a * b, expected_result); + } + + #[test] + fn test_fp2_mul_3() { + let a = Fp2E::new([FpE::zero(), FpE::zero()]); + let b = Fp2E::new([FpE::from(2), FpE::from(7)]); + let expected_result = Fp2E::new([FpE::zero(), FpE::zero()]); + assert_eq!(a * b, expected_result); + } + + #[test] + fn test_fp2_mul_4() { + let a = Fp2E::new([FpE::from(2), FpE::from(7)]); + let b = Fp2E::new([FpE::zero(), FpE::zero()]); + let expected_result = Fp2E::new([FpE::zero(), FpE::zero()]); + assert_eq!(a * b, expected_result); + } + + #[test] + fn test_fp2_mul_5() { + let a = Fp2E::new([FpE::from(&MERSENNE_31_PRIME_FIELD_ORDER), FpE::one()]); + let b = Fp2E::new([FpE::from(2), FpE::from(&MERSENNE_31_PRIME_FIELD_ORDER)]); + let expected_result = Fp2E::new([FpE::zero(), FpE::from(2)]); + assert_eq!(a * b, expected_result); + } + + #[test] + fn test_fp2_inv() { + let a = Fp2E::new([FpE::one(), FpE::zero()]); + let expected_result = Fp2E::new([FpE::one(), FpE::zero()]); + assert_eq!(a.inv().unwrap(), expected_result); + } + + #[test] + fn test_fp2_inv_2() { + let a = Fp2E::new([FpE::from(&(MERSENNE_31_PRIME_FIELD_ORDER - 1)), FpE::one()]); + let expected_result = Fp2E::new([FpE::from(1073741823), FpE::from(1073741823)]); + assert_eq!(a.inv().unwrap(), expected_result); + } + + #[test] + fn test_fp2_inv_3() { + let a = Fp2E::new([FpE::from(2063384121), FpE::from(1232183486)]); + let expected_result = Fp2E::new([FpE::from(1244288232), FpE::from(1321511038)]); + assert_eq!(a.inv().unwrap(), expected_result); + } + + #[test] + fn test_fp2_mul_inv() { + let a = Fp2E::new([FpE::from(12), FpE::from(5)]); + let b = a.inv().unwrap(); + let expected_result = Fp2E::new([FpE::one(), FpE::zero()]); + assert_eq!(a * b, expected_result); + } + + #[test] + fn test_fp2_div() { + let a = Fp2E::new([FpE::from(12), FpE::from(5)]); + let b = Fp2E::new([FpE::from(4), FpE::from(2)]); + let expected_result = Fp2E::new([FpE::from(644245097), FpE::from(1288490188)]); + assert_eq!(a / b, expected_result); + } + + #[test] + fn test_fp2_div_2() { + let a = Fp2E::new([FpE::from(4), FpE::from(7)]); + let b = Fp2E::new([FpE::one(), FpE::zero()]); + let expected_result = Fp2E::new([FpE::from(4), FpE::from(7)]); + assert_eq!(a / b, expected_result); + } + + #[test] + fn test_fp2_div_3() { + let a = Fp2E::new([FpE::zero(), FpE::zero()]); + let b = Fp2E::new([FpE::from(3), FpE::from(12)]); + let expected_result = Fp2E::new([FpE::zero(), FpE::zero()]); + assert_eq!(a / b, expected_result); + } + + #[test] + fn mul_fp4_by_zero_is_zero() { + let a = Fp4E::new([ + Fp2E::new([FpE::from(2), FpE::from(3)]), + Fp2E::new([FpE::from(4), FpE::from(5)]), + ]); + assert_eq!(Fp4E::zero(), a * Fp4E::zero()) + } + + #[test] + fn mul_fp4_by_one_is_identity() { + let a = Fp4E::new([ + Fp2E::new([FpE::from(2), FpE::from(3)]), + Fp2E::new([FpE::from(4), FpE::from(5)]), + ]); + assert_eq!(a, a.clone() * Fp4E::one()) + } + + #[test] + fn square_fp4_equals_mul_two_times() { + let a = Fp4E::new([ + Fp2E::new([FpE::from(3), FpE::from(4)]), + Fp2E::new([FpE::from(5), FpE::from(6)]), + ]); + + assert_eq!(a.square(), &a * &a) + } + + #[test] + fn fp4_mul_by_inv_is_one() { + let a = Fp4E::new([ + Fp2E::new([FpE::from(2147483647), FpE::from(2147483648)]), + Fp2E::new([FpE::from(2147483649), FpE::from(2147483650)]), + ]); + + assert_eq!(&a * a.inv().unwrap(), Fp4E::one()) + } + + #[test] + fn embed_fp_with_fp4() { + let a = FpE::from(3); + let a_extension = Fp4E::from(3); + assert_eq!(a.to_extension::(), a_extension); + } + + #[test] + fn add_fp_and_fp4() { + let a = FpE::from(3); + let a_extension = Fp4E::from(3); + let b = Fp4E::from(2); + assert_eq!(a + &b, a_extension + b); + } + + #[test] + fn mul_fp_by_fp4() { + let a = FpE::from(30000000000); + let a_extension = a.to_extension::(); + let b = Fp4E::new([ + Fp2E::new([FpE::from(1), FpE::from(2)]), + Fp2E::new([FpE::from(3), FpE::from(4)]), + ]); + assert_eq!(a * &b, a_extension * b); + } +} diff --git a/math/src/field/fields/mersenne31/field.rs b/math/src/field/fields/mersenne31/field.rs index e4abfab0f..1c8b2dc58 100644 --- a/math/src/field/fields/mersenne31/field.rs +++ b/math/src/field/fields/mersenne31/field.rs @@ -42,6 +42,29 @@ impl Mersenne31Field { // Delayed reduction Self::from_u64(iter.map(|x| (x as u64)).sum::()) } + + /// Computes a * 2^k, with 0 < k < 31 + pub fn mul_power_two(a: u32, k: u32) -> u32 { + let msb = (a & (u32::MAX << (31 - k))) >> (31 - k); // The k + 1 msf shifted right . + let lsb = (a & (u32::MAX >> (k + 1))) << k; // The 31 - k lsb shifted left. + Self::weak_reduce(msb + lsb) + } + + pub fn pow_2(a: &u32, order: u32) -> u32 { + let mut res = *a; + (0..order).for_each(|_| res = Self::square(&res)); + res + } + + /// TODO: See if we can optimize this function. + /// Computes 2a^2 - 1 + pub fn two_square_minus_one(a: &u32) -> u32 { + if *a == 0 { + MERSENNE_31_PRIME_FIELD_ORDER - 1 + } else { + Self::from_u64(((u64::from(*a) * u64::from(*a)) << 1) - 1) + } + } } pub const MERSENNE_31_PRIME_FIELD_ORDER: u32 = (1 << 31) - 1; @@ -54,18 +77,9 @@ impl IsField for Mersenne31Field { /// Returns the sum of `a` and `b`. fn add(a: &u32, b: &u32) -> u32 { - // Avoids conditional https://github.com/Plonky3/Plonky3/blob/6049a30c3b1f5351c3eb0f7c994dc97e8f68d10d/mersenne-31/src/lib.rs#L249 - // Working with i32 means we get a flag which informs us if overflow happens - let (sum_i32, over) = (*a as i32).overflowing_add(*b as i32); - let sum_u32 = sum_i32 as u32; - let sum_corr = sum_u32.wrapping_sub(MERSENNE_31_PRIME_FIELD_ORDER); - - //assert 31 bit clear - // If self + rhs did not overflow, return it. - // If self + rhs overflowed, sum_corr = self + rhs - (2**31 - 1). - let sum = if over { sum_corr } else { sum_u32 }; - debug_assert!((sum >> 31) == 0); - Self::as_representative(&sum) + // We are using that if a and b are field elements of Mersenne31, then + // a + b has at most 32 bits, so we can use the weak_reduce function to take mudulus p. + Self::weak_reduce(a + b) } /// Returns the multiplication of `a` and `b`. @@ -75,13 +89,7 @@ impl IsField for Mersenne31Field { } fn sub(a: &u32, b: &u32) -> u32 { - let (mut sub, over) = a.overflowing_sub(*b); - - // If we didn't overflow we have the correct value. - // Otherwise we have added 2**32 = 2**31 + 1 mod 2**31 - 1. - // Hence we need to remove the most significant bit and subtract 1. - sub -= over as u32; - sub & MERSENNE_31_PRIME_FIELD_ORDER + Self::weak_reduce(a + MERSENNE_31_PRIME_FIELD_ORDER - b) } /// Returns the additive inverse of `a`. @@ -91,20 +99,20 @@ impl IsField for Mersenne31Field { } /// Returns the multiplicative inverse of `a`. - fn inv(a: &u32) -> Result { - if *a == Self::zero() || *a == MERSENNE_31_PRIME_FIELD_ORDER { + fn inv(x: &u32) -> Result { + if *x == Self::zero() || *x == MERSENNE_31_PRIME_FIELD_ORDER { return Err(FieldError::InvZeroError); } - let p101 = Self::mul(&Self::pow(a, 4u32), a); + let p101 = Self::mul(&Self::pow_2(x, 2), x); let p1111 = Self::mul(&Self::square(&p101), &p101); - let p11111111 = Self::mul(&Self::pow(&p1111, 16u32), &p1111); - let p111111110000 = Self::pow(&p11111111, 16u32); + let p11111111 = Self::mul(&Self::pow_2(&p1111, 4u32), &p1111); + let p111111110000 = Self::pow_2(&p11111111, 4u32); let p111111111111 = Self::mul(&p111111110000, &p1111); - let p1111111111111111 = Self::mul(&Self::pow(&p111111110000, 16u32), &p11111111); + let p1111111111111111 = Self::mul(&Self::pow_2(&p111111110000, 4u32), &p11111111); let p1111111111111111111111111111 = - Self::mul(&Self::pow(&p1111111111111111, 4096u32), &p111111111111); + Self::mul(&Self::pow_2(&p1111111111111111, 12u32), &p111111111111); let p1111111111111111111111111111101 = - Self::mul(&Self::pow(&p1111111111111111111111111111, 8u32), &p101); + Self::mul(&Self::pow_2(&p1111111111111111111111111111, 3u32), &p101); Ok(p1111111111111111111111111111101) } @@ -120,7 +128,7 @@ impl IsField for Mersenne31Field { } /// Returns the additive neutral element. - fn zero() -> Self::BaseType { + fn zero() -> u32 { 0u32 } @@ -131,16 +139,7 @@ impl IsField for Mersenne31Field { /// Returns the element `x * 1` where 1 is the multiplicative neutral element. fn from_u64(x: u64) -> u32 { - let (lo, hi) = (x as u32 as u64, x >> 32); - // 2^32 = 2 (mod Mersenne 31 bit prime) - // t <= (2^32 - 1) + 2 * (2^32 - 1) = 3 * 2^32 - 3 = 6 * 2^31 - 3 - let t = lo + 2 * hi; - - const MASK: u64 = (1 << 31) - 1; - let (lo, hi) = ((t & MASK) as u32, (t >> 31) as u32); - // 2^31 = 1 mod Mersenne31 - // lo < 2^31, hi < 6, so lo + hi < 2^32. - Self::weak_reduce(lo + hi) + (((((x >> 31) + x + 1) >> 31) + x) & (MERSENNE_31_PRIME_FIELD_ORDER as u64)) as u32 } /// Takes as input an element of BaseType and returns the internal representation @@ -148,6 +147,9 @@ impl IsField for Mersenne31Field { fn from_base_type(x: u32) -> u32 { Self::weak_reduce(x) } + fn double(a: &u32) -> u32 { + Self::weak_reduce(a << 1) + } } impl IsPrimeField for Mersenne31Field { @@ -205,12 +207,45 @@ impl Display for FieldElement { mod tests { use super::*; type F = Mersenne31Field; + type FE = FieldElement; + + #[test] + fn mul_power_two_is_correct() { + let a = 3u32; + let k = 2; + let expected_result = FE::from(&a) * FE::from(2).pow(k as u16); + let result = F::mul_power_two(a, k); + assert_eq!(FE::from(&result), expected_result) + } + + #[test] + fn mul_power_two_is_correct_2() { + let a = 229287u32; + let k = 4; + let expected_result = FE::from(&a) * FE::from(2).pow(k as u16); + let result = F::mul_power_two(a, k); + assert_eq!(FE::from(&result), expected_result) + } + + #[test] + fn pow_2_is_correct() { + let a = 3u32; + let order = 12; + let result = F::pow_2(&a, order); + let expected_result = FE::pow(&FE::from(&a), 4096u32); + assert_eq!(FE::from(&result), expected_result) + } #[test] fn from_hex_for_b_is_11() { assert_eq!(F::from_hex("B").unwrap(), 11); } + #[test] + fn from_hex_for_b_is_11_v2() { + assert_eq!(FE::from_hex("B").unwrap(), FE::from(11)); + } + #[test] fn sum_delayed_reduction() { let up_to = u32::pow(2, 16); @@ -236,190 +271,195 @@ mod tests { #[test] fn one_plus_1_is_2() { - let a = F::one(); - let b = F::one(); - let c = F::add(&a, &b); - assert_eq!(c, 2u32); + assert_eq!(FE::one() + FE::one(), FE::from(&2u32)); } #[test] fn neg_1_plus_1_is_0() { - let a = F::neg(&F::one()); - let b = F::one(); - let c = F::add(&a, &b); - assert_eq!(c, F::zero()); + assert_eq!(-FE::one() + FE::one(), FE::zero()); } #[test] fn neg_1_plus_2_is_1() { - let a = F::neg(&F::one()); - let b = F::from_base_type(2u32); - let c = F::add(&a, &b); - assert_eq!(c, F::one()); + assert_eq!(-FE::one() + FE::from(&2u32), FE::one()); } #[test] fn max_order_plus_1_is_0() { - let a = F::from_base_type(MERSENNE_31_PRIME_FIELD_ORDER - 1); - let b = F::one(); - let c = F::add(&a, &b); - assert_eq!(c, F::zero()); + assert_eq!( + FE::from(&(MERSENNE_31_PRIME_FIELD_ORDER - 1)) + FE::from(1), + FE::from(0) + ); } #[test] fn comparing_13_and_13_are_equal() { - let a = F::from_base_type(13); - let b = F::from_base_type(13); - assert_eq!(a, b); + assert_eq!(FE::from(&13u32), FE::from(13)); } #[test] fn comparing_13_and_8_they_are_not_equal() { - let a = F::from_base_type(13); - let b = F::from_base_type(8); - assert_ne!(a, b); + assert_ne!(FE::from(&13u32), FE::from(8)); } #[test] fn one_sub_1_is_0() { - let a = F::one(); - let b = F::one(); - let c = F::sub(&a, &b); - assert_eq!(c, F::zero()); + assert_eq!(FE::one() - FE::one(), FE::zero()); } #[test] fn zero_sub_1_is_order_minus_1() { - let a = F::zero(); - let b = F::one(); - let c = F::sub(&a, &b); - assert_eq!(c, MERSENNE_31_PRIME_FIELD_ORDER - 1); + assert_eq!( + FE::zero() - FE::one(), + FE::from(&(MERSENNE_31_PRIME_FIELD_ORDER - 1)) + ); } #[test] fn neg_1_sub_neg_1_is_0() { - let a = F::neg(&F::one()); - let b = F::neg(&F::one()); - let c = F::sub(&a, &b); - assert_eq!(c, F::zero()); + assert_eq!(-FE::one() - (-FE::one()), FE::zero()); } #[test] - fn neg_1_sub_1_is_neg_1() { - let a = F::neg(&F::one()); - let b = F::zero(); - let c = F::sub(&a, &b); - assert_eq!(c, F::neg(&F::one())); + fn neg_1_sub_0_is_neg_1() { + assert_eq!(-FE::one() - FE::zero(), -FE::one()); } #[test] fn mul_neutral_element() { - let a = F::from_base_type(1); - let b = F::from_base_type(2); - let c = F::mul(&a, &b); - assert_eq!(c, F::from_base_type(2)); + assert_eq!(FE::one() * FE::from(&2u32), FE::from(&2u32)); } #[test] fn mul_2_3_is_6() { - let a = F::from_base_type(2); - let b = F::from_base_type(3); - assert_eq!(a * b, F::from_base_type(6)); + assert_eq!(FE::from(&2u32) * FE::from(&3u32), FE::from(&6u32)); } #[test] fn mul_order_neg_1() { - let a = F::from_base_type(MERSENNE_31_PRIME_FIELD_ORDER - 1); - let b = F::from_base_type(MERSENNE_31_PRIME_FIELD_ORDER - 1); - let c = F::mul(&a, &b); - assert_eq!(c, F::from_base_type(1)); + assert_eq!( + FE::from(MERSENNE_31_PRIME_FIELD_ORDER as u64 - 1) + * FE::from(MERSENNE_31_PRIME_FIELD_ORDER as u64 - 1), + FE::one() + ); } #[test] fn pow_p_neg_1() { assert_eq!( - F::pow(&F::from_base_type(2), MERSENNE_31_PRIME_FIELD_ORDER - 1), - F::one() + FE::pow(&FE::from(&2u32), MERSENNE_31_PRIME_FIELD_ORDER - 1), + FE::one() ) } #[test] fn inv_0_error() { - let result = F::inv(&F::zero()); + let result = FE::inv(&FE::zero()); assert!(matches!(result, Err(FieldError::InvZeroError))); } #[test] fn inv_2() { - let result = F::inv(&F::from_base_type(2u32)).unwrap(); + let result = FE::inv(&FE::from(&2u32)).unwrap(); // sage: 1 / F(2) = 1073741824 - assert_eq!(result, 1073741824); + assert_eq!(result, FE::from(1073741824)); } #[test] fn pow_2_3() { - assert_eq!(F::pow(&F::from_base_type(2), 3_u64), 8) + assert_eq!(FE::pow(&FE::from(&2u32), 3u64), FE::from(8)); } #[test] fn div_1() { - assert_eq!(F::div(&F::from_base_type(2), &F::from_base_type(1)), 2) + assert_eq!(FE::from(&2u32) / FE::from(&1u32), FE::from(&2u32)); } #[test] fn div_4_2() { - assert_eq!(F::div(&F::from_base_type(4), &F::from_base_type(2)), 2) + assert_eq!(FE::from(&4u32) / FE::from(&2u32), FE::from(&2u32)); } - // 1431655766 #[test] fn div_4_3() { // sage: F(4) / F(3) = 1431655766 - assert_eq!( - F::div(&F::from_base_type(4), &F::from_base_type(3)), - 1431655766 - ) + assert_eq!(FE::from(&4u32) / FE::from(&3u32), FE::from(1431655766)); } #[test] fn two_plus_its_additive_inv_is_0() { - let two = F::from_base_type(2); - - assert_eq!(F::add(&two, &F::neg(&two)), F::zero()) + assert_eq!(FE::from(&2u32) + (-FE::from(&2u32)), FE::zero()); } #[test] fn from_u64_test() { - let num = F::from_u64(1u64); - assert_eq!(num, F::one()); + assert_eq!(FE::from(1u64), FE::one()); } #[test] fn creating_a_field_element_from_its_representative_returns_the_same_element_1() { - let change = 1; - let f1 = F::from_base_type(MERSENNE_31_PRIME_FIELD_ORDER + change); - let f2 = F::from_base_type(Mersenne31Field::representative(&f1)); + let change: u32 = MERSENNE_31_PRIME_FIELD_ORDER + 1; + let f1 = FE::from(&change); + let f2 = FE::from(&FE::representative(&f1)); assert_eq!(f1, f2); } #[test] fn creating_a_field_element_from_its_representative_returns_the_same_element_2() { - let change = 8; - let f1 = F::from_base_type(MERSENNE_31_PRIME_FIELD_ORDER + change); - let f2 = F::from_base_type(Mersenne31Field::representative(&f1)); + let change: u32 = MERSENNE_31_PRIME_FIELD_ORDER + 8; + let f1 = FE::from(&change); + let f2 = FE::from(&FE::representative(&f1)); assert_eq!(f1, f2); } #[test] fn from_base_type_test() { - let b = F::from_base_type(1u32); - assert_eq!(b, F::one()); + assert_eq!(FE::from(&1u32), FE::one()); } #[cfg(feature = "std")] #[test] fn to_hex_test() { - let num = F::from_hex("B").unwrap(); - assert_eq!(F::to_hex(&num), "B"); + let num = FE::from_hex("B").unwrap(); + assert_eq!(FE::to_hex(&num), "B"); + } + + #[test] + fn double_equals_add_itself() { + let a = FE::from(1234); + assert_eq!(a + a, a.double()) + } + + #[test] + fn two_square_minus_one_is_correct() { + let a = FE::from(2147483650); + assert_eq!( + FE::from(&F::two_square_minus_one(a.value())), + a.square().double() - FE::one() + ) + } + + #[test] + fn two_square_zero_minus_one_is_minus_one() { + let a = FE::from(0); + assert_eq!( + FE::from(&F::two_square_minus_one(a.value())), + a.square().double() - FE::one() + ) + } + + #[test] + fn two_square_p_minus_one_is_minus_one() { + let a = FE::from(&MERSENNE_31_PRIME_FIELD_ORDER); + assert_eq!( + FE::from(&F::two_square_minus_one(a.value())), + a.square().double() - FE::one() + ) + } + + #[test] + fn mul_by_inv() { + let x = 3476715743_u32; + assert_eq!(FE::from(&x).inv().unwrap() * FE::from(&x), FE::one()); } } diff --git a/math/src/field/fields/mersenne31/mod.rs b/math/src/field/fields/mersenne31/mod.rs index 4bfd3daf1..2272e7d5e 100644 --- a/math/src/field/fields/mersenne31/mod.rs +++ b/math/src/field/fields/mersenne31/mod.rs @@ -1,2 +1,2 @@ -pub mod extension; +pub mod extensions; pub mod field; diff --git a/math/src/field/fields/p448_goldilocks_prime_field.rs b/math/src/field/fields/p448_goldilocks_prime_field.rs index 9f67fd1d2..eadd61541 100644 --- a/math/src/field/fields/p448_goldilocks_prime_field.rs +++ b/math/src/field/fields/p448_goldilocks_prime_field.rs @@ -16,7 +16,7 @@ pub const P448_GOLDILOCKS_PRIME_FIELD_ORDER: U448 = /// 448-bit unsigned integer represented as /// a size 8 `u64` array `limbs` of 56-bit words. /// The least significant word is in the left most position. -#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Default)] pub struct U56x8 { limbs: [u64; 8], } diff --git a/math/src/field/traits.rs b/math/src/field/traits.rs index a9a39d2dd..320531f42 100644 --- a/math/src/field/traits.rs +++ b/math/src/field/traits.rs @@ -99,9 +99,9 @@ pub trait IsField: Debug + Clone { /// The underlying base type for representing elements from the field. // TODO: Relax Unpin for non cuda usage #[cfg(feature = "lambdaworks-serde-binary")] - type BaseType: Clone + Debug + Unpin + ByteConversion; + type BaseType: Clone + Debug + Unpin + ByteConversion + Default; #[cfg(not(feature = "lambdaworks-serde-binary"))] - type BaseType: Clone + Debug + Unpin; + type BaseType: Clone + Debug + Unpin + Default; /// Returns the sum of `a` and `b`. fn add(a: &Self::BaseType, b: &Self::BaseType) -> Self::BaseType; @@ -173,7 +173,9 @@ pub trait IsField: Debug + Clone { fn eq(a: &Self::BaseType, b: &Self::BaseType) -> bool; /// Returns the additive neutral element. - fn zero() -> Self::BaseType; + fn zero() -> Self::BaseType { + Self::BaseType::default() + } /// Returns the multiplicative neutral element. fn one() -> Self::BaseType; diff --git a/math/src/unsigned_integer/element.rs b/math/src/unsigned_integer/element.rs index 021afd9a3..1613e192b 100644 --- a/math/src/unsigned_integer/element.rs +++ b/math/src/unsigned_integer/element.rs @@ -36,6 +36,14 @@ pub struct UnsignedInteger { pub limbs: [u64; NUM_LIMBS], } +impl Default for UnsignedInteger { + fn default() -> Self { + Self { + limbs: [0; NUM_LIMBS], + } + } +} + // NOTE: manually implementing `PartialOrd` may seem unorthodox, but the // derived implementation had terrible performance. #[allow(clippy::non_canonical_partial_ord_impl)] From 86b2789c95c9a02f1227b17b9019e1ad33f5290e Mon Sep 17 00:00:00 2001 From: jotabulacios <45471455+jotabulacios@users.noreply.github.com> Date: Thu, 3 Oct 2024 12:48:10 -0300 Subject: [PATCH 08/12] Add Missing Components for BLS12-377 Curve (#922) * save work. g1 subgroup check works but not the check for g2 * save work. both subgroup check works * save work. curve is complete * small refactor * non-residue as a constant * fix wrong constant * fp2 residue as a constant --------- Co-authored-by: Diego K <43053772+diegokingston@users.noreply.github.com> --- .../curves/bls12_377/curve.rs | 139 ++++++- .../curves/bls12_377/field_extension.rs | 342 +++++++++++++++++- .../short_weierstrass/curves/bls12_377/mod.rs | 1 + .../curves/bls12_377/twist.rs | 172 +++++++++ 4 files changed, 640 insertions(+), 14 deletions(-) create mode 100644 math/src/elliptic_curve/short_weierstrass/curves/bls12_377/twist.rs diff --git a/math/src/elliptic_curve/short_weierstrass/curves/bls12_377/curve.rs b/math/src/elliptic_curve/short_weierstrass/curves/bls12_377/curve.rs index c324b35de..efa52bdbc 100644 --- a/math/src/elliptic_curve/short_weierstrass/curves/bls12_377/curve.rs +++ b/math/src/elliptic_curve/short_weierstrass/curves/bls12_377/curve.rs @@ -1,10 +1,25 @@ -use super::field_extension::BLS12377PrimeField; +use super::{ + field_extension::{BLS12377PrimeField, Degree2ExtensionField}, + twist::BLS12377TwistCurve, +}; +use crate::cyclic_group::IsGroup; use crate::elliptic_curve::short_weierstrass::point::ShortWeierstrassProjectivePoint; use crate::elliptic_curve::traits::IsEllipticCurve; +use crate::unsigned_integer::element::U256; + use crate::{ elliptic_curve::short_weierstrass::traits::IsShortWeierstrass, field::element::FieldElement, }; +pub const SUBGROUP_ORDER: U256 = + U256::from_hex_unchecked("12ab655e9a2ca55660b44d1e5c37b00159aa76fed00000010a11800000000001"); + +pub const CURVE_COFACTOR: U256 = + U256::from_hex_unchecked("0x30631250834960419227450344600217059328"); + +pub type BLS12377FieldElement = FieldElement; +pub type BLS12377TwistCurveFieldElement = FieldElement; + /// The description of the curve. #[derive(Clone, Debug)] pub struct BLS12377Curve; @@ -32,6 +47,71 @@ impl IsShortWeierstrass for BLS12377Curve { } } +/// This is equal to the frobenius trace of the BLS12 377 curve minus one or seed value z. +pub const MILLER_LOOP_CONSTANT: u64 = 0x8508c00000000001; + +/// 𝛽 : primitive cube root of unity of 𝐹ₚ that §satisfies the minimal equation +/// 𝛽² + 𝛽 + 1 = 0 mod 𝑝 +pub const CUBE_ROOT_OF_UNITY_G1: BLS12377FieldElement = FieldElement::from_hex_unchecked( + "0x1ae3a4617c510eabc8756ba8f8c524eb8882a75cc9bc8e359064ee822fb5bffd1e945779fffffffffffffffffffffff", +); + +/// x-coordinate of 𝜁 ∘ 𝜋_q ∘ 𝜁⁻¹, where 𝜁 is the isomorphism u:E'(𝔽ₚ₆) −> E(𝔽ₚ₁₂) from the twist to E +pub const ENDO_U: BLS12377TwistCurveFieldElement = + BLS12377TwistCurveFieldElement::const_from_raw([ + FieldElement::from_hex_unchecked( + "9B3AF05DD14F6EC619AAF7D34594AABC5ED1347970DEC00452217CC900000008508C00000000002", + ), + FieldElement::from_hex_unchecked("0"), + ]); + +/// y-coordinate of 𝜁 ∘ 𝜋_q ∘ 𝜁⁻¹, where 𝜁 is the isomorphism u:E'(𝔽ₚ₆) −> E(𝔽ₚ₁₂) from the twist to E +pub const ENDO_V: BLS12377TwistCurveFieldElement = + BLS12377TwistCurveFieldElement::const_from_raw([ + FieldElement::from_hex_unchecked("1680A40796537CAC0C534DB1A79BEB1400398F50AD1DEC1BCE649CF436B0F6299588459BFF27D8E6E76D5ECF1391C63"), + FieldElement::from_hex_unchecked("0"), + ]); + +impl ShortWeierstrassProjectivePoint { + /// Returns 𝜙(P) = (𝑥, 𝑦) ⇒ (𝛽𝑥, 𝑦), where 𝛽 is the Cube Root of Unity in the base prime field + /// https://eprint.iacr.org/2022/352.pdf 2 Preliminaries + fn phi(&self) -> Self { + let mut a = self.clone(); + a.0.value[0] = a.x() * CUBE_ROOT_OF_UNITY_G1; + a + } + + /// 𝜙(P) = −𝑢²P + /// https://eprint.iacr.org/2022/352.pdf 4.3 Prop. 4 + pub fn is_in_subgroup(&self) -> bool { + self.operate_with_self(MILLER_LOOP_CONSTANT) + .operate_with_self(MILLER_LOOP_CONSTANT) + .neg() + == self.phi() + } +} + +impl ShortWeierstrassProjectivePoint { + /// 𝜓(P) = 𝜁 ∘ 𝜋ₚ ∘ 𝜁⁻¹, where 𝜁 is the isomorphism u:E'(𝔽ₚ₆) −> E(𝔽ₚ₁₂) from the twist to E,, 𝜋ₚ is the p-power frobenius endomorphism + /// and 𝜓 satisifies minmal equation 𝑋² + 𝑡𝑋 + 𝑞 = 𝑂 + /// https://eprint.iacr.org/2022/352.pdf 4.2 (7) + /// ψ(P) = (ψ_x * conjugate(x), ψ_y * conjugate(y), conjugate(z)) + fn psi(&self) -> Self { + let [x, y, z] = self.coordinates(); + Self::new([ + x.conjugate() * ENDO_U, + y.conjugate() * ENDO_V, + z.conjugate(), + ]) + } + + /// 𝜓(P) = 𝑢P, where 𝑢 = SEED of the curve + /// https://eprint.iacr.org/2022/352.pdf 4.2 + pub fn is_in_subgroup(&self) -> bool { + self.psi() == self.operate_with_self(MILLER_LOOP_CONSTANT) + } +} + #[cfg(test)] mod tests { use super::*; @@ -43,17 +123,18 @@ mod tests { use super::BLS12377Curve; #[allow(clippy::upper_case_acronyms)] - type FEE = FieldElement; + type FpE = FieldElement; + type Fp2 = FieldElement; fn point_1() -> ShortWeierstrassProjectivePoint { - let x = FEE::new_base("134e4cc122cb62a06767fb98e86f2d5f77e2a12fefe23bb0c4c31d1bd5348b88d6f5e5dee2b54db4a2146cc9f249eea"); - let y = FEE::new_base("17949c29effee7a9f13f69b1c28eccd78c1ed12b47068836473481ff818856594fd9c1935e3d9e621901a2d500257a2"); + let x = FpE::new_base("134e4cc122cb62a06767fb98e86f2d5f77e2a12fefe23bb0c4c31d1bd5348b88d6f5e5dee2b54db4a2146cc9f249eea"); + let y = FpE::new_base("17949c29effee7a9f13f69b1c28eccd78c1ed12b47068836473481ff818856594fd9c1935e3d9e621901a2d500257a2"); BLS12377Curve::create_point_from_affine(x, y).unwrap() } fn point_1_times_5() -> ShortWeierstrassProjectivePoint { - let x = FEE::new_base("3c852d5aab73fbb51e57fbf5a0a8b5d6513ec922b2611b7547bfed74cba0dcdfc3ad2eac2733a4f55d198ec82b9964"); - let y = FEE::new_base("a71425e68e55299c64d7eada9ae9c3fb87a9626b941d17128b64685fc07d0e635f3c3a512903b4e0a43e464045967b"); + let x = FpE::new_base("3c852d5aab73fbb51e57fbf5a0a8b5d6513ec922b2611b7547bfed74cba0dcdfc3ad2eac2733a4f55d198ec82b9964"); + let y = FpE::new_base("a71425e68e55299c64d7eada9ae9c3fb87a9626b941d17128b64685fc07d0e635f3c3a512903b4e0a43e464045967b"); BLS12377Curve::create_point_from_affine(x, y).unwrap() } @@ -101,9 +182,9 @@ mod tests { let point_1 = point_1().to_affine(); // Create point 2 - let x = FEE::new_base("134e4cc122cb62a06767fb98e86f2d5f77e2a12fefe23bb0c4c31d1bd5348b88d6f5e5dee2b54db4a2146cc9f249eea") * FEE::from(2); - let y = FEE::new_base("17949c29effee7a9f13f69b1c28eccd78c1ed12b47068836473481ff818856594fd9c1935e3d9e621901a2d500257a2") * FEE::from(2); - let z = FEE::from(2); + let x = FpE::new_base("134e4cc122cb62a06767fb98e86f2d5f77e2a12fefe23bb0c4c31d1bd5348b88d6f5e5dee2b54db4a2146cc9f249eea") * FpE::from(2); + let y = FpE::new_base("17949c29effee7a9f13f69b1c28eccd78c1ed12b47068836473481ff818856594fd9c1935e3d9e621901a2d500257a2") * FpE::from(2); + let z = FpE::from(2); let point_2 = ShortWeierstrassProjectivePoint::::new([x, y, z]); let first_algorithm_result = point_2.operate_with(&point_1).to_affine(); @@ -115,15 +196,15 @@ mod tests { #[test] fn create_valid_point_works() { let p = point_1(); - assert_eq!(*p.x(), FEE::new_base("134e4cc122cb62a06767fb98e86f2d5f77e2a12fefe23bb0c4c31d1bd5348b88d6f5e5dee2b54db4a2146cc9f249eea")); - assert_eq!(*p.y(), FEE::new_base("17949c29effee7a9f13f69b1c28eccd78c1ed12b47068836473481ff818856594fd9c1935e3d9e621901a2d500257a2")); - assert_eq!(*p.z(), FEE::new_base("1")); + assert_eq!(*p.x(), FpE::new_base("134e4cc122cb62a06767fb98e86f2d5f77e2a12fefe23bb0c4c31d1bd5348b88d6f5e5dee2b54db4a2146cc9f249eea")); + assert_eq!(*p.y(), FpE::new_base("17949c29effee7a9f13f69b1c28eccd78c1ed12b47068836473481ff818856594fd9c1935e3d9e621901a2d500257a2")); + assert_eq!(*p.z(), FpE::new_base("1")); } #[test] fn create_invalid_points_panics() { assert_eq!( - BLS12377Curve::create_point_from_affine(FEE::from(1), FEE::from(1)).unwrap_err(), + BLS12377Curve::create_point_from_affine(FpE::from(1), FpE::from(1)).unwrap_err(), EllipticCurveError::InvalidPoint ) } @@ -144,4 +225,36 @@ mod tests { g.operate_with_self(3_u16) ); } + + #[test] + fn generator_g1_is_in_subgroup() { + let g = BLS12377Curve::generator(); + assert!(g.is_in_subgroup()) + } + + #[test] + fn point1_is_in_subgroup() { + let p = point_1(); + assert!(p.is_in_subgroup()) + } + + #[test] + fn arbitrary_g1_point_is_in_subgroup() { + let g = BLS12377Curve::generator().operate_with_self(32u64); + assert!(g.is_in_subgroup()) + } + #[test] + fn generator_g2_is_in_subgroup() { + let g = BLS12377TwistCurve::generator(); + assert!(g.is_in_subgroup()) + } + + #[test] + fn g2_conjugate_works() { + let a = Fp2::zero(); + let mut expected = a.conjugate(); + expected = expected.conjugate(); + + assert_eq!(a, expected); + } } diff --git a/math/src/elliptic_curve/short_weierstrass/curves/bls12_377/field_extension.rs b/math/src/elliptic_curve/short_weierstrass/curves/bls12_377/field_extension.rs index 32f9d465d..96c227ddb 100644 --- a/math/src/elliptic_curve/short_weierstrass/curves/bls12_377/field_extension.rs +++ b/math/src/elliptic_curve/short_weierstrass/curves/bls12_377/field_extension.rs @@ -1,10 +1,18 @@ use crate::field::{ element::FieldElement, + errors::FieldError, + extensions::{ + cubic::{CubicExtensionField, HasCubicNonResidue}, + quadratic::{HasQuadraticNonResidue, QuadraticExtensionField}, + }, fields::montgomery_backed_prime_fields::{IsModulus, MontgomeryBackendPrimeField}, + traits::{IsField, IsSubFieldOf}, }; +use crate::traits::ByteConversion; use crate::unsigned_integer::element::U384; pub const BLS12377_PRIME_FIELD_ORDER: U384 = U384::from_hex_unchecked("1ae3a4617c510eac63b05c06ca1493b1a22d9f300f5138f1ef3622fba094800170b5d44300000008508c00000000001"); +pub const FP2_RESIDUE: FieldElement =FieldElement::from_hex_unchecked("0x1ae3a4617c510eac63b05c06ca1493b1a22d9f300f5138f1ef3622fba094800170b5d44300000008508bffffffffffc"); // FPBLS12377 #[derive(Clone, Debug)] @@ -15,8 +23,340 @@ impl IsModulus for BLS12377FieldModulus { pub type BLS12377PrimeField = MontgomeryBackendPrimeField; +#[derive(Clone, Debug)] +pub struct Degree2ExtensionField; + +impl IsField for Degree2ExtensionField { + type BaseType = [FieldElement; 2]; + /// Returns the component wise addition of `a` and `b` + /// Returns the component wise addition of `a` and `b` + fn add(a: &Self::BaseType, b: &Self::BaseType) -> Self::BaseType { + [&a[0] + &b[0], &a[1] + &b[1]] + } + + /// Returns the multiplication of `a` and `b` using the following + /// equation: + /// (a0 + a1 * t) * (b0 + b1 * t) = a0 * b0 + a1 * b1 * Self::residue() + (a0 * b1 + a1 * b0) * t + /// where `t.pow(2)` equals `Q::residue()`. + fn mul(a: &Self::BaseType, b: &Self::BaseType) -> Self::BaseType { + let a0b0 = &a[0] * &b[0]; + let a1b1 = &a[1] * &b[1]; + let z = (&a[0] + &a[1]) * (&b[0] + &b[1]); + [&a0b0 + &a1b1 * FP2_RESIDUE, z - a0b0 - a1b1] + } + + fn square(a: &Self::BaseType) -> Self::BaseType { + let [a0, a1] = a; + let v0 = a0 * a1; + let c0 = (a0 + a1) * (a0 + &FP2_RESIDUE * a1) - &v0 - FP2_RESIDUE * &v0; + let c1 = &v0 + &v0; + [c0, c1] + } + /// Returns the component wise subtraction of `a` and `b` + fn sub(a: &Self::BaseType, b: &Self::BaseType) -> Self::BaseType { + [&a[0] - &b[0], &a[1] - &b[1]] + } + + /// Returns the component wise negation of `a` + fn neg(a: &Self::BaseType) -> Self::BaseType { + [-&a[0], -&a[1]] + } + + /// Returns the multiplicative inverse of `a` + /// This uses the equality `(a0 + a1 * t) * (a0 - a1 * t) = a0.pow(2) - a1.pow(2) * Q::residue()` + fn inv(a: &Self::BaseType) -> Result { + let q: FieldElement = -FieldElement::from(5); + let inv_norm = (a[0].pow(2_u64) - q * a[1].pow(2_u64)).inv()?; + Ok([&a[0] * &inv_norm, -&a[1] * inv_norm]) + } + + /// Returns the division of `a` and `b` + fn div(a: &Self::BaseType, b: &Self::BaseType) -> Self::BaseType { + ::mul(a, &Self::inv(b).unwrap()) + } + + /// Returns a boolean indicating whether `a` and `b` are equal component wise. + fn eq(a: &Self::BaseType, b: &Self::BaseType) -> bool { + a[0] == b[0] && a[1] == b[1] + } + + /// Returns the additive neutral element of the field extension. + fn zero() -> Self::BaseType { + [FieldElement::zero(), FieldElement::zero()] + } + + /// Returns the multiplicative neutral element of the field extension. + fn one() -> Self::BaseType { + [FieldElement::one(), FieldElement::zero()] + } + + /// Returns the element `x * 1` where 1 is the multiplicative neutral element. + fn from_u64(x: u64) -> Self::BaseType { + [FieldElement::from(x), FieldElement::zero()] + } + + /// Takes as input an element of BaseType and returns the internal representation + /// of that element in the field. + /// Note: for this case this is simply the identity, because the components + /// already have correct representations. + fn from_base_type(x: Self::BaseType) -> Self::BaseType { + x + } +} + +impl IsSubFieldOf for BLS12377PrimeField { + fn mul( + a: &Self::BaseType, + b: &::BaseType, + ) -> ::BaseType { + let c0 = FieldElement::from_raw(::mul(a, b[0].value())); + let c1 = FieldElement::from_raw(::mul(a, b[1].value())); + [c0, c1] + } + + fn add( + a: &Self::BaseType, + b: &::BaseType, + ) -> ::BaseType { + let c0 = FieldElement::from_raw(::add(a, b[0].value())); + let c1 = FieldElement::from_raw(*b[1].value()); + [c0, c1] + } + + fn div( + a: &Self::BaseType, + b: &::BaseType, + ) -> ::BaseType { + let b_inv = Degree2ExtensionField::inv(b).unwrap(); + >::mul(a, &b_inv) + } + + fn sub( + a: &Self::BaseType, + b: &::BaseType, + ) -> ::BaseType { + let c0 = FieldElement::from_raw(::sub(a, b[0].value())); + let c1 = FieldElement::from_raw(::neg(b[1].value())); + [c0, c1] + } + + fn embed(a: Self::BaseType) -> ::BaseType { + [FieldElement::from_raw(a), FieldElement::zero()] + } + + #[cfg(feature = "alloc")] + fn to_subfield_vec( + b: ::BaseType, + ) -> alloc::vec::Vec { + b.into_iter().map(|x| x.to_raw()).collect() + } +} + +impl ByteConversion for FieldElement { + #[cfg(feature = "alloc")] + fn to_bytes_be(&self) -> alloc::vec::Vec { + let mut byte_slice = ByteConversion::to_bytes_be(&self.value()[0]); + byte_slice.extend(ByteConversion::to_bytes_be(&self.value()[1])); + byte_slice + } + + #[cfg(feature = "alloc")] + fn to_bytes_le(&self) -> alloc::vec::Vec { + let mut byte_slice = ByteConversion::to_bytes_le(&self.value()[0]); + byte_slice.extend(ByteConversion::to_bytes_le(&self.value()[1])); + byte_slice + } + + fn from_bytes_be(bytes: &[u8]) -> Result + where + Self: core::marker::Sized, + { + const BYTES_PER_FIELD: usize = 48; + let x0 = FieldElement::from_bytes_be(&bytes[0..BYTES_PER_FIELD])?; + let x1 = FieldElement::from_bytes_be(&bytes[BYTES_PER_FIELD..BYTES_PER_FIELD * 2])?; + Ok(Self::new([x0, x1])) + } + + fn from_bytes_le(bytes: &[u8]) -> Result + where + Self: core::marker::Sized, + { + const BYTES_PER_FIELD: usize = 48; + let x0 = FieldElement::from_bytes_le(&bytes[0..BYTES_PER_FIELD])?; + let x1 = FieldElement::from_bytes_le(&bytes[BYTES_PER_FIELD..BYTES_PER_FIELD * 2])?; + Ok(Self::new([x0, x1])) + } +} + +impl FieldElement { + pub fn new_base(a_hex: &str) -> Self { + Self::new([FieldElement::new(U384::from(a_hex)), FieldElement::zero()]) + } + + pub fn conjugate(&self) -> Self { + let [a, b] = self.value(); + Self::new([a.clone(), -b]) + } +} + +#[derive(Debug, Clone)] +pub struct BLS12377Residue; +impl HasQuadraticNonResidue for BLS12377Residue { + fn residue() -> FieldElement { + FP2_RESIDUE + } +} + +#[derive(Debug, Clone)] +pub struct LevelTwoResidue; + +impl HasCubicNonResidue for LevelTwoResidue { + fn residue() -> FieldElement { + FieldElement::new([ + FieldElement::new(U384::from("0")), + -FieldElement::new(U384::from("1")), + ]) + } +} + +pub type Degree6ExtensionField = CubicExtensionField; + +#[derive(Debug, Clone)] +pub struct LevelThreeResidue; +impl HasQuadraticNonResidue for LevelThreeResidue { + fn residue() -> FieldElement { + FieldElement::new([ + FieldElement::zero(), + FieldElement::one(), + FieldElement::zero(), + ]) + } +} + +/// We define Fp12 = Fp6 [w] / (w^2 - v) +pub type Degree12ExtensionField = QuadraticExtensionField; + +impl FieldElement { + pub fn new_base(a_hex: &str) -> Self { + Self::new([ + FieldElement::new([FieldElement::new(U384::from(a_hex)), FieldElement::zero()]), + FieldElement::zero(), + FieldElement::zero(), + ]) + } +} + impl FieldElement { pub fn new_base(a_hex: &str) -> Self { - Self::new(U384::from_hex_unchecked(a_hex)) + Self::new(U384::from(a_hex)) + } +} +impl FieldElement { + pub fn new_base(a_hex: &str) -> Self { + Self::new([ + FieldElement::::new_base(a_hex), + FieldElement::zero(), + ]) + } + + pub fn from_coefficients(coefficients: &[&str; 12]) -> Self { + FieldElement::::new([ + FieldElement::new([ + FieldElement::new([ + FieldElement::new(U384::from(coefficients[0])), + FieldElement::new(U384::from(coefficients[1])), + ]), + FieldElement::new([ + FieldElement::new(U384::from(coefficients[2])), + FieldElement::new(U384::from(coefficients[3])), + ]), + FieldElement::new([ + FieldElement::new(U384::from(coefficients[4])), + FieldElement::new(U384::from(coefficients[5])), + ]), + ]), + FieldElement::new([ + FieldElement::new([ + FieldElement::new(U384::from(coefficients[6])), + FieldElement::new(U384::from(coefficients[7])), + ]), + FieldElement::new([ + FieldElement::new(U384::from(coefficients[8])), + FieldElement::new(U384::from(coefficients[9])), + ]), + FieldElement::new([ + FieldElement::new(U384::from(coefficients[10])), + FieldElement::new(U384::from(coefficients[11])), + ]), + ]), + ]) + } +} + +#[cfg(test)] +mod tests { + + use super::*; + type FpE = FieldElement; + type Fp2E = FieldElement; + type Fp6E = FieldElement; + type Fp12E = FieldElement; + + #[test] + fn embed_base_field_with_degree_2_extension() { + let a = FpE::from(3); + let a_extension = Fp2E::from(3); + assert_eq!(a.to_extension::(), a_extension); + } + #[test] + fn add_base_field_with_degree_2_extension() { + let a = FpE::from(3); + let a_extension = Fp2E::from(3); + let b = Fp2E::from(2); + assert_eq!(a + &b, a_extension + b); + } + #[test] + fn mul_degree_2_with_degree_6_extension() { + let a = Fp2E::new([FpE::from(3), FpE::from(4)]); + let a_extension = a.clone().to_extension::(); + let b = Fp6E::from(2); + assert_eq!(a * &b, a_extension * b); + } + #[test] + fn div_degree_6_degree_12_extension() { + let a = Fp6E::from(3); + let a_extension = Fp12E::from(3); + let b = Fp12E::from(2); + assert_eq!(a / &b, a_extension / b); + } + + #[test] + fn double_equals_sum_two_times() { + let a = FpE::from(3); + assert_eq!(a.double(), a.clone() + a); + } + #[test] + fn base_field_sum_is_asociative() { + let a = FpE::from(3); + let b = FpE::from(2); + let c = &a + &b; + assert_eq!(a.double() + b, a + c); + } + #[test] + fn degree_2_extension_mul_is_conmutative() { + let a = Fp2E::from(3); + let b = Fp2E::new([FpE::from(2), FpE::from(4)]); + assert_eq!(&a * &b, b * a); + } + + #[test] + fn base_field_pow_p_is_identity() { + let a = FpE::from(3); + assert_eq!(a.pow(BLS12377_PRIME_FIELD_ORDER), a); + } + #[test] + fn square_equals_mul_two_times() { + let a = FpE::from(3); + assert_eq!(a.square(), a.clone() * a); } } diff --git a/math/src/elliptic_curve/short_weierstrass/curves/bls12_377/mod.rs b/math/src/elliptic_curve/short_weierstrass/curves/bls12_377/mod.rs index 8fc713a88..5fe6ce8bd 100644 --- a/math/src/elliptic_curve/short_weierstrass/curves/bls12_377/mod.rs +++ b/math/src/elliptic_curve/short_weierstrass/curves/bls12_377/mod.rs @@ -1,2 +1,3 @@ pub mod curve; pub mod field_extension; +pub mod twist; diff --git a/math/src/elliptic_curve/short_weierstrass/curves/bls12_377/twist.rs b/math/src/elliptic_curve/short_weierstrass/curves/bls12_377/twist.rs new file mode 100644 index 000000000..e0aa87c59 --- /dev/null +++ b/math/src/elliptic_curve/short_weierstrass/curves/bls12_377/twist.rs @@ -0,0 +1,172 @@ +use super::field_extension::Degree2ExtensionField; +use crate::elliptic_curve::short_weierstrass::point::ShortWeierstrassProjectivePoint; +use crate::elliptic_curve::traits::IsEllipticCurve; +use crate::unsigned_integer::element::U384; +use crate::{ + elliptic_curve::short_weierstrass::traits::IsShortWeierstrass, field::element::FieldElement, +}; + +const GENERATOR_X_0: U384 = U384::from_hex_unchecked("0x018480be71c785fec89630a2a3841d01c565f071203e50317ea501f557db6b9b71889f52bb53540274e3e48f7c005196"); +const GENERATOR_X_1: U384 = U384::from_hex_unchecked("0x00ea6040e700403170dc5a51b1b140d5532777ee6651cecbe7223ece0799c9de5cf89984bff76fe6b26bfefa6ea16afe"); +const GENERATOR_Y_0: U384 = U384::from_hex_unchecked("0x00690d665d446f7bd960736bcbb2efb4de03ed7274b49a58e458c282f832d204f2cf88886d8c7c2ef094094409fd4ddf"); +const GENERATOR_Y_1: U384 = U384::from_hex_unchecked("0x00f8169fd28355189e549da3151a70aa61ef11ac3d591bf12463b01acee304c24279b83f5e52270bd9a1cdd185eb8f93"); + +/// The description of the curve. +#[derive(Clone, Debug)] +pub struct BLS12377TwistCurve; + +impl IsEllipticCurve for BLS12377TwistCurve { + type BaseField = Degree2ExtensionField; + type PointRepresentation = ShortWeierstrassProjectivePoint; + + fn generator() -> Self::PointRepresentation { + Self::PointRepresentation::new([ + FieldElement::new([ + FieldElement::new(GENERATOR_X_0), + FieldElement::new(GENERATOR_X_1), + ]), + FieldElement::new([ + FieldElement::new(GENERATOR_Y_0), + FieldElement::new(GENERATOR_Y_1), + ]), + FieldElement::one(), + ]) + } +} + +impl IsShortWeierstrass for BLS12377TwistCurve { + fn a() -> FieldElement { + FieldElement::zero() + } + + fn b() -> FieldElement { + FieldElement::new([FieldElement::zero(), + FieldElement::from_hex_unchecked("0x10222f6db0fd6f343bd03737460c589dc7b4f91cd5fd889129207b63c6bf8000dd39e5c1ccccccd1c9ed9999999999a")]) + } +} + +#[cfg(test)] +mod tests { + use crate::{ + cyclic_group::IsGroup, + elliptic_curve::{ + short_weierstrass::{ + curves::bls12_377::field_extension::{BLS12377PrimeField, Degree2ExtensionField}, + traits::IsShortWeierstrass, + }, + traits::IsEllipticCurve, + }, + field::element::FieldElement, + unsigned_integer::element::U384, + }; + + use super::BLS12377TwistCurve; + type Level0FE = FieldElement; + type Level1FE = FieldElement; + + #[test] + fn create_generator() { + let g = BLS12377TwistCurve::generator(); + let [x, y, _] = g.coordinates(); + assert_eq!( + BLS12377TwistCurve::defining_equation(x, y), + Level1FE::zero() + ); + } + #[test] + // Values checked in sage + fn add_point_three_times_equals_operate_with_self_3() { + let px = Level1FE::new([ + Level0FE::new(U384::from_hex_unchecked("0x11a87eda97b96e733c2eb833ae35531b87878b416d57b370c7cd13b5f3c413387633b0ca6dfead19305318501376087")), + Level0FE::new(U384::from_hex_unchecked("0xa4a6d842722f2636937acf0e889ab343e121a599b8a3a9bd3be766da7d84f8e060be00f06bb2d29df963bf2d847598")) + ]); + let py = Level1FE::new([ + Level0FE::new(U384::from_hex_unchecked("0x75589c0925d6cf45e715460ea7cb3388d4e21d9b79aa8411567d8de85ba5561bcab80a5c0b363e31817d458e5b2a2a")), + Level0FE::new(U384::from_hex_unchecked("0xcb4e1e4b160cc6c92e7b3dd0b2f4053bc7178d201e7788796a6035c59ccd586635796e97003b1f76eca273576f01ac")) + ]); + + let expectedx = Level1FE::new([ + Level0FE::new(U384::from_hex_unchecked("0x1aba32e70b88834d0cd5fb3a27eda8211eb94b6a191cd287f798145c09dc64dabda377836c31d31cc728635425ccc61")), + Level0FE::new(U384::from_hex_unchecked("0x146b578a9c3d92f64baafa082d27c3446fb197659bbd4ac45e290f5f49ae308599448dc288140a4049bac3c6e3e1aac")) + ]); + let expectedy = Level1FE::new([ + Level0FE::new(U384::from_hex_unchecked("0x1417486a114a5a9074151a3a2c710dc105cce81de69a91067758355cda7049a2ad8077a2343679bba473484ad0cddd6")), + Level0FE::new(U384::from_hex_unchecked("0x195c939995782a07b26e3b44b49d58eb0951d452d0e8928f218a8e63f74f74860cb56265e437da80df67b6254b27cd")) + ]); + let p = BLS12377TwistCurve::create_point_from_affine(px, py).unwrap(); + let expected = BLS12377TwistCurve::create_point_from_affine(expectedx, expectedy).unwrap(); + assert_eq!(p.operate_with_self(3_u16), expected); + } + + #[test] + // Values checked in sage + fn operate_with_self_test() { + let px = Level1FE::new([ + Level0FE::new(U384::from_hex_unchecked("0x2233db786c8cb6a3b6846aebad4ce3f5346961c8bade4c129d920170d1ceeb02d84fd4e12b592f0cba64e083d75167")), + Level0FE::new(U384::from_hex_unchecked("0x12d1c7ac03cb1991993cdb9d38c50588b67c18ed9b9db5f84ac5b59c201f6493a42f690169b96b7a9f12fae4718b6cb")) + ]); + + let py = Level1FE::new([ + Level0FE::new(U384::from_hex_unchecked("0x160cc59bb3929b1073996aa370c880e002b81f3e4f7275636caf55754bbfcfe1d43c5d91ee7f3cb49254be2366d5d0")), + Level0FE::new(U384::from_hex_unchecked("0xe66460970bf2fc79831983744d7c83fad910266fd56f08b4a8f737e7609d88930503091e06228a184627b57c02352")) + ]); + + let qx = Level1FE::new([ + Level0FE::new(U384::from_hex_unchecked("0x1124128cf7166bb67207327079f8a3e75d876e3b6dd54cc05c766951c5d832aa202c57ed2308d78283e4c859be8fee3")), + Level0FE::new(U384::from_hex_unchecked("0x1889e19d4f67d120d367c15f7bc23529fe4e335627e0eb16ec2bafe6199f0e7d393c5413fc7157ec03d5d56e1eb333")) + ]); + + let qy = Level1FE::new([ + Level0FE::new(U384::from_hex_unchecked("0x16db05c371bf6f28e92faa77d3abf5c66c4feea84d334807f46ee69227a2144a827b00f8bcf4179b97922a85ebd5776")), + Level0FE::new(U384::from_hex_unchecked("0x105def68752ac5cb73f3b692b3c877f2febe6cd8a679584f4b1c64f9886f12b15dd7909251bc1e90d559fadd6b1f8f5")) + ]); + + let scalar = U384::from_hex_unchecked( + "0x3061aa3679b1865fa09dac7339a87511147f015aa8997fae59b475d751bc16f", + ); + + let p = BLS12377TwistCurve::create_point_from_affine(px, py).unwrap(); + let q = BLS12377TwistCurve::create_point_from_affine(qx, qy).unwrap(); + + assert_eq!(p.operate_with_self(scalar), q); + } + + #[test] + // Values checked in sage + fn add_two_points() { + let px = Level1FE::new([ + Level0FE::new(U384::from_hex_unchecked("0x11a87eda97b96e733c2eb833ae35531b87878b416d57b370c7cd13b5f3c413387633b0ca6dfead19305318501376087")), + Level0FE::new(U384::from_hex_unchecked("0xa4a6d842722f2636937acf0e889ab343e121a599b8a3a9bd3be766da7d84f8e060be00f06bb2d29df963bf2d847598")) + ]); + + let py = Level1FE::new([ + Level0FE::new(U384::from_hex_unchecked("0x75589c0925d6cf45e715460ea7cb3388d4e21d9b79aa8411567d8de85ba5561bcab80a5c0b363e31817d458e5b2a2a")), + Level0FE::new(U384::from_hex_unchecked("0xcb4e1e4b160cc6c92e7b3dd0b2f4053bc7178d201e7788796a6035c59ccd586635796e97003b1f76eca273576f01ac")) + ]); + + let qx = Level1FE::new([ + Level0FE::new(U384::from_hex_unchecked("0xa27279ea48d8e812223956c84ae89c5de09e67c7052c056d936da4578dcf0b30799f2212af0017fe50e146c5c2ce05")), + Level0FE::new(U384::from_hex_unchecked("0xaed1579f3de386644e0ffac471e98f8f1d97a6be4d88a0c516bc9fd4d7780649424c3d51bb85d074d66560e2c2bb07")) + ]); + + let qy = Level1FE::new([ + Level0FE::new(U384::from_hex_unchecked("0x6e7e249e0d7c81d0fec62a3f96d6fefd7d6c87019559b03664a015a2ed536d98e6432b93ec219426f9729f119c7982")), + Level0FE::new(U384::from_hex_unchecked("0x104c4e4adb48273511a0473d742724f48042b967591ab9b86731bb902debfd44d89571af704340614f6618863fc5841")) + ]); + + let expectedx = Level1FE::new([ + Level0FE::new(U384::from_hex_unchecked("0x19d74f8769a27aae05c5b50b2d051849f6feab554d0fd4f51c7fe43d918fac1d966c97dd6e61b2f7fc13694495dc259")), + Level0FE::new(U384::from_hex_unchecked("0x11f4194886ad75e3baff9853734e9ef4fe5f20d333951ba126bca7dd54ebc4998b17d4d315d29147dc22124c5464a64")) + ]); + let expectedy = Level1FE::new([ + Level0FE::new(U384::from_hex_unchecked("0x14faa941c0cdf5567c294bc9e73e83c4602f331a7400222c8475fba4c6a688b12ce8f7cc20e54eaac1af6046aec58bd")), + Level0FE::new(U384::from_hex_unchecked("0x7cee0c4760e2bf76047cda31141e6242c5893ba5c2fba5f23c0048545912e309dc647f4cfe2db17b23aa2f57c3d8c3")) + ]); + + let p = BLS12377TwistCurve::create_point_from_affine(px, py).unwrap(); + let q = BLS12377TwistCurve::create_point_from_affine(qx, qy).unwrap(); + let expected = BLS12377TwistCurve::create_point_from_affine(expectedx, expectedy).unwrap(); + + assert_eq!(p.operate_with(&q), expected); + } +} From e25a464e570b8c069cac6e1df6c5d802e4b2c4f6 Mon Sep 17 00:00:00 2001 From: Thomas Coratger <60488569+tcoratger@users.noreply.github.com> Date: Fri, 4 Oct 2024 17:48:52 +0200 Subject: [PATCH 09/12] Small perf adjustments for ShortWeierstrassProjectivePoint operations (#842) Co-authored-by: Diego K <43053772+diegokingston@users.noreply.github.com> --- math/src/elliptic_curve/short_weierstrass/point.rs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/math/src/elliptic_curve/short_weierstrass/point.rs b/math/src/elliptic_curve/short_weierstrass/point.rs index 888d3f50a..679edeaea 100644 --- a/math/src/elliptic_curve/short_weierstrass/point.rs +++ b/math/src/elliptic_curve/short_weierstrass/point.rs @@ -52,6 +52,9 @@ impl ShortWeierstrassProjectivePoint { } pub fn double(&self) -> Self { + if self.is_neutral_element() { + return self.clone(); + } let [px, py, pz] = self.coordinates(); let px_square = px * px; @@ -86,11 +89,6 @@ impl ShortWeierstrassProjectivePoint { } // https://hyperelliptic.org/EFD/g1p/data/shortw/projective/addition/madd-1998-cmo pub fn operate_with_affine(&self, other: &Self) -> Self { - let [px, py, pz] = self.coordinates(); - let [qx, qy, _qz] = other.coordinates(); - let u = qy * pz; - let v = qx * pz; - if self.is_neutral_element() { return other.clone(); } @@ -98,6 +96,11 @@ impl ShortWeierstrassProjectivePoint { return self.clone(); } + let [px, py, pz] = self.coordinates(); + let [qx, qy, _qz] = other.coordinates(); + let u = qy * pz; + let v = qx * pz; + if u == *py { if v != *px || *py == FieldElement::zero() { return Self::new([ From bec0b1a1f7d9004d2f3d63c3f336ef5061874135 Mon Sep 17 00:00:00 2001 From: jotabulacios <45471455+jotabulacios@users.noreply.github.com> Date: Fri, 4 Oct 2024 14:52:41 -0300 Subject: [PATCH 10/12] Optimize bls12 381 pairing (#923) * added cyclotomic pow for x, cyclotomic square and frobenius map * save work * save work * save work * pairing works, changed frobenius_square * small refactor, remove unused functions * tested old vs new pairing. When using p and q generators the give different values. * benchmarking functions * Refactored code and added some comments * save work * clean old version * clean readme and fix benches * clippy * Update bls12_381.rs --------- Co-authored-by: diegokingston Co-authored-by: Diego K <43053772+diegokingston@users.noreply.github.com> --- README.md | 18 +- math/benches/criterion_elliptic_curve.rs | 2 +- math/benches/elliptic_curves/bls12_381.rs | 16 +- .../curves/bls12_381/field_extension.rs | 19 ++ .../curves/bls12_381/pairing.rs | 321 +++++++++++++++--- 5 files changed, 315 insertions(+), 61 deletions(-) diff --git a/README.md b/README.md index befe19dba..1edb80a8f 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,16 @@ This library provides efficient implementation of cryptographic primitives used +## Examples - mini apps + +Below is a list of examples to understand lambdaworks and learn what you can build with the tools provided. + +- [Merkle Tree CLI](./examples/merkle-tree-cli/) +- [Proving Miden](./examples/prove-miden/) +- [Shamir's secret sharing](./examples/shamir_secret_sharing/) +- [BabySNARK](./examples/baby-snark/) +- [Pinocchio](./examples/pinocchio/) + ## Why we built lambdaworks Zero-Knowledge and Validity Proofs have gained a lot of attention over the last few years. We strongly believe in this potential and that is why we decided to start working in this challenging ecosystem, where math, cryptography and distributed systems meet. The main barrier in the beginning was not the cryptography or math but the lack of good libraries which are performant and developer friendly. There are some exceptions, though, like gnark or halo2. Some have nice APIs and are easy to work with, but they are not written in Rust, and some are written in Rust but have poor programming and engineering practices. Most of them don't have support for CUDA, Metal and WebGPU or distributed FFT calculation using schedulers like Dask. @@ -41,14 +51,6 @@ Most of math and crypto crates supports no-std without allocation with `no-defau Both Math and Crypto support wasm with target `wasm32-unknown-unknown`. To see an example of how to use this to deploy a verifier in a browser, check the Cairo Prover wasm-pack verifier. -## Examples - mini apps - -- [Merkle Tree CLI](https://github.com/lambdaclass/lambdaworks/tree/main/examples/merkle-tree-cli) -- [Proving Miden](https://github.com/lambdaclass/lambdaworks/tree/main/examples/prove-miden) -- [Shamir's secret sharing](https://github.com/lambdaclass/lambdaworks/tree/main/examples/shamir_secret_sharing) -- [BabySNARK](https://github.com/lambdaclass/lambdaworks/tree/main/examples/baby-snark) -- [Pinocchio](https://github.com/lambdaclass/lambdaworks/tree/main/examples/pinocchio) - ## Exercises and Challenges - [lambdaworks exercises and challenges](https://github.com/lambdaclass/lambdaworks_exercises/tree/main) diff --git a/math/benches/criterion_elliptic_curve.rs b/math/benches/criterion_elliptic_curve.rs index 3812d74c3..f9bffc781 100644 --- a/math/benches/criterion_elliptic_curve.rs +++ b/math/benches/criterion_elliptic_curve.rs @@ -10,6 +10,6 @@ use elliptic_curves::{ criterion_group!( name = elliptic_curve_benches; config = Criterion::default().with_profiler(PProfProfiler::new(100, Output::Flamegraph(None))); - targets = bn_254_elliptic_curve_benchmarks,bls12_377_elliptic_curve_benchmarks,bls12_381_elliptic_curve_benchmarks + targets = bn_254_elliptic_curve_benchmarks,bls12_381_elliptic_curve_benchmarks,bls12_377_elliptic_curve_benchmarks ); criterion_main!(elliptic_curve_benches); diff --git a/math/benches/elliptic_curves/bls12_381.rs b/math/benches/elliptic_curves/bls12_381.rs index d33e8d2ca..452480697 100644 --- a/math/benches/elliptic_curves/bls12_381.rs +++ b/math/benches/elliptic_curves/bls12_381.rs @@ -4,7 +4,9 @@ use lambdaworks_math::{ elliptic_curve::{ short_weierstrass::{ curves::bls12_381::{ - curve::BLS12381Curve, pairing::BLS12381AtePairing, twist::BLS12381TwistCurve, + curve::BLS12381Curve, + pairing::{final_exponentiation, miller, BLS12381AtePairing}, + twist::BLS12381TwistCurve, }, traits::Compress, }, @@ -24,6 +26,8 @@ pub fn bls12_381_elliptic_curve_benchmarks(c: &mut Criterion) { let a_g2 = BLS12381TwistCurve::generator(); let b_g2 = BLS12381TwistCurve::generator(); + let miller_loop_output = miller(&a_g2, &a_g1); + let mut group = c.benchmark_group("BLS12-381 Ops"); group.significance_level(0.1).sample_size(10000); group.throughput(criterion::Throughput::Elements(1)); @@ -93,4 +97,14 @@ pub fn bls12_381_elliptic_curve_benchmarks(c: &mut Criterion) { )) }); }); + + // Miller + group.bench_function("Miller", |bencher| { + bencher.iter(|| black_box(miller(black_box(&a_g2), black_box(&a_g1)))) + }); + + // Final Exponentiation Optimized + group.bench_function("Final Exponentiation", |bencher| { + bencher.iter(|| black_box(final_exponentiation(black_box(&miller_loop_output)))) + }); } diff --git a/math/src/elliptic_curve/short_weierstrass/curves/bls12_381/field_extension.rs b/math/src/elliptic_curve/short_weierstrass/curves/bls12_381/field_extension.rs index ecf87e2d9..cb41e5aeb 100644 --- a/math/src/elliptic_curve/short_weierstrass/curves/bls12_381/field_extension.rs +++ b/math/src/elliptic_curve/short_weierstrass/curves/bls12_381/field_extension.rs @@ -21,6 +21,7 @@ impl IsModulus for BLS12381FieldModulus { } pub type BLS12381PrimeField = MontgomeryBackendPrimeField; +type Fp2E = FieldElement; ////////////////// #[derive(Clone, Debug)] @@ -199,6 +200,16 @@ impl HasCubicNonResidue for LevelTwoResidue { } } +impl HasQuadraticNonResidue for LevelTwoResidue { + fn residue() -> FieldElement { + FieldElement::new([ + FieldElement::new(U384::from("1")), + FieldElement::new(U384::from("1")), + ]) + } +} +pub type Degree4ExtensionField = QuadraticExtensionField; + pub type Degree6ExtensionField = CubicExtensionField; #[derive(Debug, Clone)] @@ -284,6 +295,14 @@ impl FieldElement { } } +/// Computes the multiplication of an element of fp2 by the level two non-residue 9+u. +pub fn mul_fp2_by_nonresidue(a: &Fp2E) -> Fp2E { + // (c0 + c1 * u) * (1 + u) = (c0 - c1) + (c1 + c0) * u + let c0 = &a.value()[0] - &a.value()[1]; // c0 - c1 + let c1 = &a.value()[0] + &a.value()[1]; // c1 + c0 + + Fp2E::new([c0, c1]) +} #[cfg(test)] mod tests { use crate::elliptic_curve::{ diff --git a/math/src/elliptic_curve/short_weierstrass/curves/bls12_381/pairing.rs b/math/src/elliptic_curve/short_weierstrass/curves/bls12_381/pairing.rs index b0c0c6cd2..8107f69ec 100644 --- a/math/src/elliptic_curve/short_weierstrass/curves/bls12_381/pairing.rs +++ b/math/src/elliptic_curve/short_weierstrass/curves/bls12_381/pairing.rs @@ -1,11 +1,12 @@ -use super::curve::MILLER_LOOP_CONSTANT; use super::{ curve::BLS12381Curve, - field_extension::{BLS12381PrimeField, Degree12ExtensionField, Degree2ExtensionField}, + field_extension::{ + mul_fp2_by_nonresidue, BLS12381PrimeField, Degree12ExtensionField, Degree2ExtensionField, + Degree4ExtensionField, + }, twist::BLS12381TwistCurve, }; use crate::{cyclic_group::IsGroup, elliptic_curve::traits::IsPairing, errors::PairingError}; - use crate::{ elliptic_curve::short_weierstrass::{ curves::bls12_381::field_extension::{Degree6ExtensionField, LevelTwoResidue}, @@ -13,11 +14,76 @@ use crate::{ traits::IsShortWeierstrass, }, field::{element::FieldElement, extensions::cubic::HasCubicNonResidue}, - unsigned_integer::element::{UnsignedInteger, U256}, + unsigned_integer::element::U256, }; +type FpE = FieldElement; +type Fp2E = FieldElement; +type Fp4E = FieldElement; +type Fp6E = FieldElement; +type Fp12E = FieldElement; + pub const SUBGROUP_ORDER: U256 = U256::from_hex_unchecked("73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001"); +// value of x in binary + +// We use |x|, then if needed we apply the minus sign in the final exponentiation by applying the inverse (in this case the conjugate because the element is in the cyclotomic subgroup) +pub const X: u64 = 0xd201000000010000; + +// X = 1101001000000001000000000000000000000000000000010000000000000000 +pub const X_BINARY: &[bool] = &[ + true, true, false, true, false, false, true, false, false, false, false, false, false, false, + false, true, false, false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, true, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, false, +]; + +// GAMMA constants used to compute the Frobenius morphisms +/// We took these constants from https://github.com/hecmas/zkNotebook/blob/main/src/BLS12381/constants.ts + +pub const GAMMA_11: Fp2E = Fp2E::const_from_raw([ + FpE::from_hex_unchecked("1904D3BF02BB0667C231BEB4202C0D1F0FD603FD3CBD5F4F7B2443D784BAB9C4F67EA53D63E7813D8D0775ED92235FB8"), + FpE::from_hex_unchecked("FC3E2B36C4E03288E9E902231F9FB854A14787B6C7B36FEC0C8EC971F63C5F282D5AC14D6C7EC22CF78A126DDC4AF3"), +]); + +pub const GAMMA_12: Fp2E = Fp2E::const_from_raw([ + FpE::from_hex_unchecked("0"), + FpE::from_hex_unchecked("1A0111EA397FE699EC02408663D4DE85AA0D857D89759AD4897D29650FB85F9B409427EB4F49FFFD8BFD00000000AAAC"), +]); + +pub const GAMMA_13: Fp2E = Fp2E::const_from_raw([ + FpE::from_hex_unchecked("6AF0E0437FF400B6831E36D6BD17FFE48395DABC2D3435E77F76E17009241C5EE67992F72EC05F4C81084FBEDE3CC09"), + FpE::from_hex_unchecked("6AF0E0437FF400B6831E36D6BD17FFE48395DABC2D3435E77F76E17009241C5EE67992F72EC05F4C81084FBEDE3CC09"), +]); + +pub const GAMMA_14: Fp2E = Fp2E::const_from_raw([ + FpE::from_hex_unchecked("1A0111EA397FE699EC02408663D4DE85AA0D857D89759AD4897D29650FB85F9B409427EB4F49FFFD8BFD00000000AAAD"), + FpE::from_hex_unchecked("0"), +]); + +pub const GAMMA_15: Fp2E = Fp2E::const_from_raw([ + FpE::from_hex_unchecked("5B2CFD9013A5FD8DF47FA6B48B1E045F39816240C0B8FEE8BEADF4D8E9C0566C63A3E6E257F87329B18FAE980078116"), + FpE::from_hex_unchecked("144E4211384586C16BD3AD4AFA99CC9170DF3560E77982D0DB45F3536814F0BD5871C1908BD478CD1EE605167FF82995"), +]); + +/// GAMMA_2i = GAMMA_1i * GAMMA_1i.conjugate() +pub const GAMMA_21: FpE = FpE::from_hex_unchecked( + "5F19672FDF76CE51BA69C6076A0F77EADDB3A93BE6F89688DE17D813620A00022E01FFFFFFFEFFFF", +); + +pub const GAMMA_22: FpE = FpE::from_hex_unchecked( + "5F19672FDF76CE51BA69C6076A0F77EADDB3A93BE6F89688DE17D813620A00022E01FFFFFFFEFFFE", +); + +pub const GAMMA_23: FpE = + FpE::from_hex_unchecked("1A0111EA397FE69A4B1BA7B6434BACD764774B84F38512BF6730D2A0F6B0F6241EABFFFEB153FFFFB9FEFFFFFFFFAAAA"); + +pub const GAMMA_24: FpE = + FpE::from_hex_unchecked("1A0111EA397FE699EC02408663D4DE85AA0D857D89759AD4897D29650FB85F9B409427EB4F49FFFD8BFD00000000AAAC"); + +pub const GAMMA_25: FpE = + FpE::from_hex_unchecked("1A0111EA397FE699EC02408663D4DE85AA0D857D89759AD4897D29650FB85F9B409427EB4F49FFFD8BFD00000000AAAD"); #[derive(Clone)] pub struct BLS12381AtePairing; @@ -46,6 +112,26 @@ impl IsPairing for BLS12381AtePairing { } } +/// Implements the miller loop for the ate pairing of the BLS12 381 curve. +/// Based on algorithm 9.2, page 212 of the book +/// "Topics in computational number theory" by W. Bons and K. Lenstra +#[allow(unused)] +pub fn miller( + q: &ShortWeierstrassProjectivePoint, + p: &ShortWeierstrassProjectivePoint, +) -> FieldElement { + let mut r = q.clone(); + let mut f = FieldElement::::one(); + X_BINARY.iter().skip(1).for_each(|bit| { + double_accumulate_line(&mut r, p, &mut f); + if *bit { + add_accumulate_line(&mut r, q, p, &mut f); + } + }); + + f.conjugate() +} + fn double_accumulate_line( t: &mut ShortWeierstrassProjectivePoint, p: &ShortWeierstrassProjectivePoint, @@ -152,69 +238,148 @@ fn add_accumulate_line( ]), ]); } -/// Implements the miller loop for the ate pairing of the BLS12 381 curve. -/// Based on algorithm 9.2, page 212 of the book -/// "Topics in computational number theory" by W. Bons and K. Lenstra -#[allow(unused)] -fn miller( - q: &ShortWeierstrassProjectivePoint, - p: &ShortWeierstrassProjectivePoint, -) -> FieldElement { - let mut r = q.clone(); - let mut f = FieldElement::::one(); - let mut miller_loop_constant = MILLER_LOOP_CONSTANT; - let mut miller_loop_constant_bits: alloc::vec::Vec = alloc::vec![]; - while miller_loop_constant > 0 { - miller_loop_constant_bits.insert(0, (miller_loop_constant & 1) == 1); - miller_loop_constant >>= 1; - } +// To understand more about how to reduce the final exponentiation +// read "Efficient Final Exponentiation via Cyclotomic Structure for +// Pairings over Families of Elliptic Curves" (https://eprint.iacr.org/2020/875.pdf) +// Hard part from https://eprint.iacr.org/2020/875.pdf p14 +// Same implementation as in Constantine https://github.com/mratsim/constantine/blob/master/constantine/math/pairings/pairings_bls12.nim +pub fn final_exponentiation(f: &Fp12E) -> Fp12E { + let f_easy_aux = f.conjugate() * f.inv().unwrap(); + let mut f_easy = frobenius_square(&f_easy_aux) * &f_easy_aux; + + let mut v2 = cyclotomic_square(&f_easy); // v2 = f² + let mut v0 = cyclotomic_pow_x(&f_easy).conjugate(); // v0 = f^x + let mut v1 = f_easy.conjugate(); // v1 = f^-1 + + // (x−1)² + v0 *= v1; // v0 = f^(x-1) + v1 = cyclotomic_pow_x(&v0).conjugate(); // v1 = (f^(x-1))^(x) + + v0 = v0.conjugate(); // v0 = (f^(x-1))^(-1) + v0 *= &v1; // v0 = (f^(x-1))^(-1) * (f^(x-1))^x = (f^(x-1))^(x-1) = f^((x-1)²) + + // (x+p) + v1 = cyclotomic_pow_x(&v0).conjugate(); // v1 = f^((x-1)².x) + v0 = frobenius(&v0); // f^((x-1)².p) + v0 *= &v1; // f^((x-1)².p + (x-1)².x) = f^((x-1)².(x+p)) + + // + 3 + f_easy *= v2; // f^3 + + // (x²+p²−1) + v2 = cyclotomic_pow_x(&v0).conjugate(); + v1 = cyclotomic_pow_x(&v2).conjugate(); // v1 = f^((x-1)².(x+p).x²) + v2 = frobenius_square(&v0); // v2 = f^((x-1)².(x+p).p²) + v0 = v0.conjugate(); // v0 = f^((x-1)².(x+p).-1) + v0 *= &v1; // v0 = f^((x-1)².(x+p).(x²-1)) + v0 *= &v2; // v0 = f^((x-1)².(x+p).(x²+p²-1)) + + f_easy *= &v0; + f_easy +} - for bit in miller_loop_constant_bits[1..].iter() { - double_accumulate_line(&mut r, p, &mut f); - if *bit { - add_accumulate_line(&mut r, q, p, &mut f); - } - } - f.inv().unwrap() +////////////////// FROBENIUS MORPHISIMS ////////////////// +pub fn frobenius(f: &Fp12E) -> Fp12E { + let [a, b] = f.value(); // f = a + bw, where a and b in Fp6. + let [a0, a1, a2] = a.value(); // a = a0 + a1 * v + a2 * v^2, where a0, a1 and a2 in Fp2. + let [b0, b1, b2] = b.value(); // b = b0 + b1 * v + b2 * v^2, where b0, b1 and b2 in Fp2. + + // c1 = a0.conjugate() + a1.conjugate() * GAMMA_12 * v + a2.conjugate() * GAMMA_14 * v^2 + let c1 = Fp6E::new([ + a0.conjugate(), + a1.conjugate() * GAMMA_12, + a2.conjugate() * GAMMA_14, + ]); + + let c2 = Fp6E::new([ + b0.conjugate() * GAMMA_11, + b1.conjugate() * GAMMA_13, + b2.conjugate() * GAMMA_15, + ]); + + Fp12E::new([c1, c2]) //c1 + c2 * w } -/// Auxiliary function for the final exponentiation of the ate pairing. fn frobenius_square( f: &FieldElement, ) -> FieldElement { let [a, b] = f.value(); - let w_raised_to_p_squared_minus_one = FieldElement::::new_base("1a0111ea397fe699ec02408663d4de85aa0d857d89759ad4897d29650fb85f9b409427eb4f49fffd8bfd00000000aaad"); - let omega_3 = FieldElement::::new_base("1a0111ea397fe699ec02408663d4de85aa0d857d89759ad4897d29650fb85f9b409427eb4f49fffd8bfd00000000aaac"); - let omega_3_squared = FieldElement::::new_base( - "5f19672fdf76ce51ba69c6076a0f77eaddb3a93be6f89688de17d813620a00022e01fffffffefffe", - ); - let [a0, a1, a2] = a.value(); let [b0, b1, b2] = b.value(); - let f0 = FieldElement::new([a0.clone(), a1 * &omega_3, a2 * &omega_3_squared]); - let f1 = FieldElement::new([b0.clone(), b1 * omega_3, b2 * omega_3_squared]); + let c1 = Fp6E::new([a0.clone(), GAMMA_22 * a1, GAMMA_24 * a2]); + let c2 = Fp6E::new([GAMMA_21 * b0, GAMMA_23 * b1, GAMMA_25 * b2]); - FieldElement::new([f0, w_raised_to_p_squared_minus_one * f1]) + Fp12E::new([c1, c2]) } -// To understand more about how to reduce the final exponentiation -// read "Efficient Final Exponentiation via Cyclotomic Structure for -// Pairings over Families of Elliptic Curves" (https://eprint.iacr.org/2020/875.pdf) -// -// TODO: implement optimizations for the hard part of the final exponentiation. -#[allow(unused)] -fn final_exponentiation( - base: &FieldElement, -) -> FieldElement { - const PHI_DIVIDED_BY_R: UnsignedInteger<20> = UnsignedInteger::from_hex_unchecked("f686b3d807d01c0bd38c3195c899ed3cde88eeb996ca394506632528d6a9a2f230063cf081517f68f7764c28b6f8ae5a72bce8d63cb9f827eca0ba621315b2076995003fc77a17988f8761bdc51dc2378b9039096d1b767f17fcbde783765915c97f36c6f18212ed0b283ed237db421d160aeb6a1e79983774940996754c8c71a2629b0dea236905ce937335d5b68fa9912aae208ccf1e516c3f438e3ba79"); - - let f1 = base.conjugate() * base.inv().unwrap(); - let f2 = frobenius_square(&f1) * f1; - f2.pow(PHI_DIVIDED_BY_R) +////////////////// CYCLOTOMIC SUBGROUP OPERATIONS ////////////////// +/// Since the result of the Easy Part of the Final Exponentiation belongs to the cyclotomic +/// subgroup of Fp12, we can optimize the square and pow operations used in the Hard Part. + +/// Computes the square of an element of a cyclotomic subgroup of Fp12. +/// Algorithm from Constantine's cyclotomic_square_quad_over_cube +/// https://github.com/mratsim/constantine/blob/master/constantine/math/pairings/cyclotomic_subgroups.nim#L354 +pub fn cyclotomic_square(a: &Fp12E) -> Fp12E { + // a = g + h * w + let [g, h] = a.value(); + let [b0, b1, b2] = g.value(); + let [b3, b4, b5] = h.value(); + + let v0 = Fp4E::new([b0.clone(), b4.clone()]).square(); + let v1 = Fp4E::new([b3.clone(), b2.clone()]).square(); + let v2 = Fp4E::new([b1.clone(), b5.clone()]).square(); + + // r = r0 + r1 * w + // r0 = r00 + r01 * v + r02 * v^2 + // r1 = r10 + r11 * v + r12 * v^2 + + // r00 = 3v00 - 2b0 + let mut r00 = &v0.value()[0] - b0; + r00 = r00.double(); + r00 += v0.value()[0].clone(); + + // r01 = 3v10 -2b1 + let mut r01 = &v1.value()[0] - b1; + r01 = r01.double(); + r01 += v1.value()[0].clone(); + + // r11 = 3v01 - 2b4 + let mut r11 = &v0.value()[1] + b4; + r11 = r11.double(); + r11 += v0.value()[1].clone(); + + // r12 = 3v11 - 2b5 + let mut r12 = &v1.value()[1] + b5; + r12 = r12.double(); + r12 += v1.value()[1].clone(); + + // 3 * (9 + u) * v21 + 2b3 + let v21 = mul_fp2_by_nonresidue(&v2.value()[1]); + let mut r10 = &v21 + b3; + r10 = r10.double(); + r10 += v21; + + // 3 * (9 + u) * v20 - 2b3 + let mut r02 = &v2.value()[0] - b2; + r02 = r02.double(); + r02 += v2.value()[0].clone(); + + Fp12E::new([Fp6E::new([r00, r01, r02]), Fp6E::new([r10, r11, r12])]) } +#[allow(clippy::needless_range_loop)] +pub fn cyclotomic_pow_x(f: &Fp12E) -> Fp12E { + let mut result = Fp12E::one(); + X_BINARY.iter().for_each(|&bit| { + result = cyclotomic_square(&result); + if bit { + result = &result * f; + } + }); + result +} #[cfg(test)] mod tests { use crate::{ @@ -294,4 +459,58 @@ mod tests { let result = BLS12381AtePairing::compute_batch(&[(&p.to_affine(), &q)]); assert!(result.is_err()) } + #[test] + fn apply_12_times_frobenius_is_identity() { + let f = Fp12E::from_coefficients(&[ + "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", + ]); + let mut result = frobenius(&f); + for _ in 1..12 { + result = frobenius(&result); + } + assert_eq!(f, result) + } + + #[test] + fn apply_6_times_frobenius_square_is_identity() { + let f = Fp12E::from_coefficients(&[ + "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", + ]); + let mut result = frobenius_square(&f); + for _ in 1..6 { + result = frobenius_square(&result); + } + assert_eq!(f, result) + } + + #[test] + fn cyclotomic_square_equals_square() { + let p = BLS12381Curve::generator(); + let q = BLS12381TwistCurve::generator(); + let f = miller(&q, &p); + let f_easy_aux = f.conjugate() * f.inv().unwrap(); // f ^ (p^6 - 1) because f^(p^6) = f.conjugate(). + let f_easy = &frobenius_square(&f_easy_aux) * f_easy_aux; // (f^{p^6 - 1})^(p^2) * (f^{p^6 - 1}). + assert_eq!(cyclotomic_square(&f_easy), f_easy.square()); + } + + #[test] + fn test_double_accumulate_line_doubles_point_correctl_2() { + let g1 = BLS12381Curve::generator(); + let g2 = BLS12381TwistCurve::generator(); + let mut r = g2.clone(); + let mut f = FieldElement::one(); + double_accumulate_line(&mut r, &g1, &mut f); + let expected_r = g2.operate_with(&g2); + assert_eq!(r.to_affine(), expected_r.to_affine()); + } + + #[test] + fn cyclotomic_pow_x_equals_pow() { + let p = BLS12381Curve::generator(); + let q = BLS12381TwistCurve::generator(); + let f = miller(&q, &p); + let f_easy_aux = f.conjugate() * f.inv().unwrap(); // f ^ (p^6 - 1) because f^(p^6) = f.conjugate(). + let f_easy = &frobenius_square(&f_easy_aux) * f_easy_aux; // (f^{p^6 - 1})^(p^2) * (f^{p^6 - 1}). + assert_eq!(cyclotomic_pow_x(&f_easy), f_easy.pow(X)); + } } From 021c3b66de310aa7cc5af8e392cb958caadfae74 Mon Sep 17 00:00:00 2001 From: Diego K <43053772+diegokingston@users.noreply.github.com> Date: Fri, 4 Oct 2024 16:59:22 -0300 Subject: [PATCH 11/12] add circom to list of examples (#925) * add circom to list of examples * add groth16 explanation * add use of Circom to Groth16 * remove conclusion --- README.md | 6 +- provers/groth16/README.md | 155 ++++++++++++++++++- provers/groth16/circom-adapter/src/README.md | 4 +- 3 files changed, 161 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 1edb80a8f..f95c93f66 100644 --- a/README.md +++ b/README.md @@ -17,13 +17,17 @@ This library provides efficient implementation of cryptographic primitives used ## Examples - mini apps -Below is a list of examples to understand lambdaworks and learn what you can build with the tools provided. +Below is a list of examples to understand lambdaworks and learn what you can build with the tools provided. - [Merkle Tree CLI](./examples/merkle-tree-cli/) - [Proving Miden](./examples/prove-miden/) - [Shamir's secret sharing](./examples/shamir_secret_sharing/) - [BabySNARK](./examples/baby-snark/) - [Pinocchio](./examples/pinocchio/) +- [Using Circom with lambdaworks's Groth16](./provers/groth16/circom-adapter/src/README.md) + +- You can use Circom to generate circuits and use lambdaworks's capabilities to prove the execution with [Groth16](./provers/groth16/README.md). +- You can use the [Stark prover](./provers/stark/src/) to define an algebraic intermediate representation (AIR) and prove the execution of a program ## Why we built lambdaworks diff --git a/provers/groth16/README.md b/provers/groth16/README.md index dae3aeae1..5e48d6b3f 100644 --- a/provers/groth16/README.md +++ b/provers/groth16/README.md @@ -1,3 +1,156 @@ # Lambdaworks Groth16 Prover -An under-optimized implementation of [Groth16](https://eprint.iacr.org/2016/260) protocol. +An under-optimized implementation of [Groth16](https://eprint.iacr.org/2016/260) protocol. To use it with Circom, check the [examples](./circom-adapter/src/README.md). + +## Introduction + +Over the last decade, SNARKs (succinct, non-interactive arguments of knowledge) and STARKs (scalable, transparent arguments of knowledge) have been gaining attention due to their applications in verifiable private computation and scalability of blockchains. + +Groth introduced this [proof system](https://eprint.iacr.org/2016/260.pdf) in 2016 and saw an early application in ZCash. The protocol relies on pairing-friendly elliptic curves, such as BN254, BLS12-381, and BLS12-377 (more later). Its proof size is among the smallest (consisting of only three elliptic curve elements) and fastest to verify. The main drawback is that it needs a trusted setup per program. In other words, we need to regenerate all the parameters whenever we want to prove a new program (or change the original one). + +## Arithmetization + +To prove the execution of a given program, we have to transform it to a SNARK (succinct, non-interactive argument of knowledge) friendly form. One of such forms is arithmetic circuit satisfiability, where one can prove knowledge of a valid circuit assignment. This first step, known as arithmetization, is the program's transformation into an arithmetic circuit or equivalent form. + +## R1CS + +Arithmetic circuits can be expressed equivalently as (quadratic) rank one constraint systems (R1CS), which are systems of equations of the form: +$$(Az)\times (Bz) = Cz$$ +where $A, B, C$ are matrices of size $m + 1$ rows by $n + 1$ columns, $z$ is a (column) vector of size $n + 1$ and $\times$ indicates the componentwise product of the resulting vectors. + +We can alternatively view this compact form as +$\left( \sum_k a_{0k} z_k \right) \left( \sum_k b_{0k} z_k \right) - \left( \sum_k c_{0k} z_k \right) = 0$ +$\left( \sum_k a_{1k} z_k \right) \left( \sum_k b_{1k} z_k \right) - \left( \sum_k c_{1k} z_k \right) = 0$ +$\left( \sum_k a_{2k} z_k \right) \left( \sum_k b_{2k} z_k \right) - \left( \sum_k c_{2k} z_k \right) = 0$ +$\vdots$ +$\left( \sum_k a_{mk} z_k \right) \left( \sum_k b_{mk} z_k \right) - \left( \sum_k c_{mk} z_k \right) = 0$ + +We could express these equations more compactly by using polynomials and prove the solution of the R1CS system more concisely. To this end, we will introduce quadratic arithmetic programs, [QAP](https://vitalik.ca/general/2016/12/10/qap.html). + +## Quadratic Arithmetic Program + +We can interpret each column of the $A$ matrix as evaluations of some polynomial over some suitable domain. This is a common practice in many SNARKs, where we try to encode a vector as a polynomial; see, for example, our [post about STARKs](https://blog.lambdaclass.com/diving-deep-fri/). We sample $D_0 = \{ x_0 , x_1 , ... , x_n \}$ over the finite field and define the polynomial $A_i (x)$ as the polynomial of at most degree $n$ such that $A_i ( x_k ) = a_{ki}$. + +For performance reasons, it is convenient to select as interpolation domain $D_0$ the n-th roots of unity since we can use the Fast Fourier Transform to interpolate. Similarly, we can interpret the columns of $B$ and $C$ as polynomials $B_k (x)$ and $C_k (x)$. Taking advantage of these polynomials, we can express the R1CS system in polynomial form, +$P (x) = \left( \sum_k A_{k} (x) z_k \right) \left( \sum_k B_{k} (x) z_k \right) - \left( \sum_k C_{k} (x) z_k \right)$ + +We can see that if we have a valid solution for the R1CS, the polynomial $P (x)$ evaluates to $0$ over $D_0$ (since we require the polynomial to interpolate the values of the columns of the matrices). Therefore, we can express the condition as +$P (x) = 0$ for $x \in D_0$ +We now introduce the vanishing polynomial over the set $D_0$, $Z_D (x) = \prod_k (x - x_k )$ +So, if the polynomial $P (x)$ evaluates to $0$ over $D_0$, it is divisible by $Z_D (x)$. This can be written as there is some polynomial $h (x)$ such that +$P (x) = h(x) Z_D (x)$ +The degree of the polynomial $h(x)$ is the degree of $P$ minus the degree of $Z_D$. An honest prover should be able to find the resulting quotient and use it to show that he correctly executed the program. + +## Transforming QAP into a zero-knowledge proof + +We need to make some transformation to the above problem if we want to turn it into a zero-knowledge proof. For a more detailed description of this process, see [here](https://www.rareskills.io/post/groth16). We must ensure that the prover cannot cheat and that the verifier cannot learn anything about the private input or witness. One key ingredient is a polynomial commitment scheme (PCS): we can make the prover commit to a given polynomial so that he cannot change it later. One such commitment scheme is the [KZG commitment](https://dankradfeist.de/ethereum/2020/06/16/kate-polynomial-commitments.html), where we use [pairing-friendly elliptic curves](https://static1.squarespace.com/static/5fdbb09f31d71c1227082339/t/5ff394720493bd28278889c6/1609798774687/PairingsForBeginners.pdf) to bind the prover to a polynomial. The scheme's security relies on the hardness of the discrete logarithm problem over the curve. Pairings can be considered an operation that allows a one-time multiplication between points in an elliptic curve. In our case, we will work over type3 III pairings, $\dagger : G_1 \times G_2 \rightarrow G_t$, which have the following nice property (bilinearity): +$(a g_1 ) \dagger (b g_2 ) = (ab) (g_1 \dagger g_2)$ +To commit to a polynomial using KZG, we need to sample a random scalar $\tau$ (which is considered toxic waste and should be forgotten, or we could forge proofs) and generate the following sequence of points in the elliptic curve, whose generator is $g_1$, +$P_0 = g_1$, +$P_1 = \tau g_1$ +$P_2 = \tau^2 g_1$ +$\vdots$ +$P_n = \tau^n g_1$ +Then, given a polynomial $p(x) = a_0 + a_1 x + a_2 x^2 + ... + a_n x^n$ we compute the commitment as +$\mathrm{cm} (p) = a_0 P_0 + a_1 P_1 + ... + a_n P_n$ +which is the same as $\mathrm{cm} (p) = p(\tau) g_1$, that is, hiding the evaluation of $p(x)$ inside the elliptic curve. Because the discrete log problem is hard, we cannot use our knowledge of $g_1$ and $\mathrm{cm} (p)$ to obtain $p(\tau)$. + +To check that the polynomial $p(x)$ evaluates to $v$ at $z$ we can use the fact that +$p(x) - v = (x - z)q(x)$ +where $q(x)$ is the quotient polynomial of the division of $p(x)$ by $x - z$. The prover can produce proof of such evaluation by committing to $q(x)$ using the same trick. Still, the verifier will need some additional information (included in the verifying key), $g_2$ (the generator of the group $G_2$), and $\tau g_2$ (remember, nobody must know $\tau$). Then, using pairings, the verifier can check the evaluation using the points in the elliptic curves, +$(\mathrm{cm} (p) - vg_1 \dagger g_2) = a = p(\tau) (g_1 \dagger g_2)$ +$\mathrm{cm} (q) \dagger (\tau g_2 - z g_2) = b = q(\tau) ( \tau - z)(g_1 \dagger g_2)$ +If $a$ and $b$ are the same, and since $\tau$ is a random point with high probability, we assume that $p(z) = v$ (This depends on the Schwartz-Zippel lemma). + +Remember that we want to prove that the verifier knows some $w$ and a polynomial $h(x)$ of degree $m - 1$ such that if $z= (1, x, w)$, the following condition holds +$\left( \sum_k A_{k} (x) z_k \right) \left( \sum_k B_{k} (x) z_k \right) = \left( \sum_k C_{k} (x) z_k \right) + h(x)Z_D (x)$ + +If we force the prover first to commit to the polynomials $A_k (x)$ and $B_k (x)$ and then produce the quotient polynomial, we have to make sure that he cannot forge $C_k (x)$ to fulfill the previous condition. To do so, we are going to introduce random shifts ($\alpha$ and $\beta$) to the evaluations: +$\mathrm{cm} (\sum A_i z_i ) = \sum (A_i (\tau) z_i) g_1 + \alpha g_1$ +$\mathrm{cm} (\sum B_i z_i) = \sum (B_i (\tau) z_i) g_2 + \beta g_2$ +The $B_i (x)$ are committed to using group $G_2$ so that we can compute the product on the left-hand side through a pairing, +$(\mathrm{cm} (\sum A_i z_i )) \dagger ( \mathrm{cm} (\sum B_i z_i )) = (\sum A_i (\tau) z_i )(\sum B_i (\tau) z_i ) (g_1 \dagger g_2)$ + +Because we introduce these shifts, we need to modify the $C_k$ term accordingly, +$\begin{equation}\left( \alpha + \sum_k A_{k} (x) z_k \right) \left( \beta + \sum_k B_{k} (x) z_k \right) = \\ \alpha \beta + \left( \sum_k (C_{k} (x) + \beta A_k (x) + \alpha B_k (x)) z_k \right) + h(x)Z_D (x) \end{equation}$ +Since the prover cannot know $\alpha$ and $\beta$, we need to provide them hidden as part of the trusted setup, as $\alpha g_1$ and $\beta g_2$, so that we can compute +$(\alpha g_1) \dagger (\beta g_2) = \alpha \beta (g_1 \dagger g_2)$ +so that we can compare this result to the pairing between the shifted $A_i$ and $B_i$. + +Also, since the prover does not have $\alpha$ and $\beta$, he needs to be supplied with all the elements of the form $C_{k} (x) + \beta A_k (x) + \alpha B_k (x)$. However, when we want to calculate the product between these terms and $z$, we must recall that $z$ contains both the public input and the witness. The verifier cannot learn anything about the witness (therefore, the evaluations involving the witness should be provided by the prover). We introduce two additional variables, $\gamma$, and $\delta$, to split the variable $z$ between public input and witness. The first $k$ terms correspond to the public input, and these are encoded as +$K_i^v = \gamma^{- 1} (C_{i} (\tau) + \beta A_i (\tau) + \alpha B_i (\tau)) g_1$ +for $i = 0, 1, 2 ... , k$. For the witness, we have +$K_i^p = \delta^{- 1} (C_{i} (\tau) + \beta A_i (\tau) + \alpha B_i (\tau)) g_1$ +With these new parameters, we get +$\begin{equation}\left( \alpha + \sum_j A_{j} (x) z_j \right) \left( \beta + \sum_j B_{j} (x) z_j \right) = \\ \alpha \beta + \gamma \left( \sum_i^k \gamma^{- 1} (C_{i} (x) + \beta A_i (x) + \alpha B_i (x)) x_i \right) + \\ +\delta \left( \sum_{j = k + 1}^n \delta^{- 1} (C_{i} (x) + \beta A_i (x) + \alpha B_i (x)) x_i \right) + h(x)Z_D (x) \end{equation}$ +We can combine the last two terms into one (since they contain all the information that the verifier must not learn) +$D = \left( \sum_{j = k + 1}^n \delta^{- 1} (C_{i} (x) + \beta A_i (x) + \alpha B_i (x)) x_i \right) + h(x)Z_D (x)\delta^{- 1}$ + +Since we want to compute the product $h(x) Z_D(x)$ with the help of one pairing, we can compute the following group elements, +$Z_0 = \delta^{ - 1} Z_D (\tau)$ +$Z_1 = \delta^{ - 1} \tau Z_D (\tau)$ +$Z_2 = \delta^{ - 1} \tau^2 Z_D (\tau)$ +$\vdots$ +$Z_{m - 1} = \delta^{ - 1} \tau^{ m - 1 } Z_D (\tau)$ + +With these changes, the right-hand side of the QAP is the sum of 3 terms: +A constant (related to the random shifts). +A term involving the public input. +A term that contains the secret terms (known only to the prover). + +## Setup + +Groth16 requires sampling five random field elements to generate the proving and verifying key, $t, \alpha, \beta, \gamma, \delta$. These are toxic waste and should be discarded and wholly forgotten once the keys have been generated. + +We will use a pairing-friendly elliptic curve (with type III pairing), with subgroups $G_1$ and $G_2$ of prime order $r$. We will call the generators $g_1$ and $g_2$, respectively. To make notation easier, we will write +$[x]_1 = x g_1$ +$[x]_2 = x g_2$ +to denote points in $G_1$ and $G_2$, where $x g$ means the scalar product of $x$ and the generator of the group (i.e., applying x times the elliptic curve group operation to the generator). We will follow the notation given by [DIZK](https://eprint.iacr.org/2018/691.pdf). First, we compute the following vectors, +$K_i^v (t) = \gamma^{-1} \left( \beta A_i(t) + \alpha B_i (t) + C_i (t)\right)$ +for $i = 0, 1, 2 , ... k$, +$K_i^p (t) = \delta^{-1} \left( \beta A_i(t) + \alpha B_i (t) + C_i (t)\right)$ +for $i = k+1, 1, 2 , ... n$ and +$Z_k (t) = t^k Z_D (t) \delta^{-1}$ +for $k = 0, 1, 2, ... m - 1$. +The proving key consists of the following elements: +1. $[\alpha]_1$ +2. $[\beta]_1$ +3. $[\beta]_2$ +4. $[\delta]_1$ +5. $[\delta]_2$ +6. $[A_0 (t) ]_1, [A_1 (t) ]_1 , ... , [A_n (t) ]_1$ +7. $[B_0 (t) ]_1, [B_1 (t) ]_1 , ... , [B_n (t) ]_1$ +8. $[B_0 (t) ]_2, [B_1 (t) ]_2 , ... , [B_n (t) ]_2$ +9. $[K_{ k + 1 }^p (t)] , [ K_{ k + 2 }^p (t)] , ... , [K_n^p (t)]$ +10. $[Z_0 (t)] , [Z_1 (t)] , ... , [ Z_{ m - 1 } (t)]$ + +The verifying key is much shorter and will contain in addition the value of one pairing because that value is constant: +1. $[\alpha]_1 \dagger [\beta]_2$ +2. $[\gamma]_2$ +3. $[\delta]_2$ +4. $[K_0^v (t)]_1 , [K_1^v (t)]_1 , ... , [K_k^v (t)]_1$ + +## Proof generation + +The prover receives the proving key and knows the polynomials representing the program and the public input, and he wants to prove that he has a witness satisfying that program. First, the prover needs to calculate the quotient polynomial $h(x)$ or, more precisely, its coefficients. The prover has to calculate +$$h(x) = \frac{\sum A_k(x) z_k \sum B_k (x) z_k - \sum C_k (x) z_k}{Z_D (X) }$$ + +The best way to evaluate this quotient is by choosing a domain $D_{ev}$, of size at least the degree of the quotient polynomial plus one and not containing elements from $D_0$ (the interpolation domain) and evaluating numerator and denominator at all the elements of $D_{ev}$. Since we have at least as many evaluations of the polynomial $h (x)$ as its degree plus one, we can reconstruct $h(x)$ via interpolation. In practice, the fastest way to do this is by using the Fast Fourier Transform for evaluation and interpolation. The prover now possesses a vector of coefficients $h_0 , h_1 , h_2 , ... , h_m$. + +To ensure that the proof is zero-knowledge, the prover sample two random scalars, $r$ and $s$. + +The prover can compute the three elements of the proof, $\pi = ([\pi_1 ]_1 , [\pi_2 ]_2 , [\pi_3 ]_1)$ by doing the following calculations, +$[\pi_1 ]_1 = [\alpha]_1 + \sum z_k [A_k (t) ]_1 + r [\delta]_1$ +$[\pi_2 ]_2 = [\beta]_2 + \sum z_k [B_k (t) ]_2 + s[\delta]_2$ +$[\pi_2 ]_1 = [\beta]_1 + \sum z_k [B_k (t) ]_1 + s[\delta]_1$ +$[h(t)z(t)]_1 = \sum h_i [Z_i (t)]_1$ +$[\pi_3 ]_1 = \sum w_i [K_i^p ]_1 + [h(t)z(t)]_1 + s[\pi_1 ]_1 + r [\pi_2 ]_1 - rs [\delta]_1$ + +## Verification + +The verifier has the verifying key, the public input and parses the proof as $[\pi_1 ]_1, [\pi_2 ]_2, [\pi_3 ]_1$ and computes the following: +$[\pi_1 ]_1 \dagger [\pi_2 ]_2 = P_1$ +$[\pi_3 ]_1 \dagger [\delta]_2 + [\alpha]_1 \dagger [\beta]_2 + \left(\sum x_i [K_i^v ]_1 \right) \dagger [\gamma]_2 = P_2$ + +The proof is valid if $P_1$ and $P_2$ coincide. This is equivalent to checking the modified QAP. diff --git a/provers/groth16/circom-adapter/src/README.md b/provers/groth16/circom-adapter/src/README.md index 29fc5fbcf..b0f7253ef 100644 --- a/provers/groth16/circom-adapter/src/README.md +++ b/provers/groth16/circom-adapter/src/README.md @@ -55,7 +55,7 @@ Relative path to a file named **test** will be just **"test"** if it's placed in ```rust // ... -let (w, qap) = circom_to_lambda( +let (qap, w) = circom_to_lambda( &fs::read_to_string("test.r1cs.json").expect("Error reading file"), &fs::read_to_string("witness.json").expect("Error reading file"), ); @@ -65,7 +65,7 @@ As seen, this function returns a Lambdaworks-compatible QAP and the witness assi ```rust fn poseidon_parse_prove_verify() { - let (w, qap) = circom_to_lambda( + let (qap, w) = circom_to_lambda( &fs::read_to_string("test.r1cs.json").expect("Error reading file"), &fs::read_to_string("witness.json").expect("Error reading file"), ); From 21a02daef08a83878f8e1f8a5aa2289f57c853cf Mon Sep 17 00:00:00 2001 From: Diego K <43053772+diegokingston@users.noreply.github.com> Date: Mon, 14 Oct 2024 14:36:07 +0200 Subject: [PATCH 12/12] remove bootcamp (#928) --- bootcamp/0_groth_16.jpg | Bin 594068 -> 0 bytes bootcamp/0_snarks_starks.jpg | Bin 682009 -> 0 bytes bootcamp/0_starks_constraints.jpg | Bin 694318 -> 0 bytes bootcamp/0_starks_general.jpg | Bin 459965 -> 0 bytes bootcamp/0_starks_proof.jpg | Bin 519920 -> 0 bytes bootcamp/README.md | 247 ----------------------------- bootcamp/WhiteboardDiscussion.png | Bin 1481411 -> 0 bytes bootcamp/WhiteboardPolynomials.png | Bin 1720102 -> 0 bytes bootcamp/WhiteboardRSA.png | Bin 961603 -> 0 bytes bootcamp/learning_resources.md | 94 ----------- bootcamp/sparkling_water_0b10.md | 115 -------------- 11 files changed, 456 deletions(-) delete mode 100644 bootcamp/0_groth_16.jpg delete mode 100644 bootcamp/0_snarks_starks.jpg delete mode 100644 bootcamp/0_starks_constraints.jpg delete mode 100644 bootcamp/0_starks_general.jpg delete mode 100644 bootcamp/0_starks_proof.jpg delete mode 100644 bootcamp/README.md delete mode 100644 bootcamp/WhiteboardDiscussion.png delete mode 100644 bootcamp/WhiteboardPolynomials.png delete mode 100644 bootcamp/WhiteboardRSA.png delete mode 100644 bootcamp/learning_resources.md delete mode 100644 bootcamp/sparkling_water_0b10.md diff --git a/bootcamp/0_groth_16.jpg b/bootcamp/0_groth_16.jpg deleted file mode 100644 index 93e0544880f7bcf13fa348bfa8c25a14fb9bda2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 594068 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�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