From b07f998ffdcfe1419eecd3014d627f7fc39714a9 Mon Sep 17 00:00:00 2001 From: feltroid Prime <96737978+feltroidprime@users.noreply.github.com> Date: Fri, 9 Aug 2024 18:48:23 +0200 Subject: [PATCH] Bytecode-Steps Tradeoff (#144) --- .github/workflows/cairo.yml | 2 +- .github/workflows/fustat.yml | 2 +- .gitignore | 1 + .pre-commit-config.yaml | 1 + Makefile | 12 +- README.md | 18 +- docs/hints_document.md | 9 +- hydra/extension_field_modulo_circuit.py | 32 +- hydra/hints/bls.py | 18 +- hydra/hints/ecip.py | 2 +- hydra/hints/io.py | 7 +- hydra/modulo_circuit.py | 50 +- hydra/modulo_circuit_structs.py | 30 +- hydra/precompiled_circuits/all_circuits.py | 35 +- .../compilable_circuits/base.py | 7 +- .../cairo1_mpcheck_circuits.py | 87 +- hydra/precompiled_circuits/final_exp.py | 2 +- src/cairo/Scarb.toml | 2 +- src/cairo/contracts/base/Scarb.toml | 4 +- src/cairo/contracts/base/src/Scarb.toml | 2 +- src/cairo/contracts/base/src/lib.cairo | 1 - .../contracts/groth16_example/Scarb.toml | 2 + .../src/groth16_verifier.cairo | 1 - .../src/groth16_verifier_constants.cairo | 1 - .../contracts/kakarot_endpoints/Scarb.toml | 2 +- src/cairo/src/basic_field_ops.cairo | 203 +- src/cairo/src/circuits/dummy.cairo | 6 +- src/cairo/src/circuits/ec.cairo | 344 +- src/cairo/src/circuits/extf_mul.cairo | 313 +- .../src/circuits/multi_pairing_check.cairo | 6754 ++- src/cairo/src/core.cairo | 1 + src/cairo/src/core/circuit.cairo | 392 + src/cairo/src/ec_ops.cairo | 73 +- src/cairo/src/groth16.cairo | 164 +- src/cairo/src/lib.cairo | 2 +- src/cairo/src/pairing_check.cairo | 171 +- src/cairo/src/tests.cairo | 1 - src/cairo/src/tests/msm_tests.cairo | 39532 ++++++++-------- src/cairo/src/tests/pairing_tests.cairo | 31239 ++++++------ src/cairo/src/utils.cairo | 40 + src/cairo/src/utils_calldata.cairo | 2 +- src/fustat/README.md | 2 - src/fustat/modulo_circuit.cairo | 4 +- src/fustat/utils.cairo | 4 +- tests/benchmarks.py | 37 +- .../fustat_programs/sample_groth16_input.json | 2 +- tests/fustat_programs/test_fustat.py | 1 + tests/gen_inputs.py | 5 +- tests/hydra/algebra/test_pyfelt.py | 3 +- .../hydra/circuits/test_multi_miller_loop.py | 14 +- tests/hydra/hints/test_ecip.py | 4 +- tests/hydra/hints/test_final_exp_witness.py | 12 +- tests/hydra/hints/test_neg3.py | 7 +- .../test_extension_field_modulo_circuit.py | 8 +- tests/hydra/test_g1_point.py | 7 +- tests/hydra/test_g2_point.py | 6 +- tools/make/bytecode_check.sh | 4 + tools/make/fustat_format_check.sh | 2 +- tools/make/launch_cairo_files.py | 8 +- tools/make/poseidon_utils.patch | 28 +- tools/make/rewrite.sh | 3 + tools/make/steps.sh | 2 + tools/make/update_bench_in_readme.py | 2 +- tools/starknet/e2e_tests_writer/mpcheck.py | 6 +- .../starknet/e2e_tests_writer/test_writer.py | 18 +- .../groth16_contract_generator/generator.py | 20 +- .../parsing_utils.py | 15 +- tools/starknet/starknet_cli.py | 9 +- 68 files changed, 40030 insertions(+), 39770 deletions(-) create mode 100644 src/cairo/src/core.cairo create mode 100644 src/cairo/src/core/circuit.cairo create mode 100755 tools/make/bytecode_check.sh create mode 100755 tools/make/rewrite.sh create mode 100755 tools/make/steps.sh diff --git a/.github/workflows/cairo.yml b/.github/workflows/cairo.yml index 9a6c762f..c005067a 100644 --- a/.github/workflows/cairo.yml +++ b/.github/workflows/cairo.yml @@ -30,4 +30,4 @@ jobs: scarb-version: "2.7.0" - run: scarb fmt --check working-directory: src/cairo - - run: cd src/cairo && scarb test \ No newline at end of file + - run: cd src/cairo && scarb test diff --git a/.github/workflows/fustat.yml b/.github/workflows/fustat.yml index e4b05e74..3c849507 100644 --- a/.github/workflows/fustat.yml +++ b/.github/workflows/fustat.yml @@ -17,7 +17,7 @@ jobs: uses: fkirc/skip-duplicate-actions@v5 with: concurrent_skipping: 'same_content_newer' - + test-fustat: needs: pre_job if: needs.pre_job.outputs.should_skip != 'true' diff --git a/.gitignore b/.gitignore index 7b3b59b9..72fccf1a 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,4 @@ tools/garaga_rs/target/ tools/garaga_rs/Cargo.lock src/cairo/target/ +*target* diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 363db5ae..ba5a1e13 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -4,6 +4,7 @@ repos: hooks: - id: trailing-whitespace - id: end-of-file-fixer + exclude: \.cairo$ - id: check-yaml - id: check-toml - repo: https://github.com/psf/black diff --git a/Makefile b/Makefile index 172572cb..c0a10ef4 100644 --- a/Makefile +++ b/Makefile @@ -8,6 +8,14 @@ build: setup: ./tools/make/setup.sh +bytecode-check: + ./tools/make/bytecode_check.sh + +rewrite: + ./tools/make/rewrite.sh + +steps: + ./tools/make/steps.sh profile: @@ -21,7 +29,7 @@ profile-no-compile: ./tools/make/launch_cairo_files.py -profile -no_compile run: @echo "A script to select, compile & run one Cairo file" - @echo "Total number of steps will be shown at the end of the run." + @echo "Total number of steps will be shown at the end of the run." @echo "Thank you for testing Garaga!" ./tools/make/launch_cairo_files.py @@ -32,7 +40,7 @@ run-no-compile: run-pie: @echo "A script to select, compile & run one Cairo file with pie mode enabled" - @echo "Total number of steps will be shown at the end of the run." + @echo "Total number of steps will be shown at the end of the run." @echo "Thank you for proving Garaga!" ./tools/make/launch_cairo_files.py -pie clean: diff --git a/README.md b/README.md index 744b7eea..96f5b2d7 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ > State-of-the-art Elliptic Curve tooling and SNARKS verification for Cairo & Starknet 馃惡. Garaga can enable efficient elliptic curve pairing and scalar multiplication operations on Starknet. -It achieves state of the art performance by +It achieves state of the art performance by - using a dedicated builtin made by Starkware for emulated modular arithmetic - using a suite of non-deterministic techniques for extension field multiplication, pairings, and multi scalar multiplication to reduce the number of steps to verifiy results. @@ -38,21 +38,21 @@ Here are some interesting use cases enabled by Garaga: - KZG cryptographic commitment scheme. - Identity-based encryption schemes. - Attribute-based encryption schemes. -- BLS (Boneh鈥揕ynn鈥揝hacham) Digital Signature scheme. +- BLS (Boneh鈥揕ynn鈥揝hacham) Digital Signature scheme. ## Architecture overview (in progress.) -Garaga consists of a Pythonic backend and CairoZero / Starknet interfaces. -- The Pythonic backend is here to define emulated modular arithmetic circuits that can be compiled to Cairo or Cairo1 code. +Garaga consists of a Pythonic backend and CairoZero / Starknet interfaces. +- The Pythonic backend is here to define emulated modular arithmetic circuits that can be compiled to Cairo or Cairo1 code. It also handles witnesses generation for the non-deterministic computations. -- The CairoZero / Starknet interfaces are responsible for composing and calling the circuits, as well as adding all the extra logic needed to make the algorithms work (Fiat-Shamir heuristic, SNARKS verifiers, etc). +- The CairoZero / Starknet interfaces are responsible for composing and calling the circuits, as well as adding all the extra logic needed to make the algorithms work (Fiat-Shamir heuristic, SNARKS verifiers, etc). ## Deploying SNARKS verifier on Starknet -`pip install garaga` with tutorials coming. +`pip install garaga` with tutorials coming. In the meantime, check `tools/starknet/` ## Development setup @@ -62,8 +62,8 @@ To get started with Garaga, you'll need to have some tools and dependencies inst ### Prerequisites Ensure you have the following installed: -- [Python 3.10](https://www.python.org/downloads/) - The core language used for development. Make sure you have the correct dependencies installed (namely, GMP) for the `fastecdsa` python package. See [here](https://pypi.org/project/fastecdsa/#installing) for linux and [here](https://github.com/AntonKueltz/fastecdsa/issues/74) for macos. -- [Scarb 2.7.0](https://docs.swmansion.com/scarb/download.html) - The Cairo package manager. Comes with Cairo inside. Requires [Rust](https://www.rust-lang.org/tools/install). +- [Python 3.10](https://www.python.org/downloads/) - The core language used for development. Make sure you have the correct dependencies installed (namely, GMP) for the `fastecdsa` python package. See [here](https://pypi.org/project/fastecdsa/#installing) for linux and [here](https://github.com/AntonKueltz/fastecdsa/issues/74) for macos. +- [Scarb 2.7.0](https://docs.swmansion.com/scarb/download.html) - The Cairo package manager. Comes with Cairo inside. Requires [Rust](https://www.rust-lang.org/tools/install). ##### Optionally : @@ -164,7 +164,7 @@ See [LICENSE](LICENSE) for more information. - Credits to [Nethermind](https://github.com/NethermindEth/) for their [initial work on optimized modular arithmetic](https://github.com/NethermindEth/research-basic-Cairo-operations-big-integers/tree/main/lib). - [Herodotus](https://www.herodotus.dev/) for supporting this project. - [Gnark project](https://github.com/ConsenSys/gnark-crypto) and team, especially [yelhousni](https://github.com/yelhousni) for his amazing knowledge and support. -- [OnlyDust](https://www.onlydust.xyz/) and [Starkware](https://starkware.co/). +- [OnlyDust](https://www.onlydust.xyz/) and [Starkware](https://starkware.co/). - Liam Eagen and Andrija Novakovic for their support and amazing research. ## Resources - Craig Costello, [Pairing for beginners](https://static1.squarespace.com/static/5fdbb09f31d71c1227082339/t/5ff394720493bd28278889c6/1609798774687/PairingsForBeginners.pdf) diff --git a/docs/hints_document.md b/docs/hints_document.md index 8841de82..55a5d5e5 100644 --- a/docs/hints_document.md +++ b/docs/hints_document.md @@ -139,7 +139,7 @@ i+=1 - **[Lines 267-273](https://github.com/keep-starknet-strange/garaga/blob/main/src/fustat//utils.cairo#L267-L273)** ```python -from hydra.hints.io import bigint_split +from hydra.hints.io import bigint_split felt_val = memory[ids.values_start+i-1] limbs = bigint_split(felt_val, ids.N_LIMBS, ids.BASE) assert limbs[3] == 0 @@ -152,7 +152,7 @@ ids.d0, ids.d1, ids.d2 = limbs[0], limbs[1], limbs[2] - **[Lines 300-305](https://github.com/keep-starknet-strange/garaga/blob/main/src/fustat//utils.cairo#L300-L305)** ```python -from hydra.hints.io import bigint_split +from hydra.hints.io import bigint_split limbs = bigint_split(ids.x, ids.N_LIMBS, ids.BASE) assert limbs[3] == 0 ids.d0, ids.d1, ids.d2 = limbs[0], limbs[1], limbs[2] @@ -462,7 +462,7 @@ print(f"\tN={ids.circuit.N_Euclidean_equations} felt252 from Poseidon transcript - **[Lines 160-163](https://github.com/keep-starknet-strange/garaga/blob/main/src/fustat//modulo_circuit.cairo#L160-L163)** ```python -# Sanity Check : +# Sanity Check : assert ids.Z == EXTF_MOD_CIRCUIT.transcript.continuable_hash, f"Z for circuit {EXTF_MOD_CIRCUIT.name} does not match {hex(ids.Z)} {hex(EXTF_MOD_CIRCUIT.transcript.continuable_hash)}" ``` @@ -509,7 +509,7 @@ print(f"\tZ = Hash(Init_Hash|Commitments) = Poseidon(Init_Hash, Poseidon({(ids.c - **[Lines 254-257](https://github.com/keep-starknet-strange/garaga/blob/main/src/fustat//modulo_circuit.cairo#L254-L257)** ```python -# Sanity Check : +# Sanity Check : assert ids.Z == EXTF_MOD_CIRCUIT.transcript.continuable_hash, f"Z for circuit {EXTF_MOD_CIRCUIT.name} does not match {hex(ids.Z)} {hex(EXTF_MOD_CIRCUIT.transcript.continuable_hash)}" ``` @@ -535,4 +535,3 @@ print(f"\tRunning ModuloBuiltin circuit...") ## File: [src/fustat/precompiled_circuits/final_exp.cairo](https://github.com/keep-starknet-strange/garaga/blob/main/src/fustat//precompiled_circuits/final_exp.cairo) ## File: [src/fustat/precompiled_circuits/multi_miller_loop.cairo](https://github.com/keep-starknet-strange/garaga/blob/main/src/fustat//precompiled_circuits/multi_miller_loop.cairo) - diff --git a/hydra/extension_field_modulo_circuit.py b/hydra/extension_field_modulo_circuit.py index 1ce207e3..b4b12676 100644 --- a/hydra/extension_field_modulo_circuit.py +++ b/hydra/extension_field_modulo_circuit.py @@ -137,6 +137,35 @@ def circuit_input(self): for offset in sorted(self.values_segment.segment_stacks[WriteOps.INPUT]) ] + def create_lines_z_powers(self, z: PyFelt): + powers = [z] + if self.curve_id == 0: + powers.append(self.square(z, "compute z^2")) # z^2 at index 1 + powers.append(self.mul(powers[-1], z, "compute z^3")) # z^3 at index 2 + powers.append(None) # No z^4 + powers.append(None) # No z^5 + powers.append(self.square(powers[2], "compute z^6")) # z^6 at index 5 + powers.append(self.mul(powers[5], z, "compute z^7")) # z^7 at index 6 + powers.append(None) # No z^8 + powers.append( + self.mul(powers[6], powers[1], "compute z^9") + ) # z^9 at index 8 + self.z_powers = powers + elif self.curve_id == 1: + # Need z^2, z^3, z^6, Z^8: + powers.append(self.square(z, "compute z^2")) # z^2 at index 1 + powers.append(self.mul(powers[-1], z, "compute z^3")) # z^3 at index 2 + powers.append(None) # No z^4 + powers.append(None) # No z^5 + powers.append(self.square(powers[2], "compute z^6")) # z^6 at index 5 + powers.append(None) # No z^7 + powers.append( + self.mul(powers[5], powers[1], "compute z^8") + ) # z^8 at index 4 + self.z_powers = powers + else: + raise ValueError(f"Invalid curve id: {self.curve_id}") + def create_powers_of_Z( self, Z: PyFelt | ModuloCircuitElement, @@ -190,9 +219,6 @@ def eval_poly_in_precomputed_Z( """ if poly_name is None: poly_name = "UnnamedPoly" - assert len(X) - 1 <= len( - self.z_powers - ), f"Degree {len(X)-1} > Zpowlen = {len(self.z_powers)}" if sparsity: first_non_zero_idx = next( diff --git a/hydra/hints/bls.py b/hydra/hints/bls.py index bf9d1bb5..36899348 100644 --- a/hydra/hints/bls.py +++ b/hydra/hints/bls.py @@ -4,20 +4,20 @@ from hydra.hints.tower_backup import E12 """ -The goal of this script is to provide aux witness for efficient proving that Miller loop outputs of BLS12-381 curve are 位 residues. -Co-factor h = 27 * p * h3 and 位 = r * 3 * p^2. -We know that when pairings are equal multi Miller loop output is always r-th residue, -but it is 位 residue only when it is a cube and p-th residue too. -This happens with a very small probability (1/3*p), but both 27th and p-th roots of unity are in the subfields of Fp12, Fp3 and Fp respectively. -Thus we can simply clear their contribution and not affect he soundness of the method. +The goal of this script is to provide aux witness for efficient proving that Miller loop outputs of BLS12-381 curve are 位 residues. +Co-factor h = 27 * p * h3 and 位 = r * 3 * p^2. +We know that when pairings are equal multi Miller loop output is always r-th residue, +but it is 位 residue only when it is a cube and p-th residue too. +This happens with a very small probability (1/3*p), but both 27th and p-th roots of unity are in the subfields of Fp12, Fp3 and Fp respectively. +Thus we can simply clear their contribution and not affect he soundness of the method. -Note that gcd(27*p, h3) = 1, therefore we do the following: +Note that gcd(27*p, h3) = 1, therefore we do the following: i := inverse_mod(h3, 27*p) s := -i % 27*p -Then given the Miller loop output x, computing w = (x^h3)^s gives exactly the inverse of 27*p-th root of unity contribution in x. -By computing x_sh = w * x we are left with an element that is of order exactly h3. +Then given the Miller loop output x, computing w = (x^h3)^s gives exactly the inverse of 27*p-th root of unity contribution in x. +By computing x_sh = w * x we are left with an element that is of order exactly h3. Since gcd(h1, 位) = 1 computing 位 root of x_sh can be simply done by just raising x_sh^e where e = inverse_mod(h3, 位) """ diff --git a/hydra/hints/ecip.py b/hydra/hints/ecip.py index 6e4f17a5..b194bfb8 100644 --- a/hydra/hints/ecip.py +++ b/hydra/hints/ecip.py @@ -568,7 +568,7 @@ def print_ff(ff: FF): import random from hydra.definitions import STARK - from hydra.hints.io import int_to_u384, int_array_to_u384_array + from hydra.hints.io import int_array_to_u384_array, int_to_u384 random.seed(0) diff --git a/hydra/hints/io.py b/hydra/hints/io.py index 3a5677ba..5342ffb4 100644 --- a/hydra/hints/io.py +++ b/hydra/hints/io.py @@ -67,8 +67,11 @@ def int_array_to_u256_array(x: list[int] | list[PyFelt]) -> str: return f"array![{', '.join([int_to_u256(i) for i in x])}]" -def int_array_to_u384_array(x: list[int] | list[PyFelt]) -> str: - return f"array![{', '.join([int_to_u384(i) for i in x])}]" +def int_array_to_u384_array(x: list[int] | list[PyFelt], const=False) -> str: + if const: + return f"[{', '.join([int_to_u384(i) for i in x])}]" + else: + return f"array![{', '.join([int_to_u384(i) for i in x])}]" def bigint_pack(x: object, n_limbs: int, base: int) -> int: diff --git a/hydra/modulo_circuit.py b/hydra/modulo_circuit.py index 96504644..00aa618c 100644 --- a/hydra/modulo_circuit.py +++ b/hydra/modulo_circuit.py @@ -894,15 +894,32 @@ def write_cairo1_input_stack( return code, offset_to_reference_map, start_index def fill_cairo_1_constants(self) -> str: - constants = [ - bigint_split(self.values_segment.segment[offset].value, 4, 2**96) + constants_ints = [ + self.values_segment.segment[offset].value for offset in self.values_segment.segment_stacks[WriteOps.CONSTANT].keys() ] - constants_filled = "\n".join( - f"circuit_inputs = circuit_inputs.next([{','.join(hex(x) for x in constants[i])}]); // in{i}" - for i in range(len(constants)) - ) - return constants_filled + if len(constants_ints) < 8: + constants_split = [bigint_split(x, N_LIMBS, BASE) for x in constants_ints] + constants_filled = "\n".join( + f"circuit_inputs = circuit_inputs.next_2([{','.join(hex(x) for x in constants_split[i])}]); // in{i}" + for i in range(len(constants_ints)) + ) + return constants_filled, None + else: + import hydra.hints.io as io + + const_name = ( + self.name.upper() + + "_" + + CurveID(self.curve_id).name.upper() + + "_CONSTANTS" + ) + constants_filled = f""" + circuit_inputs = circuit_inputs.next_span({const_name}.span()); // in{0} - in{len(constants_ints)-1} + """ + + const_array = f"const {const_name}: [u384; {len(constants_ints)}] = {io.int_array_to_u384_array(constants_ints, const=True)};" + return constants_filled, const_array def write_cairo1_circuit(self, offset_to_reference_map: dict[int, str]) -> str: code = "" @@ -1030,12 +1047,16 @@ def compile_circuit_cairo_1( """ code += f""" - let mut circuit_inputs = ({','.join(outputs_refs_needed)},).new_inputs(); // Prefill constants: - {self.fill_cairo_1_constants()} - // Fill inputs: """ + + tmp, const_array = self.fill_cairo_1_constants() + code += tmp + code += """ + // Fill inputs: + """ + acc_len = len(self.values_segment.segment_stacks[WriteOps.CONSTANT]) if input_is_struct: for struct in self.input_structs: @@ -1062,10 +1083,7 @@ def compile_circuit_cairo_1( }}; """ code += f""" - let outputs = match circuit_inputs.done().eval(modulus) {{ - Result::Ok(outputs) => {{ outputs }}, - Result::Err(_) => {{ panic!("Expected success") }} - }}; + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); """ if return_is_struct: code += "\n".join( @@ -1082,6 +1100,10 @@ def compile_circuit_cairo_1( code += f"let res=array![{','.join([f'outputs.get_output({ref})' for ref in outputs_refs])}];\n" code += "return res;\n" code += "}\n" + + if const_array: + code += "\n" + code += const_array return code, function_name def summarize(self): diff --git a/hydra/modulo_circuit_structs.py b/hydra/modulo_circuit_structs.py index 7c4b141b..f5be5b14 100644 --- a/hydra/modulo_circuit_structs.py +++ b/hydra/modulo_circuit_structs.py @@ -194,7 +194,7 @@ def extract_from_circuit_output( return f"let {self.name}:{self.struct_name} = outputs.get_output({offset_to_reference_map[self.elmts[0].offset]});" def dump_to_circuit_input(self) -> str: - return f"circuit_inputs = circuit_inputs.next({self.name});\n" + return f"circuit_inputs = circuit_inputs.next_2({self.name});\n" def __len__(self) -> int: if self.elmts is not None: @@ -307,7 +307,7 @@ def dump_to_circuit_input(self) -> str: code = f""" let mut {self.name} = {self.name}; while let Option::Some(val) = {self.name}.pop_front() {{ - circuit_inputs = circuit_inputs.next(val); + circuit_inputs = circuit_inputs.next_2(val); }}; """ return code @@ -373,7 +373,7 @@ def dump_to_circuit_input(self) -> str: for mem_name in self.members_names: code += f"""let mut {self.name}_{mem_name} = {self.name}.{mem_name}; while let Option::Some(val) = {self.name}_{mem_name}.pop_front() {{ - circuit_inputs = circuit_inputs.next(*val); + circuit_inputs = circuit_inputs.next_2(*val); }}; """ return code @@ -408,7 +408,7 @@ def extract_from_circuit_output( def dump_to_circuit_input(self) -> str: code = f"""let mut {self.name} = {self.name}; while let Option::Some(val) = {self.name}.pop_front() {{ - circuit_inputs = circuit_inputs.next(*val); + circuit_inputs = circuit_inputs.next_2(*val); }}; """ return code @@ -442,7 +442,7 @@ def extract_from_circuit_output( def dump_to_circuit_input(self) -> str: code = "" for mem_name in self.members_names: - code += f"circuit_inputs = circuit_inputs.next({self.name}.{mem_name});\n" + code += f"circuit_inputs = circuit_inputs.next_2({self.name}.{mem_name});\n" return code def __len__(self) -> int: @@ -483,7 +483,7 @@ def extract_from_circuit_output( def dump_to_circuit_input(self) -> str: code = "" for mem_name in self.members_names: - code += f"circuit_inputs = circuit_inputs.next({self.name}.{mem_name});\n" + code += f"circuit_inputs = circuit_inputs.next_2({self.name}.{mem_name});\n" return code def __len__(self) -> int: @@ -525,7 +525,7 @@ def extract_from_circuit_output( def dump_to_circuit_input(self) -> str: code = "" for mem_name in self.members_names: - code += f"circuit_inputs = circuit_inputs.next({self.name}.{mem_name});\n" + code += f"circuit_inputs = circuit_inputs.next_2({self.name}.{mem_name});\n" return code def __len__(self) -> int: @@ -575,7 +575,7 @@ def extract_from_circuit_output( def dump_to_circuit_input(self) -> str: code = "" for mem_name in self.members_names: - code += f"circuit_inputs = circuit_inputs.next({self.name}.{mem_name});\n" + code += f"circuit_inputs = circuit_inputs.next_2({self.name}.{mem_name});\n" return code def __len__(self) -> int: @@ -608,7 +608,7 @@ def extract_from_circuit_output( def dump_to_circuit_input(self) -> str: code = "" for mem_name in self.members_names: - code += f"circuit_inputs = circuit_inputs.next({self.name}.{mem_name});\n" + code += f"circuit_inputs = circuit_inputs.next_2({self.name}.{mem_name});\n" return code def __len__(self) -> int: @@ -637,7 +637,7 @@ def extract_from_circuit_output( def dump_to_circuit_input(self) -> str: code = "" for mem_name in self.members_names: - code += f"circuit_inputs = circuit_inputs.next({self.name}.{mem_name});\n" + code += f"circuit_inputs = circuit_inputs.next_2({self.name}.{mem_name});\n" return code def __len__(self) -> int: @@ -673,7 +673,7 @@ def extract_from_circuit_output( def dump_to_circuit_input(self) -> str: code = "" for mem_name in self.members_names: - code += f"circuit_inputs = circuit_inputs.next({self.name}.{mem_name});\n" + code += f"circuit_inputs = circuit_inputs.next_2({self.name}.{mem_name});\n" return code def __len__(self) -> int: @@ -719,7 +719,7 @@ def serialize(self, raw: bool = False, is_option: bool = False) -> str: def dump_to_circuit_input(self) -> str: code = "" for i in range(len(self)): - code += f"circuit_inputs = circuit_inputs.next({self.name}.w{i});\n" + code += f"circuit_inputs = circuit_inputs.next_2({self.name}.w{i});\n" return code def __len__(self) -> int: @@ -765,7 +765,7 @@ def serialize(self, raw: bool = False, is_option: bool = False) -> str: def dump_to_circuit_input(self) -> str: code = "" for i in range(len(self)): - code += f"circuit_inputs = circuit_inputs.next({self.name}.w{i});\n" + code += f"circuit_inputs = circuit_inputs.next_2({self.name}.w{i});\n" return code def __len__(self) -> int: @@ -789,7 +789,7 @@ def extract_from_circuit_output( def dump_to_circuit_input(self) -> str: code = "" for mem_name in self.members_names: - code += f"circuit_inputs = circuit_inputs.next({self.name}.{mem_name});\n" + code += f"circuit_inputs = circuit_inputs.next_2({self.name}.{mem_name});\n" return code def serialize(self, raw: bool = False) -> str: @@ -836,7 +836,7 @@ def extract_from_circuit_output( def dump_to_circuit_input(self) -> str: code = "" for mem_name in self.members_names: - code += f"circuit_inputs = circuit_inputs.next({self.name}.{mem_name});\n" + code += f"circuit_inputs = circuit_inputs.next_2({self.name}.{mem_name});\n" return code def __len__(self) -> int: diff --git a/hydra/precompiled_circuits/all_circuits.py b/hydra/precompiled_circuits/all_circuits.py index cd88036c..af82e9e6 100644 --- a/hydra/precompiled_circuits/all_circuits.py +++ b/hydra/precompiled_circuits/all_circuits.py @@ -7,7 +7,18 @@ compile_circuit, format_cairo_files_in_parallel, ) - +from hydra.precompiled_circuits.compilable_circuits.cairo1_mpcheck_circuits import ( + EvalE12D, + FixedG2MPCheckBit0, + FixedG2MPCheckBit00, + FixedG2MPCheckBit1, + FixedG2MPCheckFinalizeBN, + FixedG2MPCheckInitBit, + FP12MulAssertOne, + MPCheckFinalizeBLS, + MPCheckPrepareLambdaRootEvaluations, + MPCheckPreparePairs, +) from hydra.precompiled_circuits.compilable_circuits.common_cairo_fustat_circuits import ( AccumulateEvalPointChallengeSignedCircuit, AccumulateFunctionChallengeDuplCircuit, @@ -23,17 +34,6 @@ RHSFinalizeAccCircuit, SlopeInterceptSamePointCircuit, ) -from hydra.precompiled_circuits.compilable_circuits.cairo1_mpcheck_circuits import ( - FixedG2MPCheckBit0, - FixedG2MPCheckBit00, - FixedG2MPCheckBit1, - MPCheckFinalizeBLS, - FixedG2MPCheckFinalizeBN, - FixedG2MPCheckInitBit, - FP12MulAssertOne, - MPCheckPrepareLambdaRootEvaluations, - MPCheckPreparePairs, -) from hydra.precompiled_circuits.compilable_circuits.fustat_only import ( DerivePointFromXCircuit, FinalExpPart1Circuit, @@ -84,6 +84,7 @@ class CircuitID(Enum): MP_CHECK_FINALIZE_BN = int.from_bytes(b"mp_check_finalize_bn", "big") MP_CHECK_FINALIZE_BLS = int.from_bytes(b"mp_check_finalize_bls", "big") FP12_MUL_ASSERT_ONE = int.from_bytes(b"fp12_mul_assert_one", "big") + EVAL_E12D = int.from_bytes(b"eval_e12d", "big") # All the circuits that are going to be compiled to Cairo Zero. @@ -269,7 +270,7 @@ class CircuitID(Enum): }, CircuitID.MP_CHECK_PREPARE_PAIRS: { "class": MPCheckPreparePairs, - "params": [{"n_pairs": k} for k in [2, 3]], + "params": [{"n_pairs": k} for k in [1, 2, 3]], "filename": "multi_pairing_check", "curve_ids": [CurveID.BN254, CurveID.BLS12_381], }, @@ -309,6 +310,12 @@ class CircuitID(Enum): "filename": "extf_mul", "curve_ids": [CurveID.BN254, CurveID.BLS12_381], }, + CircuitID.EVAL_E12D: { + "class": EvalE12D, + "params": None, + "filename": "extf_mul", + "curve_ids": [CurveID.BN254, CurveID.BLS12_381], + }, } @@ -395,7 +402,7 @@ def main( import random random.seed(0) - print(f"Compiling Cairo 1 circuits...") + # print(f"Compiling Cairo 1 circuits...") main( PRECOMPILED_CIRCUITS_DIR="src/cairo/src/circuits/", CIRCUITS_TO_COMPILE=ALL_CAIRO_GENERIC_CIRCUITS, diff --git a/hydra/precompiled_circuits/compilable_circuits/base.py b/hydra/precompiled_circuits/compilable_circuits/base.py index 9d34b847..2f355d1c 100644 --- a/hydra/precompiled_circuits/compilable_circuits/base.py +++ b/hydra/precompiled_circuits/compilable_circuits/base.py @@ -95,6 +95,7 @@ def compilation_mode_to_file_header(mode: int) -> str: CircuitModulus, AddInputResultTrait, CircuitInputs, CircuitDefinition, CircuitData, CircuitInputAccumulator }; +use garaga::core::circuit::AddInputResultTrait2; use core::circuit::CircuitElement as CE; use core::circuit::CircuitInput as CI; use garaga::definitions::{get_a, get_b, get_p, get_g, get_min_one, G1Point, G2Point, E12D, E12DMulQuotient, G1G2Pair, BNProcessedPair, BLSProcessedPair, MillerLoopResultScalingFactor, G2Line}; @@ -217,9 +218,9 @@ def compile_circuit( cairo1_tests_functions: dict[str, set[str]], filename_key: str, ) -> tuple[list[str], str]: - print( - f"Compiling {curve_id.name}:{circuit_class.__name__} {f'with params {params}' if params else ''}..." - ) + # print( + # f"Compiling {curve_id.name}:{circuit_class.__name__} {f'with params {params}' if params else ''}..." + # ) param_name = list(params[0].keys())[0] if params else None circuits: list[BaseModuloCircuit] = [] diff --git a/hydra/precompiled_circuits/compilable_circuits/cairo1_mpcheck_circuits.py b/hydra/precompiled_circuits/compilable_circuits/cairo1_mpcheck_circuits.py index aecb71fa..bb3ba6aa 100644 --- a/hydra/precompiled_circuits/compilable_circuits/cairo1_mpcheck_circuits.py +++ b/hydra/precompiled_circuits/compilable_circuits/cairo1_mpcheck_circuits.py @@ -1,14 +1,13 @@ -from typing import List, Tuple, Union from abc import ABC, abstractmethod -from typing import Callable, Dict, Type, Union +from typing import Callable, Dict, List, Tuple, Type, Union import hydra.modulo_circuit_structs as structs from hydra.definitions import BLS12_381_ID, BN254_ID, get_irreducible_poly -from hydra.extension_field_modulo_circuit import PyFelt, ExtensionFieldModuloCircuit +from hydra.extension_field_modulo_circuit import ExtensionFieldModuloCircuit, PyFelt from hydra.modulo_circuit_structs import ( + E12D, BLSProcessedPair, BNProcessedPair, - E12D, Cairo1SerializableStruct, G1PointCircuit, G2Line, @@ -65,7 +64,7 @@ def __init__( compilation_mode=1, ): assert compilation_mode == 1, "Compilation mode 1 is required for this circuit" - if n_pairs: + if n_pairs and "mp_check_prepare_pairs" not in name: assert ( 2 <= n_pairs ), f"Multi-pairing check requires at least 2 pairs, got {n_pairs}" @@ -128,7 +127,7 @@ def _base_input_map(self, bit_type): # Add common inputs input_map["lhs_i"] = u384 input_map["f_i_of_z"] = u384 - input_map["f_i_plus_one"] = E12D + input_map["f_i_plus_one_of_z"] = u384 # Add bit-specific inputs if bit_type == "1": @@ -216,7 +215,8 @@ def _execute_circuit_bit_logic_base(self, circuit, vars, bit_type): circuit, vars, n_pairs, bit_1=(bit_type == "1") ) - circuit.create_powers_of_Z(Z=vars["z"], max_degree=11) + max_degree = 8 if self.curve_id == BLS12_381_ID else 9 + circuit.create_lines_z_powers(vars["z"]) ci_plus_one = circuit.mul(vars["ci"], vars["ci"], f"Compute c_i = (c_(i-1))^2") sum_i_prod_k_P = circuit.mul( @@ -232,9 +232,10 @@ def _execute_circuit_bit_logic_base(self, circuit, vars, bit_type): if bit_type == "1": sum_i_prod_k_P = circuit.mul(sum_i_prod_k_P, vars["c_or_cinv_of_z"]) - f_i_plus_one_of_z = circuit.eval_poly_in_precomputed_Z( - vars["f_i_plus_one"], poly_name="f_i+1" - ) + # f_i_plus_one_of_z = circuit.eval_poly_in_precomputed_Z( + # vars["f_i_plus_one"], poly_name="f_i+1" + # ) + f_i_plus_one_of_z = vars["f_i_plus_one_of_z"] new_lhs = circuit.mul( ci_plus_one, circuit.sub(sum_i_prod_k_P, f_i_plus_one_of_z, f"(螤(i,k) (Pk(z))) - Ri(z)"), @@ -244,9 +245,7 @@ def _execute_circuit_bit_logic_base(self, circuit, vars, bit_type): vars["lhs_i"], new_lhs, f"LHS = LHS + ci * ((螤(i,k) (Pk(z)) - Ri(z))" ) - self._extend_output( - circuit, new_points, f_i_plus_one_of_z, lhs_i_plus_one, ci_plus_one - ) + self._extend_output(circuit, new_points, lhs_i_plus_one, ci_plus_one) return circuit @@ -310,9 +309,7 @@ def _multiply_line_evaluations(self, circuit, sum_i_prod_k_P, lines, k): ) return sum_i_prod_k_P - def _extend_output( - self, circuit, new_points, f_i_plus_one_of_z, lhs_i_plus_one, ci_plus_one - ): + def _extend_output(self, circuit, new_points, lhs_i_plus_one, ci_plus_one): last_points = ( new_points[-(self.n_pairs - self.n_fixed_g2) :] @@ -331,9 +328,6 @@ def _extend_output( ], ) ) - circuit.extend_struct_output( - u384(name="f_i_plus_one_of_z", elmts=[f_i_plus_one_of_z]) - ) circuit.extend_struct_output( u384(name="lhs_i_plus_one", elmts=[lhs_i_plus_one]) ) @@ -454,7 +448,7 @@ def input_map(self): input_map.update( { - "R_i": E12D, + "R_i_of_z": u384, "c0": u384, "z": u384, "c_inv_of_z": u384, @@ -470,13 +464,13 @@ def _execute_circuit_logic(self, circuit, vars): circuit, vars, n_pairs ) - R_i = vars["R_i"] c0 = vars["c0"] z = vars["z"] c_inv_of_z = vars["c_inv_of_z"] - circuit.create_powers_of_Z(z, max_degree=11) + circuit.create_lines_z_powers(z) + + f_i_plus_one_of_z = vars["R_i_of_z"] - f_i_plus_one_of_z = circuit.eval_poly_in_precomputed_Z(R_i, poly_name="R") sum_i_prod_k_P_of_z = circuit.mul( c_inv_of_z, c_inv_of_z ) # At initialisation, f=1/c so f^2 = 1/c^2 @@ -547,9 +541,7 @@ def _execute_circuit_logic(self, circuit, vars): circuit.extend_struct_output(u384("new_lhs", elmts=[new_lhs])) if self.curve_id == BN254_ID: circuit.extend_struct_output(u384("c_i", elmts=[c_i])) - circuit.extend_struct_output( - u384("f_i_plus_one_of_z", elmts=[f_i_plus_one_of_z]) - ) + return circuit @@ -796,6 +788,14 @@ def input_map(self): input_map[f"Qy1_{i}"] = u384 return input_map + def _initialize_circuit(self): + return multi_pairing_check.MultiMillerLoopCircuit( + self.name, + self.curve_id, + n_pairs=self.n_pairs, + compilation_mode=self.compilation_mode, + ) + def _execute_circuit_logic(self, circuit, vars): n_pairs = self.n_pairs for i in range(n_pairs): @@ -1007,3 +1007,38 @@ def _run_circuit_inner(self, input: list[PyFelt]) -> ExtensionFieldModuloCircuit circuit.extend_struct_output(u384("check", elmts=[check])) return circuit + + +class EvalE12D(BaseEXTFCircuit): + def __init__( + self, + curve_id: int, + auto_run: bool = True, + init_hash: int = None, + compilation_mode: int = 0, + ): + super().__init__( + "eval_e12d", None, curve_id, auto_run, init_hash, compilation_mode + ) + + def build_input(self) -> list[PyFelt]: + input = [] + input.extend([self.field.random() for _ in range(12)]) # X + input.append(self.field.random()) # z + + return input + + def _run_circuit_inner(self, input: list[PyFelt]) -> ExtensionFieldModuloCircuit: + circuit = ExtensionFieldModuloCircuit( + self.name, + self.curve_id, + extension_degree=12, + init_hash=self.init_hash, + compilation_mode=self.compilation_mode, + ) + X = circuit.write_struct(E12D("f", elmts=[input.pop(0) for _ in range(12)])) + z = circuit.write_struct(u384("z", elmts=[input.pop(0)])) + circuit.create_powers_of_Z(z, max_degree=11) + X_of_z = circuit.eval_poly_in_precomputed_Z(X, poly_name="X") + circuit.extend_struct_output(u384("f_of_z", elmts=[X_of_z])) + return circuit diff --git a/hydra/precompiled_circuits/final_exp.py b/hydra/precompiled_circuits/final_exp.py index 1c120dc2..9d5ad0f8 100644 --- a/hydra/precompiled_circuits/final_exp.py +++ b/hydra/precompiled_circuits/final_exp.py @@ -390,7 +390,7 @@ def final_exp_part1( def test_final_exp(curve_id: CurveID): - from hydra.definitions import tower_to_direct, G1Point, G2Point, G1G2Pair + from hydra.definitions import G1G2Pair, G1Point, G2Point, tower_to_direct order = CURVES[curve_id.value].n pairs = [] diff --git a/src/cairo/Scarb.toml b/src/cairo/Scarb.toml index e3cf3928..22957d8b 100644 --- a/src/cairo/Scarb.toml +++ b/src/cairo/Scarb.toml @@ -15,4 +15,4 @@ repository = "https://github.com/keep-starknet-strange/garaga" [dev-dependencies] cairo_test = "2.7.0" [cairo] -sierra-replace-ids = false \ No newline at end of file +sierra-replace-ids = false diff --git a/src/cairo/contracts/base/Scarb.toml b/src/cairo/contracts/base/Scarb.toml index 85806912..d896c359 100644 --- a/src/cairo/contracts/base/Scarb.toml +++ b/src/cairo/contracts/base/Scarb.toml @@ -10,4 +10,6 @@ starknet = "2.7.0" [cairo] sierra-replace-ids = false -[[target.starknet-contract]] \ No newline at end of file +[[target.starknet-contract]] +casm = true +casm-add-pythonic-hints = true diff --git a/src/cairo/contracts/base/src/Scarb.toml b/src/cairo/contracts/base/src/Scarb.toml index b0b76076..4eef2745 100644 --- a/src/cairo/contracts/base/src/Scarb.toml +++ b/src/cairo/contracts/base/src/Scarb.toml @@ -10,4 +10,4 @@ starknet = "2.7.0" [cairo] sierra-replace-ids = false -[[target.starknet-contract]] \ No newline at end of file +[[target.starknet-contract]] diff --git a/src/cairo/contracts/base/src/lib.cairo b/src/cairo/contracts/base/src/lib.cairo index fde0a54b..d780d5fb 100644 --- a/src/cairo/contracts/base/src/lib.cairo +++ b/src/cairo/contracts/base/src/lib.cairo @@ -51,4 +51,3 @@ mod GaragaBase { } } } - diff --git a/src/cairo/contracts/groth16_example/Scarb.toml b/src/cairo/contracts/groth16_example/Scarb.toml index 12ce143f..89ae5fa0 100644 --- a/src/cairo/contracts/groth16_example/Scarb.toml +++ b/src/cairo/contracts/groth16_example/Scarb.toml @@ -13,3 +13,5 @@ sierra-replace-ids = false [[target.starknet-contract]] +casm = true +casm-add-pythonic-hints = true diff --git a/src/cairo/contracts/groth16_example/src/groth16_verifier.cairo b/src/cairo/contracts/groth16_example/src/groth16_verifier.cairo index b4055dd5..96ab9a49 100644 --- a/src/cairo/contracts/groth16_example/src/groth16_verifier.cairo +++ b/src/cairo/contracts/groth16_example/src/groth16_verifier.cairo @@ -65,4 +65,3 @@ mod Groth16VerifierBN254 { } } } - diff --git a/src/cairo/contracts/groth16_example/src/groth16_verifier_constants.cairo b/src/cairo/contracts/groth16_example/src/groth16_verifier_constants.cairo index 9f782123..85c7d5b4 100644 --- a/src/cairo/contracts/groth16_example/src/groth16_verifier_constants.cairo +++ b/src/cairo/contracts/groth16_example/src/groth16_verifier_constants.cairo @@ -4747,4 +4747,3 @@ pub const precomputed_lines: [ } }, ]; - diff --git a/src/cairo/contracts/kakarot_endpoints/Scarb.toml b/src/cairo/contracts/kakarot_endpoints/Scarb.toml index 1f292a6c..a2e1c25e 100644 --- a/src/cairo/contracts/kakarot_endpoints/Scarb.toml +++ b/src/cairo/contracts/kakarot_endpoints/Scarb.toml @@ -10,4 +10,4 @@ starknet = "2.7.0" [cairo] sierra-replace-ids = false -[[target.starknet-contract]] \ No newline at end of file +[[target.starknet-contract]] diff --git a/src/cairo/src/basic_field_ops.cairo b/src/cairo/src/basic_field_ops.cairo index e809d534..a1efed59 100644 --- a/src/cairo/src/basic_field_ops.cairo +++ b/src/cairo/src/basic_field_ops.cairo @@ -3,6 +3,11 @@ use core::circuit::{ circuit_mul, circuit_inverse, EvalCircuitResult, EvalCircuitTrait, CircuitOutputsTrait, CircuitModulus, AddInputResultTrait, CircuitInputs, CircuitInputAccumulator }; +use garaga::core::circuit::AddInputResultTrait2; +use garaga::utils::hades_permutation; +use core::circuit::CircuitElement as CE; +use core::circuit::CircuitInput as CI; +use garaga::definitions::E12D; fn neg_mod_p(a: u384, p: u384) -> u384 { let in1 = CircuitElement::> {}; @@ -12,14 +17,74 @@ fn neg_mod_p(a: u384, p: u384) -> u384 { let modulus = TryInto::<_, CircuitModulus>::try_into([p.limb0, p.limb1, p.limb2, p.limb3]) .unwrap(); - let outputs = match (neg,).new_inputs().next([0, 0, 0, 0]).next(a).done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + let outputs = (neg,) + .new_inputs() + .next_2([0, 0, 0, 0]) + .next_2(a) + .done_2() + .eval(modulus) + .unwrap(); return outputs.get_output(neg); } +fn compute_yInvXnegOverY_BN254(x: u384, y: u384) -> (u384, u384) { + let in1 = CircuitElement::> {}; + let in2 = CircuitElement::> {}; + let in3 = CircuitElement::> {}; + let yInv = circuit_inverse(in3); + let xNeg = circuit_sub(in1, in2); + let xNegOverY = circuit_mul(xNeg, yInv); + + let modulus = TryInto::< + _, CircuitModulus + >::try_into([0x6871ca8d3c208c16d87cfd47, 0xb85045b68181585d97816a91, 0x30644e72e131a029, 0x0]) + .unwrap(); // BN254 prime field modulus + + let outputs = (yInv, xNegOverY) + .new_inputs() + .next_2([0, 0, 0, 0]) + .next_2(x) + .next_2(y) + .done_2() + .eval(modulus) + .unwrap(); + + return (outputs.get_output(yInv), outputs.get_output(xNegOverY)); +} + +fn compute_yInvXnegOverY_BLS12_381(x: u384, y: u384) -> (u384, u384) { + let in1 = CircuitElement::> {}; + let in2 = CircuitElement::> {}; + let in3 = CircuitElement::> {}; + let yInv = circuit_inverse(in3); + let xNeg = circuit_sub(in1, in2); + let xNegOverY = circuit_mul(xNeg, yInv); + + let modulus = TryInto::< + _, CircuitModulus + >::try_into( + [ + 0xb153ffffb9feffffffffaaab, + 0x6730d2a0f6b0f6241eabfffe, + 0x434bacd764774b84f38512bf, + 0x1a0111ea397fe69a4b1ba7b6 + ] + ) + .unwrap(); // BLS12_381 prime field modulus + + let outputs = (yInv, xNegOverY) + .new_inputs() + .next_2([0, 0, 0, 0]) + .next_2(x) + .next_2(y) + .done_2() + .eval(modulus) + .unwrap(); + + return (outputs.get_output(yInv), outputs.get_output(xNegOverY)); +} + fn add_mod_p(a: u384, b: u384, p: u384) -> u384 { let in1 = CircuitElement::> {}; let in2 = CircuitElement::> {}; @@ -28,10 +93,7 @@ fn add_mod_p(a: u384, b: u384, p: u384) -> u384 { let modulus = TryInto::<_, CircuitModulus>::try_into([p.limb0, p.limb1, p.limb2, p.limb3]) .unwrap(); - let outputs = match (add,).new_inputs().next(a).next(b).done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + let outputs = (add,).new_inputs().next_2(a).next_2(b).done_2().eval(modulus).unwrap(); return outputs.get_output(add); } @@ -44,10 +106,7 @@ fn sub_mod_p(a: u384, b: u384, p: u384) -> u384 { let modulus = TryInto::<_, CircuitModulus>::try_into([p.limb0, p.limb1, p.limb2, p.limb3]) .unwrap(); - let outputs = match (sub,).new_inputs().next(a).next(b).done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + let outputs = (sub,).new_inputs().next_2(a).next_2(b).done_2().eval(modulus).unwrap(); return outputs.get_output(sub); } @@ -60,10 +119,7 @@ fn mul_mod_p(a: u384, b: u384, p: u384) -> u384 { let modulus = TryInto::<_, CircuitModulus>::try_into([p.limb0, p.limb1, p.limb2, p.limb3]) .unwrap(); - let outputs = match (mul,).new_inputs().next(a).next(b).done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + let outputs = (mul,).new_inputs().next_2(a).next_2(b).done_2().eval(modulus).unwrap(); return outputs.get_output(mul); } @@ -75,10 +131,117 @@ fn inv_mod_p(a: u384, p: u384) -> u384 { let modulus = TryInto::<_, CircuitModulus>::try_into([p.limb0, p.limb1, p.limb2, p.limb3]) .unwrap(); - let outputs = match (inv,).new_inputs().next(a).done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + let outputs = (inv,).new_inputs().next_2(a).done_2().eval(modulus).unwrap(); return outputs.get_output(inv); } + + +fn run_BN254_EVAL_AND_HASH_E12D_circuit( + f: E12D, z: u384, s0: felt252, s1: felt252, s2: felt252 +) -> (u384, felt252, felt252, felt252) { + // INPUT stack + let (in0, in1, in2) = (CE::> {}, CE::> {}, CE::> {}); + let (in3, in4, in5) = (CE::> {}, CE::> {}, CE::> {}); + let (in6, in7, in8) = (CE::> {}, CE::> {}, CE::> {}); + let (in9, in10, in11) = (CE::> {}, CE::> {}, CE::> {}); + let in12 = CE::> {}; + let t0 = circuit_mul(in12, in12); // Compute z^2 + let t1 = circuit_mul(t0, in12); // Compute z^3 + let t2 = circuit_mul(t1, in12); // Compute z^4 + let t3 = circuit_mul(t2, in12); // Compute z^5 + let t4 = circuit_mul(t3, in12); // Compute z^6 + let t5 = circuit_mul(t4, in12); // Compute z^7 + let t6 = circuit_mul(t5, in12); // Compute z^8 + let t7 = circuit_mul(t6, in12); // Compute z^9 + let t8 = circuit_mul(t7, in12); // Compute z^10 + let t9 = circuit_mul(t8, in12); // Compute z^11 + let t10 = circuit_mul(in1, in12); // Eval X step coeff_1 * z^1 + let t11 = circuit_add(in0, t10); // Eval X step + (coeff_1 * z^1) + let t12 = circuit_mul(in2, t0); // Eval X step coeff_2 * z^2 + let t13 = circuit_add(t11, t12); // Eval X step + (coeff_2 * z^2) + let t14 = circuit_mul(in3, t1); // Eval X step coeff_3 * z^3 + let t15 = circuit_add(t13, t14); // Eval X step + (coeff_3 * z^3) + let t16 = circuit_mul(in4, t2); // Eval X step coeff_4 * z^4 + let t17 = circuit_add(t15, t16); // Eval X step + (coeff_4 * z^4) + let t18 = circuit_mul(in5, t3); // Eval X step coeff_5 * z^5 + let t19 = circuit_add(t17, t18); // Eval X step + (coeff_5 * z^5) + let t20 = circuit_mul(in6, t4); // Eval X step coeff_6 * z^6 + let t21 = circuit_add(t19, t20); // Eval X step + (coeff_6 * z^6) + let t22 = circuit_mul(in7, t5); // Eval X step coeff_7 * z^7 + let t23 = circuit_add(t21, t22); // Eval X step + (coeff_7 * z^7) + let t24 = circuit_mul(in8, t6); // Eval X step coeff_8 * z^8 + let t25 = circuit_add(t23, t24); // Eval X step + (coeff_8 * z^8) + let t26 = circuit_mul(in9, t7); // Eval X step coeff_9 * z^9 + let t27 = circuit_add(t25, t26); // Eval X step + (coeff_9 * z^9) + let t28 = circuit_mul(in10, t8); // Eval X step coeff_10 * z^10 + let t29 = circuit_add(t27, t28); // Eval X step + (coeff_10 * z^10) + let t30 = circuit_mul(in11, t9); // Eval X step coeff_11 * z^11 + let t31 = circuit_add(t29, t30); // Eval X step + (coeff_11 * z^11) + + let modulus = TryInto::< + _, CircuitModulus + >::try_into([0x6871ca8d3c208c16d87cfd47, 0xb85045b68181585d97816a91, 0x30644e72e131a029, 0x0]) + .unwrap(); // BN254 prime field modulus + + let mut circuit_inputs = (t31,).new_inputs(); + // Prefill constants: + + // Fill inputs: + circuit_inputs = circuit_inputs.next_2(f.w0); // in0 + circuit_inputs = circuit_inputs.next_2(f.w1); // in1 + circuit_inputs = circuit_inputs.next_2(f.w2); // in2 + circuit_inputs = circuit_inputs.next_2(f.w3); // in3 + circuit_inputs = circuit_inputs.next_2(f.w4); // in4 + circuit_inputs = circuit_inputs.next_2(f.w5); // in5 + circuit_inputs = circuit_inputs.next_2(f.w6); // in6 + circuit_inputs = circuit_inputs.next_2(f.w7); // in7 + circuit_inputs = circuit_inputs.next_2(f.w8); // in8 + circuit_inputs = circuit_inputs.next_2(f.w9); // in9 + circuit_inputs = circuit_inputs.next_2(f.w10); // in10 + circuit_inputs = circuit_inputs.next_2(f.w11); // in11 + circuit_inputs = circuit_inputs.next_2(z); // in12 + + // Hash F: + let base: felt252 = 34; + let in_1 = s0 + f.w0.limb0.into() + base * f.w0.limb1.into(); + let in_2 = s1 + f.w0.limb2.into() + base * f.w0.limb3.into(); + let (_s0, _s1, _s2) = hades_permutation(in_1, in_2, s2); + let in_1 = _s0 + f.w1.limb0.into() + base * f.w1.limb1.into(); + let in_2 = _s1 + f.w1.limb2.into() + base * f.w1.limb3.into(); + let (_s0, _s1, _s2) = hades_permutation(in_1, in_2, _s2); + let in_1 = _s0 + f.w2.limb0.into() + base * f.w2.limb1.into(); + let in_2 = _s1 + f.w2.limb2.into() + base * f.w2.limb3.into(); + let (_s0, _s1, _s2) = hades_permutation(in_1, in_2, _s2); + let in_1 = _s0 + f.w3.limb0.into() + base * f.w3.limb1.into(); + let in_2 = _s1 + f.w3.limb2.into() + base * f.w3.limb3.into(); + let (_s0, _s1, _s2) = hades_permutation(in_1, in_2, _s2); + let in_1 = _s0 + f.w4.limb0.into() + base * f.w4.limb1.into(); + let in_2 = _s1 + f.w4.limb2.into() + base * f.w4.limb3.into(); + let (_s0, _s1, _s2) = hades_permutation(in_1, in_2, _s2); + let in_1 = _s0 + f.w5.limb0.into() + base * f.w5.limb1.into(); + let in_2 = _s1 + f.w5.limb2.into() + base * f.w5.limb3.into(); + let (_s0, _s1, _s2) = hades_permutation(in_1, in_2, _s2); + let in_1 = _s0 + f.w6.limb0.into() + base * f.w6.limb1.into(); + let in_2 = _s1 + f.w6.limb2.into() + base * f.w6.limb3.into(); + let (_s0, _s1, _s2) = hades_permutation(in_1, in_2, _s2); + let in_1 = _s0 + f.w7.limb0.into() + base * f.w7.limb1.into(); + let in_2 = _s1 + f.w7.limb2.into() + base * f.w7.limb3.into(); + let (_s0, _s1, _s2) = hades_permutation(in_1, in_2, _s2); + let in_1 = _s0 + f.w8.limb0.into() + base * f.w8.limb1.into(); + let in_2 = _s1 + f.w8.limb2.into() + base * f.w8.limb3.into(); + let (_s0, _s1, _s2) = hades_permutation(in_1, in_2, _s2); + let in_1 = _s0 + f.w9.limb0.into() + base * f.w9.limb1.into(); + let in_2 = _s1 + f.w9.limb2.into() + base * f.w9.limb3.into(); + let (_s0, _s1, _s2) = hades_permutation(in_1, in_2, _s2); + let in_1 = _s0 + f.w10.limb0.into() + base * f.w10.limb1.into(); + let in_2 = _s1 + f.w10.limb2.into() + base * f.w10.limb3.into(); + let (_s0, _s1, _s2) = hades_permutation(in_1, in_2, _s2); + let in_1 = _s0 + f.w11.limb0.into() + base * f.w11.limb1.into(); + let in_2 = _s1 + f.w11.limb2.into() + base * f.w11.limb3.into(); + let (_s0, _s1, _s2) = hades_permutation(in_1, in_2, _s2); + + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); + let f_of_z: u384 = outputs.get_output(t31); + return (f_of_z, _s0, _s1, _s2); +} diff --git a/src/cairo/src/circuits/dummy.cairo b/src/cairo/src/circuits/dummy.cairo index a52e7ed8..de969261 100644 --- a/src/cairo/src/circuits/dummy.cairo +++ b/src/cairo/src/circuits/dummy.cairo @@ -4,6 +4,7 @@ use core::circuit::{ CircuitModulus, AddInputResultTrait, CircuitInputs, CircuitDefinition, CircuitData, CircuitInputAccumulator }; +use garaga::core::circuit::AddInputResultTrait2; use core::circuit::CircuitElement as CE; use core::circuit::CircuitInput as CI; use garaga::definitions::{ @@ -41,10 +42,7 @@ fn run_DUMMY_circuit(mut input: Array, curve_index: usize) -> Array circuit_inputs = circuit_inputs.next(val); }; - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); let res = array![ outputs.get_output(t0), outputs.get_output(t2), diff --git a/src/cairo/src/circuits/ec.cairo b/src/cairo/src/circuits/ec.cairo index 604ec55d..b0f89ea0 100644 --- a/src/cairo/src/circuits/ec.cairo +++ b/src/cairo/src/circuits/ec.cairo @@ -4,6 +4,7 @@ use core::circuit::{ CircuitModulus, AddInputResultTrait, CircuitInputs, CircuitDefinition, CircuitData, CircuitInputAccumulator }; +use garaga::core::circuit::AddInputResultTrait2; use core::circuit::CircuitElement as CE; use core::circuit::CircuitInput as CI; use garaga::definitions::{ @@ -58,23 +59,20 @@ fn run_ACC_EVAL_POINT_CHALLENGE_SIGNED_circuit( let mut circuit_inputs = (t15,).new_inputs(); // Prefill constants: - circuit_inputs = circuit_inputs.next([0x0, 0x0, 0x0, 0x0]); // in0 + circuit_inputs = circuit_inputs.next_2([0x0, 0x0, 0x0, 0x0]); // in0 // Fill inputs: - circuit_inputs = circuit_inputs.next(acc); // in1 - circuit_inputs = circuit_inputs.next(m); // in2 - circuit_inputs = circuit_inputs.next(b); // in3 - circuit_inputs = circuit_inputs.next(xA); // in4 - circuit_inputs = circuit_inputs.next(p.x); // in5 - circuit_inputs = circuit_inputs.next(p.y); // in6 - circuit_inputs = circuit_inputs.next(ep); // in7 - circuit_inputs = circuit_inputs.next(en); // in8 - circuit_inputs = circuit_inputs.next(sp); // in9 - circuit_inputs = circuit_inputs.next(sn); // in10 - - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + circuit_inputs = circuit_inputs.next_2(acc); // in1 + circuit_inputs = circuit_inputs.next_2(m); // in2 + circuit_inputs = circuit_inputs.next_2(b); // in3 + circuit_inputs = circuit_inputs.next_2(xA); // in4 + circuit_inputs = circuit_inputs.next_2(p.x); // in5 + circuit_inputs = circuit_inputs.next_2(p.y); // in6 + circuit_inputs = circuit_inputs.next_2(ep); // in7 + circuit_inputs = circuit_inputs.next_2(en); // in8 + circuit_inputs = circuit_inputs.next_2(sp); // in9 + circuit_inputs = circuit_inputs.next_2(sn); // in10 + + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); let res_acc: u384 = outputs.get_output(t15); return (res_acc,); } @@ -133,27 +131,24 @@ fn run_ACC_FUNCTION_CHALLENGE_DUPL_circuit( // Prefill constants: // Fill inputs: - circuit_inputs = circuit_inputs.next(f_a0_accs.a_num); // in0 - circuit_inputs = circuit_inputs.next(f_a0_accs.a_den); // in1 - circuit_inputs = circuit_inputs.next(f_a0_accs.b_num); // in2 - circuit_inputs = circuit_inputs.next(f_a0_accs.b_den); // in3 - circuit_inputs = circuit_inputs.next(f_a1_accs.a_num); // in4 - circuit_inputs = circuit_inputs.next(f_a1_accs.a_den); // in5 - circuit_inputs = circuit_inputs.next(f_a1_accs.b_num); // in6 - circuit_inputs = circuit_inputs.next(f_a1_accs.b_den); // in7 - circuit_inputs = circuit_inputs.next(xA0); // in8 - circuit_inputs = circuit_inputs.next(xA2); // in9 - circuit_inputs = circuit_inputs.next(xA0_power); // in10 - circuit_inputs = circuit_inputs.next(xA2_power); // in11 - circuit_inputs = circuit_inputs.next(next_a_num_coeff); // in12 - circuit_inputs = circuit_inputs.next(next_a_den_coeff); // in13 - circuit_inputs = circuit_inputs.next(next_b_num_coeff); // in14 - circuit_inputs = circuit_inputs.next(next_b_den_coeff); // in15 - - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + circuit_inputs = circuit_inputs.next_2(f_a0_accs.a_num); // in0 + circuit_inputs = circuit_inputs.next_2(f_a0_accs.a_den); // in1 + circuit_inputs = circuit_inputs.next_2(f_a0_accs.b_num); // in2 + circuit_inputs = circuit_inputs.next_2(f_a0_accs.b_den); // in3 + circuit_inputs = circuit_inputs.next_2(f_a1_accs.a_num); // in4 + circuit_inputs = circuit_inputs.next_2(f_a1_accs.a_den); // in5 + circuit_inputs = circuit_inputs.next_2(f_a1_accs.b_num); // in6 + circuit_inputs = circuit_inputs.next_2(f_a1_accs.b_den); // in7 + circuit_inputs = circuit_inputs.next_2(xA0); // in8 + circuit_inputs = circuit_inputs.next_2(xA2); // in9 + circuit_inputs = circuit_inputs.next_2(xA0_power); // in10 + circuit_inputs = circuit_inputs.next_2(xA2_power); // in11 + circuit_inputs = circuit_inputs.next_2(next_a_num_coeff); // in12 + circuit_inputs = circuit_inputs.next_2(next_a_den_coeff); // in13 + circuit_inputs = circuit_inputs.next_2(next_b_num_coeff); // in14 + circuit_inputs = circuit_inputs.next_2(next_b_den_coeff); // in15 + + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); let next_f_a0_accs: FunctionFeltEvaluations = FunctionFeltEvaluations { a_num: outputs.get_output(t1), a_den: outputs.get_output(t4), @@ -195,15 +190,12 @@ fn run_ADD_EC_POINT_circuit(p: G1Point, q: G1Point, curve_index: usize) -> (G1Po // Prefill constants: // Fill inputs: - circuit_inputs = circuit_inputs.next(p.x); // in0 - circuit_inputs = circuit_inputs.next(p.y); // in1 - circuit_inputs = circuit_inputs.next(q.x); // in2 - circuit_inputs = circuit_inputs.next(q.y); // in3 - - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + circuit_inputs = circuit_inputs.next_2(p.x); // in0 + circuit_inputs = circuit_inputs.next_2(p.y); // in1 + circuit_inputs = circuit_inputs.next_2(q.x); // in2 + circuit_inputs = circuit_inputs.next_2(q.y); // in3 + + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); let r: G1Point = G1Point { x: outputs.get_output(t6), y: outputs.get_output(t9) }; return (r,); } @@ -234,16 +226,13 @@ fn run_DOUBLE_EC_POINT_circuit(p: G1Point, A_weirstrass: u384, curve_index: usiz let mut circuit_inputs = (t8, t11,).new_inputs(); // Prefill constants: - circuit_inputs = circuit_inputs.next([0x3, 0x0, 0x0, 0x0]); // in0 + circuit_inputs = circuit_inputs.next_2([0x3, 0x0, 0x0, 0x0]); // in0 // Fill inputs: - circuit_inputs = circuit_inputs.next(p.x); // in1 - circuit_inputs = circuit_inputs.next(p.y); // in2 - circuit_inputs = circuit_inputs.next(A_weirstrass); // in3 + circuit_inputs = circuit_inputs.next_2(p.x); // in1 + circuit_inputs = circuit_inputs.next_2(p.y); // in2 + circuit_inputs = circuit_inputs.next_2(A_weirstrass); // in3 - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); let r: G1Point = G1Point { x: outputs.get_output(t8), y: outputs.get_output(t11) }; return (r,); } @@ -337,34 +326,31 @@ fn run_EVAL_FUNCTION_CHALLENGE_DUPL_1P_circuit( // Prefill constants: // Fill inputs: - circuit_inputs = circuit_inputs.next(A0.x); // in0 - circuit_inputs = circuit_inputs.next(A0.y); // in1 - circuit_inputs = circuit_inputs.next(A2.x); // in2 - circuit_inputs = circuit_inputs.next(A2.y); // in3 - circuit_inputs = circuit_inputs.next(coeff0); // in4 - circuit_inputs = circuit_inputs.next(coeff2); // in5 + circuit_inputs = circuit_inputs.next_2(A0.x); // in0 + circuit_inputs = circuit_inputs.next_2(A0.y); // in1 + circuit_inputs = circuit_inputs.next_2(A2.x); // in2 + circuit_inputs = circuit_inputs.next_2(A2.y); // in3 + circuit_inputs = circuit_inputs.next_2(coeff0); // in4 + circuit_inputs = circuit_inputs.next_2(coeff2); // in5 let mut SumDlogDiv_a_num = SumDlogDiv.a_num; while let Option::Some(val) = SumDlogDiv_a_num.pop_front() { - circuit_inputs = circuit_inputs.next(*val); + circuit_inputs = circuit_inputs.next_2(*val); }; let mut SumDlogDiv_a_den = SumDlogDiv.a_den; while let Option::Some(val) = SumDlogDiv_a_den.pop_front() { - circuit_inputs = circuit_inputs.next(*val); + circuit_inputs = circuit_inputs.next_2(*val); }; let mut SumDlogDiv_b_num = SumDlogDiv.b_num; while let Option::Some(val) = SumDlogDiv_b_num.pop_front() { - circuit_inputs = circuit_inputs.next(*val); + circuit_inputs = circuit_inputs.next_2(*val); }; let mut SumDlogDiv_b_den = SumDlogDiv.b_den; while let Option::Some(val) = SumDlogDiv_b_den.pop_front() { - circuit_inputs = circuit_inputs.next(*val); + circuit_inputs = circuit_inputs.next_2(*val); }; // in6 - in19 - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); let res: u384 = outputs.get_output(t62); return (res,); } @@ -477,34 +463,31 @@ fn run_EVAL_FUNCTION_CHALLENGE_DUPL_2P_circuit( // Prefill constants: // Fill inputs: - circuit_inputs = circuit_inputs.next(A0.x); // in0 - circuit_inputs = circuit_inputs.next(A0.y); // in1 - circuit_inputs = circuit_inputs.next(A2.x); // in2 - circuit_inputs = circuit_inputs.next(A2.y); // in3 - circuit_inputs = circuit_inputs.next(coeff0); // in4 - circuit_inputs = circuit_inputs.next(coeff2); // in5 + circuit_inputs = circuit_inputs.next_2(A0.x); // in0 + circuit_inputs = circuit_inputs.next_2(A0.y); // in1 + circuit_inputs = circuit_inputs.next_2(A2.x); // in2 + circuit_inputs = circuit_inputs.next_2(A2.y); // in3 + circuit_inputs = circuit_inputs.next_2(coeff0); // in4 + circuit_inputs = circuit_inputs.next_2(coeff2); // in5 let mut SumDlogDiv_a_num = SumDlogDiv.a_num; while let Option::Some(val) = SumDlogDiv_a_num.pop_front() { - circuit_inputs = circuit_inputs.next(*val); + circuit_inputs = circuit_inputs.next_2(*val); }; let mut SumDlogDiv_a_den = SumDlogDiv.a_den; while let Option::Some(val) = SumDlogDiv_a_den.pop_front() { - circuit_inputs = circuit_inputs.next(*val); + circuit_inputs = circuit_inputs.next_2(*val); }; let mut SumDlogDiv_b_num = SumDlogDiv.b_num; while let Option::Some(val) = SumDlogDiv_b_num.pop_front() { - circuit_inputs = circuit_inputs.next(*val); + circuit_inputs = circuit_inputs.next_2(*val); }; let mut SumDlogDiv_b_den = SumDlogDiv.b_den; while let Option::Some(val) = SumDlogDiv_b_den.pop_front() { - circuit_inputs = circuit_inputs.next(*val); + circuit_inputs = circuit_inputs.next_2(*val); }; // in6 - in23 - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); let res: u384 = outputs.get_output(t80); return (res,); } @@ -637,34 +620,31 @@ fn run_EVAL_FUNCTION_CHALLENGE_DUPL_3P_circuit( // Prefill constants: // Fill inputs: - circuit_inputs = circuit_inputs.next(A0.x); // in0 - circuit_inputs = circuit_inputs.next(A0.y); // in1 - circuit_inputs = circuit_inputs.next(A2.x); // in2 - circuit_inputs = circuit_inputs.next(A2.y); // in3 - circuit_inputs = circuit_inputs.next(coeff0); // in4 - circuit_inputs = circuit_inputs.next(coeff2); // in5 + circuit_inputs = circuit_inputs.next_2(A0.x); // in0 + circuit_inputs = circuit_inputs.next_2(A0.y); // in1 + circuit_inputs = circuit_inputs.next_2(A2.x); // in2 + circuit_inputs = circuit_inputs.next_2(A2.y); // in3 + circuit_inputs = circuit_inputs.next_2(coeff0); // in4 + circuit_inputs = circuit_inputs.next_2(coeff2); // in5 let mut SumDlogDiv_a_num = SumDlogDiv.a_num; while let Option::Some(val) = SumDlogDiv_a_num.pop_front() { - circuit_inputs = circuit_inputs.next(*val); + circuit_inputs = circuit_inputs.next_2(*val); }; let mut SumDlogDiv_a_den = SumDlogDiv.a_den; while let Option::Some(val) = SumDlogDiv_a_den.pop_front() { - circuit_inputs = circuit_inputs.next(*val); + circuit_inputs = circuit_inputs.next_2(*val); }; let mut SumDlogDiv_b_num = SumDlogDiv.b_num; while let Option::Some(val) = SumDlogDiv_b_num.pop_front() { - circuit_inputs = circuit_inputs.next(*val); + circuit_inputs = circuit_inputs.next_2(*val); }; let mut SumDlogDiv_b_den = SumDlogDiv.b_den; while let Option::Some(val) = SumDlogDiv_b_den.pop_front() { - circuit_inputs = circuit_inputs.next(*val); + circuit_inputs = circuit_inputs.next_2(*val); }; // in6 - in27 - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); let res: u384 = outputs.get_output(t98); return (res,); } @@ -816,34 +796,31 @@ fn run_EVAL_FUNCTION_CHALLENGE_DUPL_4P_circuit( // Prefill constants: // Fill inputs: - circuit_inputs = circuit_inputs.next(A0.x); // in0 - circuit_inputs = circuit_inputs.next(A0.y); // in1 - circuit_inputs = circuit_inputs.next(A2.x); // in2 - circuit_inputs = circuit_inputs.next(A2.y); // in3 - circuit_inputs = circuit_inputs.next(coeff0); // in4 - circuit_inputs = circuit_inputs.next(coeff2); // in5 + circuit_inputs = circuit_inputs.next_2(A0.x); // in0 + circuit_inputs = circuit_inputs.next_2(A0.y); // in1 + circuit_inputs = circuit_inputs.next_2(A2.x); // in2 + circuit_inputs = circuit_inputs.next_2(A2.y); // in3 + circuit_inputs = circuit_inputs.next_2(coeff0); // in4 + circuit_inputs = circuit_inputs.next_2(coeff2); // in5 let mut SumDlogDiv_a_num = SumDlogDiv.a_num; while let Option::Some(val) = SumDlogDiv_a_num.pop_front() { - circuit_inputs = circuit_inputs.next(*val); + circuit_inputs = circuit_inputs.next_2(*val); }; let mut SumDlogDiv_a_den = SumDlogDiv.a_den; while let Option::Some(val) = SumDlogDiv_a_den.pop_front() { - circuit_inputs = circuit_inputs.next(*val); + circuit_inputs = circuit_inputs.next_2(*val); }; let mut SumDlogDiv_b_num = SumDlogDiv.b_num; while let Option::Some(val) = SumDlogDiv_b_num.pop_front() { - circuit_inputs = circuit_inputs.next(*val); + circuit_inputs = circuit_inputs.next_2(*val); }; let mut SumDlogDiv_b_den = SumDlogDiv.b_den; while let Option::Some(val) = SumDlogDiv_b_den.pop_front() { - circuit_inputs = circuit_inputs.next(*val); + circuit_inputs = circuit_inputs.next_2(*val); }; // in6 - in31 - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); let res: u384 = outputs.get_output(t116); return (res,); } @@ -887,23 +864,20 @@ fn run_FINALIZE_FN_CHALLENGE_DUPL_circuit( // Prefill constants: // Fill inputs: - circuit_inputs = circuit_inputs.next(f_a0_accs.a_num); // in0 - circuit_inputs = circuit_inputs.next(f_a0_accs.a_den); // in1 - circuit_inputs = circuit_inputs.next(f_a0_accs.b_num); // in2 - circuit_inputs = circuit_inputs.next(f_a0_accs.b_den); // in3 - circuit_inputs = circuit_inputs.next(f_a1_accs.a_num); // in4 - circuit_inputs = circuit_inputs.next(f_a1_accs.a_den); // in5 - circuit_inputs = circuit_inputs.next(f_a1_accs.b_num); // in6 - circuit_inputs = circuit_inputs.next(f_a1_accs.b_den); // in7 - circuit_inputs = circuit_inputs.next(yA0); // in8 - circuit_inputs = circuit_inputs.next(yA2); // in9 - circuit_inputs = circuit_inputs.next(coeff_A0); // in10 - circuit_inputs = circuit_inputs.next(coeff_A2); // in11 - - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + circuit_inputs = circuit_inputs.next_2(f_a0_accs.a_num); // in0 + circuit_inputs = circuit_inputs.next_2(f_a0_accs.a_den); // in1 + circuit_inputs = circuit_inputs.next_2(f_a0_accs.b_num); // in2 + circuit_inputs = circuit_inputs.next_2(f_a0_accs.b_den); // in3 + circuit_inputs = circuit_inputs.next_2(f_a1_accs.a_num); // in4 + circuit_inputs = circuit_inputs.next_2(f_a1_accs.a_den); // in5 + circuit_inputs = circuit_inputs.next_2(f_a1_accs.b_num); // in6 + circuit_inputs = circuit_inputs.next_2(f_a1_accs.b_den); // in7 + circuit_inputs = circuit_inputs.next_2(yA0); // in8 + circuit_inputs = circuit_inputs.next_2(yA2); // in9 + circuit_inputs = circuit_inputs.next_2(coeff_A0); // in10 + circuit_inputs = circuit_inputs.next_2(coeff_A2); // in11 + + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); let res: u384 = outputs.get_output(t14); return (res,); } @@ -1053,30 +1027,27 @@ fn run_INIT_FUNCTION_CHALLENGE_DUPL_5P_circuit( // Prefill constants: // Fill inputs: - circuit_inputs = circuit_inputs.next(xA0); // in0 - circuit_inputs = circuit_inputs.next(xA2); // in1 + circuit_inputs = circuit_inputs.next_2(xA0); // in0 + circuit_inputs = circuit_inputs.next_2(xA2); // in1 let mut SumDlogDiv_a_num = SumDlogDiv.a_num; while let Option::Some(val) = SumDlogDiv_a_num.pop_front() { - circuit_inputs = circuit_inputs.next(*val); + circuit_inputs = circuit_inputs.next_2(*val); }; let mut SumDlogDiv_a_den = SumDlogDiv.a_den; while let Option::Some(val) = SumDlogDiv_a_den.pop_front() { - circuit_inputs = circuit_inputs.next(*val); + circuit_inputs = circuit_inputs.next_2(*val); }; let mut SumDlogDiv_b_num = SumDlogDiv.b_num; while let Option::Some(val) = SumDlogDiv_b_num.pop_front() { - circuit_inputs = circuit_inputs.next(*val); + circuit_inputs = circuit_inputs.next_2(*val); }; let mut SumDlogDiv_b_den = SumDlogDiv.b_den; while let Option::Some(val) = SumDlogDiv_b_den.pop_front() { - circuit_inputs = circuit_inputs.next(*val); + circuit_inputs = circuit_inputs.next_2(*val); }; // in2 - in31 - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); let A0_evals: FunctionFeltEvaluations = FunctionFeltEvaluations { a_num: outputs.get_output(t25), a_den: outputs.get_output(t37), @@ -1141,21 +1112,18 @@ fn run_IS_ON_CURVE_G1_G2_circuit( // Prefill constants: // Fill inputs: - circuit_inputs = circuit_inputs.next(p.x); // in0 - circuit_inputs = circuit_inputs.next(p.y); // in1 - circuit_inputs = circuit_inputs.next(q.x0); // in2 - circuit_inputs = circuit_inputs.next(q.x1); // in3 - circuit_inputs = circuit_inputs.next(q.y0); // in4 - circuit_inputs = circuit_inputs.next(q.y1); // in5 - circuit_inputs = circuit_inputs.next(a); // in6 - circuit_inputs = circuit_inputs.next(b); // in7 - circuit_inputs = circuit_inputs.next(b20); // in8 - circuit_inputs = circuit_inputs.next(b21); // in9 - - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + circuit_inputs = circuit_inputs.next_2(p.x); // in0 + circuit_inputs = circuit_inputs.next_2(p.y); // in1 + circuit_inputs = circuit_inputs.next_2(q.x0); // in2 + circuit_inputs = circuit_inputs.next_2(q.x1); // in3 + circuit_inputs = circuit_inputs.next_2(q.y0); // in4 + circuit_inputs = circuit_inputs.next_2(q.y1); // in5 + circuit_inputs = circuit_inputs.next_2(a); // in6 + circuit_inputs = circuit_inputs.next_2(b); // in7 + circuit_inputs = circuit_inputs.next_2(b20); // in8 + circuit_inputs = circuit_inputs.next_2(b21); // in9 + + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); let zero_check_0: u384 = outputs.get_output(t26); let zero_check_1: u384 = outputs.get_output(t27); let zero_check_2: u384 = outputs.get_output(t28); @@ -1183,15 +1151,12 @@ fn run_IS_ON_CURVE_G1_circuit(p: G1Point, a: u384, b: u384, curve_index: usize) // Prefill constants: // Fill inputs: - circuit_inputs = circuit_inputs.next(p.x); // in0 - circuit_inputs = circuit_inputs.next(p.y); // in1 - circuit_inputs = circuit_inputs.next(a); // in2 - circuit_inputs = circuit_inputs.next(b); // in3 - - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + circuit_inputs = circuit_inputs.next_2(p.x); // in0 + circuit_inputs = circuit_inputs.next_2(p.y); // in1 + circuit_inputs = circuit_inputs.next_2(a); // in2 + circuit_inputs = circuit_inputs.next_2(b); // in3 + + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); let zero_check: u384 = outputs.get_output(t6); return (zero_check,); } @@ -1237,18 +1202,15 @@ fn run_IS_ON_CURVE_G2_circuit( // Prefill constants: // Fill inputs: - circuit_inputs = circuit_inputs.next(p.x0); // in0 - circuit_inputs = circuit_inputs.next(p.x1); // in1 - circuit_inputs = circuit_inputs.next(p.y0); // in2 - circuit_inputs = circuit_inputs.next(p.y1); // in3 - circuit_inputs = circuit_inputs.next(a); // in4 - circuit_inputs = circuit_inputs.next(b20); // in5 - circuit_inputs = circuit_inputs.next(b21); // in6 - - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + circuit_inputs = circuit_inputs.next_2(p.x0); // in0 + circuit_inputs = circuit_inputs.next_2(p.x1); // in1 + circuit_inputs = circuit_inputs.next_2(p.y0); // in2 + circuit_inputs = circuit_inputs.next_2(p.y1); // in3 + circuit_inputs = circuit_inputs.next_2(a); // in4 + circuit_inputs = circuit_inputs.next_2(b20); // in5 + circuit_inputs = circuit_inputs.next_2(b21); // in6 + + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); let zero_check_0: u384 = outputs.get_output(t22); let zero_check_1: u384 = outputs.get_output(t23); return (zero_check_0, zero_check_1); @@ -1279,19 +1241,16 @@ fn run_RHS_FINALIZE_ACC_circuit( let mut circuit_inputs = (t7,).new_inputs(); // Prefill constants: - circuit_inputs = circuit_inputs.next([0x0, 0x0, 0x0, 0x0]); // in0 + circuit_inputs = circuit_inputs.next_2([0x0, 0x0, 0x0, 0x0]); // in0 // Fill inputs: - circuit_inputs = circuit_inputs.next(acc); // in1 - circuit_inputs = circuit_inputs.next(m); // in2 - circuit_inputs = circuit_inputs.next(b); // in3 - circuit_inputs = circuit_inputs.next(xA); // in4 - circuit_inputs = circuit_inputs.next(Q_result.x); // in5 - circuit_inputs = circuit_inputs.next(Q_result.y); // in6 - - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + circuit_inputs = circuit_inputs.next_2(acc); // in1 + circuit_inputs = circuit_inputs.next_2(m); // in2 + circuit_inputs = circuit_inputs.next_2(b); // in3 + circuit_inputs = circuit_inputs.next_2(xA); // in4 + circuit_inputs = circuit_inputs.next_2(Q_result.x); // in5 + circuit_inputs = circuit_inputs.next_2(Q_result.y); // in6 + + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); let rhs: u384 = outputs.get_output(t7); return (rhs,); } @@ -1345,17 +1304,14 @@ fn run_SLOPE_INTERCEPT_SAME_POINT_circuit( let mut circuit_inputs = (t5, t7, t10, t14, t31, t29,).new_inputs(); // Prefill constants: - circuit_inputs = circuit_inputs.next([0x3, 0x0, 0x0, 0x0]); // in0 - circuit_inputs = circuit_inputs.next([0x0, 0x0, 0x0, 0x0]); // in1 + circuit_inputs = circuit_inputs.next_2([0x3, 0x0, 0x0, 0x0]); // in0 + circuit_inputs = circuit_inputs.next_2([0x0, 0x0, 0x0, 0x0]); // in1 // Fill inputs: - circuit_inputs = circuit_inputs.next(p.x); // in2 - circuit_inputs = circuit_inputs.next(p.y); // in3 - circuit_inputs = circuit_inputs.next(a); // in4 + circuit_inputs = circuit_inputs.next_2(p.x); // in2 + circuit_inputs = circuit_inputs.next_2(p.y); // in3 + circuit_inputs = circuit_inputs.next_2(a); // in4 - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); let mb: SlopeInterceptOutput = SlopeInterceptOutput { m_A0: outputs.get_output(t5), b_A0: outputs.get_output(t7), diff --git a/src/cairo/src/circuits/extf_mul.cairo b/src/cairo/src/circuits/extf_mul.cairo index 288d2ea9..7556ba2b 100644 --- a/src/cairo/src/circuits/extf_mul.cairo +++ b/src/cairo/src/circuits/extf_mul.cairo @@ -4,6 +4,7 @@ use core::circuit::{ CircuitModulus, AddInputResultTrait, CircuitInputs, CircuitDefinition, CircuitData, CircuitInputAccumulator }; +use garaga::core::circuit::AddInputResultTrait2; use core::circuit::CircuitElement as CE; use core::circuit::CircuitInput as CI; use garaga::definitions::{ @@ -13,6 +14,80 @@ use garaga::definitions::{ use garaga::ec_ops::{SlopeInterceptOutput, FunctionFeltEvaluations, FunctionFelt}; use core::option::Option; +fn run_BLS12_381_EVAL_E12D_circuit(f: E12D, z: u384) -> (u384,) { + // INPUT stack + let (in0, in1, in2) = (CE::> {}, CE::> {}, CE::> {}); + let (in3, in4, in5) = (CE::> {}, CE::> {}, CE::> {}); + let (in6, in7, in8) = (CE::> {}, CE::> {}, CE::> {}); + let (in9, in10, in11) = (CE::> {}, CE::> {}, CE::> {}); + let in12 = CE::> {}; + let t0 = circuit_mul(in12, in12); // Compute z^2 + let t1 = circuit_mul(t0, in12); // Compute z^3 + let t2 = circuit_mul(t1, in12); // Compute z^4 + let t3 = circuit_mul(t2, in12); // Compute z^5 + let t4 = circuit_mul(t3, in12); // Compute z^6 + let t5 = circuit_mul(t4, in12); // Compute z^7 + let t6 = circuit_mul(t5, in12); // Compute z^8 + let t7 = circuit_mul(t6, in12); // Compute z^9 + let t8 = circuit_mul(t7, in12); // Compute z^10 + let t9 = circuit_mul(t8, in12); // Compute z^11 + let t10 = circuit_mul(in1, in12); // Eval X step coeff_1 * z^1 + let t11 = circuit_add(in0, t10); // Eval X step + (coeff_1 * z^1) + let t12 = circuit_mul(in2, t0); // Eval X step coeff_2 * z^2 + let t13 = circuit_add(t11, t12); // Eval X step + (coeff_2 * z^2) + let t14 = circuit_mul(in3, t1); // Eval X step coeff_3 * z^3 + let t15 = circuit_add(t13, t14); // Eval X step + (coeff_3 * z^3) + let t16 = circuit_mul(in4, t2); // Eval X step coeff_4 * z^4 + let t17 = circuit_add(t15, t16); // Eval X step + (coeff_4 * z^4) + let t18 = circuit_mul(in5, t3); // Eval X step coeff_5 * z^5 + let t19 = circuit_add(t17, t18); // Eval X step + (coeff_5 * z^5) + let t20 = circuit_mul(in6, t4); // Eval X step coeff_6 * z^6 + let t21 = circuit_add(t19, t20); // Eval X step + (coeff_6 * z^6) + let t22 = circuit_mul(in7, t5); // Eval X step coeff_7 * z^7 + let t23 = circuit_add(t21, t22); // Eval X step + (coeff_7 * z^7) + let t24 = circuit_mul(in8, t6); // Eval X step coeff_8 * z^8 + let t25 = circuit_add(t23, t24); // Eval X step + (coeff_8 * z^8) + let t26 = circuit_mul(in9, t7); // Eval X step coeff_9 * z^9 + let t27 = circuit_add(t25, t26); // Eval X step + (coeff_9 * z^9) + let t28 = circuit_mul(in10, t8); // Eval X step coeff_10 * z^10 + let t29 = circuit_add(t27, t28); // Eval X step + (coeff_10 * z^10) + let t30 = circuit_mul(in11, t9); // Eval X step coeff_11 * z^11 + let t31 = circuit_add(t29, t30); // Eval X step + (coeff_11 * z^11) + + let modulus = TryInto::< + _, CircuitModulus + >::try_into( + [ + 0xb153ffffb9feffffffffaaab, + 0x6730d2a0f6b0f6241eabfffe, + 0x434bacd764774b84f38512bf, + 0x1a0111ea397fe69a4b1ba7b6 + ] + ) + .unwrap(); // BLS12_381 prime field modulus + + let mut circuit_inputs = (t31,).new_inputs(); + // Prefill constants: + + // Fill inputs: + circuit_inputs = circuit_inputs.next_2(f.w0); // in0 + circuit_inputs = circuit_inputs.next_2(f.w1); // in1 + circuit_inputs = circuit_inputs.next_2(f.w2); // in2 + circuit_inputs = circuit_inputs.next_2(f.w3); // in3 + circuit_inputs = circuit_inputs.next_2(f.w4); // in4 + circuit_inputs = circuit_inputs.next_2(f.w5); // in5 + circuit_inputs = circuit_inputs.next_2(f.w6); // in6 + circuit_inputs = circuit_inputs.next_2(f.w7); // in7 + circuit_inputs = circuit_inputs.next_2(f.w8); // in8 + circuit_inputs = circuit_inputs.next_2(f.w9); // in9 + circuit_inputs = circuit_inputs.next_2(f.w10); // in10 + circuit_inputs = circuit_inputs.next_2(f.w11); // in11 + circuit_inputs = circuit_inputs.next_2(z); // in12 + + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); + let f_of_z: u384 = outputs.get_output(t31); + return (f_of_z,); +} fn run_BLS12_381_FP12_MUL_ASSERT_ONE_circuit( X: E12D, Y: E12D, Q: E12DMulQuotient, z: u384 ) -> (u384,) { @@ -131,9 +206,9 @@ fn run_BLS12_381_FP12_MUL_ASSERT_ONE_circuit( let mut circuit_inputs = (t81,).new_inputs(); // Prefill constants: - circuit_inputs = circuit_inputs.next([0x2, 0x0, 0x0, 0x0]); // in0 + circuit_inputs = circuit_inputs.next_2([0x2, 0x0, 0x0, 0x0]); // in0 circuit_inputs = circuit_inputs - .next( + .next_2( [ 0xb153ffffb9feffffffffaaa9, 0x6730d2a0f6b0f6241eabfffe, @@ -141,52 +216,116 @@ fn run_BLS12_381_FP12_MUL_ASSERT_ONE_circuit( 0x1a0111ea397fe69a4b1ba7b6 ] ); // in1 - circuit_inputs = circuit_inputs.next([0x1, 0x0, 0x0, 0x0]); // in2 + circuit_inputs = circuit_inputs.next_2([0x1, 0x0, 0x0, 0x0]); // in2 // Fill inputs: - circuit_inputs = circuit_inputs.next(X.w0); // in3 - circuit_inputs = circuit_inputs.next(X.w1); // in4 - circuit_inputs = circuit_inputs.next(X.w2); // in5 - circuit_inputs = circuit_inputs.next(X.w3); // in6 - circuit_inputs = circuit_inputs.next(X.w4); // in7 - circuit_inputs = circuit_inputs.next(X.w5); // in8 - circuit_inputs = circuit_inputs.next(X.w6); // in9 - circuit_inputs = circuit_inputs.next(X.w7); // in10 - circuit_inputs = circuit_inputs.next(X.w8); // in11 - circuit_inputs = circuit_inputs.next(X.w9); // in12 - circuit_inputs = circuit_inputs.next(X.w10); // in13 - circuit_inputs = circuit_inputs.next(X.w11); // in14 - circuit_inputs = circuit_inputs.next(Y.w0); // in15 - circuit_inputs = circuit_inputs.next(Y.w1); // in16 - circuit_inputs = circuit_inputs.next(Y.w2); // in17 - circuit_inputs = circuit_inputs.next(Y.w3); // in18 - circuit_inputs = circuit_inputs.next(Y.w4); // in19 - circuit_inputs = circuit_inputs.next(Y.w5); // in20 - circuit_inputs = circuit_inputs.next(Y.w6); // in21 - circuit_inputs = circuit_inputs.next(Y.w7); // in22 - circuit_inputs = circuit_inputs.next(Y.w8); // in23 - circuit_inputs = circuit_inputs.next(Y.w9); // in24 - circuit_inputs = circuit_inputs.next(Y.w10); // in25 - circuit_inputs = circuit_inputs.next(Y.w11); // in26 - circuit_inputs = circuit_inputs.next(Q.w0); // in27 - circuit_inputs = circuit_inputs.next(Q.w1); // in28 - circuit_inputs = circuit_inputs.next(Q.w2); // in29 - circuit_inputs = circuit_inputs.next(Q.w3); // in30 - circuit_inputs = circuit_inputs.next(Q.w4); // in31 - circuit_inputs = circuit_inputs.next(Q.w5); // in32 - circuit_inputs = circuit_inputs.next(Q.w6); // in33 - circuit_inputs = circuit_inputs.next(Q.w7); // in34 - circuit_inputs = circuit_inputs.next(Q.w8); // in35 - circuit_inputs = circuit_inputs.next(Q.w9); // in36 - circuit_inputs = circuit_inputs.next(Q.w10); // in37 - circuit_inputs = circuit_inputs.next(z); // in38 + circuit_inputs = circuit_inputs.next_2(X.w0); // in3 + circuit_inputs = circuit_inputs.next_2(X.w1); // in4 + circuit_inputs = circuit_inputs.next_2(X.w2); // in5 + circuit_inputs = circuit_inputs.next_2(X.w3); // in6 + circuit_inputs = circuit_inputs.next_2(X.w4); // in7 + circuit_inputs = circuit_inputs.next_2(X.w5); // in8 + circuit_inputs = circuit_inputs.next_2(X.w6); // in9 + circuit_inputs = circuit_inputs.next_2(X.w7); // in10 + circuit_inputs = circuit_inputs.next_2(X.w8); // in11 + circuit_inputs = circuit_inputs.next_2(X.w9); // in12 + circuit_inputs = circuit_inputs.next_2(X.w10); // in13 + circuit_inputs = circuit_inputs.next_2(X.w11); // in14 + circuit_inputs = circuit_inputs.next_2(Y.w0); // in15 + circuit_inputs = circuit_inputs.next_2(Y.w1); // in16 + circuit_inputs = circuit_inputs.next_2(Y.w2); // in17 + circuit_inputs = circuit_inputs.next_2(Y.w3); // in18 + circuit_inputs = circuit_inputs.next_2(Y.w4); // in19 + circuit_inputs = circuit_inputs.next_2(Y.w5); // in20 + circuit_inputs = circuit_inputs.next_2(Y.w6); // in21 + circuit_inputs = circuit_inputs.next_2(Y.w7); // in22 + circuit_inputs = circuit_inputs.next_2(Y.w8); // in23 + circuit_inputs = circuit_inputs.next_2(Y.w9); // in24 + circuit_inputs = circuit_inputs.next_2(Y.w10); // in25 + circuit_inputs = circuit_inputs.next_2(Y.w11); // in26 + circuit_inputs = circuit_inputs.next_2(Q.w0); // in27 + circuit_inputs = circuit_inputs.next_2(Q.w1); // in28 + circuit_inputs = circuit_inputs.next_2(Q.w2); // in29 + circuit_inputs = circuit_inputs.next_2(Q.w3); // in30 + circuit_inputs = circuit_inputs.next_2(Q.w4); // in31 + circuit_inputs = circuit_inputs.next_2(Q.w5); // in32 + circuit_inputs = circuit_inputs.next_2(Q.w6); // in33 + circuit_inputs = circuit_inputs.next_2(Q.w7); // in34 + circuit_inputs = circuit_inputs.next_2(Q.w8); // in35 + circuit_inputs = circuit_inputs.next_2(Q.w9); // in36 + circuit_inputs = circuit_inputs.next_2(Q.w10); // in37 + circuit_inputs = circuit_inputs.next_2(z); // in38 - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); let check: u384 = outputs.get_output(t81); return (check,); } +fn run_BN254_EVAL_E12D_circuit(f: E12D, z: u384) -> (u384,) { + // INPUT stack + let (in0, in1, in2) = (CE::> {}, CE::> {}, CE::> {}); + let (in3, in4, in5) = (CE::> {}, CE::> {}, CE::> {}); + let (in6, in7, in8) = (CE::> {}, CE::> {}, CE::> {}); + let (in9, in10, in11) = (CE::> {}, CE::> {}, CE::> {}); + let in12 = CE::> {}; + let t0 = circuit_mul(in12, in12); // Compute z^2 + let t1 = circuit_mul(t0, in12); // Compute z^3 + let t2 = circuit_mul(t1, in12); // Compute z^4 + let t3 = circuit_mul(t2, in12); // Compute z^5 + let t4 = circuit_mul(t3, in12); // Compute z^6 + let t5 = circuit_mul(t4, in12); // Compute z^7 + let t6 = circuit_mul(t5, in12); // Compute z^8 + let t7 = circuit_mul(t6, in12); // Compute z^9 + let t8 = circuit_mul(t7, in12); // Compute z^10 + let t9 = circuit_mul(t8, in12); // Compute z^11 + let t10 = circuit_mul(in1, in12); // Eval X step coeff_1 * z^1 + let t11 = circuit_add(in0, t10); // Eval X step + (coeff_1 * z^1) + let t12 = circuit_mul(in2, t0); // Eval X step coeff_2 * z^2 + let t13 = circuit_add(t11, t12); // Eval X step + (coeff_2 * z^2) + let t14 = circuit_mul(in3, t1); // Eval X step coeff_3 * z^3 + let t15 = circuit_add(t13, t14); // Eval X step + (coeff_3 * z^3) + let t16 = circuit_mul(in4, t2); // Eval X step coeff_4 * z^4 + let t17 = circuit_add(t15, t16); // Eval X step + (coeff_4 * z^4) + let t18 = circuit_mul(in5, t3); // Eval X step coeff_5 * z^5 + let t19 = circuit_add(t17, t18); // Eval X step + (coeff_5 * z^5) + let t20 = circuit_mul(in6, t4); // Eval X step coeff_6 * z^6 + let t21 = circuit_add(t19, t20); // Eval X step + (coeff_6 * z^6) + let t22 = circuit_mul(in7, t5); // Eval X step coeff_7 * z^7 + let t23 = circuit_add(t21, t22); // Eval X step + (coeff_7 * z^7) + let t24 = circuit_mul(in8, t6); // Eval X step coeff_8 * z^8 + let t25 = circuit_add(t23, t24); // Eval X step + (coeff_8 * z^8) + let t26 = circuit_mul(in9, t7); // Eval X step coeff_9 * z^9 + let t27 = circuit_add(t25, t26); // Eval X step + (coeff_9 * z^9) + let t28 = circuit_mul(in10, t8); // Eval X step coeff_10 * z^10 + let t29 = circuit_add(t27, t28); // Eval X step + (coeff_10 * z^10) + let t30 = circuit_mul(in11, t9); // Eval X step coeff_11 * z^11 + let t31 = circuit_add(t29, t30); // Eval X step + (coeff_11 * z^11) + + let modulus = TryInto::< + _, CircuitModulus + >::try_into([0x6871ca8d3c208c16d87cfd47, 0xb85045b68181585d97816a91, 0x30644e72e131a029, 0x0]) + .unwrap(); // BN254 prime field modulus + + let mut circuit_inputs = (t31,).new_inputs(); + // Prefill constants: + + // Fill inputs: + circuit_inputs = circuit_inputs.next_2(f.w0); // in0 + circuit_inputs = circuit_inputs.next_2(f.w1); // in1 + circuit_inputs = circuit_inputs.next_2(f.w2); // in2 + circuit_inputs = circuit_inputs.next_2(f.w3); // in3 + circuit_inputs = circuit_inputs.next_2(f.w4); // in4 + circuit_inputs = circuit_inputs.next_2(f.w5); // in5 + circuit_inputs = circuit_inputs.next_2(f.w6); // in6 + circuit_inputs = circuit_inputs.next_2(f.w7); // in7 + circuit_inputs = circuit_inputs.next_2(f.w8); // in8 + circuit_inputs = circuit_inputs.next_2(f.w9); // in9 + circuit_inputs = circuit_inputs.next_2(f.w10); // in10 + circuit_inputs = circuit_inputs.next_2(f.w11); // in11 + circuit_inputs = circuit_inputs.next_2(z); // in12 + + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); + let f_of_z: u384 = outputs.get_output(t31); + return (f_of_z,); +} fn run_BN254_FP12_MUL_ASSERT_ONE_circuit(X: E12D, Y: E12D, Q: E12DMulQuotient, z: u384) -> (u384,) { // CONSTANT stack let in0 = CE::> {}; // 0x52 @@ -296,54 +435,51 @@ fn run_BN254_FP12_MUL_ASSERT_ONE_circuit(X: E12D, Y: E12D, Q: E12DMulQuotient, z let mut circuit_inputs = (t81,).new_inputs(); // Prefill constants: - circuit_inputs = circuit_inputs.next([0x52, 0x0, 0x0, 0x0]); // in0 + circuit_inputs = circuit_inputs.next_2([0x52, 0x0, 0x0, 0x0]); // in0 circuit_inputs = circuit_inputs - .next( + .next_2( [0x6871ca8d3c208c16d87cfd35, 0xb85045b68181585d97816a91, 0x30644e72e131a029, 0x0] ); // in1 - circuit_inputs = circuit_inputs.next([0x1, 0x0, 0x0, 0x0]); // in2 + circuit_inputs = circuit_inputs.next_2([0x1, 0x0, 0x0, 0x0]); // in2 // Fill inputs: - circuit_inputs = circuit_inputs.next(X.w0); // in3 - circuit_inputs = circuit_inputs.next(X.w1); // in4 - circuit_inputs = circuit_inputs.next(X.w2); // in5 - circuit_inputs = circuit_inputs.next(X.w3); // in6 - circuit_inputs = circuit_inputs.next(X.w4); // in7 - circuit_inputs = circuit_inputs.next(X.w5); // in8 - circuit_inputs = circuit_inputs.next(X.w6); // in9 - circuit_inputs = circuit_inputs.next(X.w7); // in10 - circuit_inputs = circuit_inputs.next(X.w8); // in11 - circuit_inputs = circuit_inputs.next(X.w9); // in12 - circuit_inputs = circuit_inputs.next(X.w10); // in13 - circuit_inputs = circuit_inputs.next(X.w11); // in14 - circuit_inputs = circuit_inputs.next(Y.w0); // in15 - circuit_inputs = circuit_inputs.next(Y.w1); // in16 - circuit_inputs = circuit_inputs.next(Y.w2); // in17 - circuit_inputs = circuit_inputs.next(Y.w3); // in18 - circuit_inputs = circuit_inputs.next(Y.w4); // in19 - circuit_inputs = circuit_inputs.next(Y.w5); // in20 - circuit_inputs = circuit_inputs.next(Y.w6); // in21 - circuit_inputs = circuit_inputs.next(Y.w7); // in22 - circuit_inputs = circuit_inputs.next(Y.w8); // in23 - circuit_inputs = circuit_inputs.next(Y.w9); // in24 - circuit_inputs = circuit_inputs.next(Y.w10); // in25 - circuit_inputs = circuit_inputs.next(Y.w11); // in26 - circuit_inputs = circuit_inputs.next(Q.w0); // in27 - circuit_inputs = circuit_inputs.next(Q.w1); // in28 - circuit_inputs = circuit_inputs.next(Q.w2); // in29 - circuit_inputs = circuit_inputs.next(Q.w3); // in30 - circuit_inputs = circuit_inputs.next(Q.w4); // in31 - circuit_inputs = circuit_inputs.next(Q.w5); // in32 - circuit_inputs = circuit_inputs.next(Q.w6); // in33 - circuit_inputs = circuit_inputs.next(Q.w7); // in34 - circuit_inputs = circuit_inputs.next(Q.w8); // in35 - circuit_inputs = circuit_inputs.next(Q.w9); // in36 - circuit_inputs = circuit_inputs.next(Q.w10); // in37 - circuit_inputs = circuit_inputs.next(z); // in38 + circuit_inputs = circuit_inputs.next_2(X.w0); // in3 + circuit_inputs = circuit_inputs.next_2(X.w1); // in4 + circuit_inputs = circuit_inputs.next_2(X.w2); // in5 + circuit_inputs = circuit_inputs.next_2(X.w3); // in6 + circuit_inputs = circuit_inputs.next_2(X.w4); // in7 + circuit_inputs = circuit_inputs.next_2(X.w5); // in8 + circuit_inputs = circuit_inputs.next_2(X.w6); // in9 + circuit_inputs = circuit_inputs.next_2(X.w7); // in10 + circuit_inputs = circuit_inputs.next_2(X.w8); // in11 + circuit_inputs = circuit_inputs.next_2(X.w9); // in12 + circuit_inputs = circuit_inputs.next_2(X.w10); // in13 + circuit_inputs = circuit_inputs.next_2(X.w11); // in14 + circuit_inputs = circuit_inputs.next_2(Y.w0); // in15 + circuit_inputs = circuit_inputs.next_2(Y.w1); // in16 + circuit_inputs = circuit_inputs.next_2(Y.w2); // in17 + circuit_inputs = circuit_inputs.next_2(Y.w3); // in18 + circuit_inputs = circuit_inputs.next_2(Y.w4); // in19 + circuit_inputs = circuit_inputs.next_2(Y.w5); // in20 + circuit_inputs = circuit_inputs.next_2(Y.w6); // in21 + circuit_inputs = circuit_inputs.next_2(Y.w7); // in22 + circuit_inputs = circuit_inputs.next_2(Y.w8); // in23 + circuit_inputs = circuit_inputs.next_2(Y.w9); // in24 + circuit_inputs = circuit_inputs.next_2(Y.w10); // in25 + circuit_inputs = circuit_inputs.next_2(Y.w11); // in26 + circuit_inputs = circuit_inputs.next_2(Q.w0); // in27 + circuit_inputs = circuit_inputs.next_2(Q.w1); // in28 + circuit_inputs = circuit_inputs.next_2(Q.w2); // in29 + circuit_inputs = circuit_inputs.next_2(Q.w3); // in30 + circuit_inputs = circuit_inputs.next_2(Q.w4); // in31 + circuit_inputs = circuit_inputs.next_2(Q.w5); // in32 + circuit_inputs = circuit_inputs.next_2(Q.w6); // in33 + circuit_inputs = circuit_inputs.next_2(Q.w7); // in34 + circuit_inputs = circuit_inputs.next_2(Q.w8); // in35 + circuit_inputs = circuit_inputs.next_2(Q.w9); // in36 + circuit_inputs = circuit_inputs.next_2(Q.w10); // in37 + circuit_inputs = circuit_inputs.next_2(z); // in38 - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); let check: u384 = outputs.get_output(t81); return (check,); } @@ -363,5 +499,8 @@ mod tests { }; use garaga::ec_ops::{SlopeInterceptOutput, FunctionFeltEvaluations, FunctionFelt}; - use super::{run_BLS12_381_FP12_MUL_ASSERT_ONE_circuit, run_BN254_FP12_MUL_ASSERT_ONE_circuit}; + use super::{ + run_BLS12_381_EVAL_E12D_circuit, run_BLS12_381_FP12_MUL_ASSERT_ONE_circuit, + run_BN254_EVAL_E12D_circuit, run_BN254_FP12_MUL_ASSERT_ONE_circuit + }; } diff --git a/src/cairo/src/circuits/multi_pairing_check.cairo b/src/cairo/src/circuits/multi_pairing_check.cairo index 1e97c766..6e8718c0 100644 --- a/src/cairo/src/circuits/multi_pairing_check.cairo +++ b/src/cairo/src/circuits/multi_pairing_check.cairo @@ -4,6 +4,7 @@ use core::circuit::{ CircuitModulus, AddInputResultTrait, CircuitInputs, CircuitDefinition, CircuitData, CircuitInputAccumulator }; +use garaga::core::circuit::AddInputResultTrait2; use core::circuit::CircuitElement as CE; use core::circuit::CircuitInput as CI; use garaga::definitions::{ @@ -24,10 +25,10 @@ fn run_BLS12_381_MP_CHECK_BIT00_2P_2F_circuit( G2_line_2nd_0_1: G2Line, lhs_i: u384, f_i_of_z: u384, - f_i_plus_one: E12D, + f_i_plus_one_of_z: u384, z: u384, ci: u384 -) -> (u384, u384, u384) { +) -> (u384, u384) { // INPUT stack let (in0, in1, in2) = (CE::> {}, CE::> {}, CE::> {}); let (in3, in4, in5) = (CE::> {}, CE::> {}, CE::> {}); @@ -37,106 +38,75 @@ fn run_BLS12_381_MP_CHECK_BIT00_2P_2F_circuit( let (in15, in16, in17) = (CE::> {}, CE::> {}, CE::> {}); let (in18, in19, in20) = (CE::> {}, CE::> {}, CE::> {}); let (in21, in22, in23) = (CE::> {}, CE::> {}, CE::> {}); - let (in24, in25, in26) = (CE::> {}, CE::> {}, CE::> {}); - let (in27, in28, in29) = (CE::> {}, CE::> {}, CE::> {}); - let (in30, in31, in32) = (CE::> {}, CE::> {}, CE::> {}); - let (in33, in34, in35) = (CE::> {}, CE::> {}, CE::> {}); - let t0 = circuit_mul(in34, in34); // Compute z^2 - let t1 = circuit_mul(t0, in34); // Compute z^3 - let t2 = circuit_mul(t1, in34); // Compute z^4 - let t3 = circuit_mul(t2, in34); // Compute z^5 - let t4 = circuit_mul(t3, in34); // Compute z^6 - let t5 = circuit_mul(t4, in34); // Compute z^7 - let t6 = circuit_mul(t5, in34); // Compute z^8 - let t7 = circuit_mul(t6, in34); // Compute z^9 - let t8 = circuit_mul(t7, in34); // Compute z^10 - let t9 = circuit_mul(t8, in34); // Compute z^11 - let t10 = circuit_mul(in35, in35); // Compute c_i = (c_(i-1))^2 - let t11 = circuit_mul(in21, in21); // Square f evaluation in Z, the result of previous bit. - let t12 = circuit_sub(in4, in5); - let t13 = circuit_mul(t12, in0); // eval bls line by yInv - let t14 = circuit_sub(in2, in3); - let t15 = circuit_mul(t14, in1); // eval blsline by xNegOverY - let t16 = circuit_mul(in5, in0); // eval bls line by yInv - let t17 = circuit_mul(in3, in1); // eval bls line by xNegOverY - let t18 = circuit_mul(t15, t0); // Eval sparse poly line_0p_1 step coeff_2 * z^2 - let t19 = circuit_add(t13, t18); // Eval sparse poly line_0p_1 step + coeff_2 * z^2 - let t20 = circuit_add(t19, t1); // Eval sparse poly line_0p_1 step + 1*z^3 - let t21 = circuit_mul(t16, t4); // Eval sparse poly line_0p_1 step coeff_6 * z^6 - let t22 = circuit_add(t20, t21); // Eval sparse poly line_0p_1 step + coeff_6 * z^6 - let t23 = circuit_mul(t17, t6); // Eval sparse poly line_0p_1 step coeff_8 * z^8 - let t24 = circuit_add(t22, t23); // Eval sparse poly line_0p_1 step + coeff_8 * z^8 - let t25 = circuit_mul(t11, t24); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) - let t26 = circuit_sub(in8, in9); - let t27 = circuit_mul(t26, in10); // eval bls line by yInv - let t28 = circuit_sub(in6, in7); - let t29 = circuit_mul(t28, in11); // eval blsline by xNegOverY - let t30 = circuit_mul(in9, in10); // eval bls line by yInv - let t31 = circuit_mul(in7, in11); // eval bls line by xNegOverY - let t32 = circuit_mul(t29, t0); // Eval sparse poly line_1p_1 step coeff_2 * z^2 - let t33 = circuit_add(t27, t32); // Eval sparse poly line_1p_1 step + coeff_2 * z^2 - let t34 = circuit_add(t33, t1); // Eval sparse poly line_1p_1 step + 1*z^3 - let t35 = circuit_mul(t30, t4); // Eval sparse poly line_1p_1 step coeff_6 * z^6 - let t36 = circuit_add(t34, t35); // Eval sparse poly line_1p_1 step + coeff_6 * z^6 - let t37 = circuit_mul(t31, t6); // Eval sparse poly line_1p_1 step coeff_8 * z^8 - let t38 = circuit_add(t36, t37); // Eval sparse poly line_1p_1 step + coeff_8 * z^8 - let t39 = circuit_mul(t25, t38); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) - let t40 = circuit_mul( - t39, t39 + let in24 = CE::> {}; + let t0 = circuit_mul(in23, in23); // compute z^2 + let t1 = circuit_mul(t0, in23); // compute z^3 + let t2 = circuit_mul(t1, t1); // compute z^6 + let t3 = circuit_mul(t2, t0); // compute z^8 + let t4 = circuit_mul(in24, in24); // Compute c_i = (c_(i-1))^2 + let t5 = circuit_mul(in21, in21); // Square f evaluation in Z, the result of previous bit. + let t6 = circuit_sub(in4, in5); + let t7 = circuit_mul(t6, in0); // eval bls line by yInv + let t8 = circuit_sub(in2, in3); + let t9 = circuit_mul(t8, in1); // eval blsline by xNegOverY + let t10 = circuit_mul(in5, in0); // eval bls line by yInv + let t11 = circuit_mul(in3, in1); // eval bls line by xNegOverY + let t12 = circuit_mul(t9, t0); // Eval sparse poly line_0p_1 step coeff_2 * z^2 + let t13 = circuit_add(t7, t12); // Eval sparse poly line_0p_1 step + coeff_2 * z^2 + let t14 = circuit_add(t13, t1); // Eval sparse poly line_0p_1 step + 1*z^3 + let t15 = circuit_mul(t10, t2); // Eval sparse poly line_0p_1 step coeff_6 * z^6 + let t16 = circuit_add(t14, t15); // Eval sparse poly line_0p_1 step + coeff_6 * z^6 + let t17 = circuit_mul(t11, t3); // Eval sparse poly line_0p_1 step coeff_8 * z^8 + let t18 = circuit_add(t16, t17); // Eval sparse poly line_0p_1 step + coeff_8 * z^8 + let t19 = circuit_mul(t5, t18); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) + let t20 = circuit_sub(in8, in9); + let t21 = circuit_mul(t20, in10); // eval bls line by yInv + let t22 = circuit_sub(in6, in7); + let t23 = circuit_mul(t22, in11); // eval blsline by xNegOverY + let t24 = circuit_mul(in9, in10); // eval bls line by yInv + let t25 = circuit_mul(in7, in11); // eval bls line by xNegOverY + let t26 = circuit_mul(t23, t0); // Eval sparse poly line_1p_1 step coeff_2 * z^2 + let t27 = circuit_add(t21, t26); // Eval sparse poly line_1p_1 step + coeff_2 * z^2 + let t28 = circuit_add(t27, t1); // Eval sparse poly line_1p_1 step + 1*z^3 + let t29 = circuit_mul(t24, t2); // Eval sparse poly line_1p_1 step coeff_6 * z^6 + let t30 = circuit_add(t28, t29); // Eval sparse poly line_1p_1 step + coeff_6 * z^6 + let t31 = circuit_mul(t25, t3); // Eval sparse poly line_1p_1 step coeff_8 * z^8 + let t32 = circuit_add(t30, t31); // Eval sparse poly line_1p_1 step + coeff_8 * z^8 + let t33 = circuit_mul(t19, t32); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) + let t34 = circuit_mul( + t33, t33 ); // Compute (f^2 * 螤(i,k) (line_i,k(z))) ^ 2 = f^4 * (螤(i,k) (line_i,k(z)))^2 - let t41 = circuit_sub(in14, in15); - let t42 = circuit_mul(t41, in0); // eval bls line by yInv - let t43 = circuit_sub(in12, in13); - let t44 = circuit_mul(t43, in1); // eval blsline by xNegOverY - let t45 = circuit_mul(in15, in0); // eval bls line by yInv - let t46 = circuit_mul(in13, in1); // eval bls line by xNegOverY - let t47 = circuit_mul(t44, t0); // Eval sparse poly line_0p_1 step coeff_2 * z^2 - let t48 = circuit_add(t42, t47); // Eval sparse poly line_0p_1 step + coeff_2 * z^2 - let t49 = circuit_add(t48, t1); // Eval sparse poly line_0p_1 step + 1*z^3 - let t50 = circuit_mul(t45, t4); // Eval sparse poly line_0p_1 step coeff_6 * z^6 - let t51 = circuit_add(t49, t50); // Eval sparse poly line_0p_1 step + coeff_6 * z^6 - let t52 = circuit_mul(t46, t6); // Eval sparse poly line_0p_1 step coeff_8 * z^8 - let t53 = circuit_add(t51, t52); // Eval sparse poly line_0p_1 step + coeff_8 * z^8 - let t54 = circuit_mul(t40, t53); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) - let t55 = circuit_sub(in18, in19); - let t56 = circuit_mul(t55, in10); // eval bls line by yInv - let t57 = circuit_sub(in16, in17); - let t58 = circuit_mul(t57, in11); // eval blsline by xNegOverY - let t59 = circuit_mul(in19, in10); // eval bls line by yInv - let t60 = circuit_mul(in17, in11); // eval bls line by xNegOverY - let t61 = circuit_mul(t58, t0); // Eval sparse poly line_1p_1 step coeff_2 * z^2 - let t62 = circuit_add(t56, t61); // Eval sparse poly line_1p_1 step + coeff_2 * z^2 - let t63 = circuit_add(t62, t1); // Eval sparse poly line_1p_1 step + 1*z^3 - let t64 = circuit_mul(t59, t4); // Eval sparse poly line_1p_1 step coeff_6 * z^6 - let t65 = circuit_add(t63, t64); // Eval sparse poly line_1p_1 step + coeff_6 * z^6 - let t66 = circuit_mul(t60, t6); // Eval sparse poly line_1p_1 step coeff_8 * z^8 - let t67 = circuit_add(t65, t66); // Eval sparse poly line_1p_1 step + coeff_8 * z^8 - let t68 = circuit_mul(t54, t67); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) - let t69 = circuit_mul(in23, in34); // Eval f_i+1 step coeff_1 * z^1 - let t70 = circuit_add(in22, t69); // Eval f_i+1 step + (coeff_1 * z^1) - let t71 = circuit_mul(in24, t0); // Eval f_i+1 step coeff_2 * z^2 - let t72 = circuit_add(t70, t71); // Eval f_i+1 step + (coeff_2 * z^2) - let t73 = circuit_mul(in25, t1); // Eval f_i+1 step coeff_3 * z^3 - let t74 = circuit_add(t72, t73); // Eval f_i+1 step + (coeff_3 * z^3) - let t75 = circuit_mul(in26, t2); // Eval f_i+1 step coeff_4 * z^4 - let t76 = circuit_add(t74, t75); // Eval f_i+1 step + (coeff_4 * z^4) - let t77 = circuit_mul(in27, t3); // Eval f_i+1 step coeff_5 * z^5 - let t78 = circuit_add(t76, t77); // Eval f_i+1 step + (coeff_5 * z^5) - let t79 = circuit_mul(in28, t4); // Eval f_i+1 step coeff_6 * z^6 - let t80 = circuit_add(t78, t79); // Eval f_i+1 step + (coeff_6 * z^6) - let t81 = circuit_mul(in29, t5); // Eval f_i+1 step coeff_7 * z^7 - let t82 = circuit_add(t80, t81); // Eval f_i+1 step + (coeff_7 * z^7) - let t83 = circuit_mul(in30, t6); // Eval f_i+1 step coeff_8 * z^8 - let t84 = circuit_add(t82, t83); // Eval f_i+1 step + (coeff_8 * z^8) - let t85 = circuit_mul(in31, t7); // Eval f_i+1 step coeff_9 * z^9 - let t86 = circuit_add(t84, t85); // Eval f_i+1 step + (coeff_9 * z^9) - let t87 = circuit_mul(in32, t8); // Eval f_i+1 step coeff_10 * z^10 - let t88 = circuit_add(t86, t87); // Eval f_i+1 step + (coeff_10 * z^10) - let t89 = circuit_mul(in33, t9); // Eval f_i+1 step coeff_11 * z^11 - let t90 = circuit_add(t88, t89); // Eval f_i+1 step + (coeff_11 * z^11) - let t91 = circuit_sub(t68, t90); // (螤(i,k) (Pk(z))) - Ri(z) - let t92 = circuit_mul(t10, t91); // ci * ((螤(i,k) (Pk(z)) - Ri(z)) - let t93 = circuit_add(in20, t92); // LHS = LHS + ci * ((螤(i,k) (Pk(z)) - Ri(z)) + let t35 = circuit_sub(in14, in15); + let t36 = circuit_mul(t35, in0); // eval bls line by yInv + let t37 = circuit_sub(in12, in13); + let t38 = circuit_mul(t37, in1); // eval blsline by xNegOverY + let t39 = circuit_mul(in15, in0); // eval bls line by yInv + let t40 = circuit_mul(in13, in1); // eval bls line by xNegOverY + let t41 = circuit_mul(t38, t0); // Eval sparse poly line_0p_1 step coeff_2 * z^2 + let t42 = circuit_add(t36, t41); // Eval sparse poly line_0p_1 step + coeff_2 * z^2 + let t43 = circuit_add(t42, t1); // Eval sparse poly line_0p_1 step + 1*z^3 + let t44 = circuit_mul(t39, t2); // Eval sparse poly line_0p_1 step coeff_6 * z^6 + let t45 = circuit_add(t43, t44); // Eval sparse poly line_0p_1 step + coeff_6 * z^6 + let t46 = circuit_mul(t40, t3); // Eval sparse poly line_0p_1 step coeff_8 * z^8 + let t47 = circuit_add(t45, t46); // Eval sparse poly line_0p_1 step + coeff_8 * z^8 + let t48 = circuit_mul(t34, t47); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) + let t49 = circuit_sub(in18, in19); + let t50 = circuit_mul(t49, in10); // eval bls line by yInv + let t51 = circuit_sub(in16, in17); + let t52 = circuit_mul(t51, in11); // eval blsline by xNegOverY + let t53 = circuit_mul(in19, in10); // eval bls line by yInv + let t54 = circuit_mul(in17, in11); // eval bls line by xNegOverY + let t55 = circuit_mul(t52, t0); // Eval sparse poly line_1p_1 step coeff_2 * z^2 + let t56 = circuit_add(t50, t55); // Eval sparse poly line_1p_1 step + coeff_2 * z^2 + let t57 = circuit_add(t56, t1); // Eval sparse poly line_1p_1 step + 1*z^3 + let t58 = circuit_mul(t53, t2); // Eval sparse poly line_1p_1 step coeff_6 * z^6 + let t59 = circuit_add(t57, t58); // Eval sparse poly line_1p_1 step + coeff_6 * z^6 + let t60 = circuit_mul(t54, t3); // Eval sparse poly line_1p_1 step coeff_8 * z^8 + let t61 = circuit_add(t59, t60); // Eval sparse poly line_1p_1 step + coeff_8 * z^8 + let t62 = circuit_mul(t48, t61); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) + let t63 = circuit_sub(t62, in22); // (螤(i,k) (Pk(z))) - Ri(z) + let t64 = circuit_mul(t4, t63); // ci * ((螤(i,k) (Pk(z)) - Ri(z)) + let t65 = circuit_add(in20, t64); // LHS = LHS + ci * ((螤(i,k) (Pk(z)) - Ri(z)) let modulus = TryInto::< _, CircuitModulus @@ -150,55 +120,40 @@ fn run_BLS12_381_MP_CHECK_BIT00_2P_2F_circuit( ) .unwrap(); // BLS12_381 prime field modulus - let mut circuit_inputs = (t90, t93, t10,).new_inputs(); + let mut circuit_inputs = (t65, t4,).new_inputs(); // Prefill constants: // Fill inputs: - circuit_inputs = circuit_inputs.next(yInv_0); // in0 - circuit_inputs = circuit_inputs.next(xNegOverY_0); // in1 - circuit_inputs = circuit_inputs.next(G2_line_0.r0a0); // in2 - circuit_inputs = circuit_inputs.next(G2_line_0.r0a1); // in3 - circuit_inputs = circuit_inputs.next(G2_line_0.r1a0); // in4 - circuit_inputs = circuit_inputs.next(G2_line_0.r1a1); // in5 - circuit_inputs = circuit_inputs.next(G2_line_2nd_0_0.r0a0); // in6 - circuit_inputs = circuit_inputs.next(G2_line_2nd_0_0.r0a1); // in7 - circuit_inputs = circuit_inputs.next(G2_line_2nd_0_0.r1a0); // in8 - circuit_inputs = circuit_inputs.next(G2_line_2nd_0_0.r1a1); // in9 - circuit_inputs = circuit_inputs.next(yInv_1); // in10 - circuit_inputs = circuit_inputs.next(xNegOverY_1); // in11 - circuit_inputs = circuit_inputs.next(G2_line_1.r0a0); // in12 - circuit_inputs = circuit_inputs.next(G2_line_1.r0a1); // in13 - circuit_inputs = circuit_inputs.next(G2_line_1.r1a0); // in14 - circuit_inputs = circuit_inputs.next(G2_line_1.r1a1); // in15 - circuit_inputs = circuit_inputs.next(G2_line_2nd_0_1.r0a0); // in16 - circuit_inputs = circuit_inputs.next(G2_line_2nd_0_1.r0a1); // in17 - circuit_inputs = circuit_inputs.next(G2_line_2nd_0_1.r1a0); // in18 - circuit_inputs = circuit_inputs.next(G2_line_2nd_0_1.r1a1); // in19 - circuit_inputs = circuit_inputs.next(lhs_i); // in20 - circuit_inputs = circuit_inputs.next(f_i_of_z); // in21 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w0); // in22 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w1); // in23 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w2); // in24 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w3); // in25 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w4); // in26 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w5); // in27 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w6); // in28 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w7); // in29 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w8); // in30 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w9); // in31 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w10); // in32 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w11); // in33 - circuit_inputs = circuit_inputs.next(z); // in34 - circuit_inputs = circuit_inputs.next(ci); // in35 + circuit_inputs = circuit_inputs.next_2(yInv_0); // in0 + circuit_inputs = circuit_inputs.next_2(xNegOverY_0); // in1 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r0a0); // in2 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r0a1); // in3 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r1a0); // in4 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r1a1); // in5 + circuit_inputs = circuit_inputs.next_2(G2_line_2nd_0_0.r0a0); // in6 + circuit_inputs = circuit_inputs.next_2(G2_line_2nd_0_0.r0a1); // in7 + circuit_inputs = circuit_inputs.next_2(G2_line_2nd_0_0.r1a0); // in8 + circuit_inputs = circuit_inputs.next_2(G2_line_2nd_0_0.r1a1); // in9 + circuit_inputs = circuit_inputs.next_2(yInv_1); // in10 + circuit_inputs = circuit_inputs.next_2(xNegOverY_1); // in11 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r0a0); // in12 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r0a1); // in13 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r1a0); // in14 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r1a1); // in15 + circuit_inputs = circuit_inputs.next_2(G2_line_2nd_0_1.r0a0); // in16 + circuit_inputs = circuit_inputs.next_2(G2_line_2nd_0_1.r0a1); // in17 + circuit_inputs = circuit_inputs.next_2(G2_line_2nd_0_1.r1a0); // in18 + circuit_inputs = circuit_inputs.next_2(G2_line_2nd_0_1.r1a1); // in19 + circuit_inputs = circuit_inputs.next_2(lhs_i); // in20 + circuit_inputs = circuit_inputs.next_2(f_i_of_z); // in21 + circuit_inputs = circuit_inputs.next_2(f_i_plus_one_of_z); // in22 + circuit_inputs = circuit_inputs.next_2(z); // in23 + circuit_inputs = circuit_inputs.next_2(ci); // in24 - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; - let f_i_plus_one_of_z: u384 = outputs.get_output(t90); - let lhs_i_plus_one: u384 = outputs.get_output(t93); - let ci_plus_one: u384 = outputs.get_output(t10); - return (f_i_plus_one_of_z, lhs_i_plus_one, ci_plus_one); + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); + let lhs_i_plus_one: u384 = outputs.get_output(t65); + let ci_plus_one: u384 = outputs.get_output(t4); + return (lhs_i_plus_one, ci_plus_one); } fn run_BLS12_381_MP_CHECK_BIT00_3P_2F_circuit( yInv_0: u384, @@ -214,10 +169,10 @@ fn run_BLS12_381_MP_CHECK_BIT00_3P_2F_circuit( Q_2: G2Point, lhs_i: u384, f_i_of_z: u384, - f_i_plus_one: E12D, + f_i_plus_one_of_z: u384, z: u384, ci: u384 -) -> (G2Point, u384, u384, u384) { +) -> (G2Point, u384, u384) { // CONSTANT stack let in0 = CE::> {}; // 0x3 let in1 = CE::> {}; // 0x6 @@ -234,230 +189,199 @@ fn run_BLS12_381_MP_CHECK_BIT00_3P_2F_circuit( let (in24, in25, in26) = (CE::> {}, CE::> {}, CE::> {}); let (in27, in28, in29) = (CE::> {}, CE::> {}, CE::> {}); let (in30, in31, in32) = (CE::> {}, CE::> {}, CE::> {}); - let (in33, in34, in35) = (CE::> {}, CE::> {}, CE::> {}); - let (in36, in37, in38) = (CE::> {}, CE::> {}, CE::> {}); - let (in39, in40, in41) = (CE::> {}, CE::> {}, CE::> {}); - let (in42, in43, in44) = (CE::> {}, CE::> {}, CE::> {}); - let t0 = circuit_mul(in43, in43); // Compute z^2 - let t1 = circuit_mul(t0, in43); // Compute z^3 - let t2 = circuit_mul(t1, in43); // Compute z^4 - let t3 = circuit_mul(t2, in43); // Compute z^5 - let t4 = circuit_mul(t3, in43); // Compute z^6 - let t5 = circuit_mul(t4, in43); // Compute z^7 - let t6 = circuit_mul(t5, in43); // Compute z^8 - let t7 = circuit_mul(t6, in43); // Compute z^9 - let t8 = circuit_mul(t7, in43); // Compute z^10 - let t9 = circuit_mul(t8, in43); // Compute z^11 - let t10 = circuit_mul(in44, in44); // Compute c_i = (c_(i-1))^2 - let t11 = circuit_mul(in30, in30); // Square f evaluation in Z, the result of previous bit. - let t12 = circuit_sub(in7, in8); - let t13 = circuit_mul(t12, in3); // eval bls line by yInv - let t14 = circuit_sub(in5, in6); - let t15 = circuit_mul(t14, in4); // eval blsline by xNegOverY - let t16 = circuit_mul(in8, in3); // eval bls line by yInv - let t17 = circuit_mul(in6, in4); // eval bls line by xNegOverY - let t18 = circuit_mul(t15, t0); // Eval sparse poly line_0p_1 step coeff_2 * z^2 - let t19 = circuit_add(t13, t18); // Eval sparse poly line_0p_1 step + coeff_2 * z^2 - let t20 = circuit_add(t19, t1); // Eval sparse poly line_0p_1 step + 1*z^3 - let t21 = circuit_mul(t16, t4); // Eval sparse poly line_0p_1 step coeff_6 * z^6 - let t22 = circuit_add(t20, t21); // Eval sparse poly line_0p_1 step + coeff_6 * z^6 - let t23 = circuit_mul(t17, t6); // Eval sparse poly line_0p_1 step coeff_8 * z^8 - let t24 = circuit_add(t22, t23); // Eval sparse poly line_0p_1 step + coeff_8 * z^8 - let t25 = circuit_mul(t11, t24); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) - let t26 = circuit_sub(in11, in12); - let t27 = circuit_mul(t26, in13); // eval bls line by yInv - let t28 = circuit_sub(in9, in10); - let t29 = circuit_mul(t28, in14); // eval blsline by xNegOverY - let t30 = circuit_mul(in12, in13); // eval bls line by yInv - let t31 = circuit_mul(in10, in14); // eval bls line by xNegOverY - let t32 = circuit_mul(t29, t0); // Eval sparse poly line_1p_1 step coeff_2 * z^2 - let t33 = circuit_add(t27, t32); // Eval sparse poly line_1p_1 step + coeff_2 * z^2 - let t34 = circuit_add(t33, t1); // Eval sparse poly line_1p_1 step + 1*z^3 - let t35 = circuit_mul(t30, t4); // Eval sparse poly line_1p_1 step coeff_6 * z^6 - let t36 = circuit_add(t34, t35); // Eval sparse poly line_1p_1 step + coeff_6 * z^6 - let t37 = circuit_mul(t31, t6); // Eval sparse poly line_1p_1 step coeff_8 * z^8 - let t38 = circuit_add(t36, t37); // Eval sparse poly line_1p_1 step + coeff_8 * z^8 - let t39 = circuit_mul(t25, t38); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) - let t40 = circuit_add(in25, in26); // Doubling slope numerator start - let t41 = circuit_sub(in25, in26); - let t42 = circuit_mul(t40, t41); - let t43 = circuit_mul(in25, in26); - let t44 = circuit_mul(t42, in0); - let t45 = circuit_mul(t43, in1); // Doubling slope numerator end - let t46 = circuit_add(in27, in27); // Fp2 add coeff 0/1 - let t47 = circuit_add(in28, in28); // Fp2 add coeff 1/1 - let t48 = circuit_mul(t46, t46); // Fp2 Div x/y start : Fp2 Inv y start - let t49 = circuit_mul(t47, t47); - let t50 = circuit_add(t48, t49); - let t51 = circuit_inverse(t50); - let t52 = circuit_mul(t46, t51); // Fp2 Inv y real part end - let t53 = circuit_mul(t47, t51); - let t54 = circuit_sub(in2, t53); // Fp2 Inv y imag part end - let t55 = circuit_mul(t44, t52); // Fp2 mul start - let t56 = circuit_mul(t45, t54); - let t57 = circuit_sub(t55, t56); // Fp2 mul real part end - let t58 = circuit_mul(t44, t54); - let t59 = circuit_mul(t45, t52); - let t60 = circuit_add(t58, t59); // Fp2 mul imag part end - let t61 = circuit_add(t57, t60); - let t62 = circuit_sub(t57, t60); - let t63 = circuit_mul(t61, t62); - let t64 = circuit_mul(t57, t60); - let t65 = circuit_add(t64, t64); - let t66 = circuit_add(in25, in25); // Fp2 add coeff 0/1 - let t67 = circuit_add(in26, in26); // Fp2 add coeff 1/1 - let t68 = circuit_sub(t63, t66); // Fp2 sub coeff 0/1 - let t69 = circuit_sub(t65, t67); // Fp2 sub coeff 1/1 - let t70 = circuit_sub(in25, t68); // Fp2 sub coeff 0/1 - let t71 = circuit_sub(in26, t69); // Fp2 sub coeff 1/1 - let t72 = circuit_mul(t57, t70); // Fp2 mul start - let t73 = circuit_mul(t60, t71); - let t74 = circuit_sub(t72, t73); // Fp2 mul real part end - let t75 = circuit_mul(t57, t71); - let t76 = circuit_mul(t60, t70); - let t77 = circuit_add(t75, t76); // Fp2 mul imag part end - let t78 = circuit_sub(t74, in27); // Fp2 sub coeff 0/1 - let t79 = circuit_sub(t77, in28); // Fp2 sub coeff 1/1 - let t80 = circuit_mul(t57, in25); // Fp2 mul start - let t81 = circuit_mul(t60, in26); - let t82 = circuit_sub(t80, t81); // Fp2 mul real part end - let t83 = circuit_mul(t57, in26); - let t84 = circuit_mul(t60, in25); - let t85 = circuit_add(t83, t84); // Fp2 mul imag part end - let t86 = circuit_sub(t82, in27); // Fp2 sub coeff 0/1 - let t87 = circuit_sub(t85, in28); // Fp2 sub coeff 1/1 - let t88 = circuit_sub(t86, t87); - let t89 = circuit_mul(t88, in23); // eval bls line by yInv - let t90 = circuit_sub(t57, t60); - let t91 = circuit_mul(t90, in24); // eval blsline by xNegOverY - let t92 = circuit_mul(t87, in23); // eval bls line by yInv - let t93 = circuit_mul(t60, in24); // eval bls line by xNegOverY - let t94 = circuit_mul(t91, t0); // Eval sparse poly line_2p_1 step coeff_2 * z^2 - let t95 = circuit_add(t89, t94); // Eval sparse poly line_2p_1 step + coeff_2 * z^2 - let t96 = circuit_add(t95, t1); // Eval sparse poly line_2p_1 step + 1*z^3 - let t97 = circuit_mul(t92, t4); // Eval sparse poly line_2p_1 step coeff_6 * z^6 - let t98 = circuit_add(t96, t97); // Eval sparse poly line_2p_1 step + coeff_6 * z^6 - let t99 = circuit_mul(t93, t6); // Eval sparse poly line_2p_1 step coeff_8 * z^8 - let t100 = circuit_add(t98, t99); // Eval sparse poly line_2p_1 step + coeff_8 * z^8 - let t101 = circuit_mul(t39, t100); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_2(z) - let t102 = circuit_mul( - t101, t101 + let in33 = CE::> {}; + let t0 = circuit_mul(in32, in32); // compute z^2 + let t1 = circuit_mul(t0, in32); // compute z^3 + let t2 = circuit_mul(t1, t1); // compute z^6 + let t3 = circuit_mul(t2, t0); // compute z^8 + let t4 = circuit_mul(in33, in33); // Compute c_i = (c_(i-1))^2 + let t5 = circuit_mul(in30, in30); // Square f evaluation in Z, the result of previous bit. + let t6 = circuit_sub(in7, in8); + let t7 = circuit_mul(t6, in3); // eval bls line by yInv + let t8 = circuit_sub(in5, in6); + let t9 = circuit_mul(t8, in4); // eval blsline by xNegOverY + let t10 = circuit_mul(in8, in3); // eval bls line by yInv + let t11 = circuit_mul(in6, in4); // eval bls line by xNegOverY + let t12 = circuit_mul(t9, t0); // Eval sparse poly line_0p_1 step coeff_2 * z^2 + let t13 = circuit_add(t7, t12); // Eval sparse poly line_0p_1 step + coeff_2 * z^2 + let t14 = circuit_add(t13, t1); // Eval sparse poly line_0p_1 step + 1*z^3 + let t15 = circuit_mul(t10, t2); // Eval sparse poly line_0p_1 step coeff_6 * z^6 + let t16 = circuit_add(t14, t15); // Eval sparse poly line_0p_1 step + coeff_6 * z^6 + let t17 = circuit_mul(t11, t3); // Eval sparse poly line_0p_1 step coeff_8 * z^8 + let t18 = circuit_add(t16, t17); // Eval sparse poly line_0p_1 step + coeff_8 * z^8 + let t19 = circuit_mul(t5, t18); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) + let t20 = circuit_sub(in11, in12); + let t21 = circuit_mul(t20, in13); // eval bls line by yInv + let t22 = circuit_sub(in9, in10); + let t23 = circuit_mul(t22, in14); // eval blsline by xNegOverY + let t24 = circuit_mul(in12, in13); // eval bls line by yInv + let t25 = circuit_mul(in10, in14); // eval bls line by xNegOverY + let t26 = circuit_mul(t23, t0); // Eval sparse poly line_1p_1 step coeff_2 * z^2 + let t27 = circuit_add(t21, t26); // Eval sparse poly line_1p_1 step + coeff_2 * z^2 + let t28 = circuit_add(t27, t1); // Eval sparse poly line_1p_1 step + 1*z^3 + let t29 = circuit_mul(t24, t2); // Eval sparse poly line_1p_1 step coeff_6 * z^6 + let t30 = circuit_add(t28, t29); // Eval sparse poly line_1p_1 step + coeff_6 * z^6 + let t31 = circuit_mul(t25, t3); // Eval sparse poly line_1p_1 step coeff_8 * z^8 + let t32 = circuit_add(t30, t31); // Eval sparse poly line_1p_1 step + coeff_8 * z^8 + let t33 = circuit_mul(t19, t32); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) + let t34 = circuit_add(in25, in26); // Doubling slope numerator start + let t35 = circuit_sub(in25, in26); + let t36 = circuit_mul(t34, t35); + let t37 = circuit_mul(in25, in26); + let t38 = circuit_mul(t36, in0); + let t39 = circuit_mul(t37, in1); // Doubling slope numerator end + let t40 = circuit_add(in27, in27); // Fp2 add coeff 0/1 + let t41 = circuit_add(in28, in28); // Fp2 add coeff 1/1 + let t42 = circuit_mul(t40, t40); // Fp2 Div x/y start : Fp2 Inv y start + let t43 = circuit_mul(t41, t41); + let t44 = circuit_add(t42, t43); + let t45 = circuit_inverse(t44); + let t46 = circuit_mul(t40, t45); // Fp2 Inv y real part end + let t47 = circuit_mul(t41, t45); + let t48 = circuit_sub(in2, t47); // Fp2 Inv y imag part end + let t49 = circuit_mul(t38, t46); // Fp2 mul start + let t50 = circuit_mul(t39, t48); + let t51 = circuit_sub(t49, t50); // Fp2 mul real part end + let t52 = circuit_mul(t38, t48); + let t53 = circuit_mul(t39, t46); + let t54 = circuit_add(t52, t53); // Fp2 mul imag part end + let t55 = circuit_add(t51, t54); + let t56 = circuit_sub(t51, t54); + let t57 = circuit_mul(t55, t56); + let t58 = circuit_mul(t51, t54); + let t59 = circuit_add(t58, t58); + let t60 = circuit_add(in25, in25); // Fp2 add coeff 0/1 + let t61 = circuit_add(in26, in26); // Fp2 add coeff 1/1 + let t62 = circuit_sub(t57, t60); // Fp2 sub coeff 0/1 + let t63 = circuit_sub(t59, t61); // Fp2 sub coeff 1/1 + let t64 = circuit_sub(in25, t62); // Fp2 sub coeff 0/1 + let t65 = circuit_sub(in26, t63); // Fp2 sub coeff 1/1 + let t66 = circuit_mul(t51, t64); // Fp2 mul start + let t67 = circuit_mul(t54, t65); + let t68 = circuit_sub(t66, t67); // Fp2 mul real part end + let t69 = circuit_mul(t51, t65); + let t70 = circuit_mul(t54, t64); + let t71 = circuit_add(t69, t70); // Fp2 mul imag part end + let t72 = circuit_sub(t68, in27); // Fp2 sub coeff 0/1 + let t73 = circuit_sub(t71, in28); // Fp2 sub coeff 1/1 + let t74 = circuit_mul(t51, in25); // Fp2 mul start + let t75 = circuit_mul(t54, in26); + let t76 = circuit_sub(t74, t75); // Fp2 mul real part end + let t77 = circuit_mul(t51, in26); + let t78 = circuit_mul(t54, in25); + let t79 = circuit_add(t77, t78); // Fp2 mul imag part end + let t80 = circuit_sub(t76, in27); // Fp2 sub coeff 0/1 + let t81 = circuit_sub(t79, in28); // Fp2 sub coeff 1/1 + let t82 = circuit_sub(t80, t81); + let t83 = circuit_mul(t82, in23); // eval bls line by yInv + let t84 = circuit_sub(t51, t54); + let t85 = circuit_mul(t84, in24); // eval blsline by xNegOverY + let t86 = circuit_mul(t81, in23); // eval bls line by yInv + let t87 = circuit_mul(t54, in24); // eval bls line by xNegOverY + let t88 = circuit_mul(t85, t0); // Eval sparse poly line_2p_1 step coeff_2 * z^2 + let t89 = circuit_add(t83, t88); // Eval sparse poly line_2p_1 step + coeff_2 * z^2 + let t90 = circuit_add(t89, t1); // Eval sparse poly line_2p_1 step + 1*z^3 + let t91 = circuit_mul(t86, t2); // Eval sparse poly line_2p_1 step coeff_6 * z^6 + let t92 = circuit_add(t90, t91); // Eval sparse poly line_2p_1 step + coeff_6 * z^6 + let t93 = circuit_mul(t87, t3); // Eval sparse poly line_2p_1 step coeff_8 * z^8 + let t94 = circuit_add(t92, t93); // Eval sparse poly line_2p_1 step + coeff_8 * z^8 + let t95 = circuit_mul(t33, t94); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_2(z) + let t96 = circuit_mul( + t95, t95 ); // Compute (f^2 * 螤(i,k) (line_i,k(z))) ^ 2 = f^4 * (螤(i,k) (line_i,k(z)))^2 - let t103 = circuit_sub(in17, in18); - let t104 = circuit_mul(t103, in3); // eval bls line by yInv - let t105 = circuit_sub(in15, in16); - let t106 = circuit_mul(t105, in4); // eval blsline by xNegOverY - let t107 = circuit_mul(in18, in3); // eval bls line by yInv - let t108 = circuit_mul(in16, in4); // eval bls line by xNegOverY - let t109 = circuit_mul(t106, t0); // Eval sparse poly line_0p_1 step coeff_2 * z^2 - let t110 = circuit_add(t104, t109); // Eval sparse poly line_0p_1 step + coeff_2 * z^2 - let t111 = circuit_add(t110, t1); // Eval sparse poly line_0p_1 step + 1*z^3 - let t112 = circuit_mul(t107, t4); // Eval sparse poly line_0p_1 step coeff_6 * z^6 - let t113 = circuit_add(t111, t112); // Eval sparse poly line_0p_1 step + coeff_6 * z^6 - let t114 = circuit_mul(t108, t6); // Eval sparse poly line_0p_1 step coeff_8 * z^8 - let t115 = circuit_add(t113, t114); // Eval sparse poly line_0p_1 step + coeff_8 * z^8 - let t116 = circuit_mul(t102, t115); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) - let t117 = circuit_sub(in21, in22); - let t118 = circuit_mul(t117, in13); // eval bls line by yInv - let t119 = circuit_sub(in19, in20); - let t120 = circuit_mul(t119, in14); // eval blsline by xNegOverY - let t121 = circuit_mul(in22, in13); // eval bls line by yInv - let t122 = circuit_mul(in20, in14); // eval bls line by xNegOverY - let t123 = circuit_mul(t120, t0); // Eval sparse poly line_1p_1 step coeff_2 * z^2 - let t124 = circuit_add(t118, t123); // Eval sparse poly line_1p_1 step + coeff_2 * z^2 - let t125 = circuit_add(t124, t1); // Eval sparse poly line_1p_1 step + 1*z^3 - let t126 = circuit_mul(t121, t4); // Eval sparse poly line_1p_1 step coeff_6 * z^6 - let t127 = circuit_add(t125, t126); // Eval sparse poly line_1p_1 step + coeff_6 * z^6 - let t128 = circuit_mul(t122, t6); // Eval sparse poly line_1p_1 step coeff_8 * z^8 - let t129 = circuit_add(t127, t128); // Eval sparse poly line_1p_1 step + coeff_8 * z^8 - let t130 = circuit_mul(t116, t129); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) - let t131 = circuit_add(t68, t69); // Doubling slope numerator start - let t132 = circuit_sub(t68, t69); - let t133 = circuit_mul(t131, t132); - let t134 = circuit_mul(t68, t69); - let t135 = circuit_mul(t133, in0); - let t136 = circuit_mul(t134, in1); // Doubling slope numerator end - let t137 = circuit_add(t78, t78); // Fp2 add coeff 0/1 - let t138 = circuit_add(t79, t79); // Fp2 add coeff 1/1 - let t139 = circuit_mul(t137, t137); // Fp2 Div x/y start : Fp2 Inv y start - let t140 = circuit_mul(t138, t138); - let t141 = circuit_add(t139, t140); - let t142 = circuit_inverse(t141); - let t143 = circuit_mul(t137, t142); // Fp2 Inv y real part end - let t144 = circuit_mul(t138, t142); - let t145 = circuit_sub(in2, t144); // Fp2 Inv y imag part end - let t146 = circuit_mul(t135, t143); // Fp2 mul start - let t147 = circuit_mul(t136, t145); - let t148 = circuit_sub(t146, t147); // Fp2 mul real part end - let t149 = circuit_mul(t135, t145); - let t150 = circuit_mul(t136, t143); - let t151 = circuit_add(t149, t150); // Fp2 mul imag part end - let t152 = circuit_add(t148, t151); - let t153 = circuit_sub(t148, t151); - let t154 = circuit_mul(t152, t153); - let t155 = circuit_mul(t148, t151); - let t156 = circuit_add(t155, t155); - let t157 = circuit_add(t68, t68); // Fp2 add coeff 0/1 - let t158 = circuit_add(t69, t69); // Fp2 add coeff 1/1 - let t159 = circuit_sub(t154, t157); // Fp2 sub coeff 0/1 - let t160 = circuit_sub(t156, t158); // Fp2 sub coeff 1/1 - let t161 = circuit_sub(t68, t159); // Fp2 sub coeff 0/1 - let t162 = circuit_sub(t69, t160); // Fp2 sub coeff 1/1 - let t163 = circuit_mul(t148, t161); // Fp2 mul start - let t164 = circuit_mul(t151, t162); - let t165 = circuit_sub(t163, t164); // Fp2 mul real part end - let t166 = circuit_mul(t148, t162); - let t167 = circuit_mul(t151, t161); - let t168 = circuit_add(t166, t167); // Fp2 mul imag part end - let t169 = circuit_sub(t165, t78); // Fp2 sub coeff 0/1 - let t170 = circuit_sub(t168, t79); // Fp2 sub coeff 1/1 - let t171 = circuit_mul(t148, t68); // Fp2 mul start - let t172 = circuit_mul(t151, t69); - let t173 = circuit_sub(t171, t172); // Fp2 mul real part end - let t174 = circuit_mul(t148, t69); - let t175 = circuit_mul(t151, t68); - let t176 = circuit_add(t174, t175); // Fp2 mul imag part end - let t177 = circuit_sub(t173, t78); // Fp2 sub coeff 0/1 - let t178 = circuit_sub(t176, t79); // Fp2 sub coeff 1/1 - let t179 = circuit_sub(t177, t178); - let t180 = circuit_mul(t179, in23); // eval bls line by yInv - let t181 = circuit_sub(t148, t151); - let t182 = circuit_mul(t181, in24); // eval blsline by xNegOverY - let t183 = circuit_mul(t178, in23); // eval bls line by yInv - let t184 = circuit_mul(t151, in24); // eval bls line by xNegOverY - let t185 = circuit_mul(t182, t0); // Eval sparse poly line_2p_1 step coeff_2 * z^2 - let t186 = circuit_add(t180, t185); // Eval sparse poly line_2p_1 step + coeff_2 * z^2 - let t187 = circuit_add(t186, t1); // Eval sparse poly line_2p_1 step + 1*z^3 - let t188 = circuit_mul(t183, t4); // Eval sparse poly line_2p_1 step coeff_6 * z^6 - let t189 = circuit_add(t187, t188); // Eval sparse poly line_2p_1 step + coeff_6 * z^6 - let t190 = circuit_mul(t184, t6); // Eval sparse poly line_2p_1 step coeff_8 * z^8 - let t191 = circuit_add(t189, t190); // Eval sparse poly line_2p_1 step + coeff_8 * z^8 - let t192 = circuit_mul(t130, t191); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_2(z) - let t193 = circuit_mul(in32, in43); // Eval f_i+1 step coeff_1 * z^1 - let t194 = circuit_add(in31, t193); // Eval f_i+1 step + (coeff_1 * z^1) - let t195 = circuit_mul(in33, t0); // Eval f_i+1 step coeff_2 * z^2 - let t196 = circuit_add(t194, t195); // Eval f_i+1 step + (coeff_2 * z^2) - let t197 = circuit_mul(in34, t1); // Eval f_i+1 step coeff_3 * z^3 - let t198 = circuit_add(t196, t197); // Eval f_i+1 step + (coeff_3 * z^3) - let t199 = circuit_mul(in35, t2); // Eval f_i+1 step coeff_4 * z^4 - let t200 = circuit_add(t198, t199); // Eval f_i+1 step + (coeff_4 * z^4) - let t201 = circuit_mul(in36, t3); // Eval f_i+1 step coeff_5 * z^5 - let t202 = circuit_add(t200, t201); // Eval f_i+1 step + (coeff_5 * z^5) - let t203 = circuit_mul(in37, t4); // Eval f_i+1 step coeff_6 * z^6 - let t204 = circuit_add(t202, t203); // Eval f_i+1 step + (coeff_6 * z^6) - let t205 = circuit_mul(in38, t5); // Eval f_i+1 step coeff_7 * z^7 - let t206 = circuit_add(t204, t205); // Eval f_i+1 step + (coeff_7 * z^7) - let t207 = circuit_mul(in39, t6); // Eval f_i+1 step coeff_8 * z^8 - let t208 = circuit_add(t206, t207); // Eval f_i+1 step + (coeff_8 * z^8) - let t209 = circuit_mul(in40, t7); // Eval f_i+1 step coeff_9 * z^9 - let t210 = circuit_add(t208, t209); // Eval f_i+1 step + (coeff_9 * z^9) - let t211 = circuit_mul(in41, t8); // Eval f_i+1 step coeff_10 * z^10 - let t212 = circuit_add(t210, t211); // Eval f_i+1 step + (coeff_10 * z^10) - let t213 = circuit_mul(in42, t9); // Eval f_i+1 step coeff_11 * z^11 - let t214 = circuit_add(t212, t213); // Eval f_i+1 step + (coeff_11 * z^11) - let t215 = circuit_sub(t192, t214); // (螤(i,k) (Pk(z))) - Ri(z) - let t216 = circuit_mul(t10, t215); // ci * ((螤(i,k) (Pk(z)) - Ri(z)) - let t217 = circuit_add(in29, t216); // LHS = LHS + ci * ((螤(i,k) (Pk(z)) - Ri(z)) + let t97 = circuit_sub(in17, in18); + let t98 = circuit_mul(t97, in3); // eval bls line by yInv + let t99 = circuit_sub(in15, in16); + let t100 = circuit_mul(t99, in4); // eval blsline by xNegOverY + let t101 = circuit_mul(in18, in3); // eval bls line by yInv + let t102 = circuit_mul(in16, in4); // eval bls line by xNegOverY + let t103 = circuit_mul(t100, t0); // Eval sparse poly line_0p_1 step coeff_2 * z^2 + let t104 = circuit_add(t98, t103); // Eval sparse poly line_0p_1 step + coeff_2 * z^2 + let t105 = circuit_add(t104, t1); // Eval sparse poly line_0p_1 step + 1*z^3 + let t106 = circuit_mul(t101, t2); // Eval sparse poly line_0p_1 step coeff_6 * z^6 + let t107 = circuit_add(t105, t106); // Eval sparse poly line_0p_1 step + coeff_6 * z^6 + let t108 = circuit_mul(t102, t3); // Eval sparse poly line_0p_1 step coeff_8 * z^8 + let t109 = circuit_add(t107, t108); // Eval sparse poly line_0p_1 step + coeff_8 * z^8 + let t110 = circuit_mul(t96, t109); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) + let t111 = circuit_sub(in21, in22); + let t112 = circuit_mul(t111, in13); // eval bls line by yInv + let t113 = circuit_sub(in19, in20); + let t114 = circuit_mul(t113, in14); // eval blsline by xNegOverY + let t115 = circuit_mul(in22, in13); // eval bls line by yInv + let t116 = circuit_mul(in20, in14); // eval bls line by xNegOverY + let t117 = circuit_mul(t114, t0); // Eval sparse poly line_1p_1 step coeff_2 * z^2 + let t118 = circuit_add(t112, t117); // Eval sparse poly line_1p_1 step + coeff_2 * z^2 + let t119 = circuit_add(t118, t1); // Eval sparse poly line_1p_1 step + 1*z^3 + let t120 = circuit_mul(t115, t2); // Eval sparse poly line_1p_1 step coeff_6 * z^6 + let t121 = circuit_add(t119, t120); // Eval sparse poly line_1p_1 step + coeff_6 * z^6 + let t122 = circuit_mul(t116, t3); // Eval sparse poly line_1p_1 step coeff_8 * z^8 + let t123 = circuit_add(t121, t122); // Eval sparse poly line_1p_1 step + coeff_8 * z^8 + let t124 = circuit_mul(t110, t123); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) + let t125 = circuit_add(t62, t63); // Doubling slope numerator start + let t126 = circuit_sub(t62, t63); + let t127 = circuit_mul(t125, t126); + let t128 = circuit_mul(t62, t63); + let t129 = circuit_mul(t127, in0); + let t130 = circuit_mul(t128, in1); // Doubling slope numerator end + let t131 = circuit_add(t72, t72); // Fp2 add coeff 0/1 + let t132 = circuit_add(t73, t73); // Fp2 add coeff 1/1 + let t133 = circuit_mul(t131, t131); // Fp2 Div x/y start : Fp2 Inv y start + let t134 = circuit_mul(t132, t132); + let t135 = circuit_add(t133, t134); + let t136 = circuit_inverse(t135); + let t137 = circuit_mul(t131, t136); // Fp2 Inv y real part end + let t138 = circuit_mul(t132, t136); + let t139 = circuit_sub(in2, t138); // Fp2 Inv y imag part end + let t140 = circuit_mul(t129, t137); // Fp2 mul start + let t141 = circuit_mul(t130, t139); + let t142 = circuit_sub(t140, t141); // Fp2 mul real part end + let t143 = circuit_mul(t129, t139); + let t144 = circuit_mul(t130, t137); + let t145 = circuit_add(t143, t144); // Fp2 mul imag part end + let t146 = circuit_add(t142, t145); + let t147 = circuit_sub(t142, t145); + let t148 = circuit_mul(t146, t147); + let t149 = circuit_mul(t142, t145); + let t150 = circuit_add(t149, t149); + let t151 = circuit_add(t62, t62); // Fp2 add coeff 0/1 + let t152 = circuit_add(t63, t63); // Fp2 add coeff 1/1 + let t153 = circuit_sub(t148, t151); // Fp2 sub coeff 0/1 + let t154 = circuit_sub(t150, t152); // Fp2 sub coeff 1/1 + let t155 = circuit_sub(t62, t153); // Fp2 sub coeff 0/1 + let t156 = circuit_sub(t63, t154); // Fp2 sub coeff 1/1 + let t157 = circuit_mul(t142, t155); // Fp2 mul start + let t158 = circuit_mul(t145, t156); + let t159 = circuit_sub(t157, t158); // Fp2 mul real part end + let t160 = circuit_mul(t142, t156); + let t161 = circuit_mul(t145, t155); + let t162 = circuit_add(t160, t161); // Fp2 mul imag part end + let t163 = circuit_sub(t159, t72); // Fp2 sub coeff 0/1 + let t164 = circuit_sub(t162, t73); // Fp2 sub coeff 1/1 + let t165 = circuit_mul(t142, t62); // Fp2 mul start + let t166 = circuit_mul(t145, t63); + let t167 = circuit_sub(t165, t166); // Fp2 mul real part end + let t168 = circuit_mul(t142, t63); + let t169 = circuit_mul(t145, t62); + let t170 = circuit_add(t168, t169); // Fp2 mul imag part end + let t171 = circuit_sub(t167, t72); // Fp2 sub coeff 0/1 + let t172 = circuit_sub(t170, t73); // Fp2 sub coeff 1/1 + let t173 = circuit_sub(t171, t172); + let t174 = circuit_mul(t173, in23); // eval bls line by yInv + let t175 = circuit_sub(t142, t145); + let t176 = circuit_mul(t175, in24); // eval blsline by xNegOverY + let t177 = circuit_mul(t172, in23); // eval bls line by yInv + let t178 = circuit_mul(t145, in24); // eval bls line by xNegOverY + let t179 = circuit_mul(t176, t0); // Eval sparse poly line_2p_1 step coeff_2 * z^2 + let t180 = circuit_add(t174, t179); // Eval sparse poly line_2p_1 step + coeff_2 * z^2 + let t181 = circuit_add(t180, t1); // Eval sparse poly line_2p_1 step + 1*z^3 + let t182 = circuit_mul(t177, t2); // Eval sparse poly line_2p_1 step coeff_6 * z^6 + let t183 = circuit_add(t181, t182); // Eval sparse poly line_2p_1 step + coeff_6 * z^6 + let t184 = circuit_mul(t178, t3); // Eval sparse poly line_2p_1 step coeff_8 * z^8 + let t185 = circuit_add(t183, t184); // Eval sparse poly line_2p_1 step + coeff_8 * z^8 + let t186 = circuit_mul(t124, t185); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_2(z) + let t187 = circuit_sub(t186, in31); // (螤(i,k) (Pk(z))) - Ri(z) + let t188 = circuit_mul(t4, t187); // ci * ((螤(i,k) (Pk(z)) - Ri(z)) + let t189 = circuit_add(in29, t188); // LHS = LHS + ci * ((螤(i,k) (Pk(z)) - Ri(z)) let modulus = TryInto::< _, CircuitModulus @@ -471,69 +395,54 @@ fn run_BLS12_381_MP_CHECK_BIT00_3P_2F_circuit( ) .unwrap(); // BLS12_381 prime field modulus - let mut circuit_inputs = (t159, t160, t169, t170, t214, t217, t10,).new_inputs(); + let mut circuit_inputs = (t153, t154, t163, t164, t189, t4,).new_inputs(); // Prefill constants: - circuit_inputs = circuit_inputs.next([0x3, 0x0, 0x0, 0x0]); // in0 - circuit_inputs = circuit_inputs.next([0x6, 0x0, 0x0, 0x0]); // in1 - circuit_inputs = circuit_inputs.next([0x0, 0x0, 0x0, 0x0]); // in2 + circuit_inputs = circuit_inputs.next_2([0x3, 0x0, 0x0, 0x0]); // in0 + circuit_inputs = circuit_inputs.next_2([0x6, 0x0, 0x0, 0x0]); // in1 + circuit_inputs = circuit_inputs.next_2([0x0, 0x0, 0x0, 0x0]); // in2 // Fill inputs: - circuit_inputs = circuit_inputs.next(yInv_0); // in3 - circuit_inputs = circuit_inputs.next(xNegOverY_0); // in4 - circuit_inputs = circuit_inputs.next(G2_line_0.r0a0); // in5 - circuit_inputs = circuit_inputs.next(G2_line_0.r0a1); // in6 - circuit_inputs = circuit_inputs.next(G2_line_0.r1a0); // in7 - circuit_inputs = circuit_inputs.next(G2_line_0.r1a1); // in8 - circuit_inputs = circuit_inputs.next(G2_line_2nd_0_0.r0a0); // in9 - circuit_inputs = circuit_inputs.next(G2_line_2nd_0_0.r0a1); // in10 - circuit_inputs = circuit_inputs.next(G2_line_2nd_0_0.r1a0); // in11 - circuit_inputs = circuit_inputs.next(G2_line_2nd_0_0.r1a1); // in12 - circuit_inputs = circuit_inputs.next(yInv_1); // in13 - circuit_inputs = circuit_inputs.next(xNegOverY_1); // in14 - circuit_inputs = circuit_inputs.next(G2_line_1.r0a0); // in15 - circuit_inputs = circuit_inputs.next(G2_line_1.r0a1); // in16 - circuit_inputs = circuit_inputs.next(G2_line_1.r1a0); // in17 - circuit_inputs = circuit_inputs.next(G2_line_1.r1a1); // in18 - circuit_inputs = circuit_inputs.next(G2_line_2nd_0_1.r0a0); // in19 - circuit_inputs = circuit_inputs.next(G2_line_2nd_0_1.r0a1); // in20 - circuit_inputs = circuit_inputs.next(G2_line_2nd_0_1.r1a0); // in21 - circuit_inputs = circuit_inputs.next(G2_line_2nd_0_1.r1a1); // in22 - circuit_inputs = circuit_inputs.next(yInv_2); // in23 - circuit_inputs = circuit_inputs.next(xNegOverY_2); // in24 - circuit_inputs = circuit_inputs.next(Q_2.x0); // in25 - circuit_inputs = circuit_inputs.next(Q_2.x1); // in26 - circuit_inputs = circuit_inputs.next(Q_2.y0); // in27 - circuit_inputs = circuit_inputs.next(Q_2.y1); // in28 - circuit_inputs = circuit_inputs.next(lhs_i); // in29 - circuit_inputs = circuit_inputs.next(f_i_of_z); // in30 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w0); // in31 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w1); // in32 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w2); // in33 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w3); // in34 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w4); // in35 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w5); // in36 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w6); // in37 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w7); // in38 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w8); // in39 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w9); // in40 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w10); // in41 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w11); // in42 - circuit_inputs = circuit_inputs.next(z); // in43 - circuit_inputs = circuit_inputs.next(ci); // in44 + circuit_inputs = circuit_inputs.next_2(yInv_0); // in3 + circuit_inputs = circuit_inputs.next_2(xNegOverY_0); // in4 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r0a0); // in5 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r0a1); // in6 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r1a0); // in7 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r1a1); // in8 + circuit_inputs = circuit_inputs.next_2(G2_line_2nd_0_0.r0a0); // in9 + circuit_inputs = circuit_inputs.next_2(G2_line_2nd_0_0.r0a1); // in10 + circuit_inputs = circuit_inputs.next_2(G2_line_2nd_0_0.r1a0); // in11 + circuit_inputs = circuit_inputs.next_2(G2_line_2nd_0_0.r1a1); // in12 + circuit_inputs = circuit_inputs.next_2(yInv_1); // in13 + circuit_inputs = circuit_inputs.next_2(xNegOverY_1); // in14 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r0a0); // in15 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r0a1); // in16 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r1a0); // in17 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r1a1); // in18 + circuit_inputs = circuit_inputs.next_2(G2_line_2nd_0_1.r0a0); // in19 + circuit_inputs = circuit_inputs.next_2(G2_line_2nd_0_1.r0a1); // in20 + circuit_inputs = circuit_inputs.next_2(G2_line_2nd_0_1.r1a0); // in21 + circuit_inputs = circuit_inputs.next_2(G2_line_2nd_0_1.r1a1); // in22 + circuit_inputs = circuit_inputs.next_2(yInv_2); // in23 + circuit_inputs = circuit_inputs.next_2(xNegOverY_2); // in24 + circuit_inputs = circuit_inputs.next_2(Q_2.x0); // in25 + circuit_inputs = circuit_inputs.next_2(Q_2.x1); // in26 + circuit_inputs = circuit_inputs.next_2(Q_2.y0); // in27 + circuit_inputs = circuit_inputs.next_2(Q_2.y1); // in28 + circuit_inputs = circuit_inputs.next_2(lhs_i); // in29 + circuit_inputs = circuit_inputs.next_2(f_i_of_z); // in30 + circuit_inputs = circuit_inputs.next_2(f_i_plus_one_of_z); // in31 + circuit_inputs = circuit_inputs.next_2(z); // in32 + circuit_inputs = circuit_inputs.next_2(ci); // in33 - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); let Q0: G2Point = G2Point { - x0: outputs.get_output(t159), - x1: outputs.get_output(t160), - y0: outputs.get_output(t169), - y1: outputs.get_output(t170) + x0: outputs.get_output(t153), + x1: outputs.get_output(t154), + y0: outputs.get_output(t163), + y1: outputs.get_output(t164) }; - let f_i_plus_one_of_z: u384 = outputs.get_output(t214); - let lhs_i_plus_one: u384 = outputs.get_output(t217); - let ci_plus_one: u384 = outputs.get_output(t10); - return (Q0, f_i_plus_one_of_z, lhs_i_plus_one, ci_plus_one); + let lhs_i_plus_one: u384 = outputs.get_output(t189); + let ci_plus_one: u384 = outputs.get_output(t4); + return (Q0, lhs_i_plus_one, ci_plus_one); } fn run_BLS12_381_MP_CHECK_BIT0_2P_2F_circuit( yInv_0: u384, @@ -544,86 +453,54 @@ fn run_BLS12_381_MP_CHECK_BIT0_2P_2F_circuit( G2_line_1: G2Line, lhs_i: u384, f_i_of_z: u384, - f_i_plus_one: E12D, + f_i_plus_one_of_z: u384, z: u384, ci: u384 -) -> (u384, u384, u384) { +) -> (u384, u384) { // INPUT stack let (in0, in1, in2) = (CE::> {}, CE::> {}, CE::> {}); let (in3, in4, in5) = (CE::> {}, CE::> {}, CE::> {}); let (in6, in7, in8) = (CE::> {}, CE::> {}, CE::> {}); let (in9, in10, in11) = (CE::> {}, CE::> {}, CE::> {}); let (in12, in13, in14) = (CE::> {}, CE::> {}, CE::> {}); - let (in15, in16, in17) = (CE::> {}, CE::> {}, CE::> {}); - let (in18, in19, in20) = (CE::> {}, CE::> {}, CE::> {}); - let (in21, in22, in23) = (CE::> {}, CE::> {}, CE::> {}); - let (in24, in25, in26) = (CE::> {}, CE::> {}, CE::> {}); - let in27 = CE::> {}; - let t0 = circuit_mul(in26, in26); // Compute z^2 - let t1 = circuit_mul(t0, in26); // Compute z^3 - let t2 = circuit_mul(t1, in26); // Compute z^4 - let t3 = circuit_mul(t2, in26); // Compute z^5 - let t4 = circuit_mul(t3, in26); // Compute z^6 - let t5 = circuit_mul(t4, in26); // Compute z^7 - let t6 = circuit_mul(t5, in26); // Compute z^8 - let t7 = circuit_mul(t6, in26); // Compute z^9 - let t8 = circuit_mul(t7, in26); // Compute z^10 - let t9 = circuit_mul(t8, in26); // Compute z^11 - let t10 = circuit_mul(in27, in27); // Compute c_i = (c_(i-1))^2 - let t11 = circuit_mul(in13, in13); // Square f evaluation in Z, the result of previous bit. - let t12 = circuit_sub(in4, in5); - let t13 = circuit_mul(t12, in0); // eval bls line by yInv - let t14 = circuit_sub(in2, in3); - let t15 = circuit_mul(t14, in1); // eval blsline by xNegOverY - let t16 = circuit_mul(in5, in0); // eval bls line by yInv - let t17 = circuit_mul(in3, in1); // eval bls line by xNegOverY - let t18 = circuit_mul(t15, t0); // Eval sparse poly line_0p_1 step coeff_2 * z^2 - let t19 = circuit_add(t13, t18); // Eval sparse poly line_0p_1 step + coeff_2 * z^2 - let t20 = circuit_add(t19, t1); // Eval sparse poly line_0p_1 step + 1*z^3 - let t21 = circuit_mul(t16, t4); // Eval sparse poly line_0p_1 step coeff_6 * z^6 - let t22 = circuit_add(t20, t21); // Eval sparse poly line_0p_1 step + coeff_6 * z^6 - let t23 = circuit_mul(t17, t6); // Eval sparse poly line_0p_1 step coeff_8 * z^8 - let t24 = circuit_add(t22, t23); // Eval sparse poly line_0p_1 step + coeff_8 * z^8 - let t25 = circuit_mul(t11, t24); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) - let t26 = circuit_sub(in10, in11); - let t27 = circuit_mul(t26, in6); // eval bls line by yInv - let t28 = circuit_sub(in8, in9); - let t29 = circuit_mul(t28, in7); // eval blsline by xNegOverY - let t30 = circuit_mul(in11, in6); // eval bls line by yInv - let t31 = circuit_mul(in9, in7); // eval bls line by xNegOverY - let t32 = circuit_mul(t29, t0); // Eval sparse poly line_1p_1 step coeff_2 * z^2 - let t33 = circuit_add(t27, t32); // Eval sparse poly line_1p_1 step + coeff_2 * z^2 - let t34 = circuit_add(t33, t1); // Eval sparse poly line_1p_1 step + 1*z^3 - let t35 = circuit_mul(t30, t4); // Eval sparse poly line_1p_1 step coeff_6 * z^6 - let t36 = circuit_add(t34, t35); // Eval sparse poly line_1p_1 step + coeff_6 * z^6 - let t37 = circuit_mul(t31, t6); // Eval sparse poly line_1p_1 step coeff_8 * z^8 - let t38 = circuit_add(t36, t37); // Eval sparse poly line_1p_1 step + coeff_8 * z^8 - let t39 = circuit_mul(t25, t38); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) - let t40 = circuit_mul(in15, in26); // Eval f_i+1 step coeff_1 * z^1 - let t41 = circuit_add(in14, t40); // Eval f_i+1 step + (coeff_1 * z^1) - let t42 = circuit_mul(in16, t0); // Eval f_i+1 step coeff_2 * z^2 - let t43 = circuit_add(t41, t42); // Eval f_i+1 step + (coeff_2 * z^2) - let t44 = circuit_mul(in17, t1); // Eval f_i+1 step coeff_3 * z^3 - let t45 = circuit_add(t43, t44); // Eval f_i+1 step + (coeff_3 * z^3) - let t46 = circuit_mul(in18, t2); // Eval f_i+1 step coeff_4 * z^4 - let t47 = circuit_add(t45, t46); // Eval f_i+1 step + (coeff_4 * z^4) - let t48 = circuit_mul(in19, t3); // Eval f_i+1 step coeff_5 * z^5 - let t49 = circuit_add(t47, t48); // Eval f_i+1 step + (coeff_5 * z^5) - let t50 = circuit_mul(in20, t4); // Eval f_i+1 step coeff_6 * z^6 - let t51 = circuit_add(t49, t50); // Eval f_i+1 step + (coeff_6 * z^6) - let t52 = circuit_mul(in21, t5); // Eval f_i+1 step coeff_7 * z^7 - let t53 = circuit_add(t51, t52); // Eval f_i+1 step + (coeff_7 * z^7) - let t54 = circuit_mul(in22, t6); // Eval f_i+1 step coeff_8 * z^8 - let t55 = circuit_add(t53, t54); // Eval f_i+1 step + (coeff_8 * z^8) - let t56 = circuit_mul(in23, t7); // Eval f_i+1 step coeff_9 * z^9 - let t57 = circuit_add(t55, t56); // Eval f_i+1 step + (coeff_9 * z^9) - let t58 = circuit_mul(in24, t8); // Eval f_i+1 step coeff_10 * z^10 - let t59 = circuit_add(t57, t58); // Eval f_i+1 step + (coeff_10 * z^10) - let t60 = circuit_mul(in25, t9); // Eval f_i+1 step coeff_11 * z^11 - let t61 = circuit_add(t59, t60); // Eval f_i+1 step + (coeff_11 * z^11) - let t62 = circuit_sub(t39, t61); // (螤(i,k) (Pk(z))) - Ri(z) - let t63 = circuit_mul(t10, t62); // ci * ((螤(i,k) (Pk(z)) - Ri(z)) - let t64 = circuit_add(in12, t63); // LHS = LHS + ci * ((螤(i,k) (Pk(z)) - Ri(z)) + let (in15, in16) = (CE::> {}, CE::> {}); + let t0 = circuit_mul(in15, in15); // compute z^2 + let t1 = circuit_mul(t0, in15); // compute z^3 + let t2 = circuit_mul(t1, t1); // compute z^6 + let t3 = circuit_mul(t2, t0); // compute z^8 + let t4 = circuit_mul(in16, in16); // Compute c_i = (c_(i-1))^2 + let t5 = circuit_mul(in13, in13); // Square f evaluation in Z, the result of previous bit. + let t6 = circuit_sub(in4, in5); + let t7 = circuit_mul(t6, in0); // eval bls line by yInv + let t8 = circuit_sub(in2, in3); + let t9 = circuit_mul(t8, in1); // eval blsline by xNegOverY + let t10 = circuit_mul(in5, in0); // eval bls line by yInv + let t11 = circuit_mul(in3, in1); // eval bls line by xNegOverY + let t12 = circuit_mul(t9, t0); // Eval sparse poly line_0p_1 step coeff_2 * z^2 + let t13 = circuit_add(t7, t12); // Eval sparse poly line_0p_1 step + coeff_2 * z^2 + let t14 = circuit_add(t13, t1); // Eval sparse poly line_0p_1 step + 1*z^3 + let t15 = circuit_mul(t10, t2); // Eval sparse poly line_0p_1 step coeff_6 * z^6 + let t16 = circuit_add(t14, t15); // Eval sparse poly line_0p_1 step + coeff_6 * z^6 + let t17 = circuit_mul(t11, t3); // Eval sparse poly line_0p_1 step coeff_8 * z^8 + let t18 = circuit_add(t16, t17); // Eval sparse poly line_0p_1 step + coeff_8 * z^8 + let t19 = circuit_mul(t5, t18); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) + let t20 = circuit_sub(in10, in11); + let t21 = circuit_mul(t20, in6); // eval bls line by yInv + let t22 = circuit_sub(in8, in9); + let t23 = circuit_mul(t22, in7); // eval blsline by xNegOverY + let t24 = circuit_mul(in11, in6); // eval bls line by yInv + let t25 = circuit_mul(in9, in7); // eval bls line by xNegOverY + let t26 = circuit_mul(t23, t0); // Eval sparse poly line_1p_1 step coeff_2 * z^2 + let t27 = circuit_add(t21, t26); // Eval sparse poly line_1p_1 step + coeff_2 * z^2 + let t28 = circuit_add(t27, t1); // Eval sparse poly line_1p_1 step + 1*z^3 + let t29 = circuit_mul(t24, t2); // Eval sparse poly line_1p_1 step coeff_6 * z^6 + let t30 = circuit_add(t28, t29); // Eval sparse poly line_1p_1 step + coeff_6 * z^6 + let t31 = circuit_mul(t25, t3); // Eval sparse poly line_1p_1 step coeff_8 * z^8 + let t32 = circuit_add(t30, t31); // Eval sparse poly line_1p_1 step + coeff_8 * z^8 + let t33 = circuit_mul(t19, t32); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) + let t34 = circuit_sub(t33, in14); // (螤(i,k) (Pk(z))) - Ri(z) + let t35 = circuit_mul(t4, t34); // ci * ((螤(i,k) (Pk(z)) - Ri(z)) + let t36 = circuit_add(in12, t35); // LHS = LHS + ci * ((螤(i,k) (Pk(z)) - Ri(z)) let modulus = TryInto::< _, CircuitModulus @@ -637,47 +514,32 @@ fn run_BLS12_381_MP_CHECK_BIT0_2P_2F_circuit( ) .unwrap(); // BLS12_381 prime field modulus - let mut circuit_inputs = (t61, t64, t10,).new_inputs(); + let mut circuit_inputs = (t36, t4,).new_inputs(); // Prefill constants: // Fill inputs: - circuit_inputs = circuit_inputs.next(yInv_0); // in0 - circuit_inputs = circuit_inputs.next(xNegOverY_0); // in1 - circuit_inputs = circuit_inputs.next(G2_line_0.r0a0); // in2 - circuit_inputs = circuit_inputs.next(G2_line_0.r0a1); // in3 - circuit_inputs = circuit_inputs.next(G2_line_0.r1a0); // in4 - circuit_inputs = circuit_inputs.next(G2_line_0.r1a1); // in5 - circuit_inputs = circuit_inputs.next(yInv_1); // in6 - circuit_inputs = circuit_inputs.next(xNegOverY_1); // in7 - circuit_inputs = circuit_inputs.next(G2_line_1.r0a0); // in8 - circuit_inputs = circuit_inputs.next(G2_line_1.r0a1); // in9 - circuit_inputs = circuit_inputs.next(G2_line_1.r1a0); // in10 - circuit_inputs = circuit_inputs.next(G2_line_1.r1a1); // in11 - circuit_inputs = circuit_inputs.next(lhs_i); // in12 - circuit_inputs = circuit_inputs.next(f_i_of_z); // in13 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w0); // in14 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w1); // in15 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w2); // in16 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w3); // in17 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w4); // in18 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w5); // in19 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w6); // in20 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w7); // in21 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w8); // in22 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w9); // in23 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w10); // in24 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w11); // in25 - circuit_inputs = circuit_inputs.next(z); // in26 - circuit_inputs = circuit_inputs.next(ci); // in27 + circuit_inputs = circuit_inputs.next_2(yInv_0); // in0 + circuit_inputs = circuit_inputs.next_2(xNegOverY_0); // in1 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r0a0); // in2 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r0a1); // in3 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r1a0); // in4 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r1a1); // in5 + circuit_inputs = circuit_inputs.next_2(yInv_1); // in6 + circuit_inputs = circuit_inputs.next_2(xNegOverY_1); // in7 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r0a0); // in8 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r0a1); // in9 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r1a0); // in10 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r1a1); // in11 + circuit_inputs = circuit_inputs.next_2(lhs_i); // in12 + circuit_inputs = circuit_inputs.next_2(f_i_of_z); // in13 + circuit_inputs = circuit_inputs.next_2(f_i_plus_one_of_z); // in14 + circuit_inputs = circuit_inputs.next_2(z); // in15 + circuit_inputs = circuit_inputs.next_2(ci); // in16 - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; - let f_i_plus_one_of_z: u384 = outputs.get_output(t61); - let lhs_i_plus_one: u384 = outputs.get_output(t64); - let ci_plus_one: u384 = outputs.get_output(t10); - return (f_i_plus_one_of_z, lhs_i_plus_one, ci_plus_one); + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); + let lhs_i_plus_one: u384 = outputs.get_output(t36); + let ci_plus_one: u384 = outputs.get_output(t4); + return (lhs_i_plus_one, ci_plus_one); } fn run_BLS12_381_MP_CHECK_BIT0_3P_2F_circuit( yInv_0: u384, @@ -691,10 +553,10 @@ fn run_BLS12_381_MP_CHECK_BIT0_3P_2F_circuit( Q_2: G2Point, lhs_i: u384, f_i_of_z: u384, - f_i_plus_one: E12D, + f_i_plus_one_of_z: u384, z: u384, ci: u384 -) -> (G2Point, u384, u384, u384) { +) -> (G2Point, u384, u384) { // CONSTANT stack let in0 = CE::> {}; // 0x3 let in1 = CE::> {}; // 0x6 @@ -708,138 +570,106 @@ fn run_BLS12_381_MP_CHECK_BIT0_3P_2F_circuit( let (in15, in16, in17) = (CE::> {}, CE::> {}, CE::> {}); let (in18, in19, in20) = (CE::> {}, CE::> {}, CE::> {}); let (in21, in22, in23) = (CE::> {}, CE::> {}, CE::> {}); - let (in24, in25, in26) = (CE::> {}, CE::> {}, CE::> {}); - let (in27, in28, in29) = (CE::> {}, CE::> {}, CE::> {}); - let (in30, in31, in32) = (CE::> {}, CE::> {}, CE::> {}); - let (in33, in34, in35) = (CE::> {}, CE::> {}, CE::> {}); - let in36 = CE::> {}; - let t0 = circuit_mul(in35, in35); // Compute z^2 - let t1 = circuit_mul(t0, in35); // Compute z^3 - let t2 = circuit_mul(t1, in35); // Compute z^4 - let t3 = circuit_mul(t2, in35); // Compute z^5 - let t4 = circuit_mul(t3, in35); // Compute z^6 - let t5 = circuit_mul(t4, in35); // Compute z^7 - let t6 = circuit_mul(t5, in35); // Compute z^8 - let t7 = circuit_mul(t6, in35); // Compute z^9 - let t8 = circuit_mul(t7, in35); // Compute z^10 - let t9 = circuit_mul(t8, in35); // Compute z^11 - let t10 = circuit_mul(in36, in36); // Compute c_i = (c_(i-1))^2 - let t11 = circuit_mul(in22, in22); // Square f evaluation in Z, the result of previous bit. - let t12 = circuit_sub(in7, in8); - let t13 = circuit_mul(t12, in3); // eval bls line by yInv - let t14 = circuit_sub(in5, in6); - let t15 = circuit_mul(t14, in4); // eval blsline by xNegOverY - let t16 = circuit_mul(in8, in3); // eval bls line by yInv - let t17 = circuit_mul(in6, in4); // eval bls line by xNegOverY - let t18 = circuit_mul(t15, t0); // Eval sparse poly line_0p_1 step coeff_2 * z^2 - let t19 = circuit_add(t13, t18); // Eval sparse poly line_0p_1 step + coeff_2 * z^2 - let t20 = circuit_add(t19, t1); // Eval sparse poly line_0p_1 step + 1*z^3 - let t21 = circuit_mul(t16, t4); // Eval sparse poly line_0p_1 step coeff_6 * z^6 - let t22 = circuit_add(t20, t21); // Eval sparse poly line_0p_1 step + coeff_6 * z^6 - let t23 = circuit_mul(t17, t6); // Eval sparse poly line_0p_1 step coeff_8 * z^8 - let t24 = circuit_add(t22, t23); // Eval sparse poly line_0p_1 step + coeff_8 * z^8 - let t25 = circuit_mul(t11, t24); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) - let t26 = circuit_sub(in13, in14); - let t27 = circuit_mul(t26, in9); // eval bls line by yInv - let t28 = circuit_sub(in11, in12); - let t29 = circuit_mul(t28, in10); // eval blsline by xNegOverY - let t30 = circuit_mul(in14, in9); // eval bls line by yInv - let t31 = circuit_mul(in12, in10); // eval bls line by xNegOverY - let t32 = circuit_mul(t29, t0); // Eval sparse poly line_1p_1 step coeff_2 * z^2 - let t33 = circuit_add(t27, t32); // Eval sparse poly line_1p_1 step + coeff_2 * z^2 - let t34 = circuit_add(t33, t1); // Eval sparse poly line_1p_1 step + 1*z^3 - let t35 = circuit_mul(t30, t4); // Eval sparse poly line_1p_1 step coeff_6 * z^6 - let t36 = circuit_add(t34, t35); // Eval sparse poly line_1p_1 step + coeff_6 * z^6 - let t37 = circuit_mul(t31, t6); // Eval sparse poly line_1p_1 step coeff_8 * z^8 - let t38 = circuit_add(t36, t37); // Eval sparse poly line_1p_1 step + coeff_8 * z^8 - let t39 = circuit_mul(t25, t38); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) - let t40 = circuit_add(in17, in18); // Doubling slope numerator start - let t41 = circuit_sub(in17, in18); - let t42 = circuit_mul(t40, t41); - let t43 = circuit_mul(in17, in18); - let t44 = circuit_mul(t42, in0); - let t45 = circuit_mul(t43, in1); // Doubling slope numerator end - let t46 = circuit_add(in19, in19); // Fp2 add coeff 0/1 - let t47 = circuit_add(in20, in20); // Fp2 add coeff 1/1 - let t48 = circuit_mul(t46, t46); // Fp2 Div x/y start : Fp2 Inv y start - let t49 = circuit_mul(t47, t47); - let t50 = circuit_add(t48, t49); - let t51 = circuit_inverse(t50); - let t52 = circuit_mul(t46, t51); // Fp2 Inv y real part end - let t53 = circuit_mul(t47, t51); - let t54 = circuit_sub(in2, t53); // Fp2 Inv y imag part end - let t55 = circuit_mul(t44, t52); // Fp2 mul start - let t56 = circuit_mul(t45, t54); - let t57 = circuit_sub(t55, t56); // Fp2 mul real part end - let t58 = circuit_mul(t44, t54); - let t59 = circuit_mul(t45, t52); - let t60 = circuit_add(t58, t59); // Fp2 mul imag part end - let t61 = circuit_add(t57, t60); - let t62 = circuit_sub(t57, t60); - let t63 = circuit_mul(t61, t62); - let t64 = circuit_mul(t57, t60); - let t65 = circuit_add(t64, t64); - let t66 = circuit_add(in17, in17); // Fp2 add coeff 0/1 - let t67 = circuit_add(in18, in18); // Fp2 add coeff 1/1 - let t68 = circuit_sub(t63, t66); // Fp2 sub coeff 0/1 - let t69 = circuit_sub(t65, t67); // Fp2 sub coeff 1/1 - let t70 = circuit_sub(in17, t68); // Fp2 sub coeff 0/1 - let t71 = circuit_sub(in18, t69); // Fp2 sub coeff 1/1 - let t72 = circuit_mul(t57, t70); // Fp2 mul start - let t73 = circuit_mul(t60, t71); - let t74 = circuit_sub(t72, t73); // Fp2 mul real part end - let t75 = circuit_mul(t57, t71); - let t76 = circuit_mul(t60, t70); - let t77 = circuit_add(t75, t76); // Fp2 mul imag part end - let t78 = circuit_sub(t74, in19); // Fp2 sub coeff 0/1 - let t79 = circuit_sub(t77, in20); // Fp2 sub coeff 1/1 - let t80 = circuit_mul(t57, in17); // Fp2 mul start - let t81 = circuit_mul(t60, in18); - let t82 = circuit_sub(t80, t81); // Fp2 mul real part end - let t83 = circuit_mul(t57, in18); - let t84 = circuit_mul(t60, in17); - let t85 = circuit_add(t83, t84); // Fp2 mul imag part end - let t86 = circuit_sub(t82, in19); // Fp2 sub coeff 0/1 - let t87 = circuit_sub(t85, in20); // Fp2 sub coeff 1/1 - let t88 = circuit_sub(t86, t87); - let t89 = circuit_mul(t88, in15); // eval bls line by yInv - let t90 = circuit_sub(t57, t60); - let t91 = circuit_mul(t90, in16); // eval blsline by xNegOverY - let t92 = circuit_mul(t87, in15); // eval bls line by yInv - let t93 = circuit_mul(t60, in16); // eval bls line by xNegOverY - let t94 = circuit_mul(t91, t0); // Eval sparse poly line_2p_1 step coeff_2 * z^2 - let t95 = circuit_add(t89, t94); // Eval sparse poly line_2p_1 step + coeff_2 * z^2 - let t96 = circuit_add(t95, t1); // Eval sparse poly line_2p_1 step + 1*z^3 - let t97 = circuit_mul(t92, t4); // Eval sparse poly line_2p_1 step coeff_6 * z^6 - let t98 = circuit_add(t96, t97); // Eval sparse poly line_2p_1 step + coeff_6 * z^6 - let t99 = circuit_mul(t93, t6); // Eval sparse poly line_2p_1 step coeff_8 * z^8 - let t100 = circuit_add(t98, t99); // Eval sparse poly line_2p_1 step + coeff_8 * z^8 - let t101 = circuit_mul(t39, t100); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_2(z) - let t102 = circuit_mul(in24, in35); // Eval f_i+1 step coeff_1 * z^1 - let t103 = circuit_add(in23, t102); // Eval f_i+1 step + (coeff_1 * z^1) - let t104 = circuit_mul(in25, t0); // Eval f_i+1 step coeff_2 * z^2 - let t105 = circuit_add(t103, t104); // Eval f_i+1 step + (coeff_2 * z^2) - let t106 = circuit_mul(in26, t1); // Eval f_i+1 step coeff_3 * z^3 - let t107 = circuit_add(t105, t106); // Eval f_i+1 step + (coeff_3 * z^3) - let t108 = circuit_mul(in27, t2); // Eval f_i+1 step coeff_4 * z^4 - let t109 = circuit_add(t107, t108); // Eval f_i+1 step + (coeff_4 * z^4) - let t110 = circuit_mul(in28, t3); // Eval f_i+1 step coeff_5 * z^5 - let t111 = circuit_add(t109, t110); // Eval f_i+1 step + (coeff_5 * z^5) - let t112 = circuit_mul(in29, t4); // Eval f_i+1 step coeff_6 * z^6 - let t113 = circuit_add(t111, t112); // Eval f_i+1 step + (coeff_6 * z^6) - let t114 = circuit_mul(in30, t5); // Eval f_i+1 step coeff_7 * z^7 - let t115 = circuit_add(t113, t114); // Eval f_i+1 step + (coeff_7 * z^7) - let t116 = circuit_mul(in31, t6); // Eval f_i+1 step coeff_8 * z^8 - let t117 = circuit_add(t115, t116); // Eval f_i+1 step + (coeff_8 * z^8) - let t118 = circuit_mul(in32, t7); // Eval f_i+1 step coeff_9 * z^9 - let t119 = circuit_add(t117, t118); // Eval f_i+1 step + (coeff_9 * z^9) - let t120 = circuit_mul(in33, t8); // Eval f_i+1 step coeff_10 * z^10 - let t121 = circuit_add(t119, t120); // Eval f_i+1 step + (coeff_10 * z^10) - let t122 = circuit_mul(in34, t9); // Eval f_i+1 step coeff_11 * z^11 - let t123 = circuit_add(t121, t122); // Eval f_i+1 step + (coeff_11 * z^11) - let t124 = circuit_sub(t101, t123); // (螤(i,k) (Pk(z))) - Ri(z) - let t125 = circuit_mul(t10, t124); // ci * ((螤(i,k) (Pk(z)) - Ri(z)) - let t126 = circuit_add(in21, t125); // LHS = LHS + ci * ((螤(i,k) (Pk(z)) - Ri(z)) + let (in24, in25) = (CE::> {}, CE::> {}); + let t0 = circuit_mul(in24, in24); // compute z^2 + let t1 = circuit_mul(t0, in24); // compute z^3 + let t2 = circuit_mul(t1, t1); // compute z^6 + let t3 = circuit_mul(t2, t0); // compute z^8 + let t4 = circuit_mul(in25, in25); // Compute c_i = (c_(i-1))^2 + let t5 = circuit_mul(in22, in22); // Square f evaluation in Z, the result of previous bit. + let t6 = circuit_sub(in7, in8); + let t7 = circuit_mul(t6, in3); // eval bls line by yInv + let t8 = circuit_sub(in5, in6); + let t9 = circuit_mul(t8, in4); // eval blsline by xNegOverY + let t10 = circuit_mul(in8, in3); // eval bls line by yInv + let t11 = circuit_mul(in6, in4); // eval bls line by xNegOverY + let t12 = circuit_mul(t9, t0); // Eval sparse poly line_0p_1 step coeff_2 * z^2 + let t13 = circuit_add(t7, t12); // Eval sparse poly line_0p_1 step + coeff_2 * z^2 + let t14 = circuit_add(t13, t1); // Eval sparse poly line_0p_1 step + 1*z^3 + let t15 = circuit_mul(t10, t2); // Eval sparse poly line_0p_1 step coeff_6 * z^6 + let t16 = circuit_add(t14, t15); // Eval sparse poly line_0p_1 step + coeff_6 * z^6 + let t17 = circuit_mul(t11, t3); // Eval sparse poly line_0p_1 step coeff_8 * z^8 + let t18 = circuit_add(t16, t17); // Eval sparse poly line_0p_1 step + coeff_8 * z^8 + let t19 = circuit_mul(t5, t18); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) + let t20 = circuit_sub(in13, in14); + let t21 = circuit_mul(t20, in9); // eval bls line by yInv + let t22 = circuit_sub(in11, in12); + let t23 = circuit_mul(t22, in10); // eval blsline by xNegOverY + let t24 = circuit_mul(in14, in9); // eval bls line by yInv + let t25 = circuit_mul(in12, in10); // eval bls line by xNegOverY + let t26 = circuit_mul(t23, t0); // Eval sparse poly line_1p_1 step coeff_2 * z^2 + let t27 = circuit_add(t21, t26); // Eval sparse poly line_1p_1 step + coeff_2 * z^2 + let t28 = circuit_add(t27, t1); // Eval sparse poly line_1p_1 step + 1*z^3 + let t29 = circuit_mul(t24, t2); // Eval sparse poly line_1p_1 step coeff_6 * z^6 + let t30 = circuit_add(t28, t29); // Eval sparse poly line_1p_1 step + coeff_6 * z^6 + let t31 = circuit_mul(t25, t3); // Eval sparse poly line_1p_1 step coeff_8 * z^8 + let t32 = circuit_add(t30, t31); // Eval sparse poly line_1p_1 step + coeff_8 * z^8 + let t33 = circuit_mul(t19, t32); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) + let t34 = circuit_add(in17, in18); // Doubling slope numerator start + let t35 = circuit_sub(in17, in18); + let t36 = circuit_mul(t34, t35); + let t37 = circuit_mul(in17, in18); + let t38 = circuit_mul(t36, in0); + let t39 = circuit_mul(t37, in1); // Doubling slope numerator end + let t40 = circuit_add(in19, in19); // Fp2 add coeff 0/1 + let t41 = circuit_add(in20, in20); // Fp2 add coeff 1/1 + let t42 = circuit_mul(t40, t40); // Fp2 Div x/y start : Fp2 Inv y start + let t43 = circuit_mul(t41, t41); + let t44 = circuit_add(t42, t43); + let t45 = circuit_inverse(t44); + let t46 = circuit_mul(t40, t45); // Fp2 Inv y real part end + let t47 = circuit_mul(t41, t45); + let t48 = circuit_sub(in2, t47); // Fp2 Inv y imag part end + let t49 = circuit_mul(t38, t46); // Fp2 mul start + let t50 = circuit_mul(t39, t48); + let t51 = circuit_sub(t49, t50); // Fp2 mul real part end + let t52 = circuit_mul(t38, t48); + let t53 = circuit_mul(t39, t46); + let t54 = circuit_add(t52, t53); // Fp2 mul imag part end + let t55 = circuit_add(t51, t54); + let t56 = circuit_sub(t51, t54); + let t57 = circuit_mul(t55, t56); + let t58 = circuit_mul(t51, t54); + let t59 = circuit_add(t58, t58); + let t60 = circuit_add(in17, in17); // Fp2 add coeff 0/1 + let t61 = circuit_add(in18, in18); // Fp2 add coeff 1/1 + let t62 = circuit_sub(t57, t60); // Fp2 sub coeff 0/1 + let t63 = circuit_sub(t59, t61); // Fp2 sub coeff 1/1 + let t64 = circuit_sub(in17, t62); // Fp2 sub coeff 0/1 + let t65 = circuit_sub(in18, t63); // Fp2 sub coeff 1/1 + let t66 = circuit_mul(t51, t64); // Fp2 mul start + let t67 = circuit_mul(t54, t65); + let t68 = circuit_sub(t66, t67); // Fp2 mul real part end + let t69 = circuit_mul(t51, t65); + let t70 = circuit_mul(t54, t64); + let t71 = circuit_add(t69, t70); // Fp2 mul imag part end + let t72 = circuit_sub(t68, in19); // Fp2 sub coeff 0/1 + let t73 = circuit_sub(t71, in20); // Fp2 sub coeff 1/1 + let t74 = circuit_mul(t51, in17); // Fp2 mul start + let t75 = circuit_mul(t54, in18); + let t76 = circuit_sub(t74, t75); // Fp2 mul real part end + let t77 = circuit_mul(t51, in18); + let t78 = circuit_mul(t54, in17); + let t79 = circuit_add(t77, t78); // Fp2 mul imag part end + let t80 = circuit_sub(t76, in19); // Fp2 sub coeff 0/1 + let t81 = circuit_sub(t79, in20); // Fp2 sub coeff 1/1 + let t82 = circuit_sub(t80, t81); + let t83 = circuit_mul(t82, in15); // eval bls line by yInv + let t84 = circuit_sub(t51, t54); + let t85 = circuit_mul(t84, in16); // eval blsline by xNegOverY + let t86 = circuit_mul(t81, in15); // eval bls line by yInv + let t87 = circuit_mul(t54, in16); // eval bls line by xNegOverY + let t88 = circuit_mul(t85, t0); // Eval sparse poly line_2p_1 step coeff_2 * z^2 + let t89 = circuit_add(t83, t88); // Eval sparse poly line_2p_1 step + coeff_2 * z^2 + let t90 = circuit_add(t89, t1); // Eval sparse poly line_2p_1 step + 1*z^3 + let t91 = circuit_mul(t86, t2); // Eval sparse poly line_2p_1 step coeff_6 * z^6 + let t92 = circuit_add(t90, t91); // Eval sparse poly line_2p_1 step + coeff_6 * z^6 + let t93 = circuit_mul(t87, t3); // Eval sparse poly line_2p_1 step coeff_8 * z^8 + let t94 = circuit_add(t92, t93); // Eval sparse poly line_2p_1 step + coeff_8 * z^8 + let t95 = circuit_mul(t33, t94); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_2(z) + let t96 = circuit_sub(t95, in23); // (螤(i,k) (Pk(z))) - Ri(z) + let t97 = circuit_mul(t4, t96); // ci * ((螤(i,k) (Pk(z)) - Ri(z)) + let t98 = circuit_add(in21, t97); // LHS = LHS + ci * ((螤(i,k) (Pk(z)) - Ri(z)) let modulus = TryInto::< _, CircuitModulus @@ -853,61 +683,46 @@ fn run_BLS12_381_MP_CHECK_BIT0_3P_2F_circuit( ) .unwrap(); // BLS12_381 prime field modulus - let mut circuit_inputs = (t68, t69, t78, t79, t123, t126, t10,).new_inputs(); + let mut circuit_inputs = (t62, t63, t72, t73, t98, t4,).new_inputs(); // Prefill constants: - circuit_inputs = circuit_inputs.next([0x3, 0x0, 0x0, 0x0]); // in0 - circuit_inputs = circuit_inputs.next([0x6, 0x0, 0x0, 0x0]); // in1 - circuit_inputs = circuit_inputs.next([0x0, 0x0, 0x0, 0x0]); // in2 + circuit_inputs = circuit_inputs.next_2([0x3, 0x0, 0x0, 0x0]); // in0 + circuit_inputs = circuit_inputs.next_2([0x6, 0x0, 0x0, 0x0]); // in1 + circuit_inputs = circuit_inputs.next_2([0x0, 0x0, 0x0, 0x0]); // in2 // Fill inputs: - circuit_inputs = circuit_inputs.next(yInv_0); // in3 - circuit_inputs = circuit_inputs.next(xNegOverY_0); // in4 - circuit_inputs = circuit_inputs.next(G2_line_0.r0a0); // in5 - circuit_inputs = circuit_inputs.next(G2_line_0.r0a1); // in6 - circuit_inputs = circuit_inputs.next(G2_line_0.r1a0); // in7 - circuit_inputs = circuit_inputs.next(G2_line_0.r1a1); // in8 - circuit_inputs = circuit_inputs.next(yInv_1); // in9 - circuit_inputs = circuit_inputs.next(xNegOverY_1); // in10 - circuit_inputs = circuit_inputs.next(G2_line_1.r0a0); // in11 - circuit_inputs = circuit_inputs.next(G2_line_1.r0a1); // in12 - circuit_inputs = circuit_inputs.next(G2_line_1.r1a0); // in13 - circuit_inputs = circuit_inputs.next(G2_line_1.r1a1); // in14 - circuit_inputs = circuit_inputs.next(yInv_2); // in15 - circuit_inputs = circuit_inputs.next(xNegOverY_2); // in16 - circuit_inputs = circuit_inputs.next(Q_2.x0); // in17 - circuit_inputs = circuit_inputs.next(Q_2.x1); // in18 - circuit_inputs = circuit_inputs.next(Q_2.y0); // in19 - circuit_inputs = circuit_inputs.next(Q_2.y1); // in20 - circuit_inputs = circuit_inputs.next(lhs_i); // in21 - circuit_inputs = circuit_inputs.next(f_i_of_z); // in22 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w0); // in23 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w1); // in24 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w2); // in25 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w3); // in26 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w4); // in27 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w5); // in28 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w6); // in29 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w7); // in30 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w8); // in31 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w9); // in32 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w10); // in33 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w11); // in34 - circuit_inputs = circuit_inputs.next(z); // in35 - circuit_inputs = circuit_inputs.next(ci); // in36 + circuit_inputs = circuit_inputs.next_2(yInv_0); // in3 + circuit_inputs = circuit_inputs.next_2(xNegOverY_0); // in4 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r0a0); // in5 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r0a1); // in6 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r1a0); // in7 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r1a1); // in8 + circuit_inputs = circuit_inputs.next_2(yInv_1); // in9 + circuit_inputs = circuit_inputs.next_2(xNegOverY_1); // in10 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r0a0); // in11 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r0a1); // in12 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r1a0); // in13 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r1a1); // in14 + circuit_inputs = circuit_inputs.next_2(yInv_2); // in15 + circuit_inputs = circuit_inputs.next_2(xNegOverY_2); // in16 + circuit_inputs = circuit_inputs.next_2(Q_2.x0); // in17 + circuit_inputs = circuit_inputs.next_2(Q_2.x1); // in18 + circuit_inputs = circuit_inputs.next_2(Q_2.y0); // in19 + circuit_inputs = circuit_inputs.next_2(Q_2.y1); // in20 + circuit_inputs = circuit_inputs.next_2(lhs_i); // in21 + circuit_inputs = circuit_inputs.next_2(f_i_of_z); // in22 + circuit_inputs = circuit_inputs.next_2(f_i_plus_one_of_z); // in23 + circuit_inputs = circuit_inputs.next_2(z); // in24 + circuit_inputs = circuit_inputs.next_2(ci); // in25 - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); let Q0: G2Point = G2Point { - x0: outputs.get_output(t68), - x1: outputs.get_output(t69), - y0: outputs.get_output(t78), - y1: outputs.get_output(t79) + x0: outputs.get_output(t62), + x1: outputs.get_output(t63), + y0: outputs.get_output(t72), + y1: outputs.get_output(t73) }; - let f_i_plus_one_of_z: u384 = outputs.get_output(t123); - let lhs_i_plus_one: u384 = outputs.get_output(t126); - let ci_plus_one: u384 = outputs.get_output(t10); - return (Q0, f_i_plus_one_of_z, lhs_i_plus_one, ci_plus_one); + let lhs_i_plus_one: u384 = outputs.get_output(t98); + let ci_plus_one: u384 = outputs.get_output(t4); + return (Q0, lhs_i_plus_one, ci_plus_one); } fn run_BLS12_381_MP_CHECK_BIT1_2P_2F_circuit( yInv_0: u384, @@ -920,11 +735,11 @@ fn run_BLS12_381_MP_CHECK_BIT1_2P_2F_circuit( Q_or_Q_neg_line1: G2Line, lhs_i: u384, f_i_of_z: u384, - f_i_plus_one: E12D, + f_i_plus_one_of_z: u384, c_or_cinv_of_z: u384, z: u384, ci: u384 -) -> (u384, u384, u384) { +) -> (u384, u384) { // INPUT stack let (in0, in1, in2) = (CE::> {}, CE::> {}, CE::> {}); let (in3, in4, in5) = (CE::> {}, CE::> {}, CE::> {}); @@ -934,105 +749,73 @@ fn run_BLS12_381_MP_CHECK_BIT1_2P_2F_circuit( let (in15, in16, in17) = (CE::> {}, CE::> {}, CE::> {}); let (in18, in19, in20) = (CE::> {}, CE::> {}, CE::> {}); let (in21, in22, in23) = (CE::> {}, CE::> {}, CE::> {}); - let (in24, in25, in26) = (CE::> {}, CE::> {}, CE::> {}); - let (in27, in28, in29) = (CE::> {}, CE::> {}, CE::> {}); - let (in30, in31, in32) = (CE::> {}, CE::> {}, CE::> {}); - let (in33, in34, in35) = (CE::> {}, CE::> {}, CE::> {}); - let in36 = CE::> {}; - let t0 = circuit_mul(in35, in35); // Compute z^2 - let t1 = circuit_mul(t0, in35); // Compute z^3 - let t2 = circuit_mul(t1, in35); // Compute z^4 - let t3 = circuit_mul(t2, in35); // Compute z^5 - let t4 = circuit_mul(t3, in35); // Compute z^6 - let t5 = circuit_mul(t4, in35); // Compute z^7 - let t6 = circuit_mul(t5, in35); // Compute z^8 - let t7 = circuit_mul(t6, in35); // Compute z^9 - let t8 = circuit_mul(t7, in35); // Compute z^10 - let t9 = circuit_mul(t8, in35); // Compute z^11 - let t10 = circuit_mul(in36, in36); // Compute c_i = (c_(i-1))^2 - let t11 = circuit_mul(in21, in21); // Square f evaluation in Z, the result of previous bit. - let t12 = circuit_sub(in4, in5); + let (in24, in25) = (CE::> {}, CE::> {}); + let t0 = circuit_mul(in24, in24); // compute z^2 + let t1 = circuit_mul(t0, in24); // compute z^3 + let t2 = circuit_mul(t1, t1); // compute z^6 + let t3 = circuit_mul(t2, t0); // compute z^8 + let t4 = circuit_mul(in25, in25); // Compute c_i = (c_(i-1))^2 + let t5 = circuit_mul(in21, in21); // Square f evaluation in Z, the result of previous bit. + let t6 = circuit_sub(in4, in5); + let t7 = circuit_mul(t6, in0); // eval bls line by yInv + let t8 = circuit_sub(in2, in3); + let t9 = circuit_mul(t8, in1); // eval blsline by xNegOverY + let t10 = circuit_mul(in5, in0); // eval bls line by yInv + let t11 = circuit_mul(in3, in1); // eval bls line by xNegOverY + let t12 = circuit_sub(in8, in9); let t13 = circuit_mul(t12, in0); // eval bls line by yInv - let t14 = circuit_sub(in2, in3); + let t14 = circuit_sub(in6, in7); let t15 = circuit_mul(t14, in1); // eval blsline by xNegOverY - let t16 = circuit_mul(in5, in0); // eval bls line by yInv - let t17 = circuit_mul(in3, in1); // eval bls line by xNegOverY - let t18 = circuit_sub(in8, in9); - let t19 = circuit_mul(t18, in0); // eval bls line by yInv - let t20 = circuit_sub(in6, in7); - let t21 = circuit_mul(t20, in1); // eval blsline by xNegOverY - let t22 = circuit_mul(in9, in0); // eval bls line by yInv - let t23 = circuit_mul(in7, in1); // eval bls line by xNegOverY - let t24 = circuit_mul(t15, t0); // Eval sparse poly line_0p_1 step coeff_2 * z^2 - let t25 = circuit_add(t13, t24); // Eval sparse poly line_0p_1 step + coeff_2 * z^2 - let t26 = circuit_add(t25, t1); // Eval sparse poly line_0p_1 step + 1*z^3 - let t27 = circuit_mul(t16, t4); // Eval sparse poly line_0p_1 step coeff_6 * z^6 - let t28 = circuit_add(t26, t27); // Eval sparse poly line_0p_1 step + coeff_6 * z^6 - let t29 = circuit_mul(t17, t6); // Eval sparse poly line_0p_1 step coeff_8 * z^8 - let t30 = circuit_add(t28, t29); // Eval sparse poly line_0p_1 step + coeff_8 * z^8 - let t31 = circuit_mul(t11, t30); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) - let t32 = circuit_mul(t21, t0); // Eval sparse poly line_0p_2 step coeff_2 * z^2 - let t33 = circuit_add(t19, t32); // Eval sparse poly line_0p_2 step + coeff_2 * z^2 - let t34 = circuit_add(t33, t1); // Eval sparse poly line_0p_2 step + 1*z^3 - let t35 = circuit_mul(t22, t4); // Eval sparse poly line_0p_2 step coeff_6 * z^6 - let t36 = circuit_add(t34, t35); // Eval sparse poly line_0p_2 step + coeff_6 * z^6 - let t37 = circuit_mul(t23, t6); // Eval sparse poly line_0p_2 step coeff_8 * z^8 - let t38 = circuit_add(t36, t37); // Eval sparse poly line_0p_2 step + coeff_8 * z^8 - let t39 = circuit_mul(t31, t38); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) - let t40 = circuit_sub(in14, in15); + let t16 = circuit_mul(in9, in0); // eval bls line by yInv + let t17 = circuit_mul(in7, in1); // eval bls line by xNegOverY + let t18 = circuit_mul(t9, t0); // Eval sparse poly line_0p_1 step coeff_2 * z^2 + let t19 = circuit_add(t7, t18); // Eval sparse poly line_0p_1 step + coeff_2 * z^2 + let t20 = circuit_add(t19, t1); // Eval sparse poly line_0p_1 step + 1*z^3 + let t21 = circuit_mul(t10, t2); // Eval sparse poly line_0p_1 step coeff_6 * z^6 + let t22 = circuit_add(t20, t21); // Eval sparse poly line_0p_1 step + coeff_6 * z^6 + let t23 = circuit_mul(t11, t3); // Eval sparse poly line_0p_1 step coeff_8 * z^8 + let t24 = circuit_add(t22, t23); // Eval sparse poly line_0p_1 step + coeff_8 * z^8 + let t25 = circuit_mul(t5, t24); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) + let t26 = circuit_mul(t15, t0); // Eval sparse poly line_0p_2 step coeff_2 * z^2 + let t27 = circuit_add(t13, t26); // Eval sparse poly line_0p_2 step + coeff_2 * z^2 + let t28 = circuit_add(t27, t1); // Eval sparse poly line_0p_2 step + 1*z^3 + let t29 = circuit_mul(t16, t2); // Eval sparse poly line_0p_2 step coeff_6 * z^6 + let t30 = circuit_add(t28, t29); // Eval sparse poly line_0p_2 step + coeff_6 * z^6 + let t31 = circuit_mul(t17, t3); // Eval sparse poly line_0p_2 step coeff_8 * z^8 + let t32 = circuit_add(t30, t31); // Eval sparse poly line_0p_2 step + coeff_8 * z^8 + let t33 = circuit_mul(t25, t32); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) + let t34 = circuit_sub(in14, in15); + let t35 = circuit_mul(t34, in10); // eval bls line by yInv + let t36 = circuit_sub(in12, in13); + let t37 = circuit_mul(t36, in11); // eval blsline by xNegOverY + let t38 = circuit_mul(in15, in10); // eval bls line by yInv + let t39 = circuit_mul(in13, in11); // eval bls line by xNegOverY + let t40 = circuit_sub(in18, in19); let t41 = circuit_mul(t40, in10); // eval bls line by yInv - let t42 = circuit_sub(in12, in13); + let t42 = circuit_sub(in16, in17); let t43 = circuit_mul(t42, in11); // eval blsline by xNegOverY - let t44 = circuit_mul(in15, in10); // eval bls line by yInv - let t45 = circuit_mul(in13, in11); // eval bls line by xNegOverY - let t46 = circuit_sub(in18, in19); - let t47 = circuit_mul(t46, in10); // eval bls line by yInv - let t48 = circuit_sub(in16, in17); - let t49 = circuit_mul(t48, in11); // eval blsline by xNegOverY - let t50 = circuit_mul(in19, in10); // eval bls line by yInv - let t51 = circuit_mul(in17, in11); // eval bls line by xNegOverY - let t52 = circuit_mul(t43, t0); // Eval sparse poly line_1p_1 step coeff_2 * z^2 - let t53 = circuit_add(t41, t52); // Eval sparse poly line_1p_1 step + coeff_2 * z^2 - let t54 = circuit_add(t53, t1); // Eval sparse poly line_1p_1 step + 1*z^3 - let t55 = circuit_mul(t44, t4); // Eval sparse poly line_1p_1 step coeff_6 * z^6 - let t56 = circuit_add(t54, t55); // Eval sparse poly line_1p_1 step + coeff_6 * z^6 - let t57 = circuit_mul(t45, t6); // Eval sparse poly line_1p_1 step coeff_8 * z^8 - let t58 = circuit_add(t56, t57); // Eval sparse poly line_1p_1 step + coeff_8 * z^8 - let t59 = circuit_mul(t39, t58); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) - let t60 = circuit_mul(t49, t0); // Eval sparse poly line_1p_2 step coeff_2 * z^2 - let t61 = circuit_add(t47, t60); // Eval sparse poly line_1p_2 step + coeff_2 * z^2 - let t62 = circuit_add(t61, t1); // Eval sparse poly line_1p_2 step + 1*z^3 - let t63 = circuit_mul(t50, t4); // Eval sparse poly line_1p_2 step coeff_6 * z^6 - let t64 = circuit_add(t62, t63); // Eval sparse poly line_1p_2 step + coeff_6 * z^6 - let t65 = circuit_mul(t51, t6); // Eval sparse poly line_1p_2 step coeff_8 * z^8 - let t66 = circuit_add(t64, t65); // Eval sparse poly line_1p_2 step + coeff_8 * z^8 - let t67 = circuit_mul(t59, t66); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) - let t68 = circuit_mul(t67, in34); - let t69 = circuit_mul(in23, in35); // Eval f_i+1 step coeff_1 * z^1 - let t70 = circuit_add(in22, t69); // Eval f_i+1 step + (coeff_1 * z^1) - let t71 = circuit_mul(in24, t0); // Eval f_i+1 step coeff_2 * z^2 - let t72 = circuit_add(t70, t71); // Eval f_i+1 step + (coeff_2 * z^2) - let t73 = circuit_mul(in25, t1); // Eval f_i+1 step coeff_3 * z^3 - let t74 = circuit_add(t72, t73); // Eval f_i+1 step + (coeff_3 * z^3) - let t75 = circuit_mul(in26, t2); // Eval f_i+1 step coeff_4 * z^4 - let t76 = circuit_add(t74, t75); // Eval f_i+1 step + (coeff_4 * z^4) - let t77 = circuit_mul(in27, t3); // Eval f_i+1 step coeff_5 * z^5 - let t78 = circuit_add(t76, t77); // Eval f_i+1 step + (coeff_5 * z^5) - let t79 = circuit_mul(in28, t4); // Eval f_i+1 step coeff_6 * z^6 - let t80 = circuit_add(t78, t79); // Eval f_i+1 step + (coeff_6 * z^6) - let t81 = circuit_mul(in29, t5); // Eval f_i+1 step coeff_7 * z^7 - let t82 = circuit_add(t80, t81); // Eval f_i+1 step + (coeff_7 * z^7) - let t83 = circuit_mul(in30, t6); // Eval f_i+1 step coeff_8 * z^8 - let t84 = circuit_add(t82, t83); // Eval f_i+1 step + (coeff_8 * z^8) - let t85 = circuit_mul(in31, t7); // Eval f_i+1 step coeff_9 * z^9 - let t86 = circuit_add(t84, t85); // Eval f_i+1 step + (coeff_9 * z^9) - let t87 = circuit_mul(in32, t8); // Eval f_i+1 step coeff_10 * z^10 - let t88 = circuit_add(t86, t87); // Eval f_i+1 step + (coeff_10 * z^10) - let t89 = circuit_mul(in33, t9); // Eval f_i+1 step coeff_11 * z^11 - let t90 = circuit_add(t88, t89); // Eval f_i+1 step + (coeff_11 * z^11) - let t91 = circuit_sub(t68, t90); // (螤(i,k) (Pk(z))) - Ri(z) - let t92 = circuit_mul(t10, t91); // ci * ((螤(i,k) (Pk(z)) - Ri(z)) - let t93 = circuit_add(in20, t92); // LHS = LHS + ci * ((螤(i,k) (Pk(z)) - Ri(z)) + let t44 = circuit_mul(in19, in10); // eval bls line by yInv + let t45 = circuit_mul(in17, in11); // eval bls line by xNegOverY + let t46 = circuit_mul(t37, t0); // Eval sparse poly line_1p_1 step coeff_2 * z^2 + let t47 = circuit_add(t35, t46); // Eval sparse poly line_1p_1 step + coeff_2 * z^2 + let t48 = circuit_add(t47, t1); // Eval sparse poly line_1p_1 step + 1*z^3 + let t49 = circuit_mul(t38, t2); // Eval sparse poly line_1p_1 step coeff_6 * z^6 + let t50 = circuit_add(t48, t49); // Eval sparse poly line_1p_1 step + coeff_6 * z^6 + let t51 = circuit_mul(t39, t3); // Eval sparse poly line_1p_1 step coeff_8 * z^8 + let t52 = circuit_add(t50, t51); // Eval sparse poly line_1p_1 step + coeff_8 * z^8 + let t53 = circuit_mul(t33, t52); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) + let t54 = circuit_mul(t43, t0); // Eval sparse poly line_1p_2 step coeff_2 * z^2 + let t55 = circuit_add(t41, t54); // Eval sparse poly line_1p_2 step + coeff_2 * z^2 + let t56 = circuit_add(t55, t1); // Eval sparse poly line_1p_2 step + 1*z^3 + let t57 = circuit_mul(t44, t2); // Eval sparse poly line_1p_2 step coeff_6 * z^6 + let t58 = circuit_add(t56, t57); // Eval sparse poly line_1p_2 step + coeff_6 * z^6 + let t59 = circuit_mul(t45, t3); // Eval sparse poly line_1p_2 step coeff_8 * z^8 + let t60 = circuit_add(t58, t59); // Eval sparse poly line_1p_2 step + coeff_8 * z^8 + let t61 = circuit_mul(t53, t60); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) + let t62 = circuit_mul(t61, in23); + let t63 = circuit_sub(t62, in22); // (螤(i,k) (Pk(z))) - Ri(z) + let t64 = circuit_mul(t4, t63); // ci * ((螤(i,k) (Pk(z)) - Ri(z)) + let t65 = circuit_add(in20, t64); // LHS = LHS + ci * ((螤(i,k) (Pk(z)) - Ri(z)) let modulus = TryInto::< _, CircuitModulus @@ -1046,56 +829,41 @@ fn run_BLS12_381_MP_CHECK_BIT1_2P_2F_circuit( ) .unwrap(); // BLS12_381 prime field modulus - let mut circuit_inputs = (t90, t93, t10,).new_inputs(); + let mut circuit_inputs = (t65, t4,).new_inputs(); // Prefill constants: // Fill inputs: - circuit_inputs = circuit_inputs.next(yInv_0); // in0 - circuit_inputs = circuit_inputs.next(xNegOverY_0); // in1 - circuit_inputs = circuit_inputs.next(G2_line_0.r0a0); // in2 - circuit_inputs = circuit_inputs.next(G2_line_0.r0a1); // in3 - circuit_inputs = circuit_inputs.next(G2_line_0.r1a0); // in4 - circuit_inputs = circuit_inputs.next(G2_line_0.r1a1); // in5 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_line0.r0a0); // in6 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_line0.r0a1); // in7 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_line0.r1a0); // in8 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_line0.r1a1); // in9 - circuit_inputs = circuit_inputs.next(yInv_1); // in10 - circuit_inputs = circuit_inputs.next(xNegOverY_1); // in11 - circuit_inputs = circuit_inputs.next(G2_line_1.r0a0); // in12 - circuit_inputs = circuit_inputs.next(G2_line_1.r0a1); // in13 - circuit_inputs = circuit_inputs.next(G2_line_1.r1a0); // in14 - circuit_inputs = circuit_inputs.next(G2_line_1.r1a1); // in15 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_line1.r0a0); // in16 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_line1.r0a1); // in17 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_line1.r1a0); // in18 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_line1.r1a1); // in19 - circuit_inputs = circuit_inputs.next(lhs_i); // in20 - circuit_inputs = circuit_inputs.next(f_i_of_z); // in21 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w0); // in22 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w1); // in23 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w2); // in24 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w3); // in25 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w4); // in26 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w5); // in27 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w6); // in28 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w7); // in29 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w8); // in30 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w9); // in31 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w10); // in32 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w11); // in33 - circuit_inputs = circuit_inputs.next(c_or_cinv_of_z); // in34 - circuit_inputs = circuit_inputs.next(z); // in35 - circuit_inputs = circuit_inputs.next(ci); // in36 + circuit_inputs = circuit_inputs.next_2(yInv_0); // in0 + circuit_inputs = circuit_inputs.next_2(xNegOverY_0); // in1 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r0a0); // in2 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r0a1); // in3 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r1a0); // in4 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r1a1); // in5 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_line0.r0a0); // in6 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_line0.r0a1); // in7 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_line0.r1a0); // in8 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_line0.r1a1); // in9 + circuit_inputs = circuit_inputs.next_2(yInv_1); // in10 + circuit_inputs = circuit_inputs.next_2(xNegOverY_1); // in11 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r0a0); // in12 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r0a1); // in13 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r1a0); // in14 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r1a1); // in15 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_line1.r0a0); // in16 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_line1.r0a1); // in17 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_line1.r1a0); // in18 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_line1.r1a1); // in19 + circuit_inputs = circuit_inputs.next_2(lhs_i); // in20 + circuit_inputs = circuit_inputs.next_2(f_i_of_z); // in21 + circuit_inputs = circuit_inputs.next_2(f_i_plus_one_of_z); // in22 + circuit_inputs = circuit_inputs.next_2(c_or_cinv_of_z); // in23 + circuit_inputs = circuit_inputs.next_2(z); // in24 + circuit_inputs = circuit_inputs.next_2(ci); // in25 - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; - let f_i_plus_one_of_z: u384 = outputs.get_output(t90); - let lhs_i_plus_one: u384 = outputs.get_output(t93); - let ci_plus_one: u384 = outputs.get_output(t10); - return (f_i_plus_one_of_z, lhs_i_plus_one, ci_plus_one); + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); + let lhs_i_plus_one: u384 = outputs.get_output(t65); + let ci_plus_one: u384 = outputs.get_output(t4); + return (lhs_i_plus_one, ci_plus_one); } fn run_BLS12_381_MP_CHECK_BIT1_3P_2F_circuit( yInv_0: u384, @@ -1112,11 +880,11 @@ fn run_BLS12_381_MP_CHECK_BIT1_3P_2F_circuit( Q_or_Q_neg_2: G2Point, lhs_i: u384, f_i_of_z: u384, - f_i_plus_one: E12D, + f_i_plus_one_of_z: u384, c_or_cinv_of_z: u384, z: u384, ci: u384 -) -> (G2Point, u384, u384, u384) { +) -> (G2Point, u384, u384) { // CONSTANT stack let in0 = CE::> {}; // 0x0 @@ -1133,214 +901,182 @@ fn run_BLS12_381_MP_CHECK_BIT1_3P_2F_circuit( let (in28, in29, in30) = (CE::> {}, CE::> {}, CE::> {}); let (in31, in32, in33) = (CE::> {}, CE::> {}, CE::> {}); let (in34, in35, in36) = (CE::> {}, CE::> {}, CE::> {}); - let (in37, in38, in39) = (CE::> {}, CE::> {}, CE::> {}); - let (in40, in41, in42) = (CE::> {}, CE::> {}, CE::> {}); - let (in43, in44, in45) = (CE::> {}, CE::> {}, CE::> {}); - let (in46, in47) = (CE::> {}, CE::> {}); - let t0 = circuit_mul(in46, in46); // Compute z^2 - let t1 = circuit_mul(t0, in46); // Compute z^3 - let t2 = circuit_mul(t1, in46); // Compute z^4 - let t3 = circuit_mul(t2, in46); // Compute z^5 - let t4 = circuit_mul(t3, in46); // Compute z^6 - let t5 = circuit_mul(t4, in46); // Compute z^7 - let t6 = circuit_mul(t5, in46); // Compute z^8 - let t7 = circuit_mul(t6, in46); // Compute z^9 - let t8 = circuit_mul(t7, in46); // Compute z^10 - let t9 = circuit_mul(t8, in46); // Compute z^11 - let t10 = circuit_mul(in47, in47); // Compute c_i = (c_(i-1))^2 - let t11 = circuit_mul(in32, in32); // Square f evaluation in Z, the result of previous bit. - let t12 = circuit_sub(in5, in6); + let t0 = circuit_mul(in35, in35); // compute z^2 + let t1 = circuit_mul(t0, in35); // compute z^3 + let t2 = circuit_mul(t1, t1); // compute z^6 + let t3 = circuit_mul(t2, t0); // compute z^8 + let t4 = circuit_mul(in36, in36); // Compute c_i = (c_(i-1))^2 + let t5 = circuit_mul(in32, in32); // Square f evaluation in Z, the result of previous bit. + let t6 = circuit_sub(in5, in6); + let t7 = circuit_mul(t6, in1); // eval bls line by yInv + let t8 = circuit_sub(in3, in4); + let t9 = circuit_mul(t8, in2); // eval blsline by xNegOverY + let t10 = circuit_mul(in6, in1); // eval bls line by yInv + let t11 = circuit_mul(in4, in2); // eval bls line by xNegOverY + let t12 = circuit_sub(in9, in10); let t13 = circuit_mul(t12, in1); // eval bls line by yInv - let t14 = circuit_sub(in3, in4); + let t14 = circuit_sub(in7, in8); let t15 = circuit_mul(t14, in2); // eval blsline by xNegOverY - let t16 = circuit_mul(in6, in1); // eval bls line by yInv - let t17 = circuit_mul(in4, in2); // eval bls line by xNegOverY - let t18 = circuit_sub(in9, in10); - let t19 = circuit_mul(t18, in1); // eval bls line by yInv - let t20 = circuit_sub(in7, in8); - let t21 = circuit_mul(t20, in2); // eval blsline by xNegOverY - let t22 = circuit_mul(in10, in1); // eval bls line by yInv - let t23 = circuit_mul(in8, in2); // eval bls line by xNegOverY - let t24 = circuit_mul(t15, t0); // Eval sparse poly line_0p_1 step coeff_2 * z^2 - let t25 = circuit_add(t13, t24); // Eval sparse poly line_0p_1 step + coeff_2 * z^2 - let t26 = circuit_add(t25, t1); // Eval sparse poly line_0p_1 step + 1*z^3 - let t27 = circuit_mul(t16, t4); // Eval sparse poly line_0p_1 step coeff_6 * z^6 - let t28 = circuit_add(t26, t27); // Eval sparse poly line_0p_1 step + coeff_6 * z^6 - let t29 = circuit_mul(t17, t6); // Eval sparse poly line_0p_1 step coeff_8 * z^8 - let t30 = circuit_add(t28, t29); // Eval sparse poly line_0p_1 step + coeff_8 * z^8 - let t31 = circuit_mul(t11, t30); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) - let t32 = circuit_mul(t21, t0); // Eval sparse poly line_0p_2 step coeff_2 * z^2 - let t33 = circuit_add(t19, t32); // Eval sparse poly line_0p_2 step + coeff_2 * z^2 - let t34 = circuit_add(t33, t1); // Eval sparse poly line_0p_2 step + 1*z^3 - let t35 = circuit_mul(t22, t4); // Eval sparse poly line_0p_2 step coeff_6 * z^6 - let t36 = circuit_add(t34, t35); // Eval sparse poly line_0p_2 step + coeff_6 * z^6 - let t37 = circuit_mul(t23, t6); // Eval sparse poly line_0p_2 step coeff_8 * z^8 - let t38 = circuit_add(t36, t37); // Eval sparse poly line_0p_2 step + coeff_8 * z^8 - let t39 = circuit_mul(t31, t38); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) - let t40 = circuit_sub(in15, in16); + let t16 = circuit_mul(in10, in1); // eval bls line by yInv + let t17 = circuit_mul(in8, in2); // eval bls line by xNegOverY + let t18 = circuit_mul(t9, t0); // Eval sparse poly line_0p_1 step coeff_2 * z^2 + let t19 = circuit_add(t7, t18); // Eval sparse poly line_0p_1 step + coeff_2 * z^2 + let t20 = circuit_add(t19, t1); // Eval sparse poly line_0p_1 step + 1*z^3 + let t21 = circuit_mul(t10, t2); // Eval sparse poly line_0p_1 step coeff_6 * z^6 + let t22 = circuit_add(t20, t21); // Eval sparse poly line_0p_1 step + coeff_6 * z^6 + let t23 = circuit_mul(t11, t3); // Eval sparse poly line_0p_1 step coeff_8 * z^8 + let t24 = circuit_add(t22, t23); // Eval sparse poly line_0p_1 step + coeff_8 * z^8 + let t25 = circuit_mul(t5, t24); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) + let t26 = circuit_mul(t15, t0); // Eval sparse poly line_0p_2 step coeff_2 * z^2 + let t27 = circuit_add(t13, t26); // Eval sparse poly line_0p_2 step + coeff_2 * z^2 + let t28 = circuit_add(t27, t1); // Eval sparse poly line_0p_2 step + 1*z^3 + let t29 = circuit_mul(t16, t2); // Eval sparse poly line_0p_2 step coeff_6 * z^6 + let t30 = circuit_add(t28, t29); // Eval sparse poly line_0p_2 step + coeff_6 * z^6 + let t31 = circuit_mul(t17, t3); // Eval sparse poly line_0p_2 step coeff_8 * z^8 + let t32 = circuit_add(t30, t31); // Eval sparse poly line_0p_2 step + coeff_8 * z^8 + let t33 = circuit_mul(t25, t32); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) + let t34 = circuit_sub(in15, in16); + let t35 = circuit_mul(t34, in11); // eval bls line by yInv + let t36 = circuit_sub(in13, in14); + let t37 = circuit_mul(t36, in12); // eval blsline by xNegOverY + let t38 = circuit_mul(in16, in11); // eval bls line by yInv + let t39 = circuit_mul(in14, in12); // eval bls line by xNegOverY + let t40 = circuit_sub(in19, in20); let t41 = circuit_mul(t40, in11); // eval bls line by yInv - let t42 = circuit_sub(in13, in14); + let t42 = circuit_sub(in17, in18); let t43 = circuit_mul(t42, in12); // eval blsline by xNegOverY - let t44 = circuit_mul(in16, in11); // eval bls line by yInv - let t45 = circuit_mul(in14, in12); // eval bls line by xNegOverY - let t46 = circuit_sub(in19, in20); - let t47 = circuit_mul(t46, in11); // eval bls line by yInv - let t48 = circuit_sub(in17, in18); - let t49 = circuit_mul(t48, in12); // eval blsline by xNegOverY - let t50 = circuit_mul(in20, in11); // eval bls line by yInv - let t51 = circuit_mul(in18, in12); // eval bls line by xNegOverY - let t52 = circuit_mul(t43, t0); // Eval sparse poly line_1p_1 step coeff_2 * z^2 - let t53 = circuit_add(t41, t52); // Eval sparse poly line_1p_1 step + coeff_2 * z^2 - let t54 = circuit_add(t53, t1); // Eval sparse poly line_1p_1 step + 1*z^3 - let t55 = circuit_mul(t44, t4); // Eval sparse poly line_1p_1 step coeff_6 * z^6 - let t56 = circuit_add(t54, t55); // Eval sparse poly line_1p_1 step + coeff_6 * z^6 - let t57 = circuit_mul(t45, t6); // Eval sparse poly line_1p_1 step coeff_8 * z^8 - let t58 = circuit_add(t56, t57); // Eval sparse poly line_1p_1 step + coeff_8 * z^8 - let t59 = circuit_mul(t39, t58); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) - let t60 = circuit_mul(t49, t0); // Eval sparse poly line_1p_2 step coeff_2 * z^2 - let t61 = circuit_add(t47, t60); // Eval sparse poly line_1p_2 step + coeff_2 * z^2 - let t62 = circuit_add(t61, t1); // Eval sparse poly line_1p_2 step + 1*z^3 - let t63 = circuit_mul(t50, t4); // Eval sparse poly line_1p_2 step coeff_6 * z^6 - let t64 = circuit_add(t62, t63); // Eval sparse poly line_1p_2 step + coeff_6 * z^6 - let t65 = circuit_mul(t51, t6); // Eval sparse poly line_1p_2 step coeff_8 * z^8 - let t66 = circuit_add(t64, t65); // Eval sparse poly line_1p_2 step + coeff_8 * z^8 - let t67 = circuit_mul(t59, t66); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) - let t68 = circuit_sub(in25, in29); // Fp2 sub coeff 0/1 - let t69 = circuit_sub(in26, in30); // Fp2 sub coeff 1/1 - let t70 = circuit_sub(in23, in27); // Fp2 sub coeff 0/1 - let t71 = circuit_sub(in24, in28); // Fp2 sub coeff 1/1 - let t72 = circuit_mul(t70, t70); // Fp2 Div x/y start : Fp2 Inv y start - let t73 = circuit_mul(t71, t71); - let t74 = circuit_add(t72, t73); - let t75 = circuit_inverse(t74); - let t76 = circuit_mul(t70, t75); // Fp2 Inv y real part end - let t77 = circuit_mul(t71, t75); - let t78 = circuit_sub(in0, t77); // Fp2 Inv y imag part end - let t79 = circuit_mul(t68, t76); // Fp2 mul start - let t80 = circuit_mul(t69, t78); - let t81 = circuit_sub(t79, t80); // Fp2 mul real part end - let t82 = circuit_mul(t68, t78); - let t83 = circuit_mul(t69, t76); - let t84 = circuit_add(t82, t83); // Fp2 mul imag part end - let t85 = circuit_add(t81, t84); - let t86 = circuit_sub(t81, t84); - let t87 = circuit_mul(t85, t86); - let t88 = circuit_mul(t81, t84); - let t89 = circuit_add(t88, t88); - let t90 = circuit_add(in23, in27); // Fp2 add coeff 0/1 - let t91 = circuit_add(in24, in28); // Fp2 add coeff 1/1 - let t92 = circuit_sub(t87, t90); // Fp2 sub coeff 0/1 - let t93 = circuit_sub(t89, t91); // Fp2 sub coeff 1/1 - let t94 = circuit_mul(t81, in23); // Fp2 mul start - let t95 = circuit_mul(t84, in24); - let t96 = circuit_sub(t94, t95); // Fp2 mul real part end - let t97 = circuit_mul(t81, in24); - let t98 = circuit_mul(t84, in23); - let t99 = circuit_add(t97, t98); // Fp2 mul imag part end - let t100 = circuit_sub(t96, in25); // Fp2 sub coeff 0/1 - let t101 = circuit_sub(t99, in26); // Fp2 sub coeff 1/1 - let t102 = circuit_add(in25, in25); // Fp2 add coeff 0/1 - let t103 = circuit_add(in26, in26); // Fp2 add coeff 1/1 - let t104 = circuit_sub(t92, in23); // Fp2 sub coeff 0/1 - let t105 = circuit_sub(t93, in24); // Fp2 sub coeff 1/1 - let t106 = circuit_mul(t104, t104); // Fp2 Div x/y start : Fp2 Inv y start - let t107 = circuit_mul(t105, t105); - let t108 = circuit_add(t106, t107); - let t109 = circuit_inverse(t108); - let t110 = circuit_mul(t104, t109); // Fp2 Inv y real part end - let t111 = circuit_mul(t105, t109); - let t112 = circuit_sub(in0, t111); // Fp2 Inv y imag part end - let t113 = circuit_mul(t102, t110); // Fp2 mul start - let t114 = circuit_mul(t103, t112); - let t115 = circuit_sub(t113, t114); // Fp2 mul real part end - let t116 = circuit_mul(t102, t112); - let t117 = circuit_mul(t103, t110); - let t118 = circuit_add(t116, t117); // Fp2 mul imag part end - let t119 = circuit_add(t81, t115); // Fp2 add coeff 0/1 - let t120 = circuit_add(t84, t118); // Fp2 add coeff 1/1 - let t121 = circuit_sub(in0, t119); // Fp2 neg coeff 0/1 - let t122 = circuit_sub(in0, t120); // Fp2 neg coeff 1/1 - let t123 = circuit_add(t121, t122); - let t124 = circuit_sub(t121, t122); - let t125 = circuit_mul(t123, t124); - let t126 = circuit_mul(t121, t122); - let t127 = circuit_add(t126, t126); - let t128 = circuit_sub(t125, in23); // Fp2 sub coeff 0/1 - let t129 = circuit_sub(t127, in24); // Fp2 sub coeff 1/1 - let t130 = circuit_sub(t128, t92); // Fp2 sub coeff 0/1 - let t131 = circuit_sub(t129, t93); // Fp2 sub coeff 1/1 - let t132 = circuit_sub(in23, t130); // Fp2 sub coeff 0/1 - let t133 = circuit_sub(in24, t131); // Fp2 sub coeff 1/1 - let t134 = circuit_mul(t121, t132); // Fp2 mul start - let t135 = circuit_mul(t122, t133); - let t136 = circuit_sub(t134, t135); // Fp2 mul real part end - let t137 = circuit_mul(t121, t133); - let t138 = circuit_mul(t122, t132); - let t139 = circuit_add(t137, t138); // Fp2 mul imag part end - let t140 = circuit_sub(t136, in25); // Fp2 sub coeff 0/1 - let t141 = circuit_sub(t139, in26); // Fp2 sub coeff 1/1 - let t142 = circuit_mul(t121, in23); // Fp2 mul start - let t143 = circuit_mul(t122, in24); - let t144 = circuit_sub(t142, t143); // Fp2 mul real part end - let t145 = circuit_mul(t121, in24); - let t146 = circuit_mul(t122, in23); - let t147 = circuit_add(t145, t146); // Fp2 mul imag part end - let t148 = circuit_sub(t144, in25); // Fp2 sub coeff 0/1 - let t149 = circuit_sub(t147, in26); // Fp2 sub coeff 1/1 - let t150 = circuit_sub(t100, t101); + let t44 = circuit_mul(in20, in11); // eval bls line by yInv + let t45 = circuit_mul(in18, in12); // eval bls line by xNegOverY + let t46 = circuit_mul(t37, t0); // Eval sparse poly line_1p_1 step coeff_2 * z^2 + let t47 = circuit_add(t35, t46); // Eval sparse poly line_1p_1 step + coeff_2 * z^2 + let t48 = circuit_add(t47, t1); // Eval sparse poly line_1p_1 step + 1*z^3 + let t49 = circuit_mul(t38, t2); // Eval sparse poly line_1p_1 step coeff_6 * z^6 + let t50 = circuit_add(t48, t49); // Eval sparse poly line_1p_1 step + coeff_6 * z^6 + let t51 = circuit_mul(t39, t3); // Eval sparse poly line_1p_1 step coeff_8 * z^8 + let t52 = circuit_add(t50, t51); // Eval sparse poly line_1p_1 step + coeff_8 * z^8 + let t53 = circuit_mul(t33, t52); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) + let t54 = circuit_mul(t43, t0); // Eval sparse poly line_1p_2 step coeff_2 * z^2 + let t55 = circuit_add(t41, t54); // Eval sparse poly line_1p_2 step + coeff_2 * z^2 + let t56 = circuit_add(t55, t1); // Eval sparse poly line_1p_2 step + 1*z^3 + let t57 = circuit_mul(t44, t2); // Eval sparse poly line_1p_2 step coeff_6 * z^6 + let t58 = circuit_add(t56, t57); // Eval sparse poly line_1p_2 step + coeff_6 * z^6 + let t59 = circuit_mul(t45, t3); // Eval sparse poly line_1p_2 step coeff_8 * z^8 + let t60 = circuit_add(t58, t59); // Eval sparse poly line_1p_2 step + coeff_8 * z^8 + let t61 = circuit_mul(t53, t60); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) + let t62 = circuit_sub(in25, in29); // Fp2 sub coeff 0/1 + let t63 = circuit_sub(in26, in30); // Fp2 sub coeff 1/1 + let t64 = circuit_sub(in23, in27); // Fp2 sub coeff 0/1 + let t65 = circuit_sub(in24, in28); // Fp2 sub coeff 1/1 + let t66 = circuit_mul(t64, t64); // Fp2 Div x/y start : Fp2 Inv y start + let t67 = circuit_mul(t65, t65); + let t68 = circuit_add(t66, t67); + let t69 = circuit_inverse(t68); + let t70 = circuit_mul(t64, t69); // Fp2 Inv y real part end + let t71 = circuit_mul(t65, t69); + let t72 = circuit_sub(in0, t71); // Fp2 Inv y imag part end + let t73 = circuit_mul(t62, t70); // Fp2 mul start + let t74 = circuit_mul(t63, t72); + let t75 = circuit_sub(t73, t74); // Fp2 mul real part end + let t76 = circuit_mul(t62, t72); + let t77 = circuit_mul(t63, t70); + let t78 = circuit_add(t76, t77); // Fp2 mul imag part end + let t79 = circuit_add(t75, t78); + let t80 = circuit_sub(t75, t78); + let t81 = circuit_mul(t79, t80); + let t82 = circuit_mul(t75, t78); + let t83 = circuit_add(t82, t82); + let t84 = circuit_add(in23, in27); // Fp2 add coeff 0/1 + let t85 = circuit_add(in24, in28); // Fp2 add coeff 1/1 + let t86 = circuit_sub(t81, t84); // Fp2 sub coeff 0/1 + let t87 = circuit_sub(t83, t85); // Fp2 sub coeff 1/1 + let t88 = circuit_mul(t75, in23); // Fp2 mul start + let t89 = circuit_mul(t78, in24); + let t90 = circuit_sub(t88, t89); // Fp2 mul real part end + let t91 = circuit_mul(t75, in24); + let t92 = circuit_mul(t78, in23); + let t93 = circuit_add(t91, t92); // Fp2 mul imag part end + let t94 = circuit_sub(t90, in25); // Fp2 sub coeff 0/1 + let t95 = circuit_sub(t93, in26); // Fp2 sub coeff 1/1 + let t96 = circuit_add(in25, in25); // Fp2 add coeff 0/1 + let t97 = circuit_add(in26, in26); // Fp2 add coeff 1/1 + let t98 = circuit_sub(t86, in23); // Fp2 sub coeff 0/1 + let t99 = circuit_sub(t87, in24); // Fp2 sub coeff 1/1 + let t100 = circuit_mul(t98, t98); // Fp2 Div x/y start : Fp2 Inv y start + let t101 = circuit_mul(t99, t99); + let t102 = circuit_add(t100, t101); + let t103 = circuit_inverse(t102); + let t104 = circuit_mul(t98, t103); // Fp2 Inv y real part end + let t105 = circuit_mul(t99, t103); + let t106 = circuit_sub(in0, t105); // Fp2 Inv y imag part end + let t107 = circuit_mul(t96, t104); // Fp2 mul start + let t108 = circuit_mul(t97, t106); + let t109 = circuit_sub(t107, t108); // Fp2 mul real part end + let t110 = circuit_mul(t96, t106); + let t111 = circuit_mul(t97, t104); + let t112 = circuit_add(t110, t111); // Fp2 mul imag part end + let t113 = circuit_add(t75, t109); // Fp2 add coeff 0/1 + let t114 = circuit_add(t78, t112); // Fp2 add coeff 1/1 + let t115 = circuit_sub(in0, t113); // Fp2 neg coeff 0/1 + let t116 = circuit_sub(in0, t114); // Fp2 neg coeff 1/1 + let t117 = circuit_add(t115, t116); + let t118 = circuit_sub(t115, t116); + let t119 = circuit_mul(t117, t118); + let t120 = circuit_mul(t115, t116); + let t121 = circuit_add(t120, t120); + let t122 = circuit_sub(t119, in23); // Fp2 sub coeff 0/1 + let t123 = circuit_sub(t121, in24); // Fp2 sub coeff 1/1 + let t124 = circuit_sub(t122, t86); // Fp2 sub coeff 0/1 + let t125 = circuit_sub(t123, t87); // Fp2 sub coeff 1/1 + let t126 = circuit_sub(in23, t124); // Fp2 sub coeff 0/1 + let t127 = circuit_sub(in24, t125); // Fp2 sub coeff 1/1 + let t128 = circuit_mul(t115, t126); // Fp2 mul start + let t129 = circuit_mul(t116, t127); + let t130 = circuit_sub(t128, t129); // Fp2 mul real part end + let t131 = circuit_mul(t115, t127); + let t132 = circuit_mul(t116, t126); + let t133 = circuit_add(t131, t132); // Fp2 mul imag part end + let t134 = circuit_sub(t130, in25); // Fp2 sub coeff 0/1 + let t135 = circuit_sub(t133, in26); // Fp2 sub coeff 1/1 + let t136 = circuit_mul(t115, in23); // Fp2 mul start + let t137 = circuit_mul(t116, in24); + let t138 = circuit_sub(t136, t137); // Fp2 mul real part end + let t139 = circuit_mul(t115, in24); + let t140 = circuit_mul(t116, in23); + let t141 = circuit_add(t139, t140); // Fp2 mul imag part end + let t142 = circuit_sub(t138, in25); // Fp2 sub coeff 0/1 + let t143 = circuit_sub(t141, in26); // Fp2 sub coeff 1/1 + let t144 = circuit_sub(t94, t95); + let t145 = circuit_mul(t144, in21); // eval bls line by yInv + let t146 = circuit_sub(t75, t78); + let t147 = circuit_mul(t146, in22); // eval blsline by xNegOverY + let t148 = circuit_mul(t95, in21); // eval bls line by yInv + let t149 = circuit_mul(t78, in22); // eval bls line by xNegOverY + let t150 = circuit_sub(t142, t143); let t151 = circuit_mul(t150, in21); // eval bls line by yInv - let t152 = circuit_sub(t81, t84); + let t152 = circuit_sub(t115, t116); let t153 = circuit_mul(t152, in22); // eval blsline by xNegOverY - let t154 = circuit_mul(t101, in21); // eval bls line by yInv - let t155 = circuit_mul(t84, in22); // eval bls line by xNegOverY - let t156 = circuit_sub(t148, t149); - let t157 = circuit_mul(t156, in21); // eval bls line by yInv - let t158 = circuit_sub(t121, t122); - let t159 = circuit_mul(t158, in22); // eval blsline by xNegOverY - let t160 = circuit_mul(t149, in21); // eval bls line by yInv - let t161 = circuit_mul(t122, in22); // eval bls line by xNegOverY - let t162 = circuit_mul(t153, t0); // Eval sparse poly line_2p_1 step coeff_2 * z^2 - let t163 = circuit_add(t151, t162); // Eval sparse poly line_2p_1 step + coeff_2 * z^2 - let t164 = circuit_add(t163, t1); // Eval sparse poly line_2p_1 step + 1*z^3 - let t165 = circuit_mul(t154, t4); // Eval sparse poly line_2p_1 step coeff_6 * z^6 - let t166 = circuit_add(t164, t165); // Eval sparse poly line_2p_1 step + coeff_6 * z^6 - let t167 = circuit_mul(t155, t6); // Eval sparse poly line_2p_1 step coeff_8 * z^8 - let t168 = circuit_add(t166, t167); // Eval sparse poly line_2p_1 step + coeff_8 * z^8 - let t169 = circuit_mul(t67, t168); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_2(z) - let t170 = circuit_mul(t159, t0); // Eval sparse poly line_2p_2 step coeff_2 * z^2 - let t171 = circuit_add(t157, t170); // Eval sparse poly line_2p_2 step + coeff_2 * z^2 - let t172 = circuit_add(t171, t1); // Eval sparse poly line_2p_2 step + 1*z^3 - let t173 = circuit_mul(t160, t4); // Eval sparse poly line_2p_2 step coeff_6 * z^6 - let t174 = circuit_add(t172, t173); // Eval sparse poly line_2p_2 step + coeff_6 * z^6 - let t175 = circuit_mul(t161, t6); // Eval sparse poly line_2p_2 step coeff_8 * z^8 - let t176 = circuit_add(t174, t175); // Eval sparse poly line_2p_2 step + coeff_8 * z^8 - let t177 = circuit_mul(t169, t176); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_2(z) - let t178 = circuit_mul(t177, in45); - let t179 = circuit_mul(in34, in46); // Eval f_i+1 step coeff_1 * z^1 - let t180 = circuit_add(in33, t179); // Eval f_i+1 step + (coeff_1 * z^1) - let t181 = circuit_mul(in35, t0); // Eval f_i+1 step coeff_2 * z^2 - let t182 = circuit_add(t180, t181); // Eval f_i+1 step + (coeff_2 * z^2) - let t183 = circuit_mul(in36, t1); // Eval f_i+1 step coeff_3 * z^3 - let t184 = circuit_add(t182, t183); // Eval f_i+1 step + (coeff_3 * z^3) - let t185 = circuit_mul(in37, t2); // Eval f_i+1 step coeff_4 * z^4 - let t186 = circuit_add(t184, t185); // Eval f_i+1 step + (coeff_4 * z^4) - let t187 = circuit_mul(in38, t3); // Eval f_i+1 step coeff_5 * z^5 - let t188 = circuit_add(t186, t187); // Eval f_i+1 step + (coeff_5 * z^5) - let t189 = circuit_mul(in39, t4); // Eval f_i+1 step coeff_6 * z^6 - let t190 = circuit_add(t188, t189); // Eval f_i+1 step + (coeff_6 * z^6) - let t191 = circuit_mul(in40, t5); // Eval f_i+1 step coeff_7 * z^7 - let t192 = circuit_add(t190, t191); // Eval f_i+1 step + (coeff_7 * z^7) - let t193 = circuit_mul(in41, t6); // Eval f_i+1 step coeff_8 * z^8 - let t194 = circuit_add(t192, t193); // Eval f_i+1 step + (coeff_8 * z^8) - let t195 = circuit_mul(in42, t7); // Eval f_i+1 step coeff_9 * z^9 - let t196 = circuit_add(t194, t195); // Eval f_i+1 step + (coeff_9 * z^9) - let t197 = circuit_mul(in43, t8); // Eval f_i+1 step coeff_10 * z^10 - let t198 = circuit_add(t196, t197); // Eval f_i+1 step + (coeff_10 * z^10) - let t199 = circuit_mul(in44, t9); // Eval f_i+1 step coeff_11 * z^11 - let t200 = circuit_add(t198, t199); // Eval f_i+1 step + (coeff_11 * z^11) - let t201 = circuit_sub(t178, t200); // (螤(i,k) (Pk(z))) - Ri(z) - let t202 = circuit_mul(t10, t201); // ci * ((螤(i,k) (Pk(z)) - Ri(z)) - let t203 = circuit_add(in31, t202); // LHS = LHS + ci * ((螤(i,k) (Pk(z)) - Ri(z)) + let t154 = circuit_mul(t143, in21); // eval bls line by yInv + let t155 = circuit_mul(t116, in22); // eval bls line by xNegOverY + let t156 = circuit_mul(t147, t0); // Eval sparse poly line_2p_1 step coeff_2 * z^2 + let t157 = circuit_add(t145, t156); // Eval sparse poly line_2p_1 step + coeff_2 * z^2 + let t158 = circuit_add(t157, t1); // Eval sparse poly line_2p_1 step + 1*z^3 + let t159 = circuit_mul(t148, t2); // Eval sparse poly line_2p_1 step coeff_6 * z^6 + let t160 = circuit_add(t158, t159); // Eval sparse poly line_2p_1 step + coeff_6 * z^6 + let t161 = circuit_mul(t149, t3); // Eval sparse poly line_2p_1 step coeff_8 * z^8 + let t162 = circuit_add(t160, t161); // Eval sparse poly line_2p_1 step + coeff_8 * z^8 + let t163 = circuit_mul(t61, t162); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_2(z) + let t164 = circuit_mul(t153, t0); // Eval sparse poly line_2p_2 step coeff_2 * z^2 + let t165 = circuit_add(t151, t164); // Eval sparse poly line_2p_2 step + coeff_2 * z^2 + let t166 = circuit_add(t165, t1); // Eval sparse poly line_2p_2 step + 1*z^3 + let t167 = circuit_mul(t154, t2); // Eval sparse poly line_2p_2 step coeff_6 * z^6 + let t168 = circuit_add(t166, t167); // Eval sparse poly line_2p_2 step + coeff_6 * z^6 + let t169 = circuit_mul(t155, t3); // Eval sparse poly line_2p_2 step coeff_8 * z^8 + let t170 = circuit_add(t168, t169); // Eval sparse poly line_2p_2 step + coeff_8 * z^8 + let t171 = circuit_mul(t163, t170); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_2(z) + let t172 = circuit_mul(t171, in34); + let t173 = circuit_sub(t172, in33); // (螤(i,k) (Pk(z))) - Ri(z) + let t174 = circuit_mul(t4, t173); // ci * ((螤(i,k) (Pk(z)) - Ri(z)) + let t175 = circuit_add(in31, t174); // LHS = LHS + ci * ((螤(i,k) (Pk(z)) - Ri(z)) let modulus = TryInto::< _, CircuitModulus @@ -1354,72 +1090,57 @@ fn run_BLS12_381_MP_CHECK_BIT1_3P_2F_circuit( ) .unwrap(); // BLS12_381 prime field modulus - let mut circuit_inputs = (t130, t131, t140, t141, t200, t203, t10,).new_inputs(); + let mut circuit_inputs = (t124, t125, t134, t135, t175, t4,).new_inputs(); // Prefill constants: - circuit_inputs = circuit_inputs.next([0x0, 0x0, 0x0, 0x0]); // in0 + circuit_inputs = circuit_inputs.next_2([0x0, 0x0, 0x0, 0x0]); // in0 // Fill inputs: - circuit_inputs = circuit_inputs.next(yInv_0); // in1 - circuit_inputs = circuit_inputs.next(xNegOverY_0); // in2 - circuit_inputs = circuit_inputs.next(G2_line_0.r0a0); // in3 - circuit_inputs = circuit_inputs.next(G2_line_0.r0a1); // in4 - circuit_inputs = circuit_inputs.next(G2_line_0.r1a0); // in5 - circuit_inputs = circuit_inputs.next(G2_line_0.r1a1); // in6 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_line0.r0a0); // in7 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_line0.r0a1); // in8 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_line0.r1a0); // in9 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_line0.r1a1); // in10 - circuit_inputs = circuit_inputs.next(yInv_1); // in11 - circuit_inputs = circuit_inputs.next(xNegOverY_1); // in12 - circuit_inputs = circuit_inputs.next(G2_line_1.r0a0); // in13 - circuit_inputs = circuit_inputs.next(G2_line_1.r0a1); // in14 - circuit_inputs = circuit_inputs.next(G2_line_1.r1a0); // in15 - circuit_inputs = circuit_inputs.next(G2_line_1.r1a1); // in16 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_line1.r0a0); // in17 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_line1.r0a1); // in18 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_line1.r1a0); // in19 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_line1.r1a1); // in20 - circuit_inputs = circuit_inputs.next(yInv_2); // in21 - circuit_inputs = circuit_inputs.next(xNegOverY_2); // in22 - circuit_inputs = circuit_inputs.next(Q_2.x0); // in23 - circuit_inputs = circuit_inputs.next(Q_2.x1); // in24 - circuit_inputs = circuit_inputs.next(Q_2.y0); // in25 - circuit_inputs = circuit_inputs.next(Q_2.y1); // in26 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_2.x0); // in27 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_2.x1); // in28 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_2.y0); // in29 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_2.y1); // in30 - circuit_inputs = circuit_inputs.next(lhs_i); // in31 - circuit_inputs = circuit_inputs.next(f_i_of_z); // in32 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w0); // in33 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w1); // in34 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w2); // in35 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w3); // in36 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w4); // in37 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w5); // in38 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w6); // in39 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w7); // in40 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w8); // in41 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w9); // in42 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w10); // in43 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w11); // in44 - circuit_inputs = circuit_inputs.next(c_or_cinv_of_z); // in45 - circuit_inputs = circuit_inputs.next(z); // in46 - circuit_inputs = circuit_inputs.next(ci); // in47 + circuit_inputs = circuit_inputs.next_2(yInv_0); // in1 + circuit_inputs = circuit_inputs.next_2(xNegOverY_0); // in2 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r0a0); // in3 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r0a1); // in4 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r1a0); // in5 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r1a1); // in6 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_line0.r0a0); // in7 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_line0.r0a1); // in8 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_line0.r1a0); // in9 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_line0.r1a1); // in10 + circuit_inputs = circuit_inputs.next_2(yInv_1); // in11 + circuit_inputs = circuit_inputs.next_2(xNegOverY_1); // in12 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r0a0); // in13 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r0a1); // in14 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r1a0); // in15 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r1a1); // in16 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_line1.r0a0); // in17 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_line1.r0a1); // in18 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_line1.r1a0); // in19 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_line1.r1a1); // in20 + circuit_inputs = circuit_inputs.next_2(yInv_2); // in21 + circuit_inputs = circuit_inputs.next_2(xNegOverY_2); // in22 + circuit_inputs = circuit_inputs.next_2(Q_2.x0); // in23 + circuit_inputs = circuit_inputs.next_2(Q_2.x1); // in24 + circuit_inputs = circuit_inputs.next_2(Q_2.y0); // in25 + circuit_inputs = circuit_inputs.next_2(Q_2.y1); // in26 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_2.x0); // in27 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_2.x1); // in28 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_2.y0); // in29 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_2.y1); // in30 + circuit_inputs = circuit_inputs.next_2(lhs_i); // in31 + circuit_inputs = circuit_inputs.next_2(f_i_of_z); // in32 + circuit_inputs = circuit_inputs.next_2(f_i_plus_one_of_z); // in33 + circuit_inputs = circuit_inputs.next_2(c_or_cinv_of_z); // in34 + circuit_inputs = circuit_inputs.next_2(z); // in35 + circuit_inputs = circuit_inputs.next_2(ci); // in36 - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); let Q0: G2Point = G2Point { - x0: outputs.get_output(t130), - x1: outputs.get_output(t131), - y0: outputs.get_output(t140), - y1: outputs.get_output(t141) + x0: outputs.get_output(t124), + x1: outputs.get_output(t125), + y0: outputs.get_output(t134), + y1: outputs.get_output(t135) }; - let f_i_plus_one_of_z: u384 = outputs.get_output(t200); - let lhs_i_plus_one: u384 = outputs.get_output(t203); - let ci_plus_one: u384 = outputs.get_output(t10); - return (Q0, f_i_plus_one_of_z, lhs_i_plus_one, ci_plus_one); + let lhs_i_plus_one: u384 = outputs.get_output(t175); + let ci_plus_one: u384 = outputs.get_output(t4); + return (Q0, lhs_i_plus_one, ci_plus_one); } fn run_BLS12_381_MP_CHECK_FINALIZE_BLS_2P_circuit( R_n_minus_1: E12D, @@ -1756,9 +1477,9 @@ fn run_BLS12_381_MP_CHECK_FINALIZE_BLS_2P_circuit( let mut circuit_inputs = (t271,).new_inputs(); // Prefill constants: - circuit_inputs = circuit_inputs.next([0x2, 0x0, 0x0, 0x0]); // in0 + circuit_inputs = circuit_inputs.next_2([0x2, 0x0, 0x0, 0x0]); // in0 circuit_inputs = circuit_inputs - .next( + .next_2( [ 0xb153ffffb9feffffffffaaa9, 0x6730d2a0f6b0f6241eabfffe, @@ -1767,35 +1488,32 @@ fn run_BLS12_381_MP_CHECK_FINALIZE_BLS_2P_circuit( ] ); // in1 // Fill inputs: - circuit_inputs = circuit_inputs.next(R_n_minus_1.w0); // in2 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w1); // in3 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w2); // in4 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w3); // in5 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w4); // in6 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w5); // in7 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w6); // in8 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w7); // in9 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w8); // in10 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w9); // in11 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w10); // in12 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w11); // in13 - circuit_inputs = circuit_inputs.next(c_n_minus_2); // in14 - circuit_inputs = circuit_inputs.next(w_of_z); // in15 - circuit_inputs = circuit_inputs.next(z); // in16 - circuit_inputs = circuit_inputs.next(c_inv_frob_1_of_z); // in17 - circuit_inputs = circuit_inputs.next(previous_lhs); // in18 - circuit_inputs = circuit_inputs.next(R_n_minus_2_of_z); // in19 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w0); // in2 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w1); // in3 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w2); // in4 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w3); // in5 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w4); // in6 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w5); // in7 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w6); // in8 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w7); // in9 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w8); // in10 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w9); // in11 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w10); // in12 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w11); // in13 + circuit_inputs = circuit_inputs.next_2(c_n_minus_2); // in14 + circuit_inputs = circuit_inputs.next_2(w_of_z); // in15 + circuit_inputs = circuit_inputs.next_2(z); // in16 + circuit_inputs = circuit_inputs.next_2(c_inv_frob_1_of_z); // in17 + circuit_inputs = circuit_inputs.next_2(previous_lhs); // in18 + circuit_inputs = circuit_inputs.next_2(R_n_minus_2_of_z); // in19 let mut Q = Q; while let Option::Some(val) = Q.pop_front() { - circuit_inputs = circuit_inputs.next(val); + circuit_inputs = circuit_inputs.next_2(val); }; // in20 - in100 - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); let final_check: u384 = outputs.get_output(t271); return (final_check,); } @@ -2214,9 +1932,9 @@ fn run_BLS12_381_MP_CHECK_FINALIZE_BLS_3P_circuit( let mut circuit_inputs = (t343,).new_inputs(); // Prefill constants: - circuit_inputs = circuit_inputs.next([0x2, 0x0, 0x0, 0x0]); // in0 + circuit_inputs = circuit_inputs.next_2([0x2, 0x0, 0x0, 0x0]); // in0 circuit_inputs = circuit_inputs - .next( + .next_2( [ 0xb153ffffb9feffffffffaaa9, 0x6730d2a0f6b0f6241eabfffe, @@ -2225,35 +1943,32 @@ fn run_BLS12_381_MP_CHECK_FINALIZE_BLS_3P_circuit( ] ); // in1 // Fill inputs: - circuit_inputs = circuit_inputs.next(R_n_minus_1.w0); // in2 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w1); // in3 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w2); // in4 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w3); // in5 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w4); // in6 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w5); // in7 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w6); // in8 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w7); // in9 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w8); // in10 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w9); // in11 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w10); // in12 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w11); // in13 - circuit_inputs = circuit_inputs.next(c_n_minus_2); // in14 - circuit_inputs = circuit_inputs.next(w_of_z); // in15 - circuit_inputs = circuit_inputs.next(z); // in16 - circuit_inputs = circuit_inputs.next(c_inv_frob_1_of_z); // in17 - circuit_inputs = circuit_inputs.next(previous_lhs); // in18 - circuit_inputs = circuit_inputs.next(R_n_minus_2_of_z); // in19 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w0); // in2 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w1); // in3 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w2); // in4 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w3); // in5 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w4); // in6 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w5); // in7 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w6); // in8 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w7); // in9 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w8); // in10 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w9); // in11 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w10); // in12 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w11); // in13 + circuit_inputs = circuit_inputs.next_2(c_n_minus_2); // in14 + circuit_inputs = circuit_inputs.next_2(w_of_z); // in15 + circuit_inputs = circuit_inputs.next_2(z); // in16 + circuit_inputs = circuit_inputs.next_2(c_inv_frob_1_of_z); // in17 + circuit_inputs = circuit_inputs.next_2(previous_lhs); // in18 + circuit_inputs = circuit_inputs.next_2(R_n_minus_2_of_z); // in19 let mut Q = Q; while let Option::Some(val) = Q.pop_front() { - circuit_inputs = circuit_inputs.next(val); + circuit_inputs = circuit_inputs.next_2(val); }; // in20 - in124 - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); let final_check: u384 = outputs.get_output(t343); return (final_check,); } @@ -2266,11 +1981,11 @@ fn run_BLS12_381_MP_CHECK_INIT_BIT_2P_2F_circuit( xNegOverY_1: u384, G2_line_1: G2Line, G2_line_1_2: G2Line, - R_i: E12D, + R_i_of_z: u384, c0: u384, z: u384, c_inv_of_z: u384 -) -> (u384, u384) { +) -> (u384,) { // INPUT stack let (in0, in1, in2) = (CE::> {}, CE::> {}, CE::> {}); let (in3, in4, in5) = (CE::> {}, CE::> {}, CE::> {}); @@ -2280,102 +1995,70 @@ fn run_BLS12_381_MP_CHECK_INIT_BIT_2P_2F_circuit( let (in15, in16, in17) = (CE::> {}, CE::> {}, CE::> {}); let (in18, in19, in20) = (CE::> {}, CE::> {}, CE::> {}); let (in21, in22, in23) = (CE::> {}, CE::> {}, CE::> {}); - let (in24, in25, in26) = (CE::> {}, CE::> {}, CE::> {}); - let (in27, in28, in29) = (CE::> {}, CE::> {}, CE::> {}); - let (in30, in31, in32) = (CE::> {}, CE::> {}, CE::> {}); - let (in33, in34) = (CE::> {}, CE::> {}); - let t0 = circuit_mul(in33, in33); // Compute z^2 - let t1 = circuit_mul(t0, in33); // Compute z^3 - let t2 = circuit_mul(t1, in33); // Compute z^4 - let t3 = circuit_mul(t2, in33); // Compute z^5 - let t4 = circuit_mul(t3, in33); // Compute z^6 - let t5 = circuit_mul(t4, in33); // Compute z^7 - let t6 = circuit_mul(t5, in33); // Compute z^8 - let t7 = circuit_mul(t6, in33); // Compute z^9 - let t8 = circuit_mul(t7, in33); // Compute z^10 - let t9 = circuit_mul(t8, in33); // Compute z^11 - let t10 = circuit_mul(in21, in33); // Eval R step coeff_1 * z^1 - let t11 = circuit_add(in20, t10); // Eval R step + (coeff_1 * z^1) - let t12 = circuit_mul(in22, t0); // Eval R step coeff_2 * z^2 - let t13 = circuit_add(t11, t12); // Eval R step + (coeff_2 * z^2) - let t14 = circuit_mul(in23, t1); // Eval R step coeff_3 * z^3 - let t15 = circuit_add(t13, t14); // Eval R step + (coeff_3 * z^3) - let t16 = circuit_mul(in24, t2); // Eval R step coeff_4 * z^4 - let t17 = circuit_add(t15, t16); // Eval R step + (coeff_4 * z^4) - let t18 = circuit_mul(in25, t3); // Eval R step coeff_5 * z^5 - let t19 = circuit_add(t17, t18); // Eval R step + (coeff_5 * z^5) - let t20 = circuit_mul(in26, t4); // Eval R step coeff_6 * z^6 - let t21 = circuit_add(t19, t20); // Eval R step + (coeff_6 * z^6) - let t22 = circuit_mul(in27, t5); // Eval R step coeff_7 * z^7 - let t23 = circuit_add(t21, t22); // Eval R step + (coeff_7 * z^7) - let t24 = circuit_mul(in28, t6); // Eval R step coeff_8 * z^8 - let t25 = circuit_add(t23, t24); // Eval R step + (coeff_8 * z^8) - let t26 = circuit_mul(in29, t7); // Eval R step coeff_9 * z^9 - let t27 = circuit_add(t25, t26); // Eval R step + (coeff_9 * z^9) - let t28 = circuit_mul(in30, t8); // Eval R step coeff_10 * z^10 - let t29 = circuit_add(t27, t28); // Eval R step + (coeff_10 * z^10) - let t30 = circuit_mul(in31, t9); // Eval R step coeff_11 * z^11 - let t31 = circuit_add(t29, t30); // Eval R step + (coeff_11 * z^11) - let t32 = circuit_mul(in34, in34); - let t33 = circuit_mul(in34, t32); - let t34 = circuit_sub(in4, in5); - let t35 = circuit_mul(t34, in0); // eval bls line by yInv - let t36 = circuit_sub(in2, in3); - let t37 = circuit_mul(t36, in1); // eval blsline by xNegOverY - let t38 = circuit_mul(in5, in0); // eval bls line by yInv - let t39 = circuit_mul(in3, in1); // eval bls line by xNegOverY - let t40 = circuit_sub(in8, in9); - let t41 = circuit_mul(t40, in0); // eval bls line by yInv - let t42 = circuit_sub(in6, in7); - let t43 = circuit_mul(t42, in1); // eval blsline by xNegOverY - let t44 = circuit_mul(in9, in0); // eval bls line by yInv - let t45 = circuit_mul(in7, in1); // eval bls line by xNegOverY - let t46 = circuit_mul(t37, t0); // Eval sparse poly line_0p_1 step coeff_2 * z^2 - let t47 = circuit_add(t35, t46); // Eval sparse poly line_0p_1 step + coeff_2 * z^2 - let t48 = circuit_add(t47, t1); // Eval sparse poly line_0p_1 step + 1*z^3 - let t49 = circuit_mul(t38, t4); // Eval sparse poly line_0p_1 step coeff_6 * z^6 - let t50 = circuit_add(t48, t49); // Eval sparse poly line_0p_1 step + coeff_6 * z^6 - let t51 = circuit_mul(t39, t6); // Eval sparse poly line_0p_1 step coeff_8 * z^8 - let t52 = circuit_add(t50, t51); // Eval sparse poly line_0p_1 step + coeff_8 * z^8 + let t0 = circuit_mul(in22, in22); // compute z^2 + let t1 = circuit_mul(t0, in22); // compute z^3 + let t2 = circuit_mul(t1, t1); // compute z^6 + let t3 = circuit_mul(t2, t0); // compute z^8 + let t4 = circuit_mul(in23, in23); + let t5 = circuit_mul(in23, t4); + let t6 = circuit_sub(in4, in5); + let t7 = circuit_mul(t6, in0); // eval bls line by yInv + let t8 = circuit_sub(in2, in3); + let t9 = circuit_mul(t8, in1); // eval blsline by xNegOverY + let t10 = circuit_mul(in5, in0); // eval bls line by yInv + let t11 = circuit_mul(in3, in1); // eval bls line by xNegOverY + let t12 = circuit_sub(in8, in9); + let t13 = circuit_mul(t12, in0); // eval bls line by yInv + let t14 = circuit_sub(in6, in7); + let t15 = circuit_mul(t14, in1); // eval blsline by xNegOverY + let t16 = circuit_mul(in9, in0); // eval bls line by yInv + let t17 = circuit_mul(in7, in1); // eval bls line by xNegOverY + let t18 = circuit_mul(t9, t0); // Eval sparse poly line_0p_1 step coeff_2 * z^2 + let t19 = circuit_add(t7, t18); // Eval sparse poly line_0p_1 step + coeff_2 * z^2 + let t20 = circuit_add(t19, t1); // Eval sparse poly line_0p_1 step + 1*z^3 + let t21 = circuit_mul(t10, t2); // Eval sparse poly line_0p_1 step coeff_6 * z^6 + let t22 = circuit_add(t20, t21); // Eval sparse poly line_0p_1 step + coeff_6 * z^6 + let t23 = circuit_mul(t11, t3); // Eval sparse poly line_0p_1 step coeff_8 * z^8 + let t24 = circuit_add(t22, t23); // Eval sparse poly line_0p_1 step + coeff_8 * z^8 + let t25 = circuit_mul(t5, t24); + let t26 = circuit_mul(t15, t0); // Eval sparse poly line_0p_2 step coeff_2 * z^2 + let t27 = circuit_add(t13, t26); // Eval sparse poly line_0p_2 step + coeff_2 * z^2 + let t28 = circuit_add(t27, t1); // Eval sparse poly line_0p_2 step + 1*z^3 + let t29 = circuit_mul(t16, t2); // Eval sparse poly line_0p_2 step coeff_6 * z^6 + let t30 = circuit_add(t28, t29); // Eval sparse poly line_0p_2 step + coeff_6 * z^6 + let t31 = circuit_mul(t17, t3); // Eval sparse poly line_0p_2 step coeff_8 * z^8 + let t32 = circuit_add(t30, t31); // Eval sparse poly line_0p_2 step + coeff_8 * z^8 + let t33 = circuit_mul(t25, t32); + let t34 = circuit_sub(in14, in15); + let t35 = circuit_mul(t34, in10); // eval bls line by yInv + let t36 = circuit_sub(in12, in13); + let t37 = circuit_mul(t36, in11); // eval blsline by xNegOverY + let t38 = circuit_mul(in15, in10); // eval bls line by yInv + let t39 = circuit_mul(in13, in11); // eval bls line by xNegOverY + let t40 = circuit_sub(in18, in19); + let t41 = circuit_mul(t40, in10); // eval bls line by yInv + let t42 = circuit_sub(in16, in17); + let t43 = circuit_mul(t42, in11); // eval blsline by xNegOverY + let t44 = circuit_mul(in19, in10); // eval bls line by yInv + let t45 = circuit_mul(in17, in11); // eval bls line by xNegOverY + let t46 = circuit_mul(t37, t0); // Eval sparse poly line_1p_1 step coeff_2 * z^2 + let t47 = circuit_add(t35, t46); // Eval sparse poly line_1p_1 step + coeff_2 * z^2 + let t48 = circuit_add(t47, t1); // Eval sparse poly line_1p_1 step + 1*z^3 + let t49 = circuit_mul(t38, t2); // Eval sparse poly line_1p_1 step coeff_6 * z^6 + let t50 = circuit_add(t48, t49); // Eval sparse poly line_1p_1 step + coeff_6 * z^6 + let t51 = circuit_mul(t39, t3); // Eval sparse poly line_1p_1 step coeff_8 * z^8 + let t52 = circuit_add(t50, t51); // Eval sparse poly line_1p_1 step + coeff_8 * z^8 let t53 = circuit_mul(t33, t52); - let t54 = circuit_mul(t43, t0); // Eval sparse poly line_0p_2 step coeff_2 * z^2 - let t55 = circuit_add(t41, t54); // Eval sparse poly line_0p_2 step + coeff_2 * z^2 - let t56 = circuit_add(t55, t1); // Eval sparse poly line_0p_2 step + 1*z^3 - let t57 = circuit_mul(t44, t4); // Eval sparse poly line_0p_2 step coeff_6 * z^6 - let t58 = circuit_add(t56, t57); // Eval sparse poly line_0p_2 step + coeff_6 * z^6 - let t59 = circuit_mul(t45, t6); // Eval sparse poly line_0p_2 step coeff_8 * z^8 - let t60 = circuit_add(t58, t59); // Eval sparse poly line_0p_2 step + coeff_8 * z^8 + let t54 = circuit_mul(t43, t0); // Eval sparse poly line_1p_2 step coeff_2 * z^2 + let t55 = circuit_add(t41, t54); // Eval sparse poly line_1p_2 step + coeff_2 * z^2 + let t56 = circuit_add(t55, t1); // Eval sparse poly line_1p_2 step + 1*z^3 + let t57 = circuit_mul(t44, t2); // Eval sparse poly line_1p_2 step coeff_6 * z^6 + let t58 = circuit_add(t56, t57); // Eval sparse poly line_1p_2 step + coeff_6 * z^6 + let t59 = circuit_mul(t45, t3); // Eval sparse poly line_1p_2 step coeff_8 * z^8 + let t60 = circuit_add(t58, t59); // Eval sparse poly line_1p_2 step + coeff_8 * z^8 let t61 = circuit_mul(t53, t60); - let t62 = circuit_sub(in14, in15); - let t63 = circuit_mul(t62, in10); // eval bls line by yInv - let t64 = circuit_sub(in12, in13); - let t65 = circuit_mul(t64, in11); // eval blsline by xNegOverY - let t66 = circuit_mul(in15, in10); // eval bls line by yInv - let t67 = circuit_mul(in13, in11); // eval bls line by xNegOverY - let t68 = circuit_sub(in18, in19); - let t69 = circuit_mul(t68, in10); // eval bls line by yInv - let t70 = circuit_sub(in16, in17); - let t71 = circuit_mul(t70, in11); // eval blsline by xNegOverY - let t72 = circuit_mul(in19, in10); // eval bls line by yInv - let t73 = circuit_mul(in17, in11); // eval bls line by xNegOverY - let t74 = circuit_mul(t65, t0); // Eval sparse poly line_1p_1 step coeff_2 * z^2 - let t75 = circuit_add(t63, t74); // Eval sparse poly line_1p_1 step + coeff_2 * z^2 - let t76 = circuit_add(t75, t1); // Eval sparse poly line_1p_1 step + 1*z^3 - let t77 = circuit_mul(t66, t4); // Eval sparse poly line_1p_1 step coeff_6 * z^6 - let t78 = circuit_add(t76, t77); // Eval sparse poly line_1p_1 step + coeff_6 * z^6 - let t79 = circuit_mul(t67, t6); // Eval sparse poly line_1p_1 step coeff_8 * z^8 - let t80 = circuit_add(t78, t79); // Eval sparse poly line_1p_1 step + coeff_8 * z^8 - let t81 = circuit_mul(t61, t80); - let t82 = circuit_mul(t71, t0); // Eval sparse poly line_1p_2 step coeff_2 * z^2 - let t83 = circuit_add(t69, t82); // Eval sparse poly line_1p_2 step + coeff_2 * z^2 - let t84 = circuit_add(t83, t1); // Eval sparse poly line_1p_2 step + 1*z^3 - let t85 = circuit_mul(t72, t4); // Eval sparse poly line_1p_2 step coeff_6 * z^6 - let t86 = circuit_add(t84, t85); // Eval sparse poly line_1p_2 step + coeff_6 * z^6 - let t87 = circuit_mul(t73, t6); // Eval sparse poly line_1p_2 step coeff_8 * z^8 - let t88 = circuit_add(t86, t87); // Eval sparse poly line_1p_2 step + coeff_8 * z^8 - let t89 = circuit_mul(t81, t88); - let t90 = circuit_sub(t89, t31); - let t91 = circuit_mul(in32, t90); // ci * ((螤(i,k) (Pk(z)) - Ri(z)) + let t62 = circuit_sub(t61, in20); + let t63 = circuit_mul(in21, t62); // ci * ((螤(i,k) (Pk(z)) - Ri(z)) let modulus = TryInto::< _, CircuitModulus @@ -2389,53 +2072,38 @@ fn run_BLS12_381_MP_CHECK_INIT_BIT_2P_2F_circuit( ) .unwrap(); // BLS12_381 prime field modulus - let mut circuit_inputs = (t91, t31,).new_inputs(); + let mut circuit_inputs = (t63,).new_inputs(); // Prefill constants: // Fill inputs: - circuit_inputs = circuit_inputs.next(yInv_0); // in0 - circuit_inputs = circuit_inputs.next(xNegOverY_0); // in1 - circuit_inputs = circuit_inputs.next(G2_line_0.r0a0); // in2 - circuit_inputs = circuit_inputs.next(G2_line_0.r0a1); // in3 - circuit_inputs = circuit_inputs.next(G2_line_0.r1a0); // in4 - circuit_inputs = circuit_inputs.next(G2_line_0.r1a1); // in5 - circuit_inputs = circuit_inputs.next(G2_line_0_2.r0a0); // in6 - circuit_inputs = circuit_inputs.next(G2_line_0_2.r0a1); // in7 - circuit_inputs = circuit_inputs.next(G2_line_0_2.r1a0); // in8 - circuit_inputs = circuit_inputs.next(G2_line_0_2.r1a1); // in9 - circuit_inputs = circuit_inputs.next(yInv_1); // in10 - circuit_inputs = circuit_inputs.next(xNegOverY_1); // in11 - circuit_inputs = circuit_inputs.next(G2_line_1.r0a0); // in12 - circuit_inputs = circuit_inputs.next(G2_line_1.r0a1); // in13 - circuit_inputs = circuit_inputs.next(G2_line_1.r1a0); // in14 - circuit_inputs = circuit_inputs.next(G2_line_1.r1a1); // in15 - circuit_inputs = circuit_inputs.next(G2_line_1_2.r0a0); // in16 - circuit_inputs = circuit_inputs.next(G2_line_1_2.r0a1); // in17 - circuit_inputs = circuit_inputs.next(G2_line_1_2.r1a0); // in18 - circuit_inputs = circuit_inputs.next(G2_line_1_2.r1a1); // in19 - circuit_inputs = circuit_inputs.next(R_i.w0); // in20 - circuit_inputs = circuit_inputs.next(R_i.w1); // in21 - circuit_inputs = circuit_inputs.next(R_i.w2); // in22 - circuit_inputs = circuit_inputs.next(R_i.w3); // in23 - circuit_inputs = circuit_inputs.next(R_i.w4); // in24 - circuit_inputs = circuit_inputs.next(R_i.w5); // in25 - circuit_inputs = circuit_inputs.next(R_i.w6); // in26 - circuit_inputs = circuit_inputs.next(R_i.w7); // in27 - circuit_inputs = circuit_inputs.next(R_i.w8); // in28 - circuit_inputs = circuit_inputs.next(R_i.w9); // in29 - circuit_inputs = circuit_inputs.next(R_i.w10); // in30 - circuit_inputs = circuit_inputs.next(R_i.w11); // in31 - circuit_inputs = circuit_inputs.next(c0); // in32 - circuit_inputs = circuit_inputs.next(z); // in33 - circuit_inputs = circuit_inputs.next(c_inv_of_z); // in34 + circuit_inputs = circuit_inputs.next_2(yInv_0); // in0 + circuit_inputs = circuit_inputs.next_2(xNegOverY_0); // in1 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r0a0); // in2 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r0a1); // in3 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r1a0); // in4 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r1a1); // in5 + circuit_inputs = circuit_inputs.next_2(G2_line_0_2.r0a0); // in6 + circuit_inputs = circuit_inputs.next_2(G2_line_0_2.r0a1); // in7 + circuit_inputs = circuit_inputs.next_2(G2_line_0_2.r1a0); // in8 + circuit_inputs = circuit_inputs.next_2(G2_line_0_2.r1a1); // in9 + circuit_inputs = circuit_inputs.next_2(yInv_1); // in10 + circuit_inputs = circuit_inputs.next_2(xNegOverY_1); // in11 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r0a0); // in12 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r0a1); // in13 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r1a0); // in14 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r1a1); // in15 + circuit_inputs = circuit_inputs.next_2(G2_line_1_2.r0a0); // in16 + circuit_inputs = circuit_inputs.next_2(G2_line_1_2.r0a1); // in17 + circuit_inputs = circuit_inputs.next_2(G2_line_1_2.r1a0); // in18 + circuit_inputs = circuit_inputs.next_2(G2_line_1_2.r1a1); // in19 + circuit_inputs = circuit_inputs.next_2(R_i_of_z); // in20 + circuit_inputs = circuit_inputs.next_2(c0); // in21 + circuit_inputs = circuit_inputs.next_2(z); // in22 + circuit_inputs = circuit_inputs.next_2(c_inv_of_z); // in23 - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; - let new_lhs: u384 = outputs.get_output(t91); - let f_i_plus_one_of_z: u384 = outputs.get_output(t31); - return (new_lhs, f_i_plus_one_of_z); + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); + let new_lhs: u384 = outputs.get_output(t63); + return (new_lhs,); } fn run_BLS12_381_MP_CHECK_INIT_BIT_3P_2F_circuit( yInv_0: u384, @@ -2449,11 +2117,11 @@ fn run_BLS12_381_MP_CHECK_INIT_BIT_3P_2F_circuit( yInv_2: u384, xNegOverY_2: u384, Q_2: G2Point, - R_i: E12D, + R_i_of_z: u384, c0: u384, z: u384, c_inv_of_z: u384 -) -> (G2Point, u384, u384) { +) -> (G2Point, u384) { // CONSTANT stack let in0 = CE::> {}; // 0x3 let in1 = CE::> {}; // 0x6 @@ -2470,212 +2138,180 @@ fn run_BLS12_381_MP_CHECK_INIT_BIT_3P_2F_circuit( let (in24, in25, in26) = (CE::> {}, CE::> {}, CE::> {}); let (in27, in28, in29) = (CE::> {}, CE::> {}, CE::> {}); let (in30, in31, in32) = (CE::> {}, CE::> {}, CE::> {}); - let (in33, in34, in35) = (CE::> {}, CE::> {}, CE::> {}); - let (in36, in37, in38) = (CE::> {}, CE::> {}, CE::> {}); - let (in39, in40, in41) = (CE::> {}, CE::> {}, CE::> {}); - let (in42, in43) = (CE::> {}, CE::> {}); - let t0 = circuit_mul(in42, in42); // Compute z^2 - let t1 = circuit_mul(t0, in42); // Compute z^3 - let t2 = circuit_mul(t1, in42); // Compute z^4 - let t3 = circuit_mul(t2, in42); // Compute z^5 - let t4 = circuit_mul(t3, in42); // Compute z^6 - let t5 = circuit_mul(t4, in42); // Compute z^7 - let t6 = circuit_mul(t5, in42); // Compute z^8 - let t7 = circuit_mul(t6, in42); // Compute z^9 - let t8 = circuit_mul(t7, in42); // Compute z^10 - let t9 = circuit_mul(t8, in42); // Compute z^11 - let t10 = circuit_mul(in30, in42); // Eval R step coeff_1 * z^1 - let t11 = circuit_add(in29, t10); // Eval R step + (coeff_1 * z^1) - let t12 = circuit_mul(in31, t0); // Eval R step coeff_2 * z^2 - let t13 = circuit_add(t11, t12); // Eval R step + (coeff_2 * z^2) - let t14 = circuit_mul(in32, t1); // Eval R step coeff_3 * z^3 - let t15 = circuit_add(t13, t14); // Eval R step + (coeff_3 * z^3) - let t16 = circuit_mul(in33, t2); // Eval R step coeff_4 * z^4 - let t17 = circuit_add(t15, t16); // Eval R step + (coeff_4 * z^4) - let t18 = circuit_mul(in34, t3); // Eval R step coeff_5 * z^5 - let t19 = circuit_add(t17, t18); // Eval R step + (coeff_5 * z^5) - let t20 = circuit_mul(in35, t4); // Eval R step coeff_6 * z^6 - let t21 = circuit_add(t19, t20); // Eval R step + (coeff_6 * z^6) - let t22 = circuit_mul(in36, t5); // Eval R step coeff_7 * z^7 - let t23 = circuit_add(t21, t22); // Eval R step + (coeff_7 * z^7) - let t24 = circuit_mul(in37, t6); // Eval R step coeff_8 * z^8 - let t25 = circuit_add(t23, t24); // Eval R step + (coeff_8 * z^8) - let t26 = circuit_mul(in38, t7); // Eval R step coeff_9 * z^9 - let t27 = circuit_add(t25, t26); // Eval R step + (coeff_9 * z^9) - let t28 = circuit_mul(in39, t8); // Eval R step coeff_10 * z^10 - let t29 = circuit_add(t27, t28); // Eval R step + (coeff_10 * z^10) - let t30 = circuit_mul(in40, t9); // Eval R step coeff_11 * z^11 - let t31 = circuit_add(t29, t30); // Eval R step + (coeff_11 * z^11) - let t32 = circuit_mul(in43, in43); - let t33 = circuit_mul(in43, t32); - let t34 = circuit_sub(in7, in8); - let t35 = circuit_mul(t34, in3); // eval bls line by yInv - let t36 = circuit_sub(in5, in6); - let t37 = circuit_mul(t36, in4); // eval blsline by xNegOverY - let t38 = circuit_mul(in8, in3); // eval bls line by yInv - let t39 = circuit_mul(in6, in4); // eval bls line by xNegOverY - let t40 = circuit_sub(in11, in12); - let t41 = circuit_mul(t40, in3); // eval bls line by yInv - let t42 = circuit_sub(in9, in10); - let t43 = circuit_mul(t42, in4); // eval blsline by xNegOverY - let t44 = circuit_mul(in12, in3); // eval bls line by yInv - let t45 = circuit_mul(in10, in4); // eval bls line by xNegOverY - let t46 = circuit_mul(t37, t0); // Eval sparse poly line_0p_1 step coeff_2 * z^2 - let t47 = circuit_add(t35, t46); // Eval sparse poly line_0p_1 step + coeff_2 * z^2 - let t48 = circuit_add(t47, t1); // Eval sparse poly line_0p_1 step + 1*z^3 - let t49 = circuit_mul(t38, t4); // Eval sparse poly line_0p_1 step coeff_6 * z^6 - let t50 = circuit_add(t48, t49); // Eval sparse poly line_0p_1 step + coeff_6 * z^6 - let t51 = circuit_mul(t39, t6); // Eval sparse poly line_0p_1 step coeff_8 * z^8 - let t52 = circuit_add(t50, t51); // Eval sparse poly line_0p_1 step + coeff_8 * z^8 + let t0 = circuit_mul(in31, in31); // compute z^2 + let t1 = circuit_mul(t0, in31); // compute z^3 + let t2 = circuit_mul(t1, t1); // compute z^6 + let t3 = circuit_mul(t2, t0); // compute z^8 + let t4 = circuit_mul(in32, in32); + let t5 = circuit_mul(in32, t4); + let t6 = circuit_sub(in7, in8); + let t7 = circuit_mul(t6, in3); // eval bls line by yInv + let t8 = circuit_sub(in5, in6); + let t9 = circuit_mul(t8, in4); // eval blsline by xNegOverY + let t10 = circuit_mul(in8, in3); // eval bls line by yInv + let t11 = circuit_mul(in6, in4); // eval bls line by xNegOverY + let t12 = circuit_sub(in11, in12); + let t13 = circuit_mul(t12, in3); // eval bls line by yInv + let t14 = circuit_sub(in9, in10); + let t15 = circuit_mul(t14, in4); // eval blsline by xNegOverY + let t16 = circuit_mul(in12, in3); // eval bls line by yInv + let t17 = circuit_mul(in10, in4); // eval bls line by xNegOverY + let t18 = circuit_mul(t9, t0); // Eval sparse poly line_0p_1 step coeff_2 * z^2 + let t19 = circuit_add(t7, t18); // Eval sparse poly line_0p_1 step + coeff_2 * z^2 + let t20 = circuit_add(t19, t1); // Eval sparse poly line_0p_1 step + 1*z^3 + let t21 = circuit_mul(t10, t2); // Eval sparse poly line_0p_1 step coeff_6 * z^6 + let t22 = circuit_add(t20, t21); // Eval sparse poly line_0p_1 step + coeff_6 * z^6 + let t23 = circuit_mul(t11, t3); // Eval sparse poly line_0p_1 step coeff_8 * z^8 + let t24 = circuit_add(t22, t23); // Eval sparse poly line_0p_1 step + coeff_8 * z^8 + let t25 = circuit_mul(t5, t24); + let t26 = circuit_mul(t15, t0); // Eval sparse poly line_0p_2 step coeff_2 * z^2 + let t27 = circuit_add(t13, t26); // Eval sparse poly line_0p_2 step + coeff_2 * z^2 + let t28 = circuit_add(t27, t1); // Eval sparse poly line_0p_2 step + 1*z^3 + let t29 = circuit_mul(t16, t2); // Eval sparse poly line_0p_2 step coeff_6 * z^6 + let t30 = circuit_add(t28, t29); // Eval sparse poly line_0p_2 step + coeff_6 * z^6 + let t31 = circuit_mul(t17, t3); // Eval sparse poly line_0p_2 step coeff_8 * z^8 + let t32 = circuit_add(t30, t31); // Eval sparse poly line_0p_2 step + coeff_8 * z^8 + let t33 = circuit_mul(t25, t32); + let t34 = circuit_sub(in17, in18); + let t35 = circuit_mul(t34, in13); // eval bls line by yInv + let t36 = circuit_sub(in15, in16); + let t37 = circuit_mul(t36, in14); // eval blsline by xNegOverY + let t38 = circuit_mul(in18, in13); // eval bls line by yInv + let t39 = circuit_mul(in16, in14); // eval bls line by xNegOverY + let t40 = circuit_sub(in21, in22); + let t41 = circuit_mul(t40, in13); // eval bls line by yInv + let t42 = circuit_sub(in19, in20); + let t43 = circuit_mul(t42, in14); // eval blsline by xNegOverY + let t44 = circuit_mul(in22, in13); // eval bls line by yInv + let t45 = circuit_mul(in20, in14); // eval bls line by xNegOverY + let t46 = circuit_mul(t37, t0); // Eval sparse poly line_1p_1 step coeff_2 * z^2 + let t47 = circuit_add(t35, t46); // Eval sparse poly line_1p_1 step + coeff_2 * z^2 + let t48 = circuit_add(t47, t1); // Eval sparse poly line_1p_1 step + 1*z^3 + let t49 = circuit_mul(t38, t2); // Eval sparse poly line_1p_1 step coeff_6 * z^6 + let t50 = circuit_add(t48, t49); // Eval sparse poly line_1p_1 step + coeff_6 * z^6 + let t51 = circuit_mul(t39, t3); // Eval sparse poly line_1p_1 step coeff_8 * z^8 + let t52 = circuit_add(t50, t51); // Eval sparse poly line_1p_1 step + coeff_8 * z^8 let t53 = circuit_mul(t33, t52); - let t54 = circuit_mul(t43, t0); // Eval sparse poly line_0p_2 step coeff_2 * z^2 - let t55 = circuit_add(t41, t54); // Eval sparse poly line_0p_2 step + coeff_2 * z^2 - let t56 = circuit_add(t55, t1); // Eval sparse poly line_0p_2 step + 1*z^3 - let t57 = circuit_mul(t44, t4); // Eval sparse poly line_0p_2 step coeff_6 * z^6 - let t58 = circuit_add(t56, t57); // Eval sparse poly line_0p_2 step + coeff_6 * z^6 - let t59 = circuit_mul(t45, t6); // Eval sparse poly line_0p_2 step coeff_8 * z^8 - let t60 = circuit_add(t58, t59); // Eval sparse poly line_0p_2 step + coeff_8 * z^8 + let t54 = circuit_mul(t43, t0); // Eval sparse poly line_1p_2 step coeff_2 * z^2 + let t55 = circuit_add(t41, t54); // Eval sparse poly line_1p_2 step + coeff_2 * z^2 + let t56 = circuit_add(t55, t1); // Eval sparse poly line_1p_2 step + 1*z^3 + let t57 = circuit_mul(t44, t2); // Eval sparse poly line_1p_2 step coeff_6 * z^6 + let t58 = circuit_add(t56, t57); // Eval sparse poly line_1p_2 step + coeff_6 * z^6 + let t59 = circuit_mul(t45, t3); // Eval sparse poly line_1p_2 step coeff_8 * z^8 + let t60 = circuit_add(t58, t59); // Eval sparse poly line_1p_2 step + coeff_8 * z^8 let t61 = circuit_mul(t53, t60); - let t62 = circuit_sub(in17, in18); - let t63 = circuit_mul(t62, in13); // eval bls line by yInv - let t64 = circuit_sub(in15, in16); - let t65 = circuit_mul(t64, in14); // eval blsline by xNegOverY - let t66 = circuit_mul(in18, in13); // eval bls line by yInv - let t67 = circuit_mul(in16, in14); // eval bls line by xNegOverY - let t68 = circuit_sub(in21, in22); - let t69 = circuit_mul(t68, in13); // eval bls line by yInv - let t70 = circuit_sub(in19, in20); - let t71 = circuit_mul(t70, in14); // eval blsline by xNegOverY - let t72 = circuit_mul(in22, in13); // eval bls line by yInv - let t73 = circuit_mul(in20, in14); // eval bls line by xNegOverY - let t74 = circuit_mul(t65, t0); // Eval sparse poly line_1p_1 step coeff_2 * z^2 - let t75 = circuit_add(t63, t74); // Eval sparse poly line_1p_1 step + coeff_2 * z^2 - let t76 = circuit_add(t75, t1); // Eval sparse poly line_1p_1 step + 1*z^3 - let t77 = circuit_mul(t66, t4); // Eval sparse poly line_1p_1 step coeff_6 * z^6 - let t78 = circuit_add(t76, t77); // Eval sparse poly line_1p_1 step + coeff_6 * z^6 - let t79 = circuit_mul(t67, t6); // Eval sparse poly line_1p_1 step coeff_8 * z^8 - let t80 = circuit_add(t78, t79); // Eval sparse poly line_1p_1 step + coeff_8 * z^8 - let t81 = circuit_mul(t61, t80); - let t82 = circuit_mul(t71, t0); // Eval sparse poly line_1p_2 step coeff_2 * z^2 - let t83 = circuit_add(t69, t82); // Eval sparse poly line_1p_2 step + coeff_2 * z^2 - let t84 = circuit_add(t83, t1); // Eval sparse poly line_1p_2 step + 1*z^3 - let t85 = circuit_mul(t72, t4); // Eval sparse poly line_1p_2 step coeff_6 * z^6 - let t86 = circuit_add(t84, t85); // Eval sparse poly line_1p_2 step + coeff_6 * z^6 - let t87 = circuit_mul(t73, t6); // Eval sparse poly line_1p_2 step coeff_8 * z^8 - let t88 = circuit_add(t86, t87); // Eval sparse poly line_1p_2 step + coeff_8 * z^8 - let t89 = circuit_mul(t81, t88); - let t90 = circuit_add(in25, in26); - let t91 = circuit_sub(in25, in26); - let t92 = circuit_mul(t90, t91); - let t93 = circuit_mul(in25, in26); - let t94 = circuit_mul(t92, in0); - let t95 = circuit_mul(t93, in1); - let t96 = circuit_add(in27, in27); // Fp2 add coeff 0/1 - let t97 = circuit_add(in28, in28); // Fp2 add coeff 1/1 - let t98 = circuit_mul(t96, t96); // Fp2 Div x/y start : Fp2 Inv y start - let t99 = circuit_mul(t97, t97); - let t100 = circuit_add(t98, t99); - let t101 = circuit_inverse(t100); - let t102 = circuit_mul(t96, t101); // Fp2 Inv y real part end - let t103 = circuit_mul(t97, t101); - let t104 = circuit_sub(in2, t103); // Fp2 Inv y imag part end - let t105 = circuit_mul(t94, t102); // Fp2 mul start - let t106 = circuit_mul(t95, t104); - let t107 = circuit_sub(t105, t106); // Fp2 mul real part end - let t108 = circuit_mul(t94, t104); - let t109 = circuit_mul(t95, t102); - let t110 = circuit_add(t108, t109); // Fp2 mul imag part end - let t111 = circuit_mul(t107, in25); // Fp2 mul start - let t112 = circuit_mul(t110, in26); - let t113 = circuit_sub(t111, t112); // Fp2 mul real part end - let t114 = circuit_mul(t107, in26); - let t115 = circuit_mul(t110, in25); - let t116 = circuit_add(t114, t115); // Fp2 mul imag part end - let t117 = circuit_sub(t113, in27); // Fp2 sub coeff 0/1 - let t118 = circuit_sub(t116, in28); // Fp2 sub coeff 1/1 - let t119 = circuit_add(t107, t110); - let t120 = circuit_sub(t107, t110); - let t121 = circuit_mul(t119, t120); - let t122 = circuit_mul(t107, t110); - let t123 = circuit_add(t122, t122); - let t124 = circuit_add(in25, in25); // Fp2 add coeff 0/1 - let t125 = circuit_add(in26, in26); // Fp2 add coeff 1/1 - let t126 = circuit_sub(t121, t124); // Fp2 sub coeff 0/1 - let t127 = circuit_sub(t123, t125); // Fp2 sub coeff 1/1 - let t128 = circuit_sub(in25, t126); // Fp2 sub coeff 0/1 - let t129 = circuit_sub(in26, t127); // Fp2 sub coeff 1/1 - let t130 = circuit_mul(t128, t128); // Fp2 Div x/y start : Fp2 Inv y start - let t131 = circuit_mul(t129, t129); - let t132 = circuit_add(t130, t131); - let t133 = circuit_inverse(t132); - let t134 = circuit_mul(t128, t133); // Fp2 Inv y real part end - let t135 = circuit_mul(t129, t133); - let t136 = circuit_sub(in2, t135); // Fp2 Inv y imag part end - let t137 = circuit_mul(t96, t134); // Fp2 mul start - let t138 = circuit_mul(t97, t136); - let t139 = circuit_sub(t137, t138); // Fp2 mul real part end - let t140 = circuit_mul(t96, t136); - let t141 = circuit_mul(t97, t134); - let t142 = circuit_add(t140, t141); // Fp2 mul imag part end - let t143 = circuit_sub(t139, t107); // Fp2 sub coeff 0/1 - let t144 = circuit_sub(t142, t110); // Fp2 sub coeff 1/1 - let t145 = circuit_mul(t143, in25); // Fp2 mul start - let t146 = circuit_mul(t144, in26); - let t147 = circuit_sub(t145, t146); // Fp2 mul real part end - let t148 = circuit_mul(t143, in26); - let t149 = circuit_mul(t144, in25); - let t150 = circuit_add(t148, t149); // Fp2 mul imag part end - let t151 = circuit_sub(t147, in27); // Fp2 sub coeff 0/1 - let t152 = circuit_sub(t150, in28); // Fp2 sub coeff 1/1 - let t153 = circuit_add(t143, t144); - let t154 = circuit_sub(t143, t144); - let t155 = circuit_mul(t153, t154); - let t156 = circuit_mul(t143, t144); - let t157 = circuit_add(t156, t156); - let t158 = circuit_add(in25, t126); // Fp2 add coeff 0/1 - let t159 = circuit_add(in26, t127); // Fp2 add coeff 1/1 - let t160 = circuit_sub(t155, t158); // Fp2 sub coeff 0/1 - let t161 = circuit_sub(t157, t159); // Fp2 sub coeff 1/1 - let t162 = circuit_sub(in25, t160); // Fp2 sub coeff 0/1 - let t163 = circuit_sub(in26, t161); // Fp2 sub coeff 1/1 - let t164 = circuit_mul(t143, t162); // Fp2 mul start - let t165 = circuit_mul(t144, t163); - let t166 = circuit_sub(t164, t165); // Fp2 mul real part end - let t167 = circuit_mul(t143, t163); - let t168 = circuit_mul(t144, t162); - let t169 = circuit_add(t167, t168); // Fp2 mul imag part end - let t170 = circuit_sub(t166, in27); // Fp2 sub coeff 0/1 - let t171 = circuit_sub(t169, in28); // Fp2 sub coeff 1/1 - let t172 = circuit_sub(t117, t118); - let t173 = circuit_mul(t172, in23); // eval bls line by yInv - let t174 = circuit_sub(t107, t110); - let t175 = circuit_mul(t174, in24); // eval blsline by xNegOverY - let t176 = circuit_mul(t118, in23); // eval bls line by yInv - let t177 = circuit_mul(t110, in24); // eval bls line by xNegOverY - let t178 = circuit_sub(t151, t152); - let t179 = circuit_mul(t178, in23); // eval bls line by yInv - let t180 = circuit_sub(t143, t144); - let t181 = circuit_mul(t180, in24); // eval blsline by xNegOverY - let t182 = circuit_mul(t152, in23); // eval bls line by yInv - let t183 = circuit_mul(t144, in24); // eval bls line by xNegOverY - let t184 = circuit_mul(t175, t0); // Eval sparse poly line_2p_1 step coeff_2 * z^2 - let t185 = circuit_add(t173, t184); // Eval sparse poly line_2p_1 step + coeff_2 * z^2 - let t186 = circuit_add(t185, t1); // Eval sparse poly line_2p_1 step + 1*z^3 - let t187 = circuit_mul(t176, t4); // Eval sparse poly line_2p_1 step coeff_6 * z^6 - let t188 = circuit_add(t186, t187); // Eval sparse poly line_2p_1 step + coeff_6 * z^6 - let t189 = circuit_mul(t177, t6); // Eval sparse poly line_2p_1 step coeff_8 * z^8 - let t190 = circuit_add(t188, t189); // Eval sparse poly line_2p_1 step + coeff_8 * z^8 - let t191 = circuit_mul(t89, t190); - let t192 = circuit_mul(t181, t0); // Eval sparse poly line_2p_2 step coeff_2 * z^2 - let t193 = circuit_add(t179, t192); // Eval sparse poly line_2p_2 step + coeff_2 * z^2 - let t194 = circuit_add(t193, t1); // Eval sparse poly line_2p_2 step + 1*z^3 - let t195 = circuit_mul(t182, t4); // Eval sparse poly line_2p_2 step coeff_6 * z^6 - let t196 = circuit_add(t194, t195); // Eval sparse poly line_2p_2 step + coeff_6 * z^6 - let t197 = circuit_mul(t183, t6); // Eval sparse poly line_2p_2 step coeff_8 * z^8 - let t198 = circuit_add(t196, t197); // Eval sparse poly line_2p_2 step + coeff_8 * z^8 - let t199 = circuit_mul(t191, t198); - let t200 = circuit_sub(t199, t31); - let t201 = circuit_mul(in41, t200); // ci * ((螤(i,k) (Pk(z)) - Ri(z)) + let t62 = circuit_add(in25, in26); + let t63 = circuit_sub(in25, in26); + let t64 = circuit_mul(t62, t63); + let t65 = circuit_mul(in25, in26); + let t66 = circuit_mul(t64, in0); + let t67 = circuit_mul(t65, in1); + let t68 = circuit_add(in27, in27); // Fp2 add coeff 0/1 + let t69 = circuit_add(in28, in28); // Fp2 add coeff 1/1 + let t70 = circuit_mul(t68, t68); // Fp2 Div x/y start : Fp2 Inv y start + let t71 = circuit_mul(t69, t69); + let t72 = circuit_add(t70, t71); + let t73 = circuit_inverse(t72); + let t74 = circuit_mul(t68, t73); // Fp2 Inv y real part end + let t75 = circuit_mul(t69, t73); + let t76 = circuit_sub(in2, t75); // Fp2 Inv y imag part end + let t77 = circuit_mul(t66, t74); // Fp2 mul start + let t78 = circuit_mul(t67, t76); + let t79 = circuit_sub(t77, t78); // Fp2 mul real part end + let t80 = circuit_mul(t66, t76); + let t81 = circuit_mul(t67, t74); + let t82 = circuit_add(t80, t81); // Fp2 mul imag part end + let t83 = circuit_mul(t79, in25); // Fp2 mul start + let t84 = circuit_mul(t82, in26); + let t85 = circuit_sub(t83, t84); // Fp2 mul real part end + let t86 = circuit_mul(t79, in26); + let t87 = circuit_mul(t82, in25); + let t88 = circuit_add(t86, t87); // Fp2 mul imag part end + let t89 = circuit_sub(t85, in27); // Fp2 sub coeff 0/1 + let t90 = circuit_sub(t88, in28); // Fp2 sub coeff 1/1 + let t91 = circuit_add(t79, t82); + let t92 = circuit_sub(t79, t82); + let t93 = circuit_mul(t91, t92); + let t94 = circuit_mul(t79, t82); + let t95 = circuit_add(t94, t94); + let t96 = circuit_add(in25, in25); // Fp2 add coeff 0/1 + let t97 = circuit_add(in26, in26); // Fp2 add coeff 1/1 + let t98 = circuit_sub(t93, t96); // Fp2 sub coeff 0/1 + let t99 = circuit_sub(t95, t97); // Fp2 sub coeff 1/1 + let t100 = circuit_sub(in25, t98); // Fp2 sub coeff 0/1 + let t101 = circuit_sub(in26, t99); // Fp2 sub coeff 1/1 + let t102 = circuit_mul(t100, t100); // Fp2 Div x/y start : Fp2 Inv y start + let t103 = circuit_mul(t101, t101); + let t104 = circuit_add(t102, t103); + let t105 = circuit_inverse(t104); + let t106 = circuit_mul(t100, t105); // Fp2 Inv y real part end + let t107 = circuit_mul(t101, t105); + let t108 = circuit_sub(in2, t107); // Fp2 Inv y imag part end + let t109 = circuit_mul(t68, t106); // Fp2 mul start + let t110 = circuit_mul(t69, t108); + let t111 = circuit_sub(t109, t110); // Fp2 mul real part end + let t112 = circuit_mul(t68, t108); + let t113 = circuit_mul(t69, t106); + let t114 = circuit_add(t112, t113); // Fp2 mul imag part end + let t115 = circuit_sub(t111, t79); // Fp2 sub coeff 0/1 + let t116 = circuit_sub(t114, t82); // Fp2 sub coeff 1/1 + let t117 = circuit_mul(t115, in25); // Fp2 mul start + let t118 = circuit_mul(t116, in26); + let t119 = circuit_sub(t117, t118); // Fp2 mul real part end + let t120 = circuit_mul(t115, in26); + let t121 = circuit_mul(t116, in25); + let t122 = circuit_add(t120, t121); // Fp2 mul imag part end + let t123 = circuit_sub(t119, in27); // Fp2 sub coeff 0/1 + let t124 = circuit_sub(t122, in28); // Fp2 sub coeff 1/1 + let t125 = circuit_add(t115, t116); + let t126 = circuit_sub(t115, t116); + let t127 = circuit_mul(t125, t126); + let t128 = circuit_mul(t115, t116); + let t129 = circuit_add(t128, t128); + let t130 = circuit_add(in25, t98); // Fp2 add coeff 0/1 + let t131 = circuit_add(in26, t99); // Fp2 add coeff 1/1 + let t132 = circuit_sub(t127, t130); // Fp2 sub coeff 0/1 + let t133 = circuit_sub(t129, t131); // Fp2 sub coeff 1/1 + let t134 = circuit_sub(in25, t132); // Fp2 sub coeff 0/1 + let t135 = circuit_sub(in26, t133); // Fp2 sub coeff 1/1 + let t136 = circuit_mul(t115, t134); // Fp2 mul start + let t137 = circuit_mul(t116, t135); + let t138 = circuit_sub(t136, t137); // Fp2 mul real part end + let t139 = circuit_mul(t115, t135); + let t140 = circuit_mul(t116, t134); + let t141 = circuit_add(t139, t140); // Fp2 mul imag part end + let t142 = circuit_sub(t138, in27); // Fp2 sub coeff 0/1 + let t143 = circuit_sub(t141, in28); // Fp2 sub coeff 1/1 + let t144 = circuit_sub(t89, t90); + let t145 = circuit_mul(t144, in23); // eval bls line by yInv + let t146 = circuit_sub(t79, t82); + let t147 = circuit_mul(t146, in24); // eval blsline by xNegOverY + let t148 = circuit_mul(t90, in23); // eval bls line by yInv + let t149 = circuit_mul(t82, in24); // eval bls line by xNegOverY + let t150 = circuit_sub(t123, t124); + let t151 = circuit_mul(t150, in23); // eval bls line by yInv + let t152 = circuit_sub(t115, t116); + let t153 = circuit_mul(t152, in24); // eval blsline by xNegOverY + let t154 = circuit_mul(t124, in23); // eval bls line by yInv + let t155 = circuit_mul(t116, in24); // eval bls line by xNegOverY + let t156 = circuit_mul(t147, t0); // Eval sparse poly line_2p_1 step coeff_2 * z^2 + let t157 = circuit_add(t145, t156); // Eval sparse poly line_2p_1 step + coeff_2 * z^2 + let t158 = circuit_add(t157, t1); // Eval sparse poly line_2p_1 step + 1*z^3 + let t159 = circuit_mul(t148, t2); // Eval sparse poly line_2p_1 step coeff_6 * z^6 + let t160 = circuit_add(t158, t159); // Eval sparse poly line_2p_1 step + coeff_6 * z^6 + let t161 = circuit_mul(t149, t3); // Eval sparse poly line_2p_1 step coeff_8 * z^8 + let t162 = circuit_add(t160, t161); // Eval sparse poly line_2p_1 step + coeff_8 * z^8 + let t163 = circuit_mul(t61, t162); + let t164 = circuit_mul(t153, t0); // Eval sparse poly line_2p_2 step coeff_2 * z^2 + let t165 = circuit_add(t151, t164); // Eval sparse poly line_2p_2 step + coeff_2 * z^2 + let t166 = circuit_add(t165, t1); // Eval sparse poly line_2p_2 step + 1*z^3 + let t167 = circuit_mul(t154, t2); // Eval sparse poly line_2p_2 step coeff_6 * z^6 + let t168 = circuit_add(t166, t167); // Eval sparse poly line_2p_2 step + coeff_6 * z^6 + let t169 = circuit_mul(t155, t3); // Eval sparse poly line_2p_2 step coeff_8 * z^8 + let t170 = circuit_add(t168, t169); // Eval sparse poly line_2p_2 step + coeff_8 * z^8 + let t171 = circuit_mul(t163, t170); + let t172 = circuit_sub(t171, in29); + let t173 = circuit_mul(in30, t172); // ci * ((螤(i,k) (Pk(z)) - Ri(z)) let modulus = TryInto::< _, CircuitModulus @@ -2689,67 +2325,52 @@ fn run_BLS12_381_MP_CHECK_INIT_BIT_3P_2F_circuit( ) .unwrap(); // BLS12_381 prime field modulus - let mut circuit_inputs = (t160, t161, t170, t171, t201, t31,).new_inputs(); + let mut circuit_inputs = (t132, t133, t142, t143, t173,).new_inputs(); // Prefill constants: - circuit_inputs = circuit_inputs.next([0x3, 0x0, 0x0, 0x0]); // in0 - circuit_inputs = circuit_inputs.next([0x6, 0x0, 0x0, 0x0]); // in1 - circuit_inputs = circuit_inputs.next([0x0, 0x0, 0x0, 0x0]); // in2 + circuit_inputs = circuit_inputs.next_2([0x3, 0x0, 0x0, 0x0]); // in0 + circuit_inputs = circuit_inputs.next_2([0x6, 0x0, 0x0, 0x0]); // in1 + circuit_inputs = circuit_inputs.next_2([0x0, 0x0, 0x0, 0x0]); // in2 // Fill inputs: - circuit_inputs = circuit_inputs.next(yInv_0); // in3 - circuit_inputs = circuit_inputs.next(xNegOverY_0); // in4 - circuit_inputs = circuit_inputs.next(G2_line_0.r0a0); // in5 - circuit_inputs = circuit_inputs.next(G2_line_0.r0a1); // in6 - circuit_inputs = circuit_inputs.next(G2_line_0.r1a0); // in7 - circuit_inputs = circuit_inputs.next(G2_line_0.r1a1); // in8 - circuit_inputs = circuit_inputs.next(G2_line_0_2.r0a0); // in9 - circuit_inputs = circuit_inputs.next(G2_line_0_2.r0a1); // in10 - circuit_inputs = circuit_inputs.next(G2_line_0_2.r1a0); // in11 - circuit_inputs = circuit_inputs.next(G2_line_0_2.r1a1); // in12 - circuit_inputs = circuit_inputs.next(yInv_1); // in13 - circuit_inputs = circuit_inputs.next(xNegOverY_1); // in14 - circuit_inputs = circuit_inputs.next(G2_line_1.r0a0); // in15 - circuit_inputs = circuit_inputs.next(G2_line_1.r0a1); // in16 - circuit_inputs = circuit_inputs.next(G2_line_1.r1a0); // in17 - circuit_inputs = circuit_inputs.next(G2_line_1.r1a1); // in18 - circuit_inputs = circuit_inputs.next(G2_line_1_2.r0a0); // in19 - circuit_inputs = circuit_inputs.next(G2_line_1_2.r0a1); // in20 - circuit_inputs = circuit_inputs.next(G2_line_1_2.r1a0); // in21 - circuit_inputs = circuit_inputs.next(G2_line_1_2.r1a1); // in22 - circuit_inputs = circuit_inputs.next(yInv_2); // in23 - circuit_inputs = circuit_inputs.next(xNegOverY_2); // in24 - circuit_inputs = circuit_inputs.next(Q_2.x0); // in25 - circuit_inputs = circuit_inputs.next(Q_2.x1); // in26 - circuit_inputs = circuit_inputs.next(Q_2.y0); // in27 - circuit_inputs = circuit_inputs.next(Q_2.y1); // in28 - circuit_inputs = circuit_inputs.next(R_i.w0); // in29 - circuit_inputs = circuit_inputs.next(R_i.w1); // in30 - circuit_inputs = circuit_inputs.next(R_i.w2); // in31 - circuit_inputs = circuit_inputs.next(R_i.w3); // in32 - circuit_inputs = circuit_inputs.next(R_i.w4); // in33 - circuit_inputs = circuit_inputs.next(R_i.w5); // in34 - circuit_inputs = circuit_inputs.next(R_i.w6); // in35 - circuit_inputs = circuit_inputs.next(R_i.w7); // in36 - circuit_inputs = circuit_inputs.next(R_i.w8); // in37 - circuit_inputs = circuit_inputs.next(R_i.w9); // in38 - circuit_inputs = circuit_inputs.next(R_i.w10); // in39 - circuit_inputs = circuit_inputs.next(R_i.w11); // in40 - circuit_inputs = circuit_inputs.next(c0); // in41 - circuit_inputs = circuit_inputs.next(z); // in42 - circuit_inputs = circuit_inputs.next(c_inv_of_z); // in43 + circuit_inputs = circuit_inputs.next_2(yInv_0); // in3 + circuit_inputs = circuit_inputs.next_2(xNegOverY_0); // in4 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r0a0); // in5 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r0a1); // in6 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r1a0); // in7 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r1a1); // in8 + circuit_inputs = circuit_inputs.next_2(G2_line_0_2.r0a0); // in9 + circuit_inputs = circuit_inputs.next_2(G2_line_0_2.r0a1); // in10 + circuit_inputs = circuit_inputs.next_2(G2_line_0_2.r1a0); // in11 + circuit_inputs = circuit_inputs.next_2(G2_line_0_2.r1a1); // in12 + circuit_inputs = circuit_inputs.next_2(yInv_1); // in13 + circuit_inputs = circuit_inputs.next_2(xNegOverY_1); // in14 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r0a0); // in15 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r0a1); // in16 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r1a0); // in17 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r1a1); // in18 + circuit_inputs = circuit_inputs.next_2(G2_line_1_2.r0a0); // in19 + circuit_inputs = circuit_inputs.next_2(G2_line_1_2.r0a1); // in20 + circuit_inputs = circuit_inputs.next_2(G2_line_1_2.r1a0); // in21 + circuit_inputs = circuit_inputs.next_2(G2_line_1_2.r1a1); // in22 + circuit_inputs = circuit_inputs.next_2(yInv_2); // in23 + circuit_inputs = circuit_inputs.next_2(xNegOverY_2); // in24 + circuit_inputs = circuit_inputs.next_2(Q_2.x0); // in25 + circuit_inputs = circuit_inputs.next_2(Q_2.x1); // in26 + circuit_inputs = circuit_inputs.next_2(Q_2.y0); // in27 + circuit_inputs = circuit_inputs.next_2(Q_2.y1); // in28 + circuit_inputs = circuit_inputs.next_2(R_i_of_z); // in29 + circuit_inputs = circuit_inputs.next_2(c0); // in30 + circuit_inputs = circuit_inputs.next_2(z); // in31 + circuit_inputs = circuit_inputs.next_2(c_inv_of_z); // in32 - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); let Q0: G2Point = G2Point { - x0: outputs.get_output(t160), - x1: outputs.get_output(t161), - y0: outputs.get_output(t170), - y1: outputs.get_output(t171) + x0: outputs.get_output(t132), + x1: outputs.get_output(t133), + y0: outputs.get_output(t142), + y1: outputs.get_output(t143) }; - let new_lhs: u384 = outputs.get_output(t201); - let f_i_plus_one_of_z: u384 = outputs.get_output(t31); - return (Q0, new_lhs, f_i_plus_one_of_z); + let new_lhs: u384 = outputs.get_output(t173); + return (Q0, new_lhs); } fn run_BLS12_381_MP_CHECK_PREPARE_LAMBDA_ROOT_circuit( lambda_root_inverse: E12D, z: u384, scaling_factor: MillerLoopResultScalingFactor @@ -2916,164 +2537,162 @@ fn run_BLS12_381_MP_CHECK_PREPARE_LAMBDA_ROOT_circuit( let mut circuit_inputs = (t37, t47, t94,).new_inputs(); // Prefill constants: - circuit_inputs = circuit_inputs.next([0x0, 0x0, 0x0, 0x0]); // in0 - circuit_inputs = circuit_inputs.next([0x2, 0x0, 0x0, 0x0]); // in1 - circuit_inputs = circuit_inputs - .next( - [ - 0x167b027b600febdb244714c5, - 0x8f17b50e12c47d65ce514a7c, - 0xfd0c6d66bb34bc7585f5abdf, - 0x18089593cbf626353947d5b1 - ] - ); // in2 - circuit_inputs = circuit_inputs - .next( - [ - 0x620a00022e01fffffffeffff, - 0xddb3a93be6f89688de17d813, - 0xdf76ce51ba69c6076a0f77ea, - 0x5f19672f - ] - ); // in3 - circuit_inputs = circuit_inputs - .next( - [ - 0xe5d80be9902109f7dbc79812, - 0xefeedc2e0124838bdccf325e, - 0xd7a2fffc9072bb5785a686bc, - 0xd5e1c086ffe8016d063c6da - ] - ); // in4 - circuit_inputs = circuit_inputs - .next( - [ - 0x4f49fffd8bfd00000000aaad, - 0x897d29650fb85f9b409427eb, - 0x63d4de85aa0d857d89759ad4, - 0x1a0111ea397fe699ec024086 - ] - ); // in5 - circuit_inputs = circuit_inputs - .next( - [ - 0xed3ffffb5dfb00000001aaaf, - 0xabc9802928bfc912627c4fd7, - 0x845e1033efa3bf761f6622e9, - 0x1a0111ea397fe6998ce8d956 - ] - ); // in6 - circuit_inputs = circuit_inputs - .next( - [ - 0x4aff0e653631f5d3000f022c, - 0x17d5be9b1d380acd8c747cdc, - 0x9163c08be7302c4818171fdd, - 0xb659fb20274bfb1be8ff4d6 - ] - ); // in7 - circuit_inputs = circuit_inputs - .next( - [ - 0xb153ffffb9feffffffffaaaa, - 0x6730d2a0f6b0f6241eabfffe, - 0x434bacd764774b84f38512bf, - 0x1a0111ea397fe69a4b1ba7b6 - ] - ); // in8 - circuit_inputs = circuit_inputs - .next( - [ - 0x4d6c7ec22cf78a126ddc4af3, - 0xec0c8ec971f63c5f282d5ac1, - 0x231f9fb854a14787b6c7b36f, - 0xfc3e2b36c4e03288e9e902 - ] - ); // in9 - circuit_inputs = circuit_inputs - .next( - [ - 0x9ad8fd8459ef1424dbb895e6, - 0xd8191d92e3ec78be505ab582, - 0x463f3f70a9428f0f6d8f66df, - 0x1f87c566d89c06511d3d204 - ] - ); // in10 - circuit_inputs = circuit_inputs - .next( - [ - 0x4f49fffd8bfd00000000aaac, - 0x897d29650fb85f9b409427eb, - 0x63d4de85aa0d857d89759ad4, - 0x1a0111ea397fe699ec024086 - ] - ); // in11 - circuit_inputs = circuit_inputs - .next( - [ - 0x72ec05f4c81084fbede3cc09, - 0x77f76e17009241c5ee67992f, - 0x6bd17ffe48395dabc2d3435e, - 0x6af0e0437ff400b6831e36d - ] - ); // in12 - circuit_inputs = circuit_inputs - .next( - [ - 0x620a00022e01fffffffefffe, - 0xddb3a93be6f89688de17d813, - 0xdf76ce51ba69c6076a0f77ea, - 0x5f19672f - ] - ); // in13 - circuit_inputs = circuit_inputs - .next( - [ - 0x8bd478cd1ee605167ff82995, - 0xdb45f3536814f0bd5871c190, - 0xfa99cc9170df3560e77982d0, - 0x144e4211384586c16bd3ad4a - ] - ); // in14 + circuit_inputs = circuit_inputs - .next( - [ - 0x6654f19a83cd0a2cfff0a87f, - 0x4f5b1405d978eb5692378322, - 0xb1e7ec4b7d471f3cdb6df2e2, - 0xe9b7238370b26e88c8bb2df - ] - ); // in15 + .next_span(MP_CHECK_PREPARE_LAMBDA_ROOT_BLS12_381_CONSTANTS.span()); // in0 - in15 + // Fill inputs: - circuit_inputs = circuit_inputs.next(lambda_root_inverse.w0); // in16 - circuit_inputs = circuit_inputs.next(lambda_root_inverse.w1); // in17 - circuit_inputs = circuit_inputs.next(lambda_root_inverse.w2); // in18 - circuit_inputs = circuit_inputs.next(lambda_root_inverse.w3); // in19 - circuit_inputs = circuit_inputs.next(lambda_root_inverse.w4); // in20 - circuit_inputs = circuit_inputs.next(lambda_root_inverse.w5); // in21 - circuit_inputs = circuit_inputs.next(lambda_root_inverse.w6); // in22 - circuit_inputs = circuit_inputs.next(lambda_root_inverse.w7); // in23 - circuit_inputs = circuit_inputs.next(lambda_root_inverse.w8); // in24 - circuit_inputs = circuit_inputs.next(lambda_root_inverse.w9); // in25 - circuit_inputs = circuit_inputs.next(lambda_root_inverse.w10); // in26 - circuit_inputs = circuit_inputs.next(lambda_root_inverse.w11); // in27 - circuit_inputs = circuit_inputs.next(z); // in28 - circuit_inputs = circuit_inputs.next(scaling_factor.w0); // in29 - circuit_inputs = circuit_inputs.next(scaling_factor.w2); // in30 - circuit_inputs = circuit_inputs.next(scaling_factor.w4); // in31 - circuit_inputs = circuit_inputs.next(scaling_factor.w6); // in32 - circuit_inputs = circuit_inputs.next(scaling_factor.w8); // in33 - circuit_inputs = circuit_inputs.next(scaling_factor.w10); // in34 + circuit_inputs = circuit_inputs.next_2(lambda_root_inverse.w0); // in16 + circuit_inputs = circuit_inputs.next_2(lambda_root_inverse.w1); // in17 + circuit_inputs = circuit_inputs.next_2(lambda_root_inverse.w2); // in18 + circuit_inputs = circuit_inputs.next_2(lambda_root_inverse.w3); // in19 + circuit_inputs = circuit_inputs.next_2(lambda_root_inverse.w4); // in20 + circuit_inputs = circuit_inputs.next_2(lambda_root_inverse.w5); // in21 + circuit_inputs = circuit_inputs.next_2(lambda_root_inverse.w6); // in22 + circuit_inputs = circuit_inputs.next_2(lambda_root_inverse.w7); // in23 + circuit_inputs = circuit_inputs.next_2(lambda_root_inverse.w8); // in24 + circuit_inputs = circuit_inputs.next_2(lambda_root_inverse.w9); // in25 + circuit_inputs = circuit_inputs.next_2(lambda_root_inverse.w10); // in26 + circuit_inputs = circuit_inputs.next_2(lambda_root_inverse.w11); // in27 + circuit_inputs = circuit_inputs.next_2(z); // in28 + circuit_inputs = circuit_inputs.next_2(scaling_factor.w0); // in29 + circuit_inputs = circuit_inputs.next_2(scaling_factor.w2); // in30 + circuit_inputs = circuit_inputs.next_2(scaling_factor.w4); // in31 + circuit_inputs = circuit_inputs.next_2(scaling_factor.w6); // in32 + circuit_inputs = circuit_inputs.next_2(scaling_factor.w8); // in33 + circuit_inputs = circuit_inputs.next_2(scaling_factor.w10); // in34 - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); let c_inv_of_z: u384 = outputs.get_output(t37); let scaling_factor_of_z: u384 = outputs.get_output(t47); let c_inv_frob_1_of_z: u384 = outputs.get_output(t94); return (c_inv_of_z, scaling_factor_of_z, c_inv_frob_1_of_z); } +const MP_CHECK_PREPARE_LAMBDA_ROOT_BLS12_381_CONSTANTS: [ + u384 + ; 16] = [ + u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, + u384 { limb0: 0x2, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, + u384 { + limb0: 0x167b027b600febdb244714c5, + limb1: 0x8f17b50e12c47d65ce514a7c, + limb2: 0xfd0c6d66bb34bc7585f5abdf, + limb3: 0x18089593cbf626353947d5b1 + }, + u384 { + limb0: 0x620a00022e01fffffffeffff, + limb1: 0xddb3a93be6f89688de17d813, + limb2: 0xdf76ce51ba69c6076a0f77ea, + limb3: 0x5f19672f + }, + u384 { + limb0: 0xe5d80be9902109f7dbc79812, + limb1: 0xefeedc2e0124838bdccf325e, + limb2: 0xd7a2fffc9072bb5785a686bc, + limb3: 0xd5e1c086ffe8016d063c6da + }, + u384 { + limb0: 0x4f49fffd8bfd00000000aaad, + limb1: 0x897d29650fb85f9b409427eb, + limb2: 0x63d4de85aa0d857d89759ad4, + limb3: 0x1a0111ea397fe699ec024086 + }, + u384 { + limb0: 0xed3ffffb5dfb00000001aaaf, + limb1: 0xabc9802928bfc912627c4fd7, + limb2: 0x845e1033efa3bf761f6622e9, + limb3: 0x1a0111ea397fe6998ce8d956 + }, + u384 { + limb0: 0x4aff0e653631f5d3000f022c, + limb1: 0x17d5be9b1d380acd8c747cdc, + limb2: 0x9163c08be7302c4818171fdd, + limb3: 0xb659fb20274bfb1be8ff4d6 + }, + u384 { + limb0: 0xb153ffffb9feffffffffaaaa, + limb1: 0x6730d2a0f6b0f6241eabfffe, + limb2: 0x434bacd764774b84f38512bf, + limb3: 0x1a0111ea397fe69a4b1ba7b6 + }, + u384 { + limb0: 0x4d6c7ec22cf78a126ddc4af3, + limb1: 0xec0c8ec971f63c5f282d5ac1, + limb2: 0x231f9fb854a14787b6c7b36f, + limb3: 0xfc3e2b36c4e03288e9e902 + }, + u384 { + limb0: 0x9ad8fd8459ef1424dbb895e6, + limb1: 0xd8191d92e3ec78be505ab582, + limb2: 0x463f3f70a9428f0f6d8f66df, + limb3: 0x1f87c566d89c06511d3d204 + }, + u384 { + limb0: 0x4f49fffd8bfd00000000aaac, + limb1: 0x897d29650fb85f9b409427eb, + limb2: 0x63d4de85aa0d857d89759ad4, + limb3: 0x1a0111ea397fe699ec024086 + }, + u384 { + limb0: 0x72ec05f4c81084fbede3cc09, + limb1: 0x77f76e17009241c5ee67992f, + limb2: 0x6bd17ffe48395dabc2d3435e, + limb3: 0x6af0e0437ff400b6831e36d + }, + u384 { + limb0: 0x620a00022e01fffffffefffe, + limb1: 0xddb3a93be6f89688de17d813, + limb2: 0xdf76ce51ba69c6076a0f77ea, + limb3: 0x5f19672f + }, + u384 { + limb0: 0x8bd478cd1ee605167ff82995, + limb1: 0xdb45f3536814f0bd5871c190, + limb2: 0xfa99cc9170df3560e77982d0, + limb3: 0x144e4211384586c16bd3ad4a + }, + u384 { + limb0: 0x6654f19a83cd0a2cfff0a87f, + limb1: 0x4f5b1405d978eb5692378322, + limb2: 0xb1e7ec4b7d471f3cdb6df2e2, + limb3: 0xe9b7238370b26e88c8bb2df + } +]; +fn run_BLS12_381_MP_CHECK_PREPARE_PAIRS_1P_circuit(p_0: G1Point) -> (BLSProcessedPair,) { + // CONSTANT stack + let in0 = CE::> {}; // 0x0 + + // INPUT stack + let (in1, in2) = (CE::> {}, CE::> {}); + let t0 = circuit_inverse(in2); + let t1 = circuit_mul(in1, t0); + let t2 = circuit_sub(in0, t1); + + let modulus = TryInto::< + _, CircuitModulus + >::try_into( + [ + 0xb153ffffb9feffffffffaaab, + 0x6730d2a0f6b0f6241eabfffe, + 0x434bacd764774b84f38512bf, + 0x1a0111ea397fe69a4b1ba7b6 + ] + ) + .unwrap(); // BLS12_381 prime field modulus + + let mut circuit_inputs = (t0, t2,).new_inputs(); + // Prefill constants: + circuit_inputs = circuit_inputs.next_2([0x0, 0x0, 0x0, 0x0]); // in0 + // Fill inputs: + circuit_inputs = circuit_inputs.next_2(p_0.x); // in1 + circuit_inputs = circuit_inputs.next_2(p_0.y); // in2 + + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); + let p_0: BLSProcessedPair = BLSProcessedPair { + yInv: outputs.get_output(t0), xNegOverY: outputs.get_output(t2) + }; + return (p_0,); +} fn run_BLS12_381_MP_CHECK_PREPARE_PAIRS_2P_circuit( p_0: G1Point, p_1: G1Point ) -> (BLSProcessedPair, BLSProcessedPair) { @@ -3104,17 +2723,14 @@ fn run_BLS12_381_MP_CHECK_PREPARE_PAIRS_2P_circuit( let mut circuit_inputs = (t0, t2, t3, t5,).new_inputs(); // Prefill constants: - circuit_inputs = circuit_inputs.next([0x0, 0x0, 0x0, 0x0]); // in0 + circuit_inputs = circuit_inputs.next_2([0x0, 0x0, 0x0, 0x0]); // in0 // Fill inputs: - circuit_inputs = circuit_inputs.next(p_0.x); // in1 - circuit_inputs = circuit_inputs.next(p_0.y); // in2 - circuit_inputs = circuit_inputs.next(p_1.x); // in3 - circuit_inputs = circuit_inputs.next(p_1.y); // in4 + circuit_inputs = circuit_inputs.next_2(p_0.x); // in1 + circuit_inputs = circuit_inputs.next_2(p_0.y); // in2 + circuit_inputs = circuit_inputs.next_2(p_1.x); // in3 + circuit_inputs = circuit_inputs.next_2(p_1.y); // in4 - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); let p_0: BLSProcessedPair = BLSProcessedPair { yInv: outputs.get_output(t0), xNegOverY: outputs.get_output(t2) }; @@ -3156,19 +2772,16 @@ fn run_BLS12_381_MP_CHECK_PREPARE_PAIRS_3P_circuit( let mut circuit_inputs = (t0, t2, t3, t5, t6, t8,).new_inputs(); // Prefill constants: - circuit_inputs = circuit_inputs.next([0x0, 0x0, 0x0, 0x0]); // in0 + circuit_inputs = circuit_inputs.next_2([0x0, 0x0, 0x0, 0x0]); // in0 // Fill inputs: - circuit_inputs = circuit_inputs.next(p_0.x); // in1 - circuit_inputs = circuit_inputs.next(p_0.y); // in2 - circuit_inputs = circuit_inputs.next(p_1.x); // in3 - circuit_inputs = circuit_inputs.next(p_1.y); // in4 - circuit_inputs = circuit_inputs.next(p_2.x); // in5 - circuit_inputs = circuit_inputs.next(p_2.y); // in6 + circuit_inputs = circuit_inputs.next_2(p_0.x); // in1 + circuit_inputs = circuit_inputs.next_2(p_0.y); // in2 + circuit_inputs = circuit_inputs.next_2(p_1.x); // in3 + circuit_inputs = circuit_inputs.next_2(p_1.y); // in4 + circuit_inputs = circuit_inputs.next_2(p_2.x); // in5 + circuit_inputs = circuit_inputs.next_2(p_2.y); // in6 - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); let p_0: BLSProcessedPair = BLSProcessedPair { yInv: outputs.get_output(t0), xNegOverY: outputs.get_output(t2) }; @@ -3191,10 +2804,10 @@ fn run_BN254_MP_CHECK_BIT00_2P_2F_circuit( G2_line_2nd_0_1: G2Line, lhs_i: u384, f_i_of_z: u384, - f_i_plus_one: E12D, + f_i_plus_one_of_z: u384, z: u384, ci: u384 -) -> (u384, u384, u384) { +) -> (u384, u384) { // CONSTANT stack let in0 = CE::> {}; // -0x9 % p let in1 = CE::> {}; // 0x1 @@ -3208,177 +2821,132 @@ fn run_BN254_MP_CHECK_BIT00_2P_2F_circuit( let (in17, in18, in19) = (CE::> {}, CE::> {}, CE::> {}); let (in20, in21, in22) = (CE::> {}, CE::> {}, CE::> {}); let (in23, in24, in25) = (CE::> {}, CE::> {}, CE::> {}); - let (in26, in27, in28) = (CE::> {}, CE::> {}, CE::> {}); - let (in29, in30, in31) = (CE::> {}, CE::> {}, CE::> {}); - let (in32, in33, in34) = (CE::> {}, CE::> {}, CE::> {}); - let (in35, in36, in37) = (CE::> {}, CE::> {}, CE::> {}); - let t0 = circuit_mul(in36, in36); // Compute z^2 - let t1 = circuit_mul(t0, in36); // Compute z^3 - let t2 = circuit_mul(t1, in36); // Compute z^4 - let t3 = circuit_mul(t2, in36); // Compute z^5 - let t4 = circuit_mul(t3, in36); // Compute z^6 - let t5 = circuit_mul(t4, in36); // Compute z^7 - let t6 = circuit_mul(t5, in36); // Compute z^8 - let t7 = circuit_mul(t6, in36); // Compute z^9 - let t8 = circuit_mul(t7, in36); // Compute z^10 - let t9 = circuit_mul(t8, in36); // Compute z^11 - let t10 = circuit_mul(in37, in37); // Compute c_i = (c_(i-1))^2 - let t11 = circuit_mul(in23, in23); // Square f evaluation in Z, the result of previous bit. - let t12 = circuit_mul(in0, in5); - let t13 = circuit_add(in4, t12); - let t14 = circuit_mul(t13, in3); // eval bn line by xNegOverY - let t15 = circuit_mul(in0, in7); - let t16 = circuit_add(in6, t15); - let t17 = circuit_mul(t16, in2); // eval bn line by yInv - let t18 = circuit_mul(in5, in3); // eval bn line by xNegOverY - let t19 = circuit_mul(in7, in2); // eval bn line by yInv - let t20 = circuit_mul(t14, in36); // Eval sparse poly line_0p_1 step coeff_1 * z^1 - let t21 = circuit_add(in1, t20); // Eval sparse poly line_0p_1 step + coeff_1 * z^1 - let t22 = circuit_mul(t17, t1); // Eval sparse poly line_0p_1 step coeff_3 * z^3 - let t23 = circuit_add(t21, t22); // Eval sparse poly line_0p_1 step + coeff_3 * z^3 - let t24 = circuit_mul(t18, t5); // Eval sparse poly line_0p_1 step coeff_7 * z^7 - let t25 = circuit_add(t23, t24); // Eval sparse poly line_0p_1 step + coeff_7 * z^7 - let t26 = circuit_mul(t19, t7); // Eval sparse poly line_0p_1 step coeff_9 * z^9 - let t27 = circuit_add(t25, t26); // Eval sparse poly line_0p_1 step + coeff_9 * z^9 - let t28 = circuit_mul(t11, t27); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) - let t29 = circuit_mul(in0, in9); - let t30 = circuit_add(in8, t29); - let t31 = circuit_mul(t30, in13); // eval bn line by xNegOverY - let t32 = circuit_mul(in0, in11); - let t33 = circuit_add(in10, t32); - let t34 = circuit_mul(t33, in12); // eval bn line by yInv - let t35 = circuit_mul(in9, in13); // eval bn line by xNegOverY - let t36 = circuit_mul(in11, in12); // eval bn line by yInv - let t37 = circuit_mul(t31, in36); // Eval sparse poly line_1p_1 step coeff_1 * z^1 - let t38 = circuit_add(in1, t37); // Eval sparse poly line_1p_1 step + coeff_1 * z^1 - let t39 = circuit_mul(t34, t1); // Eval sparse poly line_1p_1 step coeff_3 * z^3 - let t40 = circuit_add(t38, t39); // Eval sparse poly line_1p_1 step + coeff_3 * z^3 - let t41 = circuit_mul(t35, t5); // Eval sparse poly line_1p_1 step coeff_7 * z^7 - let t42 = circuit_add(t40, t41); // Eval sparse poly line_1p_1 step + coeff_7 * z^7 - let t43 = circuit_mul(t36, t7); // Eval sparse poly line_1p_1 step coeff_9 * z^9 - let t44 = circuit_add(t42, t43); // Eval sparse poly line_1p_1 step + coeff_9 * z^9 - let t45 = circuit_mul(t28, t44); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) - let t46 = circuit_mul( - t45, t45 + let in26 = CE::> {}; + let t0 = circuit_mul(in25, in25); // compute z^2 + let t1 = circuit_mul(t0, in25); // compute z^3 + let t2 = circuit_mul(t1, t1); // compute z^6 + let t3 = circuit_mul(t2, in25); // compute z^7 + let t4 = circuit_mul(t3, t0); // compute z^9 + let t5 = circuit_mul(in26, in26); // Compute c_i = (c_(i-1))^2 + let t6 = circuit_mul(in23, in23); // Square f evaluation in Z, the result of previous bit. + let t7 = circuit_mul(in0, in5); + let t8 = circuit_add(in4, t7); + let t9 = circuit_mul(t8, in3); // eval bn line by xNegOverY + let t10 = circuit_mul(in0, in7); + let t11 = circuit_add(in6, t10); + let t12 = circuit_mul(t11, in2); // eval bn line by yInv + let t13 = circuit_mul(in5, in3); // eval bn line by xNegOverY + let t14 = circuit_mul(in7, in2); // eval bn line by yInv + let t15 = circuit_mul(t9, in25); // Eval sparse poly line_0p_1 step coeff_1 * z^1 + let t16 = circuit_add(in1, t15); // Eval sparse poly line_0p_1 step + coeff_1 * z^1 + let t17 = circuit_mul(t12, t1); // Eval sparse poly line_0p_1 step coeff_3 * z^3 + let t18 = circuit_add(t16, t17); // Eval sparse poly line_0p_1 step + coeff_3 * z^3 + let t19 = circuit_mul(t13, t3); // Eval sparse poly line_0p_1 step coeff_7 * z^7 + let t20 = circuit_add(t18, t19); // Eval sparse poly line_0p_1 step + coeff_7 * z^7 + let t21 = circuit_mul(t14, t4); // Eval sparse poly line_0p_1 step coeff_9 * z^9 + let t22 = circuit_add(t20, t21); // Eval sparse poly line_0p_1 step + coeff_9 * z^9 + let t23 = circuit_mul(t6, t22); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) + let t24 = circuit_mul(in0, in9); + let t25 = circuit_add(in8, t24); + let t26 = circuit_mul(t25, in13); // eval bn line by xNegOverY + let t27 = circuit_mul(in0, in11); + let t28 = circuit_add(in10, t27); + let t29 = circuit_mul(t28, in12); // eval bn line by yInv + let t30 = circuit_mul(in9, in13); // eval bn line by xNegOverY + let t31 = circuit_mul(in11, in12); // eval bn line by yInv + let t32 = circuit_mul(t26, in25); // Eval sparse poly line_1p_1 step coeff_1 * z^1 + let t33 = circuit_add(in1, t32); // Eval sparse poly line_1p_1 step + coeff_1 * z^1 + let t34 = circuit_mul(t29, t1); // Eval sparse poly line_1p_1 step coeff_3 * z^3 + let t35 = circuit_add(t33, t34); // Eval sparse poly line_1p_1 step + coeff_3 * z^3 + let t36 = circuit_mul(t30, t3); // Eval sparse poly line_1p_1 step coeff_7 * z^7 + let t37 = circuit_add(t35, t36); // Eval sparse poly line_1p_1 step + coeff_7 * z^7 + let t38 = circuit_mul(t31, t4); // Eval sparse poly line_1p_1 step coeff_9 * z^9 + let t39 = circuit_add(t37, t38); // Eval sparse poly line_1p_1 step + coeff_9 * z^9 + let t40 = circuit_mul(t23, t39); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) + let t41 = circuit_mul( + t40, t40 ); // Compute (f^2 * 螤(i,k) (line_i,k(z))) ^ 2 = f^4 * (螤(i,k) (line_i,k(z)))^2 - let t47 = circuit_mul(in0, in15); - let t48 = circuit_add(in14, t47); - let t49 = circuit_mul(t48, in3); // eval bn line by xNegOverY - let t50 = circuit_mul(in0, in17); - let t51 = circuit_add(in16, t50); - let t52 = circuit_mul(t51, in2); // eval bn line by yInv - let t53 = circuit_mul(in15, in3); // eval bn line by xNegOverY - let t54 = circuit_mul(in17, in2); // eval bn line by yInv - let t55 = circuit_mul(t49, in36); // Eval sparse poly line_0p_1 step coeff_1 * z^1 - let t56 = circuit_add(in1, t55); // Eval sparse poly line_0p_1 step + coeff_1 * z^1 - let t57 = circuit_mul(t52, t1); // Eval sparse poly line_0p_1 step coeff_3 * z^3 - let t58 = circuit_add(t56, t57); // Eval sparse poly line_0p_1 step + coeff_3 * z^3 - let t59 = circuit_mul(t53, t5); // Eval sparse poly line_0p_1 step coeff_7 * z^7 - let t60 = circuit_add(t58, t59); // Eval sparse poly line_0p_1 step + coeff_7 * z^7 - let t61 = circuit_mul(t54, t7); // Eval sparse poly line_0p_1 step coeff_9 * z^9 - let t62 = circuit_add(t60, t61); // Eval sparse poly line_0p_1 step + coeff_9 * z^9 - let t63 = circuit_mul(t46, t62); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) - let t64 = circuit_mul(in0, in19); - let t65 = circuit_add(in18, t64); - let t66 = circuit_mul(t65, in13); // eval bn line by xNegOverY - let t67 = circuit_mul(in0, in21); - let t68 = circuit_add(in20, t67); - let t69 = circuit_mul(t68, in12); // eval bn line by yInv - let t70 = circuit_mul(in19, in13); // eval bn line by xNegOverY - let t71 = circuit_mul(in21, in12); // eval bn line by yInv - let t72 = circuit_mul(t66, in36); // Eval sparse poly line_1p_1 step coeff_1 * z^1 - let t73 = circuit_add(in1, t72); // Eval sparse poly line_1p_1 step + coeff_1 * z^1 - let t74 = circuit_mul(t69, t1); // Eval sparse poly line_1p_1 step coeff_3 * z^3 - let t75 = circuit_add(t73, t74); // Eval sparse poly line_1p_1 step + coeff_3 * z^3 - let t76 = circuit_mul(t70, t5); // Eval sparse poly line_1p_1 step coeff_7 * z^7 - let t77 = circuit_add(t75, t76); // Eval sparse poly line_1p_1 step + coeff_7 * z^7 - let t78 = circuit_mul(t71, t7); // Eval sparse poly line_1p_1 step coeff_9 * z^9 - let t79 = circuit_add(t77, t78); // Eval sparse poly line_1p_1 step + coeff_9 * z^9 - let t80 = circuit_mul(t63, t79); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) - let t81 = circuit_mul(in25, in36); // Eval f_i+1 step coeff_1 * z^1 - let t82 = circuit_add(in24, t81); // Eval f_i+1 step + (coeff_1 * z^1) - let t83 = circuit_mul(in26, t0); // Eval f_i+1 step coeff_2 * z^2 - let t84 = circuit_add(t82, t83); // Eval f_i+1 step + (coeff_2 * z^2) - let t85 = circuit_mul(in27, t1); // Eval f_i+1 step coeff_3 * z^3 - let t86 = circuit_add(t84, t85); // Eval f_i+1 step + (coeff_3 * z^3) - let t87 = circuit_mul(in28, t2); // Eval f_i+1 step coeff_4 * z^4 - let t88 = circuit_add(t86, t87); // Eval f_i+1 step + (coeff_4 * z^4) - let t89 = circuit_mul(in29, t3); // Eval f_i+1 step coeff_5 * z^5 - let t90 = circuit_add(t88, t89); // Eval f_i+1 step + (coeff_5 * z^5) - let t91 = circuit_mul(in30, t4); // Eval f_i+1 step coeff_6 * z^6 - let t92 = circuit_add(t90, t91); // Eval f_i+1 step + (coeff_6 * z^6) - let t93 = circuit_mul(in31, t5); // Eval f_i+1 step coeff_7 * z^7 - let t94 = circuit_add(t92, t93); // Eval f_i+1 step + (coeff_7 * z^7) - let t95 = circuit_mul(in32, t6); // Eval f_i+1 step coeff_8 * z^8 - let t96 = circuit_add(t94, t95); // Eval f_i+1 step + (coeff_8 * z^8) - let t97 = circuit_mul(in33, t7); // Eval f_i+1 step coeff_9 * z^9 - let t98 = circuit_add(t96, t97); // Eval f_i+1 step + (coeff_9 * z^9) - let t99 = circuit_mul(in34, t8); // Eval f_i+1 step coeff_10 * z^10 - let t100 = circuit_add(t98, t99); // Eval f_i+1 step + (coeff_10 * z^10) - let t101 = circuit_mul(in35, t9); // Eval f_i+1 step coeff_11 * z^11 - let t102 = circuit_add(t100, t101); // Eval f_i+1 step + (coeff_11 * z^11) - let t103 = circuit_sub(t80, t102); // (螤(i,k) (Pk(z))) - Ri(z) - let t104 = circuit_mul(t10, t103); // ci * ((螤(i,k) (Pk(z)) - Ri(z)) - let t105 = circuit_add(in22, t104); // LHS = LHS + ci * ((螤(i,k) (Pk(z)) - Ri(z)) + let t42 = circuit_mul(in0, in15); + let t43 = circuit_add(in14, t42); + let t44 = circuit_mul(t43, in3); // eval bn line by xNegOverY + let t45 = circuit_mul(in0, in17); + let t46 = circuit_add(in16, t45); + let t47 = circuit_mul(t46, in2); // eval bn line by yInv + let t48 = circuit_mul(in15, in3); // eval bn line by xNegOverY + let t49 = circuit_mul(in17, in2); // eval bn line by yInv + let t50 = circuit_mul(t44, in25); // Eval sparse poly line_0p_1 step coeff_1 * z^1 + let t51 = circuit_add(in1, t50); // Eval sparse poly line_0p_1 step + coeff_1 * z^1 + let t52 = circuit_mul(t47, t1); // Eval sparse poly line_0p_1 step coeff_3 * z^3 + let t53 = circuit_add(t51, t52); // Eval sparse poly line_0p_1 step + coeff_3 * z^3 + let t54 = circuit_mul(t48, t3); // Eval sparse poly line_0p_1 step coeff_7 * z^7 + let t55 = circuit_add(t53, t54); // Eval sparse poly line_0p_1 step + coeff_7 * z^7 + let t56 = circuit_mul(t49, t4); // Eval sparse poly line_0p_1 step coeff_9 * z^9 + let t57 = circuit_add(t55, t56); // Eval sparse poly line_0p_1 step + coeff_9 * z^9 + let t58 = circuit_mul(t41, t57); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) + let t59 = circuit_mul(in0, in19); + let t60 = circuit_add(in18, t59); + let t61 = circuit_mul(t60, in13); // eval bn line by xNegOverY + let t62 = circuit_mul(in0, in21); + let t63 = circuit_add(in20, t62); + let t64 = circuit_mul(t63, in12); // eval bn line by yInv + let t65 = circuit_mul(in19, in13); // eval bn line by xNegOverY + let t66 = circuit_mul(in21, in12); // eval bn line by yInv + let t67 = circuit_mul(t61, in25); // Eval sparse poly line_1p_1 step coeff_1 * z^1 + let t68 = circuit_add(in1, t67); // Eval sparse poly line_1p_1 step + coeff_1 * z^1 + let t69 = circuit_mul(t64, t1); // Eval sparse poly line_1p_1 step coeff_3 * z^3 + let t70 = circuit_add(t68, t69); // Eval sparse poly line_1p_1 step + coeff_3 * z^3 + let t71 = circuit_mul(t65, t3); // Eval sparse poly line_1p_1 step coeff_7 * z^7 + let t72 = circuit_add(t70, t71); // Eval sparse poly line_1p_1 step + coeff_7 * z^7 + let t73 = circuit_mul(t66, t4); // Eval sparse poly line_1p_1 step coeff_9 * z^9 + let t74 = circuit_add(t72, t73); // Eval sparse poly line_1p_1 step + coeff_9 * z^9 + let t75 = circuit_mul(t58, t74); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) + let t76 = circuit_sub(t75, in24); // (螤(i,k) (Pk(z))) - Ri(z) + let t77 = circuit_mul(t5, t76); // ci * ((螤(i,k) (Pk(z)) - Ri(z)) + let t78 = circuit_add(in22, t77); // LHS = LHS + ci * ((螤(i,k) (Pk(z)) - Ri(z)) let modulus = TryInto::< _, CircuitModulus >::try_into([0x6871ca8d3c208c16d87cfd47, 0xb85045b68181585d97816a91, 0x30644e72e131a029, 0x0]) .unwrap(); // BN254 prime field modulus - let mut circuit_inputs = (t102, t105, t10,).new_inputs(); + let mut circuit_inputs = (t78, t5,).new_inputs(); // Prefill constants: circuit_inputs = circuit_inputs - .next( + .next_2( [0x6871ca8d3c208c16d87cfd3e, 0xb85045b68181585d97816a91, 0x30644e72e131a029, 0x0] ); // in0 - circuit_inputs = circuit_inputs.next([0x1, 0x0, 0x0, 0x0]); // in1 + circuit_inputs = circuit_inputs.next_2([0x1, 0x0, 0x0, 0x0]); // in1 // Fill inputs: - circuit_inputs = circuit_inputs.next(yInv_0); // in2 - circuit_inputs = circuit_inputs.next(xNegOverY_0); // in3 - circuit_inputs = circuit_inputs.next(G2_line_0.r0a0); // in4 - circuit_inputs = circuit_inputs.next(G2_line_0.r0a1); // in5 - circuit_inputs = circuit_inputs.next(G2_line_0.r1a0); // in6 - circuit_inputs = circuit_inputs.next(G2_line_0.r1a1); // in7 - circuit_inputs = circuit_inputs.next(G2_line_2nd_0_0.r0a0); // in8 - circuit_inputs = circuit_inputs.next(G2_line_2nd_0_0.r0a1); // in9 - circuit_inputs = circuit_inputs.next(G2_line_2nd_0_0.r1a0); // in10 - circuit_inputs = circuit_inputs.next(G2_line_2nd_0_0.r1a1); // in11 - circuit_inputs = circuit_inputs.next(yInv_1); // in12 - circuit_inputs = circuit_inputs.next(xNegOverY_1); // in13 - circuit_inputs = circuit_inputs.next(G2_line_1.r0a0); // in14 - circuit_inputs = circuit_inputs.next(G2_line_1.r0a1); // in15 - circuit_inputs = circuit_inputs.next(G2_line_1.r1a0); // in16 - circuit_inputs = circuit_inputs.next(G2_line_1.r1a1); // in17 - circuit_inputs = circuit_inputs.next(G2_line_2nd_0_1.r0a0); // in18 - circuit_inputs = circuit_inputs.next(G2_line_2nd_0_1.r0a1); // in19 - circuit_inputs = circuit_inputs.next(G2_line_2nd_0_1.r1a0); // in20 - circuit_inputs = circuit_inputs.next(G2_line_2nd_0_1.r1a1); // in21 - circuit_inputs = circuit_inputs.next(lhs_i); // in22 - circuit_inputs = circuit_inputs.next(f_i_of_z); // in23 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w0); // in24 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w1); // in25 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w2); // in26 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w3); // in27 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w4); // in28 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w5); // in29 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w6); // in30 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w7); // in31 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w8); // in32 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w9); // in33 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w10); // in34 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w11); // in35 - circuit_inputs = circuit_inputs.next(z); // in36 - circuit_inputs = circuit_inputs.next(ci); // in37 + circuit_inputs = circuit_inputs.next_2(yInv_0); // in2 + circuit_inputs = circuit_inputs.next_2(xNegOverY_0); // in3 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r0a0); // in4 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r0a1); // in5 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r1a0); // in6 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r1a1); // in7 + circuit_inputs = circuit_inputs.next_2(G2_line_2nd_0_0.r0a0); // in8 + circuit_inputs = circuit_inputs.next_2(G2_line_2nd_0_0.r0a1); // in9 + circuit_inputs = circuit_inputs.next_2(G2_line_2nd_0_0.r1a0); // in10 + circuit_inputs = circuit_inputs.next_2(G2_line_2nd_0_0.r1a1); // in11 + circuit_inputs = circuit_inputs.next_2(yInv_1); // in12 + circuit_inputs = circuit_inputs.next_2(xNegOverY_1); // in13 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r0a0); // in14 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r0a1); // in15 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r1a0); // in16 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r1a1); // in17 + circuit_inputs = circuit_inputs.next_2(G2_line_2nd_0_1.r0a0); // in18 + circuit_inputs = circuit_inputs.next_2(G2_line_2nd_0_1.r0a1); // in19 + circuit_inputs = circuit_inputs.next_2(G2_line_2nd_0_1.r1a0); // in20 + circuit_inputs = circuit_inputs.next_2(G2_line_2nd_0_1.r1a1); // in21 + circuit_inputs = circuit_inputs.next_2(lhs_i); // in22 + circuit_inputs = circuit_inputs.next_2(f_i_of_z); // in23 + circuit_inputs = circuit_inputs.next_2(f_i_plus_one_of_z); // in24 + circuit_inputs = circuit_inputs.next_2(z); // in25 + circuit_inputs = circuit_inputs.next_2(ci); // in26 - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; - let f_i_plus_one_of_z: u384 = outputs.get_output(t102); - let lhs_i_plus_one: u384 = outputs.get_output(t105); - let ci_plus_one: u384 = outputs.get_output(t10); - return (f_i_plus_one_of_z, lhs_i_plus_one, ci_plus_one); + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); + let lhs_i_plus_one: u384 = outputs.get_output(t78); + let ci_plus_one: u384 = outputs.get_output(t5); + return (lhs_i_plus_one, ci_plus_one); } fn run_BN254_MP_CHECK_BIT00_3P_2F_circuit( yInv_0: u384, @@ -3394,10 +2962,10 @@ fn run_BN254_MP_CHECK_BIT00_3P_2F_circuit( Q_2: G2Point, lhs_i: u384, f_i_of_z: u384, - f_i_plus_one: E12D, + f_i_plus_one_of_z: u384, z: u384, ci: u384 -) -> (G2Point, u384, u384, u384) { +) -> (G2Point, u384, u384) { // CONSTANT stack let in0 = CE::> {}; // -0x9 % p let in1 = CE::> {}; // 0x1 @@ -3416,322 +2984,277 @@ fn run_BN254_MP_CHECK_BIT00_3P_2F_circuit( let (in26, in27, in28) = (CE::> {}, CE::> {}, CE::> {}); let (in29, in30, in31) = (CE::> {}, CE::> {}, CE::> {}); let (in32, in33, in34) = (CE::> {}, CE::> {}, CE::> {}); - let (in35, in36, in37) = (CE::> {}, CE::> {}, CE::> {}); - let (in38, in39, in40) = (CE::> {}, CE::> {}, CE::> {}); - let (in41, in42, in43) = (CE::> {}, CE::> {}, CE::> {}); - let (in44, in45, in46) = (CE::> {}, CE::> {}, CE::> {}); - let t0 = circuit_mul(in45, in45); // Compute z^2 - let t1 = circuit_mul(t0, in45); // Compute z^3 - let t2 = circuit_mul(t1, in45); // Compute z^4 - let t3 = circuit_mul(t2, in45); // Compute z^5 - let t4 = circuit_mul(t3, in45); // Compute z^6 - let t5 = circuit_mul(t4, in45); // Compute z^7 - let t6 = circuit_mul(t5, in45); // Compute z^8 - let t7 = circuit_mul(t6, in45); // Compute z^9 - let t8 = circuit_mul(t7, in45); // Compute z^10 - let t9 = circuit_mul(t8, in45); // Compute z^11 - let t10 = circuit_mul(in46, in46); // Compute c_i = (c_(i-1))^2 - let t11 = circuit_mul(in32, in32); // Square f evaluation in Z, the result of previous bit. - let t12 = circuit_mul(in0, in8); - let t13 = circuit_add(in7, t12); - let t14 = circuit_mul(t13, in6); // eval bn line by xNegOverY - let t15 = circuit_mul(in0, in10); - let t16 = circuit_add(in9, t15); - let t17 = circuit_mul(t16, in5); // eval bn line by yInv - let t18 = circuit_mul(in8, in6); // eval bn line by xNegOverY - let t19 = circuit_mul(in10, in5); // eval bn line by yInv - let t20 = circuit_mul(t14, in45); // Eval sparse poly line_0p_1 step coeff_1 * z^1 - let t21 = circuit_add(in1, t20); // Eval sparse poly line_0p_1 step + coeff_1 * z^1 - let t22 = circuit_mul(t17, t1); // Eval sparse poly line_0p_1 step coeff_3 * z^3 - let t23 = circuit_add(t21, t22); // Eval sparse poly line_0p_1 step + coeff_3 * z^3 - let t24 = circuit_mul(t18, t5); // Eval sparse poly line_0p_1 step coeff_7 * z^7 - let t25 = circuit_add(t23, t24); // Eval sparse poly line_0p_1 step + coeff_7 * z^7 - let t26 = circuit_mul(t19, t7); // Eval sparse poly line_0p_1 step coeff_9 * z^9 - let t27 = circuit_add(t25, t26); // Eval sparse poly line_0p_1 step + coeff_9 * z^9 - let t28 = circuit_mul(t11, t27); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) - let t29 = circuit_mul(in0, in12); - let t30 = circuit_add(in11, t29); - let t31 = circuit_mul(t30, in16); // eval bn line by xNegOverY - let t32 = circuit_mul(in0, in14); - let t33 = circuit_add(in13, t32); - let t34 = circuit_mul(t33, in15); // eval bn line by yInv - let t35 = circuit_mul(in12, in16); // eval bn line by xNegOverY - let t36 = circuit_mul(in14, in15); // eval bn line by yInv - let t37 = circuit_mul(t31, in45); // Eval sparse poly line_1p_1 step coeff_1 * z^1 - let t38 = circuit_add(in1, t37); // Eval sparse poly line_1p_1 step + coeff_1 * z^1 - let t39 = circuit_mul(t34, t1); // Eval sparse poly line_1p_1 step coeff_3 * z^3 - let t40 = circuit_add(t38, t39); // Eval sparse poly line_1p_1 step + coeff_3 * z^3 - let t41 = circuit_mul(t35, t5); // Eval sparse poly line_1p_1 step coeff_7 * z^7 - let t42 = circuit_add(t40, t41); // Eval sparse poly line_1p_1 step + coeff_7 * z^7 - let t43 = circuit_mul(t36, t7); // Eval sparse poly line_1p_1 step coeff_9 * z^9 - let t44 = circuit_add(t42, t43); // Eval sparse poly line_1p_1 step + coeff_9 * z^9 - let t45 = circuit_mul(t28, t44); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) - let t46 = circuit_add(in27, in28); // Doubling slope numerator start - let t47 = circuit_sub(in27, in28); - let t48 = circuit_mul(t46, t47); - let t49 = circuit_mul(in27, in28); - let t50 = circuit_mul(t48, in2); - let t51 = circuit_mul(t49, in3); // Doubling slope numerator end - let t52 = circuit_add(in29, in29); // Fp2 add coeff 0/1 - let t53 = circuit_add(in30, in30); // Fp2 add coeff 1/1 - let t54 = circuit_mul(t52, t52); // Fp2 Div x/y start : Fp2 Inv y start - let t55 = circuit_mul(t53, t53); - let t56 = circuit_add(t54, t55); - let t57 = circuit_inverse(t56); - let t58 = circuit_mul(t52, t57); // Fp2 Inv y real part end - let t59 = circuit_mul(t53, t57); - let t60 = circuit_sub(in4, t59); // Fp2 Inv y imag part end - let t61 = circuit_mul(t50, t58); // Fp2 mul start - let t62 = circuit_mul(t51, t60); - let t63 = circuit_sub(t61, t62); // Fp2 mul real part end - let t64 = circuit_mul(t50, t60); - let t65 = circuit_mul(t51, t58); - let t66 = circuit_add(t64, t65); // Fp2 mul imag part end - let t67 = circuit_add(t63, t66); - let t68 = circuit_sub(t63, t66); - let t69 = circuit_mul(t67, t68); - let t70 = circuit_mul(t63, t66); - let t71 = circuit_add(t70, t70); - let t72 = circuit_add(in27, in27); // Fp2 add coeff 0/1 - let t73 = circuit_add(in28, in28); // Fp2 add coeff 1/1 - let t74 = circuit_sub(t69, t72); // Fp2 sub coeff 0/1 - let t75 = circuit_sub(t71, t73); // Fp2 sub coeff 1/1 - let t76 = circuit_sub(in27, t74); // Fp2 sub coeff 0/1 - let t77 = circuit_sub(in28, t75); // Fp2 sub coeff 1/1 - let t78 = circuit_mul(t63, t76); // Fp2 mul start - let t79 = circuit_mul(t66, t77); - let t80 = circuit_sub(t78, t79); // Fp2 mul real part end - let t81 = circuit_mul(t63, t77); - let t82 = circuit_mul(t66, t76); - let t83 = circuit_add(t81, t82); // Fp2 mul imag part end - let t84 = circuit_sub(t80, in29); // Fp2 sub coeff 0/1 - let t85 = circuit_sub(t83, in30); // Fp2 sub coeff 1/1 - let t86 = circuit_mul(t63, in27); // Fp2 mul start - let t87 = circuit_mul(t66, in28); - let t88 = circuit_sub(t86, t87); // Fp2 mul real part end - let t89 = circuit_mul(t63, in28); - let t90 = circuit_mul(t66, in27); - let t91 = circuit_add(t89, t90); // Fp2 mul imag part end - let t92 = circuit_sub(t88, in29); // Fp2 sub coeff 0/1 - let t93 = circuit_sub(t91, in30); // Fp2 sub coeff 1/1 - let t94 = circuit_mul(in0, t66); - let t95 = circuit_add(t63, t94); - let t96 = circuit_mul(t95, in26); // eval bn line by xNegOverY - let t97 = circuit_mul(in0, t93); - let t98 = circuit_add(t92, t97); - let t99 = circuit_mul(t98, in25); // eval bn line by yInv - let t100 = circuit_mul(t66, in26); // eval bn line by xNegOverY - let t101 = circuit_mul(t93, in25); // eval bn line by yInv - let t102 = circuit_mul(t96, in45); // Eval sparse poly line_2p_1 step coeff_1 * z^1 - let t103 = circuit_add(in1, t102); // Eval sparse poly line_2p_1 step + coeff_1 * z^1 - let t104 = circuit_mul(t99, t1); // Eval sparse poly line_2p_1 step coeff_3 * z^3 - let t105 = circuit_add(t103, t104); // Eval sparse poly line_2p_1 step + coeff_3 * z^3 - let t106 = circuit_mul(t100, t5); // Eval sparse poly line_2p_1 step coeff_7 * z^7 - let t107 = circuit_add(t105, t106); // Eval sparse poly line_2p_1 step + coeff_7 * z^7 - let t108 = circuit_mul(t101, t7); // Eval sparse poly line_2p_1 step coeff_9 * z^9 - let t109 = circuit_add(t107, t108); // Eval sparse poly line_2p_1 step + coeff_9 * z^9 - let t110 = circuit_mul(t45, t109); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_2(z) - let t111 = circuit_mul( - t110, t110 + let in35 = CE::> {}; + let t0 = circuit_mul(in34, in34); // compute z^2 + let t1 = circuit_mul(t0, in34); // compute z^3 + let t2 = circuit_mul(t1, t1); // compute z^6 + let t3 = circuit_mul(t2, in34); // compute z^7 + let t4 = circuit_mul(t3, t0); // compute z^9 + let t5 = circuit_mul(in35, in35); // Compute c_i = (c_(i-1))^2 + let t6 = circuit_mul(in32, in32); // Square f evaluation in Z, the result of previous bit. + let t7 = circuit_mul(in0, in8); + let t8 = circuit_add(in7, t7); + let t9 = circuit_mul(t8, in6); // eval bn line by xNegOverY + let t10 = circuit_mul(in0, in10); + let t11 = circuit_add(in9, t10); + let t12 = circuit_mul(t11, in5); // eval bn line by yInv + let t13 = circuit_mul(in8, in6); // eval bn line by xNegOverY + let t14 = circuit_mul(in10, in5); // eval bn line by yInv + let t15 = circuit_mul(t9, in34); // Eval sparse poly line_0p_1 step coeff_1 * z^1 + let t16 = circuit_add(in1, t15); // Eval sparse poly line_0p_1 step + coeff_1 * z^1 + let t17 = circuit_mul(t12, t1); // Eval sparse poly line_0p_1 step coeff_3 * z^3 + let t18 = circuit_add(t16, t17); // Eval sparse poly line_0p_1 step + coeff_3 * z^3 + let t19 = circuit_mul(t13, t3); // Eval sparse poly line_0p_1 step coeff_7 * z^7 + let t20 = circuit_add(t18, t19); // Eval sparse poly line_0p_1 step + coeff_7 * z^7 + let t21 = circuit_mul(t14, t4); // Eval sparse poly line_0p_1 step coeff_9 * z^9 + let t22 = circuit_add(t20, t21); // Eval sparse poly line_0p_1 step + coeff_9 * z^9 + let t23 = circuit_mul(t6, t22); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) + let t24 = circuit_mul(in0, in12); + let t25 = circuit_add(in11, t24); + let t26 = circuit_mul(t25, in16); // eval bn line by xNegOverY + let t27 = circuit_mul(in0, in14); + let t28 = circuit_add(in13, t27); + let t29 = circuit_mul(t28, in15); // eval bn line by yInv + let t30 = circuit_mul(in12, in16); // eval bn line by xNegOverY + let t31 = circuit_mul(in14, in15); // eval bn line by yInv + let t32 = circuit_mul(t26, in34); // Eval sparse poly line_1p_1 step coeff_1 * z^1 + let t33 = circuit_add(in1, t32); // Eval sparse poly line_1p_1 step + coeff_1 * z^1 + let t34 = circuit_mul(t29, t1); // Eval sparse poly line_1p_1 step coeff_3 * z^3 + let t35 = circuit_add(t33, t34); // Eval sparse poly line_1p_1 step + coeff_3 * z^3 + let t36 = circuit_mul(t30, t3); // Eval sparse poly line_1p_1 step coeff_7 * z^7 + let t37 = circuit_add(t35, t36); // Eval sparse poly line_1p_1 step + coeff_7 * z^7 + let t38 = circuit_mul(t31, t4); // Eval sparse poly line_1p_1 step coeff_9 * z^9 + let t39 = circuit_add(t37, t38); // Eval sparse poly line_1p_1 step + coeff_9 * z^9 + let t40 = circuit_mul(t23, t39); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) + let t41 = circuit_add(in27, in28); // Doubling slope numerator start + let t42 = circuit_sub(in27, in28); + let t43 = circuit_mul(t41, t42); + let t44 = circuit_mul(in27, in28); + let t45 = circuit_mul(t43, in2); + let t46 = circuit_mul(t44, in3); // Doubling slope numerator end + let t47 = circuit_add(in29, in29); // Fp2 add coeff 0/1 + let t48 = circuit_add(in30, in30); // Fp2 add coeff 1/1 + let t49 = circuit_mul(t47, t47); // Fp2 Div x/y start : Fp2 Inv y start + let t50 = circuit_mul(t48, t48); + let t51 = circuit_add(t49, t50); + let t52 = circuit_inverse(t51); + let t53 = circuit_mul(t47, t52); // Fp2 Inv y real part end + let t54 = circuit_mul(t48, t52); + let t55 = circuit_sub(in4, t54); // Fp2 Inv y imag part end + let t56 = circuit_mul(t45, t53); // Fp2 mul start + let t57 = circuit_mul(t46, t55); + let t58 = circuit_sub(t56, t57); // Fp2 mul real part end + let t59 = circuit_mul(t45, t55); + let t60 = circuit_mul(t46, t53); + let t61 = circuit_add(t59, t60); // Fp2 mul imag part end + let t62 = circuit_add(t58, t61); + let t63 = circuit_sub(t58, t61); + let t64 = circuit_mul(t62, t63); + let t65 = circuit_mul(t58, t61); + let t66 = circuit_add(t65, t65); + let t67 = circuit_add(in27, in27); // Fp2 add coeff 0/1 + let t68 = circuit_add(in28, in28); // Fp2 add coeff 1/1 + let t69 = circuit_sub(t64, t67); // Fp2 sub coeff 0/1 + let t70 = circuit_sub(t66, t68); // Fp2 sub coeff 1/1 + let t71 = circuit_sub(in27, t69); // Fp2 sub coeff 0/1 + let t72 = circuit_sub(in28, t70); // Fp2 sub coeff 1/1 + let t73 = circuit_mul(t58, t71); // Fp2 mul start + let t74 = circuit_mul(t61, t72); + let t75 = circuit_sub(t73, t74); // Fp2 mul real part end + let t76 = circuit_mul(t58, t72); + let t77 = circuit_mul(t61, t71); + let t78 = circuit_add(t76, t77); // Fp2 mul imag part end + let t79 = circuit_sub(t75, in29); // Fp2 sub coeff 0/1 + let t80 = circuit_sub(t78, in30); // Fp2 sub coeff 1/1 + let t81 = circuit_mul(t58, in27); // Fp2 mul start + let t82 = circuit_mul(t61, in28); + let t83 = circuit_sub(t81, t82); // Fp2 mul real part end + let t84 = circuit_mul(t58, in28); + let t85 = circuit_mul(t61, in27); + let t86 = circuit_add(t84, t85); // Fp2 mul imag part end + let t87 = circuit_sub(t83, in29); // Fp2 sub coeff 0/1 + let t88 = circuit_sub(t86, in30); // Fp2 sub coeff 1/1 + let t89 = circuit_mul(in0, t61); + let t90 = circuit_add(t58, t89); + let t91 = circuit_mul(t90, in26); // eval bn line by xNegOverY + let t92 = circuit_mul(in0, t88); + let t93 = circuit_add(t87, t92); + let t94 = circuit_mul(t93, in25); // eval bn line by yInv + let t95 = circuit_mul(t61, in26); // eval bn line by xNegOverY + let t96 = circuit_mul(t88, in25); // eval bn line by yInv + let t97 = circuit_mul(t91, in34); // Eval sparse poly line_2p_1 step coeff_1 * z^1 + let t98 = circuit_add(in1, t97); // Eval sparse poly line_2p_1 step + coeff_1 * z^1 + let t99 = circuit_mul(t94, t1); // Eval sparse poly line_2p_1 step coeff_3 * z^3 + let t100 = circuit_add(t98, t99); // Eval sparse poly line_2p_1 step + coeff_3 * z^3 + let t101 = circuit_mul(t95, t3); // Eval sparse poly line_2p_1 step coeff_7 * z^7 + let t102 = circuit_add(t100, t101); // Eval sparse poly line_2p_1 step + coeff_7 * z^7 + let t103 = circuit_mul(t96, t4); // Eval sparse poly line_2p_1 step coeff_9 * z^9 + let t104 = circuit_add(t102, t103); // Eval sparse poly line_2p_1 step + coeff_9 * z^9 + let t105 = circuit_mul(t40, t104); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_2(z) + let t106 = circuit_mul( + t105, t105 ); // Compute (f^2 * 螤(i,k) (line_i,k(z))) ^ 2 = f^4 * (螤(i,k) (line_i,k(z)))^2 - let t112 = circuit_mul(in0, in18); - let t113 = circuit_add(in17, t112); - let t114 = circuit_mul(t113, in6); // eval bn line by xNegOverY - let t115 = circuit_mul(in0, in20); - let t116 = circuit_add(in19, t115); - let t117 = circuit_mul(t116, in5); // eval bn line by yInv - let t118 = circuit_mul(in18, in6); // eval bn line by xNegOverY - let t119 = circuit_mul(in20, in5); // eval bn line by yInv - let t120 = circuit_mul(t114, in45); // Eval sparse poly line_0p_1 step coeff_1 * z^1 - let t121 = circuit_add(in1, t120); // Eval sparse poly line_0p_1 step + coeff_1 * z^1 - let t122 = circuit_mul(t117, t1); // Eval sparse poly line_0p_1 step coeff_3 * z^3 - let t123 = circuit_add(t121, t122); // Eval sparse poly line_0p_1 step + coeff_3 * z^3 - let t124 = circuit_mul(t118, t5); // Eval sparse poly line_0p_1 step coeff_7 * z^7 - let t125 = circuit_add(t123, t124); // Eval sparse poly line_0p_1 step + coeff_7 * z^7 - let t126 = circuit_mul(t119, t7); // Eval sparse poly line_0p_1 step coeff_9 * z^9 - let t127 = circuit_add(t125, t126); // Eval sparse poly line_0p_1 step + coeff_9 * z^9 - let t128 = circuit_mul(t111, t127); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) - let t129 = circuit_mul(in0, in22); - let t130 = circuit_add(in21, t129); - let t131 = circuit_mul(t130, in16); // eval bn line by xNegOverY - let t132 = circuit_mul(in0, in24); - let t133 = circuit_add(in23, t132); - let t134 = circuit_mul(t133, in15); // eval bn line by yInv - let t135 = circuit_mul(in22, in16); // eval bn line by xNegOverY - let t136 = circuit_mul(in24, in15); // eval bn line by yInv - let t137 = circuit_mul(t131, in45); // Eval sparse poly line_1p_1 step coeff_1 * z^1 - let t138 = circuit_add(in1, t137); // Eval sparse poly line_1p_1 step + coeff_1 * z^1 - let t139 = circuit_mul(t134, t1); // Eval sparse poly line_1p_1 step coeff_3 * z^3 - let t140 = circuit_add(t138, t139); // Eval sparse poly line_1p_1 step + coeff_3 * z^3 - let t141 = circuit_mul(t135, t5); // Eval sparse poly line_1p_1 step coeff_7 * z^7 - let t142 = circuit_add(t140, t141); // Eval sparse poly line_1p_1 step + coeff_7 * z^7 - let t143 = circuit_mul(t136, t7); // Eval sparse poly line_1p_1 step coeff_9 * z^9 - let t144 = circuit_add(t142, t143); // Eval sparse poly line_1p_1 step + coeff_9 * z^9 - let t145 = circuit_mul(t128, t144); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) - let t146 = circuit_add(t74, t75); // Doubling slope numerator start - let t147 = circuit_sub(t74, t75); - let t148 = circuit_mul(t146, t147); - let t149 = circuit_mul(t74, t75); - let t150 = circuit_mul(t148, in2); - let t151 = circuit_mul(t149, in3); // Doubling slope numerator end - let t152 = circuit_add(t84, t84); // Fp2 add coeff 0/1 - let t153 = circuit_add(t85, t85); // Fp2 add coeff 1/1 - let t154 = circuit_mul(t152, t152); // Fp2 Div x/y start : Fp2 Inv y start - let t155 = circuit_mul(t153, t153); - let t156 = circuit_add(t154, t155); - let t157 = circuit_inverse(t156); - let t158 = circuit_mul(t152, t157); // Fp2 Inv y real part end - let t159 = circuit_mul(t153, t157); - let t160 = circuit_sub(in4, t159); // Fp2 Inv y imag part end - let t161 = circuit_mul(t150, t158); // Fp2 mul start - let t162 = circuit_mul(t151, t160); - let t163 = circuit_sub(t161, t162); // Fp2 mul real part end - let t164 = circuit_mul(t150, t160); - let t165 = circuit_mul(t151, t158); - let t166 = circuit_add(t164, t165); // Fp2 mul imag part end - let t167 = circuit_add(t163, t166); - let t168 = circuit_sub(t163, t166); - let t169 = circuit_mul(t167, t168); - let t170 = circuit_mul(t163, t166); - let t171 = circuit_add(t170, t170); - let t172 = circuit_add(t74, t74); // Fp2 add coeff 0/1 - let t173 = circuit_add(t75, t75); // Fp2 add coeff 1/1 - let t174 = circuit_sub(t169, t172); // Fp2 sub coeff 0/1 - let t175 = circuit_sub(t171, t173); // Fp2 sub coeff 1/1 - let t176 = circuit_sub(t74, t174); // Fp2 sub coeff 0/1 - let t177 = circuit_sub(t75, t175); // Fp2 sub coeff 1/1 - let t178 = circuit_mul(t163, t176); // Fp2 mul start - let t179 = circuit_mul(t166, t177); - let t180 = circuit_sub(t178, t179); // Fp2 mul real part end - let t181 = circuit_mul(t163, t177); - let t182 = circuit_mul(t166, t176); - let t183 = circuit_add(t181, t182); // Fp2 mul imag part end - let t184 = circuit_sub(t180, t84); // Fp2 sub coeff 0/1 - let t185 = circuit_sub(t183, t85); // Fp2 sub coeff 1/1 - let t186 = circuit_mul(t163, t74); // Fp2 mul start - let t187 = circuit_mul(t166, t75); - let t188 = circuit_sub(t186, t187); // Fp2 mul real part end - let t189 = circuit_mul(t163, t75); - let t190 = circuit_mul(t166, t74); - let t191 = circuit_add(t189, t190); // Fp2 mul imag part end - let t192 = circuit_sub(t188, t84); // Fp2 sub coeff 0/1 - let t193 = circuit_sub(t191, t85); // Fp2 sub coeff 1/1 - let t194 = circuit_mul(in0, t166); - let t195 = circuit_add(t163, t194); - let t196 = circuit_mul(t195, in26); // eval bn line by xNegOverY - let t197 = circuit_mul(in0, t193); - let t198 = circuit_add(t192, t197); - let t199 = circuit_mul(t198, in25); // eval bn line by yInv - let t200 = circuit_mul(t166, in26); // eval bn line by xNegOverY - let t201 = circuit_mul(t193, in25); // eval bn line by yInv - let t202 = circuit_mul(t196, in45); // Eval sparse poly line_2p_1 step coeff_1 * z^1 - let t203 = circuit_add(in1, t202); // Eval sparse poly line_2p_1 step + coeff_1 * z^1 - let t204 = circuit_mul(t199, t1); // Eval sparse poly line_2p_1 step coeff_3 * z^3 - let t205 = circuit_add(t203, t204); // Eval sparse poly line_2p_1 step + coeff_3 * z^3 - let t206 = circuit_mul(t200, t5); // Eval sparse poly line_2p_1 step coeff_7 * z^7 - let t207 = circuit_add(t205, t206); // Eval sparse poly line_2p_1 step + coeff_7 * z^7 - let t208 = circuit_mul(t201, t7); // Eval sparse poly line_2p_1 step coeff_9 * z^9 - let t209 = circuit_add(t207, t208); // Eval sparse poly line_2p_1 step + coeff_9 * z^9 - let t210 = circuit_mul(t145, t209); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_2(z) - let t211 = circuit_mul(in34, in45); // Eval f_i+1 step coeff_1 * z^1 - let t212 = circuit_add(in33, t211); // Eval f_i+1 step + (coeff_1 * z^1) - let t213 = circuit_mul(in35, t0); // Eval f_i+1 step coeff_2 * z^2 - let t214 = circuit_add(t212, t213); // Eval f_i+1 step + (coeff_2 * z^2) - let t215 = circuit_mul(in36, t1); // Eval f_i+1 step coeff_3 * z^3 - let t216 = circuit_add(t214, t215); // Eval f_i+1 step + (coeff_3 * z^3) - let t217 = circuit_mul(in37, t2); // Eval f_i+1 step coeff_4 * z^4 - let t218 = circuit_add(t216, t217); // Eval f_i+1 step + (coeff_4 * z^4) - let t219 = circuit_mul(in38, t3); // Eval f_i+1 step coeff_5 * z^5 - let t220 = circuit_add(t218, t219); // Eval f_i+1 step + (coeff_5 * z^5) - let t221 = circuit_mul(in39, t4); // Eval f_i+1 step coeff_6 * z^6 - let t222 = circuit_add(t220, t221); // Eval f_i+1 step + (coeff_6 * z^6) - let t223 = circuit_mul(in40, t5); // Eval f_i+1 step coeff_7 * z^7 - let t224 = circuit_add(t222, t223); // Eval f_i+1 step + (coeff_7 * z^7) - let t225 = circuit_mul(in41, t6); // Eval f_i+1 step coeff_8 * z^8 - let t226 = circuit_add(t224, t225); // Eval f_i+1 step + (coeff_8 * z^8) - let t227 = circuit_mul(in42, t7); // Eval f_i+1 step coeff_9 * z^9 - let t228 = circuit_add(t226, t227); // Eval f_i+1 step + (coeff_9 * z^9) - let t229 = circuit_mul(in43, t8); // Eval f_i+1 step coeff_10 * z^10 - let t230 = circuit_add(t228, t229); // Eval f_i+1 step + (coeff_10 * z^10) - let t231 = circuit_mul(in44, t9); // Eval f_i+1 step coeff_11 * z^11 - let t232 = circuit_add(t230, t231); // Eval f_i+1 step + (coeff_11 * z^11) - let t233 = circuit_sub(t210, t232); // (螤(i,k) (Pk(z))) - Ri(z) - let t234 = circuit_mul(t10, t233); // ci * ((螤(i,k) (Pk(z)) - Ri(z)) - let t235 = circuit_add(in31, t234); // LHS = LHS + ci * ((螤(i,k) (Pk(z)) - Ri(z)) + let t107 = circuit_mul(in0, in18); + let t108 = circuit_add(in17, t107); + let t109 = circuit_mul(t108, in6); // eval bn line by xNegOverY + let t110 = circuit_mul(in0, in20); + let t111 = circuit_add(in19, t110); + let t112 = circuit_mul(t111, in5); // eval bn line by yInv + let t113 = circuit_mul(in18, in6); // eval bn line by xNegOverY + let t114 = circuit_mul(in20, in5); // eval bn line by yInv + let t115 = circuit_mul(t109, in34); // Eval sparse poly line_0p_1 step coeff_1 * z^1 + let t116 = circuit_add(in1, t115); // Eval sparse poly line_0p_1 step + coeff_1 * z^1 + let t117 = circuit_mul(t112, t1); // Eval sparse poly line_0p_1 step coeff_3 * z^3 + let t118 = circuit_add(t116, t117); // Eval sparse poly line_0p_1 step + coeff_3 * z^3 + let t119 = circuit_mul(t113, t3); // Eval sparse poly line_0p_1 step coeff_7 * z^7 + let t120 = circuit_add(t118, t119); // Eval sparse poly line_0p_1 step + coeff_7 * z^7 + let t121 = circuit_mul(t114, t4); // Eval sparse poly line_0p_1 step coeff_9 * z^9 + let t122 = circuit_add(t120, t121); // Eval sparse poly line_0p_1 step + coeff_9 * z^9 + let t123 = circuit_mul(t106, t122); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) + let t124 = circuit_mul(in0, in22); + let t125 = circuit_add(in21, t124); + let t126 = circuit_mul(t125, in16); // eval bn line by xNegOverY + let t127 = circuit_mul(in0, in24); + let t128 = circuit_add(in23, t127); + let t129 = circuit_mul(t128, in15); // eval bn line by yInv + let t130 = circuit_mul(in22, in16); // eval bn line by xNegOverY + let t131 = circuit_mul(in24, in15); // eval bn line by yInv + let t132 = circuit_mul(t126, in34); // Eval sparse poly line_1p_1 step coeff_1 * z^1 + let t133 = circuit_add(in1, t132); // Eval sparse poly line_1p_1 step + coeff_1 * z^1 + let t134 = circuit_mul(t129, t1); // Eval sparse poly line_1p_1 step coeff_3 * z^3 + let t135 = circuit_add(t133, t134); // Eval sparse poly line_1p_1 step + coeff_3 * z^3 + let t136 = circuit_mul(t130, t3); // Eval sparse poly line_1p_1 step coeff_7 * z^7 + let t137 = circuit_add(t135, t136); // Eval sparse poly line_1p_1 step + coeff_7 * z^7 + let t138 = circuit_mul(t131, t4); // Eval sparse poly line_1p_1 step coeff_9 * z^9 + let t139 = circuit_add(t137, t138); // Eval sparse poly line_1p_1 step + coeff_9 * z^9 + let t140 = circuit_mul(t123, t139); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) + let t141 = circuit_add(t69, t70); // Doubling slope numerator start + let t142 = circuit_sub(t69, t70); + let t143 = circuit_mul(t141, t142); + let t144 = circuit_mul(t69, t70); + let t145 = circuit_mul(t143, in2); + let t146 = circuit_mul(t144, in3); // Doubling slope numerator end + let t147 = circuit_add(t79, t79); // Fp2 add coeff 0/1 + let t148 = circuit_add(t80, t80); // Fp2 add coeff 1/1 + let t149 = circuit_mul(t147, t147); // Fp2 Div x/y start : Fp2 Inv y start + let t150 = circuit_mul(t148, t148); + let t151 = circuit_add(t149, t150); + let t152 = circuit_inverse(t151); + let t153 = circuit_mul(t147, t152); // Fp2 Inv y real part end + let t154 = circuit_mul(t148, t152); + let t155 = circuit_sub(in4, t154); // Fp2 Inv y imag part end + let t156 = circuit_mul(t145, t153); // Fp2 mul start + let t157 = circuit_mul(t146, t155); + let t158 = circuit_sub(t156, t157); // Fp2 mul real part end + let t159 = circuit_mul(t145, t155); + let t160 = circuit_mul(t146, t153); + let t161 = circuit_add(t159, t160); // Fp2 mul imag part end + let t162 = circuit_add(t158, t161); + let t163 = circuit_sub(t158, t161); + let t164 = circuit_mul(t162, t163); + let t165 = circuit_mul(t158, t161); + let t166 = circuit_add(t165, t165); + let t167 = circuit_add(t69, t69); // Fp2 add coeff 0/1 + let t168 = circuit_add(t70, t70); // Fp2 add coeff 1/1 + let t169 = circuit_sub(t164, t167); // Fp2 sub coeff 0/1 + let t170 = circuit_sub(t166, t168); // Fp2 sub coeff 1/1 + let t171 = circuit_sub(t69, t169); // Fp2 sub coeff 0/1 + let t172 = circuit_sub(t70, t170); // Fp2 sub coeff 1/1 + let t173 = circuit_mul(t158, t171); // Fp2 mul start + let t174 = circuit_mul(t161, t172); + let t175 = circuit_sub(t173, t174); // Fp2 mul real part end + let t176 = circuit_mul(t158, t172); + let t177 = circuit_mul(t161, t171); + let t178 = circuit_add(t176, t177); // Fp2 mul imag part end + let t179 = circuit_sub(t175, t79); // Fp2 sub coeff 0/1 + let t180 = circuit_sub(t178, t80); // Fp2 sub coeff 1/1 + let t181 = circuit_mul(t158, t69); // Fp2 mul start + let t182 = circuit_mul(t161, t70); + let t183 = circuit_sub(t181, t182); // Fp2 mul real part end + let t184 = circuit_mul(t158, t70); + let t185 = circuit_mul(t161, t69); + let t186 = circuit_add(t184, t185); // Fp2 mul imag part end + let t187 = circuit_sub(t183, t79); // Fp2 sub coeff 0/1 + let t188 = circuit_sub(t186, t80); // Fp2 sub coeff 1/1 + let t189 = circuit_mul(in0, t161); + let t190 = circuit_add(t158, t189); + let t191 = circuit_mul(t190, in26); // eval bn line by xNegOverY + let t192 = circuit_mul(in0, t188); + let t193 = circuit_add(t187, t192); + let t194 = circuit_mul(t193, in25); // eval bn line by yInv + let t195 = circuit_mul(t161, in26); // eval bn line by xNegOverY + let t196 = circuit_mul(t188, in25); // eval bn line by yInv + let t197 = circuit_mul(t191, in34); // Eval sparse poly line_2p_1 step coeff_1 * z^1 + let t198 = circuit_add(in1, t197); // Eval sparse poly line_2p_1 step + coeff_1 * z^1 + let t199 = circuit_mul(t194, t1); // Eval sparse poly line_2p_1 step coeff_3 * z^3 + let t200 = circuit_add(t198, t199); // Eval sparse poly line_2p_1 step + coeff_3 * z^3 + let t201 = circuit_mul(t195, t3); // Eval sparse poly line_2p_1 step coeff_7 * z^7 + let t202 = circuit_add(t200, t201); // Eval sparse poly line_2p_1 step + coeff_7 * z^7 + let t203 = circuit_mul(t196, t4); // Eval sparse poly line_2p_1 step coeff_9 * z^9 + let t204 = circuit_add(t202, t203); // Eval sparse poly line_2p_1 step + coeff_9 * z^9 + let t205 = circuit_mul(t140, t204); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_2(z) + let t206 = circuit_sub(t205, in33); // (螤(i,k) (Pk(z))) - Ri(z) + let t207 = circuit_mul(t5, t206); // ci * ((螤(i,k) (Pk(z)) - Ri(z)) + let t208 = circuit_add(in31, t207); // LHS = LHS + ci * ((螤(i,k) (Pk(z)) - Ri(z)) let modulus = TryInto::< _, CircuitModulus >::try_into([0x6871ca8d3c208c16d87cfd47, 0xb85045b68181585d97816a91, 0x30644e72e131a029, 0x0]) .unwrap(); // BN254 prime field modulus - let mut circuit_inputs = (t174, t175, t184, t185, t232, t235, t10,).new_inputs(); + let mut circuit_inputs = (t169, t170, t179, t180, t208, t5,).new_inputs(); // Prefill constants: circuit_inputs = circuit_inputs - .next( + .next_2( [0x6871ca8d3c208c16d87cfd3e, 0xb85045b68181585d97816a91, 0x30644e72e131a029, 0x0] ); // in0 - circuit_inputs = circuit_inputs.next([0x1, 0x0, 0x0, 0x0]); // in1 - circuit_inputs = circuit_inputs.next([0x3, 0x0, 0x0, 0x0]); // in2 - circuit_inputs = circuit_inputs.next([0x6, 0x0, 0x0, 0x0]); // in3 - circuit_inputs = circuit_inputs.next([0x0, 0x0, 0x0, 0x0]); // in4 + circuit_inputs = circuit_inputs.next_2([0x1, 0x0, 0x0, 0x0]); // in1 + circuit_inputs = circuit_inputs.next_2([0x3, 0x0, 0x0, 0x0]); // in2 + circuit_inputs = circuit_inputs.next_2([0x6, 0x0, 0x0, 0x0]); // in3 + circuit_inputs = circuit_inputs.next_2([0x0, 0x0, 0x0, 0x0]); // in4 // Fill inputs: - circuit_inputs = circuit_inputs.next(yInv_0); // in5 - circuit_inputs = circuit_inputs.next(xNegOverY_0); // in6 - circuit_inputs = circuit_inputs.next(G2_line_0.r0a0); // in7 - circuit_inputs = circuit_inputs.next(G2_line_0.r0a1); // in8 - circuit_inputs = circuit_inputs.next(G2_line_0.r1a0); // in9 - circuit_inputs = circuit_inputs.next(G2_line_0.r1a1); // in10 - circuit_inputs = circuit_inputs.next(G2_line_2nd_0_0.r0a0); // in11 - circuit_inputs = circuit_inputs.next(G2_line_2nd_0_0.r0a1); // in12 - circuit_inputs = circuit_inputs.next(G2_line_2nd_0_0.r1a0); // in13 - circuit_inputs = circuit_inputs.next(G2_line_2nd_0_0.r1a1); // in14 - circuit_inputs = circuit_inputs.next(yInv_1); // in15 - circuit_inputs = circuit_inputs.next(xNegOverY_1); // in16 - circuit_inputs = circuit_inputs.next(G2_line_1.r0a0); // in17 - circuit_inputs = circuit_inputs.next(G2_line_1.r0a1); // in18 - circuit_inputs = circuit_inputs.next(G2_line_1.r1a0); // in19 - circuit_inputs = circuit_inputs.next(G2_line_1.r1a1); // in20 - circuit_inputs = circuit_inputs.next(G2_line_2nd_0_1.r0a0); // in21 - circuit_inputs = circuit_inputs.next(G2_line_2nd_0_1.r0a1); // in22 - circuit_inputs = circuit_inputs.next(G2_line_2nd_0_1.r1a0); // in23 - circuit_inputs = circuit_inputs.next(G2_line_2nd_0_1.r1a1); // in24 - circuit_inputs = circuit_inputs.next(yInv_2); // in25 - circuit_inputs = circuit_inputs.next(xNegOverY_2); // in26 - circuit_inputs = circuit_inputs.next(Q_2.x0); // in27 - circuit_inputs = circuit_inputs.next(Q_2.x1); // in28 - circuit_inputs = circuit_inputs.next(Q_2.y0); // in29 - circuit_inputs = circuit_inputs.next(Q_2.y1); // in30 - circuit_inputs = circuit_inputs.next(lhs_i); // in31 - circuit_inputs = circuit_inputs.next(f_i_of_z); // in32 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w0); // in33 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w1); // in34 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w2); // in35 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w3); // in36 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w4); // in37 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w5); // in38 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w6); // in39 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w7); // in40 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w8); // in41 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w9); // in42 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w10); // in43 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w11); // in44 - circuit_inputs = circuit_inputs.next(z); // in45 - circuit_inputs = circuit_inputs.next(ci); // in46 + circuit_inputs = circuit_inputs.next_2(yInv_0); // in5 + circuit_inputs = circuit_inputs.next_2(xNegOverY_0); // in6 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r0a0); // in7 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r0a1); // in8 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r1a0); // in9 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r1a1); // in10 + circuit_inputs = circuit_inputs.next_2(G2_line_2nd_0_0.r0a0); // in11 + circuit_inputs = circuit_inputs.next_2(G2_line_2nd_0_0.r0a1); // in12 + circuit_inputs = circuit_inputs.next_2(G2_line_2nd_0_0.r1a0); // in13 + circuit_inputs = circuit_inputs.next_2(G2_line_2nd_0_0.r1a1); // in14 + circuit_inputs = circuit_inputs.next_2(yInv_1); // in15 + circuit_inputs = circuit_inputs.next_2(xNegOverY_1); // in16 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r0a0); // in17 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r0a1); // in18 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r1a0); // in19 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r1a1); // in20 + circuit_inputs = circuit_inputs.next_2(G2_line_2nd_0_1.r0a0); // in21 + circuit_inputs = circuit_inputs.next_2(G2_line_2nd_0_1.r0a1); // in22 + circuit_inputs = circuit_inputs.next_2(G2_line_2nd_0_1.r1a0); // in23 + circuit_inputs = circuit_inputs.next_2(G2_line_2nd_0_1.r1a1); // in24 + circuit_inputs = circuit_inputs.next_2(yInv_2); // in25 + circuit_inputs = circuit_inputs.next_2(xNegOverY_2); // in26 + circuit_inputs = circuit_inputs.next_2(Q_2.x0); // in27 + circuit_inputs = circuit_inputs.next_2(Q_2.x1); // in28 + circuit_inputs = circuit_inputs.next_2(Q_2.y0); // in29 + circuit_inputs = circuit_inputs.next_2(Q_2.y1); // in30 + circuit_inputs = circuit_inputs.next_2(lhs_i); // in31 + circuit_inputs = circuit_inputs.next_2(f_i_of_z); // in32 + circuit_inputs = circuit_inputs.next_2(f_i_plus_one_of_z); // in33 + circuit_inputs = circuit_inputs.next_2(z); // in34 + circuit_inputs = circuit_inputs.next_2(ci); // in35 - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); let Q0: G2Point = G2Point { - x0: outputs.get_output(t174), - x1: outputs.get_output(t175), - y0: outputs.get_output(t184), - y1: outputs.get_output(t185) + x0: outputs.get_output(t169), + x1: outputs.get_output(t170), + y0: outputs.get_output(t179), + y1: outputs.get_output(t180) }; - let f_i_plus_one_of_z: u384 = outputs.get_output(t232); - let lhs_i_plus_one: u384 = outputs.get_output(t235); - let ci_plus_one: u384 = outputs.get_output(t10); - return (Q0, f_i_plus_one_of_z, lhs_i_plus_one, ci_plus_one); + let lhs_i_plus_one: u384 = outputs.get_output(t208); + let ci_plus_one: u384 = outputs.get_output(t5); + return (Q0, lhs_i_plus_one, ci_plus_one); } fn run_BN254_MP_CHECK_BIT0_2P_2F_circuit( yInv_0: u384, @@ -3742,10 +3265,10 @@ fn run_BN254_MP_CHECK_BIT0_2P_2F_circuit( G2_line_1: G2Line, lhs_i: u384, f_i_of_z: u384, - f_i_plus_one: E12D, + f_i_plus_one_of_z: u384, z: u384, ci: u384 -) -> (u384, u384, u384) { +) -> (u384, u384) { // CONSTANT stack let in0 = CE::> {}; // -0x9 % p let in1 = CE::> {}; // 0x1 @@ -3756,133 +3279,87 @@ fn run_BN254_MP_CHECK_BIT0_2P_2F_circuit( let (in8, in9, in10) = (CE::> {}, CE::> {}, CE::> {}); let (in11, in12, in13) = (CE::> {}, CE::> {}, CE::> {}); let (in14, in15, in16) = (CE::> {}, CE::> {}, CE::> {}); - let (in17, in18, in19) = (CE::> {}, CE::> {}, CE::> {}); - let (in20, in21, in22) = (CE::> {}, CE::> {}, CE::> {}); - let (in23, in24, in25) = (CE::> {}, CE::> {}, CE::> {}); - let (in26, in27, in28) = (CE::> {}, CE::> {}, CE::> {}); - let in29 = CE::> {}; - let t0 = circuit_mul(in28, in28); // Compute z^2 - let t1 = circuit_mul(t0, in28); // Compute z^3 - let t2 = circuit_mul(t1, in28); // Compute z^4 - let t3 = circuit_mul(t2, in28); // Compute z^5 - let t4 = circuit_mul(t3, in28); // Compute z^6 - let t5 = circuit_mul(t4, in28); // Compute z^7 - let t6 = circuit_mul(t5, in28); // Compute z^8 - let t7 = circuit_mul(t6, in28); // Compute z^9 - let t8 = circuit_mul(t7, in28); // Compute z^10 - let t9 = circuit_mul(t8, in28); // Compute z^11 - let t10 = circuit_mul(in29, in29); // Compute c_i = (c_(i-1))^2 - let t11 = circuit_mul(in15, in15); // Square f evaluation in Z, the result of previous bit. - let t12 = circuit_mul(in0, in5); - let t13 = circuit_add(in4, t12); - let t14 = circuit_mul(t13, in3); // eval bn line by xNegOverY - let t15 = circuit_mul(in0, in7); - let t16 = circuit_add(in6, t15); - let t17 = circuit_mul(t16, in2); // eval bn line by yInv - let t18 = circuit_mul(in5, in3); // eval bn line by xNegOverY - let t19 = circuit_mul(in7, in2); // eval bn line by yInv - let t20 = circuit_mul(t14, in28); // Eval sparse poly line_0p_1 step coeff_1 * z^1 - let t21 = circuit_add(in1, t20); // Eval sparse poly line_0p_1 step + coeff_1 * z^1 - let t22 = circuit_mul(t17, t1); // Eval sparse poly line_0p_1 step coeff_3 * z^3 - let t23 = circuit_add(t21, t22); // Eval sparse poly line_0p_1 step + coeff_3 * z^3 - let t24 = circuit_mul(t18, t5); // Eval sparse poly line_0p_1 step coeff_7 * z^7 - let t25 = circuit_add(t23, t24); // Eval sparse poly line_0p_1 step + coeff_7 * z^7 - let t26 = circuit_mul(t19, t7); // Eval sparse poly line_0p_1 step coeff_9 * z^9 - let t27 = circuit_add(t25, t26); // Eval sparse poly line_0p_1 step + coeff_9 * z^9 - let t28 = circuit_mul(t11, t27); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) - let t29 = circuit_mul(in0, in11); - let t30 = circuit_add(in10, t29); - let t31 = circuit_mul(t30, in9); // eval bn line by xNegOverY - let t32 = circuit_mul(in0, in13); - let t33 = circuit_add(in12, t32); - let t34 = circuit_mul(t33, in8); // eval bn line by yInv - let t35 = circuit_mul(in11, in9); // eval bn line by xNegOverY - let t36 = circuit_mul(in13, in8); // eval bn line by yInv - let t37 = circuit_mul(t31, in28); // Eval sparse poly line_1p_1 step coeff_1 * z^1 - let t38 = circuit_add(in1, t37); // Eval sparse poly line_1p_1 step + coeff_1 * z^1 - let t39 = circuit_mul(t34, t1); // Eval sparse poly line_1p_1 step coeff_3 * z^3 - let t40 = circuit_add(t38, t39); // Eval sparse poly line_1p_1 step + coeff_3 * z^3 - let t41 = circuit_mul(t35, t5); // Eval sparse poly line_1p_1 step coeff_7 * z^7 - let t42 = circuit_add(t40, t41); // Eval sparse poly line_1p_1 step + coeff_7 * z^7 - let t43 = circuit_mul(t36, t7); // Eval sparse poly line_1p_1 step coeff_9 * z^9 - let t44 = circuit_add(t42, t43); // Eval sparse poly line_1p_1 step + coeff_9 * z^9 - let t45 = circuit_mul(t28, t44); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) - let t46 = circuit_mul(in17, in28); // Eval f_i+1 step coeff_1 * z^1 - let t47 = circuit_add(in16, t46); // Eval f_i+1 step + (coeff_1 * z^1) - let t48 = circuit_mul(in18, t0); // Eval f_i+1 step coeff_2 * z^2 - let t49 = circuit_add(t47, t48); // Eval f_i+1 step + (coeff_2 * z^2) - let t50 = circuit_mul(in19, t1); // Eval f_i+1 step coeff_3 * z^3 - let t51 = circuit_add(t49, t50); // Eval f_i+1 step + (coeff_3 * z^3) - let t52 = circuit_mul(in20, t2); // Eval f_i+1 step coeff_4 * z^4 - let t53 = circuit_add(t51, t52); // Eval f_i+1 step + (coeff_4 * z^4) - let t54 = circuit_mul(in21, t3); // Eval f_i+1 step coeff_5 * z^5 - let t55 = circuit_add(t53, t54); // Eval f_i+1 step + (coeff_5 * z^5) - let t56 = circuit_mul(in22, t4); // Eval f_i+1 step coeff_6 * z^6 - let t57 = circuit_add(t55, t56); // Eval f_i+1 step + (coeff_6 * z^6) - let t58 = circuit_mul(in23, t5); // Eval f_i+1 step coeff_7 * z^7 - let t59 = circuit_add(t57, t58); // Eval f_i+1 step + (coeff_7 * z^7) - let t60 = circuit_mul(in24, t6); // Eval f_i+1 step coeff_8 * z^8 - let t61 = circuit_add(t59, t60); // Eval f_i+1 step + (coeff_8 * z^8) - let t62 = circuit_mul(in25, t7); // Eval f_i+1 step coeff_9 * z^9 - let t63 = circuit_add(t61, t62); // Eval f_i+1 step + (coeff_9 * z^9) - let t64 = circuit_mul(in26, t8); // Eval f_i+1 step coeff_10 * z^10 - let t65 = circuit_add(t63, t64); // Eval f_i+1 step + (coeff_10 * z^10) - let t66 = circuit_mul(in27, t9); // Eval f_i+1 step coeff_11 * z^11 - let t67 = circuit_add(t65, t66); // Eval f_i+1 step + (coeff_11 * z^11) - let t68 = circuit_sub(t45, t67); // (螤(i,k) (Pk(z))) - Ri(z) - let t69 = circuit_mul(t10, t68); // ci * ((螤(i,k) (Pk(z)) - Ri(z)) - let t70 = circuit_add(in14, t69); // LHS = LHS + ci * ((螤(i,k) (Pk(z)) - Ri(z)) + let (in17, in18) = (CE::> {}, CE::> {}); + let t0 = circuit_mul(in17, in17); // compute z^2 + let t1 = circuit_mul(t0, in17); // compute z^3 + let t2 = circuit_mul(t1, t1); // compute z^6 + let t3 = circuit_mul(t2, in17); // compute z^7 + let t4 = circuit_mul(t3, t0); // compute z^9 + let t5 = circuit_mul(in18, in18); // Compute c_i = (c_(i-1))^2 + let t6 = circuit_mul(in15, in15); // Square f evaluation in Z, the result of previous bit. + let t7 = circuit_mul(in0, in5); + let t8 = circuit_add(in4, t7); + let t9 = circuit_mul(t8, in3); // eval bn line by xNegOverY + let t10 = circuit_mul(in0, in7); + let t11 = circuit_add(in6, t10); + let t12 = circuit_mul(t11, in2); // eval bn line by yInv + let t13 = circuit_mul(in5, in3); // eval bn line by xNegOverY + let t14 = circuit_mul(in7, in2); // eval bn line by yInv + let t15 = circuit_mul(t9, in17); // Eval sparse poly line_0p_1 step coeff_1 * z^1 + let t16 = circuit_add(in1, t15); // Eval sparse poly line_0p_1 step + coeff_1 * z^1 + let t17 = circuit_mul(t12, t1); // Eval sparse poly line_0p_1 step coeff_3 * z^3 + let t18 = circuit_add(t16, t17); // Eval sparse poly line_0p_1 step + coeff_3 * z^3 + let t19 = circuit_mul(t13, t3); // Eval sparse poly line_0p_1 step coeff_7 * z^7 + let t20 = circuit_add(t18, t19); // Eval sparse poly line_0p_1 step + coeff_7 * z^7 + let t21 = circuit_mul(t14, t4); // Eval sparse poly line_0p_1 step coeff_9 * z^9 + let t22 = circuit_add(t20, t21); // Eval sparse poly line_0p_1 step + coeff_9 * z^9 + let t23 = circuit_mul(t6, t22); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) + let t24 = circuit_mul(in0, in11); + let t25 = circuit_add(in10, t24); + let t26 = circuit_mul(t25, in9); // eval bn line by xNegOverY + let t27 = circuit_mul(in0, in13); + let t28 = circuit_add(in12, t27); + let t29 = circuit_mul(t28, in8); // eval bn line by yInv + let t30 = circuit_mul(in11, in9); // eval bn line by xNegOverY + let t31 = circuit_mul(in13, in8); // eval bn line by yInv + let t32 = circuit_mul(t26, in17); // Eval sparse poly line_1p_1 step coeff_1 * z^1 + let t33 = circuit_add(in1, t32); // Eval sparse poly line_1p_1 step + coeff_1 * z^1 + let t34 = circuit_mul(t29, t1); // Eval sparse poly line_1p_1 step coeff_3 * z^3 + let t35 = circuit_add(t33, t34); // Eval sparse poly line_1p_1 step + coeff_3 * z^3 + let t36 = circuit_mul(t30, t3); // Eval sparse poly line_1p_1 step coeff_7 * z^7 + let t37 = circuit_add(t35, t36); // Eval sparse poly line_1p_1 step + coeff_7 * z^7 + let t38 = circuit_mul(t31, t4); // Eval sparse poly line_1p_1 step coeff_9 * z^9 + let t39 = circuit_add(t37, t38); // Eval sparse poly line_1p_1 step + coeff_9 * z^9 + let t40 = circuit_mul(t23, t39); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) + let t41 = circuit_sub(t40, in16); // (螤(i,k) (Pk(z))) - Ri(z) + let t42 = circuit_mul(t5, t41); // ci * ((螤(i,k) (Pk(z)) - Ri(z)) + let t43 = circuit_add(in14, t42); // LHS = LHS + ci * ((螤(i,k) (Pk(z)) - Ri(z)) let modulus = TryInto::< _, CircuitModulus >::try_into([0x6871ca8d3c208c16d87cfd47, 0xb85045b68181585d97816a91, 0x30644e72e131a029, 0x0]) .unwrap(); // BN254 prime field modulus - let mut circuit_inputs = (t67, t70, t10,).new_inputs(); + let mut circuit_inputs = (t43, t5,).new_inputs(); // Prefill constants: circuit_inputs = circuit_inputs - .next( + .next_2( [0x6871ca8d3c208c16d87cfd3e, 0xb85045b68181585d97816a91, 0x30644e72e131a029, 0x0] ); // in0 - circuit_inputs = circuit_inputs.next([0x1, 0x0, 0x0, 0x0]); // in1 + circuit_inputs = circuit_inputs.next_2([0x1, 0x0, 0x0, 0x0]); // in1 // Fill inputs: - circuit_inputs = circuit_inputs.next(yInv_0); // in2 - circuit_inputs = circuit_inputs.next(xNegOverY_0); // in3 - circuit_inputs = circuit_inputs.next(G2_line_0.r0a0); // in4 - circuit_inputs = circuit_inputs.next(G2_line_0.r0a1); // in5 - circuit_inputs = circuit_inputs.next(G2_line_0.r1a0); // in6 - circuit_inputs = circuit_inputs.next(G2_line_0.r1a1); // in7 - circuit_inputs = circuit_inputs.next(yInv_1); // in8 - circuit_inputs = circuit_inputs.next(xNegOverY_1); // in9 - circuit_inputs = circuit_inputs.next(G2_line_1.r0a0); // in10 - circuit_inputs = circuit_inputs.next(G2_line_1.r0a1); // in11 - circuit_inputs = circuit_inputs.next(G2_line_1.r1a0); // in12 - circuit_inputs = circuit_inputs.next(G2_line_1.r1a1); // in13 - circuit_inputs = circuit_inputs.next(lhs_i); // in14 - circuit_inputs = circuit_inputs.next(f_i_of_z); // in15 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w0); // in16 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w1); // in17 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w2); // in18 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w3); // in19 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w4); // in20 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w5); // in21 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w6); // in22 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w7); // in23 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w8); // in24 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w9); // in25 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w10); // in26 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w11); // in27 - circuit_inputs = circuit_inputs.next(z); // in28 - circuit_inputs = circuit_inputs.next(ci); // in29 + circuit_inputs = circuit_inputs.next_2(yInv_0); // in2 + circuit_inputs = circuit_inputs.next_2(xNegOverY_0); // in3 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r0a0); // in4 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r0a1); // in5 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r1a0); // in6 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r1a1); // in7 + circuit_inputs = circuit_inputs.next_2(yInv_1); // in8 + circuit_inputs = circuit_inputs.next_2(xNegOverY_1); // in9 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r0a0); // in10 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r0a1); // in11 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r1a0); // in12 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r1a1); // in13 + circuit_inputs = circuit_inputs.next_2(lhs_i); // in14 + circuit_inputs = circuit_inputs.next_2(f_i_of_z); // in15 + circuit_inputs = circuit_inputs.next_2(f_i_plus_one_of_z); // in16 + circuit_inputs = circuit_inputs.next_2(z); // in17 + circuit_inputs = circuit_inputs.next_2(ci); // in18 - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; - let f_i_plus_one_of_z: u384 = outputs.get_output(t67); - let lhs_i_plus_one: u384 = outputs.get_output(t70); - let ci_plus_one: u384 = outputs.get_output(t10); - return (f_i_plus_one_of_z, lhs_i_plus_one, ci_plus_one); + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); + let lhs_i_plus_one: u384 = outputs.get_output(t43); + let ci_plus_one: u384 = outputs.get_output(t5); + return (lhs_i_plus_one, ci_plus_one); } fn run_BN254_MP_CHECK_BIT0_3P_2F_circuit( yInv_0: u384, @@ -3896,10 +3373,10 @@ fn run_BN254_MP_CHECK_BIT0_3P_2F_circuit( Q_2: G2Point, lhs_i: u384, f_i_of_z: u384, - f_i_plus_one: E12D, + f_i_plus_one_of_z: u384, z: u384, ci: u384 -) -> (G2Point, u384, u384, u384) { +) -> (G2Point, u384, u384) { // CONSTANT stack let in0 = CE::> {}; // -0x9 % p let in1 = CE::> {}; // 0x1 @@ -3915,213 +3392,167 @@ fn run_BN254_MP_CHECK_BIT0_3P_2F_circuit( let (in17, in18, in19) = (CE::> {}, CE::> {}, CE::> {}); let (in20, in21, in22) = (CE::> {}, CE::> {}, CE::> {}); let (in23, in24, in25) = (CE::> {}, CE::> {}, CE::> {}); - let (in26, in27, in28) = (CE::> {}, CE::> {}, CE::> {}); - let (in29, in30, in31) = (CE::> {}, CE::> {}, CE::> {}); - let (in32, in33, in34) = (CE::> {}, CE::> {}, CE::> {}); - let (in35, in36, in37) = (CE::> {}, CE::> {}, CE::> {}); - let in38 = CE::> {}; - let t0 = circuit_mul(in37, in37); // Compute z^2 - let t1 = circuit_mul(t0, in37); // Compute z^3 - let t2 = circuit_mul(t1, in37); // Compute z^4 - let t3 = circuit_mul(t2, in37); // Compute z^5 - let t4 = circuit_mul(t3, in37); // Compute z^6 - let t5 = circuit_mul(t4, in37); // Compute z^7 - let t6 = circuit_mul(t5, in37); // Compute z^8 - let t7 = circuit_mul(t6, in37); // Compute z^9 - let t8 = circuit_mul(t7, in37); // Compute z^10 - let t9 = circuit_mul(t8, in37); // Compute z^11 - let t10 = circuit_mul(in38, in38); // Compute c_i = (c_(i-1))^2 - let t11 = circuit_mul(in24, in24); // Square f evaluation in Z, the result of previous bit. - let t12 = circuit_mul(in0, in8); - let t13 = circuit_add(in7, t12); - let t14 = circuit_mul(t13, in6); // eval bn line by xNegOverY - let t15 = circuit_mul(in0, in10); - let t16 = circuit_add(in9, t15); - let t17 = circuit_mul(t16, in5); // eval bn line by yInv - let t18 = circuit_mul(in8, in6); // eval bn line by xNegOverY - let t19 = circuit_mul(in10, in5); // eval bn line by yInv - let t20 = circuit_mul(t14, in37); // Eval sparse poly line_0p_1 step coeff_1 * z^1 - let t21 = circuit_add(in1, t20); // Eval sparse poly line_0p_1 step + coeff_1 * z^1 - let t22 = circuit_mul(t17, t1); // Eval sparse poly line_0p_1 step coeff_3 * z^3 - let t23 = circuit_add(t21, t22); // Eval sparse poly line_0p_1 step + coeff_3 * z^3 - let t24 = circuit_mul(t18, t5); // Eval sparse poly line_0p_1 step coeff_7 * z^7 - let t25 = circuit_add(t23, t24); // Eval sparse poly line_0p_1 step + coeff_7 * z^7 - let t26 = circuit_mul(t19, t7); // Eval sparse poly line_0p_1 step coeff_9 * z^9 - let t27 = circuit_add(t25, t26); // Eval sparse poly line_0p_1 step + coeff_9 * z^9 - let t28 = circuit_mul(t11, t27); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) - let t29 = circuit_mul(in0, in14); - let t30 = circuit_add(in13, t29); - let t31 = circuit_mul(t30, in12); // eval bn line by xNegOverY - let t32 = circuit_mul(in0, in16); - let t33 = circuit_add(in15, t32); - let t34 = circuit_mul(t33, in11); // eval bn line by yInv - let t35 = circuit_mul(in14, in12); // eval bn line by xNegOverY - let t36 = circuit_mul(in16, in11); // eval bn line by yInv - let t37 = circuit_mul(t31, in37); // Eval sparse poly line_1p_1 step coeff_1 * z^1 - let t38 = circuit_add(in1, t37); // Eval sparse poly line_1p_1 step + coeff_1 * z^1 - let t39 = circuit_mul(t34, t1); // Eval sparse poly line_1p_1 step coeff_3 * z^3 - let t40 = circuit_add(t38, t39); // Eval sparse poly line_1p_1 step + coeff_3 * z^3 - let t41 = circuit_mul(t35, t5); // Eval sparse poly line_1p_1 step coeff_7 * z^7 - let t42 = circuit_add(t40, t41); // Eval sparse poly line_1p_1 step + coeff_7 * z^7 - let t43 = circuit_mul(t36, t7); // Eval sparse poly line_1p_1 step coeff_9 * z^9 - let t44 = circuit_add(t42, t43); // Eval sparse poly line_1p_1 step + coeff_9 * z^9 - let t45 = circuit_mul(t28, t44); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) - let t46 = circuit_add(in19, in20); // Doubling slope numerator start - let t47 = circuit_sub(in19, in20); - let t48 = circuit_mul(t46, t47); - let t49 = circuit_mul(in19, in20); - let t50 = circuit_mul(t48, in2); - let t51 = circuit_mul(t49, in3); // Doubling slope numerator end - let t52 = circuit_add(in21, in21); // Fp2 add coeff 0/1 - let t53 = circuit_add(in22, in22); // Fp2 add coeff 1/1 - let t54 = circuit_mul(t52, t52); // Fp2 Div x/y start : Fp2 Inv y start - let t55 = circuit_mul(t53, t53); - let t56 = circuit_add(t54, t55); - let t57 = circuit_inverse(t56); - let t58 = circuit_mul(t52, t57); // Fp2 Inv y real part end - let t59 = circuit_mul(t53, t57); - let t60 = circuit_sub(in4, t59); // Fp2 Inv y imag part end - let t61 = circuit_mul(t50, t58); // Fp2 mul start - let t62 = circuit_mul(t51, t60); - let t63 = circuit_sub(t61, t62); // Fp2 mul real part end - let t64 = circuit_mul(t50, t60); - let t65 = circuit_mul(t51, t58); - let t66 = circuit_add(t64, t65); // Fp2 mul imag part end - let t67 = circuit_add(t63, t66); - let t68 = circuit_sub(t63, t66); - let t69 = circuit_mul(t67, t68); - let t70 = circuit_mul(t63, t66); - let t71 = circuit_add(t70, t70); - let t72 = circuit_add(in19, in19); // Fp2 add coeff 0/1 - let t73 = circuit_add(in20, in20); // Fp2 add coeff 1/1 - let t74 = circuit_sub(t69, t72); // Fp2 sub coeff 0/1 - let t75 = circuit_sub(t71, t73); // Fp2 sub coeff 1/1 - let t76 = circuit_sub(in19, t74); // Fp2 sub coeff 0/1 - let t77 = circuit_sub(in20, t75); // Fp2 sub coeff 1/1 - let t78 = circuit_mul(t63, t76); // Fp2 mul start - let t79 = circuit_mul(t66, t77); - let t80 = circuit_sub(t78, t79); // Fp2 mul real part end - let t81 = circuit_mul(t63, t77); - let t82 = circuit_mul(t66, t76); - let t83 = circuit_add(t81, t82); // Fp2 mul imag part end - let t84 = circuit_sub(t80, in21); // Fp2 sub coeff 0/1 - let t85 = circuit_sub(t83, in22); // Fp2 sub coeff 1/1 - let t86 = circuit_mul(t63, in19); // Fp2 mul start - let t87 = circuit_mul(t66, in20); - let t88 = circuit_sub(t86, t87); // Fp2 mul real part end - let t89 = circuit_mul(t63, in20); - let t90 = circuit_mul(t66, in19); - let t91 = circuit_add(t89, t90); // Fp2 mul imag part end - let t92 = circuit_sub(t88, in21); // Fp2 sub coeff 0/1 - let t93 = circuit_sub(t91, in22); // Fp2 sub coeff 1/1 - let t94 = circuit_mul(in0, t66); - let t95 = circuit_add(t63, t94); - let t96 = circuit_mul(t95, in18); // eval bn line by xNegOverY - let t97 = circuit_mul(in0, t93); - let t98 = circuit_add(t92, t97); - let t99 = circuit_mul(t98, in17); // eval bn line by yInv - let t100 = circuit_mul(t66, in18); // eval bn line by xNegOverY - let t101 = circuit_mul(t93, in17); // eval bn line by yInv - let t102 = circuit_mul(t96, in37); // Eval sparse poly line_2p_1 step coeff_1 * z^1 - let t103 = circuit_add(in1, t102); // Eval sparse poly line_2p_1 step + coeff_1 * z^1 - let t104 = circuit_mul(t99, t1); // Eval sparse poly line_2p_1 step coeff_3 * z^3 - let t105 = circuit_add(t103, t104); // Eval sparse poly line_2p_1 step + coeff_3 * z^3 - let t106 = circuit_mul(t100, t5); // Eval sparse poly line_2p_1 step coeff_7 * z^7 - let t107 = circuit_add(t105, t106); // Eval sparse poly line_2p_1 step + coeff_7 * z^7 - let t108 = circuit_mul(t101, t7); // Eval sparse poly line_2p_1 step coeff_9 * z^9 - let t109 = circuit_add(t107, t108); // Eval sparse poly line_2p_1 step + coeff_9 * z^9 - let t110 = circuit_mul(t45, t109); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_2(z) - let t111 = circuit_mul(in26, in37); // Eval f_i+1 step coeff_1 * z^1 - let t112 = circuit_add(in25, t111); // Eval f_i+1 step + (coeff_1 * z^1) - let t113 = circuit_mul(in27, t0); // Eval f_i+1 step coeff_2 * z^2 - let t114 = circuit_add(t112, t113); // Eval f_i+1 step + (coeff_2 * z^2) - let t115 = circuit_mul(in28, t1); // Eval f_i+1 step coeff_3 * z^3 - let t116 = circuit_add(t114, t115); // Eval f_i+1 step + (coeff_3 * z^3) - let t117 = circuit_mul(in29, t2); // Eval f_i+1 step coeff_4 * z^4 - let t118 = circuit_add(t116, t117); // Eval f_i+1 step + (coeff_4 * z^4) - let t119 = circuit_mul(in30, t3); // Eval f_i+1 step coeff_5 * z^5 - let t120 = circuit_add(t118, t119); // Eval f_i+1 step + (coeff_5 * z^5) - let t121 = circuit_mul(in31, t4); // Eval f_i+1 step coeff_6 * z^6 - let t122 = circuit_add(t120, t121); // Eval f_i+1 step + (coeff_6 * z^6) - let t123 = circuit_mul(in32, t5); // Eval f_i+1 step coeff_7 * z^7 - let t124 = circuit_add(t122, t123); // Eval f_i+1 step + (coeff_7 * z^7) - let t125 = circuit_mul(in33, t6); // Eval f_i+1 step coeff_8 * z^8 - let t126 = circuit_add(t124, t125); // Eval f_i+1 step + (coeff_8 * z^8) - let t127 = circuit_mul(in34, t7); // Eval f_i+1 step coeff_9 * z^9 - let t128 = circuit_add(t126, t127); // Eval f_i+1 step + (coeff_9 * z^9) - let t129 = circuit_mul(in35, t8); // Eval f_i+1 step coeff_10 * z^10 - let t130 = circuit_add(t128, t129); // Eval f_i+1 step + (coeff_10 * z^10) - let t131 = circuit_mul(in36, t9); // Eval f_i+1 step coeff_11 * z^11 - let t132 = circuit_add(t130, t131); // Eval f_i+1 step + (coeff_11 * z^11) - let t133 = circuit_sub(t110, t132); // (螤(i,k) (Pk(z))) - Ri(z) - let t134 = circuit_mul(t10, t133); // ci * ((螤(i,k) (Pk(z)) - Ri(z)) - let t135 = circuit_add(in23, t134); // LHS = LHS + ci * ((螤(i,k) (Pk(z)) - Ri(z)) + let (in26, in27) = (CE::> {}, CE::> {}); + let t0 = circuit_mul(in26, in26); // compute z^2 + let t1 = circuit_mul(t0, in26); // compute z^3 + let t2 = circuit_mul(t1, t1); // compute z^6 + let t3 = circuit_mul(t2, in26); // compute z^7 + let t4 = circuit_mul(t3, t0); // compute z^9 + let t5 = circuit_mul(in27, in27); // Compute c_i = (c_(i-1))^2 + let t6 = circuit_mul(in24, in24); // Square f evaluation in Z, the result of previous bit. + let t7 = circuit_mul(in0, in8); + let t8 = circuit_add(in7, t7); + let t9 = circuit_mul(t8, in6); // eval bn line by xNegOverY + let t10 = circuit_mul(in0, in10); + let t11 = circuit_add(in9, t10); + let t12 = circuit_mul(t11, in5); // eval bn line by yInv + let t13 = circuit_mul(in8, in6); // eval bn line by xNegOverY + let t14 = circuit_mul(in10, in5); // eval bn line by yInv + let t15 = circuit_mul(t9, in26); // Eval sparse poly line_0p_1 step coeff_1 * z^1 + let t16 = circuit_add(in1, t15); // Eval sparse poly line_0p_1 step + coeff_1 * z^1 + let t17 = circuit_mul(t12, t1); // Eval sparse poly line_0p_1 step coeff_3 * z^3 + let t18 = circuit_add(t16, t17); // Eval sparse poly line_0p_1 step + coeff_3 * z^3 + let t19 = circuit_mul(t13, t3); // Eval sparse poly line_0p_1 step coeff_7 * z^7 + let t20 = circuit_add(t18, t19); // Eval sparse poly line_0p_1 step + coeff_7 * z^7 + let t21 = circuit_mul(t14, t4); // Eval sparse poly line_0p_1 step coeff_9 * z^9 + let t22 = circuit_add(t20, t21); // Eval sparse poly line_0p_1 step + coeff_9 * z^9 + let t23 = circuit_mul(t6, t22); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) + let t24 = circuit_mul(in0, in14); + let t25 = circuit_add(in13, t24); + let t26 = circuit_mul(t25, in12); // eval bn line by xNegOverY + let t27 = circuit_mul(in0, in16); + let t28 = circuit_add(in15, t27); + let t29 = circuit_mul(t28, in11); // eval bn line by yInv + let t30 = circuit_mul(in14, in12); // eval bn line by xNegOverY + let t31 = circuit_mul(in16, in11); // eval bn line by yInv + let t32 = circuit_mul(t26, in26); // Eval sparse poly line_1p_1 step coeff_1 * z^1 + let t33 = circuit_add(in1, t32); // Eval sparse poly line_1p_1 step + coeff_1 * z^1 + let t34 = circuit_mul(t29, t1); // Eval sparse poly line_1p_1 step coeff_3 * z^3 + let t35 = circuit_add(t33, t34); // Eval sparse poly line_1p_1 step + coeff_3 * z^3 + let t36 = circuit_mul(t30, t3); // Eval sparse poly line_1p_1 step coeff_7 * z^7 + let t37 = circuit_add(t35, t36); // Eval sparse poly line_1p_1 step + coeff_7 * z^7 + let t38 = circuit_mul(t31, t4); // Eval sparse poly line_1p_1 step coeff_9 * z^9 + let t39 = circuit_add(t37, t38); // Eval sparse poly line_1p_1 step + coeff_9 * z^9 + let t40 = circuit_mul(t23, t39); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) + let t41 = circuit_add(in19, in20); // Doubling slope numerator start + let t42 = circuit_sub(in19, in20); + let t43 = circuit_mul(t41, t42); + let t44 = circuit_mul(in19, in20); + let t45 = circuit_mul(t43, in2); + let t46 = circuit_mul(t44, in3); // Doubling slope numerator end + let t47 = circuit_add(in21, in21); // Fp2 add coeff 0/1 + let t48 = circuit_add(in22, in22); // Fp2 add coeff 1/1 + let t49 = circuit_mul(t47, t47); // Fp2 Div x/y start : Fp2 Inv y start + let t50 = circuit_mul(t48, t48); + let t51 = circuit_add(t49, t50); + let t52 = circuit_inverse(t51); + let t53 = circuit_mul(t47, t52); // Fp2 Inv y real part end + let t54 = circuit_mul(t48, t52); + let t55 = circuit_sub(in4, t54); // Fp2 Inv y imag part end + let t56 = circuit_mul(t45, t53); // Fp2 mul start + let t57 = circuit_mul(t46, t55); + let t58 = circuit_sub(t56, t57); // Fp2 mul real part end + let t59 = circuit_mul(t45, t55); + let t60 = circuit_mul(t46, t53); + let t61 = circuit_add(t59, t60); // Fp2 mul imag part end + let t62 = circuit_add(t58, t61); + let t63 = circuit_sub(t58, t61); + let t64 = circuit_mul(t62, t63); + let t65 = circuit_mul(t58, t61); + let t66 = circuit_add(t65, t65); + let t67 = circuit_add(in19, in19); // Fp2 add coeff 0/1 + let t68 = circuit_add(in20, in20); // Fp2 add coeff 1/1 + let t69 = circuit_sub(t64, t67); // Fp2 sub coeff 0/1 + let t70 = circuit_sub(t66, t68); // Fp2 sub coeff 1/1 + let t71 = circuit_sub(in19, t69); // Fp2 sub coeff 0/1 + let t72 = circuit_sub(in20, t70); // Fp2 sub coeff 1/1 + let t73 = circuit_mul(t58, t71); // Fp2 mul start + let t74 = circuit_mul(t61, t72); + let t75 = circuit_sub(t73, t74); // Fp2 mul real part end + let t76 = circuit_mul(t58, t72); + let t77 = circuit_mul(t61, t71); + let t78 = circuit_add(t76, t77); // Fp2 mul imag part end + let t79 = circuit_sub(t75, in21); // Fp2 sub coeff 0/1 + let t80 = circuit_sub(t78, in22); // Fp2 sub coeff 1/1 + let t81 = circuit_mul(t58, in19); // Fp2 mul start + let t82 = circuit_mul(t61, in20); + let t83 = circuit_sub(t81, t82); // Fp2 mul real part end + let t84 = circuit_mul(t58, in20); + let t85 = circuit_mul(t61, in19); + let t86 = circuit_add(t84, t85); // Fp2 mul imag part end + let t87 = circuit_sub(t83, in21); // Fp2 sub coeff 0/1 + let t88 = circuit_sub(t86, in22); // Fp2 sub coeff 1/1 + let t89 = circuit_mul(in0, t61); + let t90 = circuit_add(t58, t89); + let t91 = circuit_mul(t90, in18); // eval bn line by xNegOverY + let t92 = circuit_mul(in0, t88); + let t93 = circuit_add(t87, t92); + let t94 = circuit_mul(t93, in17); // eval bn line by yInv + let t95 = circuit_mul(t61, in18); // eval bn line by xNegOverY + let t96 = circuit_mul(t88, in17); // eval bn line by yInv + let t97 = circuit_mul(t91, in26); // Eval sparse poly line_2p_1 step coeff_1 * z^1 + let t98 = circuit_add(in1, t97); // Eval sparse poly line_2p_1 step + coeff_1 * z^1 + let t99 = circuit_mul(t94, t1); // Eval sparse poly line_2p_1 step coeff_3 * z^3 + let t100 = circuit_add(t98, t99); // Eval sparse poly line_2p_1 step + coeff_3 * z^3 + let t101 = circuit_mul(t95, t3); // Eval sparse poly line_2p_1 step coeff_7 * z^7 + let t102 = circuit_add(t100, t101); // Eval sparse poly line_2p_1 step + coeff_7 * z^7 + let t103 = circuit_mul(t96, t4); // Eval sparse poly line_2p_1 step coeff_9 * z^9 + let t104 = circuit_add(t102, t103); // Eval sparse poly line_2p_1 step + coeff_9 * z^9 + let t105 = circuit_mul(t40, t104); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_2(z) + let t106 = circuit_sub(t105, in25); // (螤(i,k) (Pk(z))) - Ri(z) + let t107 = circuit_mul(t5, t106); // ci * ((螤(i,k) (Pk(z)) - Ri(z)) + let t108 = circuit_add(in23, t107); // LHS = LHS + ci * ((螤(i,k) (Pk(z)) - Ri(z)) let modulus = TryInto::< _, CircuitModulus >::try_into([0x6871ca8d3c208c16d87cfd47, 0xb85045b68181585d97816a91, 0x30644e72e131a029, 0x0]) .unwrap(); // BN254 prime field modulus - let mut circuit_inputs = (t74, t75, t84, t85, t132, t135, t10,).new_inputs(); + let mut circuit_inputs = (t69, t70, t79, t80, t108, t5,).new_inputs(); // Prefill constants: circuit_inputs = circuit_inputs - .next( + .next_2( [0x6871ca8d3c208c16d87cfd3e, 0xb85045b68181585d97816a91, 0x30644e72e131a029, 0x0] ); // in0 - circuit_inputs = circuit_inputs.next([0x1, 0x0, 0x0, 0x0]); // in1 - circuit_inputs = circuit_inputs.next([0x3, 0x0, 0x0, 0x0]); // in2 - circuit_inputs = circuit_inputs.next([0x6, 0x0, 0x0, 0x0]); // in3 - circuit_inputs = circuit_inputs.next([0x0, 0x0, 0x0, 0x0]); // in4 + circuit_inputs = circuit_inputs.next_2([0x1, 0x0, 0x0, 0x0]); // in1 + circuit_inputs = circuit_inputs.next_2([0x3, 0x0, 0x0, 0x0]); // in2 + circuit_inputs = circuit_inputs.next_2([0x6, 0x0, 0x0, 0x0]); // in3 + circuit_inputs = circuit_inputs.next_2([0x0, 0x0, 0x0, 0x0]); // in4 // Fill inputs: - circuit_inputs = circuit_inputs.next(yInv_0); // in5 - circuit_inputs = circuit_inputs.next(xNegOverY_0); // in6 - circuit_inputs = circuit_inputs.next(G2_line_0.r0a0); // in7 - circuit_inputs = circuit_inputs.next(G2_line_0.r0a1); // in8 - circuit_inputs = circuit_inputs.next(G2_line_0.r1a0); // in9 - circuit_inputs = circuit_inputs.next(G2_line_0.r1a1); // in10 - circuit_inputs = circuit_inputs.next(yInv_1); // in11 - circuit_inputs = circuit_inputs.next(xNegOverY_1); // in12 - circuit_inputs = circuit_inputs.next(G2_line_1.r0a0); // in13 - circuit_inputs = circuit_inputs.next(G2_line_1.r0a1); // in14 - circuit_inputs = circuit_inputs.next(G2_line_1.r1a0); // in15 - circuit_inputs = circuit_inputs.next(G2_line_1.r1a1); // in16 - circuit_inputs = circuit_inputs.next(yInv_2); // in17 - circuit_inputs = circuit_inputs.next(xNegOverY_2); // in18 - circuit_inputs = circuit_inputs.next(Q_2.x0); // in19 - circuit_inputs = circuit_inputs.next(Q_2.x1); // in20 - circuit_inputs = circuit_inputs.next(Q_2.y0); // in21 - circuit_inputs = circuit_inputs.next(Q_2.y1); // in22 - circuit_inputs = circuit_inputs.next(lhs_i); // in23 - circuit_inputs = circuit_inputs.next(f_i_of_z); // in24 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w0); // in25 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w1); // in26 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w2); // in27 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w3); // in28 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w4); // in29 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w5); // in30 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w6); // in31 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w7); // in32 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w8); // in33 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w9); // in34 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w10); // in35 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w11); // in36 - circuit_inputs = circuit_inputs.next(z); // in37 - circuit_inputs = circuit_inputs.next(ci); // in38 + circuit_inputs = circuit_inputs.next_2(yInv_0); // in5 + circuit_inputs = circuit_inputs.next_2(xNegOverY_0); // in6 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r0a0); // in7 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r0a1); // in8 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r1a0); // in9 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r1a1); // in10 + circuit_inputs = circuit_inputs.next_2(yInv_1); // in11 + circuit_inputs = circuit_inputs.next_2(xNegOverY_1); // in12 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r0a0); // in13 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r0a1); // in14 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r1a0); // in15 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r1a1); // in16 + circuit_inputs = circuit_inputs.next_2(yInv_2); // in17 + circuit_inputs = circuit_inputs.next_2(xNegOverY_2); // in18 + circuit_inputs = circuit_inputs.next_2(Q_2.x0); // in19 + circuit_inputs = circuit_inputs.next_2(Q_2.x1); // in20 + circuit_inputs = circuit_inputs.next_2(Q_2.y0); // in21 + circuit_inputs = circuit_inputs.next_2(Q_2.y1); // in22 + circuit_inputs = circuit_inputs.next_2(lhs_i); // in23 + circuit_inputs = circuit_inputs.next_2(f_i_of_z); // in24 + circuit_inputs = circuit_inputs.next_2(f_i_plus_one_of_z); // in25 + circuit_inputs = circuit_inputs.next_2(z); // in26 + circuit_inputs = circuit_inputs.next_2(ci); // in27 - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); let Q0: G2Point = G2Point { - x0: outputs.get_output(t74), - x1: outputs.get_output(t75), - y0: outputs.get_output(t84), - y1: outputs.get_output(t85) + x0: outputs.get_output(t69), + x1: outputs.get_output(t70), + y0: outputs.get_output(t79), + y1: outputs.get_output(t80) }; - let f_i_plus_one_of_z: u384 = outputs.get_output(t132); - let lhs_i_plus_one: u384 = outputs.get_output(t135); - let ci_plus_one: u384 = outputs.get_output(t10); - return (Q0, f_i_plus_one_of_z, lhs_i_plus_one, ci_plus_one); + let lhs_i_plus_one: u384 = outputs.get_output(t108); + let ci_plus_one: u384 = outputs.get_output(t5); + return (Q0, lhs_i_plus_one, ci_plus_one); } fn run_BN254_MP_CHECK_BIT1_2P_2F_circuit( yInv_0: u384, @@ -4134,11 +3565,11 @@ fn run_BN254_MP_CHECK_BIT1_2P_2F_circuit( Q_or_Q_neg_line1: G2Line, lhs_i: u384, f_i_of_z: u384, - f_i_plus_one: E12D, + f_i_plus_one_of_z: u384, c_or_cinv_of_z: u384, z: u384, ci: u384 -) -> (u384, u384, u384) { +) -> (u384, u384) { // CONSTANT stack let in0 = CE::> {}; // -0x9 % p let in1 = CE::> {}; // 0x1 @@ -4152,177 +3583,131 @@ fn run_BN254_MP_CHECK_BIT1_2P_2F_circuit( let (in17, in18, in19) = (CE::> {}, CE::> {}, CE::> {}); let (in20, in21, in22) = (CE::> {}, CE::> {}, CE::> {}); let (in23, in24, in25) = (CE::> {}, CE::> {}, CE::> {}); - let (in26, in27, in28) = (CE::> {}, CE::> {}, CE::> {}); - let (in29, in30, in31) = (CE::> {}, CE::> {}, CE::> {}); - let (in32, in33, in34) = (CE::> {}, CE::> {}, CE::> {}); - let (in35, in36, in37) = (CE::> {}, CE::> {}, CE::> {}); - let in38 = CE::> {}; - let t0 = circuit_mul(in37, in37); // Compute z^2 - let t1 = circuit_mul(t0, in37); // Compute z^3 - let t2 = circuit_mul(t1, in37); // Compute z^4 - let t3 = circuit_mul(t2, in37); // Compute z^5 - let t4 = circuit_mul(t3, in37); // Compute z^6 - let t5 = circuit_mul(t4, in37); // Compute z^7 - let t6 = circuit_mul(t5, in37); // Compute z^8 - let t7 = circuit_mul(t6, in37); // Compute z^9 - let t8 = circuit_mul(t7, in37); // Compute z^10 - let t9 = circuit_mul(t8, in37); // Compute z^11 - let t10 = circuit_mul(in38, in38); // Compute c_i = (c_(i-1))^2 - let t11 = circuit_mul(in23, in23); // Square f evaluation in Z, the result of previous bit. - let t12 = circuit_mul(in0, in5); - let t13 = circuit_add(in4, t12); - let t14 = circuit_mul(t13, in3); // eval bn line by xNegOverY - let t15 = circuit_mul(in0, in7); - let t16 = circuit_add(in6, t15); - let t17 = circuit_mul(t16, in2); // eval bn line by yInv - let t18 = circuit_mul(in5, in3); // eval bn line by xNegOverY - let t19 = circuit_mul(in7, in2); // eval bn line by yInv - let t20 = circuit_mul(in0, in9); - let t21 = circuit_add(in8, t20); - let t22 = circuit_mul(t21, in3); // eval bn line by xNegOverY - let t23 = circuit_mul(in0, in11); - let t24 = circuit_add(in10, t23); - let t25 = circuit_mul(t24, in2); // eval bn line by yInv - let t26 = circuit_mul(in9, in3); // eval bn line by xNegOverY - let t27 = circuit_mul(in11, in2); // eval bn line by yInv - let t28 = circuit_mul(t14, in37); // Eval sparse poly line_0p_1 step coeff_1 * z^1 - let t29 = circuit_add(in1, t28); // Eval sparse poly line_0p_1 step + coeff_1 * z^1 - let t30 = circuit_mul(t17, t1); // Eval sparse poly line_0p_1 step coeff_3 * z^3 - let t31 = circuit_add(t29, t30); // Eval sparse poly line_0p_1 step + coeff_3 * z^3 - let t32 = circuit_mul(t18, t5); // Eval sparse poly line_0p_1 step coeff_7 * z^7 - let t33 = circuit_add(t31, t32); // Eval sparse poly line_0p_1 step + coeff_7 * z^7 - let t34 = circuit_mul(t19, t7); // Eval sparse poly line_0p_1 step coeff_9 * z^9 - let t35 = circuit_add(t33, t34); // Eval sparse poly line_0p_1 step + coeff_9 * z^9 - let t36 = circuit_mul(t11, t35); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) - let t37 = circuit_mul(t22, in37); // Eval sparse poly line_0p_2 step coeff_1 * z^1 - let t38 = circuit_add(in1, t37); // Eval sparse poly line_0p_2 step + coeff_1 * z^1 - let t39 = circuit_mul(t25, t1); // Eval sparse poly line_0p_2 step coeff_3 * z^3 - let t40 = circuit_add(t38, t39); // Eval sparse poly line_0p_2 step + coeff_3 * z^3 - let t41 = circuit_mul(t26, t5); // Eval sparse poly line_0p_2 step coeff_7 * z^7 - let t42 = circuit_add(t40, t41); // Eval sparse poly line_0p_2 step + coeff_7 * z^7 - let t43 = circuit_mul(t27, t7); // Eval sparse poly line_0p_2 step coeff_9 * z^9 - let t44 = circuit_add(t42, t43); // Eval sparse poly line_0p_2 step + coeff_9 * z^9 - let t45 = circuit_mul(t36, t44); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) - let t46 = circuit_mul(in0, in15); - let t47 = circuit_add(in14, t46); - let t48 = circuit_mul(t47, in13); // eval bn line by xNegOverY - let t49 = circuit_mul(in0, in17); - let t50 = circuit_add(in16, t49); - let t51 = circuit_mul(t50, in12); // eval bn line by yInv - let t52 = circuit_mul(in15, in13); // eval bn line by xNegOverY - let t53 = circuit_mul(in17, in12); // eval bn line by yInv - let t54 = circuit_mul(in0, in19); - let t55 = circuit_add(in18, t54); - let t56 = circuit_mul(t55, in13); // eval bn line by xNegOverY - let t57 = circuit_mul(in0, in21); - let t58 = circuit_add(in20, t57); - let t59 = circuit_mul(t58, in12); // eval bn line by yInv - let t60 = circuit_mul(in19, in13); // eval bn line by xNegOverY - let t61 = circuit_mul(in21, in12); // eval bn line by yInv - let t62 = circuit_mul(t48, in37); // Eval sparse poly line_1p_1 step coeff_1 * z^1 - let t63 = circuit_add(in1, t62); // Eval sparse poly line_1p_1 step + coeff_1 * z^1 - let t64 = circuit_mul(t51, t1); // Eval sparse poly line_1p_1 step coeff_3 * z^3 - let t65 = circuit_add(t63, t64); // Eval sparse poly line_1p_1 step + coeff_3 * z^3 - let t66 = circuit_mul(t52, t5); // Eval sparse poly line_1p_1 step coeff_7 * z^7 - let t67 = circuit_add(t65, t66); // Eval sparse poly line_1p_1 step + coeff_7 * z^7 - let t68 = circuit_mul(t53, t7); // Eval sparse poly line_1p_1 step coeff_9 * z^9 - let t69 = circuit_add(t67, t68); // Eval sparse poly line_1p_1 step + coeff_9 * z^9 - let t70 = circuit_mul(t45, t69); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) - let t71 = circuit_mul(t56, in37); // Eval sparse poly line_1p_2 step coeff_1 * z^1 - let t72 = circuit_add(in1, t71); // Eval sparse poly line_1p_2 step + coeff_1 * z^1 - let t73 = circuit_mul(t59, t1); // Eval sparse poly line_1p_2 step coeff_3 * z^3 - let t74 = circuit_add(t72, t73); // Eval sparse poly line_1p_2 step + coeff_3 * z^3 - let t75 = circuit_mul(t60, t5); // Eval sparse poly line_1p_2 step coeff_7 * z^7 - let t76 = circuit_add(t74, t75); // Eval sparse poly line_1p_2 step + coeff_7 * z^7 - let t77 = circuit_mul(t61, t7); // Eval sparse poly line_1p_2 step coeff_9 * z^9 - let t78 = circuit_add(t76, t77); // Eval sparse poly line_1p_2 step + coeff_9 * z^9 - let t79 = circuit_mul(t70, t78); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) - let t80 = circuit_mul(t79, in36); - let t81 = circuit_mul(in25, in37); // Eval f_i+1 step coeff_1 * z^1 - let t82 = circuit_add(in24, t81); // Eval f_i+1 step + (coeff_1 * z^1) - let t83 = circuit_mul(in26, t0); // Eval f_i+1 step coeff_2 * z^2 - let t84 = circuit_add(t82, t83); // Eval f_i+1 step + (coeff_2 * z^2) - let t85 = circuit_mul(in27, t1); // Eval f_i+1 step coeff_3 * z^3 - let t86 = circuit_add(t84, t85); // Eval f_i+1 step + (coeff_3 * z^3) - let t87 = circuit_mul(in28, t2); // Eval f_i+1 step coeff_4 * z^4 - let t88 = circuit_add(t86, t87); // Eval f_i+1 step + (coeff_4 * z^4) - let t89 = circuit_mul(in29, t3); // Eval f_i+1 step coeff_5 * z^5 - let t90 = circuit_add(t88, t89); // Eval f_i+1 step + (coeff_5 * z^5) - let t91 = circuit_mul(in30, t4); // Eval f_i+1 step coeff_6 * z^6 - let t92 = circuit_add(t90, t91); // Eval f_i+1 step + (coeff_6 * z^6) - let t93 = circuit_mul(in31, t5); // Eval f_i+1 step coeff_7 * z^7 - let t94 = circuit_add(t92, t93); // Eval f_i+1 step + (coeff_7 * z^7) - let t95 = circuit_mul(in32, t6); // Eval f_i+1 step coeff_8 * z^8 - let t96 = circuit_add(t94, t95); // Eval f_i+1 step + (coeff_8 * z^8) - let t97 = circuit_mul(in33, t7); // Eval f_i+1 step coeff_9 * z^9 - let t98 = circuit_add(t96, t97); // Eval f_i+1 step + (coeff_9 * z^9) - let t99 = circuit_mul(in34, t8); // Eval f_i+1 step coeff_10 * z^10 - let t100 = circuit_add(t98, t99); // Eval f_i+1 step + (coeff_10 * z^10) - let t101 = circuit_mul(in35, t9); // Eval f_i+1 step coeff_11 * z^11 - let t102 = circuit_add(t100, t101); // Eval f_i+1 step + (coeff_11 * z^11) - let t103 = circuit_sub(t80, t102); // (螤(i,k) (Pk(z))) - Ri(z) - let t104 = circuit_mul(t10, t103); // ci * ((螤(i,k) (Pk(z)) - Ri(z)) - let t105 = circuit_add(in22, t104); // LHS = LHS + ci * ((螤(i,k) (Pk(z)) - Ri(z)) + let (in26, in27) = (CE::> {}, CE::> {}); + let t0 = circuit_mul(in26, in26); // compute z^2 + let t1 = circuit_mul(t0, in26); // compute z^3 + let t2 = circuit_mul(t1, t1); // compute z^6 + let t3 = circuit_mul(t2, in26); // compute z^7 + let t4 = circuit_mul(t3, t0); // compute z^9 + let t5 = circuit_mul(in27, in27); // Compute c_i = (c_(i-1))^2 + let t6 = circuit_mul(in23, in23); // Square f evaluation in Z, the result of previous bit. + let t7 = circuit_mul(in0, in5); + let t8 = circuit_add(in4, t7); + let t9 = circuit_mul(t8, in3); // eval bn line by xNegOverY + let t10 = circuit_mul(in0, in7); + let t11 = circuit_add(in6, t10); + let t12 = circuit_mul(t11, in2); // eval bn line by yInv + let t13 = circuit_mul(in5, in3); // eval bn line by xNegOverY + let t14 = circuit_mul(in7, in2); // eval bn line by yInv + let t15 = circuit_mul(in0, in9); + let t16 = circuit_add(in8, t15); + let t17 = circuit_mul(t16, in3); // eval bn line by xNegOverY + let t18 = circuit_mul(in0, in11); + let t19 = circuit_add(in10, t18); + let t20 = circuit_mul(t19, in2); // eval bn line by yInv + let t21 = circuit_mul(in9, in3); // eval bn line by xNegOverY + let t22 = circuit_mul(in11, in2); // eval bn line by yInv + let t23 = circuit_mul(t9, in26); // Eval sparse poly line_0p_1 step coeff_1 * z^1 + let t24 = circuit_add(in1, t23); // Eval sparse poly line_0p_1 step + coeff_1 * z^1 + let t25 = circuit_mul(t12, t1); // Eval sparse poly line_0p_1 step coeff_3 * z^3 + let t26 = circuit_add(t24, t25); // Eval sparse poly line_0p_1 step + coeff_3 * z^3 + let t27 = circuit_mul(t13, t3); // Eval sparse poly line_0p_1 step coeff_7 * z^7 + let t28 = circuit_add(t26, t27); // Eval sparse poly line_0p_1 step + coeff_7 * z^7 + let t29 = circuit_mul(t14, t4); // Eval sparse poly line_0p_1 step coeff_9 * z^9 + let t30 = circuit_add(t28, t29); // Eval sparse poly line_0p_1 step + coeff_9 * z^9 + let t31 = circuit_mul(t6, t30); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) + let t32 = circuit_mul(t17, in26); // Eval sparse poly line_0p_2 step coeff_1 * z^1 + let t33 = circuit_add(in1, t32); // Eval sparse poly line_0p_2 step + coeff_1 * z^1 + let t34 = circuit_mul(t20, t1); // Eval sparse poly line_0p_2 step coeff_3 * z^3 + let t35 = circuit_add(t33, t34); // Eval sparse poly line_0p_2 step + coeff_3 * z^3 + let t36 = circuit_mul(t21, t3); // Eval sparse poly line_0p_2 step coeff_7 * z^7 + let t37 = circuit_add(t35, t36); // Eval sparse poly line_0p_2 step + coeff_7 * z^7 + let t38 = circuit_mul(t22, t4); // Eval sparse poly line_0p_2 step coeff_9 * z^9 + let t39 = circuit_add(t37, t38); // Eval sparse poly line_0p_2 step + coeff_9 * z^9 + let t40 = circuit_mul(t31, t39); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) + let t41 = circuit_mul(in0, in15); + let t42 = circuit_add(in14, t41); + let t43 = circuit_mul(t42, in13); // eval bn line by xNegOverY + let t44 = circuit_mul(in0, in17); + let t45 = circuit_add(in16, t44); + let t46 = circuit_mul(t45, in12); // eval bn line by yInv + let t47 = circuit_mul(in15, in13); // eval bn line by xNegOverY + let t48 = circuit_mul(in17, in12); // eval bn line by yInv + let t49 = circuit_mul(in0, in19); + let t50 = circuit_add(in18, t49); + let t51 = circuit_mul(t50, in13); // eval bn line by xNegOverY + let t52 = circuit_mul(in0, in21); + let t53 = circuit_add(in20, t52); + let t54 = circuit_mul(t53, in12); // eval bn line by yInv + let t55 = circuit_mul(in19, in13); // eval bn line by xNegOverY + let t56 = circuit_mul(in21, in12); // eval bn line by yInv + let t57 = circuit_mul(t43, in26); // Eval sparse poly line_1p_1 step coeff_1 * z^1 + let t58 = circuit_add(in1, t57); // Eval sparse poly line_1p_1 step + coeff_1 * z^1 + let t59 = circuit_mul(t46, t1); // Eval sparse poly line_1p_1 step coeff_3 * z^3 + let t60 = circuit_add(t58, t59); // Eval sparse poly line_1p_1 step + coeff_3 * z^3 + let t61 = circuit_mul(t47, t3); // Eval sparse poly line_1p_1 step coeff_7 * z^7 + let t62 = circuit_add(t60, t61); // Eval sparse poly line_1p_1 step + coeff_7 * z^7 + let t63 = circuit_mul(t48, t4); // Eval sparse poly line_1p_1 step coeff_9 * z^9 + let t64 = circuit_add(t62, t63); // Eval sparse poly line_1p_1 step + coeff_9 * z^9 + let t65 = circuit_mul(t40, t64); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) + let t66 = circuit_mul(t51, in26); // Eval sparse poly line_1p_2 step coeff_1 * z^1 + let t67 = circuit_add(in1, t66); // Eval sparse poly line_1p_2 step + coeff_1 * z^1 + let t68 = circuit_mul(t54, t1); // Eval sparse poly line_1p_2 step coeff_3 * z^3 + let t69 = circuit_add(t67, t68); // Eval sparse poly line_1p_2 step + coeff_3 * z^3 + let t70 = circuit_mul(t55, t3); // Eval sparse poly line_1p_2 step coeff_7 * z^7 + let t71 = circuit_add(t69, t70); // Eval sparse poly line_1p_2 step + coeff_7 * z^7 + let t72 = circuit_mul(t56, t4); // Eval sparse poly line_1p_2 step coeff_9 * z^9 + let t73 = circuit_add(t71, t72); // Eval sparse poly line_1p_2 step + coeff_9 * z^9 + let t74 = circuit_mul(t65, t73); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) + let t75 = circuit_mul(t74, in25); + let t76 = circuit_sub(t75, in24); // (螤(i,k) (Pk(z))) - Ri(z) + let t77 = circuit_mul(t5, t76); // ci * ((螤(i,k) (Pk(z)) - Ri(z)) + let t78 = circuit_add(in22, t77); // LHS = LHS + ci * ((螤(i,k) (Pk(z)) - Ri(z)) let modulus = TryInto::< _, CircuitModulus >::try_into([0x6871ca8d3c208c16d87cfd47, 0xb85045b68181585d97816a91, 0x30644e72e131a029, 0x0]) .unwrap(); // BN254 prime field modulus - let mut circuit_inputs = (t102, t105, t10,).new_inputs(); + let mut circuit_inputs = (t78, t5,).new_inputs(); // Prefill constants: circuit_inputs = circuit_inputs - .next( + .next_2( [0x6871ca8d3c208c16d87cfd3e, 0xb85045b68181585d97816a91, 0x30644e72e131a029, 0x0] ); // in0 - circuit_inputs = circuit_inputs.next([0x1, 0x0, 0x0, 0x0]); // in1 + circuit_inputs = circuit_inputs.next_2([0x1, 0x0, 0x0, 0x0]); // in1 // Fill inputs: - circuit_inputs = circuit_inputs.next(yInv_0); // in2 - circuit_inputs = circuit_inputs.next(xNegOverY_0); // in3 - circuit_inputs = circuit_inputs.next(G2_line_0.r0a0); // in4 - circuit_inputs = circuit_inputs.next(G2_line_0.r0a1); // in5 - circuit_inputs = circuit_inputs.next(G2_line_0.r1a0); // in6 - circuit_inputs = circuit_inputs.next(G2_line_0.r1a1); // in7 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_line0.r0a0); // in8 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_line0.r0a1); // in9 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_line0.r1a0); // in10 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_line0.r1a1); // in11 - circuit_inputs = circuit_inputs.next(yInv_1); // in12 - circuit_inputs = circuit_inputs.next(xNegOverY_1); // in13 - circuit_inputs = circuit_inputs.next(G2_line_1.r0a0); // in14 - circuit_inputs = circuit_inputs.next(G2_line_1.r0a1); // in15 - circuit_inputs = circuit_inputs.next(G2_line_1.r1a0); // in16 - circuit_inputs = circuit_inputs.next(G2_line_1.r1a1); // in17 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_line1.r0a0); // in18 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_line1.r0a1); // in19 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_line1.r1a0); // in20 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_line1.r1a1); // in21 - circuit_inputs = circuit_inputs.next(lhs_i); // in22 - circuit_inputs = circuit_inputs.next(f_i_of_z); // in23 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w0); // in24 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w1); // in25 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w2); // in26 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w3); // in27 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w4); // in28 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w5); // in29 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w6); // in30 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w7); // in31 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w8); // in32 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w9); // in33 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w10); // in34 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w11); // in35 - circuit_inputs = circuit_inputs.next(c_or_cinv_of_z); // in36 - circuit_inputs = circuit_inputs.next(z); // in37 - circuit_inputs = circuit_inputs.next(ci); // in38 + circuit_inputs = circuit_inputs.next_2(yInv_0); // in2 + circuit_inputs = circuit_inputs.next_2(xNegOverY_0); // in3 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r0a0); // in4 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r0a1); // in5 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r1a0); // in6 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r1a1); // in7 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_line0.r0a0); // in8 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_line0.r0a1); // in9 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_line0.r1a0); // in10 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_line0.r1a1); // in11 + circuit_inputs = circuit_inputs.next_2(yInv_1); // in12 + circuit_inputs = circuit_inputs.next_2(xNegOverY_1); // in13 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r0a0); // in14 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r0a1); // in15 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r1a0); // in16 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r1a1); // in17 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_line1.r0a0); // in18 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_line1.r0a1); // in19 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_line1.r1a0); // in20 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_line1.r1a1); // in21 + circuit_inputs = circuit_inputs.next_2(lhs_i); // in22 + circuit_inputs = circuit_inputs.next_2(f_i_of_z); // in23 + circuit_inputs = circuit_inputs.next_2(f_i_plus_one_of_z); // in24 + circuit_inputs = circuit_inputs.next_2(c_or_cinv_of_z); // in25 + circuit_inputs = circuit_inputs.next_2(z); // in26 + circuit_inputs = circuit_inputs.next_2(ci); // in27 - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; - let f_i_plus_one_of_z: u384 = outputs.get_output(t102); - let lhs_i_plus_one: u384 = outputs.get_output(t105); - let ci_plus_one: u384 = outputs.get_output(t10); - return (f_i_plus_one_of_z, lhs_i_plus_one, ci_plus_one); + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); + let lhs_i_plus_one: u384 = outputs.get_output(t78); + let ci_plus_one: u384 = outputs.get_output(t5); + return (lhs_i_plus_one, ci_plus_one); } fn run_BN254_MP_CHECK_BIT1_3P_2F_circuit( yInv_0: u384, @@ -4339,11 +3724,11 @@ fn run_BN254_MP_CHECK_BIT1_3P_2F_circuit( Q_or_Q_neg_2: G2Point, lhs_i: u384, f_i_of_z: u384, - f_i_plus_one: E12D, + f_i_plus_one_of_z: u384, c_or_cinv_of_z: u384, z: u384, ci: u384 -) -> (G2Point, u384, u384, u384) { +) -> (G2Point, u384, u384) { // CONSTANT stack let in0 = CE::> {}; // -0x9 % p let in1 = CE::> {}; // 0x1 @@ -4362,309 +3747,263 @@ fn run_BN254_MP_CHECK_BIT1_3P_2F_circuit( let (in30, in31, in32) = (CE::> {}, CE::> {}, CE::> {}); let (in33, in34, in35) = (CE::> {}, CE::> {}, CE::> {}); let (in36, in37, in38) = (CE::> {}, CE::> {}, CE::> {}); - let (in39, in40, in41) = (CE::> {}, CE::> {}, CE::> {}); - let (in42, in43, in44) = (CE::> {}, CE::> {}, CE::> {}); - let (in45, in46, in47) = (CE::> {}, CE::> {}, CE::> {}); - let (in48, in49) = (CE::> {}, CE::> {}); - let t0 = circuit_mul(in48, in48); // Compute z^2 - let t1 = circuit_mul(t0, in48); // Compute z^3 - let t2 = circuit_mul(t1, in48); // Compute z^4 - let t3 = circuit_mul(t2, in48); // Compute z^5 - let t4 = circuit_mul(t3, in48); // Compute z^6 - let t5 = circuit_mul(t4, in48); // Compute z^7 - let t6 = circuit_mul(t5, in48); // Compute z^8 - let t7 = circuit_mul(t6, in48); // Compute z^9 - let t8 = circuit_mul(t7, in48); // Compute z^10 - let t9 = circuit_mul(t8, in48); // Compute z^11 - let t10 = circuit_mul(in49, in49); // Compute c_i = (c_(i-1))^2 - let t11 = circuit_mul(in34, in34); // Square f evaluation in Z, the result of previous bit. - let t12 = circuit_mul(in0, in6); - let t13 = circuit_add(in5, t12); - let t14 = circuit_mul(t13, in4); // eval bn line by xNegOverY - let t15 = circuit_mul(in0, in8); - let t16 = circuit_add(in7, t15); - let t17 = circuit_mul(t16, in3); // eval bn line by yInv - let t18 = circuit_mul(in6, in4); // eval bn line by xNegOverY - let t19 = circuit_mul(in8, in3); // eval bn line by yInv - let t20 = circuit_mul(in0, in10); - let t21 = circuit_add(in9, t20); - let t22 = circuit_mul(t21, in4); // eval bn line by xNegOverY - let t23 = circuit_mul(in0, in12); - let t24 = circuit_add(in11, t23); - let t25 = circuit_mul(t24, in3); // eval bn line by yInv - let t26 = circuit_mul(in10, in4); // eval bn line by xNegOverY - let t27 = circuit_mul(in12, in3); // eval bn line by yInv - let t28 = circuit_mul(t14, in48); // Eval sparse poly line_0p_1 step coeff_1 * z^1 - let t29 = circuit_add(in1, t28); // Eval sparse poly line_0p_1 step + coeff_1 * z^1 - let t30 = circuit_mul(t17, t1); // Eval sparse poly line_0p_1 step coeff_3 * z^3 - let t31 = circuit_add(t29, t30); // Eval sparse poly line_0p_1 step + coeff_3 * z^3 - let t32 = circuit_mul(t18, t5); // Eval sparse poly line_0p_1 step coeff_7 * z^7 - let t33 = circuit_add(t31, t32); // Eval sparse poly line_0p_1 step + coeff_7 * z^7 - let t34 = circuit_mul(t19, t7); // Eval sparse poly line_0p_1 step coeff_9 * z^9 - let t35 = circuit_add(t33, t34); // Eval sparse poly line_0p_1 step + coeff_9 * z^9 - let t36 = circuit_mul(t11, t35); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) - let t37 = circuit_mul(t22, in48); // Eval sparse poly line_0p_2 step coeff_1 * z^1 - let t38 = circuit_add(in1, t37); // Eval sparse poly line_0p_2 step + coeff_1 * z^1 - let t39 = circuit_mul(t25, t1); // Eval sparse poly line_0p_2 step coeff_3 * z^3 - let t40 = circuit_add(t38, t39); // Eval sparse poly line_0p_2 step + coeff_3 * z^3 - let t41 = circuit_mul(t26, t5); // Eval sparse poly line_0p_2 step coeff_7 * z^7 - let t42 = circuit_add(t40, t41); // Eval sparse poly line_0p_2 step + coeff_7 * z^7 - let t43 = circuit_mul(t27, t7); // Eval sparse poly line_0p_2 step coeff_9 * z^9 - let t44 = circuit_add(t42, t43); // Eval sparse poly line_0p_2 step + coeff_9 * z^9 - let t45 = circuit_mul(t36, t44); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) - let t46 = circuit_mul(in0, in16); - let t47 = circuit_add(in15, t46); - let t48 = circuit_mul(t47, in14); // eval bn line by xNegOverY - let t49 = circuit_mul(in0, in18); - let t50 = circuit_add(in17, t49); - let t51 = circuit_mul(t50, in13); // eval bn line by yInv - let t52 = circuit_mul(in16, in14); // eval bn line by xNegOverY - let t53 = circuit_mul(in18, in13); // eval bn line by yInv - let t54 = circuit_mul(in0, in20); - let t55 = circuit_add(in19, t54); - let t56 = circuit_mul(t55, in14); // eval bn line by xNegOverY - let t57 = circuit_mul(in0, in22); - let t58 = circuit_add(in21, t57); - let t59 = circuit_mul(t58, in13); // eval bn line by yInv - let t60 = circuit_mul(in20, in14); // eval bn line by xNegOverY - let t61 = circuit_mul(in22, in13); // eval bn line by yInv - let t62 = circuit_mul(t48, in48); // Eval sparse poly line_1p_1 step coeff_1 * z^1 - let t63 = circuit_add(in1, t62); // Eval sparse poly line_1p_1 step + coeff_1 * z^1 - let t64 = circuit_mul(t51, t1); // Eval sparse poly line_1p_1 step coeff_3 * z^3 - let t65 = circuit_add(t63, t64); // Eval sparse poly line_1p_1 step + coeff_3 * z^3 - let t66 = circuit_mul(t52, t5); // Eval sparse poly line_1p_1 step coeff_7 * z^7 - let t67 = circuit_add(t65, t66); // Eval sparse poly line_1p_1 step + coeff_7 * z^7 - let t68 = circuit_mul(t53, t7); // Eval sparse poly line_1p_1 step coeff_9 * z^9 - let t69 = circuit_add(t67, t68); // Eval sparse poly line_1p_1 step + coeff_9 * z^9 - let t70 = circuit_mul(t45, t69); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) - let t71 = circuit_mul(t56, in48); // Eval sparse poly line_1p_2 step coeff_1 * z^1 - let t72 = circuit_add(in1, t71); // Eval sparse poly line_1p_2 step + coeff_1 * z^1 - let t73 = circuit_mul(t59, t1); // Eval sparse poly line_1p_2 step coeff_3 * z^3 - let t74 = circuit_add(t72, t73); // Eval sparse poly line_1p_2 step + coeff_3 * z^3 - let t75 = circuit_mul(t60, t5); // Eval sparse poly line_1p_2 step coeff_7 * z^7 - let t76 = circuit_add(t74, t75); // Eval sparse poly line_1p_2 step + coeff_7 * z^7 - let t77 = circuit_mul(t61, t7); // Eval sparse poly line_1p_2 step coeff_9 * z^9 - let t78 = circuit_add(t76, t77); // Eval sparse poly line_1p_2 step + coeff_9 * z^9 - let t79 = circuit_mul(t70, t78); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) - let t80 = circuit_sub(in27, in31); // Fp2 sub coeff 0/1 - let t81 = circuit_sub(in28, in32); // Fp2 sub coeff 1/1 - let t82 = circuit_sub(in25, in29); // Fp2 sub coeff 0/1 - let t83 = circuit_sub(in26, in30); // Fp2 sub coeff 1/1 - let t84 = circuit_mul(t82, t82); // Fp2 Div x/y start : Fp2 Inv y start - let t85 = circuit_mul(t83, t83); - let t86 = circuit_add(t84, t85); - let t87 = circuit_inverse(t86); - let t88 = circuit_mul(t82, t87); // Fp2 Inv y real part end - let t89 = circuit_mul(t83, t87); - let t90 = circuit_sub(in2, t89); // Fp2 Inv y imag part end - let t91 = circuit_mul(t80, t88); // Fp2 mul start - let t92 = circuit_mul(t81, t90); - let t93 = circuit_sub(t91, t92); // Fp2 mul real part end - let t94 = circuit_mul(t80, t90); - let t95 = circuit_mul(t81, t88); - let t96 = circuit_add(t94, t95); // Fp2 mul imag part end - let t97 = circuit_add(t93, t96); - let t98 = circuit_sub(t93, t96); - let t99 = circuit_mul(t97, t98); - let t100 = circuit_mul(t93, t96); - let t101 = circuit_add(t100, t100); - let t102 = circuit_add(in25, in29); // Fp2 add coeff 0/1 - let t103 = circuit_add(in26, in30); // Fp2 add coeff 1/1 - let t104 = circuit_sub(t99, t102); // Fp2 sub coeff 0/1 - let t105 = circuit_sub(t101, t103); // Fp2 sub coeff 1/1 - let t106 = circuit_mul(t93, in25); // Fp2 mul start - let t107 = circuit_mul(t96, in26); - let t108 = circuit_sub(t106, t107); // Fp2 mul real part end - let t109 = circuit_mul(t93, in26); - let t110 = circuit_mul(t96, in25); - let t111 = circuit_add(t109, t110); // Fp2 mul imag part end - let t112 = circuit_sub(t108, in27); // Fp2 sub coeff 0/1 - let t113 = circuit_sub(t111, in28); // Fp2 sub coeff 1/1 - let t114 = circuit_add(in27, in27); // Fp2 add coeff 0/1 - let t115 = circuit_add(in28, in28); // Fp2 add coeff 1/1 - let t116 = circuit_sub(t104, in25); // Fp2 sub coeff 0/1 - let t117 = circuit_sub(t105, in26); // Fp2 sub coeff 1/1 - let t118 = circuit_mul(t116, t116); // Fp2 Div x/y start : Fp2 Inv y start - let t119 = circuit_mul(t117, t117); - let t120 = circuit_add(t118, t119); - let t121 = circuit_inverse(t120); - let t122 = circuit_mul(t116, t121); // Fp2 Inv y real part end - let t123 = circuit_mul(t117, t121); - let t124 = circuit_sub(in2, t123); // Fp2 Inv y imag part end - let t125 = circuit_mul(t114, t122); // Fp2 mul start - let t126 = circuit_mul(t115, t124); - let t127 = circuit_sub(t125, t126); // Fp2 mul real part end - let t128 = circuit_mul(t114, t124); - let t129 = circuit_mul(t115, t122); - let t130 = circuit_add(t128, t129); // Fp2 mul imag part end - let t131 = circuit_add(t93, t127); // Fp2 add coeff 0/1 - let t132 = circuit_add(t96, t130); // Fp2 add coeff 1/1 - let t133 = circuit_sub(in2, t131); // Fp2 neg coeff 0/1 - let t134 = circuit_sub(in2, t132); // Fp2 neg coeff 1/1 - let t135 = circuit_add(t133, t134); - let t136 = circuit_sub(t133, t134); - let t137 = circuit_mul(t135, t136); - let t138 = circuit_mul(t133, t134); - let t139 = circuit_add(t138, t138); - let t140 = circuit_sub(t137, in25); // Fp2 sub coeff 0/1 - let t141 = circuit_sub(t139, in26); // Fp2 sub coeff 1/1 - let t142 = circuit_sub(t140, t104); // Fp2 sub coeff 0/1 - let t143 = circuit_sub(t141, t105); // Fp2 sub coeff 1/1 - let t144 = circuit_sub(in25, t142); // Fp2 sub coeff 0/1 - let t145 = circuit_sub(in26, t143); // Fp2 sub coeff 1/1 - let t146 = circuit_mul(t133, t144); // Fp2 mul start - let t147 = circuit_mul(t134, t145); - let t148 = circuit_sub(t146, t147); // Fp2 mul real part end - let t149 = circuit_mul(t133, t145); - let t150 = circuit_mul(t134, t144); - let t151 = circuit_add(t149, t150); // Fp2 mul imag part end - let t152 = circuit_sub(t148, in27); // Fp2 sub coeff 0/1 - let t153 = circuit_sub(t151, in28); // Fp2 sub coeff 1/1 - let t154 = circuit_mul(t133, in25); // Fp2 mul start - let t155 = circuit_mul(t134, in26); - let t156 = circuit_sub(t154, t155); // Fp2 mul real part end - let t157 = circuit_mul(t133, in26); - let t158 = circuit_mul(t134, in25); - let t159 = circuit_add(t157, t158); // Fp2 mul imag part end - let t160 = circuit_sub(t156, in27); // Fp2 sub coeff 0/1 - let t161 = circuit_sub(t159, in28); // Fp2 sub coeff 1/1 - let t162 = circuit_mul(in0, t96); - let t163 = circuit_add(t93, t162); - let t164 = circuit_mul(t163, in24); // eval bn line by xNegOverY - let t165 = circuit_mul(in0, t113); - let t166 = circuit_add(t112, t165); - let t167 = circuit_mul(t166, in23); // eval bn line by yInv - let t168 = circuit_mul(t96, in24); // eval bn line by xNegOverY - let t169 = circuit_mul(t113, in23); // eval bn line by yInv - let t170 = circuit_mul(in0, t134); - let t171 = circuit_add(t133, t170); - let t172 = circuit_mul(t171, in24); // eval bn line by xNegOverY - let t173 = circuit_mul(in0, t161); - let t174 = circuit_add(t160, t173); - let t175 = circuit_mul(t174, in23); // eval bn line by yInv - let t176 = circuit_mul(t134, in24); // eval bn line by xNegOverY - let t177 = circuit_mul(t161, in23); // eval bn line by yInv - let t178 = circuit_mul(t164, in48); // Eval sparse poly line_2p_1 step coeff_1 * z^1 - let t179 = circuit_add(in1, t178); // Eval sparse poly line_2p_1 step + coeff_1 * z^1 - let t180 = circuit_mul(t167, t1); // Eval sparse poly line_2p_1 step coeff_3 * z^3 - let t181 = circuit_add(t179, t180); // Eval sparse poly line_2p_1 step + coeff_3 * z^3 - let t182 = circuit_mul(t168, t5); // Eval sparse poly line_2p_1 step coeff_7 * z^7 - let t183 = circuit_add(t181, t182); // Eval sparse poly line_2p_1 step + coeff_7 * z^7 - let t184 = circuit_mul(t169, t7); // Eval sparse poly line_2p_1 step coeff_9 * z^9 - let t185 = circuit_add(t183, t184); // Eval sparse poly line_2p_1 step + coeff_9 * z^9 - let t186 = circuit_mul(t79, t185); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_2(z) - let t187 = circuit_mul(t172, in48); // Eval sparse poly line_2p_2 step coeff_1 * z^1 - let t188 = circuit_add(in1, t187); // Eval sparse poly line_2p_2 step + coeff_1 * z^1 - let t189 = circuit_mul(t175, t1); // Eval sparse poly line_2p_2 step coeff_3 * z^3 - let t190 = circuit_add(t188, t189); // Eval sparse poly line_2p_2 step + coeff_3 * z^3 - let t191 = circuit_mul(t176, t5); // Eval sparse poly line_2p_2 step coeff_7 * z^7 - let t192 = circuit_add(t190, t191); // Eval sparse poly line_2p_2 step + coeff_7 * z^7 - let t193 = circuit_mul(t177, t7); // Eval sparse poly line_2p_2 step coeff_9 * z^9 - let t194 = circuit_add(t192, t193); // Eval sparse poly line_2p_2 step + coeff_9 * z^9 - let t195 = circuit_mul(t186, t194); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_2(z) - let t196 = circuit_mul(t195, in47); - let t197 = circuit_mul(in36, in48); // Eval f_i+1 step coeff_1 * z^1 - let t198 = circuit_add(in35, t197); // Eval f_i+1 step + (coeff_1 * z^1) - let t199 = circuit_mul(in37, t0); // Eval f_i+1 step coeff_2 * z^2 - let t200 = circuit_add(t198, t199); // Eval f_i+1 step + (coeff_2 * z^2) - let t201 = circuit_mul(in38, t1); // Eval f_i+1 step coeff_3 * z^3 - let t202 = circuit_add(t200, t201); // Eval f_i+1 step + (coeff_3 * z^3) - let t203 = circuit_mul(in39, t2); // Eval f_i+1 step coeff_4 * z^4 - let t204 = circuit_add(t202, t203); // Eval f_i+1 step + (coeff_4 * z^4) - let t205 = circuit_mul(in40, t3); // Eval f_i+1 step coeff_5 * z^5 - let t206 = circuit_add(t204, t205); // Eval f_i+1 step + (coeff_5 * z^5) - let t207 = circuit_mul(in41, t4); // Eval f_i+1 step coeff_6 * z^6 - let t208 = circuit_add(t206, t207); // Eval f_i+1 step + (coeff_6 * z^6) - let t209 = circuit_mul(in42, t5); // Eval f_i+1 step coeff_7 * z^7 - let t210 = circuit_add(t208, t209); // Eval f_i+1 step + (coeff_7 * z^7) - let t211 = circuit_mul(in43, t6); // Eval f_i+1 step coeff_8 * z^8 - let t212 = circuit_add(t210, t211); // Eval f_i+1 step + (coeff_8 * z^8) - let t213 = circuit_mul(in44, t7); // Eval f_i+1 step coeff_9 * z^9 - let t214 = circuit_add(t212, t213); // Eval f_i+1 step + (coeff_9 * z^9) - let t215 = circuit_mul(in45, t8); // Eval f_i+1 step coeff_10 * z^10 - let t216 = circuit_add(t214, t215); // Eval f_i+1 step + (coeff_10 * z^10) - let t217 = circuit_mul(in46, t9); // Eval f_i+1 step coeff_11 * z^11 - let t218 = circuit_add(t216, t217); // Eval f_i+1 step + (coeff_11 * z^11) - let t219 = circuit_sub(t196, t218); // (螤(i,k) (Pk(z))) - Ri(z) - let t220 = circuit_mul(t10, t219); // ci * ((螤(i,k) (Pk(z)) - Ri(z)) - let t221 = circuit_add(in33, t220); // LHS = LHS + ci * ((螤(i,k) (Pk(z)) - Ri(z)) + let t0 = circuit_mul(in37, in37); // compute z^2 + let t1 = circuit_mul(t0, in37); // compute z^3 + let t2 = circuit_mul(t1, t1); // compute z^6 + let t3 = circuit_mul(t2, in37); // compute z^7 + let t4 = circuit_mul(t3, t0); // compute z^9 + let t5 = circuit_mul(in38, in38); // Compute c_i = (c_(i-1))^2 + let t6 = circuit_mul(in34, in34); // Square f evaluation in Z, the result of previous bit. + let t7 = circuit_mul(in0, in6); + let t8 = circuit_add(in5, t7); + let t9 = circuit_mul(t8, in4); // eval bn line by xNegOverY + let t10 = circuit_mul(in0, in8); + let t11 = circuit_add(in7, t10); + let t12 = circuit_mul(t11, in3); // eval bn line by yInv + let t13 = circuit_mul(in6, in4); // eval bn line by xNegOverY + let t14 = circuit_mul(in8, in3); // eval bn line by yInv + let t15 = circuit_mul(in0, in10); + let t16 = circuit_add(in9, t15); + let t17 = circuit_mul(t16, in4); // eval bn line by xNegOverY + let t18 = circuit_mul(in0, in12); + let t19 = circuit_add(in11, t18); + let t20 = circuit_mul(t19, in3); // eval bn line by yInv + let t21 = circuit_mul(in10, in4); // eval bn line by xNegOverY + let t22 = circuit_mul(in12, in3); // eval bn line by yInv + let t23 = circuit_mul(t9, in37); // Eval sparse poly line_0p_1 step coeff_1 * z^1 + let t24 = circuit_add(in1, t23); // Eval sparse poly line_0p_1 step + coeff_1 * z^1 + let t25 = circuit_mul(t12, t1); // Eval sparse poly line_0p_1 step coeff_3 * z^3 + let t26 = circuit_add(t24, t25); // Eval sparse poly line_0p_1 step + coeff_3 * z^3 + let t27 = circuit_mul(t13, t3); // Eval sparse poly line_0p_1 step coeff_7 * z^7 + let t28 = circuit_add(t26, t27); // Eval sparse poly line_0p_1 step + coeff_7 * z^7 + let t29 = circuit_mul(t14, t4); // Eval sparse poly line_0p_1 step coeff_9 * z^9 + let t30 = circuit_add(t28, t29); // Eval sparse poly line_0p_1 step + coeff_9 * z^9 + let t31 = circuit_mul(t6, t30); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) + let t32 = circuit_mul(t17, in37); // Eval sparse poly line_0p_2 step coeff_1 * z^1 + let t33 = circuit_add(in1, t32); // Eval sparse poly line_0p_2 step + coeff_1 * z^1 + let t34 = circuit_mul(t20, t1); // Eval sparse poly line_0p_2 step coeff_3 * z^3 + let t35 = circuit_add(t33, t34); // Eval sparse poly line_0p_2 step + coeff_3 * z^3 + let t36 = circuit_mul(t21, t3); // Eval sparse poly line_0p_2 step coeff_7 * z^7 + let t37 = circuit_add(t35, t36); // Eval sparse poly line_0p_2 step + coeff_7 * z^7 + let t38 = circuit_mul(t22, t4); // Eval sparse poly line_0p_2 step coeff_9 * z^9 + let t39 = circuit_add(t37, t38); // Eval sparse poly line_0p_2 step + coeff_9 * z^9 + let t40 = circuit_mul(t31, t39); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_0(z) + let t41 = circuit_mul(in0, in16); + let t42 = circuit_add(in15, t41); + let t43 = circuit_mul(t42, in14); // eval bn line by xNegOverY + let t44 = circuit_mul(in0, in18); + let t45 = circuit_add(in17, t44); + let t46 = circuit_mul(t45, in13); // eval bn line by yInv + let t47 = circuit_mul(in16, in14); // eval bn line by xNegOverY + let t48 = circuit_mul(in18, in13); // eval bn line by yInv + let t49 = circuit_mul(in0, in20); + let t50 = circuit_add(in19, t49); + let t51 = circuit_mul(t50, in14); // eval bn line by xNegOverY + let t52 = circuit_mul(in0, in22); + let t53 = circuit_add(in21, t52); + let t54 = circuit_mul(t53, in13); // eval bn line by yInv + let t55 = circuit_mul(in20, in14); // eval bn line by xNegOverY + let t56 = circuit_mul(in22, in13); // eval bn line by yInv + let t57 = circuit_mul(t43, in37); // Eval sparse poly line_1p_1 step coeff_1 * z^1 + let t58 = circuit_add(in1, t57); // Eval sparse poly line_1p_1 step + coeff_1 * z^1 + let t59 = circuit_mul(t46, t1); // Eval sparse poly line_1p_1 step coeff_3 * z^3 + let t60 = circuit_add(t58, t59); // Eval sparse poly line_1p_1 step + coeff_3 * z^3 + let t61 = circuit_mul(t47, t3); // Eval sparse poly line_1p_1 step coeff_7 * z^7 + let t62 = circuit_add(t60, t61); // Eval sparse poly line_1p_1 step + coeff_7 * z^7 + let t63 = circuit_mul(t48, t4); // Eval sparse poly line_1p_1 step coeff_9 * z^9 + let t64 = circuit_add(t62, t63); // Eval sparse poly line_1p_1 step + coeff_9 * z^9 + let t65 = circuit_mul(t40, t64); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) + let t66 = circuit_mul(t51, in37); // Eval sparse poly line_1p_2 step coeff_1 * z^1 + let t67 = circuit_add(in1, t66); // Eval sparse poly line_1p_2 step + coeff_1 * z^1 + let t68 = circuit_mul(t54, t1); // Eval sparse poly line_1p_2 step coeff_3 * z^3 + let t69 = circuit_add(t67, t68); // Eval sparse poly line_1p_2 step + coeff_3 * z^3 + let t70 = circuit_mul(t55, t3); // Eval sparse poly line_1p_2 step coeff_7 * z^7 + let t71 = circuit_add(t69, t70); // Eval sparse poly line_1p_2 step + coeff_7 * z^7 + let t72 = circuit_mul(t56, t4); // Eval sparse poly line_1p_2 step coeff_9 * z^9 + let t73 = circuit_add(t71, t72); // Eval sparse poly line_1p_2 step + coeff_9 * z^9 + let t74 = circuit_mul(t65, t73); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_1(z) + let t75 = circuit_sub(in27, in31); // Fp2 sub coeff 0/1 + let t76 = circuit_sub(in28, in32); // Fp2 sub coeff 1/1 + let t77 = circuit_sub(in25, in29); // Fp2 sub coeff 0/1 + let t78 = circuit_sub(in26, in30); // Fp2 sub coeff 1/1 + let t79 = circuit_mul(t77, t77); // Fp2 Div x/y start : Fp2 Inv y start + let t80 = circuit_mul(t78, t78); + let t81 = circuit_add(t79, t80); + let t82 = circuit_inverse(t81); + let t83 = circuit_mul(t77, t82); // Fp2 Inv y real part end + let t84 = circuit_mul(t78, t82); + let t85 = circuit_sub(in2, t84); // Fp2 Inv y imag part end + let t86 = circuit_mul(t75, t83); // Fp2 mul start + let t87 = circuit_mul(t76, t85); + let t88 = circuit_sub(t86, t87); // Fp2 mul real part end + let t89 = circuit_mul(t75, t85); + let t90 = circuit_mul(t76, t83); + let t91 = circuit_add(t89, t90); // Fp2 mul imag part end + let t92 = circuit_add(t88, t91); + let t93 = circuit_sub(t88, t91); + let t94 = circuit_mul(t92, t93); + let t95 = circuit_mul(t88, t91); + let t96 = circuit_add(t95, t95); + let t97 = circuit_add(in25, in29); // Fp2 add coeff 0/1 + let t98 = circuit_add(in26, in30); // Fp2 add coeff 1/1 + let t99 = circuit_sub(t94, t97); // Fp2 sub coeff 0/1 + let t100 = circuit_sub(t96, t98); // Fp2 sub coeff 1/1 + let t101 = circuit_mul(t88, in25); // Fp2 mul start + let t102 = circuit_mul(t91, in26); + let t103 = circuit_sub(t101, t102); // Fp2 mul real part end + let t104 = circuit_mul(t88, in26); + let t105 = circuit_mul(t91, in25); + let t106 = circuit_add(t104, t105); // Fp2 mul imag part end + let t107 = circuit_sub(t103, in27); // Fp2 sub coeff 0/1 + let t108 = circuit_sub(t106, in28); // Fp2 sub coeff 1/1 + let t109 = circuit_add(in27, in27); // Fp2 add coeff 0/1 + let t110 = circuit_add(in28, in28); // Fp2 add coeff 1/1 + let t111 = circuit_sub(t99, in25); // Fp2 sub coeff 0/1 + let t112 = circuit_sub(t100, in26); // Fp2 sub coeff 1/1 + let t113 = circuit_mul(t111, t111); // Fp2 Div x/y start : Fp2 Inv y start + let t114 = circuit_mul(t112, t112); + let t115 = circuit_add(t113, t114); + let t116 = circuit_inverse(t115); + let t117 = circuit_mul(t111, t116); // Fp2 Inv y real part end + let t118 = circuit_mul(t112, t116); + let t119 = circuit_sub(in2, t118); // Fp2 Inv y imag part end + let t120 = circuit_mul(t109, t117); // Fp2 mul start + let t121 = circuit_mul(t110, t119); + let t122 = circuit_sub(t120, t121); // Fp2 mul real part end + let t123 = circuit_mul(t109, t119); + let t124 = circuit_mul(t110, t117); + let t125 = circuit_add(t123, t124); // Fp2 mul imag part end + let t126 = circuit_add(t88, t122); // Fp2 add coeff 0/1 + let t127 = circuit_add(t91, t125); // Fp2 add coeff 1/1 + let t128 = circuit_sub(in2, t126); // Fp2 neg coeff 0/1 + let t129 = circuit_sub(in2, t127); // Fp2 neg coeff 1/1 + let t130 = circuit_add(t128, t129); + let t131 = circuit_sub(t128, t129); + let t132 = circuit_mul(t130, t131); + let t133 = circuit_mul(t128, t129); + let t134 = circuit_add(t133, t133); + let t135 = circuit_sub(t132, in25); // Fp2 sub coeff 0/1 + let t136 = circuit_sub(t134, in26); // Fp2 sub coeff 1/1 + let t137 = circuit_sub(t135, t99); // Fp2 sub coeff 0/1 + let t138 = circuit_sub(t136, t100); // Fp2 sub coeff 1/1 + let t139 = circuit_sub(in25, t137); // Fp2 sub coeff 0/1 + let t140 = circuit_sub(in26, t138); // Fp2 sub coeff 1/1 + let t141 = circuit_mul(t128, t139); // Fp2 mul start + let t142 = circuit_mul(t129, t140); + let t143 = circuit_sub(t141, t142); // Fp2 mul real part end + let t144 = circuit_mul(t128, t140); + let t145 = circuit_mul(t129, t139); + let t146 = circuit_add(t144, t145); // Fp2 mul imag part end + let t147 = circuit_sub(t143, in27); // Fp2 sub coeff 0/1 + let t148 = circuit_sub(t146, in28); // Fp2 sub coeff 1/1 + let t149 = circuit_mul(t128, in25); // Fp2 mul start + let t150 = circuit_mul(t129, in26); + let t151 = circuit_sub(t149, t150); // Fp2 mul real part end + let t152 = circuit_mul(t128, in26); + let t153 = circuit_mul(t129, in25); + let t154 = circuit_add(t152, t153); // Fp2 mul imag part end + let t155 = circuit_sub(t151, in27); // Fp2 sub coeff 0/1 + let t156 = circuit_sub(t154, in28); // Fp2 sub coeff 1/1 + let t157 = circuit_mul(in0, t91); + let t158 = circuit_add(t88, t157); + let t159 = circuit_mul(t158, in24); // eval bn line by xNegOverY + let t160 = circuit_mul(in0, t108); + let t161 = circuit_add(t107, t160); + let t162 = circuit_mul(t161, in23); // eval bn line by yInv + let t163 = circuit_mul(t91, in24); // eval bn line by xNegOverY + let t164 = circuit_mul(t108, in23); // eval bn line by yInv + let t165 = circuit_mul(in0, t129); + let t166 = circuit_add(t128, t165); + let t167 = circuit_mul(t166, in24); // eval bn line by xNegOverY + let t168 = circuit_mul(in0, t156); + let t169 = circuit_add(t155, t168); + let t170 = circuit_mul(t169, in23); // eval bn line by yInv + let t171 = circuit_mul(t129, in24); // eval bn line by xNegOverY + let t172 = circuit_mul(t156, in23); // eval bn line by yInv + let t173 = circuit_mul(t159, in37); // Eval sparse poly line_2p_1 step coeff_1 * z^1 + let t174 = circuit_add(in1, t173); // Eval sparse poly line_2p_1 step + coeff_1 * z^1 + let t175 = circuit_mul(t162, t1); // Eval sparse poly line_2p_1 step coeff_3 * z^3 + let t176 = circuit_add(t174, t175); // Eval sparse poly line_2p_1 step + coeff_3 * z^3 + let t177 = circuit_mul(t163, t3); // Eval sparse poly line_2p_1 step coeff_7 * z^7 + let t178 = circuit_add(t176, t177); // Eval sparse poly line_2p_1 step + coeff_7 * z^7 + let t179 = circuit_mul(t164, t4); // Eval sparse poly line_2p_1 step coeff_9 * z^9 + let t180 = circuit_add(t178, t179); // Eval sparse poly line_2p_1 step + coeff_9 * z^9 + let t181 = circuit_mul(t74, t180); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_2(z) + let t182 = circuit_mul(t167, in37); // Eval sparse poly line_2p_2 step coeff_1 * z^1 + let t183 = circuit_add(in1, t182); // Eval sparse poly line_2p_2 step + coeff_1 * z^1 + let t184 = circuit_mul(t170, t1); // Eval sparse poly line_2p_2 step coeff_3 * z^3 + let t185 = circuit_add(t183, t184); // Eval sparse poly line_2p_2 step + coeff_3 * z^3 + let t186 = circuit_mul(t171, t3); // Eval sparse poly line_2p_2 step coeff_7 * z^7 + let t187 = circuit_add(t185, t186); // Eval sparse poly line_2p_2 step + coeff_7 * z^7 + let t188 = circuit_mul(t172, t4); // Eval sparse poly line_2p_2 step coeff_9 * z^9 + let t189 = circuit_add(t187, t188); // Eval sparse poly line_2p_2 step + coeff_9 * z^9 + let t190 = circuit_mul(t181, t189); // Mul (f(z)^2 * 螤_0_k-1(line_k(z))) * line_i_2(z) + let t191 = circuit_mul(t190, in36); + let t192 = circuit_sub(t191, in35); // (螤(i,k) (Pk(z))) - Ri(z) + let t193 = circuit_mul(t5, t192); // ci * ((螤(i,k) (Pk(z)) - Ri(z)) + let t194 = circuit_add(in33, t193); // LHS = LHS + ci * ((螤(i,k) (Pk(z)) - Ri(z)) let modulus = TryInto::< _, CircuitModulus >::try_into([0x6871ca8d3c208c16d87cfd47, 0xb85045b68181585d97816a91, 0x30644e72e131a029, 0x0]) .unwrap(); // BN254 prime field modulus - let mut circuit_inputs = (t142, t143, t152, t153, t218, t221, t10,).new_inputs(); + let mut circuit_inputs = (t137, t138, t147, t148, t194, t5,).new_inputs(); // Prefill constants: circuit_inputs = circuit_inputs - .next( + .next_2( [0x6871ca8d3c208c16d87cfd3e, 0xb85045b68181585d97816a91, 0x30644e72e131a029, 0x0] ); // in0 - circuit_inputs = circuit_inputs.next([0x1, 0x0, 0x0, 0x0]); // in1 - circuit_inputs = circuit_inputs.next([0x0, 0x0, 0x0, 0x0]); // in2 + circuit_inputs = circuit_inputs.next_2([0x1, 0x0, 0x0, 0x0]); // in1 + circuit_inputs = circuit_inputs.next_2([0x0, 0x0, 0x0, 0x0]); // in2 // Fill inputs: - circuit_inputs = circuit_inputs.next(yInv_0); // in3 - circuit_inputs = circuit_inputs.next(xNegOverY_0); // in4 - circuit_inputs = circuit_inputs.next(G2_line_0.r0a0); // in5 - circuit_inputs = circuit_inputs.next(G2_line_0.r0a1); // in6 - circuit_inputs = circuit_inputs.next(G2_line_0.r1a0); // in7 - circuit_inputs = circuit_inputs.next(G2_line_0.r1a1); // in8 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_line0.r0a0); // in9 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_line0.r0a1); // in10 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_line0.r1a0); // in11 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_line0.r1a1); // in12 - circuit_inputs = circuit_inputs.next(yInv_1); // in13 - circuit_inputs = circuit_inputs.next(xNegOverY_1); // in14 - circuit_inputs = circuit_inputs.next(G2_line_1.r0a0); // in15 - circuit_inputs = circuit_inputs.next(G2_line_1.r0a1); // in16 - circuit_inputs = circuit_inputs.next(G2_line_1.r1a0); // in17 - circuit_inputs = circuit_inputs.next(G2_line_1.r1a1); // in18 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_line1.r0a0); // in19 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_line1.r0a1); // in20 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_line1.r1a0); // in21 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_line1.r1a1); // in22 - circuit_inputs = circuit_inputs.next(yInv_2); // in23 - circuit_inputs = circuit_inputs.next(xNegOverY_2); // in24 - circuit_inputs = circuit_inputs.next(Q_2.x0); // in25 - circuit_inputs = circuit_inputs.next(Q_2.x1); // in26 - circuit_inputs = circuit_inputs.next(Q_2.y0); // in27 - circuit_inputs = circuit_inputs.next(Q_2.y1); // in28 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_2.x0); // in29 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_2.x1); // in30 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_2.y0); // in31 - circuit_inputs = circuit_inputs.next(Q_or_Q_neg_2.y1); // in32 - circuit_inputs = circuit_inputs.next(lhs_i); // in33 - circuit_inputs = circuit_inputs.next(f_i_of_z); // in34 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w0); // in35 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w1); // in36 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w2); // in37 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w3); // in38 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w4); // in39 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w5); // in40 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w6); // in41 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w7); // in42 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w8); // in43 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w9); // in44 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w10); // in45 - circuit_inputs = circuit_inputs.next(f_i_plus_one.w11); // in46 - circuit_inputs = circuit_inputs.next(c_or_cinv_of_z); // in47 - circuit_inputs = circuit_inputs.next(z); // in48 - circuit_inputs = circuit_inputs.next(ci); // in49 + circuit_inputs = circuit_inputs.next_2(yInv_0); // in3 + circuit_inputs = circuit_inputs.next_2(xNegOverY_0); // in4 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r0a0); // in5 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r0a1); // in6 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r1a0); // in7 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r1a1); // in8 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_line0.r0a0); // in9 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_line0.r0a1); // in10 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_line0.r1a0); // in11 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_line0.r1a1); // in12 + circuit_inputs = circuit_inputs.next_2(yInv_1); // in13 + circuit_inputs = circuit_inputs.next_2(xNegOverY_1); // in14 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r0a0); // in15 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r0a1); // in16 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r1a0); // in17 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r1a1); // in18 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_line1.r0a0); // in19 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_line1.r0a1); // in20 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_line1.r1a0); // in21 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_line1.r1a1); // in22 + circuit_inputs = circuit_inputs.next_2(yInv_2); // in23 + circuit_inputs = circuit_inputs.next_2(xNegOverY_2); // in24 + circuit_inputs = circuit_inputs.next_2(Q_2.x0); // in25 + circuit_inputs = circuit_inputs.next_2(Q_2.x1); // in26 + circuit_inputs = circuit_inputs.next_2(Q_2.y0); // in27 + circuit_inputs = circuit_inputs.next_2(Q_2.y1); // in28 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_2.x0); // in29 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_2.x1); // in30 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_2.y0); // in31 + circuit_inputs = circuit_inputs.next_2(Q_or_Q_neg_2.y1); // in32 + circuit_inputs = circuit_inputs.next_2(lhs_i); // in33 + circuit_inputs = circuit_inputs.next_2(f_i_of_z); // in34 + circuit_inputs = circuit_inputs.next_2(f_i_plus_one_of_z); // in35 + circuit_inputs = circuit_inputs.next_2(c_or_cinv_of_z); // in36 + circuit_inputs = circuit_inputs.next_2(z); // in37 + circuit_inputs = circuit_inputs.next_2(ci); // in38 - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); let Q0: G2Point = G2Point { - x0: outputs.get_output(t142), - x1: outputs.get_output(t143), - y0: outputs.get_output(t152), - y1: outputs.get_output(t153) + x0: outputs.get_output(t137), + x1: outputs.get_output(t138), + y0: outputs.get_output(t147), + y1: outputs.get_output(t148) }; - let f_i_plus_one_of_z: u384 = outputs.get_output(t218); - let lhs_i_plus_one: u384 = outputs.get_output(t221); - let ci_plus_one: u384 = outputs.get_output(t10); - return (Q0, f_i_plus_one_of_z, lhs_i_plus_one, ci_plus_one); + let lhs_i_plus_one: u384 = outputs.get_output(t194); + let ci_plus_one: u384 = outputs.get_output(t5); + return (Q0, lhs_i_plus_one, ci_plus_one); } fn run_BN254_MP_CHECK_FINALIZE_BN_2P_2F_circuit( yInv_0: u384, @@ -5136,79 +4475,76 @@ fn run_BN254_MP_CHECK_FINALIZE_BN_2P_2F_circuit( let mut circuit_inputs = (t385,).new_inputs(); // Prefill constants: circuit_inputs = circuit_inputs - .next( + .next_2( [0x6871ca8d3c208c16d87cfd3e, 0xb85045b68181585d97816a91, 0x30644e72e131a029, 0x0] ); // in0 - circuit_inputs = circuit_inputs.next([0x1, 0x0, 0x0, 0x0]); // in1 - circuit_inputs = circuit_inputs.next([0x52, 0x0, 0x0, 0x0]); // in2 + circuit_inputs = circuit_inputs.next_2([0x1, 0x0, 0x0, 0x0]); // in1 + circuit_inputs = circuit_inputs.next_2([0x52, 0x0, 0x0, 0x0]); // in2 circuit_inputs = circuit_inputs - .next( + .next_2( [0x6871ca8d3c208c16d87cfd35, 0xb85045b68181585d97816a91, 0x30644e72e131a029, 0x0] ); // in3 // Fill inputs: - circuit_inputs = circuit_inputs.next(yInv_0); // in4 - circuit_inputs = circuit_inputs.next(xNegOverY_0); // in5 - circuit_inputs = circuit_inputs.next(line_1_0.r0a0); // in6 - circuit_inputs = circuit_inputs.next(line_1_0.r0a1); // in7 - circuit_inputs = circuit_inputs.next(line_1_0.r1a0); // in8 - circuit_inputs = circuit_inputs.next(line_1_0.r1a1); // in9 - circuit_inputs = circuit_inputs.next(line_2_0.r0a0); // in10 - circuit_inputs = circuit_inputs.next(line_2_0.r0a1); // in11 - circuit_inputs = circuit_inputs.next(line_2_0.r1a0); // in12 - circuit_inputs = circuit_inputs.next(line_2_0.r1a1); // in13 - circuit_inputs = circuit_inputs.next(yInv_1); // in14 - circuit_inputs = circuit_inputs.next(xNegOverY_1); // in15 - circuit_inputs = circuit_inputs.next(line_1_1.r0a0); // in16 - circuit_inputs = circuit_inputs.next(line_1_1.r0a1); // in17 - circuit_inputs = circuit_inputs.next(line_1_1.r1a0); // in18 - circuit_inputs = circuit_inputs.next(line_1_1.r1a1); // in19 - circuit_inputs = circuit_inputs.next(line_2_1.r0a0); // in20 - circuit_inputs = circuit_inputs.next(line_2_1.r0a1); // in21 - circuit_inputs = circuit_inputs.next(line_2_1.r1a0); // in22 - circuit_inputs = circuit_inputs.next(line_2_1.r1a1); // in23 - circuit_inputs = circuit_inputs.next(R_n_minus_2.w0); // in24 - circuit_inputs = circuit_inputs.next(R_n_minus_2.w1); // in25 - circuit_inputs = circuit_inputs.next(R_n_minus_2.w2); // in26 - circuit_inputs = circuit_inputs.next(R_n_minus_2.w3); // in27 - circuit_inputs = circuit_inputs.next(R_n_minus_2.w4); // in28 - circuit_inputs = circuit_inputs.next(R_n_minus_2.w5); // in29 - circuit_inputs = circuit_inputs.next(R_n_minus_2.w6); // in30 - circuit_inputs = circuit_inputs.next(R_n_minus_2.w7); // in31 - circuit_inputs = circuit_inputs.next(R_n_minus_2.w8); // in32 - circuit_inputs = circuit_inputs.next(R_n_minus_2.w9); // in33 - circuit_inputs = circuit_inputs.next(R_n_minus_2.w10); // in34 - circuit_inputs = circuit_inputs.next(R_n_minus_2.w11); // in35 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w0); // in36 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w1); // in37 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w2); // in38 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w3); // in39 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w4); // in40 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w5); // in41 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w6); // in42 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w7); // in43 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w8); // in44 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w9); // in45 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w10); // in46 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w11); // in47 - circuit_inputs = circuit_inputs.next(c_n_minus_3); // in48 - circuit_inputs = circuit_inputs.next(w_of_z); // in49 - circuit_inputs = circuit_inputs.next(z); // in50 - circuit_inputs = circuit_inputs.next(c_inv_frob_1_of_z); // in51 - circuit_inputs = circuit_inputs.next(c_frob_2_of_z); // in52 - circuit_inputs = circuit_inputs.next(c_inv_frob_3_of_z); // in53 - circuit_inputs = circuit_inputs.next(previous_lhs); // in54 - circuit_inputs = circuit_inputs.next(R_n_minus_3_of_z); // in55 + circuit_inputs = circuit_inputs.next_2(yInv_0); // in4 + circuit_inputs = circuit_inputs.next_2(xNegOverY_0); // in5 + circuit_inputs = circuit_inputs.next_2(line_1_0.r0a0); // in6 + circuit_inputs = circuit_inputs.next_2(line_1_0.r0a1); // in7 + circuit_inputs = circuit_inputs.next_2(line_1_0.r1a0); // in8 + circuit_inputs = circuit_inputs.next_2(line_1_0.r1a1); // in9 + circuit_inputs = circuit_inputs.next_2(line_2_0.r0a0); // in10 + circuit_inputs = circuit_inputs.next_2(line_2_0.r0a1); // in11 + circuit_inputs = circuit_inputs.next_2(line_2_0.r1a0); // in12 + circuit_inputs = circuit_inputs.next_2(line_2_0.r1a1); // in13 + circuit_inputs = circuit_inputs.next_2(yInv_1); // in14 + circuit_inputs = circuit_inputs.next_2(xNegOverY_1); // in15 + circuit_inputs = circuit_inputs.next_2(line_1_1.r0a0); // in16 + circuit_inputs = circuit_inputs.next_2(line_1_1.r0a1); // in17 + circuit_inputs = circuit_inputs.next_2(line_1_1.r1a0); // in18 + circuit_inputs = circuit_inputs.next_2(line_1_1.r1a1); // in19 + circuit_inputs = circuit_inputs.next_2(line_2_1.r0a0); // in20 + circuit_inputs = circuit_inputs.next_2(line_2_1.r0a1); // in21 + circuit_inputs = circuit_inputs.next_2(line_2_1.r1a0); // in22 + circuit_inputs = circuit_inputs.next_2(line_2_1.r1a1); // in23 + circuit_inputs = circuit_inputs.next_2(R_n_minus_2.w0); // in24 + circuit_inputs = circuit_inputs.next_2(R_n_minus_2.w1); // in25 + circuit_inputs = circuit_inputs.next_2(R_n_minus_2.w2); // in26 + circuit_inputs = circuit_inputs.next_2(R_n_minus_2.w3); // in27 + circuit_inputs = circuit_inputs.next_2(R_n_minus_2.w4); // in28 + circuit_inputs = circuit_inputs.next_2(R_n_minus_2.w5); // in29 + circuit_inputs = circuit_inputs.next_2(R_n_minus_2.w6); // in30 + circuit_inputs = circuit_inputs.next_2(R_n_minus_2.w7); // in31 + circuit_inputs = circuit_inputs.next_2(R_n_minus_2.w8); // in32 + circuit_inputs = circuit_inputs.next_2(R_n_minus_2.w9); // in33 + circuit_inputs = circuit_inputs.next_2(R_n_minus_2.w10); // in34 + circuit_inputs = circuit_inputs.next_2(R_n_minus_2.w11); // in35 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w0); // in36 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w1); // in37 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w2); // in38 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w3); // in39 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w4); // in40 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w5); // in41 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w6); // in42 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w7); // in43 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w8); // in44 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w9); // in45 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w10); // in46 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w11); // in47 + circuit_inputs = circuit_inputs.next_2(c_n_minus_3); // in48 + circuit_inputs = circuit_inputs.next_2(w_of_z); // in49 + circuit_inputs = circuit_inputs.next_2(z); // in50 + circuit_inputs = circuit_inputs.next_2(c_inv_frob_1_of_z); // in51 + circuit_inputs = circuit_inputs.next_2(c_frob_2_of_z); // in52 + circuit_inputs = circuit_inputs.next_2(c_inv_frob_3_of_z); // in53 + circuit_inputs = circuit_inputs.next_2(previous_lhs); // in54 + circuit_inputs = circuit_inputs.next_2(R_n_minus_3_of_z); // in55 let mut Q = Q; while let Option::Some(val) = Q.pop_front() { - circuit_inputs = circuit_inputs.next(val); + circuit_inputs = circuit_inputs.next_2(val); }; // in56 - in142 - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); let final_check: u384 = outputs.get_output(t385); return (final_check,); } @@ -5905,114 +5241,133 @@ fn run_BN254_MP_CHECK_FINALIZE_BN_3P_2F_circuit( let mut circuit_inputs = (t587,).new_inputs(); // Prefill constants: + circuit_inputs = circuit_inputs - .next( - [0xc2c3330c99e39557176f553d, 0x4c0bec3cf559b143b78cc310, 0x2fb347984f7911f7, 0x0] - ); // in0 - circuit_inputs = circuit_inputs - .next( - [0xb7c9dce1665d51c640fcba2, 0x4ba4cc8bd75a079432ae2a1d, 0x16c9e55061ebae20, 0x0] - ); // in1 - circuit_inputs = circuit_inputs - .next( - [0xa9c95998dc54014671a0135a, 0xdc5ec698b6e2f9b9dbaae0ed, 0x63cf305489af5dc, 0x0] - ); // in2 - circuit_inputs = circuit_inputs - .next( - [0x8fa25bd282d37f632623b0e3, 0x704b5a7ec796f2b21807dc9, 0x7c03cbcac41049a, 0x0] - ); // in3 - circuit_inputs = circuit_inputs - .next( - [0xbb966e3de4bd44e5607cfd48, 0x5e6dd9e7e0acccb0c28f069f, 0x30644e72e131a029, 0x0] - ); // in4 - circuit_inputs = circuit_inputs.next([0x1, 0x0, 0x0, 0x0]); // in5 - circuit_inputs = circuit_inputs.next([0x0, 0x0, 0x0, 0x0]); // in6 - circuit_inputs = circuit_inputs - .next( - [0x6871ca8d3c208c16d87cfd3e, 0xb85045b68181585d97816a91, 0x30644e72e131a029, 0x0] - ); // in7 - circuit_inputs = circuit_inputs.next([0x52, 0x0, 0x0, 0x0]); // in8 - circuit_inputs = circuit_inputs - .next( - [0x6871ca8d3c208c16d87cfd35, 0xb85045b68181585d97816a91, 0x30644e72e131a029, 0x0] - ); // in9 + .next_span(MP_CHECK_FINALIZE_BN_3P_2F_BN254_CONSTANTS.span()); // in0 - in9 + // Fill inputs: - circuit_inputs = circuit_inputs.next(yInv_0); // in10 - circuit_inputs = circuit_inputs.next(xNegOverY_0); // in11 - circuit_inputs = circuit_inputs.next(line_1_0.r0a0); // in12 - circuit_inputs = circuit_inputs.next(line_1_0.r0a1); // in13 - circuit_inputs = circuit_inputs.next(line_1_0.r1a0); // in14 - circuit_inputs = circuit_inputs.next(line_1_0.r1a1); // in15 - circuit_inputs = circuit_inputs.next(line_2_0.r0a0); // in16 - circuit_inputs = circuit_inputs.next(line_2_0.r0a1); // in17 - circuit_inputs = circuit_inputs.next(line_2_0.r1a0); // in18 - circuit_inputs = circuit_inputs.next(line_2_0.r1a1); // in19 - circuit_inputs = circuit_inputs.next(yInv_1); // in20 - circuit_inputs = circuit_inputs.next(xNegOverY_1); // in21 - circuit_inputs = circuit_inputs.next(line_1_1.r0a0); // in22 - circuit_inputs = circuit_inputs.next(line_1_1.r0a1); // in23 - circuit_inputs = circuit_inputs.next(line_1_1.r1a0); // in24 - circuit_inputs = circuit_inputs.next(line_1_1.r1a1); // in25 - circuit_inputs = circuit_inputs.next(line_2_1.r0a0); // in26 - circuit_inputs = circuit_inputs.next(line_2_1.r0a1); // in27 - circuit_inputs = circuit_inputs.next(line_2_1.r1a0); // in28 - circuit_inputs = circuit_inputs.next(line_2_1.r1a1); // in29 - circuit_inputs = circuit_inputs.next(original_Q2.x0); // in30 - circuit_inputs = circuit_inputs.next(original_Q2.x1); // in31 - circuit_inputs = circuit_inputs.next(original_Q2.y0); // in32 - circuit_inputs = circuit_inputs.next(original_Q2.y1); // in33 - circuit_inputs = circuit_inputs.next(yInv_2); // in34 - circuit_inputs = circuit_inputs.next(xNegOverY_2); // in35 - circuit_inputs = circuit_inputs.next(Q_2.x0); // in36 - circuit_inputs = circuit_inputs.next(Q_2.x1); // in37 - circuit_inputs = circuit_inputs.next(Q_2.y0); // in38 - circuit_inputs = circuit_inputs.next(Q_2.y1); // in39 - circuit_inputs = circuit_inputs.next(R_n_minus_2.w0); // in40 - circuit_inputs = circuit_inputs.next(R_n_minus_2.w1); // in41 - circuit_inputs = circuit_inputs.next(R_n_minus_2.w2); // in42 - circuit_inputs = circuit_inputs.next(R_n_minus_2.w3); // in43 - circuit_inputs = circuit_inputs.next(R_n_minus_2.w4); // in44 - circuit_inputs = circuit_inputs.next(R_n_minus_2.w5); // in45 - circuit_inputs = circuit_inputs.next(R_n_minus_2.w6); // in46 - circuit_inputs = circuit_inputs.next(R_n_minus_2.w7); // in47 - circuit_inputs = circuit_inputs.next(R_n_minus_2.w8); // in48 - circuit_inputs = circuit_inputs.next(R_n_minus_2.w9); // in49 - circuit_inputs = circuit_inputs.next(R_n_minus_2.w10); // in50 - circuit_inputs = circuit_inputs.next(R_n_minus_2.w11); // in51 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w0); // in52 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w1); // in53 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w2); // in54 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w3); // in55 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w4); // in56 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w5); // in57 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w6); // in58 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w7); // in59 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w8); // in60 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w9); // in61 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w10); // in62 - circuit_inputs = circuit_inputs.next(R_n_minus_1.w11); // in63 - circuit_inputs = circuit_inputs.next(c_n_minus_3); // in64 - circuit_inputs = circuit_inputs.next(w_of_z); // in65 - circuit_inputs = circuit_inputs.next(z); // in66 - circuit_inputs = circuit_inputs.next(c_inv_frob_1_of_z); // in67 - circuit_inputs = circuit_inputs.next(c_frob_2_of_z); // in68 - circuit_inputs = circuit_inputs.next(c_inv_frob_3_of_z); // in69 - circuit_inputs = circuit_inputs.next(previous_lhs); // in70 - circuit_inputs = circuit_inputs.next(R_n_minus_3_of_z); // in71 + circuit_inputs = circuit_inputs.next_2(yInv_0); // in10 + circuit_inputs = circuit_inputs.next_2(xNegOverY_0); // in11 + circuit_inputs = circuit_inputs.next_2(line_1_0.r0a0); // in12 + circuit_inputs = circuit_inputs.next_2(line_1_0.r0a1); // in13 + circuit_inputs = circuit_inputs.next_2(line_1_0.r1a0); // in14 + circuit_inputs = circuit_inputs.next_2(line_1_0.r1a1); // in15 + circuit_inputs = circuit_inputs.next_2(line_2_0.r0a0); // in16 + circuit_inputs = circuit_inputs.next_2(line_2_0.r0a1); // in17 + circuit_inputs = circuit_inputs.next_2(line_2_0.r1a0); // in18 + circuit_inputs = circuit_inputs.next_2(line_2_0.r1a1); // in19 + circuit_inputs = circuit_inputs.next_2(yInv_1); // in20 + circuit_inputs = circuit_inputs.next_2(xNegOverY_1); // in21 + circuit_inputs = circuit_inputs.next_2(line_1_1.r0a0); // in22 + circuit_inputs = circuit_inputs.next_2(line_1_1.r0a1); // in23 + circuit_inputs = circuit_inputs.next_2(line_1_1.r1a0); // in24 + circuit_inputs = circuit_inputs.next_2(line_1_1.r1a1); // in25 + circuit_inputs = circuit_inputs.next_2(line_2_1.r0a0); // in26 + circuit_inputs = circuit_inputs.next_2(line_2_1.r0a1); // in27 + circuit_inputs = circuit_inputs.next_2(line_2_1.r1a0); // in28 + circuit_inputs = circuit_inputs.next_2(line_2_1.r1a1); // in29 + circuit_inputs = circuit_inputs.next_2(original_Q2.x0); // in30 + circuit_inputs = circuit_inputs.next_2(original_Q2.x1); // in31 + circuit_inputs = circuit_inputs.next_2(original_Q2.y0); // in32 + circuit_inputs = circuit_inputs.next_2(original_Q2.y1); // in33 + circuit_inputs = circuit_inputs.next_2(yInv_2); // in34 + circuit_inputs = circuit_inputs.next_2(xNegOverY_2); // in35 + circuit_inputs = circuit_inputs.next_2(Q_2.x0); // in36 + circuit_inputs = circuit_inputs.next_2(Q_2.x1); // in37 + circuit_inputs = circuit_inputs.next_2(Q_2.y0); // in38 + circuit_inputs = circuit_inputs.next_2(Q_2.y1); // in39 + circuit_inputs = circuit_inputs.next_2(R_n_minus_2.w0); // in40 + circuit_inputs = circuit_inputs.next_2(R_n_minus_2.w1); // in41 + circuit_inputs = circuit_inputs.next_2(R_n_minus_2.w2); // in42 + circuit_inputs = circuit_inputs.next_2(R_n_minus_2.w3); // in43 + circuit_inputs = circuit_inputs.next_2(R_n_minus_2.w4); // in44 + circuit_inputs = circuit_inputs.next_2(R_n_minus_2.w5); // in45 + circuit_inputs = circuit_inputs.next_2(R_n_minus_2.w6); // in46 + circuit_inputs = circuit_inputs.next_2(R_n_minus_2.w7); // in47 + circuit_inputs = circuit_inputs.next_2(R_n_minus_2.w8); // in48 + circuit_inputs = circuit_inputs.next_2(R_n_minus_2.w9); // in49 + circuit_inputs = circuit_inputs.next_2(R_n_minus_2.w10); // in50 + circuit_inputs = circuit_inputs.next_2(R_n_minus_2.w11); // in51 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w0); // in52 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w1); // in53 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w2); // in54 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w3); // in55 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w4); // in56 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w5); // in57 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w6); // in58 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w7); // in59 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w8); // in60 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w9); // in61 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w10); // in62 + circuit_inputs = circuit_inputs.next_2(R_n_minus_1.w11); // in63 + circuit_inputs = circuit_inputs.next_2(c_n_minus_3); // in64 + circuit_inputs = circuit_inputs.next_2(w_of_z); // in65 + circuit_inputs = circuit_inputs.next_2(z); // in66 + circuit_inputs = circuit_inputs.next_2(c_inv_frob_1_of_z); // in67 + circuit_inputs = circuit_inputs.next_2(c_frob_2_of_z); // in68 + circuit_inputs = circuit_inputs.next_2(c_inv_frob_3_of_z); // in69 + circuit_inputs = circuit_inputs.next_2(previous_lhs); // in70 + circuit_inputs = circuit_inputs.next_2(R_n_minus_3_of_z); // in71 let mut Q = Q; while let Option::Some(val) = Q.pop_front() { - circuit_inputs = circuit_inputs.next(val); + circuit_inputs = circuit_inputs.next_2(val); }; // in72 - in185 - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); let final_check: u384 = outputs.get_output(t587); return (final_check,); } +const MP_CHECK_FINALIZE_BN_3P_2F_BN254_CONSTANTS: [ + u384 + ; 10] = [ + u384 { + limb0: 0xc2c3330c99e39557176f553d, + limb1: 0x4c0bec3cf559b143b78cc310, + limb2: 0x2fb347984f7911f7, + limb3: 0x0 + }, + u384 { + limb0: 0xb7c9dce1665d51c640fcba2, + limb1: 0x4ba4cc8bd75a079432ae2a1d, + limb2: 0x16c9e55061ebae20, + limb3: 0x0 + }, + u384 { + limb0: 0xa9c95998dc54014671a0135a, + limb1: 0xdc5ec698b6e2f9b9dbaae0ed, + limb2: 0x63cf305489af5dc, + limb3: 0x0 + }, + u384 { + limb0: 0x8fa25bd282d37f632623b0e3, + limb1: 0x704b5a7ec796f2b21807dc9, + limb2: 0x7c03cbcac41049a, + limb3: 0x0 + }, + u384 { + limb0: 0xbb966e3de4bd44e5607cfd48, + limb1: 0x5e6dd9e7e0acccb0c28f069f, + limb2: 0x30644e72e131a029, + limb3: 0x0 + }, + u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, + u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, + u384 { + limb0: 0x6871ca8d3c208c16d87cfd3e, + limb1: 0xb85045b68181585d97816a91, + limb2: 0x30644e72e131a029, + limb3: 0x0 + }, + u384 { limb0: 0x52, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, + u384 { + limb0: 0x6871ca8d3c208c16d87cfd35, + limb1: 0xb85045b68181585d97816a91, + limb2: 0x30644e72e131a029, + limb3: 0x0 + } +]; fn run_BN254_MP_CHECK_INIT_BIT_2P_2F_circuit( yInv_0: u384, xNegOverY_0: u384, @@ -6020,12 +5375,12 @@ fn run_BN254_MP_CHECK_INIT_BIT_2P_2F_circuit( yInv_1: u384, xNegOverY_1: u384, G2_line_1: G2Line, - R_i: E12D, + R_i_of_z: u384, c0: u384, z: u384, c_inv_of_z: u384, previous_lhs: u384 -) -> (u384, u384, u384) { +) -> (u384, u384) { // CONSTANT stack let in0 = CE::> {}; // -0x9 % p let in1 = CE::> {}; // 0x1 @@ -6036,133 +5391,87 @@ fn run_BN254_MP_CHECK_INIT_BIT_2P_2F_circuit( let (in8, in9, in10) = (CE::> {}, CE::> {}, CE::> {}); let (in11, in12, in13) = (CE::> {}, CE::> {}, CE::> {}); let (in14, in15, in16) = (CE::> {}, CE::> {}, CE::> {}); - let (in17, in18, in19) = (CE::> {}, CE::> {}, CE::> {}); - let (in20, in21, in22) = (CE::> {}, CE::> {}, CE::> {}); - let (in23, in24, in25) = (CE::> {}, CE::> {}, CE::> {}); - let (in26, in27, in28) = (CE::> {}, CE::> {}, CE::> {}); - let in29 = CE::> {}; - let t0 = circuit_mul(in27, in27); // Compute z^2 - let t1 = circuit_mul(t0, in27); // Compute z^3 - let t2 = circuit_mul(t1, in27); // Compute z^4 - let t3 = circuit_mul(t2, in27); // Compute z^5 - let t4 = circuit_mul(t3, in27); // Compute z^6 - let t5 = circuit_mul(t4, in27); // Compute z^7 - let t6 = circuit_mul(t5, in27); // Compute z^8 - let t7 = circuit_mul(t6, in27); // Compute z^9 - let t8 = circuit_mul(t7, in27); // Compute z^10 - let t9 = circuit_mul(t8, in27); // Compute z^11 - let t10 = circuit_mul(in15, in27); // Eval R step coeff_1 * z^1 - let t11 = circuit_add(in14, t10); // Eval R step + (coeff_1 * z^1) - let t12 = circuit_mul(in16, t0); // Eval R step coeff_2 * z^2 - let t13 = circuit_add(t11, t12); // Eval R step + (coeff_2 * z^2) - let t14 = circuit_mul(in17, t1); // Eval R step coeff_3 * z^3 - let t15 = circuit_add(t13, t14); // Eval R step + (coeff_3 * z^3) - let t16 = circuit_mul(in18, t2); // Eval R step coeff_4 * z^4 - let t17 = circuit_add(t15, t16); // Eval R step + (coeff_4 * z^4) - let t18 = circuit_mul(in19, t3); // Eval R step coeff_5 * z^5 - let t19 = circuit_add(t17, t18); // Eval R step + (coeff_5 * z^5) - let t20 = circuit_mul(in20, t4); // Eval R step coeff_6 * z^6 - let t21 = circuit_add(t19, t20); // Eval R step + (coeff_6 * z^6) - let t22 = circuit_mul(in21, t5); // Eval R step coeff_7 * z^7 - let t23 = circuit_add(t21, t22); // Eval R step + (coeff_7 * z^7) - let t24 = circuit_mul(in22, t6); // Eval R step coeff_8 * z^8 - let t25 = circuit_add(t23, t24); // Eval R step + (coeff_8 * z^8) - let t26 = circuit_mul(in23, t7); // Eval R step coeff_9 * z^9 - let t27 = circuit_add(t25, t26); // Eval R step + (coeff_9 * z^9) - let t28 = circuit_mul(in24, t8); // Eval R step coeff_10 * z^10 - let t29 = circuit_add(t27, t28); // Eval R step + (coeff_10 * z^10) - let t30 = circuit_mul(in25, t9); // Eval R step coeff_11 * z^11 - let t31 = circuit_add(t29, t30); // Eval R step + (coeff_11 * z^11) - let t32 = circuit_mul(in28, in28); - let t33 = circuit_mul(in26, in26); - let t34 = circuit_mul(in0, in5); - let t35 = circuit_add(in4, t34); - let t36 = circuit_mul(t35, in3); // eval bn line by xNegOverY - let t37 = circuit_mul(in0, in7); - let t38 = circuit_add(in6, t37); - let t39 = circuit_mul(t38, in2); // eval bn line by yInv - let t40 = circuit_mul(in5, in3); // eval bn line by xNegOverY - let t41 = circuit_mul(in7, in2); // eval bn line by yInv - let t42 = circuit_mul(t36, in27); // Eval sparse poly line_0p_1 step coeff_1 * z^1 - let t43 = circuit_add(in1, t42); // Eval sparse poly line_0p_1 step + coeff_1 * z^1 - let t44 = circuit_mul(t39, t1); // Eval sparse poly line_0p_1 step coeff_3 * z^3 - let t45 = circuit_add(t43, t44); // Eval sparse poly line_0p_1 step + coeff_3 * z^3 - let t46 = circuit_mul(t40, t5); // Eval sparse poly line_0p_1 step coeff_7 * z^7 - let t47 = circuit_add(t45, t46); // Eval sparse poly line_0p_1 step + coeff_7 * z^7 - let t48 = circuit_mul(t41, t7); // Eval sparse poly line_0p_1 step coeff_9 * z^9 - let t49 = circuit_add(t47, t48); // Eval sparse poly line_0p_1 step + coeff_9 * z^9 - let t50 = circuit_mul(t32, t49); - let t51 = circuit_mul(in0, in11); - let t52 = circuit_add(in10, t51); - let t53 = circuit_mul(t52, in9); // eval bn line by xNegOverY - let t54 = circuit_mul(in0, in13); - let t55 = circuit_add(in12, t54); - let t56 = circuit_mul(t55, in8); // eval bn line by yInv - let t57 = circuit_mul(in11, in9); // eval bn line by xNegOverY - let t58 = circuit_mul(in13, in8); // eval bn line by yInv - let t59 = circuit_mul(t53, in27); // Eval sparse poly line_1p_1 step coeff_1 * z^1 - let t60 = circuit_add(in1, t59); // Eval sparse poly line_1p_1 step + coeff_1 * z^1 - let t61 = circuit_mul(t56, t1); // Eval sparse poly line_1p_1 step coeff_3 * z^3 - let t62 = circuit_add(t60, t61); // Eval sparse poly line_1p_1 step + coeff_3 * z^3 - let t63 = circuit_mul(t57, t5); // Eval sparse poly line_1p_1 step coeff_7 * z^7 - let t64 = circuit_add(t62, t63); // Eval sparse poly line_1p_1 step + coeff_7 * z^7 - let t65 = circuit_mul(t58, t7); // Eval sparse poly line_1p_1 step coeff_9 * z^9 - let t66 = circuit_add(t64, t65); // Eval sparse poly line_1p_1 step + coeff_9 * z^9 - let t67 = circuit_mul(t50, t66); - let t68 = circuit_sub(t67, t31); - let t69 = circuit_mul(t33, t68); // ci * ((螤(i,k) (Pk(z)) - Ri(z)) - let t70 = circuit_add(t69, in29); + let (in17, in18) = (CE::> {}, CE::> {}); + let t0 = circuit_mul(in16, in16); // compute z^2 + let t1 = circuit_mul(t0, in16); // compute z^3 + let t2 = circuit_mul(t1, t1); // compute z^6 + let t3 = circuit_mul(t2, in16); // compute z^7 + let t4 = circuit_mul(t3, t0); // compute z^9 + let t5 = circuit_mul(in17, in17); + let t6 = circuit_mul(in15, in15); + let t7 = circuit_mul(in0, in5); + let t8 = circuit_add(in4, t7); + let t9 = circuit_mul(t8, in3); // eval bn line by xNegOverY + let t10 = circuit_mul(in0, in7); + let t11 = circuit_add(in6, t10); + let t12 = circuit_mul(t11, in2); // eval bn line by yInv + let t13 = circuit_mul(in5, in3); // eval bn line by xNegOverY + let t14 = circuit_mul(in7, in2); // eval bn line by yInv + let t15 = circuit_mul(t9, in16); // Eval sparse poly line_0p_1 step coeff_1 * z^1 + let t16 = circuit_add(in1, t15); // Eval sparse poly line_0p_1 step + coeff_1 * z^1 + let t17 = circuit_mul(t12, t1); // Eval sparse poly line_0p_1 step coeff_3 * z^3 + let t18 = circuit_add(t16, t17); // Eval sparse poly line_0p_1 step + coeff_3 * z^3 + let t19 = circuit_mul(t13, t3); // Eval sparse poly line_0p_1 step coeff_7 * z^7 + let t20 = circuit_add(t18, t19); // Eval sparse poly line_0p_1 step + coeff_7 * z^7 + let t21 = circuit_mul(t14, t4); // Eval sparse poly line_0p_1 step coeff_9 * z^9 + let t22 = circuit_add(t20, t21); // Eval sparse poly line_0p_1 step + coeff_9 * z^9 + let t23 = circuit_mul(t5, t22); + let t24 = circuit_mul(in0, in11); + let t25 = circuit_add(in10, t24); + let t26 = circuit_mul(t25, in9); // eval bn line by xNegOverY + let t27 = circuit_mul(in0, in13); + let t28 = circuit_add(in12, t27); + let t29 = circuit_mul(t28, in8); // eval bn line by yInv + let t30 = circuit_mul(in11, in9); // eval bn line by xNegOverY + let t31 = circuit_mul(in13, in8); // eval bn line by yInv + let t32 = circuit_mul(t26, in16); // Eval sparse poly line_1p_1 step coeff_1 * z^1 + let t33 = circuit_add(in1, t32); // Eval sparse poly line_1p_1 step + coeff_1 * z^1 + let t34 = circuit_mul(t29, t1); // Eval sparse poly line_1p_1 step coeff_3 * z^3 + let t35 = circuit_add(t33, t34); // Eval sparse poly line_1p_1 step + coeff_3 * z^3 + let t36 = circuit_mul(t30, t3); // Eval sparse poly line_1p_1 step coeff_7 * z^7 + let t37 = circuit_add(t35, t36); // Eval sparse poly line_1p_1 step + coeff_7 * z^7 + let t38 = circuit_mul(t31, t4); // Eval sparse poly line_1p_1 step coeff_9 * z^9 + let t39 = circuit_add(t37, t38); // Eval sparse poly line_1p_1 step + coeff_9 * z^9 + let t40 = circuit_mul(t23, t39); + let t41 = circuit_sub(t40, in14); + let t42 = circuit_mul(t6, t41); // ci * ((螤(i,k) (Pk(z)) - Ri(z)) + let t43 = circuit_add(t42, in18); let modulus = TryInto::< _, CircuitModulus >::try_into([0x6871ca8d3c208c16d87cfd47, 0xb85045b68181585d97816a91, 0x30644e72e131a029, 0x0]) .unwrap(); // BN254 prime field modulus - let mut circuit_inputs = (t70, t33, t31,).new_inputs(); + let mut circuit_inputs = (t43, t6,).new_inputs(); // Prefill constants: circuit_inputs = circuit_inputs - .next( + .next_2( [0x6871ca8d3c208c16d87cfd3e, 0xb85045b68181585d97816a91, 0x30644e72e131a029, 0x0] ); // in0 - circuit_inputs = circuit_inputs.next([0x1, 0x0, 0x0, 0x0]); // in1 + circuit_inputs = circuit_inputs.next_2([0x1, 0x0, 0x0, 0x0]); // in1 // Fill inputs: - circuit_inputs = circuit_inputs.next(yInv_0); // in2 - circuit_inputs = circuit_inputs.next(xNegOverY_0); // in3 - circuit_inputs = circuit_inputs.next(G2_line_0.r0a0); // in4 - circuit_inputs = circuit_inputs.next(G2_line_0.r0a1); // in5 - circuit_inputs = circuit_inputs.next(G2_line_0.r1a0); // in6 - circuit_inputs = circuit_inputs.next(G2_line_0.r1a1); // in7 - circuit_inputs = circuit_inputs.next(yInv_1); // in8 - circuit_inputs = circuit_inputs.next(xNegOverY_1); // in9 - circuit_inputs = circuit_inputs.next(G2_line_1.r0a0); // in10 - circuit_inputs = circuit_inputs.next(G2_line_1.r0a1); // in11 - circuit_inputs = circuit_inputs.next(G2_line_1.r1a0); // in12 - circuit_inputs = circuit_inputs.next(G2_line_1.r1a1); // in13 - circuit_inputs = circuit_inputs.next(R_i.w0); // in14 - circuit_inputs = circuit_inputs.next(R_i.w1); // in15 - circuit_inputs = circuit_inputs.next(R_i.w2); // in16 - circuit_inputs = circuit_inputs.next(R_i.w3); // in17 - circuit_inputs = circuit_inputs.next(R_i.w4); // in18 - circuit_inputs = circuit_inputs.next(R_i.w5); // in19 - circuit_inputs = circuit_inputs.next(R_i.w6); // in20 - circuit_inputs = circuit_inputs.next(R_i.w7); // in21 - circuit_inputs = circuit_inputs.next(R_i.w8); // in22 - circuit_inputs = circuit_inputs.next(R_i.w9); // in23 - circuit_inputs = circuit_inputs.next(R_i.w10); // in24 - circuit_inputs = circuit_inputs.next(R_i.w11); // in25 - circuit_inputs = circuit_inputs.next(c0); // in26 - circuit_inputs = circuit_inputs.next(z); // in27 - circuit_inputs = circuit_inputs.next(c_inv_of_z); // in28 - circuit_inputs = circuit_inputs.next(previous_lhs); // in29 + circuit_inputs = circuit_inputs.next_2(yInv_0); // in2 + circuit_inputs = circuit_inputs.next_2(xNegOverY_0); // in3 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r0a0); // in4 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r0a1); // in5 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r1a0); // in6 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r1a1); // in7 + circuit_inputs = circuit_inputs.next_2(yInv_1); // in8 + circuit_inputs = circuit_inputs.next_2(xNegOverY_1); // in9 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r0a0); // in10 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r0a1); // in11 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r1a0); // in12 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r1a1); // in13 + circuit_inputs = circuit_inputs.next_2(R_i_of_z); // in14 + circuit_inputs = circuit_inputs.next_2(c0); // in15 + circuit_inputs = circuit_inputs.next_2(z); // in16 + circuit_inputs = circuit_inputs.next_2(c_inv_of_z); // in17 + circuit_inputs = circuit_inputs.next_2(previous_lhs); // in18 - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; - let new_lhs: u384 = outputs.get_output(t70); - let c_i: u384 = outputs.get_output(t33); - let f_i_plus_one_of_z: u384 = outputs.get_output(t31); - return (new_lhs, c_i, f_i_plus_one_of_z); + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); + let new_lhs: u384 = outputs.get_output(t43); + let c_i: u384 = outputs.get_output(t6); + return (new_lhs, c_i); } fn run_BN254_MP_CHECK_INIT_BIT_3P_2F_circuit( yInv_0: u384, @@ -6174,12 +5483,12 @@ fn run_BN254_MP_CHECK_INIT_BIT_3P_2F_circuit( yInv_2: u384, xNegOverY_2: u384, Q_2: G2Point, - R_i: E12D, + R_i_of_z: u384, c0: u384, z: u384, c_inv_of_z: u384, previous_lhs: u384 -) -> (G2Point, u384, u384, u384) { +) -> (G2Point, u384, u384) { // CONSTANT stack let in0 = CE::> {}; // -0x9 % p let in1 = CE::> {}; // 0x1 @@ -6195,213 +5504,167 @@ fn run_BN254_MP_CHECK_INIT_BIT_3P_2F_circuit( let (in17, in18, in19) = (CE::> {}, CE::> {}, CE::> {}); let (in20, in21, in22) = (CE::> {}, CE::> {}, CE::> {}); let (in23, in24, in25) = (CE::> {}, CE::> {}, CE::> {}); - let (in26, in27, in28) = (CE::> {}, CE::> {}, CE::> {}); - let (in29, in30, in31) = (CE::> {}, CE::> {}, CE::> {}); - let (in32, in33, in34) = (CE::> {}, CE::> {}, CE::> {}); - let (in35, in36, in37) = (CE::> {}, CE::> {}, CE::> {}); - let in38 = CE::> {}; - let t0 = circuit_mul(in36, in36); // Compute z^2 - let t1 = circuit_mul(t0, in36); // Compute z^3 - let t2 = circuit_mul(t1, in36); // Compute z^4 - let t3 = circuit_mul(t2, in36); // Compute z^5 - let t4 = circuit_mul(t3, in36); // Compute z^6 - let t5 = circuit_mul(t4, in36); // Compute z^7 - let t6 = circuit_mul(t5, in36); // Compute z^8 - let t7 = circuit_mul(t6, in36); // Compute z^9 - let t8 = circuit_mul(t7, in36); // Compute z^10 - let t9 = circuit_mul(t8, in36); // Compute z^11 - let t10 = circuit_mul(in24, in36); // Eval R step coeff_1 * z^1 - let t11 = circuit_add(in23, t10); // Eval R step + (coeff_1 * z^1) - let t12 = circuit_mul(in25, t0); // Eval R step coeff_2 * z^2 - let t13 = circuit_add(t11, t12); // Eval R step + (coeff_2 * z^2) - let t14 = circuit_mul(in26, t1); // Eval R step coeff_3 * z^3 - let t15 = circuit_add(t13, t14); // Eval R step + (coeff_3 * z^3) - let t16 = circuit_mul(in27, t2); // Eval R step coeff_4 * z^4 - let t17 = circuit_add(t15, t16); // Eval R step + (coeff_4 * z^4) - let t18 = circuit_mul(in28, t3); // Eval R step coeff_5 * z^5 - let t19 = circuit_add(t17, t18); // Eval R step + (coeff_5 * z^5) - let t20 = circuit_mul(in29, t4); // Eval R step coeff_6 * z^6 - let t21 = circuit_add(t19, t20); // Eval R step + (coeff_6 * z^6) - let t22 = circuit_mul(in30, t5); // Eval R step coeff_7 * z^7 - let t23 = circuit_add(t21, t22); // Eval R step + (coeff_7 * z^7) - let t24 = circuit_mul(in31, t6); // Eval R step coeff_8 * z^8 - let t25 = circuit_add(t23, t24); // Eval R step + (coeff_8 * z^8) - let t26 = circuit_mul(in32, t7); // Eval R step coeff_9 * z^9 - let t27 = circuit_add(t25, t26); // Eval R step + (coeff_9 * z^9) - let t28 = circuit_mul(in33, t8); // Eval R step coeff_10 * z^10 - let t29 = circuit_add(t27, t28); // Eval R step + (coeff_10 * z^10) - let t30 = circuit_mul(in34, t9); // Eval R step coeff_11 * z^11 - let t31 = circuit_add(t29, t30); // Eval R step + (coeff_11 * z^11) - let t32 = circuit_mul(in37, in37); - let t33 = circuit_mul(in35, in35); - let t34 = circuit_mul(in0, in8); - let t35 = circuit_add(in7, t34); - let t36 = circuit_mul(t35, in6); // eval bn line by xNegOverY - let t37 = circuit_mul(in0, in10); - let t38 = circuit_add(in9, t37); - let t39 = circuit_mul(t38, in5); // eval bn line by yInv - let t40 = circuit_mul(in8, in6); // eval bn line by xNegOverY - let t41 = circuit_mul(in10, in5); // eval bn line by yInv - let t42 = circuit_mul(t36, in36); // Eval sparse poly line_0p_1 step coeff_1 * z^1 - let t43 = circuit_add(in1, t42); // Eval sparse poly line_0p_1 step + coeff_1 * z^1 - let t44 = circuit_mul(t39, t1); // Eval sparse poly line_0p_1 step coeff_3 * z^3 - let t45 = circuit_add(t43, t44); // Eval sparse poly line_0p_1 step + coeff_3 * z^3 - let t46 = circuit_mul(t40, t5); // Eval sparse poly line_0p_1 step coeff_7 * z^7 - let t47 = circuit_add(t45, t46); // Eval sparse poly line_0p_1 step + coeff_7 * z^7 - let t48 = circuit_mul(t41, t7); // Eval sparse poly line_0p_1 step coeff_9 * z^9 - let t49 = circuit_add(t47, t48); // Eval sparse poly line_0p_1 step + coeff_9 * z^9 - let t50 = circuit_mul(t32, t49); - let t51 = circuit_mul(in0, in14); - let t52 = circuit_add(in13, t51); - let t53 = circuit_mul(t52, in12); // eval bn line by xNegOverY - let t54 = circuit_mul(in0, in16); - let t55 = circuit_add(in15, t54); - let t56 = circuit_mul(t55, in11); // eval bn line by yInv - let t57 = circuit_mul(in14, in12); // eval bn line by xNegOverY - let t58 = circuit_mul(in16, in11); // eval bn line by yInv - let t59 = circuit_mul(t53, in36); // Eval sparse poly line_1p_1 step coeff_1 * z^1 - let t60 = circuit_add(in1, t59); // Eval sparse poly line_1p_1 step + coeff_1 * z^1 - let t61 = circuit_mul(t56, t1); // Eval sparse poly line_1p_1 step coeff_3 * z^3 - let t62 = circuit_add(t60, t61); // Eval sparse poly line_1p_1 step + coeff_3 * z^3 - let t63 = circuit_mul(t57, t5); // Eval sparse poly line_1p_1 step coeff_7 * z^7 - let t64 = circuit_add(t62, t63); // Eval sparse poly line_1p_1 step + coeff_7 * z^7 - let t65 = circuit_mul(t58, t7); // Eval sparse poly line_1p_1 step coeff_9 * z^9 - let t66 = circuit_add(t64, t65); // Eval sparse poly line_1p_1 step + coeff_9 * z^9 - let t67 = circuit_mul(t50, t66); - let t68 = circuit_add(in19, in20); // Doubling slope numerator start - let t69 = circuit_sub(in19, in20); - let t70 = circuit_mul(t68, t69); - let t71 = circuit_mul(in19, in20); - let t72 = circuit_mul(t70, in2); - let t73 = circuit_mul(t71, in3); // Doubling slope numerator end - let t74 = circuit_add(in21, in21); // Fp2 add coeff 0/1 - let t75 = circuit_add(in22, in22); // Fp2 add coeff 1/1 - let t76 = circuit_mul(t74, t74); // Fp2 Div x/y start : Fp2 Inv y start - let t77 = circuit_mul(t75, t75); - let t78 = circuit_add(t76, t77); - let t79 = circuit_inverse(t78); - let t80 = circuit_mul(t74, t79); // Fp2 Inv y real part end - let t81 = circuit_mul(t75, t79); - let t82 = circuit_sub(in4, t81); // Fp2 Inv y imag part end - let t83 = circuit_mul(t72, t80); // Fp2 mul start - let t84 = circuit_mul(t73, t82); - let t85 = circuit_sub(t83, t84); // Fp2 mul real part end - let t86 = circuit_mul(t72, t82); - let t87 = circuit_mul(t73, t80); - let t88 = circuit_add(t86, t87); // Fp2 mul imag part end - let t89 = circuit_add(t85, t88); - let t90 = circuit_sub(t85, t88); - let t91 = circuit_mul(t89, t90); - let t92 = circuit_mul(t85, t88); - let t93 = circuit_add(t92, t92); - let t94 = circuit_add(in19, in19); // Fp2 add coeff 0/1 - let t95 = circuit_add(in20, in20); // Fp2 add coeff 1/1 - let t96 = circuit_sub(t91, t94); // Fp2 sub coeff 0/1 - let t97 = circuit_sub(t93, t95); // Fp2 sub coeff 1/1 - let t98 = circuit_sub(in19, t96); // Fp2 sub coeff 0/1 - let t99 = circuit_sub(in20, t97); // Fp2 sub coeff 1/1 - let t100 = circuit_mul(t85, t98); // Fp2 mul start - let t101 = circuit_mul(t88, t99); - let t102 = circuit_sub(t100, t101); // Fp2 mul real part end - let t103 = circuit_mul(t85, t99); - let t104 = circuit_mul(t88, t98); - let t105 = circuit_add(t103, t104); // Fp2 mul imag part end - let t106 = circuit_sub(t102, in21); // Fp2 sub coeff 0/1 - let t107 = circuit_sub(t105, in22); // Fp2 sub coeff 1/1 - let t108 = circuit_mul(t85, in19); // Fp2 mul start - let t109 = circuit_mul(t88, in20); - let t110 = circuit_sub(t108, t109); // Fp2 mul real part end - let t111 = circuit_mul(t85, in20); - let t112 = circuit_mul(t88, in19); - let t113 = circuit_add(t111, t112); // Fp2 mul imag part end - let t114 = circuit_sub(t110, in21); // Fp2 sub coeff 0/1 - let t115 = circuit_sub(t113, in22); // Fp2 sub coeff 1/1 - let t116 = circuit_mul(in0, t88); - let t117 = circuit_add(t85, t116); - let t118 = circuit_mul(t117, in18); // eval bn line by xNegOverY - let t119 = circuit_mul(in0, t115); - let t120 = circuit_add(t114, t119); - let t121 = circuit_mul(t120, in17); // eval bn line by yInv - let t122 = circuit_mul(t88, in18); // eval bn line by xNegOverY - let t123 = circuit_mul(t115, in17); // eval bn line by yInv - let t124 = circuit_mul(t118, in36); // Eval sparse poly line_2p_1 step coeff_1 * z^1 - let t125 = circuit_add(in1, t124); // Eval sparse poly line_2p_1 step + coeff_1 * z^1 - let t126 = circuit_mul(t121, t1); // Eval sparse poly line_2p_1 step coeff_3 * z^3 - let t127 = circuit_add(t125, t126); // Eval sparse poly line_2p_1 step + coeff_3 * z^3 - let t128 = circuit_mul(t122, t5); // Eval sparse poly line_2p_1 step coeff_7 * z^7 - let t129 = circuit_add(t127, t128); // Eval sparse poly line_2p_1 step + coeff_7 * z^7 - let t130 = circuit_mul(t123, t7); // Eval sparse poly line_2p_1 step coeff_9 * z^9 - let t131 = circuit_add(t129, t130); // Eval sparse poly line_2p_1 step + coeff_9 * z^9 - let t132 = circuit_mul(t67, t131); - let t133 = circuit_sub(t132, t31); - let t134 = circuit_mul(t33, t133); // ci * ((螤(i,k) (Pk(z)) - Ri(z)) - let t135 = circuit_add(t134, in38); + let (in26, in27) = (CE::> {}, CE::> {}); + let t0 = circuit_mul(in25, in25); // compute z^2 + let t1 = circuit_mul(t0, in25); // compute z^3 + let t2 = circuit_mul(t1, t1); // compute z^6 + let t3 = circuit_mul(t2, in25); // compute z^7 + let t4 = circuit_mul(t3, t0); // compute z^9 + let t5 = circuit_mul(in26, in26); + let t6 = circuit_mul(in24, in24); + let t7 = circuit_mul(in0, in8); + let t8 = circuit_add(in7, t7); + let t9 = circuit_mul(t8, in6); // eval bn line by xNegOverY + let t10 = circuit_mul(in0, in10); + let t11 = circuit_add(in9, t10); + let t12 = circuit_mul(t11, in5); // eval bn line by yInv + let t13 = circuit_mul(in8, in6); // eval bn line by xNegOverY + let t14 = circuit_mul(in10, in5); // eval bn line by yInv + let t15 = circuit_mul(t9, in25); // Eval sparse poly line_0p_1 step coeff_1 * z^1 + let t16 = circuit_add(in1, t15); // Eval sparse poly line_0p_1 step + coeff_1 * z^1 + let t17 = circuit_mul(t12, t1); // Eval sparse poly line_0p_1 step coeff_3 * z^3 + let t18 = circuit_add(t16, t17); // Eval sparse poly line_0p_1 step + coeff_3 * z^3 + let t19 = circuit_mul(t13, t3); // Eval sparse poly line_0p_1 step coeff_7 * z^7 + let t20 = circuit_add(t18, t19); // Eval sparse poly line_0p_1 step + coeff_7 * z^7 + let t21 = circuit_mul(t14, t4); // Eval sparse poly line_0p_1 step coeff_9 * z^9 + let t22 = circuit_add(t20, t21); // Eval sparse poly line_0p_1 step + coeff_9 * z^9 + let t23 = circuit_mul(t5, t22); + let t24 = circuit_mul(in0, in14); + let t25 = circuit_add(in13, t24); + let t26 = circuit_mul(t25, in12); // eval bn line by xNegOverY + let t27 = circuit_mul(in0, in16); + let t28 = circuit_add(in15, t27); + let t29 = circuit_mul(t28, in11); // eval bn line by yInv + let t30 = circuit_mul(in14, in12); // eval bn line by xNegOverY + let t31 = circuit_mul(in16, in11); // eval bn line by yInv + let t32 = circuit_mul(t26, in25); // Eval sparse poly line_1p_1 step coeff_1 * z^1 + let t33 = circuit_add(in1, t32); // Eval sparse poly line_1p_1 step + coeff_1 * z^1 + let t34 = circuit_mul(t29, t1); // Eval sparse poly line_1p_1 step coeff_3 * z^3 + let t35 = circuit_add(t33, t34); // Eval sparse poly line_1p_1 step + coeff_3 * z^3 + let t36 = circuit_mul(t30, t3); // Eval sparse poly line_1p_1 step coeff_7 * z^7 + let t37 = circuit_add(t35, t36); // Eval sparse poly line_1p_1 step + coeff_7 * z^7 + let t38 = circuit_mul(t31, t4); // Eval sparse poly line_1p_1 step coeff_9 * z^9 + let t39 = circuit_add(t37, t38); // Eval sparse poly line_1p_1 step + coeff_9 * z^9 + let t40 = circuit_mul(t23, t39); + let t41 = circuit_add(in19, in20); // Doubling slope numerator start + let t42 = circuit_sub(in19, in20); + let t43 = circuit_mul(t41, t42); + let t44 = circuit_mul(in19, in20); + let t45 = circuit_mul(t43, in2); + let t46 = circuit_mul(t44, in3); // Doubling slope numerator end + let t47 = circuit_add(in21, in21); // Fp2 add coeff 0/1 + let t48 = circuit_add(in22, in22); // Fp2 add coeff 1/1 + let t49 = circuit_mul(t47, t47); // Fp2 Div x/y start : Fp2 Inv y start + let t50 = circuit_mul(t48, t48); + let t51 = circuit_add(t49, t50); + let t52 = circuit_inverse(t51); + let t53 = circuit_mul(t47, t52); // Fp2 Inv y real part end + let t54 = circuit_mul(t48, t52); + let t55 = circuit_sub(in4, t54); // Fp2 Inv y imag part end + let t56 = circuit_mul(t45, t53); // Fp2 mul start + let t57 = circuit_mul(t46, t55); + let t58 = circuit_sub(t56, t57); // Fp2 mul real part end + let t59 = circuit_mul(t45, t55); + let t60 = circuit_mul(t46, t53); + let t61 = circuit_add(t59, t60); // Fp2 mul imag part end + let t62 = circuit_add(t58, t61); + let t63 = circuit_sub(t58, t61); + let t64 = circuit_mul(t62, t63); + let t65 = circuit_mul(t58, t61); + let t66 = circuit_add(t65, t65); + let t67 = circuit_add(in19, in19); // Fp2 add coeff 0/1 + let t68 = circuit_add(in20, in20); // Fp2 add coeff 1/1 + let t69 = circuit_sub(t64, t67); // Fp2 sub coeff 0/1 + let t70 = circuit_sub(t66, t68); // Fp2 sub coeff 1/1 + let t71 = circuit_sub(in19, t69); // Fp2 sub coeff 0/1 + let t72 = circuit_sub(in20, t70); // Fp2 sub coeff 1/1 + let t73 = circuit_mul(t58, t71); // Fp2 mul start + let t74 = circuit_mul(t61, t72); + let t75 = circuit_sub(t73, t74); // Fp2 mul real part end + let t76 = circuit_mul(t58, t72); + let t77 = circuit_mul(t61, t71); + let t78 = circuit_add(t76, t77); // Fp2 mul imag part end + let t79 = circuit_sub(t75, in21); // Fp2 sub coeff 0/1 + let t80 = circuit_sub(t78, in22); // Fp2 sub coeff 1/1 + let t81 = circuit_mul(t58, in19); // Fp2 mul start + let t82 = circuit_mul(t61, in20); + let t83 = circuit_sub(t81, t82); // Fp2 mul real part end + let t84 = circuit_mul(t58, in20); + let t85 = circuit_mul(t61, in19); + let t86 = circuit_add(t84, t85); // Fp2 mul imag part end + let t87 = circuit_sub(t83, in21); // Fp2 sub coeff 0/1 + let t88 = circuit_sub(t86, in22); // Fp2 sub coeff 1/1 + let t89 = circuit_mul(in0, t61); + let t90 = circuit_add(t58, t89); + let t91 = circuit_mul(t90, in18); // eval bn line by xNegOverY + let t92 = circuit_mul(in0, t88); + let t93 = circuit_add(t87, t92); + let t94 = circuit_mul(t93, in17); // eval bn line by yInv + let t95 = circuit_mul(t61, in18); // eval bn line by xNegOverY + let t96 = circuit_mul(t88, in17); // eval bn line by yInv + let t97 = circuit_mul(t91, in25); // Eval sparse poly line_2p_1 step coeff_1 * z^1 + let t98 = circuit_add(in1, t97); // Eval sparse poly line_2p_1 step + coeff_1 * z^1 + let t99 = circuit_mul(t94, t1); // Eval sparse poly line_2p_1 step coeff_3 * z^3 + let t100 = circuit_add(t98, t99); // Eval sparse poly line_2p_1 step + coeff_3 * z^3 + let t101 = circuit_mul(t95, t3); // Eval sparse poly line_2p_1 step coeff_7 * z^7 + let t102 = circuit_add(t100, t101); // Eval sparse poly line_2p_1 step + coeff_7 * z^7 + let t103 = circuit_mul(t96, t4); // Eval sparse poly line_2p_1 step coeff_9 * z^9 + let t104 = circuit_add(t102, t103); // Eval sparse poly line_2p_1 step + coeff_9 * z^9 + let t105 = circuit_mul(t40, t104); + let t106 = circuit_sub(t105, in23); + let t107 = circuit_mul(t6, t106); // ci * ((螤(i,k) (Pk(z)) - Ri(z)) + let t108 = circuit_add(t107, in27); let modulus = TryInto::< _, CircuitModulus >::try_into([0x6871ca8d3c208c16d87cfd47, 0xb85045b68181585d97816a91, 0x30644e72e131a029, 0x0]) .unwrap(); // BN254 prime field modulus - let mut circuit_inputs = (t96, t97, t106, t107, t135, t33, t31,).new_inputs(); + let mut circuit_inputs = (t69, t70, t79, t80, t108, t6,).new_inputs(); // Prefill constants: circuit_inputs = circuit_inputs - .next( + .next_2( [0x6871ca8d3c208c16d87cfd3e, 0xb85045b68181585d97816a91, 0x30644e72e131a029, 0x0] ); // in0 - circuit_inputs = circuit_inputs.next([0x1, 0x0, 0x0, 0x0]); // in1 - circuit_inputs = circuit_inputs.next([0x3, 0x0, 0x0, 0x0]); // in2 - circuit_inputs = circuit_inputs.next([0x6, 0x0, 0x0, 0x0]); // in3 - circuit_inputs = circuit_inputs.next([0x0, 0x0, 0x0, 0x0]); // in4 + circuit_inputs = circuit_inputs.next_2([0x1, 0x0, 0x0, 0x0]); // in1 + circuit_inputs = circuit_inputs.next_2([0x3, 0x0, 0x0, 0x0]); // in2 + circuit_inputs = circuit_inputs.next_2([0x6, 0x0, 0x0, 0x0]); // in3 + circuit_inputs = circuit_inputs.next_2([0x0, 0x0, 0x0, 0x0]); // in4 // Fill inputs: - circuit_inputs = circuit_inputs.next(yInv_0); // in5 - circuit_inputs = circuit_inputs.next(xNegOverY_0); // in6 - circuit_inputs = circuit_inputs.next(G2_line_0.r0a0); // in7 - circuit_inputs = circuit_inputs.next(G2_line_0.r0a1); // in8 - circuit_inputs = circuit_inputs.next(G2_line_0.r1a0); // in9 - circuit_inputs = circuit_inputs.next(G2_line_0.r1a1); // in10 - circuit_inputs = circuit_inputs.next(yInv_1); // in11 - circuit_inputs = circuit_inputs.next(xNegOverY_1); // in12 - circuit_inputs = circuit_inputs.next(G2_line_1.r0a0); // in13 - circuit_inputs = circuit_inputs.next(G2_line_1.r0a1); // in14 - circuit_inputs = circuit_inputs.next(G2_line_1.r1a0); // in15 - circuit_inputs = circuit_inputs.next(G2_line_1.r1a1); // in16 - circuit_inputs = circuit_inputs.next(yInv_2); // in17 - circuit_inputs = circuit_inputs.next(xNegOverY_2); // in18 - circuit_inputs = circuit_inputs.next(Q_2.x0); // in19 - circuit_inputs = circuit_inputs.next(Q_2.x1); // in20 - circuit_inputs = circuit_inputs.next(Q_2.y0); // in21 - circuit_inputs = circuit_inputs.next(Q_2.y1); // in22 - circuit_inputs = circuit_inputs.next(R_i.w0); // in23 - circuit_inputs = circuit_inputs.next(R_i.w1); // in24 - circuit_inputs = circuit_inputs.next(R_i.w2); // in25 - circuit_inputs = circuit_inputs.next(R_i.w3); // in26 - circuit_inputs = circuit_inputs.next(R_i.w4); // in27 - circuit_inputs = circuit_inputs.next(R_i.w5); // in28 - circuit_inputs = circuit_inputs.next(R_i.w6); // in29 - circuit_inputs = circuit_inputs.next(R_i.w7); // in30 - circuit_inputs = circuit_inputs.next(R_i.w8); // in31 - circuit_inputs = circuit_inputs.next(R_i.w9); // in32 - circuit_inputs = circuit_inputs.next(R_i.w10); // in33 - circuit_inputs = circuit_inputs.next(R_i.w11); // in34 - circuit_inputs = circuit_inputs.next(c0); // in35 - circuit_inputs = circuit_inputs.next(z); // in36 - circuit_inputs = circuit_inputs.next(c_inv_of_z); // in37 - circuit_inputs = circuit_inputs.next(previous_lhs); // in38 + circuit_inputs = circuit_inputs.next_2(yInv_0); // in5 + circuit_inputs = circuit_inputs.next_2(xNegOverY_0); // in6 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r0a0); // in7 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r0a1); // in8 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r1a0); // in9 + circuit_inputs = circuit_inputs.next_2(G2_line_0.r1a1); // in10 + circuit_inputs = circuit_inputs.next_2(yInv_1); // in11 + circuit_inputs = circuit_inputs.next_2(xNegOverY_1); // in12 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r0a0); // in13 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r0a1); // in14 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r1a0); // in15 + circuit_inputs = circuit_inputs.next_2(G2_line_1.r1a1); // in16 + circuit_inputs = circuit_inputs.next_2(yInv_2); // in17 + circuit_inputs = circuit_inputs.next_2(xNegOverY_2); // in18 + circuit_inputs = circuit_inputs.next_2(Q_2.x0); // in19 + circuit_inputs = circuit_inputs.next_2(Q_2.x1); // in20 + circuit_inputs = circuit_inputs.next_2(Q_2.y0); // in21 + circuit_inputs = circuit_inputs.next_2(Q_2.y1); // in22 + circuit_inputs = circuit_inputs.next_2(R_i_of_z); // in23 + circuit_inputs = circuit_inputs.next_2(c0); // in24 + circuit_inputs = circuit_inputs.next_2(z); // in25 + circuit_inputs = circuit_inputs.next_2(c_inv_of_z); // in26 + circuit_inputs = circuit_inputs.next_2(previous_lhs); // in27 - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); let Q0: G2Point = G2Point { - x0: outputs.get_output(t96), - x1: outputs.get_output(t97), - y0: outputs.get_output(t106), - y1: outputs.get_output(t107) + x0: outputs.get_output(t69), + x1: outputs.get_output(t70), + y0: outputs.get_output(t79), + y1: outputs.get_output(t80) }; - let new_lhs: u384 = outputs.get_output(t135); - let c_i: u384 = outputs.get_output(t33); - let f_i_plus_one_of_z: u384 = outputs.get_output(t31); - return (Q0, new_lhs, c_i, f_i_plus_one_of_z); + let new_lhs: u384 = outputs.get_output(t108); + let c_i: u384 = outputs.get_output(t6); + return (Q0, new_lhs, c_i); } fn run_BN254_MP_CHECK_PREPARE_LAMBDA_ROOT_circuit( lambda_root: E12D, @@ -6732,214 +5995,45 @@ fn run_BN254_MP_CHECK_PREPARE_LAMBDA_ROOT_circuit( let mut circuit_inputs = (t31, t41, t63, t66, t164, t186, t208,).new_inputs(); // Prefill constants: - circuit_inputs = circuit_inputs.next([0x1, 0x0, 0x0, 0x0]); // in0 - circuit_inputs = circuit_inputs.next([0x12, 0x0, 0x0, 0x0]); // in1 - circuit_inputs = circuit_inputs - .next( - [0xfde6a43f5daa971f3fa65955, 0x1b2522ec5eb28ded6895e1cd, 0x1d8c8daef3eee1e8, 0x0] - ); // in2 - circuit_inputs = circuit_inputs - .next( - [0x42b29c567e9c385ce480a71a, 0x4e34e2ac06ead4000d14d1e2, 0x217e400dc9351e77, 0x0] - ); // in3 - circuit_inputs = circuit_inputs - .next( - [0xfd28d102c0d147b2f4d521a7, 0x8481d22c6934ce844d72f250, 0x242b719062f6737b, 0x0] - ); // in4 - circuit_inputs = circuit_inputs - .next( - [0x43ac198484b8d9094aa82536, 0x1b9c22d81246ffc2e794e176, 0x359809094bd5c8e, 0x0] - ); // in5 - circuit_inputs = circuit_inputs - .next( - [0x6df7b44cbb259ef7cb58d5ed, 0xdd4ef1e69a0c1f0dd2949fa, 0x21436d48fcb50cc6, 0x0] - ); // in6 - circuit_inputs = circuit_inputs - .next( - [0x8a4f4f0831364cf35f78f771, 0x38a4311a86919d9c7c6c15f8, 0x18857a58f3b5bb30, 0x0] - ); // in7 - circuit_inputs = circuit_inputs - .next( - [0x6fc008e7d6998c82f7fc048b, 0x62b7adefd44038ab3c0bbad9, 0x2c84bbad27c36715, 0x0] - ); // in8 - circuit_inputs = circuit_inputs - .next( - [0xa8697e0c9c36d8ca3339a7b5, 0x6d1eab6fcd18b99ad4afd096, 0xc33b1c70e4fd11b, 0x0] - ); // in9 - circuit_inputs = circuit_inputs - .next( - [0x5371c546d428780a6e3dcfa8, 0x13fe08bea73305ff6bdac77c, 0x1b007294a55accce, 0x0] - ); // in10 - circuit_inputs = circuit_inputs - .next( - [0x4f501fe811493d72543a3977, 0xefe88dd8e6965b3adae92c97, 0x215d42e7ac7bd17c, 0x0] - ); // in11 - circuit_inputs = circuit_inputs - .next( - [0x6871ca8d3c208c16d87cfd46, 0xb85045b68181585d97816a91, 0x30644e72e131a029, 0x0] - ); // in12 - circuit_inputs = circuit_inputs - .next( - [0x8eeec7e5ca5cf05f80f362ac, 0xa6327cfe12150b8e74799277, 0x246996f3b4fae7e6, 0x0] - ); // in13 - circuit_inputs = circuit_inputs - .next( - [0x6a8b264dde75f4f798d6a3f2, 0x9d2b22ca22ceca702eeb88c3, 0x12d7c0c3ed42be41, 0x0] - ); // in14 - circuit_inputs = circuit_inputs - .next( - [0xb7c9dce1665d51c640fcba2, 0x4ba4cc8bd75a079432ae2a1d, 0x16c9e55061ebae20, 0x0] - ); // in15 - circuit_inputs = circuit_inputs - .next( - [0x6b48f98a7b4f4463e3a7dba0, 0x33ce738a184c89d94a0e7840, 0xc38dce27e3b2cae, 0x0] - ); // in16 - circuit_inputs = circuit_inputs - .next( - [0x8fa25bd282d37f632623b0e3, 0x704b5a7ec796f2b21807dc9, 0x7c03cbcac41049a, 0x0] - ); // in17 - circuit_inputs = circuit_inputs - .next( - [0xfa7a164080faed1f0d24275a, 0xaa7b569817e0966cba582096, 0xf20e129e47c9363, 0x0] - ); // in18 - circuit_inputs = circuit_inputs - .next( - [0x1bdec763c13b4711cd2b8126, 0x9f3a80b03b0b1c923685d2ea, 0x2c145edbe7fd8aee, 0x0] - ); // in19 - circuit_inputs = circuit_inputs - .next( - [0xf8b1c1a56586ff93e080f8bc, 0x559897c6ad411fb25b75afb7, 0x3df92c5b96e3914, 0x0] - ); // in20 - circuit_inputs = circuit_inputs - .next( - [0x678e2ac024c6b8ee6e0c2c4b, 0xa27fb246c7729f7db080cb99, 0x12acf2ca76fd0675, 0x0] - ); // in21 - circuit_inputs = circuit_inputs - .next( - [0x1500054667f8140c6a3f2d9f, 0xa4523cf7da4e525e2ba6a315, 0x1563dbde3bd6d35b, 0x0] - ); // in22 - circuit_inputs = circuit_inputs - .next( - [0xbb966e3de4bd44e5607cfd49, 0x5e6dd9e7e0acccb0c28f069f, 0x30644e72e131a029, 0x0] - ); // in23 - circuit_inputs = circuit_inputs - .next( - [0xbb966e3de4bd44e5607cfd48, 0x5e6dd9e7e0acccb0c28f069f, 0x30644e72e131a029, 0x0] - ); // in24 - circuit_inputs = circuit_inputs - .next([0xacdb5c4f5763473177fffffe, 0x59e26bcea0d48bacd4f263f1, 0x0, 0x0]); // in25 - circuit_inputs = circuit_inputs - .next([0xacdb5c4f5763473177ffffff, 0x59e26bcea0d48bacd4f263f1, 0x0, 0x0]); // in26 - circuit_inputs = circuit_inputs - .next( - [0x67dfc8fabd3581ad840ddd76, 0xb2bdfa8fef85fa07122bde8d, 0x13d0c369615f7bb0, 0x0] - ); // in27 - circuit_inputs = circuit_inputs - .next( - [0xac285af5685d3f90eacf7a66, 0xfc2bf531eb331a053a35744c, 0x18a0f4219f4fdff6, 0x0] - ); // in28 - circuit_inputs = circuit_inputs - .next( - [0x64e2b5a5bf22f67654883ae6, 0x79c3e050c9ca2a428908a812, 0xc3a5e9c462a6547, 0x0] - ); // in29 - circuit_inputs = circuit_inputs - .next( - [0x345582cc92fd973c74bd77f4, 0x5bdd2055c255cf9d9e08c1d9, 0x2ce02aa5f9bf8cd6, 0x0] - ); // in30 - circuit_inputs = circuit_inputs - .next( - [0xde227b850aea3f23790405d6, 0x7fac149bfaefbac11b155498, 0x17ded419ed7be4f9, 0x0] - ); // in31 - circuit_inputs = circuit_inputs - .next( - [0x4150a79753fb0cd31cc99cc0, 0x2fb81a8dccd8a9b4441d64f3, 0x1bfe7b214c029424, 0x0] - ); // in32 - circuit_inputs = circuit_inputs - .next( - [0x9efaf0f0f1a228f0d5662fbd, 0xd15da0ec97a9b8346513297b, 0x697b9c523e0390e, 0x0] - ); // in33 - circuit_inputs = circuit_inputs - .next( - [0x182d2db0c413901c32b0c6fe, 0xb5186d6ac4c723b85d3f78a3, 0x7a0e052f2b1c443, 0x0] - ); // in34 - circuit_inputs = circuit_inputs - .next( - [0x39c0d06b220500933945267f, 0x5dc79824a3792597356c892c, 0x1b76a37fba85f3cd, 0x0] - ); // in35 - circuit_inputs = circuit_inputs - .next( - [0x97d439ec7694aa2bf4c0c101, 0x6cbeee33576139d7f03a5e3, 0xabf8b60be77d73, 0x0] - ); // in36 - circuit_inputs = circuit_inputs - .next( - [0x9201927eeb0a69546f1fd1, 0x5924b2691fb5e5685558c04, 0x1c938b097fd22479, 0x0] - ); // in37 - circuit_inputs = circuit_inputs - .next( - [0x98ff2631380cab2baaa586de, 0xa9f30e6dec26094f0fdf31bf, 0x4f1de41b3d1766f, 0x0] - ); // in38 - circuit_inputs = circuit_inputs - .next( - [0x38f14e77cfd95a083f4c261, 0x3e8c6565b7b72e1b0e78c27f, 0x2429efd69b073ae2, 0x0] - ); // in39 - circuit_inputs = circuit_inputs - .next( - [0xd8cf6ebab94d0cb3b2594c64, 0xb14b900e9507e9327600ecc7, 0x28a411b634f09b8f, 0x0] - ); // in40 - circuit_inputs = circuit_inputs - .next( - [0x737f96e55fe3ed9d730c239f, 0xfeb0f6ef0cd21d04a44a9e08, 0x23d5e999e1910a12, 0x0] - ); // in41 - circuit_inputs = circuit_inputs - .next( - [0x272122f5e8257f43bbb36087, 0x88982b28b4a8aea95364059e, 0x1465d351952f0c05, 0x0] - ); // in42 - circuit_inputs = circuit_inputs - .next( - [0x200280211f25041384282499, 0x9fb1b2282a48633d3e2ddaea, 0x16db366a59b1dd0b, 0x0] - ); // in43 + circuit_inputs = circuit_inputs - .next( - [0x50449cdc780cfbfaa5cc3649, 0x337d84bbcba34a53a41f1ee, 0x28c36e1fee7fdbe6, 0x0] - ); // in44 + .next_span(MP_CHECK_PREPARE_LAMBDA_ROOT_BN254_CONSTANTS.span()); // in0 - in44 + // Fill inputs: - circuit_inputs = circuit_inputs.next(lambda_root.w0); // in45 - circuit_inputs = circuit_inputs.next(lambda_root.w1); // in46 - circuit_inputs = circuit_inputs.next(lambda_root.w2); // in47 - circuit_inputs = circuit_inputs.next(lambda_root.w3); // in48 - circuit_inputs = circuit_inputs.next(lambda_root.w4); // in49 - circuit_inputs = circuit_inputs.next(lambda_root.w5); // in50 - circuit_inputs = circuit_inputs.next(lambda_root.w6); // in51 - circuit_inputs = circuit_inputs.next(lambda_root.w7); // in52 - circuit_inputs = circuit_inputs.next(lambda_root.w8); // in53 - circuit_inputs = circuit_inputs.next(lambda_root.w9); // in54 - circuit_inputs = circuit_inputs.next(lambda_root.w10); // in55 - circuit_inputs = circuit_inputs.next(lambda_root.w11); // in56 - circuit_inputs = circuit_inputs.next(z); // in57 - circuit_inputs = circuit_inputs.next(scaling_factor.w0); // in58 - circuit_inputs = circuit_inputs.next(scaling_factor.w2); // in59 - circuit_inputs = circuit_inputs.next(scaling_factor.w4); // in60 - circuit_inputs = circuit_inputs.next(scaling_factor.w6); // in61 - circuit_inputs = circuit_inputs.next(scaling_factor.w8); // in62 - circuit_inputs = circuit_inputs.next(scaling_factor.w10); // in63 - circuit_inputs = circuit_inputs.next(c_inv.w0); // in64 - circuit_inputs = circuit_inputs.next(c_inv.w1); // in65 - circuit_inputs = circuit_inputs.next(c_inv.w2); // in66 - circuit_inputs = circuit_inputs.next(c_inv.w3); // in67 - circuit_inputs = circuit_inputs.next(c_inv.w4); // in68 - circuit_inputs = circuit_inputs.next(c_inv.w5); // in69 - circuit_inputs = circuit_inputs.next(c_inv.w6); // in70 - circuit_inputs = circuit_inputs.next(c_inv.w7); // in71 - circuit_inputs = circuit_inputs.next(c_inv.w8); // in72 - circuit_inputs = circuit_inputs.next(c_inv.w9); // in73 - circuit_inputs = circuit_inputs.next(c_inv.w10); // in74 - circuit_inputs = circuit_inputs.next(c_inv.w11); // in75 - circuit_inputs = circuit_inputs.next(c_0); // in76 + circuit_inputs = circuit_inputs.next_2(lambda_root.w0); // in45 + circuit_inputs = circuit_inputs.next_2(lambda_root.w1); // in46 + circuit_inputs = circuit_inputs.next_2(lambda_root.w2); // in47 + circuit_inputs = circuit_inputs.next_2(lambda_root.w3); // in48 + circuit_inputs = circuit_inputs.next_2(lambda_root.w4); // in49 + circuit_inputs = circuit_inputs.next_2(lambda_root.w5); // in50 + circuit_inputs = circuit_inputs.next_2(lambda_root.w6); // in51 + circuit_inputs = circuit_inputs.next_2(lambda_root.w7); // in52 + circuit_inputs = circuit_inputs.next_2(lambda_root.w8); // in53 + circuit_inputs = circuit_inputs.next_2(lambda_root.w9); // in54 + circuit_inputs = circuit_inputs.next_2(lambda_root.w10); // in55 + circuit_inputs = circuit_inputs.next_2(lambda_root.w11); // in56 + circuit_inputs = circuit_inputs.next_2(z); // in57 + circuit_inputs = circuit_inputs.next_2(scaling_factor.w0); // in58 + circuit_inputs = circuit_inputs.next_2(scaling_factor.w2); // in59 + circuit_inputs = circuit_inputs.next_2(scaling_factor.w4); // in60 + circuit_inputs = circuit_inputs.next_2(scaling_factor.w6); // in61 + circuit_inputs = circuit_inputs.next_2(scaling_factor.w8); // in62 + circuit_inputs = circuit_inputs.next_2(scaling_factor.w10); // in63 + circuit_inputs = circuit_inputs.next_2(c_inv.w0); // in64 + circuit_inputs = circuit_inputs.next_2(c_inv.w1); // in65 + circuit_inputs = circuit_inputs.next_2(c_inv.w2); // in66 + circuit_inputs = circuit_inputs.next_2(c_inv.w3); // in67 + circuit_inputs = circuit_inputs.next_2(c_inv.w4); // in68 + circuit_inputs = circuit_inputs.next_2(c_inv.w5); // in69 + circuit_inputs = circuit_inputs.next_2(c_inv.w6); // in70 + circuit_inputs = circuit_inputs.next_2(c_inv.w7); // in71 + circuit_inputs = circuit_inputs.next_2(c_inv.w8); // in72 + circuit_inputs = circuit_inputs.next_2(c_inv.w9); // in73 + circuit_inputs = circuit_inputs.next_2(c_inv.w10); // in74 + circuit_inputs = circuit_inputs.next_2(c_inv.w11); // in75 + circuit_inputs = circuit_inputs.next_2(c_0); // in76 - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); let c_of_z: u384 = outputs.get_output(t31); let scaling_factor_of_z: u384 = outputs.get_output(t41); let c_inv_of_z: u384 = outputs.get_output(t63); @@ -6957,6 +6051,302 @@ fn run_BN254_MP_CHECK_PREPARE_LAMBDA_ROOT_circuit( c_inv_frob_3_of_z ); } +const MP_CHECK_PREPARE_LAMBDA_ROOT_BN254_CONSTANTS: [ + u384 + ; 45] = [ + u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, + u384 { limb0: 0x12, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, + u384 { + limb0: 0xfde6a43f5daa971f3fa65955, + limb1: 0x1b2522ec5eb28ded6895e1cd, + limb2: 0x1d8c8daef3eee1e8, + limb3: 0x0 + }, + u384 { + limb0: 0x42b29c567e9c385ce480a71a, + limb1: 0x4e34e2ac06ead4000d14d1e2, + limb2: 0x217e400dc9351e77, + limb3: 0x0 + }, + u384 { + limb0: 0xfd28d102c0d147b2f4d521a7, + limb1: 0x8481d22c6934ce844d72f250, + limb2: 0x242b719062f6737b, + limb3: 0x0 + }, + u384 { + limb0: 0x43ac198484b8d9094aa82536, + limb1: 0x1b9c22d81246ffc2e794e176, + limb2: 0x359809094bd5c8e, + limb3: 0x0 + }, + u384 { + limb0: 0x6df7b44cbb259ef7cb58d5ed, + limb1: 0xdd4ef1e69a0c1f0dd2949fa, + limb2: 0x21436d48fcb50cc6, + limb3: 0x0 + }, + u384 { + limb0: 0x8a4f4f0831364cf35f78f771, + limb1: 0x38a4311a86919d9c7c6c15f8, + limb2: 0x18857a58f3b5bb30, + limb3: 0x0 + }, + u384 { + limb0: 0x6fc008e7d6998c82f7fc048b, + limb1: 0x62b7adefd44038ab3c0bbad9, + limb2: 0x2c84bbad27c36715, + limb3: 0x0 + }, + u384 { + limb0: 0xa8697e0c9c36d8ca3339a7b5, + limb1: 0x6d1eab6fcd18b99ad4afd096, + limb2: 0xc33b1c70e4fd11b, + limb3: 0x0 + }, + u384 { + limb0: 0x5371c546d428780a6e3dcfa8, + limb1: 0x13fe08bea73305ff6bdac77c, + limb2: 0x1b007294a55accce, + limb3: 0x0 + }, + u384 { + limb0: 0x4f501fe811493d72543a3977, + limb1: 0xefe88dd8e6965b3adae92c97, + limb2: 0x215d42e7ac7bd17c, + limb3: 0x0 + }, + u384 { + limb0: 0x6871ca8d3c208c16d87cfd46, + limb1: 0xb85045b68181585d97816a91, + limb2: 0x30644e72e131a029, + limb3: 0x0 + }, + u384 { + limb0: 0x8eeec7e5ca5cf05f80f362ac, + limb1: 0xa6327cfe12150b8e74799277, + limb2: 0x246996f3b4fae7e6, + limb3: 0x0 + }, + u384 { + limb0: 0x6a8b264dde75f4f798d6a3f2, + limb1: 0x9d2b22ca22ceca702eeb88c3, + limb2: 0x12d7c0c3ed42be41, + limb3: 0x0 + }, + u384 { + limb0: 0xb7c9dce1665d51c640fcba2, + limb1: 0x4ba4cc8bd75a079432ae2a1d, + limb2: 0x16c9e55061ebae20, + limb3: 0x0 + }, + u384 { + limb0: 0x6b48f98a7b4f4463e3a7dba0, + limb1: 0x33ce738a184c89d94a0e7840, + limb2: 0xc38dce27e3b2cae, + limb3: 0x0 + }, + u384 { + limb0: 0x8fa25bd282d37f632623b0e3, + limb1: 0x704b5a7ec796f2b21807dc9, + limb2: 0x7c03cbcac41049a, + limb3: 0x0 + }, + u384 { + limb0: 0xfa7a164080faed1f0d24275a, + limb1: 0xaa7b569817e0966cba582096, + limb2: 0xf20e129e47c9363, + limb3: 0x0 + }, + u384 { + limb0: 0x1bdec763c13b4711cd2b8126, + limb1: 0x9f3a80b03b0b1c923685d2ea, + limb2: 0x2c145edbe7fd8aee, + limb3: 0x0 + }, + u384 { + limb0: 0xf8b1c1a56586ff93e080f8bc, + limb1: 0x559897c6ad411fb25b75afb7, + limb2: 0x3df92c5b96e3914, + limb3: 0x0 + }, + u384 { + limb0: 0x678e2ac024c6b8ee6e0c2c4b, + limb1: 0xa27fb246c7729f7db080cb99, + limb2: 0x12acf2ca76fd0675, + limb3: 0x0 + }, + u384 { + limb0: 0x1500054667f8140c6a3f2d9f, + limb1: 0xa4523cf7da4e525e2ba6a315, + limb2: 0x1563dbde3bd6d35b, + limb3: 0x0 + }, + u384 { + limb0: 0xbb966e3de4bd44e5607cfd49, + limb1: 0x5e6dd9e7e0acccb0c28f069f, + limb2: 0x30644e72e131a029, + limb3: 0x0 + }, + u384 { + limb0: 0xbb966e3de4bd44e5607cfd48, + limb1: 0x5e6dd9e7e0acccb0c28f069f, + limb2: 0x30644e72e131a029, + limb3: 0x0 + }, + u384 { + limb0: 0xacdb5c4f5763473177fffffe, limb1: 0x59e26bcea0d48bacd4f263f1, limb2: 0x0, limb3: 0x0 + }, + u384 { + limb0: 0xacdb5c4f5763473177ffffff, limb1: 0x59e26bcea0d48bacd4f263f1, limb2: 0x0, limb3: 0x0 + }, + u384 { + limb0: 0x67dfc8fabd3581ad840ddd76, + limb1: 0xb2bdfa8fef85fa07122bde8d, + limb2: 0x13d0c369615f7bb0, + limb3: 0x0 + }, + u384 { + limb0: 0xac285af5685d3f90eacf7a66, + limb1: 0xfc2bf531eb331a053a35744c, + limb2: 0x18a0f4219f4fdff6, + limb3: 0x0 + }, + u384 { + limb0: 0x64e2b5a5bf22f67654883ae6, + limb1: 0x79c3e050c9ca2a428908a812, + limb2: 0xc3a5e9c462a6547, + limb3: 0x0 + }, + u384 { + limb0: 0x345582cc92fd973c74bd77f4, + limb1: 0x5bdd2055c255cf9d9e08c1d9, + limb2: 0x2ce02aa5f9bf8cd6, + limb3: 0x0 + }, + u384 { + limb0: 0xde227b850aea3f23790405d6, + limb1: 0x7fac149bfaefbac11b155498, + limb2: 0x17ded419ed7be4f9, + limb3: 0x0 + }, + u384 { + limb0: 0x4150a79753fb0cd31cc99cc0, + limb1: 0x2fb81a8dccd8a9b4441d64f3, + limb2: 0x1bfe7b214c029424, + limb3: 0x0 + }, + u384 { + limb0: 0x9efaf0f0f1a228f0d5662fbd, + limb1: 0xd15da0ec97a9b8346513297b, + limb2: 0x697b9c523e0390e, + limb3: 0x0 + }, + u384 { + limb0: 0x182d2db0c413901c32b0c6fe, + limb1: 0xb5186d6ac4c723b85d3f78a3, + limb2: 0x7a0e052f2b1c443, + limb3: 0x0 + }, + u384 { + limb0: 0x39c0d06b220500933945267f, + limb1: 0x5dc79824a3792597356c892c, + limb2: 0x1b76a37fba85f3cd, + limb3: 0x0 + }, + u384 { + limb0: 0x97d439ec7694aa2bf4c0c101, + limb1: 0x6cbeee33576139d7f03a5e3, + limb2: 0xabf8b60be77d73, + limb3: 0x0 + }, + u384 { + limb0: 0x9201927eeb0a69546f1fd1, + limb1: 0x5924b2691fb5e5685558c04, + limb2: 0x1c938b097fd22479, + limb3: 0x0 + }, + u384 { + limb0: 0x98ff2631380cab2baaa586de, + limb1: 0xa9f30e6dec26094f0fdf31bf, + limb2: 0x4f1de41b3d1766f, + limb3: 0x0 + }, + u384 { + limb0: 0x38f14e77cfd95a083f4c261, + limb1: 0x3e8c6565b7b72e1b0e78c27f, + limb2: 0x2429efd69b073ae2, + limb3: 0x0 + }, + u384 { + limb0: 0xd8cf6ebab94d0cb3b2594c64, + limb1: 0xb14b900e9507e9327600ecc7, + limb2: 0x28a411b634f09b8f, + limb3: 0x0 + }, + u384 { + limb0: 0x737f96e55fe3ed9d730c239f, + limb1: 0xfeb0f6ef0cd21d04a44a9e08, + limb2: 0x23d5e999e1910a12, + limb3: 0x0 + }, + u384 { + limb0: 0x272122f5e8257f43bbb36087, + limb1: 0x88982b28b4a8aea95364059e, + limb2: 0x1465d351952f0c05, + limb3: 0x0 + }, + u384 { + limb0: 0x200280211f25041384282499, + limb1: 0x9fb1b2282a48633d3e2ddaea, + limb2: 0x16db366a59b1dd0b, + limb3: 0x0 + }, + u384 { + limb0: 0x50449cdc780cfbfaa5cc3649, + limb1: 0x337d84bbcba34a53a41f1ee, + limb2: 0x28c36e1fee7fdbe6, + limb3: 0x0 + } +]; +fn run_BN254_MP_CHECK_PREPARE_PAIRS_1P_circuit( + p_0: G1Point, Qy0_0: u384, Qy1_0: u384 +) -> (BNProcessedPair,) { + // CONSTANT stack + let in0 = CE::> {}; // 0x0 + + // INPUT stack + let (in1, in2, in3) = (CE::> {}, CE::> {}, CE::> {}); + let in4 = CE::> {}; + let t0 = circuit_inverse(in2); + let t1 = circuit_mul(in1, t0); + let t2 = circuit_sub(in0, t1); + let t3 = circuit_sub(in0, in3); + let t4 = circuit_sub(in0, in4); + + let modulus = TryInto::< + _, CircuitModulus + >::try_into([0x6871ca8d3c208c16d87cfd47, 0xb85045b68181585d97816a91, 0x30644e72e131a029, 0x0]) + .unwrap(); // BN254 prime field modulus + + let mut circuit_inputs = (t0, t2, t3, t4,).new_inputs(); + // Prefill constants: + circuit_inputs = circuit_inputs.next_2([0x0, 0x0, 0x0, 0x0]); // in0 + // Fill inputs: + circuit_inputs = circuit_inputs.next_2(p_0.x); // in1 + circuit_inputs = circuit_inputs.next_2(p_0.y); // in2 + circuit_inputs = circuit_inputs.next_2(Qy0_0); // in3 + circuit_inputs = circuit_inputs.next_2(Qy1_0); // in4 + + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); + let p_0: BNProcessedPair = BNProcessedPair { + yInv: outputs.get_output(t0), + xNegOverY: outputs.get_output(t2), + QyNeg0: outputs.get_output(t3), + QyNeg1: outputs.get_output(t4) + }; + return (p_0,); +} fn run_BN254_MP_CHECK_PREPARE_PAIRS_2P_circuit( p_0: G1Point, Qy0_0: u384, Qy1_0: u384, p_1: G1Point, Qy0_1: u384, Qy1_1: u384 ) -> (BNProcessedPair, BNProcessedPair) { @@ -6985,21 +6375,18 @@ fn run_BN254_MP_CHECK_PREPARE_PAIRS_2P_circuit( let mut circuit_inputs = (t0, t2, t3, t4, t5, t7, t8, t9,).new_inputs(); // Prefill constants: - circuit_inputs = circuit_inputs.next([0x0, 0x0, 0x0, 0x0]); // in0 + circuit_inputs = circuit_inputs.next_2([0x0, 0x0, 0x0, 0x0]); // in0 // Fill inputs: - circuit_inputs = circuit_inputs.next(p_0.x); // in1 - circuit_inputs = circuit_inputs.next(p_0.y); // in2 - circuit_inputs = circuit_inputs.next(Qy0_0); // in3 - circuit_inputs = circuit_inputs.next(Qy1_0); // in4 - circuit_inputs = circuit_inputs.next(p_1.x); // in5 - circuit_inputs = circuit_inputs.next(p_1.y); // in6 - circuit_inputs = circuit_inputs.next(Qy0_1); // in7 - circuit_inputs = circuit_inputs.next(Qy1_1); // in8 + circuit_inputs = circuit_inputs.next_2(p_0.x); // in1 + circuit_inputs = circuit_inputs.next_2(p_0.y); // in2 + circuit_inputs = circuit_inputs.next_2(Qy0_0); // in3 + circuit_inputs = circuit_inputs.next_2(Qy1_0); // in4 + circuit_inputs = circuit_inputs.next_2(p_1.x); // in5 + circuit_inputs = circuit_inputs.next_2(p_1.y); // in6 + circuit_inputs = circuit_inputs.next_2(Qy0_1); // in7 + circuit_inputs = circuit_inputs.next_2(Qy1_1); // in8 - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); let p_0: BNProcessedPair = BNProcessedPair { yInv: outputs.get_output(t0), xNegOverY: outputs.get_output(t2), @@ -7056,25 +6443,22 @@ fn run_BN254_MP_CHECK_PREPARE_PAIRS_3P_circuit( let mut circuit_inputs = (t0, t2, t3, t4, t5, t7, t8, t9, t10, t12, t13, t14,).new_inputs(); // Prefill constants: - circuit_inputs = circuit_inputs.next([0x0, 0x0, 0x0, 0x0]); // in0 + circuit_inputs = circuit_inputs.next_2([0x0, 0x0, 0x0, 0x0]); // in0 // Fill inputs: - circuit_inputs = circuit_inputs.next(p_0.x); // in1 - circuit_inputs = circuit_inputs.next(p_0.y); // in2 - circuit_inputs = circuit_inputs.next(Qy0_0); // in3 - circuit_inputs = circuit_inputs.next(Qy1_0); // in4 - circuit_inputs = circuit_inputs.next(p_1.x); // in5 - circuit_inputs = circuit_inputs.next(p_1.y); // in6 - circuit_inputs = circuit_inputs.next(Qy0_1); // in7 - circuit_inputs = circuit_inputs.next(Qy1_1); // in8 - circuit_inputs = circuit_inputs.next(p_2.x); // in9 - circuit_inputs = circuit_inputs.next(p_2.y); // in10 - circuit_inputs = circuit_inputs.next(Qy0_2); // in11 - circuit_inputs = circuit_inputs.next(Qy1_2); // in12 + circuit_inputs = circuit_inputs.next_2(p_0.x); // in1 + circuit_inputs = circuit_inputs.next_2(p_0.y); // in2 + circuit_inputs = circuit_inputs.next_2(Qy0_0); // in3 + circuit_inputs = circuit_inputs.next_2(Qy1_0); // in4 + circuit_inputs = circuit_inputs.next_2(p_1.x); // in5 + circuit_inputs = circuit_inputs.next_2(p_1.y); // in6 + circuit_inputs = circuit_inputs.next_2(Qy0_1); // in7 + circuit_inputs = circuit_inputs.next_2(Qy1_1); // in8 + circuit_inputs = circuit_inputs.next_2(p_2.x); // in9 + circuit_inputs = circuit_inputs.next_2(p_2.y); // in10 + circuit_inputs = circuit_inputs.next_2(Qy0_2); // in11 + circuit_inputs = circuit_inputs.next_2(Qy1_2); // in12 - let outputs = match circuit_inputs.done().eval(modulus) { - Result::Ok(outputs) => { outputs }, - Result::Err(_) => { panic!("Expected success") } - }; + let outputs = circuit_inputs.done_2().eval(modulus).unwrap(); let p_0: BNProcessedPair = BNProcessedPair { yInv: outputs.get_output(t0), xNegOverY: outputs.get_output(t2), @@ -7120,6 +6504,7 @@ mod tests { run_BLS12_381_MP_CHECK_INIT_BIT_2P_2F_circuit, run_BLS12_381_MP_CHECK_INIT_BIT_3P_2F_circuit, run_BLS12_381_MP_CHECK_PREPARE_LAMBDA_ROOT_circuit, + run_BLS12_381_MP_CHECK_PREPARE_PAIRS_1P_circuit, run_BLS12_381_MP_CHECK_PREPARE_PAIRS_2P_circuit, run_BLS12_381_MP_CHECK_PREPARE_PAIRS_3P_circuit, run_BN254_MP_CHECK_BIT00_2P_2F_circuit, run_BN254_MP_CHECK_BIT00_3P_2F_circuit, run_BN254_MP_CHECK_BIT0_2P_2F_circuit, @@ -7127,6 +6512,7 @@ mod tests { run_BN254_MP_CHECK_BIT1_3P_2F_circuit, run_BN254_MP_CHECK_FINALIZE_BN_2P_2F_circuit, run_BN254_MP_CHECK_FINALIZE_BN_3P_2F_circuit, run_BN254_MP_CHECK_INIT_BIT_2P_2F_circuit, run_BN254_MP_CHECK_INIT_BIT_3P_2F_circuit, run_BN254_MP_CHECK_PREPARE_LAMBDA_ROOT_circuit, - run_BN254_MP_CHECK_PREPARE_PAIRS_2P_circuit, run_BN254_MP_CHECK_PREPARE_PAIRS_3P_circuit + run_BN254_MP_CHECK_PREPARE_PAIRS_1P_circuit, run_BN254_MP_CHECK_PREPARE_PAIRS_2P_circuit, + run_BN254_MP_CHECK_PREPARE_PAIRS_3P_circuit }; } diff --git a/src/cairo/src/core.cairo b/src/cairo/src/core.cairo new file mode 100644 index 00000000..ac352e3d --- /dev/null +++ b/src/cairo/src/core.cairo @@ -0,0 +1 @@ +mod circuit; diff --git a/src/cairo/src/core/circuit.cairo b/src/cairo/src/core/circuit.cairo new file mode 100644 index 00000000..928947af --- /dev/null +++ b/src/cairo/src/core/circuit.cairo @@ -0,0 +1,392 @@ +use core::circuit::{ + add_circuit_input, AddInputResult, CircuitData, IntoCircuitInputValue, CircuitDefinition, + init_circuit_data, CircuitInputAccumulator +}; +use core::panic_with_felt252; +use garaga::definitions::{E12D, G2Line, u384}; +use garaga::utils::{PoseidonState, hades_permutation}; +use core::panics::panic; + +#[generate_trait] +pub impl AddInputResultImpl2 of AddInputResultTrait2 { + /// Adds an input to the accumulator. + // Inlining to make sure possibly huge `C` won't be in a user function name. + // #[inline] + fn next_2, +Drop>( + self: AddInputResult, value: Value + ) -> AddInputResult { + match self { + AddInputResult::More(accumulator) => add_circuit_input( + accumulator, value.into_circuit_input_value() + ), + AddInputResult::Done(_) => panic_with_felt252('All inputs have been filled'), + } + } + fn next_e12d(self: AddInputResult, value: E12D) -> AddInputResult { + let c = match self { + AddInputResult::More(accumulator) => add_circuit_input( + accumulator, value.w0.into_circuit_input_value() + ), + AddInputResult::Done(_) => panic_with_felt252(0), + }; + let c = match c { + AddInputResult::More(accumulator) => add_circuit_input( + accumulator, value.w1.into_circuit_input_value() + ), + AddInputResult::Done(_) => panic_with_felt252(0), + }; + let c = match c { + AddInputResult::More(accumulator) => add_circuit_input( + accumulator, value.w2.into_circuit_input_value() + ), + AddInputResult::Done(_) => panic_with_felt252(0), + }; + let c = match c { + AddInputResult::More(accumulator) => add_circuit_input( + accumulator, value.w3.into_circuit_input_value() + ), + AddInputResult::Done(_) => panic_with_felt252(0), + }; + let c = match c { + AddInputResult::More(accumulator) => add_circuit_input( + accumulator, value.w4.into_circuit_input_value() + ), + AddInputResult::Done(_) => panic_with_felt252(0), + }; + let c = match c { + AddInputResult::More(accumulator) => add_circuit_input( + accumulator, value.w5.into_circuit_input_value() + ), + AddInputResult::Done(_) => panic_with_felt252(0), + }; + let c = match c { + AddInputResult::More(accumulator) => add_circuit_input( + accumulator, value.w6.into_circuit_input_value() + ), + AddInputResult::Done(_) => panic_with_felt252(0), + }; + let c = match c { + AddInputResult::More(accumulator) => add_circuit_input( + accumulator, value.w7.into_circuit_input_value() + ), + AddInputResult::Done(_) => panic_with_felt252(0), + }; + let c = match c { + AddInputResult::More(accumulator) => add_circuit_input( + accumulator, value.w8.into_circuit_input_value() + ), + AddInputResult::Done(_) => panic_with_felt252(0), + }; + let c = match c { + AddInputResult::More(accumulator) => add_circuit_input( + accumulator, value.w9.into_circuit_input_value() + ), + AddInputResult::Done(_) => panic_with_felt252(0), + }; + let c = match c { + AddInputResult::More(accumulator) => add_circuit_input( + accumulator, value.w10.into_circuit_input_value() + ), + AddInputResult::Done(_) => panic_with_felt252(0), + }; + let c = match c { + AddInputResult::More(accumulator) => add_circuit_input( + accumulator, value.w11.into_circuit_input_value() + ), + AddInputResult::Done(_) => panic_with_felt252(0), + }; + c + } + + + fn next_e12d_with_state_update( + self: AddInputResult, value: E12D, state: PoseidonState + ) -> (AddInputResult, PoseidonState) { + let base: felt252 = 79228162514264337593543950336; // 2**96 + // let in_1 = state.s0 + value.w0.limb0.into() + base * value.w0.limb1.into(); + // let in_2 = state.s1 + value.w0.limb2.into() + base * value.w0.limb3.into(); + // let (_s0, _s1, _s2) = hades_permutation(in_1, in_2, state.s2); + // let in_1 = _s0 + value.w1.limb0.into() + base * value.w1.limb1.into(); + // let in_2 = _s1 + value.w1.limb2.into() + base * value.w1.limb3.into(); + // let (_s0, _s1, _s2) = hades_permutation(in_1, in_2, _s2); + // let in_1 = _s0 + value.w2.limb0.into() + base * value.w2.limb1.into(); + // let in_2 = _s1 + value.w2.limb2.into() + base * value.w2.limb3.into(); + // let (_s0, _s1, _s2) = hades_permutation(in_1, in_2, _s2); + // let in_1 = _s0 + value.w3.limb0.into() + base * value.w3.limb1.into(); + // let in_2 = _s1 + value.w3.limb2.into() + base * value.w3.limb3.into(); + // let (_s0, _s1, _s2) = hades_permutation(in_1, in_2, _s2); + // let in_1 = _s0 + value.w4.limb0.into() + base * value.w4.limb1.into(); + // let in_2 = _s1 + value.w4.limb2.into() + base * value.w4.limb3.into(); + // let (_s0, _s1, _s2) = hades_permutation(in_1, in_2, _s2); + // let in_1 = _s0 + value.w5.limb0.into() + base * value.w5.limb1.into(); + // let in_2 = _s1 + value.w5.limb2.into() + base * value.w5.limb3.into(); + // let (_s0, _s1, _s2) = hades_permutation(in_1, in_2, _s2); + // let in_1 = _s0 + value.w6.limb0.into() + base * value.w6.limb1.into(); + // let in_2 = _s1 + value.w6.limb2.into() + base * value.w6.limb3.into(); + // let (_s0, _s1, _s2) = hades_permutation(in_1, in_2, _s2); + // let in_1 = _s0 + value.w7.limb0.into() + base * value.w7.limb1.into(); + // let in_2 = _s1 + value.w7.limb2.into() + base * value.w7.limb3.into(); + // let (_s0, _s1, _s2) = hades_permutation(in_1, in_2, _s2); + // let in_1 = _s0 + value.w8.limb0.into() + base * value.w8.limb1.into(); + // let in_2 = _s1 + value.w8.limb2.into() + base * value.w8.limb3.into(); + // let (_s0, _s1, _s2) = hades_permutation(in_1, in_2, _s2); + // let in_1 = _s0 + value.w9.limb0.into() + base * value.w9.limb1.into(); + // let in_2 = _s1 + value.w9.limb2.into() + base * value.w9.limb3.into(); + // let (_s0, _s1, _s2) = hades_permutation(in_1, in_2, _s2); + // let in_1 = _s0 + value.w10.limb0.into() + base * value.w10.limb1.into(); + // let in_2 = _s1 + value.w10.limb2.into() + base * value.w10.limb3.into(); + // let (_s0, _s1, _s2) = hades_permutation(in_1, in_2, _s2); + // let in_1 = _s0 + value.w11.limb0.into() + base * value.w11.limb1.into(); + // let in_2 = _s1 + value.w11.limb2.into() + base * value.w11.limb3.into(); + // let (_s0, _s1, _s2) = hades_permutation(in_1, in_2, _s2); + + let (c, _s0, _s1, _s2) = match self { + AddInputResult::More(accumulator) => { + let _c = add_circuit_input(accumulator, value.w0.into_circuit_input_value()); + let in_0 = state.s0 + value.w0.limb0.into() + base * value.w0.limb1.into(); + let in_1 = state.s1 + value.w0.limb2.into() + base * value.w0.limb3.into(); + let (_s0, _s1, _s2) = hades_permutation(in_0, in_1, state.s2); + (_c, _s0, _s1, _s2) + }, + AddInputResult::Done(_) => panic(array![0]), + }; + let (c, _s0, _s1, _s2) = match c { + AddInputResult::More(accumulator) => { + let _c = add_circuit_input(accumulator, value.w1.into_circuit_input_value()); + let in_0 = _s0 + value.w1.limb0.into() + base * value.w1.limb1.into(); + let in_1 = _s1 + value.w1.limb2.into() + base * value.w1.limb3.into(); + let (_s0, _s1, _s2) = hades_permutation(in_0, in_1, _s2); + (_c, _s0, _s1, _s2) + }, + AddInputResult::Done(_) => panic(array![0]), + }; + let (c, _s0, _s1, _s2) = match c { + AddInputResult::More(accumulator) => { + let _c = add_circuit_input(accumulator, value.w2.into_circuit_input_value()); + let in_0 = _s0 + value.w2.limb0.into() + base * value.w2.limb1.into(); + let in_1 = _s1 + value.w2.limb2.into() + base * value.w2.limb3.into(); + let (_s0, _s1, _s2) = hades_permutation(in_0, in_1, _s2); + (_c, _s0, _s1, _s2) + }, + AddInputResult::Done(_) => panic(array![0]), + }; + let (c, _s0, _s1, _s2) = match c { + AddInputResult::More(accumulator) => { + let _c = add_circuit_input(accumulator, value.w3.into_circuit_input_value()); + let in_0 = _s0 + value.w3.limb0.into() + base * value.w3.limb1.into(); + let in_1 = _s1 + value.w3.limb2.into() + base * value.w3.limb3.into(); + let (_s0, _s1, _s2) = hades_permutation(in_0, in_1, _s2); + (_c, _s0, _s1, _s2) + }, + AddInputResult::Done(_) => panic(array![0]), + }; + let (c, _s0, _s1, _s2) = match c { + AddInputResult::More(accumulator) => { + let _c = add_circuit_input(accumulator, value.w4.into_circuit_input_value()); + let in_0 = _s0 + value.w4.limb0.into() + base * value.w4.limb1.into(); + let in_1 = _s1 + value.w4.limb2.into() + base * value.w4.limb3.into(); + let (_s0, _s1, _s2) = hades_permutation(in_0, in_1, _s2); + (_c, _s0, _s1, _s2) + }, + AddInputResult::Done(_) => panic(array![0]), + }; + let (c, _s0, _s1, _s2) = match c { + AddInputResult::More(accumulator) => { + let _c = add_circuit_input(accumulator, value.w5.into_circuit_input_value()); + let in_0 = _s0 + value.w5.limb0.into() + base * value.w5.limb1.into(); + let in_1 = _s1 + value.w5.limb2.into() + base * value.w5.limb3.into(); + let (_s0, _s1, _s2) = hades_permutation(in_0, in_1, _s2); + (_c, _s0, _s1, _s2) + }, + AddInputResult::Done(_) => panic(array![0]), + }; + let (c, _s0, _s1, _s2) = match c { + AddInputResult::More(accumulator) => { + let _c = add_circuit_input(accumulator, value.w6.into_circuit_input_value()); + let in_0 = _s0 + value.w6.limb0.into() + base * value.w6.limb1.into(); + let in_1 = _s1 + value.w6.limb2.into() + base * value.w6.limb3.into(); + let (_s0, _s1, _s2) = hades_permutation(in_0, in_1, _s2); + (_c, _s0, _s1, _s2) + }, + AddInputResult::Done(_) => panic(array![0]), + }; + let (c, _s0, _s1, _s2) = match c { + AddInputResult::More(accumulator) => { + let _c = add_circuit_input(accumulator, value.w7.into_circuit_input_value()); + let in_0 = _s0 + value.w7.limb0.into() + base * value.w7.limb1.into(); + let in_1 = _s1 + value.w7.limb2.into() + base * value.w7.limb3.into(); + let (_s0, _s1, _s2) = hades_permutation(in_0, in_1, _s2); + (_c, _s0, _s1, _s2) + }, + AddInputResult::Done(_) => panic(array![0]), + }; + let (c, _s0, _s1, _s2) = match c { + AddInputResult::More(accumulator) => { + let _c = add_circuit_input(accumulator, value.w8.into_circuit_input_value()); + let in_0 = _s0 + value.w8.limb0.into() + base * value.w8.limb1.into(); + let in_1 = _s1 + value.w8.limb2.into() + base * value.w8.limb3.into(); + let (_s0, _s1, _s2) = hades_permutation(in_0, in_1, _s2); + (_c, _s0, _s1, _s2) + }, + AddInputResult::Done(_) => panic(array![0]), + }; + let (c, _s0, _s1, _s2) = match c { + AddInputResult::More(accumulator) => { + let _c = add_circuit_input(accumulator, value.w9.into_circuit_input_value()); + let in_0 = _s0 + value.w9.limb0.into() + base * value.w9.limb1.into(); + let in_1 = _s1 + value.w9.limb2.into() + base * value.w9.limb3.into(); + let (_s0, _s1, _s2) = hades_permutation(in_0, in_1, _s2); + (_c, _s0, _s1, _s2) + }, + AddInputResult::Done(_) => panic(array![0]), + }; + let (c, _s0, _s1, _s2) = match c { + AddInputResult::More(accumulator) => { + let _c = add_circuit_input(accumulator, value.w10.into_circuit_input_value()); + let in_0 = _s0 + value.w10.limb0.into() + base * value.w10.limb1.into(); + let in_1 = _s1 + value.w10.limb2.into() + base * value.w10.limb3.into(); + let (_s0, _s1, _s2) = hades_permutation(in_0, in_1, _s2); + (_c, _s0, _s1, _s2) + }, + AddInputResult::Done(_) => panic(array![0]), + }; + let (c, _s0, _s1, _s2) = match c { + AddInputResult::More(accumulator) => { + let _c = add_circuit_input(accumulator, value.w11.into_circuit_input_value()); + let in_0 = _s0 + value.w11.limb0.into() + base * value.w11.limb1.into(); + let in_1 = _s1 + value.w11.limb2.into() + base * value.w11.limb3.into(); + let (_s0, _s1, _s2) = hades_permutation(in_0, in_1, _s2); + (_c, _s0, _s1, _s2) + }, + AddInputResult::Done(_) => panic(array![0]), + }; + (c, PoseidonState { s0: _s0, s1: _s1, s2: _s2 }) + } + + fn next_g2line(self: AddInputResult, value: G2Line) -> AddInputResult { + let c = match self { + AddInputResult::More(accumulator) => add_circuit_input( + accumulator, value.r0a0.into_circuit_input_value() + ), + AddInputResult::Done(_) => panic_with_felt252(0), + }; + let c = match c { + AddInputResult::More(accumulator) => add_circuit_input( + accumulator, value.r0a1.into_circuit_input_value() + ), + AddInputResult::Done(_) => panic_with_felt252(0), + }; + let c = match c { + AddInputResult::More(accumulator) => add_circuit_input( + accumulator, value.r1a0.into_circuit_input_value() + ), + AddInputResult::Done(_) => panic_with_felt252(0), + }; + let c = match c { + AddInputResult::More(accumulator) => add_circuit_input( + accumulator, value.r1a1.into_circuit_input_value() + ), + AddInputResult::Done(_) => panic_with_felt252(0), + }; + + c + } + fn next_g2lineb(self: AddInputResult, value: Box) -> AddInputResult { + let value = value.unbox(); + let c = match self { + AddInputResult::More(accumulator) => add_circuit_input( + accumulator, value.r0a0.into_circuit_input_value() + ), + AddInputResult::Done(_) => panic_with_felt252(0), + }; + let c = match c { + AddInputResult::More(accumulator) => add_circuit_input( + accumulator, value.r0a1.into_circuit_input_value() + ), + AddInputResult::Done(_) => panic_with_felt252(0), + }; + let c = match c { + AddInputResult::More(accumulator) => add_circuit_input( + accumulator, value.r1a0.into_circuit_input_value() + ), + AddInputResult::Done(_) => panic_with_felt252(0), + }; + let c = match c { + AddInputResult::More(accumulator) => add_circuit_input( + accumulator, value.r1a1.into_circuit_input_value() + ), + AddInputResult::Done(_) => panic_with_felt252(0), + }; + + c + } + #[inline] + fn next_array_with_state_update( + self: AddInputResult, value: Array, state: PoseidonState + ) -> (AddInputResult, PoseidonState) { + let base: felt252 = 79228162514264337593543950336; // 2**96 + let mut add_input_result = self; + let mut s0 = state.s0; + let mut s1 = state.s1; + let mut s2 = state.s2; + let mut value = value; + while let Option::Some(v) = value.pop_front() { + add_input_result = + add_circuit_input( + match add_input_result { + AddInputResult::More(acc) => acc, + AddInputResult::Done(_) => panic(array![0]), + }, + v.into_circuit_input_value() + ); + let in_1 = s0 + v.limb0.into() + base * v.limb1.into(); + let in_2 = s1 + v.limb2.into() + base * v.limb3.into(); + let (_s0, _s1, _s2) = hades_permutation(in_1, in_2, s2); + s0 = _s0; + s1 = _s1; + s2 = _s2; + }; + (add_input_result, PoseidonState { s0: s0, s1: s1, s2: s2 }) + } + + #[inline] + fn next_array, +Drop>( + self: AddInputResult, value: Array + ) -> AddInputResult { + let mut add_input_result = self; + for v in value { + add_input_result = + add_circuit_input( + match add_input_result { + AddInputResult::More(acc) => acc, + AddInputResult::Done(_) => panic_with_felt252(0), + }, + v.into_circuit_input_value() + ); + }; + add_input_result + } + #[inline] + fn next_span(self: AddInputResult, value: Span) -> AddInputResult { + let mut add_input_result = self; + for v in value { + add_input_result = + add_circuit_input( + match add_input_result { + AddInputResult::More(acc) => acc, + AddInputResult::Done(_) => panic_with_felt252(0), + }, + (*v).into_circuit_input_value() + ); + }; + add_input_result + } + // Inlining to make sure possibly huge `C` won't be in a user function name. + #[inline(always)] + fn done_2(self: AddInputResult) -> CircuitData { + match self { + AddInputResult::Done(data) => data, + AddInputResult::More(_) => panic_with_felt252(0), + } + } +} diff --git a/src/cairo/src/ec_ops.cairo b/src/cairo/src/ec_ops.cairo index d81d5304..d5046fdc 100644 --- a/src/cairo/src/ec_ops.cairo +++ b/src/cairo/src/ec_ops.cairo @@ -14,23 +14,24 @@ use core::poseidon::hades_permutation; use garaga::circuits::ec; use garaga::utils; use garaga::basic_field_ops::{sub_mod_p, neg_mod_p, mul_mod_p}; +use garaga::utils::{u384_assert_zero, u384_assert_eq}; #[generate_trait] impl G1PointImpl of G1PointTrait { - fn is_on_curve(self: @G1Point, curve_index: usize) -> bool { + fn assert_on_curve(self: @G1Point, curve_index: usize) { let (check) = ec::run_IS_ON_CURVE_G1_circuit( *self, get_a(curve_index), get_b(curve_index), curve_index ); - return (check == u384 { limb0: 0, limb1: 0, limb2: 0, limb3: 0 }); + u384_assert_zero(check); } - fn is_in_subgroup( + fn assert_in_subgroup( self: @G1Point, curve_index: usize, msm_hint: Option, derive_point_from_x_hint: Option - ) -> bool { + ) { match curve_index { - 0 => { self.is_on_curve(curve_index) }, // BN254 (cofactor 1) + 0 => { self.assert_on_curve(curve_index) }, // BN254 (cofactor 1) 1 => { // https://github.com/Consensys/gnark-crypto/blob/ff4c0ddbe1ef37d1c1c6bec8c36fc43a84c86be5/ecc/bls12-381/g1.go#L492 let p = get_p(curve_index); @@ -43,9 +44,11 @@ impl G1PointImpl of G1PointTrait { derive_point_from_x_hint.unwrap(), curve_index ); - return ec_safe_add(*self, x_sq_phi_P, curve_index).is_infinity(); + if !ec_safe_add(*self, x_sq_phi_P, curve_index).is_infinity() { + panic_with_felt252(0); + } }, // BLS12-381 - _ => { panic!("Unsupported curve index for G1 subgroup check") }, + _ => { panic_with_felt252(0) }, } } fn is_infinity(self: @G1Point) -> bool { @@ -68,16 +71,19 @@ impl G1PointImpl of G1PointTrait { #[generate_trait] impl G2PointImpl of G2PointTrait { - fn is_on_curve(self: @G2Point, curve_index: usize) -> bool { + fn assert_on_curve(self: @G2Point, curve_index: usize) { let (b20, b21) = get_b2(curve_index).unwrap(); let (check0, check1) = ec::run_IS_ON_CURVE_G2_circuit( *self, get_a(curve_index), b20, b21, curve_index ); - let zero = u384 { limb0: 0, limb1: 0, limb2: 0, limb3: 0 }; - return (check0 == zero && check1 == zero); + u384_assert_zero(check0); + u384_assert_zero(check1); } } + +// Adds two elliptic curve points on a given curve. +// Does not check the input points are on the curve. fn ec_safe_add(p: G1Point, q: G1Point, curve_index: usize) -> G1Point { if p.is_infinity() { return q; @@ -121,7 +127,7 @@ fn get_DERIVE_POINT_FROM_X_circuit( let in3 = CircuitElement::> {}; // g - Fp* Generator // WITNESS stack - let in4 = CircuitElement::> {}; // sqrt(rhs) or sqrt(g*rhs) + let in4 = CircuitElement::> {}; // sqrt(rhs) or sqrt(g*rhs) let t0 = circuit_mul(in0, in0); // x^2 let t1 = circuit_mul(in0, t0); // x^3 let t2 = circuit_mul(in1, in0); // a*x @@ -288,10 +294,9 @@ fn scalar_mul_g1_fixed_small_scalar( ); // Check result points are either on curve or the point at infinity - assert!( - hint.Q.is_on_curve(curve_index) || hint.Q.is_infinity(), - "Q is neither on curve nor the point at infinity" - ); + if !hint.Q.is_infinity() { + hint.Q.assert_on_curve(curve_index); + } // Validate the degrees of the functions field elements given the msm size hint.SumDlogDiv.validate_degrees(1); @@ -307,7 +312,7 @@ fn scalar_mul_g1_fixed_small_scalar( let (s0, s1, s2) = hint.SumDlogDiv.update_hash_state(s0, s1, s2); // Check input points are on curve and hash them at the same time. - assert!(point.is_on_curve(curve_index), "point is not on curve"); + point.assert_on_curve(curve_index); let (s0, s1, s2) = point.update_hash_state(s0, s1, s2); // Hash result point @@ -342,6 +347,10 @@ fn scalar_mul_g1_fixed_small_scalar( return hint.Q; } +// Verifies the mutli scalar multiplication of a set of points on a given curve is equal to +// hint.Q_low + 2**128 * hint.Q_high. +// Uses https://eprint.iacr.org/2022/596.pdf eq 3 and samples a random EC point from the inputs and +// the hint. fn msm_g1( points: Span, scalars: Span, @@ -357,18 +366,17 @@ fn msm_g1( } // Check result points are either on curve, or the point at infinity - assert!( - hint.Q_low.is_on_curve(curve_index) || hint.Q_low.is_infinity(), - "Q_low is neither on curve nor the point at infinity" - ); - assert!( - hint.Q_high.is_on_curve(curve_index) || hint.Q_high.is_infinity(), - "Q_high is neither on curve nor the point at infinity" - ); - assert!( - hint.Q_high_shifted.is_on_curve(curve_index) || hint.Q_high_shifted.is_infinity(), - "Q_high_shifted is neither on curve nor the point at infinity" - ); + if !hint.Q_low.is_infinity() { + hint.Q_low.assert_on_curve(curve_index); + } + + if !hint.Q_high.is_infinity() { + hint.Q_high.assert_on_curve(curve_index); + } + + if !hint.Q_high_shifted.is_infinity() { + hint.Q_high_shifted.assert_on_curve(curve_index); + } // Validate the degrees of the functions field elements given the msm size hint.SumDlogDivLow.validate_degrees(n); @@ -393,7 +401,7 @@ fn msm_g1( // Check input points are on curve and hash them at the same time. for point in points { - assert!(point.is_on_curve(curve_index), "One of the points is not on curve"); + point.assert_on_curve(curve_index); let (_s0, _s1, _s2) = point.update_hash_state(s0, s1, s2); s0 = _s0; s1 = _s1; @@ -435,7 +443,7 @@ fn msm_g1( scalars, scalars_digits_decompositions ); - // Hardcoded epns for 2^128 + // Hardcoded epns for 2**128 let epns_shifted: Array<(felt252, felt252, felt252, felt252)> = array![ (5279154705627724249993186093248666011, 345561521626566187713367793525016877467, -1, -1) ]; @@ -463,6 +471,8 @@ fn msm_g1( return ec_safe_add(hint.Q_low, hint.Q_high_shifted, curve_index); } +// Verifies equation 3 in https://eprint.iacr.org/2022/596.pdf, using directly the weighted sum by +// (-3)**i of the logarithmic derivatives of the divisors functions. fn zk_ecip_check( points: Span, epns: Array<(felt252, felt252, felt252, felt252)>, @@ -491,7 +501,7 @@ fn zk_ecip_check( Q_result: Q_result, curve_index: curve_index ); - assert!(lhs == rhs, "LHS and RHS are not equal"); + u384_assert_eq(lhs, rhs); } fn compute_lhs_ecip( @@ -977,4 +987,3 @@ mod tests { assert!(result.y == y); } } - diff --git a/src/cairo/src/groth16.cairo b/src/cairo/src/groth16.cairo index 5ba53513..29df353f 100644 --- a/src/cairo/src/groth16.cairo +++ b/src/cairo/src/groth16.cairo @@ -23,12 +23,14 @@ use garaga::definitions::{ use garaga::circuits::multi_pairing_check::{ run_BN254_MP_CHECK_PREPARE_LAMBDA_ROOT_circuit, run_BLS12_381_MP_CHECK_PREPARE_LAMBDA_ROOT_circuit, - run_BLS12_381_MP_CHECK_PREPARE_PAIRS_3P_circuit, run_BN254_MP_CHECK_PREPARE_PAIRS_3P_circuit + run_BLS12_381_MP_CHECK_PREPARE_PAIRS_3P_circuit, run_BN254_MP_CHECK_PREPARE_PAIRS_3P_circuit, + run_BN254_MP_CHECK_PREPARE_PAIRS_1P_circuit }; use garaga::circuits::multi_pairing_check as mpc; use garaga::circuits::extf_mul::{ - run_BLS12_381_FP12_MUL_ASSERT_ONE_circuit, run_BN254_FP12_MUL_ASSERT_ONE_circuit + run_BLS12_381_FP12_MUL_ASSERT_ONE_circuit, run_BN254_FP12_MUL_ASSERT_ONE_circuit, + run_BN254_EVAL_E12D_circuit, run_BLS12_381_EVAL_E12D_circuit }; use core::option::Option; use garaga::utils; @@ -36,10 +38,12 @@ use core::array::{SpanTrait}; use core::poseidon::hades_permutation; -use garaga::basic_field_ops::{neg_mod_p}; +use garaga::basic_field_ops::{neg_mod_p, compute_yInvXnegOverY_BN254}; use garaga::ec_ops::{msm_g1, MSMHint, DerivePointFromXHint, G1PointTrait, G2PointTrait}; use garaga::pairing_check::{MPCheckHintBN254, MPCheckHintBLS12_381}; +use garaga::utils::{u384_assert_zero, usize_assert_eq, PoseidonState}; + // Groth16 proof structure, genric for both BN254 and BLS12-381. #[derive(Drop)] @@ -97,9 +101,11 @@ fn verify_groth16_bn254( public_inputs_msm_derive_point_from_x_hint.unbox(), 0 ); - assert!(proof.a.is_in_subgroup(0, Option::None, Option::None)); - assert!(proof.b.is_on_curve(0)); - assert!(proof.c.is_in_subgroup(0, Option::None, Option::None)); + + proof.a.assert_on_curve(0); + proof.b.assert_on_curve(0); + proof.c.assert_on_curve(0); + return multi_pairing_check_bn254_3P_2F_with_extra_miller_loop_result( G1G2Pair { p: vk_x, q: verification_key.gamma_g2 }, G1G2Pair { p: proof.c, q: verification_key.delta_g2 }, @@ -145,9 +151,11 @@ fn verify_groth16_bls12_381( public_inputs_msm_derive_point_from_x_hint.unbox(), 1 ); - assert!(proof.a.is_in_subgroup(1, Option::None, Option::None)); - assert!(proof.b.is_on_curve(1)); - assert!(proof.c.is_in_subgroup(1, Option::None, Option::None)); + + proof.a.assert_on_curve(1); + proof.b.assert_on_curve(1); + proof.c.assert_on_curve(1); + return multi_pairing_check_bls12_381_3P_2F_with_extra_miller_loop_result( G1G2Pair { p: vk_x, q: verification_key.gamma_g2 }, G1G2Pair { p: proof.c, q: verification_key.delta_g2 }, @@ -215,29 +223,21 @@ fn multi_pairing_check_bn254_3P_2F_with_extra_miller_loop_result( mpcheck_hint: MPCheckHintBN254, small_Q: E12DMulQuotient ) -> bool { - assert!( - mpcheck_hint.big_Q.len() == 114, - "Wrong Q degree for BN254 3-Pairs Pairing check, should be degree 113 (114 coefficients)" - ); - assert!(mpcheck_hint.Ris.len() == 53, "Wrong Number of Ris for BN254 Multi-Pairing check"); + usize_assert_eq(mpcheck_hint.big_Q.len(), 114); + usize_assert_eq(mpcheck_hint.Ris.len(), 53); - let ( - processed_pair0, processed_pair1, processed_pair2 - ): (BNProcessedPair, BNProcessedPair, BNProcessedPair) = - run_BN254_MP_CHECK_PREPARE_PAIRS_3P_circuit( - pair0.p, - pair0.q.y0, - pair0.q.y1, - pair1.p, - pair1.q.y0, - pair1.q.y1, - pair2.p, - pair2.q.y0, - pair2.q.y1 + let (yInv_0, xNegOverY_0) = compute_yInvXnegOverY_BN254(pair0.p.x, pair0.p.y); + let (yInv_1, xNegOverY_1) = compute_yInvXnegOverY_BN254(pair1.p.x, pair1.p.y); + let (processed_pair2) = run_BN254_MP_CHECK_PREPARE_PAIRS_1P_circuit( + pair2.p, pair2.q.y0, pair2.q.y1 ); - // Init sponge state - let (s0, s1, s2) = hades_permutation('MPCHECK_BN254_3P_2F', 0, 1); + // Init sponge state == hades_permutation(int.from_bytes(b'MPCHECK_BN254_3P_2F', "big"), 0, 1) + let (s0, s1, s2) = ( + 0x716fcd6880324d6d3638aeb033dfab41310a98ce7aa8f44159a67f4a8a4fbc8, + 0x68dc029639a62ca19056e890fb846e0b9c89926a0ba1371b79201a6563a0df6, + 0x45cdbfd4efe739304e9ec6744f6bdb99016ab57885cbe7e4c59108d2a649b + ); // Hash Inputs let (s0, s1, s2) = utils::hash_G1G2Pair(pair0, s0, s1, s2); let (s0, s1, s2) = utils::hash_G1G2Pair(pair1, s0, s1, s2); @@ -263,18 +263,19 @@ fn multi_pairing_check_bn254_3P_2F_with_extra_miller_loop_result( ); // init bit for bn254 is 0: - let R_0 = mpcheck_hint.Ris.at(0); - let (_Q2, _lhs, _c_i, _f_1_of_z) = mpc::run_BN254_MP_CHECK_INIT_BIT_3P_2F_circuit( - processed_pair0.yInv, - processed_pair0.xNegOverY, + let mut Ris = mpcheck_hint.Ris; + let (R_0_of_Z) = run_BN254_EVAL_E12D_circuit(*Ris.pop_front().unwrap(), z); + let (_Q2, _lhs, _c_i) = mpc::run_BN254_MP_CHECK_INIT_BIT_3P_2F_circuit( + yInv_0, + xNegOverY_0, *lines.pop_front().unwrap(), - processed_pair1.yInv, - processed_pair1.xNegOverY, + yInv_1, + xNegOverY_1, *lines.pop_front().unwrap(), processed_pair2.yInv, processed_pair2.xNegOverY, pair2.q, - *R_0, + R_0_of_Z, c_i, z, c_inv_of_z, @@ -283,43 +284,41 @@ fn multi_pairing_check_bn254_3P_2F_with_extra_miller_loop_result( let mut Q2 = _Q2; let mut LHS = _lhs; - let mut f_i_of_z = _f_1_of_z; + let mut f_i_of_z = R_0_of_Z; c_i = _c_i; // rest of miller loop let mut bits = bn_bits.span(); - let mut R_i_index = 1; while let Option::Some(bit) = bits.pop_front() { - let R_i = mpcheck_hint.Ris.at(R_i_index); - R_i_index += 1; - let (_Q2, _f_i_plus_one_of_z, _LHS, _c_i): (G2Point, u384, u384, u384) = match *bit { + let (R_i_of_z) = run_BN254_EVAL_E12D_circuit(*Ris.pop_front().unwrap(), z); + let (_Q2, _LHS, _c_i): (G2Point, u384, u384) = match *bit { 0 => { mpc::run_BN254_MP_CHECK_BIT0_3P_2F_circuit( - processed_pair0.yInv, - processed_pair0.xNegOverY, + yInv_0, + xNegOverY_0, *lines.pop_front().unwrap(), - processed_pair1.yInv, - processed_pair1.xNegOverY, + yInv_1, + xNegOverY_1, *lines.pop_front().unwrap(), processed_pair2.yInv, processed_pair2.xNegOverY, Q2, LHS, f_i_of_z, - *R_i, + R_i_of_z, z, c_i ) }, 1 => { mpc::run_BN254_MP_CHECK_BIT1_3P_2F_circuit( - processed_pair0.yInv, - processed_pair0.xNegOverY, + yInv_0, + xNegOverY_0, *lines.pop_front().unwrap(), *lines.pop_front().unwrap(), - processed_pair1.yInv, - processed_pair1.xNegOverY, + yInv_1, + xNegOverY_1, *lines.pop_front().unwrap(), *lines.pop_front().unwrap(), processed_pair2.yInv, @@ -328,7 +327,7 @@ fn multi_pairing_check_bn254_3P_2F_with_extra_miller_loop_result( pair2.q, LHS, f_i_of_z, - *R_i, + R_i_of_z, c_inv_of_z, z, c_i, @@ -336,12 +335,12 @@ fn multi_pairing_check_bn254_3P_2F_with_extra_miller_loop_result( }, 2 => { mpc::run_BN254_MP_CHECK_BIT1_3P_2F_circuit( - processed_pair0.yInv, - processed_pair0.xNegOverY, + yInv_0, + xNegOverY_0, *lines.pop_front().unwrap(), *lines.pop_front().unwrap(), - processed_pair1.yInv, - processed_pair1.xNegOverY, + yInv_1, + xNegOverY_1, *lines.pop_front().unwrap(), *lines.pop_front().unwrap(), processed_pair2.yInv, @@ -355,7 +354,7 @@ fn multi_pairing_check_bn254_3P_2F_with_extra_miller_loop_result( }, LHS, f_i_of_z, - *R_i, + R_i_of_z, c_of_z, z, c_i, @@ -363,12 +362,12 @@ fn multi_pairing_check_bn254_3P_2F_with_extra_miller_loop_result( }, _ => { mpc::run_BN254_MP_CHECK_BIT00_3P_2F_circuit( - processed_pair0.yInv, - processed_pair0.xNegOverY, + yInv_0, + xNegOverY_0, *lines.pop_front().unwrap(), *lines.pop_front().unwrap(), - processed_pair1.yInv, - processed_pair1.xNegOverY, + yInv_1, + xNegOverY_1, *lines.pop_front().unwrap(), *lines.pop_front().unwrap(), processed_pair2.yInv, @@ -376,7 +375,7 @@ fn multi_pairing_check_bn254_3P_2F_with_extra_miller_loop_result( Q2, LHS, f_i_of_z, - *R_i, + R_i_of_z, z, c_i ) @@ -384,20 +383,20 @@ fn multi_pairing_check_bn254_3P_2F_with_extra_miller_loop_result( }; Q2 = _Q2; LHS = _LHS; - f_i_of_z = _f_i_plus_one_of_z; + f_i_of_z = R_i_of_z; c_i = _c_i; }; - let R_n_minus_2 = mpcheck_hint.Ris.at(mpcheck_hint.Ris.len() - 2); - let R_last = mpcheck_hint.Ris.at(mpcheck_hint.Ris.len() - 1); + let R_n_minus_2 = Ris.pop_front().unwrap(); + let R_last = Ris.pop_front().unwrap(); let (check) = mpc::run_BN254_MP_CHECK_FINALIZE_BN_3P_2F_circuit( - processed_pair0.yInv, - processed_pair0.xNegOverY, + yInv_0, + xNegOverY_0, *lines.pop_front().unwrap(), *lines.pop_front().unwrap(), - processed_pair1.yInv, - processed_pair1.xNegOverY, + yInv_1, + xNegOverY_1, *lines.pop_front().unwrap(), *lines.pop_front().unwrap(), pair2.q, @@ -418,7 +417,7 @@ fn multi_pairing_check_bn254_3P_2F_with_extra_miller_loop_result( ); // Checks that LHS = Q(z) * P_irr(z) - assert!(check == u384 { limb0: 0, limb1: 0, limb2: 0, limb3: 0 }, "Final check failed"); + u384_assert_zero(check); // Use precomputed miller loop result & check f * M = 1 let (s0, s1, s2) = utils::hash_E12D(precomputed_miller_loop_result, s0, s1, s2); @@ -426,7 +425,7 @@ fn multi_pairing_check_bn254_3P_2F_with_extra_miller_loop_result( let (check) = run_BN254_FP12_MUL_ASSERT_ONE_circuit( *R_last, precomputed_miller_loop_result, small_Q, z.into() ); - assert!(check == u384 { limb0: 0, limb1: 0, limb2: 0, limb3: 0 }); + u384_assert_zero(check); return true; } @@ -521,8 +520,9 @@ fn multi_pairing_check_bls12_381_3P_2F_with_extra_miller_loop_result( ); // init bit for bls is 1: - let R_0 = hint.Ris.at(0); - let (_Q2, _lhs, _f_1_of_z) = mpc::run_BLS12_381_MP_CHECK_INIT_BIT_3P_2F_circuit( + let mut Ris = hint.Ris; + let (R_0_of_Z) = run_BLS12_381_EVAL_E12D_circuit(*Ris.pop_front().unwrap(), z); + let (_Q2, _lhs) = mpc::run_BLS12_381_MP_CHECK_INIT_BIT_3P_2F_circuit( processed_pair0.yInv, processed_pair0.xNegOverY, *lines.pop_front().unwrap(), @@ -534,7 +534,7 @@ fn multi_pairing_check_bls12_381_3P_2F_with_extra_miller_loop_result( processed_pair2.yInv, processed_pair2.xNegOverY, pair2.q, - *R_0, + R_0_of_Z, c_i, z, conjugate_c_inv_of_z @@ -542,18 +542,17 @@ fn multi_pairing_check_bls12_381_3P_2F_with_extra_miller_loop_result( let mut Q2 = _Q2; let mut LHS = _lhs; - let mut f_i_of_z = _f_1_of_z; + let mut f_i_of_z = R_0_of_Z; // 危_i (螤_k (c_i*P_k(z))) = (危_i c_i*Q_i(z)) * P(z) + 危_i c_i * R_i(z) // <=> 危_i (螤_k (c_i*P_k(z))) - 危_i c_i * R_i(z) = (危_i c_i*Q_i(z)) * P(z) // => LHS = 危_i (螤_k (c_i*P_k(z))) - 危_i c_i * R_i(z) // rest of miller loop let mut bits = bls_bits.span(); - let mut R_i_index = 1; while let Option::Some(bit) = bits.pop_front() { - let R_i = hint.Ris.at(R_i_index); - let (_Q2, _f_i_plus_one_of_z, _LHS, _c_i): (G2Point, u384, u384, u384) = match *bit { + let (R_i_of_z) = run_BLS12_381_EVAL_E12D_circuit(*Ris.pop_front().unwrap(), z); + let (_Q2, _LHS, _c_i): (G2Point, u384, u384) = match *bit { 0 => { mpc::run_BLS12_381_MP_CHECK_BIT0_3P_2F_circuit( processed_pair0.yInv, @@ -567,7 +566,7 @@ fn multi_pairing_check_bls12_381_3P_2F_with_extra_miller_loop_result( Q2, LHS, f_i_of_z, - *R_i, + R_i_of_z, z, c_i ) @@ -588,7 +587,7 @@ fn multi_pairing_check_bls12_381_3P_2F_with_extra_miller_loop_result( pair2.q, LHS, f_i_of_z, - *R_i, + R_i_of_z, conjugate_c_inv_of_z, z, c_i, @@ -609,20 +608,19 @@ fn multi_pairing_check_bls12_381_3P_2F_with_extra_miller_loop_result( Q2, LHS, f_i_of_z, - *R_i, + R_i_of_z, z, c_i ) } }; - R_i_index += 1; Q2 = _Q2; LHS = _LHS; - f_i_of_z = _f_i_plus_one_of_z; + f_i_of_z = R_i_of_z; c_i = _c_i; }; - let R_last = hint.Ris.at(hint.Ris.len() - 1); + let R_last = Ris.pop_front().unwrap(); // Checks that LHS = Q(z) * P_irr(z) let (check) = mpc::run_BLS12_381_MP_CHECK_FINALIZE_BLS_3P_circuit( diff --git a/src/cairo/src/lib.cairo b/src/cairo/src/lib.cairo index fd0ab30e..d43099cd 100644 --- a/src/cairo/src/lib.cairo +++ b/src/cairo/src/lib.cairo @@ -7,7 +7,7 @@ mod groth16; mod basic_field_ops; mod utils_calldata; mod tests; - +mod core; #[cfg(test)] mod tests_lib { diff --git a/src/cairo/src/pairing_check.cairo b/src/cairo/src/pairing_check.cairo index c4200be4..45e68361 100644 --- a/src/cairo/src/pairing_check.cairo +++ b/src/cairo/src/pairing_check.cairo @@ -19,7 +19,8 @@ use garaga::circuits::multi_pairing_check::{ run_BLS12_381_MP_CHECK_FINALIZE_BLS_2P_circuit, }; use garaga::circuits::extf_mul::{ - run_BLS12_381_FP12_MUL_ASSERT_ONE_circuit, run_BN254_FP12_MUL_ASSERT_ONE_circuit + run_BLS12_381_FP12_MUL_ASSERT_ONE_circuit, run_BN254_FP12_MUL_ASSERT_ONE_circuit, + run_BN254_EVAL_E12D_circuit, run_BLS12_381_EVAL_E12D_circuit }; use core::poseidon::hades_permutation; @@ -30,7 +31,8 @@ use garaga::definitions::{ use core::option::Option; use garaga::utils; use core::array::{SpanTrait}; - +use garaga::utils::{u384_assert_zero, usize_assert_eq, PoseidonState}; +use garaga::basic_field_ops::{compute_yInvXnegOverY_BN254, compute_yInvXnegOverY_BLS12_381}; #[derive(Drop)] struct MPCheckHintBN254 { @@ -52,18 +54,11 @@ struct MPCheckHintBLS12_381 { fn multi_pairing_check_bn254_2P_2F( pair0: G1G2Pair, pair1: G1G2Pair, mut lines: Span, hint: MPCheckHintBN254, ) -> bool { - assert!( - hint.big_Q.len() == 87, - "Wrong Q degree for BN254 2-Pairs Pairing check, should be degree 86 (87 coefficients)" - ); - assert!( - hint.Ris.len() == 53, "Wrong Number of Ris for BN254 Multi-Pairing check, should be 54" - ); + usize_assert_eq(hint.big_Q.len(), 87); + usize_assert_eq(hint.Ris.len(), 53); - let (processed_pair0, processed_pair1): (BNProcessedPair, BNProcessedPair) = - run_BN254_MP_CHECK_PREPARE_PAIRS_2P_circuit( - pair0.p, pair0.q.y0, pair0.q.y1, pair1.p, pair1.q.y0, pair1.q.y1 - ); + let (yInv_0, xNegOverY_0) = compute_yInvXnegOverY_BN254(pair0.p.x, pair0.p.y); + let (yInv_1, xNegOverY_1) = compute_yInvXnegOverY_BN254(pair1.p.x, pair1.p.y); // Init sponge state let (s0, s1, s2) = hades_permutation('MPCHECK_BN254_2P_2F', 0, 1); @@ -89,15 +84,16 @@ fn multi_pairing_check_bn254_2P_2F( ); // init bit for bn254 is 0: - let R_0 = hint.Ris.at(0); - let (_lhs, _c_i, _f_1_of_z) = run_BN254_MP_CHECK_INIT_BIT_2P_2F_circuit( - processed_pair0.yInv, - processed_pair0.xNegOverY, + let mut Ris = hint.Ris; + let (R_0_of_Z) = run_BN254_EVAL_E12D_circuit(*Ris.pop_front().unwrap(), z); + let (_lhs, _c_i) = run_BN254_MP_CHECK_INIT_BIT_2P_2F_circuit( + yInv_0, + xNegOverY_0, *lines.pop_front().unwrap(), - processed_pair1.yInv, - processed_pair1.xNegOverY, + yInv_1, + xNegOverY_1, *lines.pop_front().unwrap(), - *R_0, + R_0_of_Z, c_i, z, c_inv_of_z, @@ -105,45 +101,43 @@ fn multi_pairing_check_bn254_2P_2F( ); let mut LHS = _lhs; - let mut f_i_of_z = _f_1_of_z; + let mut f_i_of_z = R_0_of_Z; c_i = _c_i; // rest of miller loop let mut bits = bn_bits.span(); - let mut R_i_index = 1; while let Option::Some(bit) = bits.pop_front() { - let R_i = hint.Ris.at(R_i_index); - R_i_index += 1; - let (_f_i_plus_one_of_z, _LHS, _c_i): (u384, u384, u384) = match *bit { + let (R_i_of_z) = run_BN254_EVAL_E12D_circuit(*Ris.pop_front().unwrap(), z); + let (_LHS, _c_i): (u384, u384) = match *bit { 0 => { run_BN254_MP_CHECK_BIT0_2P_2F_circuit( - processed_pair0.yInv, - processed_pair0.xNegOverY, + yInv_0, + xNegOverY_0, *lines.pop_front().unwrap(), - processed_pair1.yInv, - processed_pair1.xNegOverY, + yInv_1, + xNegOverY_1, *lines.pop_front().unwrap(), LHS, f_i_of_z, - *R_i, + R_i_of_z, z, c_i ) }, 1 => { run_BN254_MP_CHECK_BIT1_2P_2F_circuit( - processed_pair0.yInv, - processed_pair0.xNegOverY, + yInv_0, + xNegOverY_0, *lines.pop_front().unwrap(), *lines.pop_front().unwrap(), - processed_pair1.yInv, - processed_pair1.xNegOverY, + yInv_1, + xNegOverY_1, *lines.pop_front().unwrap(), *lines.pop_front().unwrap(), LHS, f_i_of_z, - *R_i, + R_i_of_z, c_inv_of_z, z, c_i, @@ -151,17 +145,17 @@ fn multi_pairing_check_bn254_2P_2F( }, 2 => { run_BN254_MP_CHECK_BIT1_2P_2F_circuit( - processed_pair0.yInv, - processed_pair0.xNegOverY, + yInv_0, + xNegOverY_0, *lines.pop_front().unwrap(), *lines.pop_front().unwrap(), - processed_pair1.yInv, - processed_pair1.xNegOverY, + yInv_1, + xNegOverY_1, *lines.pop_front().unwrap(), *lines.pop_front().unwrap(), LHS, f_i_of_z, - *R_i, + R_i_of_z, c_of_z, z, c_i, @@ -169,36 +163,36 @@ fn multi_pairing_check_bn254_2P_2F( }, _ => { run_BN254_MP_CHECK_BIT00_2P_2F_circuit( - processed_pair0.yInv, - processed_pair0.xNegOverY, + yInv_0, + xNegOverY_0, *lines.pop_front().unwrap(), *lines.pop_front().unwrap(), - processed_pair1.yInv, - processed_pair1.xNegOverY, + yInv_1, + xNegOverY_1, *lines.pop_front().unwrap(), *lines.pop_front().unwrap(), LHS, f_i_of_z, - *R_i, + R_i_of_z, z, c_i ) } }; LHS = _LHS; - f_i_of_z = _f_i_plus_one_of_z; + f_i_of_z = R_i_of_z; c_i = _c_i; }; - let R_n_minus_2 = hint.Ris.at(hint.Ris.len() - 2); - let R_last = hint.Ris.at(hint.Ris.len() - 1); + let R_n_minus_2 = Ris.pop_front().unwrap(); + let R_last = Ris.pop_front().unwrap(); let (check) = run_BN254_MP_CHECK_FINALIZE_BN_2P_2F_circuit( - processed_pair0.yInv, - processed_pair0.xNegOverY, + yInv_0, + xNegOverY_0, *lines.pop_front().unwrap(), *lines.pop_front().unwrap(), - processed_pair1.yInv, - processed_pair1.xNegOverY, + yInv_1, + xNegOverY_1, *lines.pop_front().unwrap(), *lines.pop_front().unwrap(), *R_n_minus_2, @@ -223,17 +217,11 @@ fn multi_pairing_check_bn254_2P_2F( fn multi_pairing_check_bls12_381_2P_2F( pair0: G1G2Pair, pair1: G1G2Pair, mut lines: Span, hint: MPCheckHintBLS12_381 ) -> bool { - assert!( - hint.big_Q.len() == 81, - "Wrong Q degree for BLS12-381 2-Pairs Paring check, should be degree 80 (81 coeffs)" - ); - assert!( - hint.Ris.len() == 36, "Wrong Number of Ris for BLS12-381 2-Pairs Paring check, should be 64" - ); - let (processed_pair0, processed_pair1): (BLSProcessedPair, BLSProcessedPair) = - run_BLS12_381_MP_CHECK_PREPARE_PAIRS_2P_circuit( - pair0.p, pair1.p - ); + usize_assert_eq(hint.big_Q.len(), 81); + usize_assert_eq(hint.Ris.len(), 36); + + let (yInv_0, xNegOverY_0) = compute_yInvXnegOverY_BLS12_381(pair0.p.x, pair0.p.y); + let (yInv_1, xNegOverY_1) = compute_yInvXnegOverY_BLS12_381(pair1.p.x, pair1.p.y); // Init sponge state let (s0, s1, s2) = hades_permutation('MPCHECK_BLS12_381_2P_2F', 0, 1); @@ -259,24 +247,25 @@ fn multi_pairing_check_bls12_381_2P_2F( ); // init bit for bls is 1: - let R_0 = hint.Ris.at(0); - let (_lhs, _f_1_of_z) = run_BLS12_381_MP_CHECK_INIT_BIT_2P_2F_circuit( - processed_pair0.yInv, - processed_pair0.xNegOverY, + let mut Ris = hint.Ris; + let (R_0_of_Z) = run_BLS12_381_EVAL_E12D_circuit(*Ris.pop_front().unwrap(), z); + let (_lhs) = run_BLS12_381_MP_CHECK_INIT_BIT_2P_2F_circuit( + yInv_0, + xNegOverY_0, *lines.pop_front().unwrap(), *lines.pop_front().unwrap(), - processed_pair1.yInv, - processed_pair1.xNegOverY, + yInv_1, + xNegOverY_1, *lines.pop_front().unwrap(), *lines.pop_front().unwrap(), - *R_0, + R_0_of_Z, c_i, z, conjugate_c_inv_of_z ); let mut LHS = _lhs; - let mut f_i_of_z = _f_1_of_z; + let mut f_i_of_z = R_0_of_Z; // 危_i (螤_k (c_i*P_k(z))) = (危_i c_i*Q_i(z)) * P(z) + 危_i c_i * R_i(z) // <=> 危_i (螤_k (c_i*P_k(z))) - 危_i c_i * R_i(z) = (危_i c_i*Q_i(z)) * P(z) @@ -284,40 +273,38 @@ fn multi_pairing_check_bls12_381_2P_2F( // rest of miller loop let mut bits = bls_bits.span(); - let mut R_i_index = 1; while let Option::Some(bit) = bits.pop_front() { - let R_i = hint.Ris.at(R_i_index); - R_i_index += 1; - let (_f_i_plus_one_of_z, _LHS, _c_i): (u384, u384, u384) = match *bit { + let (R_i_of_z) = run_BLS12_381_EVAL_E12D_circuit(*Ris.pop_front().unwrap(), z); + let (_LHS, _c_i): (u384, u384) = match *bit { 0 => { run_BLS12_381_MP_CHECK_BIT0_2P_2F_circuit( - processed_pair0.yInv, - processed_pair0.xNegOverY, + yInv_0, + xNegOverY_0, *lines.pop_front().unwrap(), - processed_pair1.yInv, - processed_pair1.xNegOverY, + yInv_1, + xNegOverY_1, *lines.pop_front().unwrap(), LHS, f_i_of_z, - *R_i, + R_i_of_z, z, c_i ) }, 1 => { run_BLS12_381_MP_CHECK_BIT1_2P_2F_circuit( - processed_pair0.yInv, - processed_pair0.xNegOverY, + yInv_0, + xNegOverY_0, *lines.pop_front().unwrap(), *lines.pop_front().unwrap(), - processed_pair1.yInv, - processed_pair1.xNegOverY, + yInv_1, + xNegOverY_1, *lines.pop_front().unwrap(), *lines.pop_front().unwrap(), LHS, f_i_of_z, - *R_i, + R_i_of_z, conjugate_c_inv_of_z, z, c_i @@ -325,28 +312,28 @@ fn multi_pairing_check_bls12_381_2P_2F( }, _ => { run_BLS12_381_MP_CHECK_BIT00_2P_2F_circuit( - processed_pair0.yInv, - processed_pair0.xNegOverY, + yInv_0, + xNegOverY_0, *lines.pop_front().unwrap(), *lines.pop_front().unwrap(), - processed_pair1.yInv, - processed_pair1.xNegOverY, + yInv_1, + xNegOverY_1, *lines.pop_front().unwrap(), *lines.pop_front().unwrap(), LHS, f_i_of_z, - *R_i, + R_i_of_z, z, c_i ) } }; LHS = _LHS; - f_i_of_z = _f_i_plus_one_of_z; + f_i_of_z = R_i_of_z; c_i = _c_i; }; - let R_last = hint.Ris.at(hint.Ris.len() - 1); + let R_last = Ris.pop_front().unwrap(); let (check,) = run_BLS12_381_MP_CHECK_FINALIZE_BLS_2P_circuit( *R_last, c_i, w_of_z, z, c_inv_of_z_frob_1, LHS, f_i_of_z, hint.big_Q ); diff --git a/src/cairo/src/tests.cairo b/src/cairo/src/tests.cairo index 08c99230..27b4f20b 100644 --- a/src/cairo/src/tests.cairo +++ b/src/cairo/src/tests.cairo @@ -1,3 +1,2 @@ mod pairing_tests; mod msm_tests; - diff --git a/src/cairo/src/tests/msm_tests.cairo b/src/cairo/src/tests/msm_tests.cairo index ae51e0c2..bdb60e00 100644 --- a/src/cairo/src/tests/msm_tests.cairo +++ b/src/cairo/src/tests/msm_tests.cairo @@ -8,15 +8,15 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0x70bb0db6d95e0ef64f4bebcf, - limb1: 0x4488d8ef547d7f86e49d2c, - limb2: 0x50850527502f7c6, + limb0: 0x5c724369afbc772d02aed58e, + limb1: 0x2cd3bc838c66439a3d6160b, + limb2: 0x72f26b55fb56be1, limb3: 0x0 }, y: u384 { - limb0: 0x1772cbcc26bc4caa12b0cbcc, - limb1: 0xd319f0cd4e3ebe07db6aa849, - limb2: 0x2c6ed961e5be52b, + limb0: 0x772ca79c580e121ca148fe75, + limb1: 0xce2f55e418ca01b3d6d1014b, + limb2: 0x2884b1dc4e84e30f, limb3: 0x0 } }, @@ -24,7 +24,7 @@ mod msm_tests { .span(); let scalars = array![ u256 { - low: 0xe28a2cdcdf484bd244a68754eab10f32, high: 0xe04755e797df425e588662d093c747c + low: 0xb4862b21fb97d43588561712e8e5216a, high: 0x967d0cae6f4590b9a164106cf6a659e }, ] .span(); @@ -32,169 +32,169 @@ mod msm_tests { array![ ( array![ - 0x1, - -0x1, - -0x1, - -0x1, - 0x1, - 0x1, - 0x0, 0x0, -0x1, - -0x1, - -0x1, - -0x1, 0x0, 0x0, - -0x1, - 0x0, - -0x1, + 0x1, + 0x1, + 0x1, + 0x1, + 0x1, 0x0, - -0x1, 0x0, 0x1, + -0x1, 0x0, 0x0, 0x1, 0x1, + 0x1, 0x0, - -0x1, + 0x1, 0x1, 0x0, -0x1, 0x1, - -0x1, + 0x1, 0x0, -0x1, - 0x1, 0x0, + 0x0, + -0x1, 0x1, 0x1, 0x1, - -0x1, + 0x0, -0x1, 0x1, - -0x1, - 0x0, - 0x0, 0x0, 0x1, + 0x0, -0x1, -0x1, - -0x1, - -0x1, - -0x1, + 0x1, + 0x1, + 0x1, 0x0, -0x1, 0x1, 0x1, - 0x1, 0x0, + -0x1, 0x0, -0x1, - 0x1, + -0x1, + 0x0, -0x1, 0x1, 0x0, + 0x1, 0x0, - -0x1, 0x1, 0x0, 0x0, - -0x1, 0x0, - -0x1, + 0x0, 0x1, 0x0, 0x0, + 0x1, + 0x1, 0x0, 0x0, -0x1, + 0x1, + -0x1, + 0x1, + -0x1, + -0x1, + 0x1, 0x0, - 0x0, + 0x1, -0x1, -0x1, ] .span(), array![ + 0x1, + 0x1, + -0x1, + -0x1, + -0x1, + -0x1, -0x1, 0x0, - 0x1, + -0x1, 0x0, 0x1, + -0x1, + -0x1, 0x1, 0x0, 0x1, 0x1, - 0x0, + 0x1, 0x0, 0x1, -0x1, - -0x1, 0x0, 0x1, 0x0, + -0x1, 0x1, 0x1, 0x1, - -0x1, - 0x0, 0x0, -0x1, + 0x1, + 0x1, + 0x1, 0x0, + -0x1, 0x0, 0x0, 0x1, -0x1, - 0x1, - 0x1, -0x1, 0x1, -0x1, + 0x1, -0x1, - -0x1, - 0x0, 0x1, 0x0, 0x1, - 0x0, -0x1, -0x1, - 0x0, + 0x1, + -0x1, + -0x1, + -0x1, -0x1, 0x1, -0x1, 0x1, -0x1, 0x1, - 0x0, - 0x0, 0x1, - 0x0, - 0x0, - 0x0, + -0x1, + 0x1, 0x1, - 0x0, - 0x0, 0x1, -0x1, -0x1, - 0x0, + 0x1, 0x1, -0x1, + 0x1, 0x0, - -0x1, 0x0, - -0x1, - 0x1, - 0x1, 0x0, + 0x1, -0x1, 0x0, - -0x1, - -0x1, 0x1, - 0x0, + 0x1, 0x1, ] .span() @@ -205,57 +205,57 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0x38b831dcd278c412d1024d4e, - limb1: 0x25b61b6964a19172f0267595, - limb2: 0x2b3f31d79ee26829, + limb0: 0xe2c91ebbffedea5cc96ab66c, + limb1: 0x23225d3db7b3eba1aa79078, + limb2: 0x1abab72cfddaa35b, limb3: 0x0 }, y: u384 { - limb0: 0x50a0d558ae6d7332e2dda1ee, - limb1: 0xb947f90d0e7b7c6c8bf3ac60, - limb2: 0x53e059f01a4dd45, + limb0: 0x5ae11a6dada866bbc23ad393, + limb1: 0x26bf86500055ba137a13df58, + limb2: 0x1952422195f9e68f, limb3: 0x0 } }, Q_high: G1Point { x: u384 { - limb0: 0x2dec067f326e031ef03d0f2a, - limb1: 0x712217a7fbaadb9499775e7b, - limb2: 0x19bdc878d8402580, + limb0: 0x8588b047629dc12cef448ea0, + limb1: 0xb9e0087734ce7a283626d4d, + limb2: 0x2e2526be1175da32, limb3: 0x0 }, y: u384 { - limb0: 0x56ebeae106ec8600bd723dfd, - limb1: 0x55d117d69d1accd6f0947a12, - limb2: 0xf863ce45dfb7727, + limb0: 0x606e7e67ab335931dc6b69ed, + limb1: 0xfed6da65fe46b1d8c0cd69e7, + limb2: 0x271119715987cf8a, limb3: 0x0 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0xcfd7fe5ea6c7bf98cefe8459, - limb1: 0x2aea6b41ac49551bb8e6015e, - limb2: 0x2740f963ab8fd594, + limb0: 0x3f7b089e59fade8d29358998, + limb1: 0x9bcb567c9510886ae0a3abba, + limb2: 0xfe00f31f2f77676, limb3: 0x0 }, y: u384 { - limb0: 0x30d060651fae155425b7562c, - limb1: 0x9fa2d85c1f53c7b4e7baf138, - limb2: 0x28b8477432c17815, + limb0: 0x7ed9b12e41d1e2d4fb1ecde4, + limb1: 0xef5ef3c193d8c9972728aadf, + limb2: 0xb0ac47686963964, limb3: 0x0 } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0xb237169816425142739b9ead, - limb1: 0xb897b7f81000049fd1d7d5a, - limb2: 0xb2e8fc27c2926af, + limb0: 0xa91a8e06192b6582b87b3d12, + limb1: 0xf271ee9b1de01ded574a395c, + limb2: 0x16c22426365b7931, limb3: 0x0 }, u384 { - limb0: 0xe027e7967460d9c25e98228, - limb1: 0xdc2822db40c0ac2e5a7ff722, + limb0: 0x1f29b924f67f1217fd978b14, + limb1: 0xdc2822db40c0ac2e4879bc43, limb2: 0x183227397098d014, limb3: 0x0 } @@ -263,15 +263,15 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0xcde90db7c8ac1372e9cdba34, - limb1: 0xad54bba787f0cc61f17ffdf7, - limb2: 0x156c2d9538f95030, + limb0: 0x7ab7571e0aed64c6165aea4d, + limb1: 0x8e33e70fa4c6db9a228a76be, + limb2: 0x15bf70fc8b816805, limb3: 0x0 }, u384 { - limb0: 0xbefe8af99049b90db82ec42a, - limb1: 0x9255a1742d8b496b207657cf, - limb2: 0x1ccc48cd4c403a, + limb0: 0x293668678c762a8d0c63714d, + limb1: 0xb350e41a6d3fb569d903c40d, + limb2: 0xe7a709083a190ed, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -279,49 +279,49 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x3ed2a4ebdd78b2433f4bf4c5, - limb1: 0xa4ce399a32b1725da2d1d4bd, - limb2: 0x1109276c2aab709c, + limb0: 0xd57e5b0a28c7b94f76703abd, + limb1: 0xbd6a024d5aebf649151489c0, + limb2: 0x2eff05901f16ba54, limb3: 0x0 }, u384 { - limb0: 0xa02b74a78ba487e14990aa99, - limb1: 0x79ec61c67b372e462e024b3b, - limb2: 0x140b32afd131a7a1, + limb0: 0xe40a8c845e3686880fcab2a9, + limb1: 0xc6b49486e02cc632cb10edd6, + limb2: 0xcd51a896192cd3e, limb3: 0x0 }, u384 { - limb0: 0xd27d193be2c63b3445e8aebf, - limb1: 0x43e6741243a23d36aca7d736, - limb2: 0x24adbd464d4bc893, + limb0: 0xb5a9ff29e41563847fe7c83d, + limb1: 0xc6e0a72ad2da07b9cb5843a2, + limb2: 0x296c44d64f48ab4f, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x1495e9a1de3ae41e4ec3155, - limb1: 0x4faded4016510cc83cfe8f56, - limb2: 0xfe03a4cc9ba5068, + limb0: 0x7b43acce4a7a23b6a93c1a0, + limb1: 0xf24b6f786cd33a70d01df9aa, + limb2: 0x10da0482c15297e6, limb3: 0x0 }, u384 { - limb0: 0x3cfba0ecb0dd2b29288c4c7e, - limb1: 0xb700e45c88a1dc416163076f, - limb2: 0x5664da67e4c0af, + limb0: 0x7ba33936a5627fa7252a53e7, + limb1: 0x19f2ac4f47bf203d8b0b4c27, + limb2: 0x2b6f51b18ae4b2c9, limb3: 0x0 }, u384 { limb0: 0x3, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xcde90db7c8ac1372e9cdba34, - limb1: 0xad54bba787f0cc61f17ffdf7, - limb2: 0x156c2d9538f95030, + limb0: 0x7ab7571e0aed64c6165aea4d, + limb1: 0x8e33e70fa4c6db9a228a76be, + limb2: 0x15bf70fc8b816805, limb3: 0x0 }, u384 { - limb0: 0xbefe8af99049b90db82ec42a, - limb1: 0x9255a1742d8b496b207657cf, - limb2: 0x1ccc48cd4c403a, + limb0: 0x293668678c762a8d0c63714d, + limb1: 0xb350e41a6d3fb569d903c40d, + limb2: 0xe7a709083a190ed, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -331,14 +331,14 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0xff1944bc663e92eca2671a42, - limb1: 0x43558aba57a2d1be555b3490, - limb2: 0x8db622a21ae6066, + limb0: 0x5fe21d464063894f41f87cf, + limb1: 0xfcd7c36fa8efe6e37d8d2ea0, + limb2: 0x21be74507abf39f0, limb3: 0x0 }, u384 { - limb0: 0x4d41e356f4e4047b276daaf1, - limb1: 0xdc2822db40c0ac2ed2793cdc, + limb0: 0xdec258cd3406570ab94baee4, + limb1: 0xdc2822db40c0ac2ed09bb7ad, limb2: 0x183227397098d014, limb3: 0x0 } @@ -346,15 +346,15 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0xa0ca1253be4fc8bd54eb76f6, - limb1: 0x1682f90fbb5d789f67258764, - limb2: 0x9e7d76b41936563, + limb0: 0xe32f112d0bf6b4af8d93f2b6, + limb1: 0x56d0c25e402dfb501561f641, + limb2: 0x66ddc486e87559a, limb3: 0x0 }, u384 { - limb0: 0xc9cab65730547a0198f4024e, - limb1: 0x46e9a5359681ff4977256ee9, - limb2: 0x119e35a793ee82e3, + limb0: 0xeee8a16965e6dfd3bf069660, + limb1: 0x62354f1d56ef64df07ca51c9, + limb2: 0x2b744f725137fa40, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -362,49 +362,49 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x8cbc5719d231b36fef7cc7c8, - limb1: 0x9a27a92f131fe23d6c3d11a5, - limb2: 0x3f6621f4b4d68b, + limb0: 0x1ba19471940737773c8e2c6e, + limb1: 0x5e2bc361646889ba6f3666d5, + limb2: 0x4fc973b36432b6, limb3: 0x0 }, u384 { - limb0: 0xa4db925e7100610700ad109d, - limb1: 0x6f73317bafce59a0ec61e1d5, - limb2: 0x1ef545260c876829, + limb0: 0xe90750a3e016d311213d2605, + limb1: 0xd42d949f6fc6dcafdc52aa07, + limb2: 0x16608b9af0aaf867, limb3: 0x0 }, u384 { - limb0: 0xe275e8e96af07a4e7d5f0541, - limb1: 0x7199a438bd0623d2660cfea6, - limb2: 0xc699092ad69f273, + limb0: 0xc9e09ba1211245c1fdc6e5c6, + limb1: 0x1d6884c2bf6bd2f7b5acb573, + limb2: 0xd6db1638f0ce5ed, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xe25e36fb3aef5a37fec264e2, - limb1: 0x4388eb2f321869de3570962d, - limb2: 0x1db78641c4ba3029, + limb0: 0xa98d338723e41e0ea8bbd822, + limb1: 0x472471ac089f1f04025e2c5, + limb2: 0x134994d94b9600cf, limb3: 0x0 }, u384 { - limb0: 0xf4ee587854dce1edf25f09a3, - limb1: 0x1c6ca9ea4204a57ecdeee22b, - limb2: 0x4765283da99e880, + limb0: 0xfbd64f21b973874d8c19c892, + limb1: 0xb5ff61eb01cb7de1e85c203a, + limb2: 0x219451713144ae6d, limb3: 0x0 }, u384 { limb0: 0x3, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xa0ca1253be4fc8bd54eb76f6, - limb1: 0x1682f90fbb5d789f67258764, - limb2: 0x9e7d76b41936563, + limb0: 0xe32f112d0bf6b4af8d93f2b6, + limb1: 0x56d0c25e402dfb501561f641, + limb2: 0x66ddc486e87559a, limb3: 0x0 }, u384 { - limb0: 0xc9cab65730547a0198f4024e, - limb1: 0x46e9a5359681ff4977256ee9, - limb2: 0x119e35a793ee82e3, + limb0: 0xeee8a16965e6dfd3bf069660, + limb1: 0x62354f1d56ef64df07ca51c9, + limb2: 0x2b744f725137fa40, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -414,9 +414,9 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0xc7bd23ca8caeb846e722be1a, - limb1: 0x5624a3d190ae30359207764c, - limb2: 0x23aede4b48ccf53a, + limb0: 0x1d62a6e9707d673917fe9818, + limb1: 0x764bc1a35537b49b7ff34d02, + limb2: 0x9261e2acd4568f8, limb3: 0x0 }, u384 { @@ -429,15 +429,15 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0x4f1c332c1ebf8287ab7da962, - limb1: 0x485e78278bde69416affc6ed, - limb2: 0x46b6a01d90922a6, + limb0: 0xda0186724a19c26d414bc299, + limb1: 0x9e7c5ff8d4bc2e22d3af9bc3, + limb2: 0xb63b8bd1cfe7ba0, limb3: 0x0 }, u384 { - limb0: 0xd31f903c9f0b5575f1be670b, - limb1: 0xd49408835b0e800adca57548, - limb2: 0x1fc9db093e93453e, + limb0: 0xbdfdc34bba87873987fe256, + limb1: 0xc9373468faa540adcafcbc1b, + limb2: 0x22c366f5bdf5efaa, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -445,49 +445,49 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x92b318f44cfa3e5c28d6cdc0, - limb1: 0x224cf2f3f5c828c3d8c9da2e, - limb2: 0x4ab3abbf8685f28, + limb0: 0x3c3fd35f7a53d65c2dd62d64, + limb1: 0xf7a5c678dda0b5363bd7f6a9, + limb2: 0x1c7ed33f47ab73ac, limb3: 0x0 }, u384 { - limb0: 0xc868a80b839eedcba501e2c1, - limb1: 0x2e19f381b85c79f10f4dcdf6, - limb2: 0x746d023cd1cf00f, + limb0: 0x326b62d353a26dbf1e291f85, + limb1: 0x4aaf2c11e9827d90472129be, + limb2: 0x9d8653aa2429e59, limb3: 0x0 }, u384 { - limb0: 0xe7f30db0a7d1e5ef2793b4d5, - limb1: 0xc0e7f6f74185948d0cdb0f91, - limb2: 0x2d2c68bc7a157a66, + limb0: 0xdccec34e80f3accd182b5aa6, + limb1: 0xc22fc1b1911efeea483898a7, + limb2: 0x991565a9d4b7b9a, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xed5499845c3e87970278fc26, - limb1: 0xd91b6876a39b3bc440ff54c7, - limb2: 0xd423e058b1b67f2, + limb0: 0x8e049356de4d4747c3e347cb, + limb1: 0xdb751fea7e348a687b0ed34b, + limb2: 0x222b2a3756fb72e1, limb3: 0x0 }, u384 { - limb0: 0x10ece628a101744afcbe37da, - limb1: 0xc56bd3d38faa27c2fe6ef549, - limb2: 0x2ef942a8da882f92, + limb0: 0x52bbff83bab8512d1885ac74, + limb1: 0xeb0511cdeced114e31f35f2e, + limb2: 0x78197fb777e8eac, limb3: 0x0 }, u384 { limb0: 0x3, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x4f1c332c1ebf8287ab7da962, - limb1: 0x485e78278bde69416affc6ed, - limb2: 0x46b6a01d90922a6, + limb0: 0xda0186724a19c26d414bc299, + limb1: 0x9e7c5ff8d4bc2e22d3af9bc3, + limb2: 0xb63b8bd1cfe7ba0, limb3: 0x0 }, u384 { - limb0: 0xd31f903c9f0b5575f1be670b, - limb1: 0xd49408835b0e800adca57548, - limb2: 0x1fc9db093e93453e, + limb0: 0xbdfdc34bba87873987fe256, + limb1: 0xc9373468faa540adcafcbc1b, + limb2: 0x22c366f5bdf5efaa, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -497,31 +497,12 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0x9513a2829388c0f0fe91435a, - limb1: 0x7d3749c9dd6267bd011b0d29, - limb2: 0x8657711254a5879, + limb0: 0xbe44f4d3a06d3088bd2537c1, + limb1: 0xea4e92d90d9dc5e50e0ab3b6, + limb2: 0x1171f808434ebf9e, limb3: 0x0 }, - g_rhs_sqrt: array![ - u384 { - limb0: 0xbe288338321519ae6c9211b6, - limb1: 0x6b3dddea938efb854c7dc447, - limb2: 0xfadcc4aede5c59, - limb3: 0x0 - }, - u384 { - limb0: 0x566422b41437cb27977c8e1, - limb1: 0x501dc085eec8cf76d1bc03c7, - limb2: 0x9eba93c56bb9c1a, - limb3: 0x0 - }, - u384 { - limb0: 0x7824805faf65222868f47513, - limb1: 0xb7d955c7c920104b57b53dda, - limb2: 0x784ae2baa3d9726, - limb3: 0x0 - } - ], + g_rhs_sqrt: array![], }; let res = msm_g1( points, scalars, scalars_digits_decompositions, msm_hint, derive_point_from_x_hint, 0 @@ -529,15 +510,15 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0x755dace3d3dca08b7fcf5f4, - limb1: 0x598723037007f5088d8435f7, - limb2: 0x213f3f0597429512, + limb0: 0xa9f0001b3fc543c76e78dbe5, + limb1: 0x59d3efe5fc893f110337f203, + limb2: 0x2a3c4edaf4eb5933, limb3: 0x0 }, y: u384 { - limb0: 0x702c7623057f496cd3b67267, - limb1: 0xf4bfc4087f0a9d084e0d02f1, - limb2: 0x1094123564411ea0, + limb0: 0x47c7d40af526b19cd3c8e9d6, + limb1: 0x77e086d9ab1747415c8a345, + limb2: 0x2ecf62cd2d14d49c, limb3: 0x0 } } @@ -550,29 +531,29 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0xd85db6d7c70d9de3a4aa017d, - limb1: 0xed44de4d757e6294d230757a, - limb2: 0x1a18df63ad331bea, + limb0: 0x5c724369afbc772d02aed58e, + limb1: 0x2cd3bc838c66439a3d6160b, + limb2: 0x72f26b55fb56be1, limb3: 0x0 }, y: u384 { - limb0: 0xcf68339b1bc02cf142e3fcb8, - limb1: 0xb78903da23363e7f6b21045a, - limb2: 0xda94969d7630b5f, + limb0: 0x772ca79c580e121ca148fe75, + limb1: 0xce2f55e418ca01b3d6d1014b, + limb2: 0x2884b1dc4e84e30f, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xe517b4c3c6d4e9a1cffde0d8, - limb1: 0xb4709b7abc68a4e391d8b609, - limb2: 0xe7c925dee8cae1c, + limb0: 0x536c985db33c69f7c242e07a, + limb1: 0xfc531bccffafcf1e59d91fb9, + limb2: 0x2585e4f8a31664cb, limb3: 0x0 }, y: u384 { - limb0: 0x7884c6913a9c767d78a9eca8, - limb1: 0x75e85b933ba117a70ca7796, - limb2: 0x9e35b2161c0fa58, + limb0: 0x57fa42444057cf0c1d62ae3c, + limb1: 0x4f48d341183118d68ea41313, + limb2: 0x1d2d2799db056ed1, limb3: 0x0 } }, @@ -580,10 +561,10 @@ mod msm_tests { .span(); let scalars = array![ u256 { - low: 0xb2584e6316bdb2be361e837a6c8a1117, high: 0x19bb6939d9779fe47702597fd392850a + low: 0x12e0c8b2bad640fb19488dec4f65d4d9, high: 0x1521f387af19922ad9b8a714e61a441c }, u256 { - low: 0xc586cbbe67965e6ded6bcbe67c81e070, high: 0x1382973b870a31f661ae477f9ca252b1 + low: 0x5a92118719c78df48f4ff31e78de5857, high: 0x28fcb26f9c6316b950f244556f25e2a2 }, ] .span(); @@ -591,67 +572,62 @@ mod msm_tests { array![ ( array![ + 0x0, + -0x1, + 0x0, + -0x1, + -0x1, 0x1, -0x1, -0x1, + -0x1, + 0x1, + -0x1, 0x0, + -0x1, + -0x1, + -0x1, 0x0, 0x1, - 0x1, - 0x1, -0x1, - 0x0, 0x1, -0x1, + 0x1, 0x0, -0x1, - 0x0, -0x1, 0x1, 0x1, 0x1, + -0x1, 0x0, 0x0, -0x1, 0x1, + 0x1, + -0x1, -0x1, - 0x0, -0x1, -0x1, - 0x0, 0x1, - 0x0, - 0x0, 0x1, 0x1, 0x0, - 0x1, - 0x1, - 0x1, 0x0, -0x1, - 0x1, - -0x1, - -0x1, 0x0, 0x1, - -0x1, 0x0, - -0x1, - -0x1, 0x0, - -0x1, - -0x1, - 0x1, 0x0, 0x0, - 0x1, - 0x1, - 0x0, 0x0, + 0x1, -0x1, 0x0, + -0x1, 0x0, + 0x1, 0x0, 0x1, 0x0, @@ -661,14 +637,17 @@ mod msm_tests { 0x0, -0x1, 0x0, + -0x1, 0x1, 0x1, - -0x1, - -0x1, - -0x1, 0x0, 0x1, -0x1, + 0x0, + 0x1, + 0x1, + 0x1, + 0x1, -0x1, 0x1, -0x1, @@ -678,82 +657,82 @@ mod msm_tests { array![ -0x1, 0x0, + -0x1, 0x1, 0x0, 0x1, -0x1, 0x1, - 0x0, + -0x1, 0x1, 0x0, 0x1, - 0x0, -0x1, - 0x0, - 0x0, - 0x1, + -0x1, 0x1, 0x0, - -0x1, 0x1, -0x1, - 0x0, -0x1, -0x1, -0x1, 0x0, - 0x0, - 0x0, 0x1, + -0x1, 0x1, -0x1, 0x1, 0x0, + 0x1, 0x0, 0x1, 0x1, + -0x1, 0x0, 0x1, 0x1, + 0x1, -0x1, + 0x1, -0x1, -0x1, 0x0, 0x1, 0x1, + 0x0, -0x1, - 0x1, - 0x1, -0x1, + 0x0, -0x1, - 0x1, -0x1, -0x1, + 0x0, 0x1, -0x1, 0x1, - 0x0, - -0x1, + 0x1, 0x1, 0x0, - 0x0, - 0x0, + 0x1, + 0x1, 0x1, 0x0, -0x1, + 0x1, + 0x1, 0x0, 0x1, + 0x1, -0x1, - -0x1, - -0x1, - -0x1, + 0x0, -0x1, 0x0, + -0x1, 0x1, 0x1, - 0x1, - 0x1, + -0x1, 0x0, + 0x1, -0x1, -0x1, ] @@ -763,168 +742,167 @@ mod msm_tests { array![ -0x1, 0x0, - -0x1, + 0x0, 0x1, 0x0, 0x0, - 0x1, -0x1, - 0x1, - 0x0, - 0x1, -0x1, - 0x0, 0x1, -0x1, -0x1, 0x1, + -0x1, + -0x1, 0x0, -0x1, + -0x1, + -0x1, 0x1, - 0x0, -0x1, 0x1, 0x0, 0x0, - 0x1, -0x1, - 0x1, + 0x0, + 0x0, + 0x0, 0x0, 0x1, + 0x0, -0x1, -0x1, 0x1, -0x1, 0x0, - 0x1, - 0x0, - 0x0, 0x0, - -0x1, 0x1, 0x1, -0x1, 0x1, - 0x1, + 0x0, + 0x0, -0x1, 0x0, + -0x1, 0x1, - 0x1, - 0x1, - 0x1, + -0x1, + 0x0, -0x1, 0x1, -0x1, 0x1, - 0x0, + 0x1, + -0x1, 0x0, 0x0, -0x1, + 0x1, -0x1, + 0x1, -0x1, -0x1, + 0x0, + 0x1, -0x1, + 0x0, -0x1, 0x0, -0x1, + 0x0, -0x1, + 0x0, 0x1, 0x1, - 0x1, - -0x1, - 0x1, - 0x0, - 0x0, - -0x1, 0x0, 0x0, 0x0, + -0x1, + 0x1, 0x1, 0x1, - -0x1, - -0x1, ] .span(), array![ + -0x1, + -0x1, + 0x0, 0x0, + -0x1, + -0x1, 0x1, 0x0, + 0x1, 0x0, -0x1, + 0x0, 0x1, 0x1, 0x1, 0x1, - 0x1, - 0x0, - -0x1, 0x0, -0x1, -0x1, - -0x1, - -0x1, 0x1, - 0x0, + 0x1, -0x1, + 0x1, -0x1, + 0x0, -0x1, -0x1, 0x0, 0x0, 0x1, - 0x1, 0x0, 0x1, - 0x1, -0x1, + 0x1, 0x0, -0x1, + 0x1, + 0x1, 0x0, 0x0, + -0x1, 0x0, + -0x1, 0x0, - 0x1, + -0x1, 0x0, 0x0, -0x1, - 0x0, + 0x1, + 0x1, + 0x1, + 0x1, 0x0, 0x1, + -0x1, 0x0, + -0x1, 0x0, 0x0, 0x0, 0x0, 0x1, - 0x1, 0x0, -0x1, -0x1, - -0x1, 0x1, 0x1, 0x0, - -0x1, - -0x1, 0x0, - 0x1, - -0x1, 0x0, - -0x1, 0x0, -0x1, - 0x1, 0x0, - -0x1, 0x1, - 0x0, -0x1, 0x0, + 0x0, -0x1, - -0x1, - -0x1, - 0x1, - -0x1, + 0x0, -0x1, ] .span() @@ -935,85 +913,85 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0xdee31ae04765f2a05ed90263, - limb1: 0xf7d2b20d533efbb6c491d874, - limb2: 0x28ffa055abb2a6cb, + limb0: 0x1552483255918be6d9915136, + limb1: 0x9e9cabf92f19f76fe696c08c, + limb2: 0x12d7fd1449a0c968, limb3: 0x0 }, y: u384 { - limb0: 0x32a7a98bb41b416d65c6389a, - limb1: 0x70249a3f8d0f98b3d07a60e4, - limb2: 0x524fdc5e7ea49d7, + limb0: 0x690380ff9c9ed4bfe62481bd, + limb1: 0xd1ccccaff2c60cb68e39a8f3, + limb2: 0x18c2cfd0743d2f66, limb3: 0x0 } }, Q_high: G1Point { x: u384 { - limb0: 0xd75ed6b0c765c919e624f126, - limb1: 0x19721be05b2db9081ed9d391, - limb2: 0x2fbf3305895570a5, + limb0: 0x29ed84e8539ecdf46a8ad77c, + limb1: 0xfbd9992a28bc9ba393aadc94, + limb2: 0x26ffe84692a16555, limb3: 0x0 }, y: u384 { - limb0: 0x8d42e7cf9dd8b4596614fce1, - limb1: 0x7c806468d77d349d156203fa, - limb2: 0x3058871928a38f8f, + limb0: 0xfbc135273fde5db6b21936ec, + limb1: 0x2e79ff49515f2adf9a839ca4, + limb2: 0x485d6af4503dd68, limb3: 0x0 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0x843ef82a2957a63b62058c5c, - limb1: 0x7c05bfeb74a6debc3fff157e, - limb2: 0x7df657d2b5d3369, + limb0: 0x3d62b293a0f51bf8b4494bed, + limb1: 0x9cb11453fc71d84d4ccd6999, + limb2: 0x2a9dec5c563e9429, limb3: 0x0 }, y: u384 { - limb0: 0x5f1418251fcc7f63948e0a0a, - limb1: 0x5c14774d5dca2a8f9360fe34, - limb2: 0x19aa7bdf77675127, + limb0: 0x5a586bfa99abeb2e90f06090, + limb1: 0xc33c881d9b8cc9850ce38648, + limb2: 0x335175d12fa9832, limb3: 0x0 } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0xb6ba374af4e8871d2fa18c5a, - limb1: 0x8d29195b969c26eb15013838, - limb2: 0x2d3424f233d3738f, + limb0: 0x96a0a3b79728ce053b04c63a, + limb1: 0x3fa16aa9bfd4a9d49c4a8670, + limb2: 0x24f24c9942c6eebd, limb3: 0x0 }, u384 { - limb0: 0xfd5a8de2fe6011c5eeda3d13, - limb1: 0x62710bca3fed508e6801c58b, - limb2: 0x258e7057197777a6, + limb0: 0xd08fb60a437262b6f37ae569, + limb1: 0x5f8a451bb545e5849737b69c, + limb2: 0x255000abff14bfce, limb3: 0x0 }, u384 { - limb0: 0x4365873a1d561fa7bc139db, - limb1: 0xb85045b68181585c9f27cf64, - limb2: 0x30644e72e131a029, + limb0: 0x530ad3626e3e8632d5d8cf04, + limb1: 0xdc2822db40c0ac2ee70647fb, + limb2: 0x183227397098d014, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0x46f0e21102c1d70a72972941, - limb1: 0x7e93b0b722e247834df2de81, - limb2: 0x1c75c3fa97306fdc, + limb0: 0xce8fcc3b79dac827fa0ce6b5, + limb1: 0x7ce3abc53e490f842151eb29, + limb2: 0x6e5cbec571639a0, limb3: 0x0 }, u384 { - limb0: 0x62552a7bf8df81fe806988f8, - limb1: 0xd0368bada90eae365648259f, - limb2: 0x2f407474901fcb49, + limb0: 0x69371abb33a70def5fc3c550, + limb1: 0x9750ab2f5f8c078451f8f0dc, + limb2: 0x8586daef1e825bc, limb3: 0x0 }, u384 { - limb0: 0x348b0e9ea2f89e07dd7915d6, - limb1: 0xd7185f977ddcad8c0667d129, - limb2: 0xf338ace7af0cf7f, + limb0: 0xbb27120bfb6ab221276f350, + limb1: 0xd2e387de9b7285f34abcded2, + limb2: 0x213b942375f6a63d, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -1021,66 +999,66 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x32334796ea7bfab9479c13cf, - limb1: 0x25e90b76517f319e0ca9d37b, - limb2: 0x16ddedab32cf4e1b, + limb0: 0xc9ca8026741ce743b28f5ec8, + limb1: 0x4563df9ed48e3424693a0a5c, + limb2: 0x1d266703a582c9e6, limb3: 0x0 }, u384 { - limb0: 0x87423c91730b750a2f997a1, - limb1: 0x2ba985c0c32956e5c66b20f7, - limb2: 0x2cc2a852ede25345, + limb0: 0x9f4d120a84980c8bb5d7e1c0, + limb1: 0x5f8ab15bfc43f233bd6e02d4, + limb2: 0x2dcea577e09f4e99, limb3: 0x0 }, u384 { - limb0: 0xc96fc32d9facb0c6412b0dce, - limb1: 0x406f95eee3c995231efc9ca1, - limb2: 0x1ffe38b857a41a49, + limb0: 0xe30dcf6880e34cad3bda2448, + limb1: 0xdddb43c0a05e74c05bfdb8fd, + limb2: 0x2e5b10ad65137117, limb3: 0x0 }, u384 { - limb0: 0xa45d866890c63cddc773b135, - limb1: 0xe82cb939f9fd2873eed9885d, - limb2: 0x29a5757354f8aadc, + limb0: 0x58153a12600e6cc9c6e5ad91, + limb1: 0x20b6f36d71fd2eed1a97bca1, + limb2: 0x83a522e0f0769a2, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x6c60dba5cc24f9087f487e7c, - limb1: 0xc36acc6ee7257e2c525730f2, - limb2: 0x24fcfd7ce45faf6b, + limb0: 0x6baf64b26d905877ee26b41f, + limb1: 0x76ab034fbadb2e8c63f5c17d, + limb2: 0x14b163c50542ace1, limb3: 0x0 }, u384 { - limb0: 0x561bea59725d6dcdd042a05a, - limb1: 0x3179bf82959e7d3d59bbb, - limb2: 0x2cf8c077edfc218a, + limb0: 0x3ba550319af529ce1f4b4ff0, + limb1: 0xc5f2018e1ea4168cf5ead295, + limb2: 0x1909490cd5b87135, limb3: 0x0 }, u384 { - limb0: 0x9da12bdbe8e9da17986b4182, - limb1: 0x85491ec6799608a41337737b, - limb2: 0x2d9aa06b70d26e7f, + limb0: 0x5233be47c6e2e938866adf62, + limb1: 0x80a0c2ecf54e11eb133c753, + limb2: 0x2ea1f849f80b266, limb3: 0x0 }, u384 { - limb0: 0x46f0e21102c1d70a72972944, - limb1: 0x7e93b0b722e247834df2de81, - limb2: 0x1c75c3fa97306fdc, + limb0: 0xce8fcc3b79dac827fa0ce6b8, + limb1: 0x7ce3abc53e490f842151eb29, + limb2: 0x6e5cbec571639a0, limb3: 0x0 }, u384 { - limb0: 0x62552a7bf8df81fe806988f8, - limb1: 0xd0368bada90eae365648259f, - limb2: 0x2f407474901fcb49, + limb0: 0x69371abb33a70def5fc3c550, + limb1: 0x9750ab2f5f8c078451f8f0dc, + limb2: 0x8586daef1e825bc, limb3: 0x0 }, u384 { - limb0: 0x348b0e9ea2f89e07dd7915d6, - limb1: 0xd7185f977ddcad8c0667d129, - limb2: 0xf338ace7af0cf7f, + limb0: 0xbb27120bfb6ab221276f350, + limb1: 0xd2e387de9b7285f34abcded2, + limb2: 0x213b942375f6a63d, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -1090,42 +1068,42 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0xc51aab3049965642da2d81d0, - limb1: 0xc25886537f0e20df1b077357, - limb2: 0x202e85de815424ea, + limb0: 0x435e069b27b1cc729588782d, + limb1: 0x7e193f8b561905e8db6e7ecd, + limb2: 0xbe89a0e58302c2d, limb3: 0x0 }, u384 { - limb0: 0x62cd40fe2fcee436e4234819, - limb1: 0x6b3b157782cd63d89572d554, - limb2: 0x2a3209378ea5003f, + limb0: 0x8ecf4c3bc6b62e654c1f7dae, + limb1: 0x67aaeb3117829a62c1d33bb4, + limb2: 0x237ee7214d267718, limb3: 0x0 }, u384 { - limb0: 0xe106752fc6938dd7ad62f09c, - limb1: 0xb85045b68181585d7dc8e20e, - limb2: 0x30644e72e131a029, + limb0: 0xd8fcf70604fefb8c5e8a76a1, + limb1: 0xdc2822db40c0ac2ea8a00fc5, + limb2: 0x183227397098d014, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0x411b499a9c17f6fbf9dbf6b, - limb1: 0xf7f7a679eac7dadfeaf6e83f, - limb2: 0x11340a5b879ea19b, + limb0: 0xd4a547699cd74c3fb329a7d4, + limb1: 0x7889a87f17c28df9001064d7, + limb2: 0x23eb3d1fb3a77538, limb3: 0x0 }, u384 { - limb0: 0xc95af33094d9957985d52fda, - limb1: 0xabb3de99011767c168ed6b3d, - limb2: 0x2b7452d1007fc989, + limb0: 0xa932efe6f35f3f9fef2a4e5e, + limb1: 0x48f8f9322d84a3c4100fbc93, + limb2: 0x549c2db09f4773e, limb3: 0x0 }, u384 { - limb0: 0x3c0f52ce22f8c78e562d2713, - limb1: 0xb578f5c475edf03aac1fd60c, - limb2: 0x873f81e9d4e05a6, + limb0: 0xf717346ac1a96914817d6d0a, + limb1: 0x75a69aada1cfe1bf9da8c2c9, + limb2: 0xd13a8f12cf60a50, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -1133,66 +1111,66 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x1a3452d1fb5aa554addd22de, - limb1: 0x7bc53b876077006990f73ea1, - limb2: 0x61074515f8051ac, + limb0: 0xbe51e5160c7b5fc124cdacc2, + limb1: 0x138b667b3e5db5abad7c74db, + limb2: 0x2e3b50a4564e816d, limb3: 0x0 }, u384 { - limb0: 0xb74b0c303204fd6ca0eaf396, - limb1: 0x95ff440d50e365491d187bdb, - limb2: 0x2dcd0ec2be902618, + limb0: 0x5d58d8b1fa1e164be8c10025, + limb1: 0x27eb6bac7c3e801ee8868fa6, + limb2: 0x10b5e5d96ae9bf42, limb3: 0x0 }, u384 { - limb0: 0xbf0769af64966612c2d09379, - limb1: 0x3e271d96b7877080b79e2c08, - limb2: 0xdb56e5e45b3ce54, + limb0: 0x5cbc2be57149e63c11416075, + limb1: 0x1cbe675b8a32fb6f60959a86, + limb2: 0x2b7447e0c13c78ce, limb3: 0x0 }, u384 { - limb0: 0xb49c55c34a35a7841e780cdc, - limb1: 0xa741dedfb7674845dbecb640, - limb2: 0xc8b2b3eca022d50, + limb0: 0xc03319d2a7f262428a5f2de3, + limb1: 0x25199f8e8729935596b4e75, + limb2: 0x1fb9906e6231e8f9, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xa3c3533fc123f238665c40fa, - limb1: 0x2f96adb73ed6384229634e2b, - limb2: 0x337d09fb5aa44aa, + limb0: 0xad0c41225e44cc916882fcee, + limb1: 0xf8fc6e104444f92fd12e5964, + limb2: 0xaf91a7958931f55, limb3: 0x0 }, u384 { - limb0: 0x8b2d4477464ba83ee0859500, - limb1: 0x927b105e004386890bc56c96, - limb2: 0x21945b8d3f1c1c49, + limb0: 0xfb98cfb4da1dbedfcd7eeb1a, + limb1: 0xdaeaeb96888deb4c302f35ba, + limb2: 0xfdd48911ddd65ba, limb3: 0x0 }, u384 { - limb0: 0xb42df86a68ea56ab02877539, - limb1: 0x206ae14d61c9d0b0045f8224, - limb2: 0x195be85bd7ea10f4, + limb0: 0xe5459d4044fc3b3d8478471e, + limb1: 0x60f3d008e56fa53ed8fa485d, + limb2: 0x273afad386e21ef1, limb3: 0x0 }, u384 { - limb0: 0x411b499a9c17f6fbf9dbf6e, - limb1: 0xf7f7a679eac7dadfeaf6e83f, - limb2: 0x11340a5b879ea19b, + limb0: 0xd4a547699cd74c3fb329a7d7, + limb1: 0x7889a87f17c28df9001064d7, + limb2: 0x23eb3d1fb3a77538, limb3: 0x0 }, u384 { - limb0: 0xc95af33094d9957985d52fda, - limb1: 0xabb3de99011767c168ed6b3d, - limb2: 0x2b7452d1007fc989, + limb0: 0xa932efe6f35f3f9fef2a4e5e, + limb1: 0x48f8f9322d84a3c4100fbc93, + limb2: 0x549c2db09f4773e, limb3: 0x0 }, u384 { - limb0: 0x3c0f52ce22f8c78e562d2713, - limb1: 0xb578f5c475edf03aac1fd60c, - limb2: 0x873f81e9d4e05a6, + limb0: 0xf717346ac1a96914817d6d0a, + limb1: 0x75a69aada1cfe1bf9da8c2c9, + limb2: 0xd13a8f12cf60a50, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -1202,9 +1180,9 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0xf774e7c566edf8e765c76b6c, - limb1: 0xb5e94a46ef24e10903aacd47, - limb2: 0x2f7d2bc889a1059a, + limb0: 0xaeb2a594b075e8208cafbca2, + limb1: 0xd41c84889792785fd0338779, + limb2: 0x1e31bb2a84b852d7, limb3: 0x0 }, u384 { @@ -1217,15 +1195,15 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0xcc03ff8fb2819834d2771dbf, - limb1: 0xc948eada5cd8f25cba3befaa, - limb2: 0x5a0f952b5a4dbb, + limb0: 0x9f53b20b7e53ab7e9027da21, + limb1: 0xce39d11523f8956fb06adcb2, + limb2: 0xf9925d5247d0d10, limb3: 0x0 }, u384 { - limb0: 0x7545c63f8783a8d868cf7d0c, - limb1: 0xdb28afa1332e18f6d029ec12, - limb2: 0x292a04630db09c44, + limb0: 0x69935d9e83ad2e409225d725, + limb1: 0xd815ddeeddd43cca4e8a8ef5, + limb2: 0xf2ac842d98346d3, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -1233,49 +1211,49 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xd5443acd6222a885733d2218, - limb1: 0x4bb9a5d08d57280c86e3f99b, - limb2: 0x276c5526bd465613, + limb0: 0x5ccace37b99f53aea60a9e43, + limb1: 0x53b42c11f21181d8af06d1e, + limb2: 0x12493f631b6d7d09, limb3: 0x0 }, u384 { - limb0: 0xd5d37f4584e1e6b8c688fb6d, - limb1: 0x9c51fae4354cb8d439b1c9b4, - limb2: 0x253f63e75fc3e2c1, + limb0: 0x97cd7391acc5e7cb578511fe, + limb1: 0x58cb2a275aaafb97701190d3, + limb2: 0x2bcd332016882646, limb3: 0x0 }, u384 { - limb0: 0x6ef27f1c9ea595887e8c0e30, - limb1: 0x8070896d1d1a379297cf352f, - limb2: 0x8bc10744b15e39f, + limb0: 0x328629abdc2f460165b04da8, + limb1: 0x76282604686cbdc5dd7570e9, + limb2: 0xcee9a3de55c14c3, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x640bfeaf1784c89e7765593d, - limb1: 0x5bdac08f168ad7162eb3cf00, - limb2: 0x10e2ebf820ee933, + limb0: 0xddfb16227afb027bb0778e63, + limb1: 0x6aad733f6be9c04f11409617, + limb2: 0x2ecb717f6d772732, limb3: 0x0 }, u384 { - limb0: 0x8eedbda41e49e25b89747c96, - limb1: 0x20d9837696879a29417aef14, - limb2: 0x1ab5704366ae947b, + limb0: 0x3cba18db8b078ac1b671856f, + limb1: 0x884199cc997cb65eeb9face0, + limb2: 0x2d8058c88c89d47b, limb3: 0x0 }, u384 { limb0: 0x3, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xcc03ff8fb2819834d2771dbf, - limb1: 0xc948eada5cd8f25cba3befaa, - limb2: 0x5a0f952b5a4dbb, + limb0: 0x9f53b20b7e53ab7e9027da21, + limb1: 0xce39d11523f8956fb06adcb2, + limb2: 0xf9925d5247d0d10, limb3: 0x0 }, u384 { - limb0: 0x7545c63f8783a8d868cf7d0c, - limb1: 0xdb28afa1332e18f6d029ec12, - limb2: 0x292a04630db09c44, + limb0: 0x69935d9e83ad2e409225d725, + limb1: 0xd815ddeeddd43cca4e8a8ef5, + limb2: 0xf2ac842d98346d3, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -1285,12 +1263,19 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0x5cfd27b8694e337b600ba5c7, - limb1: 0xff2ad7f2588d8157f583fe68, - limb2: 0x10c47276f11b5364, + limb0: 0xc97484aada89e20359d7f00a, + limb1: 0x9c9399ee5d8461f33be37007, + limb2: 0x1437cbbdf7157f53, limb3: 0x0 }, - g_rhs_sqrt: array![], + g_rhs_sqrt: array![ + u384 { + limb0: 0x6d56d13485292f3f75709049, + limb1: 0x8a6781a81a2fe762ec2f0919, + limb2: 0x107d7f554179d729, + limb3: 0x0 + } + ], }; let res = msm_g1( points, scalars, scalars_digits_decompositions, msm_hint, derive_point_from_x_hint, 0 @@ -1298,15 +1283,15 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0x9a1d65fd07be5218ad7db68, - limb1: 0x8b1d8454599114eb21533193, - limb2: 0x5083ac7aa053f01, + limb0: 0x9234d7617541ef6bd6a55e9e, + limb1: 0x7a1353bb00de9de1d818c849, + limb2: 0x21e43e4fdf41dbf4, limb3: 0x0 }, y: u384 { - limb0: 0x131b142a49030d838672290c, - limb1: 0x6ea874e3ae69c445e52716c2, - limb2: 0xd0031ef72c245a2, + limb0: 0x30dd41ab3aae480eb7924f99, + limb1: 0xa94c0b54f99635a912b59f0f, + limb2: 0x187498a467804f5b, limb3: 0x0 } } @@ -1319,43 +1304,43 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0xe19dbab8f16007a6f41c8c56, - limb1: 0x25fed5892a37991054a51e22, - limb2: 0x1d63a5bcd91f5c70, + limb0: 0x5c724369afbc772d02aed58e, + limb1: 0x2cd3bc838c66439a3d6160b, + limb2: 0x72f26b55fb56be1, limb3: 0x0 }, y: u384 { - limb0: 0xbebdd00d68b4b8c683652c13, - limb1: 0x446446596eb9cb77342d8dfb, - limb2: 0x2131c43d6d42b6b2, + limb0: 0x772ca79c580e121ca148fe75, + limb1: 0xce2f55e418ca01b3d6d1014b, + limb2: 0x2884b1dc4e84e30f, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x6e367bd520f79c5113ceea39, - limb1: 0xca9c316214d0ac871ae173a7, - limb2: 0x1ccebe65d63301bb, + limb0: 0x536c985db33c69f7c242e07a, + limb1: 0xfc531bccffafcf1e59d91fb9, + limb2: 0x2585e4f8a31664cb, limb3: 0x0 }, y: u384 { - limb0: 0xec8424455d4be386ff64e07e, - limb1: 0x62ab69bed7a568ab657b159d, - limb2: 0xc6c878c5e7bd95f, + limb0: 0x57fa42444057cf0c1d62ae3c, + limb1: 0x4f48d341183118d68ea41313, + limb2: 0x1d2d2799db056ed1, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x9aa98a198d958dbcfdd69940, - limb1: 0x5d4ea8f9518684e772ffb19f, - limb2: 0x12f498d522ce834f, + limb0: 0x236ca9312dad3661a37f2d6f, + limb1: 0x98424c01caad7592315715d1, + limb2: 0x795b9fd941b23c4, limb3: 0x0 }, y: u384 { - limb0: 0xa26f181aa3e2d043feb9323f, - limb1: 0xf533e40e3a50c062d6d71f33, - limb2: 0x13a1ff751e9a0e8d, + limb0: 0xc7ab5834609a54b8993ffd79, + limb1: 0xe81cd490528b814ca632aace, + limb2: 0x2d9ff53d3009e6f7, limb3: 0x0 } }, @@ -1363,13 +1348,13 @@ mod msm_tests { .span(); let scalars = array![ u256 { - low: 0xcd8306bdc0b1f20bdaca1b1cb970e24b, high: 0xe312fafbfb8d29346ec2e0b10827d57 + low: 0x5a92118719c78df48f4ff31e78de5857, high: 0x28fcb26f9c6316b950f244556f25e2a2 }, u256 { - low: 0xe7f7ce72b2f52b4dba76196ebf49e795, high: 0x3054c84903d4ddfe7ddd692b27bbd243 + low: 0x8d723104f77383c13458a748e9bb17bc, high: 0x215ddba6dd84f39e71545a137a1d5006 }, u256 { - low: 0xeb3e1e5eeec0d76505a08ac8fe610c93, high: 0x2e445878005f8d1908d4fe99c518432b + low: 0xeb2083e6ce164dba0ff18e0242af9fc3, high: 0x5f82a8f03983ca8ea7e9d498c778ea6 }, ] .span(); @@ -1377,39 +1362,26 @@ mod msm_tests { array![ ( array![ + -0x1, 0x0, 0x0, 0x1, 0x0, - -0x1, - -0x1, 0x0, - 0x1, -0x1, -0x1, - 0x0, - -0x1, + 0x1, -0x1, -0x1, - 0x0, - 0x0, 0x1, -0x1, - 0x0, -0x1, 0x0, - 0x0, -0x1, - 0x0, - 0x1, - 0x0, - 0x1, -0x1, - 0x0, -0x1, 0x1, - 0x1, - 0x1, + -0x1, 0x1, 0x0, 0x0, @@ -1422,294 +1394,306 @@ mod msm_tests { 0x0, -0x1, -0x1, - -0x1, - -0x1, - -0x1, - -0x1, - -0x1, - -0x1, - -0x1, - 0x1, 0x1, + -0x1, + 0x0, + 0x0, 0x1, 0x1, -0x1, - -0x1, - 0x0, 0x1, 0x0, 0x0, -0x1, + 0x0, -0x1, - -0x1, - 0x1, - 0x1, - 0x1, 0x1, + -0x1, 0x0, - 0x0, + -0x1, 0x1, - 0x0, -0x1, - 0x0, 0x1, - 0x0, 0x1, -0x1, 0x0, + 0x0, -0x1, + 0x1, -0x1, - ] - .span(), - array![ 0x1, - 0x0, -0x1, -0x1, 0x0, - -0x1, 0x1, + -0x1, 0x0, -0x1, + 0x0, -0x1, 0x0, -0x1, 0x0, + 0x1, + 0x1, 0x0, 0x0, 0x0, + -0x1, + 0x1, + 0x1, + 0x1, + ] + .span(), + array![ -0x1, -0x1, 0x0, - -0x1, 0x0, -0x1, -0x1, + 0x1, 0x0, 0x1, 0x0, + -0x1, + 0x0, + 0x1, + 0x1, 0x1, 0x1, + 0x0, + -0x1, -0x1, 0x1, 0x1, -0x1, + 0x1, + -0x1, 0x0, -0x1, -0x1, 0x0, + 0x0, 0x1, 0x0, 0x1, + -0x1, + 0x1, + 0x0, + -0x1, + 0x1, 0x1, 0x0, 0x0, -0x1, 0x0, - 0x1, -0x1, + 0x0, -0x1, + 0x0, + 0x0, + -0x1, + 0x1, 0x1, 0x1, 0x1, 0x0, + 0x1, -0x1, - -0x1, + 0x0, -0x1, 0x0, 0x0, 0x0, + 0x0, 0x1, 0x0, -0x1, -0x1, 0x1, - -0x1, 0x1, 0x0, 0x0, - -0x1, 0x0, 0x0, -0x1, 0x0, + 0x1, -0x1, 0x0, 0x0, - 0x0, -0x1, - 0x1, 0x0, - 0x1, + -0x1, ] .span() ), ( array![ 0x0, - -0x1, 0x1, - 0x0, - 0x0, 0x1, 0x0, + -0x1, 0x1, 0x0, 0x1, -0x1, 0x1, - 0x0, 0x1, -0x1, - -0x1, - 0x0, + 0x1, -0x1, 0x1, -0x1, -0x1, + 0x1, 0x0, - -0x1, 0x0, - 0x1, + -0x1, 0x1, 0x0, - -0x1, + 0x0, + 0x0, + 0x0, 0x1, -0x1, 0x1, 0x1, + -0x1, 0x1, 0x0, 0x1, 0x0, - -0x1, 0x0, 0x0, 0x0, 0x1, - 0x0, - 0x0, -0x1, -0x1, + 0x0, + 0x1, -0x1, + 0x0, -0x1, 0x1, 0x1, - 0x1, - 0x1, -0x1, 0x0, - 0x1, - -0x1, 0x0, 0x0, + -0x1, + -0x1, 0x0, + -0x1, 0x1, 0x0, 0x0, 0x1, - 0x0, - 0x0, + 0x1, -0x1, 0x0, - 0x1, + 0x0, 0x1, -0x1, 0x0, - 0x0, + -0x1, 0x1, 0x1, + 0x0, 0x1, 0x0, + -0x1, 0x0, - 0x1, - 0x1, - 0x1, 0x0, + 0x1, -0x1, -0x1, + -0x1, + 0x1, ] .span(), array![ - 0x1, - 0x1, - -0x1, - 0x1, - 0x1, -0x1, 0x1, - 0x1, -0x1, - 0x1, + 0x0, -0x1, 0x0, + -0x1, 0x1, - 0x0, + -0x1, 0x1, 0x1, 0x0, - 0x1, - -0x1, -0x1, - 0x1, + 0x0, -0x1, 0x0, 0x1, - 0x1, 0x0, 0x1, - 0x1, - -0x1, 0x0, 0x1, - -0x1, 0x1, 0x1, -0x1, -0x1, - -0x1, - 0x0, 0x1, - 0x0, 0x1, - -0x1, 0x0, 0x1, 0x0, - -0x1, - -0x1, + 0x1, -0x1, 0x0, -0x1, 0x0, + 0x1, + 0x0, 0x0, -0x1, - -0x1, - -0x1, + 0x1, + 0x1, -0x1, 0x0, - 0x1, 0x0, - -0x1, 0x1, 0x1, + 0x0, 0x1, + 0x0, + -0x1, 0x1, + 0x0, 0x1, - -0x1, + 0x0, 0x1, + -0x1, 0x1, -0x1, + 0x1, 0x0, 0x0, 0x1, + 0x0, + 0x1, -0x1, 0x0, + 0x1, -0x1, + 0x0, -0x1, + 0x0, + 0x1, + 0x1, + 0x1, + 0x0, -0x1, 0x0, 0x1, + 0x0, -0x1, ] .span() @@ -1719,78 +1703,78 @@ mod msm_tests { -0x1, 0x1, -0x1, - -0x1, - -0x1, - 0x0, 0x1, - 0x0, -0x1, - -0x1, - 0x1, 0x0, - 0x1, - -0x1, 0x0, -0x1, -0x1, - 0x1, - 0x1, - -0x1, -0x1, 0x1, 0x0, 0x0, - 0x1, - 0x0, - 0x1, -0x1, -0x1, 0x1, - -0x1, + 0x1, 0x1, -0x1, 0x1, - 0x0, -0x1, 0x1, + 0x1, -0x1, + 0x0, 0x1, 0x0, 0x0, + -0x1, 0x0, -0x1, -0x1, + 0x1, 0x0, 0x1, - -0x1, - -0x1, 0x1, + -0x1, 0x1, 0x0, -0x1, - 0x0, -0x1, - 0x1, -0x1, -0x1, -0x1, -0x1, 0x0, + 0x0, + 0x0, + 0x0, + 0x0, 0x1, + -0x1, 0x1, - 0x1, + 0x0, -0x1, 0x0, + 0x0, 0x1, 0x0, 0x0, 0x1, 0x1, -0x1, + -0x1, + 0x1, + 0x1, 0x0, -0x1, + 0x0, -0x1, 0x0, + 0x0, + 0x1, + -0x1, + -0x1, -0x1, 0x0, 0x0, @@ -1801,84 +1785,82 @@ mod msm_tests { ] .span(), array![ - -0x1, 0x1, -0x1, 0x1, + 0x1, + -0x1, -0x1, - 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, + -0x1, + 0x0, 0x1, + 0x0, 0x1, - 0x1, + -0x1, 0x1, -0x1, - 0x0, 0x1, + -0x1, 0x0, + -0x1, 0x1, 0x0, -0x1, - 0x0, - 0x0, + 0x1, + 0x1, -0x1, + 0x1, 0x0, -0x1, 0x0, + 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, - 0x0, + -0x1, + 0x1, 0x1, 0x1, - 0x0, - -0x1, - 0x0, 0x1, -0x1, - -0x1, - 0x0, - 0x0, + 0x1, + 0x1, 0x0, - -0x1, 0x0, -0x1, + 0x1, + 0x1, -0x1, -0x1, 0x1, 0x0, - 0x0, - 0x0, - 0x0, - -0x1, 0x1, - -0x1, 0x1, -0x1, 0x0, + 0x0, + 0x0, 0x1, 0x0, 0x0, -0x1, + 0x0, -0x1, - 0x1, - 0x1, - 0x1, + 0x0, -0x1, + -0x1, + 0x1, 0x0, 0x0, -0x1, - 0x0, - 0x1, - 0x1, - 0x1, 0x1, -0x1, ] @@ -1890,97 +1872,97 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0x1c4289d743fa0b131b300dde, - limb1: 0xa82900da8916aa2564227a02, - limb2: 0xfc4a3b4ca1ebef5, + limb0: 0xfd80632deaa29cb198348568, + limb1: 0x5e62be88814df2e34c3c90d1, + limb2: 0x275b81f9eb6df4b6, limb3: 0x0 }, y: u384 { - limb0: 0x981a13629df76fefd8675ec8, - limb1: 0x2473360f9c0a03528ec8c193, - limb2: 0x90af9c291b03841, + limb0: 0xeb993ff1c0b6f504c42169e4, + limb1: 0x56d5f85957caaea17075a7f5, + limb2: 0x2f256d1ffa4c2a9f, limb3: 0x0 } }, Q_high: G1Point { x: u384 { - limb0: 0x907b20b5ee182ef6f3694f32, - limb1: 0x6940c4d65424f3fdf10537ff, - limb2: 0x3724f07d377043d, + limb0: 0xe394dc50ceba45b3f1897ebf, + limb1: 0x2bcacca7a6478f52a4ab789d, + limb2: 0x1f7e16ee5b9be3a3, limb3: 0x0 }, y: u384 { - limb0: 0x7adf3ca689a3d85196d03808, - limb1: 0x8dd7834df84e9241bed5236b, - limb2: 0x5d91b4fabf88c66, + limb0: 0xdf954a865a9f3dada6f81984, + limb1: 0xd91f26518ab3049e540781a6, + limb2: 0x2bd2033496453a66, limb3: 0x0 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0x5386e7e852652ad16c5ae49e, - limb1: 0xfcf0ad965ba44cae5e994081, - limb2: 0x5a46dc09b048a1, + limb0: 0xa4d8bca6a08607a50d12c288, + limb1: 0x87dba1889204f5e1dfd91090, + limb2: 0x661978fb3ab3f2a, limb3: 0x0 }, y: u384 { - limb0: 0x6cccc8d74406286708b7e721, - limb1: 0x73b568d8d8112b6fe7d305ea, - limb2: 0x159ff0767b279d25, + limb0: 0x37899012bee0ea4cc0aa0f19, + limb1: 0xd2e392b4f1c8844c3e5e1bd1, + limb2: 0x137519b260aac181, limb3: 0x0 } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0x61aecb3e5bf966c78056bd86, - limb1: 0x8c6a5d4a6f9d167029326b45, - limb2: 0x1a4a4980eb73d4dd, + limb0: 0x677ac56c4cc4cfca8cc8379c, + limb1: 0x93e3ecfc1ea75c4091e033d8, + limb2: 0x946174fff199cd3, limb3: 0x0 }, u384 { - limb0: 0xb0fe806603d6c35371d96d1c, - limb1: 0x4f01953308f31d298eecbd12, - limb2: 0x1fd5979a88619bcb, + limb0: 0x8dabcfb53d93a3a1e631ed02, + limb1: 0x149969134bada6795b584a4b, + limb2: 0x2747c90fdc0fa401, limb3: 0x0 }, u384 { - limb0: 0x5d8f826b5beacefe7c809298, - limb1: 0x7d099169112fb554a3387a12, - limb2: 0x1c4dfb3d91114131, + limb0: 0x7dd815816f2ecae747894f63, + limb1: 0xe38bf460fbc5ac388f3be211, + limb2: 0x208a72839c0286a6, limb3: 0x0 }, u384 { - limb0: 0xbf7eb8cd5862bebadd5b0fb, - limb1: 0xb85045b68181585c587ce8ff, - limb2: 0x30644e72e131a029, + limb0: 0x3cb0e49f59f7d835401c54be, + limb1: 0xdc2822db40c0ac2eb592c476, + limb2: 0x183227397098d014, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0xc8656c02bef260800178764c, - limb1: 0xc7785eb45e086938282f6c26, - limb2: 0x17d4b09c89faee7b, + limb0: 0x7723425316107404e012c857, + limb1: 0x2ddbaa008f2c65b75409eab3, + limb2: 0x2f45188da3383754, limb3: 0x0 }, u384 { - limb0: 0x1bf6dd57ecdf56c01fe8fb63, - limb1: 0x7cb8dc3f449aeef4d7093c8c, - limb2: 0x2a55bd032059ad8f, + limb0: 0x1d40e7f40ec8c7203c803c5f, + limb1: 0x8873647ef4b9c21b185ab971, + limb2: 0x3f41f099559f47a, limb3: 0x0 }, u384 { - limb0: 0xc5839b4fb993980bfe7a7f39, - limb1: 0xdaea7c39603eefea0e95285c, - limb2: 0xf1a028d85de9946, + limb0: 0x4790e069b847c3d1adbdfce4, + limb1: 0xc1ed45e2285617d57a9a460b, + limb2: 0x13a79a453afd5ea5, limb3: 0x0 }, u384 { - limb0: 0xca234a9b9459db659007dce1, - limb1: 0x7a8ddaade95d3c16e85a17b6, - limb2: 0x3dcfc3926239fe2, + limb0: 0x17acf3fcf863f5b05491af, + limb1: 0x7adb294d7e9114edb3bff8bb, + limb2: 0x5225540400e572b, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -1988,78 +1970,78 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x301c5c9b2a51d45223fd6419, - limb1: 0x332509e377e91d5914289b8, - limb2: 0x141e2642493d9cd1, + limb0: 0x2529c16d81a347ba6d95f936, + limb1: 0x9fd0c15d140287246d809c54, + limb2: 0x1fabd1656ddcfe60, limb3: 0x0 }, u384 { - limb0: 0xa604fbead88848f5a00b25d0, - limb1: 0x28103cfaa94342dad13e6613, - limb2: 0x1339cdb56a44c359, + limb0: 0x4c42465ede92e955d20b91ea, + limb1: 0xb9e7d13d4988ec0cbdd629d0, + limb2: 0x1eb4a4459421d3e4, limb3: 0x0 }, u384 { - limb0: 0xbe89ac7aedb3af06ec928a9f, - limb1: 0xeb2e3125dbf1f5d5a2c80bd3, - limb2: 0x29d4126d236458ca, + limb0: 0x6c4d2b97d769fc93bc407e63, + limb1: 0xe7acbeb869aa3c487911481a, + limb2: 0x16f247816a99915, limb3: 0x0 }, u384 { - limb0: 0x4635085b2f03e23b95a02764, - limb1: 0xcb9832c8c814784d8fee9510, - limb2: 0xf51ea6240411530, + limb0: 0x1e908c9cd854bac942d9962c, + limb1: 0xd2c88f512530533f80a46568, + limb2: 0x2064b054a8511d00, limb3: 0x0 }, u384 { - limb0: 0x8eb39b1b5e038982327d61d1, - limb1: 0xdef6c45381dac1ab625f682, - limb2: 0x160c725a45b54841, + limb0: 0xc9356ecafe6a799435c7bc5f, + limb1: 0x3e766356d275d71bde276cda, + limb2: 0xa226c2ed5deb7c6, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xf0be797b00b695692bec659d, - limb1: 0x9e18d6669897e34ae10cd9e2, - limb2: 0x1719c362bcbf2b49, + limb0: 0x948631dec9f043e0ef3e5e77, + limb1: 0x18f27294aa82806acd1aeaf7, + limb2: 0x2d06acc3274565a9, limb3: 0x0 }, u384 { - limb0: 0x830102ed4e5cec12aec0f79b, - limb1: 0x58a0950cace1c235618e081, - limb2: 0x1e389a239ea9c85b, + limb0: 0x57c2b7dc2c5a5560b580b51d, + limb1: 0x995a2d7cde2d465149102c53, + limb2: 0xbdc5d1cc00ddd6f, limb3: 0x0 }, u384 { - limb0: 0x508ad1ef2cbac823fb6f7dab, - limb1: 0x90bf74ac20bccfbe2bbf7916, - limb2: 0x2d4e07a8919bcbd4, + limb0: 0x6e40d6afecb6bf5e30bcf965, + limb1: 0x8d778beff780ef22d84d6790, + limb2: 0xa92805ccfc67bc7, limb3: 0x0 }, u384 { - limb0: 0x26cf4bd57bfff2b0b1900cef, - limb1: 0x3721eebe1a201d7ce13db34b, - limb2: 0x236ba547fc65ce23, + limb0: 0xef87ea1d0d913cf1893801d, + limb1: 0xe61ce032895e4c22d7c86a53, + limb2: 0xe47c9db82319cac, limb3: 0x0 }, u384 { - limb0: 0x1bf6dd57ecdf56c01fe8fb66, - limb1: 0x7cb8dc3f449aeef4d7093c8c, - limb2: 0x2a55bd032059ad8f, + limb0: 0x1d40e7f40ec8c7203c803c62, + limb1: 0x8873647ef4b9c21b185ab971, + limb2: 0x3f41f099559f47a, limb3: 0x0 }, u384 { - limb0: 0xc5839b4fb993980bfe7a7f39, - limb1: 0xdaea7c39603eefea0e95285c, - limb2: 0xf1a028d85de9946, + limb0: 0x4790e069b847c3d1adbdfce4, + limb1: 0xc1ed45e2285617d57a9a460b, + limb2: 0x13a79a453afd5ea5, limb3: 0x0 }, u384 { - limb0: 0xca234a9b9459db659007dce1, - limb1: 0x7a8ddaade95d3c16e85a17b6, - limb2: 0x3dcfc3926239fe2, + limb0: 0x17acf3fcf863f5b05491af, + limb1: 0x7adb294d7e9114edb3bff8bb, + limb2: 0x5225540400e572b, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -2069,54 +2051,54 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0x3782c67bae73c8cc9855263b, - limb1: 0x1f6d7a04426b78ad9fa3702e, - limb2: 0x165d33fe6e359094, + limb0: 0xc0b2ae9b022556cdcde27e08, + limb1: 0x6d4e1471b15b428b4e219a0d, + limb2: 0x291583d26af67143, limb3: 0x0 }, u384 { - limb0: 0xac2291714459854a7717829b, - limb1: 0xbfcd7276fce09b0c499b6067, - limb2: 0xe8faec9790d773f, + limb0: 0x59f863955e71b8d1ff1c33d6, + limb1: 0xea4e9c85f1c57c3dc172b11d, + limb2: 0x12353c2f1a0cfc76, limb3: 0x0 }, u384 { - limb0: 0x9af8b391d51947bb7841388c, - limb1: 0xa7ced1711bea89b877d33fde, - limb2: 0x24183e5fcbce368f, + limb0: 0xf8131d31417412d496efb474, + limb1: 0x9b193d9fe45af2f205f0d22b, + limb2: 0x12f423b457a41539, limb3: 0x0 }, u384 { - limb0: 0x26fb5ad4a6e3b369cf8dcb09, - limb1: 0xb85045b68181585d845710fb, - limb2: 0x30644e72e131a029, + limb0: 0x6b28dd1a572797436facc010, + limb1: 0xdc2822db40c0ac2ea0c5aafa, + limb2: 0x183227397098d014, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0x3117d045c6189b0fb89cbe48, - limb1: 0xb5c1c9677074fecbf98c8a52, - limb2: 0x1ba2cf45b65057b2, + limb0: 0x523f2c557b44952299f2a34f, + limb1: 0xe5d4f08958949fa113ad66b9, + limb2: 0x242f64787c52fd1b, limb3: 0x0 }, u384 { - limb0: 0x1c0ae78bb6ae41a01bf5a29e, - limb1: 0x3312fa94ab31e55a6ede29da, - limb2: 0x2979f59f2c13e6d6, + limb0: 0x9320349af9541f047a6c38c6, + limb1: 0xf00a403674e30d9703e8da2e, + limb2: 0x130aea26430ddf9, limb3: 0x0 }, u384 { - limb0: 0x9eced828a9b8134e998dc2bc, - limb1: 0x19b3d12ad0d6a10440eee462, - limb2: 0x26eaadb374490de3, + limb0: 0x438460c48893ea03fb79e14b, + limb1: 0xae190e53163323dbf76be498, + limb2: 0x47a07a4e0d19349, limb3: 0x0 }, u384 { - limb0: 0x55eab3bcea3bb781b7ce9b8d, - limb1: 0xb97616b21e4ef23e5b7759b9, - limb2: 0x102f50e61ccb5a9a, + limb0: 0x1a0333d118e0baf356ff9858, + limb1: 0xad731b2e5997787e5b5110ef, + limb2: 0xcffc04bcfe0683e, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -2124,78 +2106,78 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x33751bc3bc1b34d5fc9afbfa, - limb1: 0xe3d61b20d2c8eb43977e307e, - limb2: 0x1dce67ad7fe9875f, + limb0: 0xc7c00d0069209fb8f01fe0d8, + limb1: 0xd485dfe6cca689576ed0ed16, + limb2: 0x693c78329a6996b, limb3: 0x0 }, u384 { - limb0: 0xbbb85f10b38f0d40958ec501, - limb1: 0xb272f633f31e99437a7d302e, - limb2: 0x12770e3bb2dfd350, + limb0: 0xb59fa4eef8d7746642a1e380, + limb1: 0xccd281bff660416d67106027, + limb2: 0x925c7a71043bb90, limb3: 0x0 }, u384 { - limb0: 0x390871c06b22df512a951fd7, - limb1: 0x5eda5277032125a033a0c347, - limb2: 0x22fe60e22bf2cee, + limb0: 0x60262a250c19f7d4adc90379, + limb1: 0x5e32f9e287a0ac18c4130ff8, + limb2: 0x46fad2def93ddb5, limb3: 0x0 }, u384 { - limb0: 0x52fe5f1e0965990b9094f653, - limb1: 0x8a39ceef4afbb33d096ab71, - limb2: 0x1da2cc4662c7af78, + limb0: 0xf8e70d4c202bd1a79ac54d28, + limb1: 0x4dcb4e437d65d24f0843d195, + limb2: 0xf05b3ae3e74f665, limb3: 0x0 }, u384 { - limb0: 0xe332ee502c93b258c2d1f3a9, - limb1: 0x6fd4f9db5495f9e67f079704, - limb2: 0x3cd639389179b94, + limb0: 0xf5ae4e052366fa818f2ec8ef, + limb1: 0x9bb70b6389b5527fe87b7fa6, + limb2: 0x1c3752d096d7089c, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x2ad5a6441629451851593d91, - limb1: 0x68f5167fcfdda40655243465, - limb2: 0x22841f5e41bf66ee, + limb0: 0x25d9efe5f98ca73a1cddef5f, + limb1: 0x40de462f06bb2e280c055f09, + limb2: 0xbc59083b295b700, limb3: 0x0 }, u384 { - limb0: 0x833d2188abc9acb2a2e6ed4c, - limb1: 0x28986450fe92ff541d97a86b, - limb2: 0x1ba543f7c1d8742f, + limb0: 0xb9609dd0ebfc5d0d6f44aa52, + limb1: 0xd01ec0a35ea928c50bba8e8b, + limb2: 0x3920be72c9299ed, limb3: 0x0 }, u384 { - limb0: 0xb88f35f84e721be1baf4da6, - limb1: 0xdc7ae8136f81325193c9d805, - limb2: 0x13f76c349a77e955, + limb0: 0xca8d224d99bbbe0bf26da3e1, + limb1: 0xa4b2af942996b93e643adc8, + limb2: 0xd6e16eea274b9dd, limb3: 0x0 }, u384 { - limb0: 0xca6620ef48ab357e078b93a8, - limb1: 0x29d3c7c749e07d2974712cec, - limb2: 0x1bcc73852b80c759, + limb0: 0x37d6fd3b89c639e5c6746f10, + limb1: 0x35ddfc5de3d9b0be8e1f2ef5, + limb2: 0x1aca56e90ac295ae, limb3: 0x0 }, u384 { - limb0: 0x1c0ae78bb6ae41a01bf5a2a1, - limb1: 0x3312fa94ab31e55a6ede29da, - limb2: 0x2979f59f2c13e6d6, + limb0: 0x9320349af9541f047a6c38c9, + limb1: 0xf00a403674e30d9703e8da2e, + limb2: 0x130aea26430ddf9, limb3: 0x0 }, u384 { - limb0: 0x9eced828a9b8134e998dc2bc, - limb1: 0x19b3d12ad0d6a10440eee462, - limb2: 0x26eaadb374490de3, + limb0: 0x438460c48893ea03fb79e14b, + limb1: 0xae190e53163323dbf76be498, + limb2: 0x47a07a4e0d19349, limb3: 0x0 }, u384 { - limb0: 0x55eab3bcea3bb781b7ce9b8d, - limb1: 0xb97616b21e4ef23e5b7759b9, - limb2: 0x102f50e61ccb5a9a, + limb0: 0x1a0333d118e0baf356ff9858, + limb1: 0xad731b2e5997787e5b5110ef, + limb2: 0xcffc04bcfe0683e, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -2205,9 +2187,9 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0x57318716e1ccf8d709ff6432, - limb1: 0x26f018ea679092009450a9f3, - limb2: 0x22aed0b1d27adb9b, + limb0: 0xcf8f8fb22e4b23a95ca2c9d0, + limb1: 0x27ac80836c1a992a72f23113, + limb2: 0x2350b193376701e4, limb3: 0x0 }, u384 { @@ -2220,15 +2202,15 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0xe6b5239554a96d50a86c91e1, - limb1: 0xbf476c9876e44bebe618bb57, - limb2: 0x189c7bc9b42c0032, + limb0: 0xeadeff211d89a89e49f582c0, + limb1: 0xbe414c2731a762d02c9f76e0, + limb2: 0x6f2c3aaf652663b, limb3: 0x0 }, u384 { - limb0: 0x846fc1eefba3324e78b8c977, - limb1: 0x521ed349d1b817b147e2f210, - limb2: 0x2c97b88f040a534a, + limb0: 0xe0043195cce03ebdd9e0bc00, + limb1: 0x4a9d7864934d32912fce162, + limb2: 0xa849ff4d1ea7d5c, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -2236,49 +2218,49 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x377c398c311e68455eaa609, - limb1: 0x8722a3922cd43a64b01a7782, - limb2: 0xafce0ae40846516, + limb0: 0xc0bb34deef6b7876d7d8604f, + limb1: 0xfa41730cf4a093e071b1accc, + limb2: 0x2427142f96746e4a, limb3: 0x0 }, u384 { - limb0: 0xebd0e8093839c9ebebee1c4e, - limb1: 0xecafc6443de5e7b2e469461a, - limb2: 0x2f40dcf081ad0c1e, + limb0: 0x5bbc6bf4fd304c94682dace2, + limb1: 0x34d9040e75212a3b3238e9d3, + limb2: 0xfce480410c5780, limb3: 0x0 }, u384 { - limb0: 0x83bdfb2e98f2ebffc099a99b, - limb1: 0x3083939910b06cb2fa1ef4e3, - limb2: 0x19a0e83bc2814eed, + limb0: 0x496fbb4901e3e5b536823bb6, + limb1: 0x53ffd23af999a13c1892a4a0, + limb2: 0x204069b01b89941d, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x4bada032c1dbbbdb20c8b85c, - limb1: 0x85860012e32b8b661ac8c776, - limb2: 0x197124ea3b52606e, + limb0: 0xc09cfd63589cf9dadde08840, + limb1: 0x3ac3e47594f6287085de64a2, + limb2: 0x14d84b00e2f732b3, limb3: 0x0 }, u384 { - limb0: 0xbc6bb0b27aa87ebdb93061d7, - limb1: 0x85bbee7072259658a8a6010e, - limb2: 0x24fe8cc749bbb98b, + limb0: 0xa00c94c166a0bc398da23400, + limb1: 0xdfd8692db9e797b38f6a428, + limb2: 0x1f8ddfde75bf7814, limb3: 0x0 }, u384 { limb0: 0x3, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xe6b5239554a96d50a86c91e1, - limb1: 0xbf476c9876e44bebe618bb57, - limb2: 0x189c7bc9b42c0032, + limb0: 0xeadeff211d89a89e49f582c0, + limb1: 0xbe414c2731a762d02c9f76e0, + limb2: 0x6f2c3aaf652663b, limb3: 0x0 }, u384 { - limb0: 0x846fc1eefba3324e78b8c977, - limb1: 0x521ed349d1b817b147e2f210, - limb2: 0x2c97b88f040a534a, + limb0: 0xe0043195cce03ebdd9e0bc00, + limb1: 0x4a9d7864934d32912fce162, + limb2: 0xa849ff4d1ea7d5c, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -2288,12 +2270,19 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0xe8be55391e8e6f8bde0f93d5, - limb1: 0xd6c08f868cfef378fd8ec5f1, - limb2: 0x4005f51ebca622, + limb0: 0xec056972decdd69c05c1f203, + limb1: 0x459e64e41e695b6417ef4aba, + limb2: 0x89c91d1455fe934, limb3: 0x0 }, - g_rhs_sqrt: array![], + g_rhs_sqrt: array![ + u384 { + limb0: 0xcc2e5883cf367cd435fdbfd3, + limb1: 0xa6312e949aaf3570a93f1063, + limb2: 0x3fcb10bdc256868, + limb3: 0x0 + } + ], }; let res = msm_g1( points, scalars, scalars_digits_decompositions, msm_hint, derive_point_from_x_hint, 0 @@ -2301,15 +2290,15 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0x442fa07eb22c9e5e1b89e6d3, - limb1: 0x64feeef1c9f0b16402b0bfc7, - limb2: 0xd0a4c7093f0bab4, + limb0: 0xa505aa539534e1ed3825e1d3, + limb1: 0xd3d6e50ccbd336be810ae134, + limb2: 0x2b8806194c015dab, limb3: 0x0 }, y: u384 { - limb0: 0x4894891e788affd14e187fed, - limb1: 0x7f1cf0742ab813bae97d1756, - limb2: 0x2c76fb972bd18c9c, + limb0: 0xe3066db5d6cc9577162aa35c, + limb1: 0x3ab20c13b3f5fdea9441aaa8, + limb2: 0xc21ee843d06bdd4, limb3: 0x0 } } @@ -2322,57 +2311,57 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0x5b2b7053b58f8e0dcd23b6d8, - limb1: 0xdb7786bc82c02f3192d56691, - limb2: 0x24272883c90b9e97, + limb0: 0x5c724369afbc772d02aed58e, + limb1: 0x2cd3bc838c66439a3d6160b, + limb2: 0x72f26b55fb56be1, limb3: 0x0 }, y: u384 { - limb0: 0x60e6d482d35f3ae3a789d8aa, - limb1: 0xdf7ca22316d37b3a606bcf63, - limb2: 0x26d6a4869eb6d3d2, + limb0: 0x772ca79c580e121ca148fe75, + limb1: 0xce2f55e418ca01b3d6d1014b, + limb2: 0x2884b1dc4e84e30f, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x3c9c33dbdd31cc9a47e3492e, - limb1: 0xb9398edfc6591bc474162615, - limb2: 0x24d3f829efdc4185, + limb0: 0x536c985db33c69f7c242e07a, + limb1: 0xfc531bccffafcf1e59d91fb9, + limb2: 0x2585e4f8a31664cb, limb3: 0x0 }, y: u384 { - limb0: 0xa69273b553d3e19dff473e56, - limb1: 0xd133afcda686864bbee6c178, - limb2: 0x227e370636d6f2f9, + limb0: 0x57fa42444057cf0c1d62ae3c, + limb1: 0x4f48d341183118d68ea41313, + limb2: 0x1d2d2799db056ed1, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x520ffd73c1fb944cbb81521f, - limb1: 0x84631aa7d400349a7889c1a0, - limb2: 0x184bd633f84474f1, + limb0: 0x236ca9312dad3661a37f2d6f, + limb1: 0x98424c01caad7592315715d1, + limb2: 0x795b9fd941b23c4, limb3: 0x0 }, y: u384 { - limb0: 0x936fa61cc47482f53d4e8c36, - limb1: 0x2fcf485b0f7effe8a5a39f61, - limb2: 0x172f8af809893f51, + limb0: 0xc7ab5834609a54b8993ffd79, + limb1: 0xe81cd490528b814ca632aace, + limb2: 0x2d9ff53d3009e6f7, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xde35ad5b42fd9774868ad0e9, - limb1: 0x81a70010c4a772288206f13f, - limb2: 0x1c8e9d886b66b8ee, + limb0: 0x163df40cafbf585ca5b2ab44, + limb1: 0xb4752e4666c88dbbe23783a0, + limb2: 0x1a801462ac9cb657, limb3: 0x0 }, y: u384 { - limb0: 0x2ddd78fb47502232f06a60a9, - limb1: 0x7548e5ae38e78fc0d212c928, - limb2: 0x40f3d905aff96f2, + limb0: 0xac9b557d7ca8625d957263c6, + limb1: 0xdc6f75fa8339a78b998ae54a, + limb2: 0x28683293b6494d9f, limb3: 0x0 } }, @@ -2380,16 +2369,16 @@ mod msm_tests { .span(); let scalars = array![ u256 { - low: 0xe5e15939c0afb853035ee2aedbc8065d, high: 0x11d93acaef898a7bfddea87843b8687e + low: 0x8d723104f77383c13458a748e9bb17bc, high: 0x215ddba6dd84f39e71545a137a1d5006 }, u256 { - low: 0x1651b220a688dcd83a36e7d7d2d4bec0, high: 0xf9ea2d2de3e2e33a161c74634189aca + low: 0xeb2083e6ce164dba0ff18e0242af9fc3, high: 0x5f82a8f03983ca8ea7e9d498c778ea6 }, u256 { - low: 0x6985050192b7605fde1e6e692bf32369, high: 0x1aa66b1a629448a1372e982543117530 + low: 0xb5d32b1666194cb1d71037d1b83e90ec, high: 0x28045af9ab0c1681c8f8e3d0d3290a4c }, u256 { - low: 0x2da9b054e40598fe04fd3976de033fb5, high: 0x1dff4517743b159fe1399c697112811 + low: 0xd3fbf47a7e5b1e7f9ca5499d004ae545, high: 0x2ebce25e3e70f16a55485822de1b372a }, ] .span(); @@ -2397,253 +2386,255 @@ mod msm_tests { array![ ( array![ - -0x1, - -0x1, - 0x1, 0x0, 0x1, - -0x1, - -0x1, - 0x0, - -0x1, 0x1, 0x0, - 0x1, -0x1, - 0x0, 0x1, 0x0, - 0x0, 0x1, + -0x1, 0x1, 0x1, - 0x0, -0x1, 0x1, - 0x0, -0x1, - 0x0, 0x1, -0x1, -0x1, + 0x1, 0x0, 0x0, - 0x1, -0x1, + 0x1, 0x0, 0x0, - 0x1, 0x0, - -0x1, - -0x1, - 0x1, 0x0, - -0x1, 0x1, -0x1, 0x1, 0x1, - 0x1, - -0x1, - 0x1, -0x1, 0x1, 0x0, 0x1, 0x0, + 0x0, + 0x0, + 0x0, + 0x1, -0x1, -0x1, + 0x0, 0x1, - 0x1, + -0x1, + 0x0, -0x1, 0x1, 0x1, -0x1, 0x0, - -0x1, - 0x1, 0x0, - 0x1, 0x0, -0x1, -0x1, + 0x0, + -0x1, + 0x1, + 0x0, + 0x0, + 0x1, 0x1, -0x1, 0x0, 0x0, 0x1, -0x1, + 0x0, -0x1, 0x1, 0x1, 0x0, + 0x1, + 0x0, + -0x1, + 0x0, + 0x0, + 0x1, -0x1, -0x1, + -0x1, + 0x1, ] .span(), array![ -0x1, 0x1, - 0x0, - 0x1, - 0x1, -0x1, + 0x0, -0x1, + 0x0, -0x1, + 0x1, -0x1, - 0x0, - 0x0, - 0x0, - 0x0, + 0x1, 0x1, 0x0, -0x1, - -0x1, - -0x1, 0x0, + -0x1, 0x0, 0x1, + 0x0, 0x1, 0x0, 0x1, + 0x1, + 0x1, -0x1, -0x1, 0x1, + 0x1, 0x0, - -0x1, - -0x1, + 0x1, 0x0, + 0x1, -0x1, 0x0, -0x1, 0x0, - 0x0, 0x1, 0x0, + 0x0, -0x1, - -0x1, 0x1, + 0x1, + -0x1, 0x0, + 0x0, + 0x1, 0x1, 0x0, 0x1, + 0x0, -0x1, 0x1, 0x0, 0x1, 0x0, + 0x1, -0x1, + 0x1, -0x1, - -0x1, + 0x1, 0x0, - -0x1, 0x0, - -0x1, + 0x1, + 0x0, 0x1, -0x1, 0x0, + 0x1, -0x1, 0x0, + -0x1, 0x0, 0x1, 0x1, - -0x1, - -0x1, 0x1, 0x0, + -0x1, 0x0, 0x1, 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x1, -0x1, - 0x1, ] .span() ), ( array![ + -0x1, 0x1, - 0x0, - 0x0, + -0x1, + 0x1, + -0x1, 0x0, 0x0, -0x1, -0x1, - 0x1, - 0x1, -0x1, - 0x0, 0x1, 0x0, 0x0, - 0x0, - 0x1, + -0x1, -0x1, 0x1, - 0x0, 0x1, 0x1, -0x1, 0x1, + -0x1, 0x1, 0x1, -0x1, 0x0, - -0x1, - 0x0, - 0x1, 0x1, 0x0, 0x0, -0x1, - 0x1, + 0x0, + -0x1, -0x1, 0x1, 0x0, - -0x1, 0x1, 0x1, + -0x1, 0x1, 0x0, -0x1, - 0x0, - 0x1, - 0x1, -0x1, - 0x0, - 0x1, -0x1, - 0x1, - 0x0, -0x1, - 0x0, -0x1, -0x1, 0x0, 0x0, 0x0, - -0x1, + 0x0, 0x0, 0x1, -0x1, + 0x1, + 0x0, + -0x1, + 0x0, 0x0, 0x1, 0x0, + 0x0, + 0x1, + 0x1, -0x1, -0x1, + 0x1, + 0x1, + 0x0, + -0x1, 0x0, -0x1, 0x0, 0x0, + 0x1, -0x1, -0x1, -0x1, + 0x0, + 0x0, 0x1, - 0x1, + 0x0, -0x1, -0x1, ] @@ -2653,104 +2644,92 @@ mod msm_tests { -0x1, 0x1, 0x1, - 0x0, -0x1, - 0x1, - 0x0, -0x1, 0x0, 0x0, - 0x1, - 0x1, - 0x1, 0x0, 0x1, - 0x1, - 0x1, + 0x0, + -0x1, + 0x0, 0x1, 0x0, + 0x1, -0x1, + 0x1, -0x1, + 0x1, -0x1, + 0x0, -0x1, 0x1, + 0x0, -0x1, 0x1, - -0x1, 0x1, -0x1, + 0x1, 0x0, + -0x1, 0x0, 0x1, + 0x0, 0x1, + 0x0, + 0x0, + 0x0, 0x1, -0x1, 0x1, 0x1, - 0x0, 0x1, - 0x0, 0x1, + -0x1, 0x1, 0x1, - -0x1, - -0x1, + 0x0, + 0x0, -0x1, 0x1, - 0x0, + 0x1, -0x1, - 0x0, -0x1, + 0x1, 0x0, 0x1, + 0x1, -0x1, 0x0, - -0x1, - -0x1, 0x0, 0x0, - -0x1, + 0x1, 0x0, - -0x1, 0x0, -0x1, - -0x1, 0x0, -0x1, 0x0, -0x1, -0x1, 0x1, - 0x1, - -0x1, 0x0, - -0x1, - -0x1, + 0x0, -0x1, 0x1, + -0x1, ] .span() ), ( array![ - 0x1, - 0x0, - 0x0, - 0x1, - 0x0, -0x1, - 0x0, - 0x0, - 0x1, -0x1, 0x0, - 0x0, - 0x1, - 0x1, -0x1, + 0x1, 0x0, 0x0, - -0x1, 0x1, 0x1, 0x1, @@ -2758,67 +2737,65 @@ mod msm_tests { 0x0, 0x1, 0x0, - 0x0, - -0x1, 0x1, - -0x1, 0x0, - -0x1, - -0x1, - -0x1, 0x1, -0x1, - 0x0, - 0x0, - 0x0, - 0x1, 0x1, + -0x1, 0x0, -0x1, 0x1, 0x1, 0x1, 0x0, - -0x1, - 0x0, 0x1, -0x1, + -0x1, + 0x0, 0x1, 0x1, 0x1, + -0x1, + -0x1, 0x0, - 0x1, 0x0, 0x1, 0x1, -0x1, -0x1, -0x1, + 0x1, + 0x0, -0x1, -0x1, 0x1, - -0x1, 0x0, + -0x1, 0x1, - 0x0, + 0x1, + -0x1, 0x1, 0x0, -0x1, 0x0, 0x1, - 0x1, -0x1, 0x0, -0x1, - 0x1, 0x0, + -0x1, 0x0, 0x1, - ] - .span(), - array![ + -0x1, -0x1, 0x0, + -0x1, + 0x1, + 0x1, + 0x1, + 0x0, + 0x0, 0x0, 0x1, -0x1, @@ -2826,185 +2803,201 @@ mod msm_tests { 0x1, 0x0, 0x1, - 0x0, -0x1, -0x1, + ] + .span(), + array![ + 0x0, + 0x0, + 0x0, + 0x0, 0x0, 0x0, 0x0, 0x1, + 0x0, 0x1, 0x0, - -0x1, 0x0, + 0x1, -0x1, -0x1, + 0x1, -0x1, - -0x1, + 0x1, + 0x1, 0x0, -0x1, 0x0, + -0x1, + -0x1, + -0x1, 0x1, 0x0, 0x1, - 0x0, + -0x1, + -0x1, 0x1, + -0x1, 0x0, 0x0, - -0x1, - 0x1, 0x1, 0x1, 0x0, 0x1, - -0x1, 0x1, + -0x1, + -0x1, 0x0, 0x0, 0x0, - 0x0, - -0x1, - 0x1, - -0x1, - 0x1, 0x1, 0x0, 0x0, 0x0, - -0x1, - 0x0, 0x1, - -0x1, 0x0, 0x0, + -0x1, + -0x1, + -0x1, 0x0, 0x0, + 0x1, 0x0, 0x0, - 0x1, - -0x1, 0x0, + -0x1, 0x1, 0x1, 0x1, + 0x0, 0x1, -0x1, 0x0, + -0x1, + 0x0, 0x1, - 0x1, + 0x0, + 0x0, -0x1, 0x1, 0x0, -0x1, -0x1, + 0x0, + -0x1, ] .span() ), ( array![ - 0x1, - 0x1, 0x1, -0x1, -0x1, - 0x0, - 0x0, - 0x0, - 0x1, - 0x0, - 0x0, -0x1, -0x1, - 0x1, 0x0, 0x0, - 0x1, -0x1, 0x0, 0x1, 0x1, 0x1, - 0x1, - 0x1, -0x1, - 0x0, - 0x0, 0x1, 0x1, - 0x0, 0x1, - -0x1, - 0x0, - 0x0, - -0x1, - 0x0, 0x0, 0x1, - 0x1, -0x1, + 0x1, -0x1, -0x1, 0x0, + -0x1, + 0x1, 0x0, -0x1, 0x1, 0x1, - -0x1, 0x1, -0x1, - 0x1, + 0x0, -0x1, -0x1, 0x1, 0x0, + 0x1, -0x1, -0x1, 0x0, + -0x1, + 0x0, + 0x0, 0x0, -0x1, 0x1, -0x1, 0x1, - -0x1, + 0x0, 0x1, 0x0, 0x0, - -0x1, - -0x1, + 0x1, + 0x0, + 0x1, 0x0, - -0x1, - -0x1, 0x0, - -0x1, - -0x1, - -0x1, 0x0, 0x1, 0x1, + 0x0, -0x1, - ] - .span(), - array![ -0x1, 0x0, 0x0, + 0x0, 0x1, + -0x1, 0x0, 0x0, + -0x1, + 0x1, + 0x1, + 0x1, + 0x1, + -0x1, + 0x1, 0x0, + -0x1, 0x0, - 0x1, -0x1, -0x1, + ] + .span(), + array![ -0x1, 0x1, 0x1, 0x1, + 0x0, + 0x0, + -0x1, + -0x1, + 0x0, + 0x1, + 0x0, -0x1, + 0x1, 0x0, 0x0, + -0x1, 0x1, 0x0, + 0x1, + -0x1, 0x0, -0x1, -0x1, @@ -3012,56 +3005,59 @@ mod msm_tests { -0x1, 0x1, 0x0, + -0x1, 0x1, 0x0, - 0x0, - 0x1, -0x1, + 0x1, 0x0, + -0x1, 0x0, 0x0, + 0x1, 0x0, + -0x1, 0x0, - 0x1, -0x1, 0x0, 0x0, 0x1, - -0x1, 0x0, - 0x1, -0x1, - 0x0, - 0x0, -0x1, + 0x1, -0x1, 0x1, + -0x1, + 0x0, 0x0, - 0x1, 0x0, 0x0, - 0x1, - 0x1, - 0x1, - 0x1, 0x0, -0x1, -0x1, - -0x1, + 0x1, -0x1, 0x1, 0x0, 0x1, + -0x1, + 0x0, 0x0, -0x1, - 0x1, 0x0, 0x1, + 0x1, 0x0, + 0x1, + 0x1, -0x1, 0x0, - -0x1, + 0x0, 0x1, + 0x1, + 0x1, + -0x1, ] .span() ), @@ -3071,109 +3067,109 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0x95e44c97f724478df9804239, - limb1: 0x814d6a23445142a3f4c502d7, - limb2: 0x294575b42e9aac00, + limb0: 0x3d5b6d73f46d6a1d2553f62a, + limb1: 0x23e8534652433fec3459778b, + limb2: 0xe6ecb79b6793c21, limb3: 0x0 }, y: u384 { - limb0: 0xa779719772334efdfdeead00, - limb1: 0x2f57e17797225193117f9738, - limb2: 0x13e22af22a27f8a4, + limb0: 0xb54039549a15ae51f6f4d8a3, + limb1: 0x5af0e845e40438f42809cbdf, + limb2: 0x23059439622a9612, limb3: 0x0 } }, Q_high: G1Point { x: u384 { - limb0: 0x6ade050e606200403ccfec25, - limb1: 0xe1a3de7f0f230639cc423dae, - limb2: 0x1c3ab1d2d84eebff, + limb0: 0x5df5ed47ddff37d52f2dcd48, + limb1: 0xe14caa9d6785a746cd6c886f, + limb2: 0x24bf2770978396f6, limb3: 0x0 }, y: u384 { - limb0: 0x4ed6f8f6b3c5fba8919de5e2, - limb1: 0x66ecc7bda36ae0b2f1cf5cb3, - limb2: 0xdb82bb100a9b98c, + limb0: 0x796c87926571220ba9403bc9, + limb1: 0x7f858cf42d732395434196ea, + limb2: 0x2f607ab06345c8a3, limb3: 0x0 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0xccaea480807332c9b160112d, - limb1: 0xaac8d161953675e5feb1ce8f, - limb2: 0xac54ef0970c0026, + limb0: 0xb2ed556e27e3fe007b580b85, + limb1: 0x6fb4f2de94796c6379f93a42, + limb2: 0x26601f9174590a47, limb3: 0x0 }, y: u384 { - limb0: 0x381f6716aaf9b75e6d30c3c7, - limb1: 0x379ba6e4cb70ffb083d41bc, - limb2: 0xb2e8e3b50a3da8f, + limb0: 0xefdd6fe8a9de1f198d002e0e, + limb1: 0x3b5889970086bf66a5278a09, + limb2: 0x1acf18e63f5fc023, limb3: 0x0 } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0xb1fe12c0ace9ed8a53d36c51, - limb1: 0x2c81b742a10d3aa9af07d0f4, - limb2: 0x27e3c478a8ab9ac7, + limb0: 0xfd1fdeff78b7a1e45c739ef5, + limb1: 0x70e10b62cba92b514c2048ed, + limb2: 0x9378657b3d71593, limb3: 0x0 }, u384 { - limb0: 0x90dfda5ecb865e06ec600f26, - limb1: 0xb7b2640deeedac4d602b70e1, - limb2: 0xd9f9f8765c91b1a, + limb0: 0x6f87e84d077a2906098664be, + limb1: 0xe2dfad635aa699582a77fc34, + limb2: 0x117b1127a1b1270b, limb3: 0x0 }, u384 { - limb0: 0x37d5a7bd7c54ce1d8431f433, - limb1: 0x6423641dff344fcab6b60b1, - limb2: 0x282fadab9576bc0b, + limb0: 0x827f95fcae759f17e360dfaf, + limb1: 0x8a284bfff42c554d41351b39, + limb2: 0x1c634bccb1ef572b, limb3: 0x0 }, u384 { - limb0: 0xdbeed8994863fc6f47bf8d4a, - limb1: 0x85714a3a7a58e334131aacc0, - limb2: 0x1c1b23ceebf78784, + limb0: 0xf86202d33c5d8f955189f703, + limb1: 0x94c58b39f2ebad6e695b4737, + limb2: 0x9a5466054937ebe, limb3: 0x0 }, u384 { - limb0: 0x5974159a6738944800e45bef, - limb1: 0xb85045b68181585d46be8287, - limb2: 0x30644e72e131a029, + limb0: 0xd8d9ce6f3d3752adbed5b6, + limb1: 0xdc2822db40c0ac2d9ff47260, + limb2: 0x183227397098d014, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0x7481d0c937d7bf24e6e248e2, - limb1: 0x9f4141d5028be1e3994cd12e, - limb2: 0x70103b0855a32b3, + limb0: 0x3fc2784cc6068cdab1b330a1, + limb1: 0x74fede7edf67dacbde17313f, + limb2: 0x18d56772a8424e8f, limb3: 0x0 }, u384 { - limb0: 0x854e7246819344eb37e16409, - limb1: 0xf91cb58d0399869bc0254435, - limb2: 0x1063c6c2f6be3a91, + limb0: 0x97faa862cf0698428f8169f5, + limb1: 0x39e8af9d6ead92e7d115894b, + limb2: 0x28ab452f9dcbcd15, limb3: 0x0 }, u384 { - limb0: 0x5c07faa7d218f381f37494f, - limb1: 0xb1ee3d481f66b923bebc3310, - limb2: 0x23327b5e7026b65f, + limb0: 0xba1a6f90b4f9b3431a8bd785, + limb1: 0x40fd38ad6393d88ee16a5c33, + limb2: 0xc9654efdbda482f, limb3: 0x0 }, u384 { - limb0: 0x424e47f92abd8aeb76ab4fc6, - limb1: 0x733024af5f7dc537313ee451, - limb2: 0x205f9d5eb1da6b6a, + limb0: 0x6ddfeb0d595dcb8988a87db8, + limb1: 0x352fb119041462fbe0f821da, + limb2: 0x248baabf88b80e45, limb3: 0x0 }, u384 { - limb0: 0x43d58e9e61a3626411608fd5, - limb1: 0xc5387c61dff32d1967c467e7, - limb2: 0x1a762fad3998c6a8, + limb0: 0xa9feaea1436e3e2d7d8275a9, + limb1: 0xe0664946d33a28e96b8e61, + limb2: 0x38ef75dc8665969, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -3181,90 +3177,90 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x27e868b0e72dd17b93ef40d2, - limb1: 0x28f8fcb51fa76ab167244890, - limb2: 0x21ab7ed70f933cc, + limb0: 0xf4942f97cdc00b5a5f6d3acc, + limb1: 0xd1628c6d64be2316bb1cd2a5, + limb2: 0x19c12f8cb8df23e9, limb3: 0x0 }, u384 { - limb0: 0x1c552796c04225f3653ae0bc, - limb1: 0x59a4384774f488f3278b83e6, - limb2: 0x214745a33fbb45e4, + limb0: 0x799560cda4f45a7eadadb211, + limb1: 0x66e56e54404bb75ead10292a, + limb2: 0xb6bb921f3bcf044, limb3: 0x0 }, u384 { - limb0: 0x7ee14b91ee772e7ef1e18173, - limb1: 0x56eb0d4769d4f31bdb1c396b, - limb2: 0x2c5508da317ce1ce, + limb0: 0x15ccbdc06406285ce0d0056b, + limb1: 0xba44e24a7f8e294b4b0edcf2, + limb2: 0x67db3f085b46e7c, limb3: 0x0 }, u384 { - limb0: 0x222dd72e0183d8b2d31e11ac, - limb1: 0x493636fa59a8d5a3baccae90, - limb2: 0x2c3ba04a87107b9a, + limb0: 0xbcca250e3bb3a96869ff5b4c, + limb1: 0x631fa3f415e06cbf59dc63f3, + limb2: 0x53e2f477a5dcf95, limb3: 0x0 }, u384 { - limb0: 0xef716396e6ec6eed508a735c, - limb1: 0xce9c9d0aa0b5e323bdcc33bf, - limb2: 0x2c44754e25d61542, + limb0: 0x8dc71a6df0e679ee9cd93539, + limb1: 0x8dfc9d0ea5dde0bac7e270b2, + limb2: 0x24d123c9f6eeef4e, limb3: 0x0 }, u384 { - limb0: 0x9d3b6d4ffde1a58120e11a1, - limb1: 0xcd495ca759d5167b98c8318c, - limb2: 0x69bd6a87b636da5, + limb0: 0xef2b9b4b411058ce9a032361, + limb1: 0x545c5158027ba46556420c74, + limb2: 0x23a2687ef4c47ac0, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x5d85725ba7873d6eb4a6daa6, - limb1: 0xddc3c57f07a3a5aacbe6738b, - limb2: 0x15030b11900e981a, + limb0: 0x56d59e5915f31a793c9c949c, + limb1: 0xa6ac55c61cb6380602c4292c, + limb2: 0x1a1be7e517954b84, limb3: 0x0 }, u384 { - limb0: 0x27798c46489942aacf272ed4, - limb1: 0x3305daf0894b3b75a8ee620f, - limb2: 0xc705d603090f8c, + limb0: 0xf70c640df4d2b099fd8a4351, + limb1: 0x3d19836b490607fc443dc6bf, + limb2: 0x193932a9170026ec, limb3: 0x0 }, u384 { - limb0: 0x405de9e4ff23957aacabe15f, - limb1: 0xa52a2c6b5b317ab00d31c40d, - limb2: 0x8ced5358e10e2cb, + limb0: 0x2e4f4eb21eed19c94fa3868f, + limb1: 0xc2f7aa082abb89aca43f149b, + limb2: 0x25c2fecf938ed88d, limb3: 0x0 }, u384 { - limb0: 0x6a89139a3fcf47b999ea3da6, - limb1: 0x883124761e0280cdfe06a8ff, - limb2: 0x7573ee6d886349f, + limb0: 0xb87ea45a59ded7499ab2af3b, + limb1: 0xa3ed665ce8a2530451fcc1ab, + limb2: 0x25afcacb8007390b, limb3: 0x0 }, u384 { - limb0: 0xe85d53946a5ce00093861641, - limb1: 0x9075e4fc21f1b58a5ff11159, - limb2: 0x2f620757c256ee62, + limb0: 0x2d84e9b95d30c6b42f8bcda9, + limb1: 0x84399cc2c1a5e904f5d6c9df, + limb2: 0x2f3dcd615cd3926, limb3: 0x0 }, u384 { - limb0: 0x5c07faa7d218f381f374952, - limb1: 0xb1ee3d481f66b923bebc3310, - limb2: 0x23327b5e7026b65f, + limb0: 0xba1a6f90b4f9b3431a8bd788, + limb1: 0x40fd38ad6393d88ee16a5c33, + limb2: 0xc9654efdbda482f, limb3: 0x0 }, u384 { - limb0: 0x424e47f92abd8aeb76ab4fc6, - limb1: 0x733024af5f7dc537313ee451, - limb2: 0x205f9d5eb1da6b6a, + limb0: 0x6ddfeb0d595dcb8988a87db8, + limb1: 0x352fb119041462fbe0f821da, + limb2: 0x248baabf88b80e45, limb3: 0x0 }, u384 { - limb0: 0x43d58e9e61a3626411608fd5, - limb1: 0xc5387c61dff32d1967c467e7, - limb2: 0x1a762fad3998c6a8, + limb0: 0xa9feaea1436e3e2d7d8275a9, + limb1: 0xe0664946d33a28e96b8e61, + limb2: 0x38ef75dc8665969, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -3274,66 +3270,66 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0xe1216aaa4db9fc7abe8d89d2, - limb1: 0x6794c79d482ccef873c76d8c, - limb2: 0x23ede37f6b8ae7ae, + limb0: 0xdf123a82a4c784222ac38779, + limb1: 0x29154ba035b111ad7e71cecf, + limb2: 0xd404e673f1b30a6, limb3: 0x0 }, u384 { - limb0: 0x3f6acf1f252351f43ca433ce, - limb1: 0x8e5bbb415be8923fef3a579e, - limb2: 0xdf544af908f1a96, + limb0: 0xd5ce248bac4db6ee6b812e1a, + limb1: 0x38077956a1e6113afd1ff8d, + limb2: 0xfc22251d41ace94, limb3: 0x0 }, u384 { - limb0: 0x8d0debd9c07c67eb417a8e3b, - limb1: 0xc4e7fb632bc40b8a56e8895e, - limb2: 0x22e4ab03ba062e79, + limb0: 0x3dfc923066137664e212ef8d, + limb1: 0x7af57f04429b4948a78c617a, + limb2: 0x20ab8679267b137c, limb3: 0x0 }, u384 { - limb0: 0xdd593f367bb24dbbb30f899f, - limb1: 0xcc4d8198d93b2972f6983679, - limb2: 0x28e698116b0d27c4, + limb0: 0xbe4475942451eb9ed88825c3, + limb1: 0xeb93484224bbf469eefd4cb6, + limb2: 0x1b5b0f824bc316fc, limb3: 0x0 }, u384 { - limb0: 0x63c5026757ccee46cc1c2c8, - limb1: 0xb85045b68181585d9572c37f, - limb2: 0x30644e72e131a029, + limb0: 0x12bcaab24a1152b56d06f311, + limb1: 0xdc2822db40c0ac2e93b6d486, + limb2: 0x183227397098d014, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0xe956148bcbc1acb30fdfcfd6, - limb1: 0x7e2b9ea46738674a6a456344, - limb2: 0xd3b9db1ccbcceb1, + limb0: 0xf233a0ed46513c33153f64aa, + limb1: 0xec7b7722022d86799eb53bd6, + limb2: 0x151827afe4b31482, limb3: 0x0 }, u384 { - limb0: 0x31a18e77c0ccf7fae43ff10, - limb1: 0xf9f0c8a371ec837162186e34, - limb2: 0x11a281f78d969318, + limb0: 0x1bf3418c11798ba047c33daa, + limb1: 0xa212db2b2492a95fc7bf3e29, + limb2: 0x5e4385e0dfcb915, limb3: 0x0 }, u384 { - limb0: 0x23d6e36bc77c25df27eef53f, - limb1: 0x17925dbf53ded8344fae671e, - limb2: 0x154132f56112174a, + limb0: 0x3fc7c920c0be9e64a8271bba, + limb1: 0x7d16506a98846d8481705f97, + limb2: 0x1f831d4417d892b3, limb3: 0x0 }, u384 { - limb0: 0xec9e976d5c37b4616e213f6e, - limb1: 0x97d8a281a1a4e3538880914c, - limb2: 0x9770f1a8783bc98, + limb0: 0x8946902c716ce019e268967b, + limb1: 0x9e0e05df812eeb5923788b48, + limb2: 0x2d8d94312c40150d, limb3: 0x0 }, u384 { - limb0: 0x6edbd627f865a9b1ce10e5e9, - limb1: 0x64e208061521698390472d10, - limb2: 0x2780f38e8fe486a9, + limb0: 0xf1d5f95a95fcfc8c4c259bd2, + limb1: 0xfbcc54a8b3122b2be7d9e80e, + limb2: 0x1da2e9d9c88d9ebc, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -3341,90 +3337,90 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x89540801a6c89fcece6d2f35, - limb1: 0x16df72c2978a74acb2b9c0e4, - limb2: 0x218a8e3038dc30dd, + limb0: 0x733f329de6951105e2cd3083, + limb1: 0x733190df0ddca8c6a7ac62b4, + limb2: 0x1878121d2721d75e, limb3: 0x0 }, u384 { - limb0: 0x4282c1cc863a8f4c9850bbfc, - limb1: 0x2c18d34973915b7baae6fb21, - limb2: 0xa68eae2c728534f, + limb0: 0xa1d0274de7f9fccdd064d2c8, + limb1: 0xed4702080b7f9992a75f955d, + limb2: 0xfa2712624f5499a, limb3: 0x0 }, u384 { - limb0: 0x94f520a7d9a554cd960c5f31, - limb1: 0x6dd6ded0181c15b8c7dc0a44, - limb2: 0x11ab628b8fbf0a2e, + limb0: 0x53e0418b374646676c1c957, + limb1: 0x136df4ce423f08ba1808c59d, + limb2: 0x27291bcf27195602, limb3: 0x0 }, u384 { - limb0: 0x17017de18c7b80e9e0da12cf, - limb1: 0xe760b8c5c6d601255d3d2b8, - limb2: 0x102bded5bd8d0c60, + limb0: 0x407f79b0bbe0ad72735077a4, + limb1: 0x9d07a4ca7b3c3eb10ce11634, + limb2: 0x1bc0862a20d8bf51, limb3: 0x0 }, u384 { - limb0: 0x17d5b4718ff3752a1f0a100e, - limb1: 0x534a099deb91d20c2714c08f, - limb2: 0x1564877ff104705, + limb0: 0x3e9ead538bd7e7bee41e353c, + limb1: 0xbd4a8661b2986ce857033d3a, + limb2: 0x174b6f4553452671, limb3: 0x0 }, u384 { - limb0: 0xcffe0dd3eda05b5683ad9e8c, - limb1: 0x469b6fd73cd1dbea29c84e59, - limb2: 0x18cba02aa34398e5, + limb0: 0xdd046779734488b57eccb2ba, + limb1: 0xb92d391d642052ab1826c965, + limb2: 0x2e08bec8cf27e96d, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xbc023da3634506192f9f6f82, - limb1: 0x7a82dbed35a935df3ed029ce, - limb2: 0x27b2d91566366c14, + limb0: 0x6e29183a96d32882674130b7, + limb1: 0xd221faf85073b0f449e48f3, + limb2: 0xee4289ccce79d5f, limb3: 0x0 }, u384 { - limb0: 0xa0dc80293805e268324effe9, - limb1: 0x35821433d44431f68ec7e00a, - limb2: 0x4833773c7921921, + limb0: 0x53d9c4a4346ca2e0d749b8fe, + limb1: 0xe63891816db7fc1f573dba7b, + limb2: 0x11aca91a29f62b40, limb3: 0x0 }, u384 { - limb0: 0x312dfb61a53e5869f4fe276, - limb1: 0x8e66d3877a1b303f5789cac9, - limb2: 0xf5f4a6d4204a5b4, + limb0: 0x56e590d5061b4f171ff855e7, + limb1: 0xbef2ab89480bf02feccfb434, + limb2: 0x2e250959665817f0, limb3: 0x0 }, u384 { - limb0: 0xaf31dad3e068c9d75a438e20, - limb1: 0x45b586294c27114503c7172b, - limb2: 0x29a0cb016348047b, + limb0: 0x54b1f1cae636383c33023046, + limb1: 0x9db4b79d01363f6c429a9dfc, + limb2: 0xc93f8eac5de732e, limb3: 0x0 }, u384 { - limb0: 0x7eca0644ecfcb467677cb63d, - limb1: 0xb7f65548ae4e0f40e3eb2042, - limb2: 0x275cbfbd7ae0e6c1, + limb0: 0x8903630e974ff52e53b713d9, + limb1: 0xdd27936ebc47d285e7cb8bc4, + limb2: 0x2e68a7788673f522, limb3: 0x0 }, u384 { - limb0: 0x23d6e36bc77c25df27eef542, - limb1: 0x17925dbf53ded8344fae671e, - limb2: 0x154132f56112174a, + limb0: 0x3fc7c920c0be9e64a8271bbd, + limb1: 0x7d16506a98846d8481705f97, + limb2: 0x1f831d4417d892b3, limb3: 0x0 }, u384 { - limb0: 0xec9e976d5c37b4616e213f6e, - limb1: 0x97d8a281a1a4e3538880914c, - limb2: 0x9770f1a8783bc98, + limb0: 0x8946902c716ce019e268967b, + limb1: 0x9e0e05df812eeb5923788b48, + limb2: 0x2d8d94312c40150d, limb3: 0x0 }, u384 { - limb0: 0x6edbd627f865a9b1ce10e5e9, - limb1: 0x64e208061521698390472d10, - limb2: 0x2780f38e8fe486a9, + limb0: 0xf1d5f95a95fcfc8c4c259bd2, + limb1: 0xfbcc54a8b3122b2be7d9e80e, + limb2: 0x1da2e9d9c88d9ebc, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -3434,9 +3430,9 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0xbbc723f4bf5032b5a72053c1, - limb1: 0x82079573671164039d0997bb, - limb2: 0x200b1129a43fa07a, + limb0: 0x8132ca9ce367f09f205b9f9f, + limb1: 0x9c1af3ce15cb8d1e4368347c, + limb2: 0xc53cda10153e8dd, limb3: 0x0 }, u384 { @@ -3449,15 +3445,15 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0x221b9d71a25a2d184455ebf, - limb1: 0x5a44e160af281140cb74af70, - limb2: 0x1503a6c1bb1fedbf, + limb0: 0x58206d0b1066b13277aca6e2, + limb1: 0x2379340de73e7fbbcd9fee74, + limb2: 0x5dfe739955277d9, limb3: 0x0 }, u384 { - limb0: 0x30e520fe5b4b590cea4cfff5, - limb1: 0x2be395d5dd27dc3dcc8d5e53, - limb2: 0x9644daf71d6b403, + limb0: 0xc0005264725de258067421c1, + limb1: 0x1f9eedf107039d10e79d1270, + limb2: 0x15a955e3b6869f15, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -3465,49 +3461,49 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x68c5cfccb6a5dbd20149f0d1, - limb1: 0xfec0c6f8a3b60b157e102150, - limb2: 0x1662e769787d76fd, + limb0: 0x560964272a693856a5d4b6f6, + limb1: 0x1742a3229eb5635076baa085, + limb2: 0xb46e5dc6917cd85, limb3: 0x0 }, u384 { - limb0: 0x8867297ebd58dfdcd18fea3c, - limb1: 0xac4cf8ebf733ad5f9543468e, - limb2: 0x1ebdf98a811bd572, + limb0: 0x2468205ebc54425afd480a3, + limb1: 0x5ba774e1ca1e6fd7444d4a25, + limb2: 0x1b6501f841270c06, limb3: 0x0 }, u384 { - limb0: 0x7aead0e7b4f062154c8f74bd, - limb1: 0x7906606599ebb98c1c3d648a, - limb2: 0xff28367dfa64824, + limb0: 0xd1e559d0ff1c5ec6d0a7161a, + limb1: 0xb4e1f45e08d037619e83c87c, + limb2: 0x1faae7caf5d40b64, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x9df362f812505c5db4531ef6, - limb1: 0x567e5e6b8bf6db64cadca3be, - limb2: 0xea6a5d2502e2914, + limb0: 0x8614721313413976705f4a6, + limb1: 0x6a6b9c29b5bb7f3368dfcb5d, + limb2: 0x119fb5acbff7678b, limb3: 0x0 }, u384 { - limb0: 0x92af62fb11e20b26bee6ffdf, - limb1: 0x83aac181977794b965a81af9, - limb2: 0x1c2ce90e55841c09, + limb0: 0xd78f2ca01af91af13adf67fc, + limb1: 0xa68c841c93897ed51f55ccc0, + limb2: 0x1097b33842623d15, limb3: 0x0 }, u384 { limb0: 0x3, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x221b9d71a25a2d184455ebf, - limb1: 0x5a44e160af281140cb74af70, - limb2: 0x1503a6c1bb1fedbf, + limb0: 0x58206d0b1066b13277aca6e2, + limb1: 0x2379340de73e7fbbcd9fee74, + limb2: 0x5dfe739955277d9, limb3: 0x0 }, u384 { - limb0: 0x30e520fe5b4b590cea4cfff5, - limb1: 0x2be395d5dd27dc3dcc8d5e53, - limb2: 0x9644daf71d6b403, + limb0: 0xc0005264725de258067421c1, + limb1: 0x1f9eedf107039d10e79d1270, + limb2: 0x15a955e3b6869f15, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -3517,12 +3513,19 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0x9a49da12d9467df5593a5cf1, - limb1: 0x311a81850ce6e7cb8ac36896, - limb2: 0x13291e26321d140e, + limb0: 0x129d0fa449fab4ea71be8728, + limb1: 0xc455bbd91e92c60316cd55b3, + limb2: 0x113aef62fa92a6f9, limb3: 0x0 }, - g_rhs_sqrt: array![], + g_rhs_sqrt: array![ + u384 { + limb0: 0xc61b9b0e7817062bf3f0932d, + limb1: 0x8dff38671bcdf45087dced6f, + limb2: 0x11723864eee31baa, + limb3: 0x0 + } + ], }; let res = msm_g1( points, scalars, scalars_digits_decompositions, msm_hint, derive_point_from_x_hint, 0 @@ -3530,15 +3533,15 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0x9112e95627d0949ed60fc286, - limb1: 0xe1608165724cc31f65427057, - limb2: 0x2d5f4ba43944bf8a, + limb0: 0xda530556c75d2e27b35e716b, + limb1: 0xe263c10943a7c230d41bb940, + limb2: 0x1d051a29c6a2eafe, limb3: 0x0 }, y: u384 { - limb0: 0x1cb314ec28220c0cf60fff59, - limb1: 0xe1e8d614fe841575019be8b, - limb2: 0x83c330b4f4a9f3b, + limb0: 0x679ed4b58350eefe8c88ae2a, + limb1: 0x46b4e4ba8a6a9374a0120664, + limb2: 0x121c2c711b7c7f40, limb3: 0x0 } } @@ -3551,71 +3554,71 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0xcfbe5d41c99a216df89ce656, - limb1: 0x88dd903ed65947443a07201c, - limb2: 0x296feaf94a70c670, + limb0: 0x5c724369afbc772d02aed58e, + limb1: 0x2cd3bc838c66439a3d6160b, + limb2: 0x72f26b55fb56be1, limb3: 0x0 }, y: u384 { - limb0: 0x23c2923c6e37582ea47f3984, - limb1: 0x97da62987153b67f78532ec9, - limb2: 0x2ad57e1e2dfbc396, + limb0: 0x772ca79c580e121ca148fe75, + limb1: 0xce2f55e418ca01b3d6d1014b, + limb2: 0x2884b1dc4e84e30f, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x936ec5154ef749684fe24814, - limb1: 0x408af2d5a5c029ea6acfd7b9, - limb2: 0x159b1ad2d66a9b93, + limb0: 0x536c985db33c69f7c242e07a, + limb1: 0xfc531bccffafcf1e59d91fb9, + limb2: 0x2585e4f8a31664cb, limb3: 0x0 }, y: u384 { - limb0: 0x7923e1c483dd28fa10a6d244, - limb1: 0xb61e016911e685f5fac8b34d, - limb2: 0xa896c54c4c097e7, + limb0: 0x57fa42444057cf0c1d62ae3c, + limb1: 0x4f48d341183118d68ea41313, + limb2: 0x1d2d2799db056ed1, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x5c033dcaa168bb3183149e92, - limb1: 0xd23300c8307b739bc8453645, - limb2: 0x847d6bea8cea839, + limb0: 0x236ca9312dad3661a37f2d6f, + limb1: 0x98424c01caad7592315715d1, + limb2: 0x795b9fd941b23c4, limb3: 0x0 }, y: u384 { - limb0: 0x5bcb40f3a926de3bea4d3510, - limb1: 0xe28d7717d05c87c564cf3cbc, - limb2: 0x13a159dbd1c1328, + limb0: 0xc7ab5834609a54b8993ffd79, + limb1: 0xe81cd490528b814ca632aace, + limb2: 0x2d9ff53d3009e6f7, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x6265206148c148ee5e2bde25, - limb1: 0xec3eb4b42f9fd2b101b5dd31, - limb2: 0x10cc0c0d11b2defe, + limb0: 0x163df40cafbf585ca5b2ab44, + limb1: 0xb4752e4666c88dbbe23783a0, + limb2: 0x1a801462ac9cb657, limb3: 0x0 }, y: u384 { - limb0: 0xcf2d6be103e6922bdc0e014d, - limb1: 0x99b644917953b6d8a13339be, - limb2: 0x12855297e9c4cbed, + limb0: 0xac9b557d7ca8625d957263c6, + limb1: 0xdc6f75fa8339a78b998ae54a, + limb2: 0x28683293b6494d9f, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xda4f939f82d5de69b0fbd641, - limb1: 0x1cb72600bc3eabb7f8f3f6cf, - limb2: 0x202dbfd87b97bd93, + limb0: 0x5c4f5dca0c973b7f70bfff9, + limb1: 0x188c2afab11eef5d48ecda3c, + limb2: 0xc2fed35d36c49f1, limb3: 0x0 }, y: u384 { - limb0: 0xf897e1500772f0062bccfe9c, - limb1: 0x1eab469163efd95c2ab9d810, - limb2: 0x2e72422d124f7a68, + limb0: 0x9d7244ea10697ca42e2e066b, + limb1: 0xfe18a519c7d68770dc48dbf9, + limb2: 0x149bb528db998529, limb3: 0x0 } }, @@ -3623,19 +3626,19 @@ mod msm_tests { .span(); let scalars = array![ u256 { - low: 0xab0141db7d3e8fff5fab498e3b797f21, high: 0x25a17e9257e80c867382749ff2813a12 + low: 0xeb2083e6ce164dba0ff18e0242af9fc3, high: 0x5f82a8f03983ca8ea7e9d498c778ea6 }, u256 { - low: 0x5be90fa349a921cc295b930b191c8ab8, high: 0x2e67be2a9b4ef85a9b0af0c14a976b2a + low: 0xb5d32b1666194cb1d71037d1b83e90ec, high: 0x28045af9ab0c1681c8f8e3d0d3290a4c }, u256 { - low: 0xe00509a342891983c501318f321184d8, high: 0x2d3d326e8038ea8ba336e54a5809da35 + low: 0xd3fbf47a7e5b1e7f9ca5499d004ae545, high: 0x2ebce25e3e70f16a55485822de1b372a }, u256 { - low: 0xf4ee3102d39a23abd3f766504a0e9ef7, high: 0x81a7a0da29866100f86b6985d3e9f26 + low: 0x101fbcccded733e8b421eaeb534097ca, high: 0xe30658b9148624feac1c14f30e9c5cc }, u256 { - low: 0x8873b0fcd1969e1111a8d994d5f626b4, high: 0x2d7532bf31f6a5d222dc132a420ac8dd + low: 0x247a8333f7b0b7d2cda8056c3d15eef7, high: 0x5d67b7072ae22448b0163c1cd9d2b7d }, ] .span(); @@ -3644,170 +3647,168 @@ mod msm_tests { ( array![ -0x1, - 0x0, - -0x1, - 0x0, - 0x0, + 0x1, -0x1, 0x1, -0x1, 0x0, 0x0, - 0x0, - 0x1, - 0x1, -0x1, - 0x1, - 0x1, - 0x1, - 0x1, - 0x1, - 0x0, -0x1, - 0x0, - 0x0, - 0x1, -0x1, 0x1, 0x0, 0x0, - 0x0, + -0x1, + -0x1, + 0x1, 0x1, 0x1, - 0x0, -0x1, 0x1, -0x1, 0x1, 0x1, + -0x1, 0x0, 0x1, 0x0, 0x0, -0x1, + 0x0, + -0x1, + -0x1, + 0x1, + 0x0, 0x1, 0x1, + -0x1, 0x1, 0x0, -0x1, -0x1, + -0x1, + -0x1, + -0x1, + -0x1, + 0x0, 0x0, 0x0, + 0x0, + 0x0, + 0x1, -0x1, 0x1, 0x0, -0x1, 0x0, 0x0, - 0x0, 0x1, 0x0, 0x0, 0x1, 0x1, -0x1, + -0x1, + 0x1, + 0x1, 0x0, + -0x1, 0x0, -0x1, 0x0, + 0x0, 0x1, -0x1, -0x1, + -0x1, 0x0, - 0x1, - 0x1, 0x0, - -0x1, 0x1, - -0x1, 0x0, -0x1, - 0x1, - -0x1, -0x1, ] .span(), array![ - 0x0, - -0x1, - 0x1, - 0x0, - -0x1, - 0x0, 0x1, -0x1, 0x1, - 0x0, 0x1, -0x1, - 0x1, - 0x0, + -0x1, 0x0, 0x0, - -0x1, - -0x1, 0x0, 0x1, + 0x0, -0x1, 0x0, 0x1, 0x0, - 0x0, 0x1, - 0x0, - 0x0, -0x1, + 0x1, -0x1, - 0x0, 0x1, -0x1, 0x0, -0x1, - 0x0, 0x1, 0x0, + -0x1, 0x1, 0x1, -0x1, + 0x1, 0x0, -0x1, 0x0, 0x1, - 0x1, 0x0, - -0x1, 0x1, 0x0, - -0x1, - -0x1, 0x0, + 0x0, + 0x1, -0x1, - -0x1, - -0x1, - -0x1, + 0x1, + 0x1, + 0x1, + 0x1, -0x1, 0x1, + 0x1, 0x0, 0x0, - 0x0, + -0x1, + 0x1, + 0x1, + -0x1, + -0x1, 0x1, 0x0, 0x1, 0x1, -0x1, 0x0, - 0x1, + 0x0, + 0x0, 0x1, 0x0, + 0x0, -0x1, 0x0, - 0x1, - 0x1, -0x1, 0x0, + -0x1, + -0x1, + 0x1, 0x0, 0x0, -0x1, + 0x1, + -0x1, ] .span() ), @@ -3816,120 +3817,115 @@ mod msm_tests { -0x1, -0x1, 0x0, - 0x1, - -0x1, -0x1, 0x1, + 0x0, + 0x0, + 0x1, + 0x1, 0x1, 0x1, 0x0, + 0x1, 0x0, - -0x1, 0x1, 0x0, 0x1, -0x1, + 0x1, + -0x1, 0x0, -0x1, 0x1, 0x1, + 0x1, + 0x0, + 0x1, -0x1, -0x1, 0x0, - 0x0, + 0x1, 0x1, 0x1, -0x1, + -0x1, 0x0, 0x0, - 0x0, - 0x0, - 0x1, - 0x0, 0x1, - 0x0, - 0x0, - 0x0, 0x1, -0x1, - 0x0, - 0x0, -0x1, - 0x1, -0x1, - 0x0, 0x1, 0x0, -0x1, - 0x1, -0x1, 0x1, - -0x1, - 0x0, 0x0, -0x1, 0x1, 0x1, + -0x1, 0x1, + 0x0, + -0x1, + 0x0, 0x1, -0x1, 0x0, -0x1, - 0x1, 0x0, -0x1, 0x0, 0x1, - 0x0, - 0x0, -0x1, -0x1, 0x0, -0x1, 0x1, + 0x1, + 0x1, + 0x0, 0x0, 0x0, 0x1, -0x1, + 0x0, 0x1, + 0x0, 0x1, - 0x1, + -0x1, + -0x1, ] .span(), array![ - 0x1, - -0x1, 0x0, 0x0, - -0x1, 0x0, - 0x1, - 0x1, - -0x1, 0x0, - 0x1, 0x0, - -0x1, + 0x0, 0x0, 0x1, + 0x0, 0x1, 0x0, + 0x0, 0x1, -0x1, - 0x1, - 0x1, -0x1, 0x1, + -0x1, 0x1, 0x1, 0x0, -0x1, 0x0, - 0x1, -0x1, - 0x1, + -0x1, -0x1, 0x1, + 0x0, 0x1, -0x1, -0x1, @@ -3938,245 +3934,247 @@ mod msm_tests { 0x0, 0x0, 0x1, - -0x1, 0x1, 0x0, - 0x0, 0x1, 0x1, -0x1, -0x1, - -0x1, + 0x0, + 0x0, + 0x0, 0x1, 0x0, + 0x0, + 0x0, 0x1, + 0x0, + 0x0, -0x1, -0x1, - 0x1, - 0x0, -0x1, 0x0, + 0x0, 0x1, 0x0, - -0x1, + 0x0, + 0x0, -0x1, 0x1, 0x1, 0x1, + 0x0, 0x1, -0x1, + 0x0, + -0x1, + 0x0, 0x1, 0x0, 0x0, + -0x1, + 0x1, 0x0, -0x1, -0x1, - 0x1, - 0x1, - 0x1, - 0x1, - 0x1, + 0x0, -0x1, ] .span() ), ( array![ - -0x1, 0x1, -0x1, - 0x1, - 0x0, -0x1, -0x1, -0x1, + 0x0, + 0x0, + -0x1, + 0x0, 0x1, 0x1, - -0x1, 0x1, -0x1, - 0x0, - 0x0, + 0x1, 0x1, 0x1, 0x0, + 0x1, -0x1, + 0x1, -0x1, -0x1, 0x0, - 0x1, -0x1, - 0x0, 0x1, 0x0, - 0x0, -0x1, - 0x0, 0x1, 0x1, - -0x1, + 0x1, -0x1, 0x0, + -0x1, + -0x1, 0x1, 0x0, 0x1, + -0x1, + -0x1, 0x0, - 0x0, - 0x1, + -0x1, 0x0, 0x0, - -0x1, - 0x1, 0x0, -0x1, 0x1, -0x1, 0x1, - -0x1, - 0x1, + 0x0, 0x1, 0x0, 0x0, 0x1, - -0x1, + 0x0, + 0x1, + 0x0, 0x0, 0x0, 0x1, 0x1, + 0x0, -0x1, -0x1, + 0x0, + 0x0, + 0x0, 0x1, - 0x1, - -0x1, -0x1, - -0x1, - 0x1, 0x0, 0x0, + -0x1, + 0x1, + 0x1, 0x1, - 0x0, 0x1, - -0x1, -0x1, 0x1, 0x0, - 0x0, + -0x1, 0x0, -0x1, -0x1, ] .span(), array![ - 0x1, - -0x1, - -0x1, - 0x0, - -0x1, -0x1, 0x1, - 0x0, 0x1, 0x1, 0x0, 0x0, - 0x0, - 0x1, -0x1, -0x1, 0x0, + 0x1, + 0x0, -0x1, 0x1, + 0x0, + 0x0, -0x1, 0x1, + 0x0, 0x1, -0x1, 0x0, -0x1, - 0x1, + -0x1, + -0x1, + -0x1, 0x1, 0x0, + -0x1, 0x1, 0x0, - 0x1, -0x1, - 0x0, 0x1, 0x0, - 0x1, - 0x1, - 0x1, -0x1, - -0x1, - 0x1, + 0x0, 0x0, 0x1, + 0x0, -0x1, - 0x1, + 0x0, -0x1, 0x0, + 0x0, 0x1, + 0x0, -0x1, -0x1, 0x1, - 0x1, -0x1, - 0x0, - 0x1, 0x1, + -0x1, 0x0, - 0x1, - 0x1, 0x0, - -0x1, 0x0, 0x0, 0x0, -0x1, + -0x1, 0x1, - 0x0, - 0x0, -0x1, + 0x1, 0x0, + 0x1, -0x1, + 0x0, + 0x0, -0x1, - -0x1, + 0x0, + 0x1, 0x1, 0x0, + 0x1, + 0x1, + -0x1, 0x0, 0x0, 0x1, 0x1, + 0x1, -0x1, ] .span() ), ( array![ - -0x1, 0x1, 0x0, - 0x1, - 0x1, - 0x1, -0x1, - 0x0, - 0x1, - 0x1, - 0x1, + -0x1, -0x1, -0x1, 0x1, -0x1, - 0x0, - 0x0, + -0x1, -0x1, -0x1, 0x1, 0x0, + -0x1, 0x0, 0x1, + -0x1, + 0x0, 0x1, 0x0, + 0x0, 0x1, -0x1, 0x1, @@ -4184,137 +4182,138 @@ mod msm_tests { 0x1, -0x1, -0x1, - 0x0, -0x1, - 0x1, - 0x0, - 0x0, -0x1, + 0x0, 0x1, -0x1, - 0x1, - 0x1, - 0x0, - 0x0, 0x0, + -0x1, + -0x1, + -0x1, + -0x1, + -0x1, 0x1, + -0x1, 0x0, 0x1, 0x1, -0x1, 0x0, - 0x1, 0x0, + -0x1, 0x1, -0x1, 0x1, + -0x1, + -0x1, 0x1, - 0x0, - 0x0, + -0x1, + -0x1, 0x0, -0x1, + -0x1, 0x0, + -0x1, + 0x1, 0x0, + 0x1, 0x0, 0x1, -0x1, - 0x0, 0x1, -0x1, -0x1, - 0x1, + 0x0, -0x1, 0x0, 0x1, 0x1, - -0x1, - 0x1, 0x1, + 0x0, -0x1, - -0x1, - -0x1, - -0x1, + 0x1, ] .span(), array![ - -0x1, + 0x1, + 0x1, + 0x0, -0x1, -0x1, 0x0, - -0x1, + 0x1, + 0x1, + 0x1, + 0x1, -0x1, 0x0, + 0x1, 0x0, 0x0, 0x1, - -0x1, - -0x1, 0x0, -0x1, - -0x1, - -0x1, 0x1, 0x0, - -0x1, - 0x1, 0x1, - 0x0, - -0x1, 0x1, -0x1, 0x0, -0x1, 0x0, + 0x0, 0x1, - 0x1, - 0x1, - -0x1, 0x0, -0x1, + 0x1, -0x1, + 0x1, 0x0, -0x1, - 0x0, + -0x1, + 0x1, 0x1, 0x0, + -0x1, 0x1, 0x1, 0x0, - -0x1, + 0x0, 0x1, 0x0, 0x1, - -0x1, + 0x1, 0x1, -0x1, -0x1, 0x0, -0x1, - 0x0, - 0x0, - 0x0, - 0x0, - -0x1, - -0x1, -0x1, 0x1, - -0x1, - 0x0, + 0x1, -0x1, 0x1, - 0x0, 0x1, + 0x0, + 0x0, + -0x1, 0x1, + -0x1, + -0x1, + -0x1, 0x1, 0x0, - 0x1, 0x0, 0x1, - 0x0, -0x1, + -0x1, + 0x0, 0x0, 0x0, + -0x1, 0x1, + 0x0, 0x1, ] .span() @@ -4322,43 +4321,49 @@ mod msm_tests { ( array![ 0x1, + 0x1, + -0x1, -0x1, 0x0, - 0x1, - 0x1, 0x0, 0x1, 0x0, -0x1, + -0x1, 0x1, - 0x0, - 0x0, 0x1, 0x0, - 0x0, 0x1, 0x1, -0x1, 0x1, 0x0, - 0x1, - 0x0, -0x1, -0x1, - 0x1, + -0x1, 0x1, -0x1, + 0x1, -0x1, - 0x0, 0x1, 0x0, - -0x1, + 0x0, -0x1, 0x0, + 0x0, + 0x0, + 0x1, -0x1, + 0x0, + 0x0, -0x1, 0x1, + 0x0, + 0x1, + 0x1, + 0x1, -0x1, + 0x0, 0x1, 0x1, -0x1, @@ -4367,101 +4372,91 @@ mod msm_tests { -0x1, -0x1, -0x1, - 0x1, + 0x0, 0x0, -0x1, 0x1, - 0x1, - 0x0, - 0x0, -0x1, + 0x1, -0x1, + 0x0, -0x1, + 0x0, + 0x1, 0x1, 0x1, - 0x0, -0x1, -0x1, 0x0, - 0x1, - 0x1, + -0x1, 0x0, 0x0, - 0x1, -0x1, 0x1, - 0x1, - 0x0, 0x0, -0x1, 0x1, - 0x1, - -0x1, + 0x0, 0x0, 0x0, -0x1, - -0x1, - 0x1, ] .span(), array![ - 0x1, 0x0, + -0x1, + -0x1, + 0x1, 0x0, + -0x1, 0x1, + 0x0, 0x1, 0x1, + -0x1, 0x0, 0x0, - 0x1, -0x1, - 0x0, 0x1, -0x1, -0x1, - 0x1, 0x0, - -0x1, + 0x1, -0x1, 0x0, 0x0, -0x1, - -0x1, - 0x1, 0x0, - 0x1, - 0x1, - 0x1, -0x1, 0x0, -0x1, 0x0, - -0x1, - -0x1, - -0x1, - -0x1, - -0x1, - 0x1, 0x1, + 0x0, + 0x0, 0x1, + 0x0, + -0x1, -0x1, - 0x1, 0x1, 0x0, 0x0, 0x1, -0x1, - -0x1, + 0x0, + 0x0, 0x1, - -0x1, + 0x0, + 0x0, 0x1, + 0x0, 0x1, - -0x1, 0x0, -0x1, 0x1, - -0x1, - -0x1, + 0x0, + 0x0, + 0x0, -0x1, 0x1, 0x1, @@ -4469,20 +4464,21 @@ mod msm_tests { 0x0, 0x1, 0x0, + -0x1, 0x1, 0x1, 0x1, -0x1, 0x0, 0x0, - 0x1, - 0x0, - 0x0, - 0x0, - 0x1, 0x0, 0x0, 0x1, + -0x1, + -0x1, + -0x1, + -0x1, + -0x1, 0x1, -0x1, ] @@ -4494,121 +4490,121 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0x43fdd079273b1a83058ca93f, - limb1: 0x7adf04c0358bea2f2ec2c134, - limb2: 0xb5a15621d9eb03d, + limb0: 0xc7db81f8e4d034eb2e1a6e78, + limb1: 0xfef296a0f3295cbfc258cabe, + limb2: 0x272d45a91fe3cd72, limb3: 0x0 }, y: u384 { - limb0: 0xeee346dd66592bdc3d4a73fd, - limb1: 0x327f1c504eb4f692a779f7a4, - limb2: 0x19102b8e3dc5de83, + limb0: 0x6c9724c35761c852b5ff6f6f, + limb1: 0xfc20ea6241ec8ea856616521, + limb2: 0x2a206e689e416ab7, limb3: 0x0 } }, Q_high: G1Point { x: u384 { - limb0: 0xaadde861be33ecca5221d86, - limb1: 0xde37a37be68821ebb7b698ac, - limb2: 0x2fce7aa35fe8456a, + limb0: 0x68461fd1ee04957fb34f1a0d, + limb1: 0xa5651d519e2c4cd50ca5a122, + limb2: 0x79cbe1ee86ec4f1, limb3: 0x0 }, y: u384 { - limb0: 0x7c3ee4faae36f0dd12dbe949, - limb1: 0x1e379d1eccc4d2185afc5916, - limb2: 0x1c96aa9970569d9, + limb0: 0xefb4a33636249e64719edff2, + limb1: 0x164f8c1a1e521f0d2ed55d40, + limb2: 0x2f00480541f4a815, limb3: 0x0 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0x5733dd8f66e0339c0aeea91b, - limb1: 0xc051b0de89b0d90329dcd9aa, - limb2: 0x264ddb279d9f318d, + limb0: 0x8af4fae06607d3e79aa459f1, + limb1: 0x543d4fd8ed3a4b54c6307d2f, + limb2: 0x1778793dd82d7f00, limb3: 0x0 }, y: u384 { - limb0: 0xfe03b9f407c08409b61b0e2d, - limb1: 0x60a4265635706b17d24355eb, - limb2: 0x252106fbb318b52, + limb0: 0x34a67bd15f59d8e537aa6eaa, + limb1: 0x52914c79964247d8be553829, + limb2: 0x6511ceeee1a4e25, limb3: 0x0 } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0x52d5d84589bfaf0b1e5164c7, - limb1: 0x1d430034ff28e8a0bfbe5082, - limb2: 0xa1f32ef3bc186b2, + limb0: 0xdfdc7b8cecf95438fca66d87, + limb1: 0x9aaca7a943fdf1dc779297d4, + limb2: 0x10016955eabd772c, limb3: 0x0 }, u384 { - limb0: 0x90914905ca4232ac730e9e78, - limb1: 0x189f43c242ed63e56d93f6cd, - limb2: 0x7342f71abff359d, + limb0: 0x3c4ec9f6cc874150e3193653, + limb1: 0x448ac61a3a5019b6d1ce634d, + limb2: 0x602cbbe38fa09d7, limb3: 0x0 }, u384 { - limb0: 0x5f9ccb49c2fab24df80ad1ba, - limb1: 0x6680cf3d4f9021e8a575616f, - limb2: 0x13222bc3eee2a27a, + limb0: 0x94001606cec14d7281476609, + limb1: 0xdb238ed8cba806cda7ee6d2d, + limb2: 0x140f7ca8ef6b2c5d, limb3: 0x0 }, u384 { - limb0: 0x745ddb3d27157d2c693d85a4, - limb1: 0x343c6045bd0da4113c4e8510, - limb2: 0x27358b9e5041224f, + limb0: 0x2934316e5dda18f22ba2281c, + limb1: 0x64b817c3727f69117a4f39e2, + limb2: 0x61215e22847ffa3, limb3: 0x0 }, u384 { - limb0: 0x2ef86a92f16e57ad8c160a09, - limb1: 0x7102e7108ce4173753d23c0d, - limb2: 0x1f1099394366ea42, + limb0: 0x379b7337f0dd0e6a4520798d, + limb1: 0x5dcb8ff7266a9baad778db2a, + limb2: 0x1bec52232bb10896, limb3: 0x0 }, u384 { - limb0: 0x57cca7bb9c0468c9e73ffb2b, - limb1: 0xdc2822db40c0ac2db9ddbf10, - limb2: 0x183227397098d014, + limb0: 0x38f2fb038b4b72d1a3f5dc93, + limb1: 0xb85045b68181585c331f56f8, + limb2: 0x30644e72e131a029, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0x9eec9df92b6b0f8e7fe59766, - limb1: 0xb88529473f41407bc795cad5, - limb2: 0x13b8a7f19c1ab9dd, + limb0: 0x334f969f6184762c9c153b58, + limb1: 0x7a1bbe0c3424d35d772afb65, + limb2: 0x16dc5ac9d18ec1ed, limb3: 0x0 }, u384 { - limb0: 0xb71771fe32991fb7f098d649, - limb1: 0x1fa986a36597f47ee812ad0, - limb2: 0x41c51129181bf28, + limb0: 0x79212f275d4e2cdd35cd20a9, + limb1: 0x7f271590cac3d8a5f9156117, + limb2: 0x2d1110e7a87c4027, limb3: 0x0 }, u384 { - limb0: 0xb5a092520dc38dde94823097, - limb1: 0xd1a4c8f13a7ccabea1e59586, - limb2: 0x70178fae1ecc7b4, + limb0: 0x4ea1f840a4e3465a3b919301, + limb1: 0xc2f50f9f414671e602623324, + limb2: 0x12b0a53d733480cc, limb3: 0x0 }, u384 { - limb0: 0xfc027b9d50f7db895c3f8d00, - limb1: 0x5182aefc2eab956d3046fd26, - limb2: 0x43ef49b3080951f, + limb0: 0x9ceded0dd2886562c3c0b220, + limb1: 0x9de32c9a6dcfafdb02193810, + limb2: 0x86ff6f9670de866, limb3: 0x0 }, u384 { - limb0: 0x99501b16846fb3c09f44c7bf, - limb1: 0xc7fd5f4f2c588711d4c382bc, - limb2: 0x2c8e9e8430478880, + limb0: 0x48fb66445285cf1dbbcb99fe, + limb1: 0x13e6c15f3528619c8417da4, + limb2: 0xdf5a3a531a23345, limb3: 0x0 }, u384 { - limb0: 0xf9727b0c07953c61a92ecd34, - limb1: 0x9806dd1b684bbb62ffb7c62, - limb2: 0xd862d862f018970, + limb0: 0x822b6eccee628bbe562cfaa9, + limb1: 0xc59a3daa764f8655aa00cb83, + limb2: 0xf04de6b6cc11e4f, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -4616,102 +4612,102 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x6261bc9f507739b69c7ba4ec, - limb1: 0xf5681c00f86af555e1078817, - limb2: 0x251adc0e32b117d8, + limb0: 0x25dfd1839f0fa88a8200370b, + limb1: 0x2d01ecd8144450642a250d80, + limb2: 0xd0794668fc8bae5, limb3: 0x0 }, u384 { - limb0: 0x64b2669fe340d53669b1e997, - limb1: 0x82f05b28e83efc1046877302, - limb2: 0x2c51ec5fee5370b1, + limb0: 0x678f822b2d6dfefe37017a2d, + limb1: 0x6cb9e0ae270e4123ee19232b, + limb2: 0x1024afadc0fefdcd, limb3: 0x0 }, u384 { - limb0: 0xd9bdccc0fe025245e0084bbc, - limb1: 0x221037583182a1e8096fb03a, - limb2: 0x2d0fdbe736decf6e, + limb0: 0x7c3dc6b0c43c99227b93f4c4, + limb1: 0x68d1be4c46b3885d4482dd7, + limb2: 0x25a64226c429a0d8, limb3: 0x0 }, u384 { - limb0: 0xb51e9f95e26f436213b7ceb4, - limb1: 0x5271052af841186013c442b1, - limb2: 0x1d7d559a3299c2ad, + limb0: 0x58a594de0ce234a0e67c0d38, + limb1: 0x682de47c99f24f3b99799208, + limb2: 0x16fb87c8691f90d6, limb3: 0x0 }, u384 { - limb0: 0xee7420dba729ab107afe7c79, - limb1: 0x73959f4856063a4b1d7e1511, - limb2: 0xab2cb1872fde0f8, + limb0: 0xe6aad5bbc417c61a6b00ae43, + limb1: 0xba08480d45088ef6425c64b7, + limb2: 0x4963f1686b66b52, limb3: 0x0 }, u384 { - limb0: 0x8740df86fc3cee0c4a0bfdc7, - limb1: 0x4662121ed814c632c59ff289, - limb2: 0xb850a4a62c3c500, + limb0: 0xef6698964aa4d3f7f411ac9b, + limb1: 0xc04b9f971c928ba7569f1439, + limb2: 0x3054005144969d52, limb3: 0x0 }, u384 { - limb0: 0x29246d8bbeea4700ad83842d, - limb1: 0x9eed1d65da7e118b1ec156ed, - limb2: 0xa813d3027a295a4, + limb0: 0x5654d5bf211d2a718598b7ee, + limb1: 0xb896ebcff82b26e72e6bb107, + limb2: 0x299c75c770db4a33, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x74540f5e4620a294a733c8eb, - limb1: 0x713f361f3c426915bf3ff5ef, - limb2: 0xac5a961f31e8d6f, + limb0: 0x317cf950e86cd66efbc2b4c1, + limb1: 0xb602f46e1aed21bacdff879e, + limb2: 0x1430c1ea937aa59e, limb3: 0x0 }, u384 { - limb0: 0x254655fa97cb5f27d1ca82db, - limb1: 0x5efc93ea30c7dd7cb838072, - limb2: 0xc54f337b4853d78, + limb0: 0x9a7ff85b9fa96e69f06d676d, + limb1: 0xcd4b5455d48d936bc3d4e23, + limb2: 0x266a95d137118023, limb3: 0x0 }, u384 { - limb0: 0x20e1b6f6294aa99bbd8691c5, - limb1: 0x74ee5ad3af76603be5b0c094, - limb2: 0x15046af0a5c6571e, + limb0: 0x83741e34b28946f7da37bbbc, + limb1: 0x908ee9274251fd546fa52edb, + limb2: 0x7ada145786be23c, limb3: 0x0 }, u384 { - limb0: 0x92f410d11e52a22a94a43e66, - limb1: 0xad0d363bcb4400c3586ac24a, - limb2: 0x207585c32d9c793b, + limb0: 0xa195dc8d91da654e75751b8, + limb1: 0x53c543db7d93e2ee7d76a397, + limb2: 0x302c3fb606b87b21, limb3: 0x0 }, u384 { - limb0: 0xb2242e2747a722cc1d6d32f8, - limb1: 0xe9522aeab86063c23dc8dde3, - limb2: 0x28ff8fb95ff51856, + limb0: 0xeba1976718bf0e1f90b2f15c, + limb1: 0xca92141c233a1295ba586f72, + limb2: 0x268dad645c3139cc, limb3: 0x0 }, u384 { - limb0: 0xa1f8037624834303900e9833, - limb1: 0xee2612665e0afde131d80aaf, - limb2: 0x2f94018d6ef16404, + limb0: 0x6cb27a1a33ea5d7e659b85b5, + limb1: 0x5b7382e822b3ac8968e32b1d, + limb2: 0xf5af20cd8463b92, limb3: 0x0 }, u384 { - limb0: 0xfc027b9d50f7db895c3f8d03, - limb1: 0x5182aefc2eab956d3046fd26, - limb2: 0x43ef49b3080951f, + limb0: 0x9ceded0dd2886562c3c0b223, + limb1: 0x9de32c9a6dcfafdb02193810, + limb2: 0x86ff6f9670de866, limb3: 0x0 }, u384 { - limb0: 0x99501b16846fb3c09f44c7bf, - limb1: 0xc7fd5f4f2c588711d4c382bc, - limb2: 0x2c8e9e8430478880, + limb0: 0x48fb66445285cf1dbbcb99fe, + limb1: 0x13e6c15f3528619c8417da4, + limb2: 0xdf5a3a531a23345, limb3: 0x0 }, u384 { - limb0: 0xf9727b0c07953c61a92ecd34, - limb1: 0x9806dd1b684bbb62ffb7c62, - limb2: 0xd862d862f018970, + limb0: 0x822b6eccee628bbe562cfaa9, + limb1: 0xc59a3daa764f8655aa00cb83, + limb2: 0xf04de6b6cc11e4f, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -4721,78 +4717,78 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0xeb56bbbc9b071367d59b7404, - limb1: 0xea5b1ae9ec7f9a8af13fe194, - limb2: 0x18bc63e5b80a14de, + limb0: 0xba613af361f53ff8e67de4dc, + limb1: 0x9c700d96b95de1b17f7a4958, + limb2: 0x2fb8e5d26fb44c6f, limb3: 0x0 }, u384 { - limb0: 0x946cfbcd403faed7cdbb043b, - limb1: 0x734b732ae1ced6121a9fe6c9, - limb2: 0x1924a459d4a3eff2, + limb0: 0x7086ca572dcde00fdf3fb698, + limb1: 0xe854b31193a47412d5cb133b, + limb2: 0x1612107a67004af4, limb3: 0x0 }, u384 { - limb0: 0x599b9be73beec7bd24fd1b50, - limb1: 0xc6d8e87a5eac32c0403ad6fa, - limb2: 0x26b5a8f323cce76d, + limb0: 0x9471910538320a3db4eef584, + limb1: 0x4e151b4051a3995941bca72d, + limb2: 0x238094fe5cd7409a, limb3: 0x0 }, u384 { - limb0: 0x6774b1616216ef72461f5583, - limb1: 0x3903c7b5af3b55907472a084, - limb2: 0x2b69c5b9a75f43c2, + limb0: 0x6ec78c9869b67859426fc7e2, + limb1: 0x4d9d8ee22583035dfea4b98f, + limb2: 0x186d7567ff782840, limb3: 0x0 }, u384 { - limb0: 0xc165a3a46e1b8401af3c8741, - limb1: 0x1d63281a124f3a4783b61c48, - limb2: 0x18af227b2988ae3e, + limb0: 0x3d27ebebec16a0744d8124db, + limb1: 0x77b2d07d9a82aa44be64d436, + limb2: 0x95140681c781fbb, limb3: 0x0 }, u384 { - limb0: 0x87b51b6384667f14e38ae884, - limb1: 0xdc2822db40c0ac2e9293032e, - limb2: 0x183227397098d014, + limb0: 0x38cd275cd4f97ef0038f465d, + limb1: 0xb85045b68181585d7965afce, + limb2: 0x30644e72e131a029, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0xea92f5d497f44ccb4e691875, - limb1: 0x93f217320fb9dd09be1583ed, - limb2: 0x1ada1455f9152bf5, + limb0: 0x3dd95d9b33a62e40da017027, + limb1: 0x9dd2fbe48fd55d237c2ca751, + limb2: 0x28a49732ef7da3e, limb3: 0x0 }, u384 { - limb0: 0x6c4d7c1eca27f4b3530de6a5, - limb1: 0xdb331495b679fb62b667d4bc, - limb2: 0x9b715b22cf1dd69, + limb0: 0x63097c6be1f43ec5c2c53622, + limb1: 0xe3c3c61a87a9ccb3d25506c7, + limb2: 0x9cae0bf456e55c5, limb3: 0x0 }, u384 { - limb0: 0x69e3173e8a4832671fb57af3, - limb1: 0x52d3a70c33bdbea7f9a128a7, - limb2: 0xa4305c9f115ee69, + limb0: 0x704046169d2adb533ded698f, + limb1: 0x156d391e7b80b1ec12b94873, + limb2: 0x1986afa5a8ceb32f, limb3: 0x0 }, u384 { - limb0: 0x7932694da098360391d02e73, - limb1: 0x14175f767d94c5f2513831ac, - limb2: 0x2dab5f54354a7650, + limb0: 0x40e17ae11cd982eaabdd9c07, + limb1: 0x4b377d1be511a0a19fbc196b, + limb2: 0x2cc6ffb1a40f83aa, limb3: 0x0 }, u384 { - limb0: 0xdf51497889683d7a14f6028d, - limb1: 0x2eb8aadcc641a243b0657b4e, - limb2: 0x1e539859dfbea2c3, + limb0: 0x56be96695f334850cfd7ff50, + limb1: 0x933d86456099f691d87edaca, + limb2: 0x166d199ef97c2401, limb3: 0x0 }, u384 { - limb0: 0x9b34378c4f0da42ee2165634, - limb1: 0x5e7814cc8709dc573e890f7c, - limb2: 0x197616b7cde9946c, + limb0: 0xe1c0d0f3e52e2b29d0f84f14, + limb1: 0x1f27b6f9cb4c96405fb3f51f, + limb2: 0x2e9565f5a43626d1, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -4800,102 +4796,102 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x5d13dde80462086015e1e5f7, - limb1: 0xd4dc4db2e406605382ad49e3, - limb2: 0x16ec559fc9925c0d, + limb0: 0xe3507f5e3fd8768839768251, + limb1: 0x514760a72046db9784848c88, + limb2: 0x14645eab578bd369, limb3: 0x0 }, u384 { - limb0: 0xfe8d064274d18738bf545a13, - limb1: 0x9f994bd0d1c185a0cfaa6429, - limb2: 0x1097dd8d0a15ba8d, + limb0: 0xb5bfdca973e1bd2ed6cb9153, + limb1: 0x4742e650fc95016d8e53725d, + limb2: 0xa56d79618e9991, limb3: 0x0 }, u384 { - limb0: 0xd0d7f7fce9b3107c25a0461f, - limb1: 0x5560ae765ced61db3ea5f7e7, - limb2: 0x27cd37e50d5303c3, + limb0: 0x68f755d4c4a34152c39781e2, + limb1: 0x43cfd01e962d5a402272e23a, + limb2: 0x22ce4459a8ff1379, limb3: 0x0 }, u384 { - limb0: 0xc9d5d5ae3f36d0a79440d10f, - limb1: 0x2c6baa1309c35beccefbe660, - limb2: 0x2034103ecb1ac1d0, + limb0: 0x67956f1d671376069f64f15b, + limb1: 0x4c876401a99b6107bf5d4b43, + limb2: 0x2c7e27903367ecc8, limb3: 0x0 }, u384 { - limb0: 0xdf7f40f515547e07209a7769, - limb1: 0xff2dddb4b28c202324a817d8, - limb2: 0x1ee2afbc473ab162, + limb0: 0xf4b4e73b4f4f24deb7d904a9, + limb1: 0x8582ec8e2a957a9aae83c74f, + limb2: 0x2e0ebcf1872702e9, limb3: 0x0 }, u384 { - limb0: 0xc69b64d3817012087d6b2a3a, - limb1: 0xfc457b75ab3a828cb05ea289, - limb2: 0x15ac820c62cee2, + limb0: 0x9d2204a86fd707aa8903f0fa, + limb1: 0x550e9780a707d4d3315f9e91, + limb2: 0xbeeaed5e81ef104, limb3: 0x0 }, u384 { - limb0: 0x6feda884e4da6c3c2c4a697e, - limb1: 0xb9da09f4f7b85badc84000f1, - limb2: 0x13769bf3ba67f517, + limb0: 0x219959fc41fcabb072808836, + limb1: 0xd550c3181e83ca9d0d940667, + limb2: 0x2dbf488f58230c42, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x574716f08bbc5a4b12be4c18, - limb1: 0x385ffdfadac3ebfa2bf2138, - limb2: 0x2029ee8f0a0de3b7, + limb0: 0xb98c18d19af28ac28e045075, + limb1: 0xd978f3adaf80176a7485f5f3, + limb2: 0x79edc598ce78ebb, limb3: 0x0 }, u384 { - limb0: 0x44e8745c5e77de19f929b3ef, - limb1: 0x91993dc1236df22823377e35, - limb2: 0x1d25411686d5983d, + limb0: 0x291c7543a5dcbc51484fa266, + limb1: 0xab4b524f96fd661b76ff1456, + limb2: 0x1d60a23dd04b0151, limb3: 0x0 }, u384 { - limb0: 0x3da945bb9ed897355f2070d9, - limb1: 0xf87af5249b393bf7ece379f6, - limb2: 0x1ec9115dd341cb3b, + limb0: 0xe84f07b69b6005e2e14b3f66, + limb1: 0x87f765a4f100bd66a0aa6ec8, + limb2: 0x1c2fc07e193a7963, limb3: 0x0 }, u384 { - limb0: 0x1cd4d215c55b4a917a62abf9, - limb1: 0xa747647203f425c7eb39d93f, - limb2: 0x12af46f9f55fae68, + limb0: 0x2f9a392411f19ed32ca049ae, + limb1: 0xed8e7cb3c078e4d2c5e1e70, + limb2: 0x2816aba258c324ea, limb3: 0x0 }, u384 { - limb0: 0x395dc36dee1f94f3e0f5f3be, - limb1: 0xf6bc89bf063c317298957186, - limb2: 0x3e941da09ca855f, + limb0: 0xfed3751ac36d8ba159d036cb, + limb1: 0xe52c133427f6580bc4502c94, + limb2: 0x1caddf2950b121a0, limb3: 0x0 }, u384 { - limb0: 0xd30df3563b5092dced7b8048, - limb1: 0xb5eb9fbb4759fb501dbaec8b, - limb2: 0x2640fb7e79a10b84, + limb0: 0xdc2d594a9853b88c275f5ef6, + limb1: 0x49f38ce858e26b946b50e81e, + limb2: 0x1419f62df1dc4725, limb3: 0x0 }, u384 { - limb0: 0x7932694da098360391d02e76, - limb1: 0x14175f767d94c5f2513831ac, - limb2: 0x2dab5f54354a7650, + limb0: 0x40e17ae11cd982eaabdd9c0a, + limb1: 0x4b377d1be511a0a19fbc196b, + limb2: 0x2cc6ffb1a40f83aa, limb3: 0x0 }, u384 { - limb0: 0xdf51497889683d7a14f6028d, - limb1: 0x2eb8aadcc641a243b0657b4e, - limb2: 0x1e539859dfbea2c3, + limb0: 0x56be96695f334850cfd7ff50, + limb1: 0x933d86456099f691d87edaca, + limb2: 0x166d199ef97c2401, limb3: 0x0 }, u384 { - limb0: 0x9b34378c4f0da42ee2165634, - limb1: 0x5e7814cc8709dc573e890f7c, - limb2: 0x197616b7cde9946c, + limb0: 0xe1c0d0f3e52e2b29d0f84f14, + limb1: 0x1f27b6f9cb4c96405fb3f51f, + limb2: 0x2e9565f5a43626d1, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -4905,9 +4901,9 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0xd64ace3f860d8c719fa5c2a6, - limb1: 0x8872823aae9926358f39703e, - limb2: 0x10940dfe6fb0b3db, + limb0: 0xe8c22921a221bf20b5d230, + limb1: 0xedcdb1ada12cda47cd0045f2, + limb2: 0x2f2410e8043dfd65, limb3: 0x0 }, u384 { @@ -4920,15 +4916,15 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0xa2448614d548473d2e57f2d2, - limb1: 0xb02c9d0f02c6e1e9f1a15407, - limb2: 0xebe948ac40a101, + limb0: 0x885ab1af1bf7de905607583, + limb1: 0x20c8cf769df67458707ae833, + limb2: 0xbfd900f0a3fe0de, limb3: 0x0 }, u384 { - limb0: 0x6f01d904f57da5c500e933ed, - limb1: 0xd217371292c9b5cc4d6f62cc, - limb2: 0xaac471ac4dbc95a, + limb0: 0x7536afdae81422af8a898949, + limb1: 0xbeadd88bf61ac033c4ab4c3f, + limb2: 0x114f171620955c37, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -4936,49 +4932,49 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xa7acb42cb3f72279e4c4cd9b, - limb1: 0x4eefcd1de3d52832fd5b275e, - limb2: 0x15d8042f2152cc9a, + limb0: 0x1c1283492ebc1833f580e78a, + limb1: 0x8d4c72c2d96bc62f50c81ba0, + limb2: 0x12ab9e592032effb, limb3: 0x0 }, u384 { - limb0: 0x6d77e9c27b82944fedba910c, - limb1: 0x88d214db12bea8fbfe8634f1, - limb2: 0x135e7c40a32bd0a2, + limb0: 0xf63eceea1273f0ca8f3bb312, + limb1: 0x2f3e39c4512b8062896470a9, + limb2: 0x2ba1af9c7acf4d4, limb3: 0x0 }, u384 { - limb0: 0x7690647b6a046da3f3c7261c, - limb1: 0x5fcf2093bb2bbf5d5f162c31, - limb2: 0x28a9868a5961c289, + limb0: 0xb19ba5651eb2ab46438de62b, + limb1: 0x6e74003feb9be6c79cdb1529, + limb2: 0x15cbe9d88a0f6f82, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xe6cd923e7fd8d5b78b07d876, - limb1: 0x1085d72d0854a5bdd4e3fc16, - limb2: 0x2c3bbda04c1e305, + limb0: 0x19910150d53e79bb10216089, + limb1: 0x625a6e63d9e35d095170b899, + limb2: 0x23f8b02d1ebfa29a, limb3: 0x0 }, u384 { - limb0: 0x4d058b0ee078f14f02bb9bc7, - limb1: 0x7645a537b85d2164e84e2865, - limb2: 0x2004d5504e935c10, + limb0: 0xf73245037c1bdbf7c71f9e94, + limb1: 0x83b943ed60cee83db6807a2c, + limb2: 0x388f6cf808e747d, limb3: 0x0 }, u384 { limb0: 0x3, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xa2448614d548473d2e57f2d2, - limb1: 0xb02c9d0f02c6e1e9f1a15407, - limb2: 0xebe948ac40a101, + limb0: 0x885ab1af1bf7de905607583, + limb1: 0x20c8cf769df67458707ae833, + limb2: 0xbfd900f0a3fe0de, limb3: 0x0 }, u384 { - limb0: 0x6f01d904f57da5c500e933ed, - limb1: 0xd217371292c9b5cc4d6f62cc, - limb2: 0xaac471ac4dbc95a, + limb0: 0x7536afdae81422af8a898949, + limb1: 0xbeadd88bf61ac033c4ab4c3f, + limb2: 0x114f171620955c37, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -4988,9 +4984,9 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0x7faebb4fd4566e728be00c39, - limb1: 0x2b2ddab2ac6a51cd2420d14e, - limb2: 0xaba130dea907c5d, + limb0: 0xa9d3feb6dc802dc38b33f0ca, + limb1: 0xa65a1c8938ebcfa8e5f661a7, + limb2: 0xcd3eb66c55f25aa, limb3: 0x0 }, g_rhs_sqrt: array![], @@ -5001,15 +4997,15 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0xe1c230e512e33ee2368f3657, - limb1: 0x7799cf7b5145e4c1d1009485, - limb2: 0x242a0c004ab4a80d, + limb0: 0xfc2a875e1755a041f98fc47e, + limb1: 0xdc85421262c25c6116d5cabe, + limb2: 0x2c94fbf162daaf58, limb3: 0x0 }, y: u384 { - limb0: 0x749402756a54e37e1fe8aada, - limb1: 0x318534ee2011408189f62437, - limb2: 0x243e697e4f88db53, + limb0: 0xcb1aabc3e6057bde2ded0d60, + limb1: 0x314afc89b44bc9a61796cea0, + limb2: 0x279b25c64c5bbb7d, limb3: 0x0 } } @@ -5022,85 +5018,85 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0xc8b5a0143dafbda438fc6ed6, - limb1: 0xb6e7263b15cf6e34656b31f0, - limb2: 0x2253c6e76df1c59b, + limb0: 0x5c724369afbc772d02aed58e, + limb1: 0x2cd3bc838c66439a3d6160b, + limb2: 0x72f26b55fb56be1, limb3: 0x0 }, y: u384 { - limb0: 0x68aba5dbf736110f72211176, - limb1: 0xefed8718f6c9bf5f14244490, - limb2: 0x16e3c12bc787e0af, + limb0: 0x772ca79c580e121ca148fe75, + limb1: 0xce2f55e418ca01b3d6d1014b, + limb2: 0x2884b1dc4e84e30f, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x375b71a2d7f418be6cd7e04a, - limb1: 0xb9eb1425f7f0ccd7d7970e84, - limb2: 0x18e40fc48c1ac782, + limb0: 0x536c985db33c69f7c242e07a, + limb1: 0xfc531bccffafcf1e59d91fb9, + limb2: 0x2585e4f8a31664cb, limb3: 0x0 }, y: u384 { - limb0: 0xdb006ed830b4018361454e11, - limb1: 0x2c363bb614eac2f0afd9eeae, - limb2: 0x20efd5c3491a0b8d, + limb0: 0x57fa42444057cf0c1d62ae3c, + limb1: 0x4f48d341183118d68ea41313, + limb2: 0x1d2d2799db056ed1, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xf388b9f214b346db091502e6, - limb1: 0x6f207dc3ea01e80ea29a2199, - limb2: 0x199f37d2bebb13c2, + limb0: 0x236ca9312dad3661a37f2d6f, + limb1: 0x98424c01caad7592315715d1, + limb2: 0x795b9fd941b23c4, limb3: 0x0 }, y: u384 { - limb0: 0x4adec011dc6838675caf894e, - limb1: 0xa5e44f49c7eb7996510c40eb, - limb2: 0x1a3fc24815c7dfb8, + limb0: 0xc7ab5834609a54b8993ffd79, + limb1: 0xe81cd490528b814ca632aace, + limb2: 0x2d9ff53d3009e6f7, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x6a8397bcf0cfddec15b3e4c1, - limb1: 0xe0a61831673dfa1c2cd38d6a, - limb2: 0x17f7653a2c9d3feb, + limb0: 0x163df40cafbf585ca5b2ab44, + limb1: 0xb4752e4666c88dbbe23783a0, + limb2: 0x1a801462ac9cb657, limb3: 0x0 }, y: u384 { - limb0: 0x52820e2a4b8ab2e462ff13ba, - limb1: 0x8ea877b7ac5ba766bb530b17, - limb2: 0x13371f688fa5294c, + limb0: 0xac9b557d7ca8625d957263c6, + limb1: 0xdc6f75fa8339a78b998ae54a, + limb2: 0x28683293b6494d9f, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x826a3e1387c7541d95d73ee6, - limb1: 0x609fa4a92b6b66f693946941, - limb2: 0x2fbcf96a9f65a6b8, + limb0: 0x5c4f5dca0c973b7f70bfff9, + limb1: 0x188c2afab11eef5d48ecda3c, + limb2: 0xc2fed35d36c49f1, limb3: 0x0 }, y: u384 { - limb0: 0x20278251eda549761225faf4, - limb1: 0x9eaf95658d67f1ed4dbbd52e, - limb2: 0x5f9b47a7d3a53f9, + limb0: 0x9d7244ea10697ca42e2e066b, + limb1: 0xfe18a519c7d68770dc48dbf9, + limb2: 0x149bb528db998529, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x4ffc7a0213109922c4da3649, - limb1: 0x60fbeccaea229da078194130, - limb2: 0x1bd5bda75262fd8e, + limb0: 0xffc057151b06c496e6fdd440, + limb1: 0x5a01bae0c7441f08c7af1cf9, + limb2: 0x274e0e02529e6d26, limb3: 0x0 }, y: u384 { - limb0: 0x9890051e732483c23c58f73d, - limb1: 0x63475a7b21930dcf126e6aab, - limb2: 0x24eaf6b26a17b435, + limb0: 0x65ceb8977413bc9798681ecb, + limb1: 0x19ffb287b45234f0c28fd1a7, + limb2: 0x28dbbd2f9267be76, limb3: 0x0 } }, @@ -5108,22 +5104,22 @@ mod msm_tests { .span(); let scalars = array![ u256 { - low: 0xc03193a29a7abf763bb8f4f1b9c8d865, high: 0x2abc148d9b21646f3db90ebfe78f8c32 + low: 0xb5d32b1666194cb1d71037d1b83e90ec, high: 0x28045af9ab0c1681c8f8e3d0d3290a4c }, u256 { - low: 0xda7046d8775f037e96ff411ec3e9c06d, high: 0x5c335b4da09c8fcc4e2e220d6704d8f + low: 0xd3fbf47a7e5b1e7f9ca5499d004ae545, high: 0x2ebce25e3e70f16a55485822de1b372a }, u256 { - low: 0xe4ecd5bb3e9c3d4456e24ea713956b43, high: 0x158d0c58ccb646bfd4c5fbd3c2fe41e5 + low: 0x101fbcccded733e8b421eaeb534097ca, high: 0xe30658b9148624feac1c14f30e9c5cc }, u256 { - low: 0xff76a09a7411622b384471eb4913026d, high: 0xa19e44ef59d2cf78efb4aa3d0a4e213 + low: 0x247a8333f7b0b7d2cda8056c3d15eef7, high: 0x5d67b7072ae22448b0163c1cd9d2b7d }, u256 { - low: 0xd90e2872dea58d5f5cf8b972cb82ac4c, high: 0x11059d4d4a36fe2bde4644918f091779 + low: 0xe005b86051ef1922fe43c49e149818d1, high: 0x1f507980eece328bff7b118e820865d6 }, u256 { - low: 0xb0a788e48f04e59e8d037ee4a9327781, high: 0x23cd587766ca7afdcea3c5d0aa8b406 + low: 0x4a84eb038d1fd9b74d2b9deb1beb3711, high: 0x154bc8ce8c25166a1ff39849b4e1357d }, ] .span(); @@ -5131,71 +5127,60 @@ mod msm_tests { array![ ( array![ + -0x1, + -0x1, 0x0, - 0x1, + -0x1, 0x1, 0x0, 0x0, - -0x1, - -0x1, 0x1, 0x1, - -0x1, - 0x0, - 0x0, - 0x0, 0x1, 0x1, - -0x1, - -0x1, 0x0, 0x1, 0x0, - -0x1, + 0x1, + 0x0, 0x1, -0x1, + 0x1, -0x1, - -0x1, - 0x0, 0x0, - 0x1, -0x1, 0x1, 0x1, - -0x1, 0x1, 0x0, - 0x0, - 0x0, - -0x1, + 0x1, -0x1, -0x1, 0x0, - 0x0, 0x1, 0x1, 0x1, + -0x1, + -0x1, 0x0, 0x0, - 0x0, - -0x1, 0x1, 0x1, -0x1, -0x1, -0x1, - 0x0, - 0x0, - 0x0, - 0x0, 0x1, 0x0, - 0x1, + -0x1, + -0x1, 0x1, 0x0, + -0x1, + 0x1, 0x1, -0x1, 0x1, + 0x0, -0x1, 0x0, 0x1, @@ -5203,32 +5188,30 @@ mod msm_tests { 0x0, -0x1, 0x0, - 0x0, - 0x0, - 0x0, - 0x0, -0x1, + 0x0, 0x1, - 0x1, - 0x1, - -0x1, - -0x1, - ] - .span(), - array![ -0x1, -0x1, 0x0, -0x1, 0x1, 0x1, + 0x1, 0x0, 0x0, 0x0, 0x1, + -0x1, + 0x0, 0x1, + 0x0, 0x1, - 0x1, + -0x1, + -0x1, + ] + .span(), + array![ 0x0, 0x0, 0x0, @@ -5236,63 +5219,76 @@ mod msm_tests { 0x0, 0x0, 0x0, + 0x1, 0x0, 0x1, - -0x1, + 0x0, 0x0, 0x1, -0x1, + -0x1, 0x1, -0x1, 0x1, 0x1, 0x0, - 0x0, -0x1, 0x0, - 0x1, - 0x1, - 0x1, + -0x1, + -0x1, + -0x1, 0x1, 0x0, 0x1, - 0x0, + -0x1, + -0x1, + 0x1, + -0x1, 0x0, 0x0, 0x1, 0x1, 0x0, 0x1, - -0x1, - -0x1, + 0x1, -0x1, -0x1, 0x0, 0x0, - -0x1, - 0x0, 0x0, 0x1, - 0x1, 0x0, 0x0, 0x0, + 0x1, 0x0, 0x0, - 0x1, -0x1, -0x1, + -0x1, + 0x0, + 0x0, 0x1, 0x0, 0x0, 0x0, - 0x1, -0x1, 0x1, + 0x1, + 0x1, + 0x0, + 0x1, + -0x1, + 0x0, + -0x1, 0x0, 0x1, 0x0, + 0x0, + -0x1, 0x1, + 0x0, + -0x1, -0x1, 0x0, -0x1, @@ -5302,166 +5298,168 @@ mod msm_tests { ( array![ 0x1, - 0x1, + -0x1, + -0x1, + -0x1, + -0x1, 0x0, 0x0, -0x1, 0x0, 0x1, - 0x0, 0x1, - -0x1, + 0x1, -0x1, 0x1, 0x1, 0x1, + 0x0, + 0x1, + -0x1, 0x1, -0x1, + -0x1, 0x0, -0x1, 0x1, - 0x1, - 0x0, 0x0, - 0x0, - 0x1, - 0x1, - 0x1, - 0x1, + -0x1, 0x1, 0x1, 0x1, -0x1, 0x0, + -0x1, + -0x1, + 0x1, 0x0, 0x1, + -0x1, + -0x1, + 0x0, + -0x1, 0x0, 0x0, 0x0, - 0x1, - -0x1, - 0x1, - 0x1, - 0x1, -0x1, 0x1, -0x1, 0x1, + 0x0, 0x1, + 0x0, + 0x0, 0x1, - -0x1, - -0x1, - 0x1, + 0x0, 0x1, 0x0, + 0x0, + 0x0, 0x1, 0x1, - -0x1, 0x0, - 0x1, - -0x1, -0x1, -0x1, 0x0, - -0x1, - -0x1, 0x0, - -0x1, - 0x1, 0x0, 0x1, -0x1, 0x0, - -0x1, - 0x0, 0x0, + -0x1, 0x1, - 0x0, - 0x0, + 0x1, + 0x1, + 0x1, + -0x1, 0x1, 0x0, + -0x1, 0x0, -0x1, -0x1, ] .span(), array![ - 0x1, - 0x1, + -0x1, 0x1, 0x1, 0x1, 0x0, - -0x1, 0x0, -0x1, + -0x1, + 0x0, 0x1, + 0x0, -0x1, + 0x1, + 0x0, + 0x0, -0x1, 0x1, 0x0, 0x1, -0x1, + 0x0, -0x1, -0x1, - 0x0, - 0x0, -0x1, -0x1, 0x1, 0x0, -0x1, - 0x0, - 0x1, - 0x1, - 0x1, 0x1, 0x0, - 0x1, -0x1, 0x1, 0x0, - 0x1, -0x1, 0x0, 0x0, 0x1, - 0x1, + 0x0, + -0x1, + 0x0, + -0x1, + 0x0, + 0x0, 0x1, 0x0, -0x1, + -0x1, 0x1, -0x1, 0x1, -0x1, 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + -0x1, -0x1, 0x1, + -0x1, 0x1, 0x0, 0x1, - 0x1, - -0x1, - -0x1, -0x1, 0x0, - -0x1, + 0x0, -0x1, 0x0, 0x1, 0x1, 0x0, - -0x1, - -0x1, + 0x1, + 0x1, -0x1, 0x0, 0x0, - 0x0, - 0x0, 0x1, 0x1, - -0x1, - -0x1, 0x1, -0x1, ] @@ -5469,27 +5467,17 @@ mod msm_tests { ), ( array![ - 0x1, - 0x1, 0x1, 0x0, -0x1, -0x1, - 0x0, - 0x1, -0x1, - 0x0, -0x1, - 0x0, - 0x0, + 0x1, -0x1, - 0x0, -0x1, -0x1, - 0x1, - 0x0, -0x1, - 0x0, 0x1, 0x0, -0x1, @@ -5499,178 +5487,190 @@ mod msm_tests { 0x0, 0x1, 0x0, + 0x0, + 0x1, -0x1, 0x1, 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - -0x1, + 0x1, -0x1, -0x1, - 0x1, -0x1, -0x1, 0x0, 0x1, - 0x1, + -0x1, + 0x0, + -0x1, + -0x1, -0x1, -0x1, -0x1, 0x1, - 0x1, + -0x1, + 0x0, 0x1, 0x1, -0x1, 0x0, + 0x0, + -0x1, 0x1, -0x1, - 0x0, + 0x1, -0x1, - 0x0, - 0x0, -0x1, - 0x0, + 0x1, -0x1, - 0x0, -0x1, 0x0, -0x1, + -0x1, 0x0, - 0x0, + -0x1, 0x1, 0x0, 0x1, + 0x0, 0x1, - 0x1, + -0x1, 0x1, -0x1, + -0x1, + 0x0, + -0x1, + 0x0, + 0x1, 0x1, 0x1, 0x0, -0x1, - -0x1, + 0x1, ] .span(), array![ - -0x1, 0x1, - 0x0, - 0x0, - 0x0, 0x1, 0x0, - 0x0, - 0x0, + -0x1, -0x1, 0x0, 0x1, 0x1, 0x1, - 0x0, - 0x0, - 0x1, 0x1, -0x1, + 0x0, 0x1, + 0x0, + 0x0, 0x1, - -0x1, 0x0, -0x1, 0x1, 0x0, + 0x1, + 0x1, + -0x1, 0x0, + -0x1, 0x0, 0x0, + 0x1, 0x0, -0x1, + 0x1, -0x1, - -0x1, - 0x0, - 0x0, + 0x1, 0x0, -0x1, -0x1, - -0x1, - 0x0, + 0x1, 0x1, 0x0, - 0x0, - 0x0, + -0x1, + 0x1, 0x1, 0x0, 0x0, - -0x1, 0x1, 0x0, + 0x1, + 0x1, + 0x1, -0x1, - 0x0, -0x1, 0x0, -0x1, + -0x1, 0x1, 0x1, -0x1, - -0x1, 0x1, 0x1, + 0x0, + 0x0, -0x1, 0x1, + -0x1, + -0x1, + -0x1, 0x1, 0x0, - -0x1, + 0x0, 0x1, + -0x1, + -0x1, 0x0, 0x0, 0x0, -0x1, 0x1, 0x0, - -0x1, - 0x0, 0x1, - 0x1, - 0x1, - -0x1, - -0x1, ] .span() ), ( array![ 0x1, - 0x0, - 0x0, - 0x0, - 0x0, + 0x1, + -0x1, + -0x1, 0x0, 0x0, 0x1, + 0x0, + -0x1, -0x1, 0x1, - 0x0, - 0x0, 0x1, 0x0, 0x1, - -0x1, 0x1, + -0x1, 0x1, + 0x0, -0x1, -0x1, -0x1, 0x1, + -0x1, + 0x1, + -0x1, 0x1, 0x0, 0x0, -0x1, + 0x0, + 0x0, + 0x0, 0x1, -0x1, + 0x0, + 0x0, -0x1, 0x1, - 0x1, - 0x1, 0x0, 0x1, 0x1, @@ -5679,215 +5679,206 @@ mod msm_tests { 0x0, 0x1, 0x1, - 0x1, - 0x0, -0x1, - 0x0, - 0x1, - 0x1, - 0x0, -0x1, - 0x0, - 0x1, - 0x0, - 0x0, - 0x1, + -0x1, + -0x1, + -0x1, -0x1, 0x0, - 0x1, + 0x0, -0x1, 0x1, -0x1, 0x1, -0x1, - 0x1, 0x0, -0x1, - 0x1, - 0x0, 0x0, 0x1, 0x1, + 0x1, -0x1, -0x1, 0x0, - 0x1, - 0x1, - 0x1, + -0x1, 0x0, 0x0, + -0x1, 0x1, 0x0, -0x1, - -0x1, + 0x1, + 0x0, + 0x0, + 0x0, -0x1, ] .span(), array![ - 0x1, - 0x0, - 0x1, 0x0, -0x1, -0x1, 0x1, 0x0, - 0x0, - 0x0, -0x1, 0x1, 0x0, 0x1, - -0x1, + 0x1, -0x1, 0x0, 0x0, - 0x1, - 0x1, - 0x1, + -0x1, 0x1, -0x1, - 0x0, - 0x0, + -0x1, 0x0, 0x1, - 0x1, -0x1, 0x0, - 0x1, + 0x0, -0x1, + 0x0, -0x1, + 0x0, -0x1, 0x0, + 0x1, 0x0, 0x0, 0x1, - 0x1, + 0x0, -0x1, -0x1, + 0x1, 0x0, 0x0, - -0x1, - -0x1, 0x1, + -0x1, 0x0, 0x0, + 0x1, + 0x0, 0x0, 0x1, + 0x0, 0x1, + 0x0, + -0x1, 0x1, + 0x0, + 0x0, + 0x0, -0x1, 0x1, 0x1, -0x1, 0x0, 0x1, - -0x1, 0x0, -0x1, 0x1, 0x1, + 0x1, -0x1, - -0x1, - -0x1, - -0x1, - -0x1, - -0x1, 0x0, 0x0, 0x0, + 0x0, + 0x1, + -0x1, + -0x1, -0x1, -0x1, - 0x0, -0x1, 0x1, - 0x1, - 0x1, + -0x1, ] .span() ), ( array![ - -0x1, - 0x1, - 0x1, - -0x1, - -0x1, - 0x1, 0x0, - 0x1, 0x0, 0x1, -0x1, 0x0, - 0x0, + 0x1, -0x1, 0x0, - 0x1, 0x0, 0x0, - -0x1, 0x1, + 0x0, -0x1, -0x1, - 0x0, 0x1, - -0x1, - 0x0, 0x1, 0x0, - -0x1, 0x1, - -0x1, + 0x1, 0x0, 0x1, -0x1, -0x1, 0x0, - 0x1, 0x0, 0x0, 0x0, 0x0, -0x1, - 0x0, - 0x1, - 0x1, -0x1, -0x1, 0x0, 0x0, 0x0, + -0x1, + 0x0, 0x1, 0x0, 0x0, 0x0, + -0x1, + 0x1, + 0x1, 0x0, + 0x1, + 0x1, -0x1, 0x0, 0x1, 0x0, -0x1, - -0x1, 0x0, - -0x1, + 0x1, -0x1, -0x1, 0x0, - -0x1, - -0x1, + 0x0, + 0x0, + 0x1, + 0x1, -0x1, 0x0, 0x1, 0x1, + 0x1, 0x0, 0x0, + 0x0, + -0x1, 0x1, + -0x1, + 0x0, 0x0, + 0x1, + -0x1, -0x1, 0x1, 0x0, 0x0, + 0x0, -0x1, -0x1, ] @@ -5895,60 +5886,64 @@ mod msm_tests { array![ 0x0, 0x1, - 0x1, - 0x1, -0x1, - 0x1, - 0x0, - 0x0, -0x1, 0x0, - 0x1, -0x1, - 0x1, 0x0, + -0x1, 0x0, -0x1, -0x1, + 0x1, + 0x1, -0x1, + 0x1, + 0x0, + 0x1, -0x1, 0x1, + 0x1, + 0x0, -0x1, -0x1, + 0x0, + 0x0, + -0x1, -0x1, 0x0, - 0x1, 0x0, -0x1, + 0x0, 0x1, 0x0, - -0x1, 0x0, 0x1, -0x1, + 0x0, 0x1, + 0x0, -0x1, - -0x1, - -0x1, + 0x1, 0x0, 0x1, 0x0, 0x0, - 0x1, - -0x1, 0x0, + -0x1, 0x1, 0x0, + 0x0, + 0x1, + 0x1, 0x1, -0x1, -0x1, - 0x0, - 0x0, -0x1, 0x1, + 0x1, -0x1, -0x1, - 0x0, 0x1, 0x1, -0x1, @@ -5956,187 +5951,185 @@ mod msm_tests { 0x1, 0x1, -0x1, - 0x1, -0x1, -0x1, + 0x1, 0x0, + 0x1, 0x0, - 0x0, - 0x0, - 0x0, - -0x1, -0x1, 0x1, 0x1, -0x1, + 0x1, 0x0, -0x1, - 0x1, ] .span() ), ( array![ - 0x1, - 0x1, + -0x1, + -0x1, 0x0, - 0x1, - 0x1, - 0x0, - 0x1, -0x1, 0x0, + -0x1, 0x1, 0x0, 0x0, - 0x1, - 0x1, -0x1, 0x1, - 0x0, - -0x1, - -0x1, - -0x1, -0x1, 0x1, - 0x0, 0x1, 0x1, + 0x0, + 0x0, -0x1, + 0x1, 0x0, 0x1, 0x1, + 0x0, + -0x1, 0x1, + 0x0, + -0x1, -0x1, 0x1, + 0x0, 0x1, 0x1, + 0x0, + 0x0, -0x1, - -0x1, - 0x1, 0x1, + 0x0, + 0x0, + -0x1, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, 0x1, 0x0, + 0x0, + 0x0, 0x1, 0x1, 0x1, + 0x0, -0x1, - -0x1, - -0x1, + 0x0, + 0x1, 0x0, 0x0, 0x0, 0x1, - -0x1, 0x0, -0x1, - -0x1, 0x0, 0x1, - -0x1, - -0x1, - 0x0, 0x1, -0x1, + -0x1, 0x0, -0x1, -0x1, - 0x1, -0x1, 0x1, 0x1, -0x1, - -0x1, + 0x1, 0x0, + -0x1, 0x0, - 0x1, 0x0, 0x0, 0x1, - 0x0, - -0x1, - -0x1, 0x1, - -0x1, - -0x1, ] .span(), array![ -0x1, - -0x1, - 0x0, + 0x1, 0x0, 0x0, - 0x1, - 0x1, -0x1, -0x1, + 0x0, 0x1, - -0x1, - -0x1, 0x1, 0x1, 0x0, - -0x1, - -0x1, - 0x1, - -0x1, 0x0, - -0x1, + 0x0, 0x0, 0x0, -0x1, + 0x0, 0x1, - 0x1, + -0x1, 0x1, 0x0, - -0x1, - -0x1, 0x0, 0x1, 0x0, 0x1, - 0x1, -0x1, + 0x0, 0x1, - 0x1, + 0x0, + 0x0, + 0x0, + -0x1, -0x1, 0x1, 0x0, 0x1, -0x1, + 0x0, + 0x0, 0x1, - -0x1, 0x1, + -0x1, + 0x0, + 0x0, 0x1, 0x1, 0x1, -0x1, 0x1, - -0x1, 0x1, 0x0, - 0x1, + 0x0, + 0x0, + -0x1, 0x0, 0x1, - 0x1, + -0x1, + 0x0, + -0x1, + -0x1, + -0x1, -0x1, 0x1, 0x0, 0x1, 0x1, 0x1, + 0x1, 0x0, 0x1, + -0x1, 0x1, 0x0, + 0x1, -0x1, - -0x1, - 0x0, - 0x0, - 0x0, 0x1, - 0x0, + 0x1, 0x1, -0x1, -0x1, @@ -6149,133 +6142,133 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0xa8b5735dd790d8efb97cd370, - limb1: 0x7ea9e102147af0c13c5e12d6, - limb2: 0x2af725839734a65b, + limb0: 0xb8a84096fb3f57f4475dca12, + limb1: 0xe93a1a778c688db1a1b68912, + limb2: 0x3f774192b2f4bee, limb3: 0x0 }, y: u384 { - limb0: 0xdcf0edc9a5a3df4f60faa4e9, - limb1: 0x287f5c8fefe5630a4fb0b712, - limb2: 0x1e894e6b35182c80, + limb0: 0x84ac6ca444930c647a2cc613, + limb1: 0xa8bcb3a2235f9c5a130913c0, + limb2: 0x26e3ff68a86f9689, limb3: 0x0 } }, Q_high: G1Point { x: u384 { - limb0: 0x51e5031f916731b4787ffa49, - limb1: 0x4d3d070bb1b7af9283a4bdec, - limb2: 0xfea1701dca7e9f, + limb0: 0xd85bfea4fd9f59b6bd6b1fa0, + limb1: 0xb9f24d5556f592d2a10feef9, + limb2: 0xa27c6eede0a5579, limb3: 0x0 }, y: u384 { - limb0: 0xf662671a0ae38fbaf7559cc3, - limb1: 0xe85a308ecb93f25759e3ea1, - limb2: 0x2b0e8f01907f429e, + limb0: 0x2a618b7bfaecc28900b3baac, + limb1: 0x4d5a562e59c0504b9bf0cebc, + limb2: 0x2970cfad828f9857, limb3: 0x0 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0xb14b5f4ceaf18313e22b2395, - limb1: 0xa3b72287200755a9fc22e048, - limb2: 0xce6e3f908335ef5, + limb0: 0xbc2adb51f1dd0bf1fa4b1b0e, + limb1: 0x8bfdbfd406d4bf587ac87d1d, + limb2: 0x34f04172a761250, limb3: 0x0 }, y: u384 { - limb0: 0x335ab3b9a4b79bab8a307228, - limb1: 0x8b7c9cb364bde5b9d911206d, - limb2: 0x1b566443ab1c89, + limb0: 0x86a7b975d55f4cdf877284f3, + limb1: 0xfbaa9a1df5f13a2514466a1e, + limb2: 0x536d0ded78f5671, limb3: 0x0 } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0x94a2acc99ae298a60d1cbb62, - limb1: 0x7161ee68db4631ce8e8a9b31, - limb2: 0x1a14c6184fd07d9, + limb0: 0xab7f59b465dd9e0c4c4e25d7, + limb1: 0x71989626b14c7587d2180318, + limb2: 0x2ba533f058846af2, limb3: 0x0 }, u384 { - limb0: 0xe4a5bbe0d0ca96025abcb770, - limb1: 0x7398e832412cf854a1ad86e7, - limb2: 0xc4537f170daee6c, + limb0: 0x436a8a2bee849a11c4ce0b8a, + limb1: 0x9b0dc0e956c6f500fdd43e01, + limb2: 0x22064cbf4cacc1d9, limb3: 0x0 }, u384 { - limb0: 0x81f1c54f0f7f1a93213b12b1, - limb1: 0x49dfe13fdf603e5243f6e26f, - limb2: 0x15097e5a3a506c90, + limb0: 0x487b31d47024221aa2525240, + limb1: 0x1fd881f5ab8656b6a475790e, + limb2: 0x1fcf8d4435243c0a, limb3: 0x0 }, u384 { - limb0: 0x132acd6e8c25a2ef076066d5, - limb1: 0x664224f877cee7cb93eb7a07, - limb2: 0x1ddbc9e526eb3c4, + limb0: 0xe133348a3cedd54789fc45eb, + limb1: 0xea9db69d4d74f9fd9a13e6a, + limb2: 0xe970ba5077c120f, limb3: 0x0 }, u384 { - limb0: 0x72605e600b0a68cae64cfc3e, - limb1: 0x6cbaefc5801bcc923f4d8516, - limb2: 0x1ed9f950256955be, + limb0: 0x46a6a7e5b59392ba2230df02, + limb1: 0xb9d05dd229e0e801c86590e6, + limb2: 0x24a8bb5ea042b139, limb3: 0x0 }, u384 { - limb0: 0x8d5da2fa96a0971780349cc4, - limb1: 0x8a137a869c764a9cbfe6e123, - limb2: 0xbbad0444a589d6, + limb0: 0x7659093028445588a4789b0d, + limb1: 0xeafc969a92a102ea28f3760d, + limb2: 0xffd51acecdc82aa, limb3: 0x0 }, u384 { - limb0: 0x1b1188a1273fab8851613988, - limb1: 0xb85045b68181585accc4c017, - limb2: 0x30644e72e131a029, + limb0: 0x946ff015f64b28035d9d1102, + limb1: 0xdc2822db40c0ac2d86b07d0c, + limb2: 0x183227397098d014, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0xd8bd4d4aeb835fde3cc6e75, - limb1: 0x8cd2f57b50be0c147a7fa4bb, - limb2: 0x14d0fe409c18a785, + limb0: 0x472120d359d05847ccb7d1a6, + limb1: 0x26f1b3b46026d88778b2260, + limb2: 0x1b1931648d8579ca, limb3: 0x0 }, u384 { - limb0: 0x82c04b9a0c81913fbf167f00, - limb1: 0x9a6bf46466e3015fc400a09e, - limb2: 0x99b1cfd42c8539b, + limb0: 0xa5d32af81a119b71022b2f75, + limb1: 0xd5607093decd379bab5d3f03, + limb2: 0x21b9b9446275d2ad, limb3: 0x0 }, u384 { - limb0: 0x16f71b21151f36b49f816da3, - limb1: 0xa1b7e4790a568c87cd07eabb, - limb2: 0x76433bd245973c8, + limb0: 0xc384c12ac4a8bdc393b8b3b6, + limb1: 0x2f43c3333e6e34a449edd480, + limb2: 0x62e5660a798aacc, limb3: 0x0 }, u384 { - limb0: 0xde9a8bf605794095635264bd, - limb1: 0xf08071d375f6dc606d188d4b, - limb2: 0x16dc3e5dc3387325, + limb0: 0x6268e3fa4fb6cb0b2a80b075, + limb1: 0xa495249f585c2587a15179c2, + limb2: 0x27197988274b667b, limb3: 0x0 }, u384 { - limb0: 0x47a706993d30ba17d1884894, - limb1: 0xeb0ad0f945571ec79048ea19, - limb2: 0x30375359e2553e2d, + limb0: 0xef915215f0a41c6512568e1b, + limb1: 0xd8caaba0d21a5b1f271b2eef, + limb2: 0x9c15608c1467082, limb3: 0x0 }, u384 { - limb0: 0x85b19fc99f05fa2bf0cc82c4, - limb1: 0xda65cf86bc857a220a428574, - limb2: 0x16c7bf6bdead87e2, + limb0: 0x1a7d58759c0855b51a17a5aa, + limb1: 0xa466ed0df6db33ad36a56c74, + limb2: 0x2a2b885f6c07e8da, limb3: 0x0 }, u384 { - limb0: 0x30ff65e89f12fb1861a572fd, - limb1: 0x98b319c3fe7da744a10b6815, - limb2: 0xe9d37eff795f561, + limb0: 0x919e5919bceca41e55ebcacf, + limb1: 0x8150fef315cc365b02f3f035, + limb2: 0xaeca1f90ed732ad, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -6283,114 +6276,114 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xff9e126ddd95270f9e1ccfcf, - limb1: 0x615c41f544413254282cd438, - limb2: 0x8a4316696d30696, + limb0: 0x14fe0262535ab2d4dba907d9, + limb1: 0x16d2742f70daf0bf2f1677d5, + limb2: 0x226c6b543f089144, limb3: 0x0 }, u384 { - limb0: 0x723955b230cffe29a2cc960b, - limb1: 0xedf65051a08f21250f6f68d9, - limb2: 0x27e03bccb52b6944, + limb0: 0x12226d29beb1718d18fced93, + limb1: 0x2d2765dc9eee2a6b49c9f3f, + limb2: 0x2293e4e59d1b621, limb3: 0x0 }, u384 { - limb0: 0x700267d56be168663dc30afc, - limb1: 0xcd15af08b41636b61b4c6e9b, - limb2: 0xf0565f5911cec51, + limb0: 0x9904c68d342e5112db6f0a4b, + limb1: 0xa2b00604ad20232f82f90f3, + limb2: 0x18d19a4c22833000, limb3: 0x0 }, u384 { - limb0: 0x65def53faac15896de9c844b, - limb1: 0xdf7ce703fb4ca9d921eeac43, - limb2: 0x27486bd97e3a2ec6, + limb0: 0x59ab4bf32f472badd86506d8, + limb1: 0x28f7a0cb8d396c749232a7f3, + limb2: 0x2e1aa13618c4a132, limb3: 0x0 }, u384 { - limb0: 0x7dbd4bfc930292c93ec12a72, - limb1: 0x68a0705301c3cb2e0e2a9dcf, - limb2: 0x1b496795156bdff3, + limb0: 0x24e1de6c056add526ac61c70, + limb1: 0xb3d9bebe40a01c01286153f0, + limb2: 0x2f943922bb32f6e, limb3: 0x0 }, u384 { - limb0: 0xb4f5e6e41c0a953a13bd8fbe, - limb1: 0x8dd38cfa7ae1aebb237af2c3, - limb2: 0x1672db31db8b67c6, + limb0: 0x49a086d5d2a9acf5f61cc8a0, + limb1: 0x3f1ed8e3799948fe12dd6b28, + limb2: 0x2dc18993cb7423b0, limb3: 0x0 }, u384 { - limb0: 0x33bcac0189720466a02948ae, - limb1: 0xe9503bf416b15b59df24cc8a, - limb2: 0x300aec818e42ef14, + limb0: 0x216dbb69e8ed910b23e40914, + limb1: 0xa8feaa5b95906792859594ba, + limb2: 0x1692354c28173382, limb3: 0x0 }, u384 { - limb0: 0x389b6b16cedd43cb79d0449d, - limb1: 0x4678f98e742306cae3483ffb, - limb2: 0x2231dd795f8cd1a2, + limb0: 0x1c14daba0ad0684310674358, + limb1: 0xd00e1ee894c121ada1de864f, + limb2: 0x1c50c89f3b6cf58, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xc031b3f0d00815e2d2e84e18, - limb1: 0xee289abb70b8cbdfd7fd839f, - limb2: 0xe0eac4ef3185666, + limb0: 0x6cf197ecd1507cc08daa77ab, + limb1: 0x4efd0bfb5085f03bcf1ffc8f, + limb2: 0x20e745bac75ecd34, limb3: 0x0 }, u384 { - limb0: 0x8840e2ce2584b3bf3d437d00, - limb1: 0xcf43dd2d34a9041f4c01e1db, - limb2: 0x1cd156f7c858fad2, + limb0: 0x2095ebcdd5f3ba25558793d1, + limb1: 0xf80c64e9964f617d314e7e8, + limb2: 0x4648ee764fe37b6, limb3: 0x0 }, u384 { - limb0: 0x44e551633f5da41dde8448e9, - limb1: 0xe527ad6b1f03a5976717c031, - limb2: 0x162c9b376d0c5b59, + limb0: 0x4a8e43804dfa394abb2a1b22, + limb1: 0x8dcb4999bb4a9decddc97d82, + limb2: 0x128b0321f6ca0064, limb3: 0x0 }, u384 { - limb0: 0x40e9ae2983036ba735469f65, - limb1: 0xa604053f312148d82a47e20d, - limb2: 0x29016ae7049060cd, + limb0: 0x9d7837a7d0b3a13b9b3fe877, + limb1: 0x7f8dfdac4c142d642c7cba84, + limb2: 0x2f9d011741046ce9, limb3: 0x0 }, u384 { - limb0: 0x205fffbe0fb21b42aa3860e7, - limb1: 0x329b962cb264549dae571f36, - limb2: 0x9142bb246332da8, + limb0: 0xc1556acafdd648960b1dc7f, + limb1: 0xa7702dbfd39af09b892d6142, + limb2: 0xe996cebc517840c, limb3: 0x0 }, u384 { - limb0: 0x3f9a2ff0b61099219969f8a8, - limb1: 0x78990d56be65a290544e1087, - limb2: 0x1b57238ddf306b47, + limb0: 0x421935712080a6b53105aa26, + limb1: 0xabd7fef01ffd1ef0bedb44ba, + limb2: 0x23e85299294d2508, limb3: 0x0 }, u384 { - limb0: 0x926f322a691a5c7afc5c06d, - limb1: 0x2497968efee79d0b8b95afa, - limb2: 0x124f97bac8c8b321, + limb0: 0xaed224ba4a5c2b4f53c7139b, + limb1: 0x7037dbc2183f703b12abdfd1, + limb2: 0x177b1100729f5e5a, limb3: 0x0 }, u384 { - limb0: 0x47a706993d30ba17d1884897, - limb1: 0xeb0ad0f945571ec79048ea19, - limb2: 0x30375359e2553e2d, + limb0: 0xef915215f0a41c6512568e1e, + limb1: 0xd8caaba0d21a5b1f271b2eef, + limb2: 0x9c15608c1467082, limb3: 0x0 }, u384 { - limb0: 0x85b19fc99f05fa2bf0cc82c4, - limb1: 0xda65cf86bc857a220a428574, - limb2: 0x16c7bf6bdead87e2, + limb0: 0x1a7d58759c0855b51a17a5aa, + limb1: 0xa466ed0df6db33ad36a56c74, + limb2: 0x2a2b885f6c07e8da, limb3: 0x0 }, u384 { - limb0: 0x30ff65e89f12fb1861a572fd, - limb1: 0x98b319c3fe7da744a10b6815, - limb2: 0xe9d37eff795f561, + limb0: 0x919e5919bceca41e55ebcacf, + limb1: 0x8150fef315cc365b02f3f035, + limb2: 0xaeca1f90ed732ad, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -6400,44 +6393,44 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0xf4ade02b3a3830e148787c08, - limb1: 0x598b78344bc43c2a5378c145, - limb2: 0x1b9b48ca5c9def53, + limb0: 0x91084dfab793190c846afbe1, + limb1: 0x326fd8af77605fd4d6815107, + limb2: 0x1d84130cd60f459a, limb3: 0x0 }, u384 { - limb0: 0xbe5557f2023dc60f77cfe7c3, - limb1: 0xf6d928b3ea37e36159bcaed7, - limb2: 0x67d59d57cf862e9, + limb0: 0x2b3740d0444a92d0598bff37, + limb1: 0x62247bd0e4eddb268f6fb922, + limb2: 0x855c283db8a6591, limb3: 0x0 }, u384 { - limb0: 0xe5374c6c01ab7ea321c50638, - limb1: 0x9d42b0b90961ecc2e143385a, - limb2: 0x2d4746f57ca203f, + limb0: 0xe99c5f64a2eaf0e190102913, + limb1: 0xb213eee0899d0588b07959d9, + limb2: 0x4152c5ef909ef0a, limb3: 0x0 }, u384 { - limb0: 0x3f33636953342934da0cef12, - limb1: 0x527e093900f10aa6dab6f9ec, - limb2: 0x16cc56b2c1fd6c48, + limb0: 0x40466b48a3d00c2b3e675335, + limb1: 0x5ed10e3eea5a2ee0d3c0db24, + limb2: 0x1436e1c701de827d, limb3: 0x0 }, u384 { - limb0: 0xe959ed426d9153662d2876f9, - limb1: 0x3ddd5d7a1f667df24133b6a2, - limb2: 0x2063bb7bf579637f, + limb0: 0xe81d24f11e8db68139a473d2, + limb1: 0x55fe98d10464980b3f26cf5d, + limb2: 0x2e9a360699e5bdc8, limb3: 0x0 }, u384 { - limb0: 0x253398756628a5528667a5ad, - limb1: 0x38cd3002bff45fa2fbdddb0b, - limb2: 0x10717bb6d3194817, + limb0: 0x958bed8da5a8f472131ea9cd, + limb1: 0xfecd5b57a06e16668760d9f0, + limb2: 0x11bee2881ef26587, limb3: 0x0 }, u384 { - limb0: 0x163c7f1214d1173aa7c6895, - limb1: 0xdc2822db40c0ac2eaf47f372, + limb0: 0x4d80a1cfa2fe2a01833ffbf, + limb1: 0xdc2822db40c0ac2e8d3e708b, limb2: 0x183227397098d014, limb3: 0x0 } @@ -6445,45 +6438,45 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0x3103b905893ae08100f1bf82, - limb1: 0xd1e65a509adbb4b8d54a31b9, - limb2: 0x8cda085b8e616d1, + limb0: 0xea4f03f768ba0ccad182bd31, + limb1: 0xf515eec9b0e73a42e38ed5cd, + limb2: 0x628a647d726d3ea, limb3: 0x0 }, u384 { - limb0: 0x94b3bbdeba66eedcc355e73e, - limb1: 0xaab7df7d484da89a8f538075, - limb2: 0x2012ce598f1e9618, + limb0: 0x9baa21e0f716566bb8318e90, + limb1: 0x8052e2a23b8b436443c1bc2a, + limb2: 0x97b4c300489c38f, limb3: 0x0 }, u384 { - limb0: 0x606126e29a054ae4bf8fbce1, - limb1: 0x324fd5caa7c198e069631d32, - limb2: 0x333c6361ef9ede, + limb0: 0x85ca8dbb09cbf060cd46335c, + limb1: 0x36d453f071f9a0d36babb14a, + limb2: 0x33476d87b531034, limb3: 0x0 }, u384 { - limb0: 0x30598816f7d2ea1cb497ba53, - limb1: 0x53faa5e6703261fa9b7d0b24, - limb2: 0x62fda2d3d9a5bb9, + limb0: 0x13c0aa3e3814fd0ab15b4fe, + limb1: 0x347129926fd8199af056a2c7, + limb2: 0x2139942e6472edd9, limb3: 0x0 }, u384 { - limb0: 0xcc179c7bfd87be443567cbba, - limb1: 0x2b7d05a28d381ba6d811219b, - limb2: 0xa2770b06c869391, + limb0: 0x9f0d04361d738be714ad59bf, + limb1: 0xa3080aedc4955634df72749e, + limb2: 0x2758528baf50d8ce, limb3: 0x0 }, u384 { - limb0: 0x21751e7db6b8698826291009, - limb1: 0x510623dfb54e41ce477d38d5, - limb2: 0x1ed00a6fcb13b25d, + limb0: 0xb105952365c0d39f348e0721, + limb1: 0x594b6a270852923563ebe8e9, + limb2: 0x3cb2a271586ab5c, limb3: 0x0 }, u384 { - limb0: 0x1f5e0b99a91c163cca254edd, - limb1: 0x11cfae03dfbf9015c243526e, - limb2: 0x8316d908fce7cf4, + limb0: 0x71ea9b0bba8ca25bdfde7541, + limb1: 0xb098cc154b3f313a039a8a4e, + limb2: 0x4bc4f235bfc2922, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -6491,114 +6484,114 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x4cfe98e8c46d3644da56b613, - limb1: 0x30410018829db0aa2d0e07b3, - limb2: 0x1f08ae47bd6c5fe5, + limb0: 0xaabbf432c4a986c441559573, + limb1: 0x77c10507b90d8c943c1e2659, + limb2: 0x232bc2718de3fa71, limb3: 0x0 }, u384 { - limb0: 0x9d33bbce8c175dcf88277f00, - limb1: 0x76f8c21f601fd9d80d2a35c8, - limb2: 0x1b26813f0414db79, + limb0: 0x17aed70e71ae2022ed56c0a6, + limb1: 0x6b9fa4036bea17cd130ed3dd, + limb2: 0x2ba973d29b6beaee, limb3: 0x0 }, u384 { - limb0: 0x4485122f3259b3788aafaf60, - limb1: 0xab145da67824daa54be71e51, - limb2: 0x25527bae7fcfee65, + limb0: 0xa92d1efe0d86480f7a5127fc, + limb1: 0x1c25208f79e8204a4891a637, + limb2: 0x263ab986cdf6b62a, limb3: 0x0 }, u384 { - limb0: 0x488c1df29eed9fc3a3285a10, - limb1: 0x90e756d9050ab9f33d67f5eb, - limb2: 0x2d66008c57995475, + limb0: 0xcdbdf3185158920c2955fa95, + limb1: 0x74c1bb62346667a03cc476e1, + limb2: 0x20070fabd90e817, limb3: 0x0 }, u384 { - limb0: 0x67d65a6608a0ce3c510a9151, - limb1: 0x1bbec29cc143018e70cfd37b, - limb2: 0x24efdfecb78fe818, + limb0: 0x32e505b442c280ec1aa6b557, + limb1: 0x820edaead14d9feb76a2c9fc, + limb2: 0x1551d3262dbaada2, limb3: 0x0 }, u384 { - limb0: 0xcfcc8603748d17c78baf9a44, - limb1: 0x7e70bb969e0dd6aac81cd4ed, - limb2: 0x92ccdd3feaf2a65, + limb0: 0x1ae7f5da539f0227ba79bb27, + limb1: 0xde21e3c94f35fc5c65154ebf, + limb2: 0x8554e6d9d0d9ab5, limb3: 0x0 }, u384 { - limb0: 0x34b7c9240a5955775b5b818d, - limb1: 0x69e443c96614a56126969d27, - limb2: 0x671c8cd027634b4, + limb0: 0xbc770ebf934ffa5a287fc9e6, + limb1: 0x27e63d7a6b547b869dfa34e8, + limb2: 0x7c1ade7c7d3cda7, limb3: 0x0 }, u384 { - limb0: 0x88c227a830b83e3f9919968e, - limb1: 0x6d595c4f88bf823c8ce0a8f8, - limb2: 0x13c16eb4dd165b9a, + limb0: 0xf4ad99a470b0c94cd1bee73a, + limb1: 0xdecdac8371c963607d7a5881, + limb2: 0x10eb1b2d841a549, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x930b2b109bb0a18302d53e86, - limb1: 0x75b30ef1d0931e2a7fde952b, - limb2: 0x1a68e1912ab24475, + limb0: 0xbeed0be63a2e266074883793, + limb1: 0xdf41cc5d12b5aec8aaac8169, + limb2: 0x1279f2d785747bc0, limb3: 0x0 }, u384 { - limb0: 0x55a9690ef314407f7184b873, - limb1: 0x47d758c15767a172167916cf, - limb2: 0x2fd41c99cc2a2220, + limb0: 0xd2fe65a2e54303432894abb0, + limb1: 0x80f8a7e6b2a1ca2ccb45347f, + limb2: 0x1c71e4900d9d4aae, limb3: 0x0 }, u384 { - limb0: 0x212374a7ce0fe0ae3eaf36a3, - limb1: 0x96ef815ff744caa13c295797, - limb2: 0x99b52a25cedc9a, + limb0: 0x915fa9311d63d12267d29a14, + limb1: 0xa47cfbd155ece27a430313df, + limb2: 0x99d648971f9309c, limb3: 0x0 }, u384 { - limb0: 0xc210514a70b39ed71eb8ee7b, - limb1: 0xcdd64c03eb72daa8a7c15325, - limb2: 0x1b5d2f0d71b529fd, + limb0: 0x1d1f8ec89afce40f21c9e19d, + limb1: 0x21c8e013fd6cd658858fe900, + limb2: 0x90cc5ed421c5d23, limb3: 0x0 }, u384 { - limb0: 0x9088c6c576dd9d928b104d25, - limb1: 0x74deaaae6e74a33180057ab7, - limb2: 0xe24d1f7f380b0a2, + limb0: 0xa7ed9968d72fe1f3453fa13f, + limb1: 0xf8ca77fe86489547b31644e3, + limb2: 0x1ebba6ed50190da7, limb3: 0x0 }, u384 { - limb0: 0x5c4eb7ce820dfb66598defb5, - limb1: 0x6d11fbb3462b05eda8595d20, - limb2: 0x2c3f0d3fe1f915cc, + limb0: 0x98db4d253b0e6b3e6af048bf, + limb1: 0x42b692658af15773976f6c07, + limb2: 0xe95f54dbbe71249, limb3: 0x0 }, u384 { - limb0: 0x8e73aae3f3272cd31307a6ea, - limb1: 0x8969aff20f71123be247026e, - limb2: 0x1ec422deed05d295, + limb0: 0x56fbdbc7132736e44ab114c1, + limb1: 0x463b8dd25195ad48fb2641b2, + limb2: 0x2f6e819878676941, limb3: 0x0 }, u384 { - limb0: 0xcc179c7bfd87be443567cbbd, - limb1: 0x2b7d05a28d381ba6d811219b, - limb2: 0xa2770b06c869391, + limb0: 0x9f0d04361d738be714ad59c2, + limb1: 0xa3080aedc4955634df72749e, + limb2: 0x2758528baf50d8ce, limb3: 0x0 }, u384 { - limb0: 0x21751e7db6b8698826291009, - limb1: 0x510623dfb54e41ce477d38d5, - limb2: 0x1ed00a6fcb13b25d, + limb0: 0xb105952365c0d39f348e0721, + limb1: 0x594b6a270852923563ebe8e9, + limb2: 0x3cb2a271586ab5c, limb3: 0x0 }, u384 { - limb0: 0x1f5e0b99a91c163cca254edd, - limb1: 0x11cfae03dfbf9015c243526e, - limb2: 0x8316d908fce7cf4, + limb0: 0x71ea9b0bba8ca25bdfde7541, + limb1: 0xb098cc154b3f313a039a8a4e, + limb2: 0x4bc4f235bfc2922, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -6608,9 +6601,9 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0x54abb6d594206bbd6f3c47a0, - limb1: 0xb002e15564f843adf94a7eba, - limb2: 0x7cec8532db051a2, + limb0: 0x78f58e2ca1a35e582171c8b8, + limb1: 0x1f87f47d64ca35c14bd42c2b, + limb2: 0x25f6bef16cfef245, limb3: 0x0 }, u384 { @@ -6623,15 +6616,15 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0x481edd72393054712c962f5, - limb1: 0x4819634b03fc39d4c410d824, - limb2: 0x28cb38c5c8749dc2, + limb0: 0xfcdf18685c09694e94d613f, + limb1: 0x655123c685f0d6dd46197a36, + limb2: 0x2f4372069c9075b1, limb3: 0x0 }, u384 { - limb0: 0x65416820bfc7d74e7dd1df69, - limb1: 0xc75c1c23afc2532117b9cc5c, - limb2: 0x227ec909bb33c294, + limb0: 0xd3eaf0964ca4266e20c6c299, + limb1: 0x7260388d23b706327ba8fe79, + limb2: 0x22ed836cd8b1385f, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -6639,49 +6632,49 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x25d8e654d42f44909d49f760, - limb1: 0xc7531bfd66776be37f29926c, - limb2: 0x20dc125cf394a824, + limb0: 0x6fda492e39c69c050dd643db, + limb1: 0x75a4368fb186c8b073b755b2, + limb2: 0x1a021a574727c56d, limb3: 0x0 }, u384 { - limb0: 0xaadc20cc2412788507fd04ef, - limb1: 0xf73f0fa5f8c4e111d44043b6, - limb2: 0x341b3f670a8b2d, + limb0: 0x52ef7d72cca833d76de8a6a4, + limb1: 0x837ae2df3c98a72f6efea7aa, + limb2: 0x65c36a1d0770dca, limb3: 0x0 }, u384 { - limb0: 0xef3eee42d4d2319d46bad6c8, - limb1: 0xb62a48a1d77075f814d5fc6e, - limb2: 0x21ccd45cbf54740d, + limb0: 0x166bd2690d46f794eb86629a, + limb1: 0x3c794786677ed1f19d151f32, + limb2: 0x1675b7e406c670a8, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x3ca2346af277f7a787622e51, - limb1: 0x67ab9e7408f1fcc31d2fb349, - limb2: 0x19990d6b96fa98f3, + limb0: 0x5e863f791900ab910aee292f, + limb1: 0xbf52dfe68ecfd3dca349997f, + limb2: 0x2d01b92e134e20c0, limb3: 0x0 }, u384 { - limb0: 0x5ee0a347c7166dbdc87ba3ad, - limb1: 0xe573c8fe0c4448a8182a8ff2, - limb2: 0x6b3be376f38076a, + limb0: 0xaadd3ca86dab5b1cb15a4d3d, + limb1: 0xe6801e3a682261dc43f8264a, + limb2: 0x7ffed60c7b068ca, limb3: 0x0 }, u384 { limb0: 0x3, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x481edd72393054712c962f5, - limb1: 0x4819634b03fc39d4c410d824, - limb2: 0x28cb38c5c8749dc2, + limb0: 0xfcdf18685c09694e94d613f, + limb1: 0x655123c685f0d6dd46197a36, + limb2: 0x2f4372069c9075b1, limb3: 0x0 }, u384 { - limb0: 0x65416820bfc7d74e7dd1df69, - limb1: 0xc75c1c23afc2532117b9cc5c, - limb2: 0x227ec909bb33c294, + limb0: 0xd3eaf0964ca4266e20c6c299, + limb1: 0x7260388d23b706327ba8fe79, + limb2: 0x22ed836cd8b1385f, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -6691,12 +6684,37 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0x9e6f28a802c0d516bc4f0676, - limb1: 0xd73b841590859507fcb51d7a, - limb2: 0x4a3deaca5a365c8, + limb0: 0x95b8b40f97cfcfbb2890ea4e, + limb1: 0x902486163c1f4d4a553c8184, + limb2: 0x56c86e908a297ee, limb3: 0x0 }, - g_rhs_sqrt: array![], + g_rhs_sqrt: array![ + u384 { + limb0: 0x2339cdb2a606576189f8704a, + limb1: 0x92c3a61d1a23c35834ddf43e, + limb2: 0xee27475c322b85b, + limb3: 0x0 + }, + u384 { + limb0: 0x42f78f0846ff7fcd2f6f1afc, + limb1: 0x7b4e483a94f477d70e072d45, + limb2: 0x138968cb80482df4, + limb3: 0x0 + }, + u384 { + limb0: 0xdcc92f5045358e0852d516a6, + limb1: 0x80de7bb2462fc4f4fc3d07b9, + limb2: 0x16f8c67802cd9d73, + limb3: 0x0 + }, + u384 { + limb0: 0xe3038537029182dec3a13c69, + limb1: 0x86d101c85dc9e2c20087576b, + limb2: 0x3d6fb17c853d845, + limb3: 0x0 + } + ], }; let res = msm_g1( points, scalars, scalars_digits_decompositions, msm_hint, derive_point_from_x_hint, 0 @@ -6704,15 +6722,15 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0x4664b26c05551329590d0705, - limb1: 0x6ebc4eba039bfc67e0bc3e9f, - limb2: 0x2446f468f115f202, + limb0: 0x1307d38ec05b3196967371c2, + limb1: 0x484a57394be956e37b9d9e65, + limb2: 0x29de92c5b4e70dbe, limb3: 0x0 }, y: u384 { - limb0: 0x2b3feb533431f0e50691a3cf, - limb1: 0x595d134368578e18f2d248f9, - limb2: 0x289ba1d42a84e245, + limb0: 0x3fa70d330497cbf1e7e00d2e, + limb1: 0x88f097cb535d11ff7ce9a577, + limb2: 0x20e52ac3763a3bef, limb3: 0x0 } } @@ -6725,99 +6743,99 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0x1735ac005cc43fc249fe6884, - limb1: 0x318a3d57d1596af1e515613, - limb2: 0x1739879a83c90dd3, + limb0: 0x5c724369afbc772d02aed58e, + limb1: 0x2cd3bc838c66439a3d6160b, + limb2: 0x72f26b55fb56be1, limb3: 0x0 }, y: u384 { - limb0: 0xedd6aac103c6a3f3eea76480, - limb1: 0x929d9ae7607a9fe3aac9d1fe, - limb2: 0x1bb9053ec5633d4f, + limb0: 0x772ca79c580e121ca148fe75, + limb1: 0xce2f55e418ca01b3d6d1014b, + limb2: 0x2884b1dc4e84e30f, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x641c29242a82f8d7c1e7f4aa, - limb1: 0x5baafa43c0973b3871d9bced, - limb2: 0x147b8ac3e879c68, + limb0: 0x536c985db33c69f7c242e07a, + limb1: 0xfc531bccffafcf1e59d91fb9, + limb2: 0x2585e4f8a31664cb, limb3: 0x0 }, y: u384 { - limb0: 0xedcc7ab8af577fad2147c070, - limb1: 0x61a22d4bc3b4d8207dbce986, - limb2: 0x1e20faed6c5c643f, + limb0: 0x57fa42444057cf0c1d62ae3c, + limb1: 0x4f48d341183118d68ea41313, + limb2: 0x1d2d2799db056ed1, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x11132560466fd1e5089982d0, - limb1: 0x1b423bed85f87147c4bad53a, - limb2: 0x156c67780c8895f2, + limb0: 0x236ca9312dad3661a37f2d6f, + limb1: 0x98424c01caad7592315715d1, + limb2: 0x795b9fd941b23c4, limb3: 0x0 }, y: u384 { - limb0: 0x4fffaf4f86e4cfafce9be9d8, - limb1: 0xb6951d8b85f5c505fe7444a9, - limb2: 0x212edf2c6287b954, + limb0: 0xc7ab5834609a54b8993ffd79, + limb1: 0xe81cd490528b814ca632aace, + limb2: 0x2d9ff53d3009e6f7, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xd8a8e830947303c655db852a, - limb1: 0x7cbd09a3cb1d8bca72198a3a, - limb2: 0x11b87a738d768c75, + limb0: 0x163df40cafbf585ca5b2ab44, + limb1: 0xb4752e4666c88dbbe23783a0, + limb2: 0x1a801462ac9cb657, limb3: 0x0 }, y: u384 { - limb0: 0xf61c46311d06f2df6ba9f1f2, - limb1: 0xd8b7a216bfc113cb3f9c960d, - limb2: 0x2aaca3703c074d3b, + limb0: 0xac9b557d7ca8625d957263c6, + limb1: 0xdc6f75fa8339a78b998ae54a, + limb2: 0x28683293b6494d9f, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x8de8ec64f3e6b2a1bc8a688c, - limb1: 0x260b2feec95bd32df2bb4087, - limb2: 0x4b352f68ca23625, + limb0: 0x5c4f5dca0c973b7f70bfff9, + limb1: 0x188c2afab11eef5d48ecda3c, + limb2: 0xc2fed35d36c49f1, limb3: 0x0 }, y: u384 { - limb0: 0xacffe7f6869238a12dfe6797, - limb1: 0x3eca7ee38bebc78ebf6aa703, - limb2: 0x2427c902198c9ee7, + limb0: 0x9d7244ea10697ca42e2e066b, + limb1: 0xfe18a519c7d68770dc48dbf9, + limb2: 0x149bb528db998529, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x35837ca07de4b8dfac99b877, - limb1: 0xd66c102821c2bab5482d0bfd, - limb2: 0x28f80b006d42542, + limb0: 0xffc057151b06c496e6fdd440, + limb1: 0x5a01bae0c7441f08c7af1cf9, + limb2: 0x274e0e02529e6d26, limb3: 0x0 }, y: u384 { - limb0: 0xf88c21e2bef8826a58861594, - limb1: 0x51fbb430072ae99164f63d37, - limb2: 0xa4e905b80cb25b8, + limb0: 0x65ceb8977413bc9798681ecb, + limb1: 0x19ffb287b45234f0c28fd1a7, + limb2: 0x28dbbd2f9267be76, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x8eef88faee033dec071b6c42, - limb1: 0x2e0f155b0a4c3b0e0f22e4b5, - limb2: 0xfbb28046236ebd, + limb0: 0xcfcdbfdb2056ff1a64bf1d47, + limb1: 0xf26fe2dae9f693d9b4aab2e6, + limb2: 0x12d66ad4802d841e, limb3: 0x0 }, y: u384 { - limb0: 0xed036cdd2084e6ed25a31a01, - limb1: 0x52c427f78a27bf014f7059f0, - limb2: 0x1cf4a578689dc213, + limb0: 0xe6e34ebfa2e18dce86cadbdc, + limb1: 0x7ce096238b3d4b1b8fba6a55, + limb2: 0x2e0a660b1549800c, limb3: 0x0 } }, @@ -6825,23 +6843,25 @@ mod msm_tests { .span(); let scalars = array![ u256 { - low: 0x5ac31b309ff6cb194253d1d0d7585629, high: 0x1831eb47e637bc43a6b5e308ee25e0ea + low: 0xd3fbf47a7e5b1e7f9ca5499d004ae545, high: 0x2ebce25e3e70f16a55485822de1b372a + }, + u256 { + low: 0x101fbcccded733e8b421eaeb534097ca, high: 0xe30658b9148624feac1c14f30e9c5cc }, u256 { - low: 0x19d3f072ccdd00bb559132d56080782d, high: 0x1f478bd41c3555f9832eea8942ff8de9 + low: 0x247a8333f7b0b7d2cda8056c3d15eef7, high: 0x5d67b7072ae22448b0163c1cd9d2b7d }, u256 { - low: 0x27585133c0466bb69ae165c8181b465d, high: 0x25c16c9ef839a34b2995b8642aca355b + low: 0xe005b86051ef1922fe43c49e149818d1, high: 0x1f507980eece328bff7b118e820865d6 }, u256 { - low: 0x88635ad020d593e2cba75aec6cc2ed20, high: 0x8ea3743ee36721ff9aaf87425c8cca1 + low: 0x4a84eb038d1fd9b74d2b9deb1beb3711, high: 0x154bc8ce8c25166a1ff39849b4e1357d }, u256 { - low: 0x9684167c458a6b2b6ea44586396084c0, high: 0x2ca1b3fd0fe76c80eb432288f9947f0f + low: 0x3405095c8a5006c1ec188efbd080e66e, high: 0x2305d1699a6a5f92cca74147f6be1f72 }, - u256 { low: 0x47bf2beaf0d0fbb8575be4429494d041, high: 0xa62d830a417e4cbaf5a99441c8380 }, u256 { - low: 0xacb34896354d995e8e1a3d1fc24236e7, high: 0x346cda9762ede9fa39d58d15be6d76a + low: 0x1775336d71eacd0549a3e80e966e1277, high: 0x144a7edf6288e1a5cc45782198a6416d }, ] .span(); @@ -6849,272 +6869,260 @@ mod msm_tests { array![ ( array![ - 0x0, - 0x1, - 0x0, - 0x0, - 0x1, 0x1, -0x1, - 0x0, -0x1, - 0x0, -0x1, -0x1, - 0x1, - 0x0, 0x0, 0x0, -0x1, 0x0, 0x1, - 0x0, - -0x1, - 0x0, - 0x0, - -0x1, - -0x1, + 0x1, + 0x1, -0x1, 0x1, 0x1, 0x1, - -0x1, - 0x0, - 0x0, 0x0, + 0x1, -0x1, - 0x0, + 0x1, -0x1, -0x1, 0x0, - 0x0, + -0x1, 0x1, + 0x0, + -0x1, 0x1, 0x1, 0x1, -0x1, - -0x1, 0x0, - 0x0, - 0x1, - 0x1, -0x1, - 0x0, + -0x1, 0x1, 0x0, + 0x1, + -0x1, + -0x1, 0x0, -0x1, 0x0, 0x0, 0x0, + -0x1, 0x1, + -0x1, 0x1, 0x0, 0x1, - -0x1, + 0x0, 0x0, 0x1, 0x0, + 0x1, 0x0, - -0x1, - -0x1, + 0x0, + 0x0, + 0x1, 0x1, + 0x0, -0x1, -0x1, 0x0, 0x0, + 0x0, 0x1, + -0x1, 0x0, 0x0, -0x1, 0x1, 0x1, 0x1, + 0x1, + -0x1, + 0x1, + 0x0, + -0x1, + 0x0, + -0x1, + -0x1, ] .span(), array![ -0x1, - -0x1, - 0x0, - 0x0, - 0x0, - 0x0, 0x1, 0x1, - 0x0, 0x1, 0x0, + 0x0, -0x1, - 0x1, - 0x1, -0x1, + 0x0, 0x1, + 0x0, -0x1, 0x1, 0x0, 0x0, - 0x0, + -0x1, 0x1, + 0x0, 0x1, -0x1, 0x0, + -0x1, + -0x1, + -0x1, + -0x1, 0x1, 0x0, - 0x0, - 0x0, -0x1, 0x1, 0x0, -0x1, 0x1, 0x0, - 0x1, -0x1, - 0x1, + 0x0, 0x0, 0x1, - 0x1, + 0x0, -0x1, - 0x1, - 0x1, - 0x1, + 0x0, -0x1, 0x0, + 0x0, 0x1, 0x0, -0x1, - 0x0, - 0x1, - 0x1, + -0x1, 0x1, + -0x1, 0x1, -0x1, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, -0x1, -0x1, 0x1, - 0x1, -0x1, 0x1, 0x0, - -0x1, - 0x0, - 0x0, 0x1, -0x1, 0x0, 0x0, -0x1, - 0x1, 0x0, 0x1, + 0x1, 0x0, 0x1, + 0x1, + -0x1, 0x0, 0x0, - -0x1, + 0x1, + 0x1, + 0x1, -0x1, ] .span() ), ( array![ - -0x1, - 0x1, - 0x0, - 0x0, - -0x1, - 0x0, 0x1, 0x0, -0x1, - 0x1, - 0x1, - -0x1, -0x1, - 0x0, - 0x1, -0x1, - 0x1, -0x1, 0x1, -0x1, -0x1, -0x1, -0x1, - 0x0, 0x1, + 0x0, -0x1, - 0x1, + 0x0, 0x1, -0x1, 0x0, 0x1, + 0x0, + 0x0, 0x1, -0x1, 0x1, - -0x1, - 0x1, - 0x1, - -0x1, 0x0, 0x1, -0x1, -0x1, -0x1, -0x1, + 0x0, + 0x1, -0x1, 0x0, -0x1, - 0x1, -0x1, -0x1, -0x1, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, + -0x1, 0x1, -0x1, 0x0, - -0x1, - 0x1, 0x1, 0x1, - 0x0, - 0x0, - -0x1, - 0x1, - 0x0, -0x1, 0x0, 0x0, -0x1, 0x1, + -0x1, 0x1, + -0x1, + -0x1, 0x1, + -0x1, + -0x1, 0x0, -0x1, -0x1, - ] - .span(), - array![ + 0x0, -0x1, + 0x1, 0x0, 0x1, 0x0, 0x1, -0x1, - -0x1, - -0x1, 0x1, -0x1, -0x1, 0x0, + -0x1, + 0x0, + 0x1, + 0x1, 0x1, 0x0, + -0x1, + 0x1, + ] + .span(), + array![ + 0x1, + 0x1, 0x0, -0x1, -0x1, @@ -7122,288 +7130,300 @@ mod msm_tests { 0x1, 0x1, 0x1, - 0x0, 0x1, + -0x1, + 0x0, 0x1, 0x0, 0x0, + 0x1, 0x0, -0x1, - -0x1, - -0x1, - 0x0, 0x1, 0x0, 0x1, - -0x1, + 0x1, -0x1, 0x0, -0x1, 0x0, + 0x0, 0x1, 0x0, -0x1, + 0x1, -0x1, + 0x1, 0x0, + -0x1, + -0x1, + 0x1, 0x1, 0x0, + -0x1, + 0x1, + 0x1, 0x0, 0x0, + 0x1, 0x0, 0x1, 0x1, - -0x1, 0x1, -0x1, - 0x0, - -0x1, -0x1, 0x0, -0x1, + -0x1, 0x1, - 0x0, - 0x1, - 0x0, - 0x0, - 0x0, 0x1, -0x1, 0x1, 0x1, 0x0, + 0x0, -0x1, 0x1, + -0x1, + -0x1, + -0x1, 0x1, 0x0, - 0x1, + 0x0, 0x1, -0x1, - 0x1, + -0x1, + 0x0, + 0x0, 0x0, -0x1, + 0x1, + 0x0, + 0x1, ] .span() ), ( array![ - 0x0, - -0x1, 0x1, + 0x1, + -0x1, + -0x1, + 0x0, 0x0, 0x1, 0x0, -0x1, -0x1, + 0x1, + 0x1, 0x0, + 0x1, + 0x1, -0x1, - -0x1, + 0x1, + 0x0, -0x1, -0x1, -0x1, 0x1, -0x1, - -0x1, - 0x0, 0x1, - 0x0, - 0x0, - 0x0, -0x1, + 0x1, 0x0, - -0x1, 0x0, -0x1, 0x0, 0x0, 0x0, - 0x0, - 0x1, 0x1, -0x1, 0x0, 0x0, - 0x1, + -0x1, 0x1, 0x0, 0x1, 0x1, 0x1, -0x1, - 0x1, - 0x1, 0x0, 0x1, 0x1, - 0x1, - 0x1, - 0x1, - 0x0, - 0x1, + -0x1, + -0x1, + -0x1, + -0x1, + -0x1, -0x1, 0x0, - 0x1, + 0x0, -0x1, 0x1, - 0x1, - 0x1, + -0x1, 0x1, -0x1, + 0x0, -0x1, + 0x0, 0x1, 0x1, - 0x0, 0x1, + -0x1, + -0x1, 0x0, + -0x1, 0x0, 0x0, - 0x1, -0x1, + 0x1, + 0x0, -0x1, + 0x1, 0x0, 0x0, - 0x1, - -0x1, - -0x1, 0x0, -0x1, ] .span(), array![ + 0x0, -0x1, -0x1, 0x1, 0x0, + -0x1, + 0x1, + 0x0, 0x1, 0x1, -0x1, 0x0, + 0x0, -0x1, - -0x1, + 0x1, -0x1, -0x1, 0x0, - -0x1, - 0x1, 0x1, -0x1, 0x0, 0x0, -0x1, + 0x0, -0x1, 0x0, -0x1, 0x0, + 0x1, 0x0, 0x0, 0x1, - 0x1, - 0x1, - 0x1, - -0x1, - -0x1, - -0x1, 0x0, -0x1, -0x1, + 0x1, 0x0, 0x0, 0x1, - 0x1, + -0x1, + 0x0, 0x0, 0x1, - 0x1, + 0x0, 0x0, 0x1, + 0x0, 0x1, + 0x0, -0x1, 0x1, 0x0, 0x0, - 0x1, - -0x1, 0x0, -0x1, - -0x1, 0x1, - 0x0, - 0x0, 0x1, -0x1, - -0x1, - -0x1, 0x0, - -0x1, - -0x1, 0x1, 0x0, + -0x1, + 0x1, + 0x1, + 0x1, + -0x1, 0x0, 0x0, 0x0, 0x0, 0x1, -0x1, - 0x1, + -0x1, + -0x1, + -0x1, -0x1, 0x1, - 0x1, - 0x0, - 0x0, -0x1, ] .span() ), ( array![ - 0x0, - -0x1, 0x0, 0x0, 0x1, + -0x1, 0x0, 0x1, -0x1, - -0x1, - 0x1, 0x0, - -0x1, - -0x1, + 0x0, + 0x0, + 0x1, 0x0, -0x1, -0x1, - 0x0, 0x1, 0x1, 0x0, - 0x0, 0x1, - -0x1, 0x1, + 0x0, 0x1, + -0x1, + -0x1, + 0x0, 0x0, 0x0, - 0x1, 0x0, 0x0, - 0x1, - 0x1, -0x1, -0x1, - 0x1, -0x1, 0x0, 0x0, 0x0, + -0x1, + 0x0, 0x1, 0x0, + 0x0, + 0x0, + -0x1, 0x1, 0x1, 0x0, - -0x1, 0x1, 0x1, + -0x1, + 0x0, 0x1, + 0x0, -0x1, 0x0, + 0x1, -0x1, -0x1, 0x0, @@ -7413,129 +7433,133 @@ mod msm_tests { 0x1, -0x1, 0x0, - -0x1, - -0x1, - 0x0, 0x1, - 0x0, 0x1, - 0x0, 0x1, + 0x0, + 0x0, + 0x0, -0x1, + 0x1, -0x1, 0x0, + 0x0, + 0x1, -0x1, -0x1, 0x1, 0x0, 0x0, - -0x1, - 0x0, 0x0, -0x1, -0x1, - 0x1, ] .span(), array![ - -0x1, - 0x0, - 0x1, - 0x0, - 0x1, - -0x1, 0x0, - -0x1, - 0x1, 0x1, -0x1, -0x1, 0x0, - 0x0, -0x1, 0x0, - 0x1, - -0x1, - 0x1, - -0x1, -0x1, 0x0, -0x1, + -0x1, 0x1, 0x1, - 0x0, -0x1, 0x1, - -0x1, + 0x0, 0x1, -0x1, - -0x1, - -0x1, 0x1, - -0x1, 0x1, 0x0, -0x1, - 0x1, -0x1, - 0x1, 0x0, 0x0, - 0x1, - 0x1, -0x1, - 0x1, -0x1, 0x0, 0x0, -0x1, - -0x1, 0x0, 0x1, - 0x1, + 0x0, + 0x0, 0x1, -0x1, + 0x0, 0x1, - 0x1, - 0x1, - 0x0, 0x0, -0x1, - -0x1, 0x1, 0x0, + 0x1, 0x0, 0x0, 0x0, + -0x1, + 0x1, 0x0, 0x0, - 0x0, 0x1, + 0x1, + 0x1, + -0x1, -0x1, + -0x1, + 0x1, + 0x1, + -0x1, + -0x1, + 0x1, + 0x1, + -0x1, + -0x1, + 0x1, 0x1, -0x1, + -0x1, + -0x1, + 0x1, + 0x0, + 0x1, 0x0, + -0x1, + 0x1, 0x1, + -0x1, 0x1, + 0x0, + -0x1, ] .span() ), ( array![ -0x1, - 0x1, - 0x1, - 0x1, - 0x1, -0x1, 0x0, -0x1, 0x0, - 0x0, + -0x1, 0x1, + 0x0, + 0x0, -0x1, + 0x1, -0x1, + 0x1, + 0x1, + 0x1, + 0x0, 0x0, + -0x1, + 0x1, 0x0, 0x1, 0x1, @@ -7543,478 +7567,478 @@ mod msm_tests { -0x1, 0x1, 0x0, + -0x1, + -0x1, + 0x1, + 0x0, 0x1, 0x1, + 0x0, + 0x0, -0x1, 0x1, 0x0, + 0x0, -0x1, 0x0, 0x0, - 0x1, - 0x1, 0x0, 0x0, 0x0, 0x1, - -0x1, 0x0, 0x0, 0x0, - -0x1, 0x1, - -0x1, - -0x1, - -0x1, 0x1, - 0x0, 0x1, 0x0, + -0x1, 0x0, 0x1, 0x0, - -0x1, 0x0, - -0x1, 0x0, 0x1, 0x0, + -0x1, 0x0, 0x1, 0x1, -0x1, -0x1, 0x0, - 0x1, - 0x0, - 0x1, -0x1, -0x1, - 0x1, - 0x0, - 0x1, + -0x1, 0x1, 0x1, + -0x1, 0x1, 0x0, - 0x1, - -0x1, -0x1, 0x0, - -0x1, + 0x0, + 0x0, + 0x1, 0x1, ] .span(), array![ - 0x0, - -0x1, - -0x1, -0x1, 0x1, 0x0, + 0x0, + -0x1, -0x1, 0x0, 0x1, + 0x1, + 0x1, + 0x0, 0x0, 0x0, - 0x1, 0x0, - -0x1, - -0x1, - -0x1, - -0x1, - 0x1, - -0x1, - -0x1, 0x0, -0x1, - -0x1, - -0x1, + 0x0, 0x1, -0x1, + 0x1, 0x0, 0x0, - -0x1, 0x1, - -0x1, 0x0, - -0x1, + 0x1, -0x1, 0x0, + 0x1, + 0x0, 0x0, 0x0, - 0x1, + -0x1, -0x1, 0x1, 0x0, 0x1, + -0x1, + 0x0, 0x0, 0x1, - -0x1, 0x1, -0x1, - -0x1, 0x0, 0x0, 0x1, + 0x1, + 0x1, -0x1, 0x1, + 0x1, + 0x0, + 0x0, + 0x0, -0x1, 0x0, 0x1, - 0x1, -0x1, 0x0, -0x1, -0x1, - 0x1, + -0x1, -0x1, 0x1, + 0x0, + 0x1, 0x1, 0x1, 0x1, 0x0, - 0x0, + 0x1, -0x1, + 0x1, 0x0, - -0x1, - -0x1, 0x1, -0x1, 0x1, - 0x0, 0x1, 0x1, -0x1, + -0x1, ] .span() ), ( array![ - 0x0, -0x1, - 0x1, -0x1, -0x1, - 0x1, - -0x1, - 0x1, - 0x0, -0x1, -0x1, + 0x1, -0x1, -0x1, -0x1, -0x1, - 0x1, -0x1, 0x1, 0x1, -0x1, - -0x1, 0x0, - 0x0, - 0x0, - 0x1, -0x1, + 0x1, -0x1, + 0x1, 0x0, + 0x1, 0x0, 0x1, -0x1, + -0x1, 0x0, -0x1, 0x0, - 0x1, -0x1, - 0x1, + 0x0, -0x1, + 0x0, 0x1, -0x1, 0x1, - 0x0, 0x1, -0x1, -0x1, - -0x1, - -0x1, - 0x0, - -0x1, 0x1, 0x0, - -0x1, + 0x0, 0x0, 0x0, 0x1, 0x1, 0x0, + 0x1, 0x0, + 0x1, 0x0, 0x1, 0x0, + 0x0, + 0x0, + 0x1, + 0x1, + 0x1, -0x1, -0x1, + -0x1, + 0x1, + 0x0, 0x0, + 0x0, + 0x1, + -0x1, 0x1, 0x1, + -0x1, + 0x1, 0x0, -0x1, 0x0, 0x0, -0x1, - -0x1, 0x0, -0x1, -0x1, - -0x1, - 0x1, - 0x1, - 0x0, - 0x1, 0x1, + -0x1, ] .span(), array![ -0x1, - 0x0, -0x1, 0x0, + 0x0, -0x1, 0x1, -0x1, 0x0, - 0x1, - 0x0, - 0x0, -0x1, - 0x1, 0x0, 0x0, 0x1, - 0x0, - -0x1, - -0x1, -0x1, - 0x1, 0x0, + -0x1, 0x1, 0x1, 0x1, -0x1, - 0x1, - 0x0, - -0x1, -0x1, 0x1, -0x1, - -0x1, - -0x1, + 0x0, 0x1, + 0x0, -0x1, + 0x1, 0x0, + 0x1, 0x0, 0x0, 0x1, - 0x1, - 0x1, -0x1, + -0x1, + -0x1, + -0x1, + 0x1, 0x1, 0x0, -0x1, + -0x1, 0x0, 0x0, -0x1, 0x1, - 0x1, + 0x0, -0x1, 0x0, + 0x0, 0x1, + 0x0, + 0x0, + -0x1, -0x1, - 0x1, -0x1, 0x1, 0x1, + -0x1, 0x1, + -0x1, 0x0, - 0x1, -0x1, 0x1, - 0x1, 0x0, -0x1, 0x0, -0x1, + -0x1, + 0x1, 0x1, 0x1, -0x1, -0x1, + 0x1, + -0x1, + 0x1, + -0x1, + 0x0, + 0x0, -0x1, ] .span() ), ( array![ - 0x0, - -0x1, - 0x0, - -0x1, - -0x1, - 0x0, - -0x1, -0x1, 0x1, 0x1, + 0x0, 0x1, - -0x1, - -0x1, 0x0, 0x1, 0x1, + 0x1, 0x0, 0x0, -0x1, - 0x0, - 0x1, -0x1, + 0x0, 0x1, 0x0, + 0x1, 0x0, - -0x1, 0x1, 0x1, - -0x1, 0x0, -0x1, + -0x1, + 0x1, 0x0, -0x1, + 0x0, + 0x0, 0x1, 0x1, - -0x1, - -0x1, 0x0, - -0x1, + 0x0, 0x0, -0x1, -0x1, 0x1, + -0x1, + -0x1, + 0x1, + 0x1, 0x1, -0x1, 0x1, 0x0, -0x1, + 0x1, + 0x0, + 0x0, -0x1, 0x1, + -0x1, 0x1, 0x0, 0x0, -0x1, - 0x1, 0x0, 0x1, -0x1, + 0x0, + -0x1, 0x1, - 0x1, - 0x1, + 0x0, -0x1, -0x1, -0x1, 0x0, - 0x1, - 0x1, - -0x1, - 0x1, - -0x1, 0x0, - 0x1, -0x1, -0x1, 0x1, 0x1, 0x0, + 0x1, + 0x1, + 0x1, 0x0, -0x1, - 0x1, + 0x0, -0x1, -0x1, ] .span(), array![ - 0x1, - 0x1, - 0x1, -0x1, + 0x0, -0x1, - 0x1, 0x0, - 0x1, - 0x1, + 0x0, + 0x0, + 0x0, + 0x0, -0x1, -0x1, -0x1, 0x0, - 0x0, - 0x0, - 0x1, + -0x1, 0x1, -0x1, + -0x1, 0x1, 0x0, - -0x1, + 0x0, -0x1, 0x0, 0x0, 0x0, -0x1, -0x1, + -0x1, 0x1, - 0x0, - 0x1, - 0x0, -0x1, -0x1, 0x0, 0x0, 0x0, - 0x0, + 0x1, + 0x1, -0x1, 0x0, 0x0, - -0x1, 0x0, -0x1, - 0x0, + 0x1, + -0x1, + -0x1, -0x1, 0x1, + -0x1, 0x0, 0x0, + -0x1, 0x0, - 0x0, - 0x1, 0x1, 0x1, + -0x1, + -0x1, + 0x0, 0x0, -0x1, + -0x1, 0x1, 0x1, - 0x0, - 0x1, 0x1, + -0x1, + 0x0, + 0x0, 0x0, - 0x1, -0x1, + 0x1, -0x1, + 0x1, 0x0, - -0x1, 0x0, -0x1, -0x1, 0x0, 0x0, - -0x1, 0x1, - -0x1, + 0x1, 0x0, - -0x1, + 0x1, -0x1, -0x1, ] @@ -8026,93 +8050,93 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0xb394f71b80bd8dbcc6817e1d, - limb1: 0xe3687b7fb2a1289534183cc2, - limb2: 0x2f48818c6c8b0af, + limb0: 0x571bedcfaca02ad4f2edd2c4, + limb1: 0x20ebdb25c234a8d3a6656d7b, + limb2: 0x1ad6ae9ba495991, limb3: 0x0 }, y: u384 { - limb0: 0xa17a2553145bb1f8a3ba0966, - limb1: 0x79e7bc1fc947e9f6a0e254d, - limb2: 0x2a1937c98f8e2483, + limb0: 0x3b3ec4092e03e0585a3ff919, + limb1: 0x2e7ab176546294e39f44f81, + limb2: 0x2b376b4c7fa60d60, limb3: 0x0 } }, Q_high: G1Point { x: u384 { - limb0: 0xdc73f52558bc5346733c0a89, - limb1: 0x8c24a17a744d4b35867a980a, - limb2: 0x29dd1c6a0d56ddc2, + limb0: 0x3f89479b17dc0b775508e890, + limb1: 0x604fe0ec7a6a133ba17bb622, + limb2: 0x1afd16c46a47f6ef, limb3: 0x0 }, y: u384 { - limb0: 0xe9cf6a35d877b2bcc83ec1a8, - limb1: 0x7ebd865c4501973fb51a8dc6, - limb2: 0x1003c3986d2673c6, + limb0: 0xbaba95f17116bd682c10df3, + limb1: 0x31a3f1ceda59d16fe57c4c89, + limb2: 0x2c34a5b9513d6d96, limb3: 0x0 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0x29db875b46aa769e9dd61a93, - limb1: 0xbb3a5c784e86d77c95653879, - limb2: 0xd9de0697c4abd18, + limb0: 0xe79d04f852a48ab8250a33e0, + limb1: 0xf7473491bfcdd4332623d847, + limb2: 0x22f3060d8770674c, limb3: 0x0 }, y: u384 { - limb0: 0xdb32f6db5d4264a65fbdd886, - limb1: 0x261568427f16e5638e48d4d2, - limb2: 0xb9c256cf33ed4a8, + limb0: 0x494485b9f61fdb53454a09d8, + limb1: 0xcf9fa2a9a1512c488dc8f297, + limb2: 0x1ac6dc9cfa96a60b, limb3: 0x0 } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0x6f628bb8aa88027bb66f368f, - limb1: 0x7d356c195e1cf71f81779c03, - limb2: 0x4efab82b13f963c, + limb0: 0x9decccaa0952d9818f4259f, + limb1: 0x260ae4c69e6d076fba810eca, + limb2: 0x1041db0365ada0bd, limb3: 0x0 }, u384 { - limb0: 0xedc6d2f61ca64697c5fe3ff4, - limb1: 0xa1adcd21ccee8de10e59d498, - limb2: 0xb53bc215672b3a0, + limb0: 0xe144fa357a7ddd7cf4bd9982, + limb1: 0x404711631c35707c9429583e, + limb2: 0x2b1a547e2d64fea6, limb3: 0x0 }, u384 { - limb0: 0xf5781384cbba8976571b8a0f, - limb1: 0xca5f3a0f8ae3d08741627d3b, - limb2: 0x1d3a55c5c669f50c, + limb0: 0xe3f2490ec6536a6ce973874d, + limb1: 0xc5cdcfba722d5a2078687c95, + limb2: 0x2e6ce76383294131, limb3: 0x0 }, u384 { - limb0: 0x98d80d57ec0709b8368b9c8b, - limb1: 0xce88474aab48c5c8312739db, - limb2: 0x2e3b574b0a0da4da, + limb0: 0xd7af0b2d6be68d6517ff7c1c, + limb1: 0xe94f21ad4a7509b595aa34de, + limb2: 0x1ca0b450dcc2871b, limb3: 0x0 }, u384 { - limb0: 0x53ffccd96c06b0400447790e, - limb1: 0x62338177ad0b4a5d971f32fa, - limb2: 0xbe9506c33621c75, + limb0: 0xf79b164f545f79cf3edf8a9c, + limb1: 0x4ddeb412781d634047b0876f, + limb2: 0x292bcd6663e5dc21, limb3: 0x0 }, u384 { - limb0: 0xe9894ea2c62a13bb6c0a039, - limb1: 0x32b9d23dbbfa831f2e609622, - limb2: 0x1c7ca05364b06fc6, + limb0: 0x3d67d5ae0fd438b6e4261488, + limb1: 0x4e7aa64205222ecff5a662d4, + limb2: 0x162756f19b4589c2, limb3: 0x0 }, u384 { - limb0: 0x3079343b4752daab1694955d, - limb1: 0x26a61d92495b54937e6453f, - limb2: 0x291fdfbe4ff9e086, + limb0: 0x7bd10c765812fb99f52983a6, + limb1: 0x30f1a736bcbe20fb297a2acd, + limb2: 0x28cc5d493d4e6ef8, limb3: 0x0 }, u384 { - limb0: 0xd10bdea76b39206c0167a4c6, - limb1: 0xb85045b68181585d970b79a4, + limb0: 0x5fb4b9d3f284f9a0e4030be3, + limb1: 0xb85045b68181585cbd1f10e7, limb2: 0x30644e72e131a029, limb3: 0x0 } @@ -8120,51 +8144,51 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0x322b5e0a9bd86c9693b953b4, - limb1: 0xb6575d93488abc2f8aa7d7fd, - limb2: 0xe6e951bba532f4b, + limb0: 0xce258568c574f9e9c118b06c, + limb1: 0x7fd11fc4355bbbc244b4b8cb, + limb2: 0x2fbe97404c7a4b3f, limb3: 0x0 }, u384 { - limb0: 0x66ca7b3c458fba3de6c5be5b, - limb1: 0x4b84324ea69a427a6754952a, - limb2: 0x18a6506b39adac3b, + limb0: 0xd2d419cd610e4f600a747bab, + limb1: 0x9f015335c5839445a7fe5fb, + limb2: 0xc28287868c31ae2, limb3: 0x0 }, u384 { - limb0: 0xa5c8f4e6c7051cd9d2431658, - limb1: 0xa140247aa8827a3ce199eb79, - limb2: 0x1f7f1a3e7dc7ddd8, + limb0: 0x895d86343db3d783ad1212d4, + limb1: 0xfeaf1ea5180142c19f82b3be, + limb2: 0x311343e10930683, limb3: 0x0 }, u384 { - limb0: 0xc3740720fa67585861333b80, - limb1: 0x4d9a03d0c12c8628a5d5ba13, - limb2: 0xb14697973ca4d18, + limb0: 0x82e1fd0f781724f4291c1138, + limb1: 0xfe2e3ae9f5c25249fb24a129, + limb2: 0x6b675b57c976f5c, limb3: 0x0 }, u384 { - limb0: 0x3fdad6df17dcd541eaf0bed1, - limb1: 0x41952cd6e778d729d49018dd, - limb2: 0x2b42dae6ba70bef7, + limb0: 0x180736c95ebb381affb66198, + limb1: 0x7895c96d1b3a581161bbba86, + limb2: 0x1db16a3dfe3f2f8f, limb3: 0x0 }, u384 { - limb0: 0x4ce102848cf92ed9062c67f1, - limb1: 0x280751f54871a0d094558a48, - limb2: 0x1e096d1dc3e19eed, + limb0: 0x18c6d415731580051e52b3bd, + limb1: 0x442ab200628df4d7494d5c0f, + limb2: 0x9ac9653a34328b2, limb3: 0x0 }, u384 { - limb0: 0xd34c021b9414e92ef1250a29, - limb1: 0x4025193f091d8384e7902a2a, - limb2: 0x24f0e840c8a94730, + limb0: 0xbd9df3bc651964531d0e2f5d, + limb1: 0x3947c971db0e1865cd84eb5d, + limb2: 0x1d8a088375c84041, limb3: 0x0 }, u384 { - limb0: 0x65e4c949358ad2be0fdd8a04, - limb1: 0x6beed6d0cc33f03ae9dff4b0, - limb2: 0x15ef6c73c5b0f8db, + limb0: 0x8bceb69327555e3a1e19a21d, + limb1: 0xf7fa120778adfbce11bc377, + limb2: 0x2ac48ec6e0c14116, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -8172,126 +8196,126 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x542ff2d39ab1236d190ab20d, - limb1: 0xc56264d4a150e3e8700fd2b5, - limb2: 0xc325e0030c23b54, + limb0: 0xcf883edcd401ebc54f0fd780, + limb1: 0xb342ea61516a456e975d4660, + limb2: 0x11ca694e4512387, limb3: 0x0 }, u384 { - limb0: 0x64faa07812948e17f7f8be84, - limb1: 0x6e8a9cd598acd0b72348820f, - limb2: 0x27a58c23f9a39aa4, + limb0: 0x2360e7b7792a8a5c1896e145, + limb1: 0xd5e5fd849d731df93db93f13, + limb2: 0x1e86adf3c0b7f76, limb3: 0x0 }, u384 { - limb0: 0x3fb88a5be7104e7feee7808d, - limb1: 0x16cc231f3bfe1ef2b04a7b41, - limb2: 0xef4363829feb7eb, + limb0: 0xebf7821c05a96b3a4c949d79, + limb1: 0xce89aa96b7bfc20f2a2cce0a, + limb2: 0x184f2ee250feda1d, limb3: 0x0 }, u384 { - limb0: 0xb812107f7c5bff28e10f8e93, - limb1: 0x51bb945dfe2ed5029641d3a8, - limb2: 0x19555eed805545eb, + limb0: 0x481cf77333dfcad29400b58, + limb1: 0x5ede33a94078012230352af6, + limb2: 0xd8104b2dd20c638, limb3: 0x0 }, u384 { - limb0: 0x79a9fc9915343ad4ebaad276, - limb1: 0xe2b5c2fc660248c1be8e696a, - limb2: 0x898ed1200c1af90, + limb0: 0xb82781fd4259a00579e3c376, + limb1: 0x912ef8e627b9dc966ee643af, + limb2: 0x998774c946ba16c, limb3: 0x0 }, u384 { - limb0: 0x70e92a657f7303acf55b6217, - limb1: 0x55ae92cd22591741ca81a493, - limb2: 0x1b86856c9992d4b2, + limb0: 0xfd670b962dd23f1181ea1552, + limb1: 0x3644274cefa29ad1f40f23bd, + limb2: 0x20283f0e73916457, limb3: 0x0 }, u384 { - limb0: 0x9ee098fda9a845cf6d2921cb, - limb1: 0xcd519eba8cce35b908fea80b, - limb2: 0x11077573a73d8afb, + limb0: 0x2c88036e70e2be262baf111b, + limb1: 0xd7ef3b022aacfdcd119d1512, + limb2: 0x21085d715f30dad2, limb3: 0x0 }, u384 { - limb0: 0x427dbd305b5bb0701b8c90f7, - limb1: 0x888230ab8f95f61405c6cbc4, - limb2: 0x66ce17a2b5b191f, + limb0: 0xfdc06dda1cc41d7c73fbc7f3, + limb1: 0x14b09cd0859d660c1d0b3d71, + limb2: 0x201b471e8dfde0ce, limb3: 0x0 }, u384 { - limb0: 0x55389aaea523a467a0f13573, - limb1: 0x8487fea0b159fd9dcb316026, - limb2: 0x15b1c38d5e04ecf1, + limb0: 0x589bcebd4c54cb5840a7e50b, + limb1: 0x9a2d3ffc725970c2759b63f8, + limb2: 0x1dbbb64a53335c5, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x96821a1fd38945c3bb2bfb1c, - limb1: 0x230618b9d9a0348e9ff787f7, - limb2: 0x2b4bbf532ef98de3, + limb0: 0x998cfb1fd81dd58f925016b6, + limb1: 0xed2d3df9d10828b9f1b5540, + limb2: 0x2e7328db230ba16b, limb3: 0x0 }, u384 { - limb0: 0xcbeda727948ea2a2dbd43dca, - limb1: 0x2a3c5135724d6f119e7c54ed, - limb2: 0x198ea2cecbd76488, + limb0: 0x787c4d68232aee201f5d7301, + limb1: 0x1dd03f9a1508abcd0f7fb1f3, + limb2: 0x247879693a4950a6, limb3: 0x0 }, u384 { - limb0: 0x88e9142718eeca769e4c45c1, - limb1: 0x2b7027b9780616590d4c57db, - limb2: 0x2e1900489825f960, + limb0: 0x9c18929cb91b868b0736387c, + limb1: 0xfc0d5bef4803c844de881b3b, + limb2: 0x9339cba31b9138b, limb3: 0x0 }, u384 { - limb0: 0x7c87736d8b0e759fb7530634, - limb1: 0x9f2569058c104ea97c290638, - limb2: 0x2fabd18815b21694, + limb0: 0xee59b209f199dcaf63efe6cd, + limb1: 0xc20b8acb95215a429ea131b6, + limb2: 0x137da9ede10ef92c, limb3: 0x0 }, u384 { - limb0: 0xed05a031d8c495bf1e2102f9, - limb1: 0xe752e7afd880bedf1e80a00d, - limb2: 0x941f5c6c56b08a3, + limb0: 0x4a06290f04fedf83589da5e5, + limb1: 0x310e60dab0490bd50b0406b, + limb2: 0x473ca4ca11d693d, limb3: 0x0 }, u384 { - limb0: 0xbb886759f5af913733ce539d, - limb1: 0xa8b58eed7ed4abf36f97b52f, - limb2: 0x18d2c4b207097a4c, + limb0: 0xd3b2027496f45793080a2e0b, + limb1: 0xcb2f34a63fab21477b6ac7eb, + limb2: 0x2016f738fa5c809a, limb3: 0x0 }, u384 { - limb0: 0x6c7478593e64fbb783a85f6d, - limb1: 0x9d68c420d9825ffc2d836371, - limb2: 0x191e85560b62e255, + limb0: 0x534a0db76b42c5d6a7c9a208, + limb1: 0xf1b55189056b431dcc31f8b1, + limb2: 0x2ef040ccfcbe8ff6, limb3: 0x0 }, u384 { - limb0: 0xa0a59da0403c354e698f624f, - limb1: 0x14c125dc4911f71f632d21cb, - limb2: 0xc48835c49206936, + limb0: 0x821dfadb2059ae84d08c501a, + limb1: 0x7e23dbaafd56ee2f3e8ac538, + limb2: 0xcd22b39fcee1254, limb3: 0x0 }, u384 { - limb0: 0x4ce102848cf92ed9062c67f4, - limb1: 0x280751f54871a0d094558a48, - limb2: 0x1e096d1dc3e19eed, + limb0: 0x18c6d415731580051e52b3c0, + limb1: 0x442ab200628df4d7494d5c0f, + limb2: 0x9ac9653a34328b2, limb3: 0x0 }, u384 { - limb0: 0xd34c021b9414e92ef1250a29, - limb1: 0x4025193f091d8384e7902a2a, - limb2: 0x24f0e840c8a94730, + limb0: 0xbd9df3bc651964531d0e2f5d, + limb1: 0x3947c971db0e1865cd84eb5d, + limb2: 0x1d8a088375c84041, limb3: 0x0 }, u384 { - limb0: 0x65e4c949358ad2be0fdd8a04, - limb1: 0x6beed6d0cc33f03ae9dff4b0, - limb2: 0x15ef6c73c5b0f8db, + limb0: 0x8bceb69327555e3a1e19a21d, + limb1: 0xf7fa120778adfbce11bc377, + limb2: 0x2ac48ec6e0c14116, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -8301,102 +8325,102 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0xd6153717935ea3c36558c9cb, - limb1: 0x3853a1d056c0dbeccf3bce3a, - limb2: 0x53100c00ec67524, + limb0: 0x95ca287ad27bbd072f11b1b3, + limb1: 0x71ba4bcac786d496cd9bf560, + limb2: 0x9f66dabb1b30515, limb3: 0x0 }, u384 { - limb0: 0x1bb71fecb01455f353ed66e2, - limb1: 0x260f0d29b6230275aecff665, - limb2: 0x2c994cba91a0ace0, + limb0: 0x1fc8b08da1e125348f77d988, + limb1: 0x919cf7318698f0a8fca0d4fa, + limb2: 0x1035607627ef0c1a, limb3: 0x0 }, u384 { - limb0: 0x6f1f38b42c9d805e63d025f3, - limb1: 0x373e2244be86952bb658ac7a, - limb2: 0x15da91a9f16cf34d, + limb0: 0x2ae0fa3e54bcfb949fab4c91, + limb1: 0x707db6c9a3d3b2698baa1754, + limb2: 0x1742b5c5c5e2ca64, limb3: 0x0 }, u384 { - limb0: 0x78d76898167afe6c78b24689, - limb1: 0x30611f3545b8b3b85a083313, - limb2: 0x287dd44badee6fc9, + limb0: 0x1188c33875165f89b6cfc18e, + limb1: 0xc66846bb82451d5a6843f5dc, + limb2: 0x831de849e54cbd3, limb3: 0x0 }, u384 { - limb0: 0x51e9509d573530614f51bf2a, - limb1: 0xaf5fbb2528224314e16893fb, - limb2: 0x14cdd521c103c65, + limb0: 0xa1affc0326314442bdd32f04, + limb1: 0xfe410937946e31001c63687e, + limb2: 0xd37680cea8b2981, limb3: 0x0 }, u384 { - limb0: 0xee50df83865f8cf624784aec, - limb1: 0x111e5d57ef6eb893e0020d1a, - limb2: 0x2f8274ed04557ed9, + limb0: 0xe6e071fd7baedf784ef3136f, + limb1: 0x52fa59bdfe7cf955f1817a5c, + limb2: 0xc11b01f588bbaa0, limb3: 0x0 }, u384 { - limb0: 0x528dcca21bb68b7afd3ccab6, - limb1: 0x29be8100a5865b123d7871e9, - limb2: 0x1a2502546fdba3fb, + limb0: 0x27d7c594f38c2806be7bf8c4, + limb1: 0xb31d2f40413bb3d13eda729, + limb2: 0x305d87dcbfd0a766, limb3: 0x0 }, u384 { - limb0: 0x76eac38c05f0e8a079c17925, - limb1: 0xdc2822db40c0ac2e8ccaa581, - limb2: 0x183227397098d014, + limb0: 0x5e3c6b9f74204fbc538a7053, + limb1: 0xb85045b68181585d4c43667b, + limb2: 0x30644e72e131a029, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0xe5fb7ff0ae25266d6bbf9b08, - limb1: 0x8fc3ce9eae9973d41a9eb93, - limb2: 0x199bdd4d848cb6da, + limb0: 0x63bf457caf73d4b78421d91c, + limb1: 0x3d3d79830a39f7578fcc85a3, + limb2: 0x27490475248415c7, limb3: 0x0 }, u384 { - limb0: 0xed5aec436cd6c02fb7831cac, - limb1: 0xb00be23d5b2af4fa98c785b8, - limb2: 0x2987a4a0fc2bd5f1, + limb0: 0xbdc923b9521bdc0b8b004f29, + limb1: 0xe85faf749d7afd423a6e4485, + limb2: 0xf7970b5a218c9ed, limb3: 0x0 }, u384 { - limb0: 0x2c6a0c626f6059f37ef5986b, - limb1: 0x36132c935b81febce853f40, - limb2: 0x1d6e606e524a0ae7, + limb0: 0x5a2652502bb5143fa6696ac6, + limb1: 0x75d5315a5125485404606103, + limb2: 0x23be8ad07b9bbf1c, limb3: 0x0 }, u384 { - limb0: 0xa41b76308b631f727750ba68, - limb1: 0x6ce60addf07ec6c9cd352c2e, - limb2: 0x6f6064d0b7e9284, + limb0: 0x7741b6e116b85681ce2c2b4e, + limb1: 0xb4594598a883981a9656f6bb, + limb2: 0x1f7a1ddca82428a, limb3: 0x0 }, u384 { - limb0: 0x5859249d2c9072965a7bbe0c, - limb1: 0xb30a30df1f5674189388a061, - limb2: 0x1521c24cc3b1f017, + limb0: 0x88c9011fe8e619aab537756e, + limb1: 0xfcd152f74770ad115631011e, + limb2: 0xc3a5f1f7e12c485, limb3: 0x0 }, u384 { - limb0: 0xbee0a9ac2dc329ed82a36ffc, - limb1: 0x97d2e8e42fa71e054a5d2d82, - limb2: 0x1c803ba5ae154e15, + limb0: 0xb4091c03cfb14d66cda8345f, + limb1: 0x90a093b60766b64665f863b0, + limb2: 0x194e2d420b9ad0e2, limb3: 0x0 }, u384 { - limb0: 0x7edc4cdbefb21f4218159334, - limb1: 0xf7bea94c7ed983ba0688bd72, - limb2: 0x282d977689300e3, + limb0: 0xe9e20c83d62b082755532ef3, + limb1: 0x3f4b36e87d4e071f82245bb8, + limb2: 0xa118560b28af66e, limb3: 0x0 }, u384 { - limb0: 0xa57795cc99ac994b3b9ffadf, - limb1: 0x7b82f68c8c0925f82eff03f9, - limb2: 0x1f6b269560546bf2, + limb0: 0xa3615cc7bc197d97bbfe8c51, + limb1: 0xd01b9b59bf557554e6057ad0, + limb2: 0x1174e2ec30c2a3b7, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -8404,126 +8428,126 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x9cf9bb2d0b868ba4e5312d6c, - limb1: 0x38f019275d5d87b7e002e728, - limb2: 0x2b3d86f7513e131d, + limb0: 0x4d35979358677bbaa2f79278, + limb1: 0x199f468ab812f060d292c64d, + limb2: 0x2b21d111fc77016a, limb3: 0x0 }, u384 { - limb0: 0x9a116a5f49899a4c08c95d4d, - limb1: 0xb1dbca8853f6b73a2c0ded0f, - limb2: 0xfd4163700131a6b, + limb0: 0x814362c344be4c6bb3ad0582, + limb1: 0xab040ecbfc777e3fe198cfa0, + limb2: 0x25b2a028b1016fb6, limb3: 0x0 }, u384 { - limb0: 0x787f7001ee903a8f61e5f418, - limb1: 0x7d4d36b424b6817c1976541, - limb2: 0x28e3b754a647157a, + limb0: 0x2990d447906b8f7d905438f9, + limb1: 0x4aa33137ad98053c7c49091b, + limb2: 0xd1bb1ec19c05e3a, limb3: 0x0 }, u384 { - limb0: 0x45d1593885abf3fea910da4a, - limb1: 0x4446772d86585d1ec1152714, - limb2: 0x137c98c2c2ceef80, + limb0: 0x62038ebf2a3abfd9b258968e, + limb1: 0x4d5b60b53aba10b86dda89e1, + limb2: 0x288e65a197936b19, limb3: 0x0 }, u384 { - limb0: 0x4d5b70be8c0b5120ad8899b1, - limb1: 0xb9b223ecbab9609c827d33a8, - limb2: 0x915fa90082ec20a, + limb0: 0x58168897e89ef99c822d568b, + limb1: 0xe72e656893e3caa6ded63363, + limb2: 0x1ca94f731556358e, limb3: 0x0 }, u384 { - limb0: 0x4cf5f652f91e502ebf208c40, - limb1: 0x5f7e6f4e91c61554149ad9f3, - limb2: 0x1350b96615dbe6c, + limb0: 0x73c5701fb26aa7534ef7e83d, + limb1: 0x487917bee170beb1b51548a1, + limb2: 0x195d0d194b5783a1, limb3: 0x0 }, u384 { - limb0: 0xe8352d141596bb6c1253cbdd, - limb1: 0xb2d1462710e305c5c55d3070, - limb2: 0x19f6cf8117cfb165, + limb0: 0x21b8e24b2d6fc4b693706075, + limb1: 0x8136f19e54d4f1854f724b0a, + limb2: 0x5aa9931bfea1108, limb3: 0x0 }, u384 { - limb0: 0xaea3b19310ac87ba41f129e, - limb1: 0xf8f44d2927fb78d81eb77c4f, - limb2: 0x39b4d96c431ebcf, + limb0: 0xb6979f55303c029c1b836c4c, + limb1: 0x29b1dbd5743ef0ba6739fc45, + limb2: 0x2388b6f5f037c25b, limb3: 0x0 }, u384 { - limb0: 0x4f0a292f4c0d71cdc9e9bed2, - limb1: 0xa9ef87144c2522b732008128, - limb2: 0x9921f7dcca45d49, + limb0: 0xbae688bbb4827b990bb7517d, + limb1: 0xc07b87583c8b9b61497af41c, + limb2: 0x3541fb9aa46e890, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x4980b544ce4ee7316ac1d3d1, - limb1: 0x62a471073f3b6d5a2d7c582a, - limb2: 0x1c6f4975ac748464, + limb0: 0x5a5a3b5b961a65f8db6b90c6, + limb1: 0x4717e11c1bab354b8062bbc7, + limb2: 0x15127079ab290102, limb3: 0x0 }, u384 { - limb0: 0xf72d2fafce432861758f5b76, - limb1: 0x9f831b4b0e7e2e349b53bc07, - limb2: 0x1bce50fd32204181, + limb0: 0x395b6b2bf6539422a100ed7b, + limb1: 0xb91f0e5dd870f7c6af4acd91, + limb2: 0x2e6c5220e64a5dc9, limb3: 0x0 }, u384 { - limb0: 0x1ccc5a9a120081c3a463cbfa, - limb1: 0x51d352a51fa70765d40e532f, - limb2: 0x27e6d2d815ac808b, + limb0: 0x3d8f61d60ade2491424245c4, + limb1: 0xf0df08a1f06d2840de1e4de7, + limb2: 0xa73038bb06ffd01, limb3: 0x0 }, u384 { - limb0: 0xd24de282504e84c4d1b1ca40, - limb1: 0x4fae5d83bc65eb9aa949701f, - limb2: 0x2e7df034a7086e67, + limb0: 0xc9846a1ff39cd83ceea65b06, + limb1: 0x5a494a4d03c4bfa752d169d5, + limb2: 0x2d2fea0e840add67, limb3: 0x0 }, u384 { - limb0: 0x2582c5007a46ffc515fc5c42, - limb1: 0x5889e96db62ba089245e91ba, - limb2: 0x8244ea184de65e5, + limb0: 0xefb25c8bd0ad9cf4d229b22c, + limb1: 0x268362a3f24bac18a57fdd4f, + limb2: 0x3c43fa13b1f7756, limb3: 0x0 }, u384 { - limb0: 0x9828744c8068bf8e55e5edd1, - limb1: 0x5a396208c1aac9407e99f2a5, - limb2: 0x122676799a26b4d4, + limb0: 0xa55e11412287e4465e680d55, + limb1: 0xb716610f6456ba6c0746b6f2, + limb2: 0xee075b0dc08f170, limb3: 0x0 }, u384 { - limb0: 0x20b05cc45a797d38bf917404, - limb1: 0x542206c36d0b51f7e0cf6486, - limb2: 0xe7e92b345379530, + limb0: 0x34e7dc6c99396ef7ce25b827, + limb1: 0x723aea52206dad791cc409e6, + limb2: 0x202c31ffe22325d5, limb3: 0x0 }, u384 { - limb0: 0x77dc50e88155264a5c61b41b, - limb1: 0xb4f28917c06f3545f182d72b, - limb2: 0x129a9927224bf39b, + limb0: 0xa7b4ce9e112065b10b61d1a, + limb1: 0xb4d3df4e03efb4b270c006ff, + limb2: 0x1034b9712f290f83, limb3: 0x0 }, u384 { - limb0: 0xbee0a9ac2dc329ed82a36fff, - limb1: 0x97d2e8e42fa71e054a5d2d82, - limb2: 0x1c803ba5ae154e15, + limb0: 0xb4091c03cfb14d66cda83462, + limb1: 0x90a093b60766b64665f863b0, + limb2: 0x194e2d420b9ad0e2, limb3: 0x0 }, u384 { - limb0: 0x7edc4cdbefb21f4218159334, - limb1: 0xf7bea94c7ed983ba0688bd72, - limb2: 0x282d977689300e3, + limb0: 0xe9e20c83d62b082755532ef3, + limb1: 0x3f4b36e87d4e071f82245bb8, + limb2: 0xa118560b28af66e, limb3: 0x0 }, u384 { - limb0: 0xa57795cc99ac994b3b9ffadf, - limb1: 0x7b82f68c8c0925f82eff03f9, - limb2: 0x1f6b269560546bf2, + limb0: 0xa3615cc7bc197d97bbfe8c51, + limb1: 0xd01b9b59bf557554e6057ad0, + limb2: 0x1174e2ec30c2a3b7, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -8533,9 +8557,9 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0x710436fc16cd173c5e21336c, - limb1: 0xb541d2faf115d91fe96eeacc, - limb2: 0x1395c77399f8ebf2, + limb0: 0x1c8cd603f6585957a9489a1, + limb1: 0x18270fee624285162794cfb0, + limb2: 0x165d7d55a3fec039, limb3: 0x0 }, u384 { @@ -8548,15 +8572,15 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0x919d3272ae37eaf955d114a2, - limb1: 0x911e70153778c69b289db938, - limb2: 0x6dd161700622d95, + limb0: 0x7af294ddde1e07c8b75fc737, + limb1: 0x2ee5229f4deac3e27f4655f6, + limb2: 0xaf340e2196666ed, limb3: 0x0 }, u384 { - limb0: 0xca941899d8da4e489fe7d572, - limb1: 0x29418d7a402e8e091323049e, - limb2: 0x294da01238c1a578, + limb0: 0xa9bd48870dc081fe36e6de1e, + limb1: 0x190975eec8cac94c676346b8, + limb2: 0x22d88013d0aae217, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -8564,49 +8588,49 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x402d8dd679f386b5db79e861, - limb1: 0xdc89153ce61bb117d0cf8b7d, - limb2: 0x13a936930cab1a2f, + limb0: 0x8f6ae7bf9fa8153f0e2d57c3, + limb1: 0x8c50fc536362e02b7f84e2c5, + limb2: 0x19c029c4387f7cf0, limb3: 0x0 }, u384 { - limb0: 0x9a6322a41fc22f5dc5d3dc80, - limb1: 0x82c3cae8d28b2d7af8282886, - limb2: 0x217f1de9d0dc0bcc, + limb0: 0xfb13db5be973c04aa6318f16, + limb1: 0x93133cf6fbebe47b5f763349, + limb2: 0x2bdac120a2e07148, limb3: 0x0 }, u384 { - limb0: 0xfcbe109af29f56605f075bb2, - limb1: 0x9a7922310a6ef334235d120a, - limb2: 0x97ca40af29e0dd9, + limb0: 0x8ea90245d57a6c529af5c41, + limb1: 0x2a4baa0fc8d7c4c7ab11c2bc, + limb2: 0x2b341901bbafcbe7, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xb4d797580aa7c0ec01733de6, - limb1: 0xb35b503fa66a53d179d92ba9, - limb2: 0x14974245012688c0, + limb0: 0x70d7be999a5a175a261f55a5, + limb1: 0x8caf67dde9c04ba77dd301e3, + limb2: 0x20d9c2a64c3334c7, limb3: 0x0 }, u384 { - limb0: 0x8ed8b4b3124dd2ac2ebd85c8, - limb1: 0xb241d01bd88f9600a6638b9, - limb2: 0x1b204350e7e1b015, + limb0: 0x2c54447ab1006dccf3ba9fcc, + limb1: 0xda7bd65f575dab2a0726ff07, + limb2: 0x7c0e355af9d65f1, limb3: 0x0 }, u384 { limb0: 0x3, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x919d3272ae37eaf955d114a2, - limb1: 0x911e70153778c69b289db938, - limb2: 0x6dd161700622d95, + limb0: 0x7af294ddde1e07c8b75fc737, + limb1: 0x2ee5229f4deac3e27f4655f6, + limb2: 0xaf340e2196666ed, limb3: 0x0 }, u384 { - limb0: 0xca941899d8da4e489fe7d572, - limb1: 0x29418d7a402e8e091323049e, - limb2: 0x294da01238c1a578, + limb0: 0xa9bd48870dc081fe36e6de1e, + limb1: 0x190975eec8cac94c676346b8, + limb2: 0x22d88013d0aae217, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -8616,16 +8640,16 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0xc956b71cce2de56ffaf6ecaa, - limb1: 0x54f369588377d629c4ef7876, - limb2: 0x2044a75659aa4a9, + limb0: 0xaebb904f1ec6fd55eb1ef8b4, + limb1: 0x8761622cf92fe98c4e3498d5, + limb2: 0x1213a9861175c5fc, limb3: 0x0 }, g_rhs_sqrt: array![ u384 { - limb0: 0xb97c2f00b69d531857da0f1e, - limb1: 0xa0e796e62a80df12ca8d1d4, - limb2: 0x128dd65b3ba7cfc1, + limb0: 0x4880a6fc36690b73457b4e34, + limb1: 0xcc6a7178c44d3a97c586bf96, + limb2: 0xa2380d2b7d8e04, limb3: 0x0 } ], @@ -8636,15 +8660,15 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0xe3d47be1f8b61f167039ffc, - limb1: 0x4be31aeecc4b74acb2754d12, - limb2: 0x2473ad893b4870a9, + limb0: 0x1a75d9a197e005b1a2f36767, + limb1: 0x9baa1439da7d6120d5996e18, + limb2: 0x45257fb2d17a2de, limb3: 0x0 }, y: u384 { - limb0: 0xdc3a86acd02ef965fbf1b477, - limb1: 0x83e2dcbace1addeecdc233a5, - limb2: 0xabec3a747312795, + limb0: 0x97d04d468af1ba5cdcf7dda6, + limb1: 0x3c8761c343b0e13cc59dddfe, + limb2: 0xc03a81632e449d, limb3: 0x0 } } @@ -8657,113 +8681,113 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0x290b50e9dbba7cc4d5cb9e2e, - limb1: 0xb3e52672054989267c3e3d9d, - limb2: 0x9a412ff4f26b9c, + limb0: 0x5c724369afbc772d02aed58e, + limb1: 0x2cd3bc838c66439a3d6160b, + limb2: 0x72f26b55fb56be1, limb3: 0x0 }, y: u384 { - limb0: 0x15480c9883a5633f0d0f0792, - limb1: 0xb5a5247f36eb92869530fe14, - limb2: 0x25ea80aa34c30541, + limb0: 0x772ca79c580e121ca148fe75, + limb1: 0xce2f55e418ca01b3d6d1014b, + limb2: 0x2884b1dc4e84e30f, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x715efc1d0a42b32c80b6cafb, - limb1: 0x288db0f052132d76fbb744e7, - limb2: 0x80c11f141013d18, + limb0: 0x536c985db33c69f7c242e07a, + limb1: 0xfc531bccffafcf1e59d91fb9, + limb2: 0x2585e4f8a31664cb, limb3: 0x0 }, y: u384 { - limb0: 0xb79153bc0435b8cd0153f5dd, - limb1: 0xe8964c562900d4d7f7e38f8e, - limb2: 0x1046b04a3f23ff1a, + limb0: 0x57fa42444057cf0c1d62ae3c, + limb1: 0x4f48d341183118d68ea41313, + limb2: 0x1d2d2799db056ed1, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x75acd39e03669bb1ab61708f, - limb1: 0xd2c3f61b5360941f257ce8e6, - limb2: 0x1e2b11a2b2bdf474, + limb0: 0x236ca9312dad3661a37f2d6f, + limb1: 0x98424c01caad7592315715d1, + limb2: 0x795b9fd941b23c4, limb3: 0x0 }, y: u384 { - limb0: 0x7ded9a3eeeb15996605f4b65, - limb1: 0x4b7342134e50d1597cfd1e08, - limb2: 0x7b6f41b879dca8c, + limb0: 0xc7ab5834609a54b8993ffd79, + limb1: 0xe81cd490528b814ca632aace, + limb2: 0x2d9ff53d3009e6f7, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x47d9d854ff60a39f63f59bc3, - limb1: 0x6cd9546e9f0c20de1b556bee, - limb2: 0xe7d2d53f546f29a, + limb0: 0x163df40cafbf585ca5b2ab44, + limb1: 0xb4752e4666c88dbbe23783a0, + limb2: 0x1a801462ac9cb657, limb3: 0x0 }, y: u384 { - limb0: 0x292231d845f969fa0be6c4c9, - limb1: 0x3db3f7d9c5d46147644b57ea, - limb2: 0x278c29f77d8b857b, + limb0: 0xac9b557d7ca8625d957263c6, + limb1: 0xdc6f75fa8339a78b998ae54a, + limb2: 0x28683293b6494d9f, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x79eaf59c52ad8f6b38ab78a0, - limb1: 0x2111d6c079431de0048b23ea, - limb2: 0x1e9b4bfa85bc890a, + limb0: 0x5c4f5dca0c973b7f70bfff9, + limb1: 0x188c2afab11eef5d48ecda3c, + limb2: 0xc2fed35d36c49f1, limb3: 0x0 }, y: u384 { - limb0: 0xa0b32e988303030f7d947653, - limb1: 0x8dd8279117113f02bffd9756, - limb2: 0x1880f0360cb0256c, + limb0: 0x9d7244ea10697ca42e2e066b, + limb1: 0xfe18a519c7d68770dc48dbf9, + limb2: 0x149bb528db998529, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xaf9f253391cb578565b1e998, - limb1: 0x782883e013a00cc74bbc331b, - limb2: 0x20815a70a0dd8d53, + limb0: 0xffc057151b06c496e6fdd440, + limb1: 0x5a01bae0c7441f08c7af1cf9, + limb2: 0x274e0e02529e6d26, limb3: 0x0 }, y: u384 { - limb0: 0xb8ba87e0a2fbd6623eee8fff, - limb1: 0x659bc0d573d531021cd19dc7, - limb2: 0x11c6438040482552, + limb0: 0x65ceb8977413bc9798681ecb, + limb1: 0x19ffb287b45234f0c28fd1a7, + limb2: 0x28dbbd2f9267be76, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x77fd783c5ceab3910445cca, - limb1: 0x5b1455eb2d0a6988c24d83b4, - limb2: 0x224484b47231ec28, + limb0: 0xcfcdbfdb2056ff1a64bf1d47, + limb1: 0xf26fe2dae9f693d9b4aab2e6, + limb2: 0x12d66ad4802d841e, limb3: 0x0 }, y: u384 { - limb0: 0xe1e99f32f4a804293cdf8523, - limb1: 0xd40f15ce8f765ccc427f8c6f, - limb2: 0x202be84b56098eba, + limb0: 0xe6e34ebfa2e18dce86cadbdc, + limb1: 0x7ce096238b3d4b1b8fba6a55, + limb2: 0x2e0a660b1549800c, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x4a7345e53947b02b98433d2b, - limb1: 0x212124a699016585de5134f7, - limb2: 0x28f56b1b0ef27a15, + limb0: 0xd2dd03b29d58d045656ecf33, + limb1: 0xeddac3cf7a123aae2180739b, + limb2: 0x215bec6e0a03c924, limb3: 0x0 }, y: u384 { - limb0: 0x700f7cf06e0296781be85df5, - limb1: 0x15676886ffd1fa72ed7eb73f, - limb2: 0x232735c680389661, + limb0: 0xe5201e51828eb11589d8619f, + limb1: 0xa6563c760aa3a2c9d15af235, + limb2: 0x7ed0c9b2e7811fb, limb3: 0x0 } }, @@ -8771,28 +8795,28 @@ mod msm_tests { .span(); let scalars = array![ u256 { - low: 0xf0d899a254e60295da5660560cfbef5, high: 0x233fe27a6a0a4b5f10565b0f5b5fee5 + low: 0x101fbcccded733e8b421eaeb534097ca, high: 0xe30658b9148624feac1c14f30e9c5cc }, u256 { - low: 0x1867399551768060a9d3b8aa745f80a3, high: 0x2cfcb788b910392a4bcfabaa2e7c85ad + low: 0x247a8333f7b0b7d2cda8056c3d15eef7, high: 0x5d67b7072ae22448b0163c1cd9d2b7d }, u256 { - low: 0x4274329549a628df4b7b121358ace695, high: 0xe7c05b8e981bd479d06e94faf17cec + low: 0xe005b86051ef1922fe43c49e149818d1, high: 0x1f507980eece328bff7b118e820865d6 }, u256 { - low: 0x9fd452b1b4c2df01dbb5ef44da998893, high: 0x2bce326c107211abca4f76fb823bc81d + low: 0x4a84eb038d1fd9b74d2b9deb1beb3711, high: 0x154bc8ce8c25166a1ff39849b4e1357d }, u256 { - low: 0xc3d84a6191034e735913d4d081987c, high: 0x143b99882677aa883e501bc1c160054f + low: 0x3405095c8a5006c1ec188efbd080e66e, high: 0x2305d1699a6a5f92cca74147f6be1f72 }, u256 { - low: 0x58b1fbc3851467917e35f1ede312f944, high: 0xd58811a13525a42da5e327c4de4446a + low: 0x1775336d71eacd0549a3e80e966e1277, high: 0x144a7edf6288e1a5cc45782198a6416d }, u256 { - low: 0x131ba7042c3d8ec59ff5c325cca2f9c8, high: 0x1ff2c182273fd766aaac7643d46c84d1 + low: 0x2f1205544a5308cc3dfabc08935ddd72, high: 0x21c38572fcd81b5d24bace4307bf326 }, u256 { - low: 0xc982f4dc91802a71e43042cda104c71c, high: 0x267e80df21c53e4d7eba8abc5dea7653 + low: 0x42930b33a81ad477fb3675b89cdeb3e6, high: 0x2b70369e16febaa011af923d79fdef7c }, ] .span(); @@ -8800,124 +8824,124 @@ mod msm_tests { array![ ( array![ + 0x1, 0x0, -0x1, -0x1, -0x1, - 0x1, - 0x1, + -0x1, 0x1, -0x1, -0x1, -0x1, - 0x1, -0x1, 0x1, - 0x1, 0x0, -0x1, 0x0, + 0x1, -0x1, 0x0, + 0x1, + 0x0, 0x0, + 0x1, -0x1, + 0x1, + 0x0, + 0x1, -0x1, -0x1, -0x1, - 0x1, -0x1, 0x0, 0x1, - 0x0, -0x1, 0x0, -0x1, - 0x0, - 0x0, + -0x1, + -0x1, + -0x1, -0x1, 0x1, + -0x1, 0x0, 0x1, 0x1, + -0x1, + 0x0, 0x0, -0x1, 0x1, -0x1, 0x1, - 0x0, - 0x1, -0x1, -0x1, 0x1, - 0x1, - 0x1, - 0x0, -0x1, -0x1, - 0x1, - -0x1, 0x0, -0x1, - 0x0, -0x1, + 0x0, -0x1, 0x1, 0x0, - 0x0, - 0x0, - 0x0, - -0x1, 0x1, + 0x0, 0x1, -0x1, 0x1, + -0x1, + -0x1, 0x0, + -0x1, 0x0, 0x1, + 0x1, + 0x1, 0x0, - 0x0, - -0x1, -0x1, 0x1, ] .span(), array![ + 0x1, 0x1, 0x0, -0x1, -0x1, - -0x1, - 0x0, - 0x0, - 0x0, - 0x0, 0x0, 0x1, - -0x1, + 0x1, + 0x1, 0x1, -0x1, + 0x0, 0x1, 0x0, 0x0, 0x1, - 0x1, 0x0, -0x1, - -0x1, 0x1, - -0x1, 0x0, 0x1, + 0x1, -0x1, 0x0, + -0x1, + 0x0, + 0x0, 0x1, - 0x1, - 0x1, - 0x1, - 0x1, + 0x0, + -0x1, 0x1, -0x1, 0x1, + 0x0, + -0x1, + -0x1, 0x1, 0x1, 0x0, @@ -8925,95 +8949,92 @@ mod msm_tests { 0x1, 0x1, 0x0, - -0x1, + 0x0, + 0x1, + 0x0, + 0x1, 0x1, 0x1, -0x1, -0x1, + 0x0, -0x1, -0x1, - 0x0, - 0x0, - 0x1, 0x1, 0x1, + -0x1, 0x1, 0x1, 0x0, - -0x1, - 0x0, - 0x0, 0x0, -0x1, + 0x1, + -0x1, + -0x1, -0x1, 0x1, 0x0, 0x0, - 0x0, + 0x1, + -0x1, -0x1, 0x0, 0x0, 0x0, - 0x1, - -0x1, -0x1, 0x1, - -0x1, - -0x1, + 0x0, + 0x1, ] .span() ), ( array![ - 0x0, - 0x0, + 0x1, 0x1, -0x1, -0x1, 0x0, + 0x0, 0x1, + 0x0, + -0x1, + -0x1, 0x1, 0x1, 0x0, 0x1, - 0x0, - 0x0, 0x1, -0x1, - 0x0, - 0x0, - 0x0, 0x1, 0x0, -0x1, - 0x1, - 0x1, + -0x1, -0x1, 0x1, + -0x1, 0x1, + -0x1, 0x1, 0x0, + 0x0, -0x1, - -0x1, - 0x1, + 0x0, + 0x0, + 0x0, 0x1, -0x1, - 0x1, 0x0, 0x0, + -0x1, 0x1, + 0x0, 0x1, 0x1, - 0x0, - -0x1, - -0x1, 0x1, -0x1, - -0x1, - -0x1, - -0x1, - -0x1, - -0x1, + 0x0, + 0x1, 0x1, -0x1, -0x1, @@ -9021,111 +9042,113 @@ mod msm_tests { -0x1, -0x1, -0x1, - -0x1, - 0x1, - 0x1, - 0x0, 0x0, 0x0, -0x1, 0x1, + -0x1, 0x1, -0x1, + 0x0, -0x1, - 0x1, 0x0, 0x1, + 0x1, + 0x1, + -0x1, -0x1, 0x0, + -0x1, 0x0, 0x0, + -0x1, 0x1, + 0x0, + -0x1, 0x1, 0x0, 0x0, - -0x1, + 0x0, -0x1, ] .span(), array![ - 0x1, 0x0, -0x1, - 0x1, - 0x1, -0x1, 0x1, - 0x1, - -0x1, 0x0, - 0x0, - 0x1, -0x1, 0x1, 0x0, - -0x1, 0x1, - 0x0, + 0x1, -0x1, + 0x0, + 0x0, -0x1, + 0x1, -0x1, -0x1, 0x0, + 0x1, -0x1, + 0x0, + 0x0, -0x1, 0x0, - 0x1, -0x1, 0x0, -0x1, - 0x1, 0x0, 0x1, - 0x1, 0x0, 0x0, 0x1, 0x0, -0x1, - 0x0, - 0x1, - 0x1, - 0x0, -0x1, 0x1, 0x0, - -0x1, 0x0, 0x1, + -0x1, 0x0, 0x0, + 0x1, 0x0, 0x0, + 0x1, 0x0, 0x1, + 0x0, + -0x1, 0x1, 0x0, 0x0, - 0x1, - 0x1, 0x0, -0x1, 0x1, + 0x1, -0x1, 0x0, 0x1, + 0x0, -0x1, - -0x1, 0x1, + 0x1, + 0x1, + -0x1, 0x0, 0x0, - -0x1, - -0x1, 0x0, - 0x1, - 0x1, 0x0, 0x1, + -0x1, + -0x1, + -0x1, + -0x1, + -0x1, 0x1, -0x1, ] @@ -9133,19 +9156,19 @@ mod msm_tests { ), ( array![ - -0x1, - 0x1, - 0x1, + 0x0, 0x0, 0x1, -0x1, 0x0, - 0x0, - -0x1, 0x1, -0x1, 0x0, 0x0, + 0x0, + 0x1, + 0x0, + -0x1, -0x1, 0x1, 0x1, @@ -9153,207 +9176,223 @@ mod msm_tests { 0x1, 0x1, 0x0, + 0x1, + -0x1, + -0x1, + 0x0, + 0x0, + 0x0, 0x0, 0x0, -0x1, -0x1, - 0x0, -0x1, 0x0, 0x0, - 0x1, + 0x0, -0x1, - 0x1, 0x0, + 0x1, 0x0, 0x0, 0x0, + -0x1, 0x1, 0x1, 0x0, - 0x0, 0x1, 0x1, -0x1, 0x0, + 0x1, 0x0, -0x1, + 0x0, 0x1, -0x1, - 0x1, -0x1, 0x0, 0x0, - 0x1, - -0x1, 0x0, + 0x1, + 0x1, -0x1, 0x0, 0x1, + 0x1, + 0x1, + 0x0, + 0x0, 0x0, -0x1, 0x1, -0x1, - -0x1, - -0x1, - 0x1, 0x0, - -0x1, 0x0, 0x1, - 0x1, -0x1, -0x1, + 0x1, 0x0, 0x0, - 0x1, - 0x1, - -0x1, 0x0, -0x1, -0x1, - 0x1, - 0x1, ] .span(), array![ - 0x1, - 0x1, 0x0, + 0x1, -0x1, -0x1, 0x0, + -0x1, 0x0, - 0x1, - 0x1, - 0x0, + -0x1, 0x0, + -0x1, + -0x1, 0x1, 0x1, - 0x1, - -0x1, -0x1, - 0x0, 0x1, 0x0, - 0x0, - 0x0, + 0x1, -0x1, + 0x1, + 0x1, + 0x0, -0x1, -0x1, 0x0, + 0x0, -0x1, -0x1, 0x0, 0x0, - 0x1, -0x1, - 0x1, 0x0, + 0x1, 0x0, 0x0, - -0x1, - -0x1, 0x1, -0x1, + 0x0, 0x1, + 0x0, -0x1, 0x1, + 0x0, 0x1, 0x0, 0x0, 0x0, + -0x1, + 0x1, 0x0, 0x0, 0x1, - 0x0, - -0x1, 0x1, 0x1, -0x1, - 0x0, -0x1, - 0x0, - 0x0, - 0x1, -0x1, - 0x0, + 0x1, + 0x1, -0x1, - 0x0, -0x1, 0x1, - -0x1, 0x1, -0x1, - 0x0, + -0x1, 0x1, 0x1, -0x1, -0x1, + -0x1, + 0x1, 0x0, + 0x1, 0x0, + -0x1, + 0x1, 0x1, + -0x1, 0x1, + 0x0, + -0x1, ] .span() ), ( array![ - 0x0, - 0x0, - 0x1, - 0x1, - -0x1, -0x1, - 0x1, -0x1, 0x0, -0x1, + 0x0, -0x1, + 0x1, + 0x0, + 0x0, -0x1, - -0x1, + 0x1, -0x1, 0x1, 0x1, - 0x0, 0x1, - -0x1, 0x0, 0x0, + -0x1, + 0x1, 0x0, 0x1, + 0x1, + 0x0, -0x1, 0x1, 0x0, + -0x1, + -0x1, + 0x1, 0x0, + 0x1, + 0x1, 0x0, 0x0, -0x1, - -0x1, + 0x1, + 0x0, 0x0, -0x1, - -0x1, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, 0x1, - -0x1, - -0x1, + 0x0, 0x0, 0x0, 0x1, - -0x1, + 0x1, + 0x1, 0x0, -0x1, + 0x0, 0x1, - -0x1, - -0x1, + 0x0, + 0x0, 0x0, 0x1, - -0x1, - -0x1, 0x0, -0x1, + 0x0, + 0x1, 0x1, -0x1, -0x1, + 0x0, -0x1, -0x1, -0x1, @@ -9362,23 +9401,11 @@ mod msm_tests { -0x1, 0x1, 0x0, - 0x0, -0x1, 0x0, - 0x1, - 0x1, - 0x1, - 0x1, 0x0, - -0x1, - 0x1, - 0x1, - 0x1, - -0x1, - -0x1, 0x0, 0x1, - -0x1, 0x1, ] .span(), @@ -9387,35 +9414,25 @@ mod msm_tests { 0x1, 0x0, 0x0, - 0x0, - 0x0, - -0x1, - -0x1, - 0x1, - -0x1, -0x1, -0x1, 0x0, 0x1, 0x1, - -0x1, + 0x1, 0x0, 0x0, 0x0, 0x0, - -0x1, - 0x1, - 0x1, - 0x1, - 0x1, 0x0, + -0x1, 0x0, 0x1, + -0x1, 0x1, - 0x1, - 0x0, 0x0, 0x0, + 0x1, 0x0, 0x1, -0x1, @@ -9423,45 +9440,55 @@ mod msm_tests { 0x1, 0x0, 0x0, - -0x1, 0x0, -0x1, -0x1, + 0x1, 0x0, + 0x1, + -0x1, 0x0, 0x0, 0x1, + 0x1, + -0x1, 0x0, 0x0, 0x1, + 0x1, + 0x1, -0x1, 0x1, 0x1, 0x0, 0x0, 0x0, - 0x1, - 0x1, -0x1, 0x0, - 0x0, + 0x1, + -0x1, 0x0, -0x1, - 0x1, - 0x1, + -0x1, + -0x1, -0x1, 0x1, 0x0, 0x1, + 0x1, + 0x1, + 0x1, 0x0, 0x1, -0x1, - -0x1, - -0x1, + 0x1, 0x0, + 0x1, -0x1, 0x1, 0x1, + 0x1, + -0x1, -0x1, ] .span() @@ -9469,291 +9496,277 @@ mod msm_tests { ( array![ -0x1, - 0x1, - 0x1, -0x1, - 0x0, + -0x1, + -0x1, + -0x1, + 0x1, -0x1, -0x1, -0x1, -0x1, -0x1, - 0x0, - 0x0, - 0x0, - 0x0, 0x1, 0x1, -0x1, - -0x1, 0x0, -0x1, 0x1, -0x1, - 0x0, - 0x0, + 0x1, 0x0, 0x1, + 0x0, 0x1, -0x1, -0x1, - 0x1, - 0x1, - 0x0, 0x0, -0x1, 0x0, -0x1, + 0x0, -0x1, - -0x1, + 0x0, 0x1, -0x1, + 0x1, + 0x1, -0x1, -0x1, 0x1, + 0x0, + 0x0, + 0x0, + 0x0, + 0x1, 0x1, + 0x0, 0x1, + 0x0, 0x1, + 0x0, 0x1, 0x0, 0x0, 0x0, + 0x1, + 0x1, + 0x1, -0x1, -0x1, -0x1, 0x1, - 0x1, 0x0, - 0x1, 0x0, - -0x1, 0x0, - -0x1, + 0x1, -0x1, 0x1, 0x1, -0x1, 0x1, + 0x0, -0x1, - -0x1, - -0x1, - -0x1, - 0x1, 0x0, 0x0, + -0x1, 0x0, -0x1, + -0x1, 0x1, - 0x1, + -0x1, ] .span(), array![ + -0x1, + -0x1, 0x0, + 0x0, + -0x1, 0x1, + -0x1, 0x0, -0x1, + 0x0, + 0x0, 0x1, + -0x1, 0x0, -0x1, 0x1, 0x1, - 0x0, 0x1, - 0x0, + -0x1, + -0x1, + 0x1, -0x1, 0x0, 0x1, 0x0, + -0x1, + 0x1, 0x0, 0x1, 0x0, - -0x1, 0x0, 0x1, -0x1, - 0x1, -0x1, + -0x1, + -0x1, + 0x1, 0x1, 0x0, -0x1, - 0x0, -0x1, 0x0, 0x0, - 0x0, -0x1, - -0x1, - 0x0, + 0x1, 0x0, -0x1, 0x0, 0x0, + 0x1, 0x0, 0x0, -0x1, -0x1, - 0x1, - 0x0, -0x1, 0x1, - 0x0, + 0x1, -0x1, + 0x1, -0x1, 0x0, -0x1, - -0x1, - -0x1, + 0x1, 0x0, -0x1, + 0x0, -0x1, - 0x1, -0x1, 0x1, 0x1, - 0x0, - 0x0, - 0x1, - 0x1, 0x1, -0x1, - 0x0, - 0x0, + -0x1, 0x1, + -0x1, 0x1, + -0x1, 0x0, - 0x1, - 0x1, - 0x1, 0x0, - 0x1, - -0x1, -0x1, ] .span() ), ( array![ - 0x0, - -0x1, -0x1, 0x1, - -0x1, 0x1, - -0x1, + 0x0, 0x1, - -0x1, 0x0, 0x1, + 0x1, + 0x1, 0x0, + 0x0, + -0x1, -0x1, 0x0, 0x1, 0x0, - 0x0, - 0x0, 0x1, + 0x0, 0x1, 0x1, + 0x0, -0x1, + -0x1, + 0x1, 0x0, -0x1, 0x0, - 0x1, 0x0, 0x1, 0x1, - -0x1, - 0x1, - -0x1, 0x0, - -0x1, - 0x1, 0x0, - 0x1, - 0x1, 0x0, -0x1, -0x1, + 0x1, -0x1, -0x1, - 0x0, - 0x1, 0x1, 0x1, - 0x0, 0x1, + -0x1, 0x1, 0x0, -0x1, + 0x1, + 0x0, 0x0, -0x1, - -0x1, + 0x1, -0x1, 0x1, 0x0, 0x0, - 0x0, -0x1, 0x0, + 0x1, -0x1, 0x0, - 0x1, + -0x1, 0x1, 0x0, -0x1, + -0x1, + -0x1, 0x0, 0x0, -0x1, -0x1, 0x1, - -0x1, - -0x1, 0x1, - -0x1, - -0x1, + 0x0, 0x1, 0x1, 0x1, + 0x0, + -0x1, + 0x0, + -0x1, + -0x1, ] .span(), array![ -0x1, 0x0, - 0x1, + -0x1, + 0x0, + 0x0, + 0x0, + 0x0, 0x0, -0x1, - 0x1, -0x1, -0x1, 0x0, - 0x1, - -0x1, -0x1, 0x1, -0x1, - 0x0, - 0x1, - 0x0, - 0x1, - 0x1, - 0x1, - 0x0, - 0x1, - 0x0, - 0x1, - 0x1, + -0x1, 0x1, 0x0, 0x0, - 0x0, - 0x0, - 0x0, -0x1, 0x0, - 0x1, - 0x0, - 0x1, - 0x1, 0x0, 0x0, -0x1, @@ -9763,376 +9776,390 @@ mod msm_tests { -0x1, -0x1, 0x0, + 0x0, + 0x0, 0x1, 0x1, - 0x0, -0x1, 0x0, 0x0, 0x0, + -0x1, 0x1, + -0x1, + -0x1, + -0x1, + 0x1, + -0x1, 0x0, 0x0, + -0x1, + 0x0, 0x1, 0x1, - 0x1, + -0x1, + -0x1, 0x0, 0x0, -0x1, -0x1, 0x1, 0x1, - -0x1, - 0x0, 0x1, -0x1, 0x0, + 0x0, + 0x0, + -0x1, 0x1, -0x1, 0x1, + 0x0, + 0x0, + -0x1, -0x1, 0x0, + 0x0, 0x1, 0x1, 0x0, 0x1, + -0x1, + -0x1, ] .span() ), ( array![ 0x0, - 0x1, 0x0, 0x1, 0x0, - 0x0, + 0x1, + -0x1, + -0x1, -0x1, - 0x0, -0x1, 0x1, + 0x0, 0x1, -0x1, - 0x1, + -0x1, + -0x1, + -0x1, 0x0, + -0x1, + -0x1, 0x0, - 0x1, - 0x1, - 0x1, - 0x1, -0x1, + 0x0, 0x1, + 0x0, 0x1, - 0x1, + 0x0, -0x1, + 0x0, 0x1, 0x1, 0x1, - 0x1, - 0x1, - -0x1, - 0x1, - -0x1, + 0x0, + 0x0, -0x1, 0x0, + 0x1, 0x0, 0x1, - -0x1, 0x0, 0x1, - -0x1, 0x0, -0x1, -0x1, + 0x1, 0x0, 0x0, -0x1, - 0x1, - -0x1, -0x1, -0x1, + 0x0, 0x1, + 0x0, + 0x0, 0x1, -0x1, - 0x0, -0x1, 0x0, 0x0, - 0x1, 0x0, 0x1, 0x1, - 0x1, - 0x1, + 0x0, 0x0, 0x0, -0x1, 0x1, - 0x1, - 0x1, - 0x1, - 0x1, + 0x0, -0x1, + 0x0, -0x1, -0x1, -0x1, - 0x0, -0x1, 0x1, + 0x0, -0x1, + 0x1, + 0x1, + 0x1, -0x1, ] .span(), array![ - 0x1, - 0x0, 0x0, - 0x1, - 0x1, - 0x0, - 0x1, -0x1, - 0x0, -0x1, -0x1, 0x0, - 0x0, -0x1, -0x1, 0x1, -0x1, - -0x1, - 0x1, - 0x0, - 0x1, - 0x0, - 0x1, 0x0, -0x1, -0x1, - 0x0, -0x1, 0x1, - -0x1, - 0x0, 0x1, - -0x1, 0x1, -0x1, 0x0, - 0x1, - 0x1, + 0x0, + -0x1, -0x1, 0x0, 0x0, 0x0, - -0x1, + 0x0, 0x0, 0x1, + 0x0, 0x1, 0x0, 0x1, 0x0, + 0x1, + 0x0, + 0x1, -0x1, + 0x1, -0x1, - -0x1, + 0x0, -0x1, 0x1, - 0x0, -0x1, 0x1, 0x0, - 0x0, - 0x0, - 0x1, -0x1, -0x1, + 0x1, -0x1, + -0x1, + 0x1, + 0x1, 0x0, + 0x1, 0x0, 0x1, 0x1, + 0x0, + -0x1, + 0x0, -0x1, -0x1, + 0x1, 0x0, 0x0, - 0x1, -0x1, + 0x0, -0x1, -0x1, -0x1, 0x1, + -0x1, + 0x1, + -0x1, 0x0, -0x1, + 0x1, + -0x1, + -0x1, ] .span() ), ( array![ - -0x1, - -0x1, + 0x0, + 0x0, + 0x0, + 0x1, + 0x1, + 0x1, 0x1, - -0x1, 0x0, 0x0, + -0x1, 0x0, -0x1, 0x0, -0x1, 0x1, -0x1, - -0x1, - 0x1, - 0x0, 0x0, - 0x1, -0x1, 0x1, - 0x1, - 0x0, -0x1, 0x1, + -0x1, 0x0, 0x0, - 0x1, - 0x1, + -0x1, + 0x0, 0x0, 0x0, - -0x1, 0x0, 0x1, 0x1, - 0x0, - -0x1, 0x1, 0x0, - 0x0, -0x1, 0x1, + 0x0, -0x1, - -0x1, + 0x0, + 0x0, 0x0, -0x1, 0x1, - 0x1, - 0x1, -0x1, - 0x1, - 0x1, -0x1, - 0x1, 0x0, 0x0, 0x1, - 0x1, - -0x1, + 0x0, -0x1, + 0x0, 0x1, + 0x0, -0x1, 0x1, + -0x1, 0x1, -0x1, + -0x1, 0x1, 0x1, 0x0, - 0x0, 0x1, - -0x1, + 0x1, 0x0, 0x0, + 0x0, + -0x1, 0x1, 0x1, + -0x1, + 0x0, 0x0, 0x1, + -0x1, 0x1, + -0x1, 0x0, -0x1, + -0x1, 0x1, 0x1, - -0x1, - -0x1, ] .span(), array![ 0x1, -0x1, - -0x1, 0x0, + 0x1, -0x1, 0x1, 0x0, - -0x1, 0x0, 0x1, - 0x1, - 0x1, 0x0, 0x0, 0x0, - 0x1, - 0x1, 0x0, - -0x1, 0x1, - 0x0, -0x1, - 0x0, -0x1, - 0x0, -0x1, - 0x1, + 0x0, -0x1, - 0x1, -0x1, 0x1, -0x1, 0x1, - 0x1, 0x0, 0x0, -0x1, + -0x1, 0x0, 0x0, 0x1, 0x1, -0x1, + 0x0, 0x1, 0x0, + 0x1, 0x0, 0x1, + 0x0, 0x1, - -0x1, 0x0, - -0x1, 0x1, 0x1, -0x1, + -0x1, + -0x1, 0x0, 0x1, - 0x0, - -0x1, + 0x1, + 0x1, + 0x1, -0x1, 0x1, - 0x0, - 0x0, 0x1, -0x1, -0x1, - 0x0, -0x1, 0x1, + 0x0, + 0x1, 0x1, -0x1, -0x1, - -0x1, + 0x1, -0x1, 0x0, - -0x1, + 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, + 0x1, + 0x1, + 0x0, + 0x1, + -0x1, + 0x1, + 0x1, -0x1, ] .span() @@ -10143,99 +10170,99 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0x8f05500c39e2d37ecc07b71e, - limb1: 0x8d850a0c38fddc660054336d, - limb2: 0xc9e75efe951f2d9, + limb0: 0xd1d001e76ea364a1a6d0f700, + limb1: 0x96883a79bf5fbff880eb69ea, + limb2: 0x21bcd871b2e5a0b7, limb3: 0x0 }, y: u384 { - limb0: 0xbf1877312db834422ebe4915, - limb1: 0x82a5de672cba449ce42fe769, - limb2: 0x76aafe7401e13c8, + limb0: 0xc2b84121786e729ee02af2df, + limb1: 0x48a18b4e4fca38ee5df13963, + limb2: 0x282042dfcc483d5d, limb3: 0x0 } }, Q_high: G1Point { x: u384 { - limb0: 0x5269dcb11ab5ebf5bf64b916, - limb1: 0xe6247166ca697aac810378d9, - limb2: 0x1591fc9abfb0494a, + limb0: 0x8ea22c3bfa47cade1de84979, + limb1: 0x30fa68a4e9ea3eb87e4b65e2, + limb2: 0xd7a065bc4456a86, limb3: 0x0 }, y: u384 { - limb0: 0x82fb0e0836a422743f7d8f6c, - limb1: 0xa777149add21d767357a4190, - limb2: 0xc362e409aab3c05, + limb0: 0xe69fce0cc001b8a0b04409de, + limb1: 0x6ef8782bfdb7b2c9c490c05, + limb2: 0x147d0989a13c9715, limb3: 0x0 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0xa610540d7546716653f432b8, - limb1: 0x3e2ccfdaf921cda53a7b79e8, - limb2: 0xf9f97b0b66e753f, + limb0: 0xccd91c94577f78cf6b5f8600, + limb1: 0x8e1128a1e431f7ba8cdb8df1, + limb2: 0x13064c89deeb431b, limb3: 0x0 }, y: u384 { - limb0: 0xe975b08e64a0a3224e8cfa03, - limb1: 0xdbb4e5817999ce09eabcfdbd, - limb2: 0xadf9cd7c28b42a4, + limb0: 0x36db02e0d77acf5d856db711, + limb1: 0xbc4a20bf3269c26a4f92ece4, + limb2: 0x15c22887efd8227a, limb3: 0x0 } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0xd721aab39c4f20471bb8f8ae, - limb1: 0xd084156bf15d1cf406d32dce, - limb2: 0x1443f620ae3ff243, + limb0: 0x97454e3156f8df769e0a486f, + limb1: 0xd9e814cac221c2fc0c849726, + limb2: 0x3509f4b44bd6021, limb3: 0x0 }, u384 { - limb0: 0x22ec4f236c721979fe089da3, - limb1: 0x5c23a8519a77f8e9e474535e, - limb2: 0x29971f6ddedc4fc2, + limb0: 0xd2929291e37b6a1aaf37f548, + limb1: 0xb670015a5fe92f1e7c68460f, + limb2: 0x1cb205376d31eab6, limb3: 0x0 }, u384 { - limb0: 0xba6a5567eef865928bbdcbb9, - limb1: 0x3b4ae01c8292958448dc5567, - limb2: 0x22e4760ddea744c4, + limb0: 0x8bfb0b35bdfe2c2d37cd1dc, + limb1: 0xc8dfd9e074963ebb34a22a2e, + limb2: 0xbbd96bbcb5cc122, limb3: 0x0 }, u384 { - limb0: 0xf48ff206ad073483229ad122, - limb1: 0x7e436ff73b67767896a0fccd, - limb2: 0xc08884182734d14, + limb0: 0x6d33a5577d63db4fe7552ab3, + limb1: 0x96f0c85ceec36f88638addd, + limb2: 0x1e94330974201266, limb3: 0x0 }, u384 { - limb0: 0x2900952c6920b9c8250decee, - limb1: 0x7eb945282edb33f1b3468b97, - limb2: 0x2bcde51f11214674, + limb0: 0xc0ef72457e1a0a42723b60e3, + limb1: 0xd17ed601507aac5ce55b6fac, + limb2: 0x24cbec6b478d71b2, limb3: 0x0 }, u384 { - limb0: 0xc06515632a25ecc3723210b7, - limb1: 0x2c34ccf2a572e95248eaaa14, - limb2: 0x2739e0bce0f7c523, + limb0: 0x6dca199b778bf1525b08ad6f, + limb1: 0x1480bc4a7433f8993fb6451a, + limb2: 0x104181e99e9db477, limb3: 0x0 }, u384 { - limb0: 0x15a6cc601d661545b84123cb, - limb1: 0x6caae56c0c1b9ccb497b4882, - limb2: 0x2aeb754cd7fac607, + limb0: 0x9af97c436cc75910388853c9, + limb1: 0xf63e7d654429c235a89becf7, + limb2: 0x27a1808ad358c7a0, limb3: 0x0 }, u384 { - limb0: 0xb034de23fdbc2d7d0fd176f0, - limb1: 0x980ab61b4c279cbf3da49abd, - limb2: 0x258f96f20cf782b6, + limb0: 0xfb04b9cac1cef65fd5707370, + limb1: 0x4ebc89f5fb74d6cd5992ad35, + limb2: 0x1085eb33ddd27b6b, limb3: 0x0 }, u384 { - limb0: 0x14575d042273f4f56b2a62f8, - limb1: 0xdc2822db40c0ac2eb7980871, + limb0: 0x34f9e1fc63bc2f0c6eadf476, + limb1: 0xdc2822db40c0ac2e74e9e736, limb2: 0x183227397098d014, limb3: 0x0 } @@ -10243,57 +10270,57 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0xde385aa58cd6aaf28d2a9a34, - limb1: 0xd1d0095fdd30e27a8ad45e5b, - limb2: 0x4d04a555a9dd265, + limb0: 0x66efc5be9c5b54677750887b, + limb1: 0x9a4b62c6aa1428f088082960, + limb2: 0x2b04a136e5b027c3, limb3: 0x0 }, u384 { - limb0: 0xda292d6e214034ca7e1efa89, - limb1: 0xb4d9ce5b7cf50c92131b6008, - limb2: 0x220cfddc24ca644d, + limb0: 0x4037b9531aae19bc22f2f0cb, + limb1: 0x30533867fcb970ce34fb3275, + limb2: 0x2f64ef538375f1ce, limb3: 0x0 }, u384 { - limb0: 0xeb2e84255b5d97527c0c3b10, - limb1: 0x20f00151fcdc4abbedd062ff, - limb2: 0x2a411025115151fd, + limb0: 0xedda9ec58424866ce50884e5, + limb1: 0x46d7634f7450a06bfabb4a28, + limb2: 0xcf08b9452c6449e, limb3: 0x0 }, u384 { - limb0: 0x66a2956b304b6b962fa4dd25, - limb1: 0xd8c4910f23618ac57d84ac86, - limb2: 0x2d53e72a28480690, + limb0: 0xdb1ba92ba59cfd4a9aad1172, + limb1: 0x449811df7e78bcfebddd949d, + limb2: 0x70eb96e8548038, limb3: 0x0 }, u384 { - limb0: 0x35ecc24a2f18596a1e13ec33, - limb1: 0x2121d1702e5e7ccd53e3a9f5, - limb2: 0x2a703b36026aedd3, + limb0: 0x7c78271d1005450c1416500, + limb1: 0xa11022372a6638b58e9ed30e, + limb2: 0x2d8157c0e8b501fa, limb3: 0x0 }, u384 { - limb0: 0x2a0676dcde44bbd59c758ff3, - limb1: 0x20135c92c932aa5d1db88e4a, - limb2: 0x3e9325f780d4d7c, + limb0: 0x92c5a05a11bfc351a59ac5ec, + limb1: 0x181865d165c9a9f180069d58, + limb2: 0x232c2ac42fffb5ef, limb3: 0x0 }, u384 { - limb0: 0xef02fb56cb3323f067f204ef, - limb1: 0xd9cc934a145c1483c80d9138, - limb2: 0x15d11c26187eca64, + limb0: 0x9b781b8826ff6554db0e6251, + limb1: 0xb524d327862abab7cc12c5dc, + limb2: 0x111a9fc3aec3dee, limb3: 0x0 }, u384 { - limb0: 0x2293671d405744172b05ae8a, - limb1: 0x59b31bd5c88446a00454b941, - limb2: 0x1b550799768d3cff, + limb0: 0x6e4f338da615ef33a7b733f4, + limb1: 0x176ad50a8048ff3dd7a58b3e, + limb2: 0x16265bd05af915b2, limb3: 0x0 }, u384 { - limb0: 0xa7c57383266c375bc1aac99d, - limb1: 0xda8c5b65b1d0781d4b84fa5e, - limb2: 0x25b1e9fbf6ef2197, + limb0: 0xa6af69560419e03edd44abf5, + limb1: 0x6458c3b381cee6477c96bdfd, + limb2: 0x19bd8343bf52d0f4, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -10301,138 +10328,138 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xc02b653dfe2d32b7ebbe0be2, - limb1: 0x83c21c51876c86bc2148aeed, - limb2: 0xa375e6f8ca918de, + limb0: 0x4b8216b7257a478dba82fc2, + limb1: 0xb8bc5acff90911afb3de1092, + limb2: 0x249279a3b0340bc2, limb3: 0x0 }, u384 { - limb0: 0x66324617a9148a99890b115e, - limb1: 0x7bc545011a88e00ece179a28, - limb2: 0x26dae488bed78fc2, + limb0: 0x9ece240e45af8a83ffc5b198, + limb1: 0x2519f7a049415e5e45992ab4, + limb2: 0x1107dbe354a8ca20, limb3: 0x0 }, u384 { - limb0: 0xe3f87e7d239dfafd378ee036, - limb1: 0xda11b6a8a7f6797f7d6ea282, - limb2: 0x210ef10bac06897e, + limb0: 0xdc142b123e1a7cef4b5d45c8, + limb1: 0x4dd07c9894d008f6ab6e400d, + limb2: 0x23cb8ade77c9f951, limb3: 0x0 }, u384 { - limb0: 0x1b7c5033ac23c06c512bacef, - limb1: 0xed5f6a8f7918ae8b2ddc267e, - limb2: 0x2225a6af20e957af, + limb0: 0xcaaab51db28d29e9cd494b16, + limb1: 0x305badf5f160e6af9f7e7716, + limb2: 0x14f2187a822e9dbd, limb3: 0x0 }, u384 { - limb0: 0x21b6e8026babc6c4404b524, - limb1: 0xdd893b833bbfa939b9175b5e, - limb2: 0x2e78740ef3bd1d64, + limb0: 0xfbd8ced30314a32a368ea03a, + limb1: 0xac5fb8e296c3f0c48e9b5d8e, + limb2: 0xbef70666a8cf209, limb3: 0x0 }, u384 { - limb0: 0x87fb100da82fe4033ed0c0a1, - limb1: 0x5f1ec380e13eeb659e8cfec1, - limb2: 0x549236fdc58655b, + limb0: 0x56c1ccd6f10cdeb4bce3bff7, + limb1: 0xbefdae42c715614d15ee7c41, + limb2: 0x820575d7ade5409, limb3: 0x0 }, u384 { - limb0: 0x3bc8b11c95e64826c5b6de66, - limb1: 0x1f7c424715e0310e99b28e1c, - limb2: 0x18da712c801ccea5, + limb0: 0xe64e3a96f4206bc8bcb24d03, + limb1: 0x50270bd855627b4cd97f7e0c, + limb2: 0x1f1baf666958c19f, limb3: 0x0 }, u384 { - limb0: 0xa4209012b86e70362d607a32, - limb1: 0xd89c7bd8c7e4d4bc21529057, - limb2: 0x43d48e57c97afa4, + limb0: 0x89994b048f3eb012369af53d, + limb1: 0x53f455228ef245ce82cb6a76, + limb2: 0x1d12f22871a2a5bf, limb3: 0x0 }, u384 { - limb0: 0x4dd085cce30bef7564c44b4c, - limb1: 0xd3d1efc3513ee073b669fbc4, - limb2: 0x2f59c7e9b4e3c9d0, + limb0: 0xddf6b3f8e27e495b0207105c, + limb1: 0x5390648eb6fbee87273f89b3, + limb2: 0x1c19c164a800a58f, limb3: 0x0 }, u384 { - limb0: 0x296c5d1215c45d65279bf137, - limb1: 0x479e7c64e59d1cfd7dad75e2, - limb2: 0x274148be5618390e, + limb0: 0x9e5eb1bd3a0f2e415cb11c86, + limb1: 0x9c68e67ac959b474ffe6ae4a, + limb2: 0xdc3ef0820b7dbac, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x9aa90ff0a68400d7a77fce9c, - limb1: 0x75701c1f9792a76fa07d1b13, - limb2: 0xe70df000fd97731, + limb0: 0x63ebbc215cd0e508b4f79ee3, + limb1: 0x5e419ce6fb39ca166915a6fe, + limb2: 0x204546beeead36f7, limb3: 0x0 }, u384 { - limb0: 0xbd97f32feb7f8631c962f50d, - limb1: 0xadecdfa573dc74fb0a4f4af7, - limb2: 0x55e5caeabfbec95, + limb0: 0xefc396ded7c93506b7ded7d3, + limb1: 0x20591dcaf329a1af6feec23c, + limb2: 0x2d663114c7fe9517, limb3: 0x0 }, u384 { - limb0: 0xf0a7f75599d7adc9c32ab6a2, - limb1: 0xf22f7888f3922f789a6e53dc, - limb2: 0x1dfa93897190b5a3, + limb0: 0xc98fdc508c6d9346af198eaf, + limb1: 0xd48629ee5cf1e143f031de7a, + limb2: 0x26d1a2bcf852cdda, limb3: 0x0 }, u384 { - limb0: 0x413c85cca577d5876b1f3715, - limb1: 0xeb7d31204452d20fd45f8ecc, - limb2: 0x2c0362ee1112a5c4, + limb0: 0xf842c1418d324c474757bcd1, + limb1: 0x68139865257e5fecc1a0e739, + limb2: 0x2c5763fb9eada86c, limb3: 0x0 }, u384 { - limb0: 0x429a14a4fa279cc44ee3c74d, - limb1: 0xef4e7188838c79e148421e34, - limb2: 0x1030c42588764d49, + limb0: 0x1e38e100d94d7269dd4027f6, + limb1: 0xea92cde9f76811d61a536beb, + limb2: 0x26bc0b3d9a001740, limb3: 0x0 }, u384 { - limb0: 0xd01e2eba0b3ebc78efeda2, - limb1: 0xc8d9d153d6f2f175af78a34d, - limb2: 0x59858d098479a47, + limb0: 0xd547eab94122b83424dedc1b, + limb1: 0x1e800956a2aaed854bcc4d0f, + limb2: 0x15ac6efb20622618, limb3: 0x0 }, u384 { - limb0: 0x62c7f25519a3bf39b680f164, - limb1: 0xf589bf805d731795a6aa8b0e, - limb2: 0xdfe9eb6af61256b, + limb0: 0xad83fbc41a9b2d492bd83865, + limb1: 0x64068b5610f8ed262215e633, + limb2: 0x3a5e98b99193a04, limb3: 0x0 }, u384 { - limb0: 0xccc3628777dd0d81ee2afd43, - limb1: 0xbd9a998484e89ff231df0095, - limb2: 0x1ba6b51ca3af647d, + limb0: 0x81d188004b0109be076d064e, + limb1: 0x76b015e9a83e85b3e68c9fa6, + limb2: 0xf2bce4c373d02bd, limb3: 0x0 }, u384 { - limb0: 0x50733c4bd94849bb307bf23c, - limb1: 0x3f17e356dba161f9d144a843, - limb2: 0x1436536d9a7771f0, + limb0: 0xb5f04741a5cc4be08c6ecf3d, + limb1: 0xd482257ee833ac0cc6c8022e, + limb2: 0xf9c17a9ab94e878, limb3: 0x0 }, u384 { - limb0: 0xef02fb56cb3323f067f204f2, - limb1: 0xd9cc934a145c1483c80d9138, - limb2: 0x15d11c26187eca64, + limb0: 0x9b781b8826ff6554db0e6254, + limb1: 0xb524d327862abab7cc12c5dc, + limb2: 0x111a9fc3aec3dee, limb3: 0x0 }, u384 { - limb0: 0x2293671d405744172b05ae8a, - limb1: 0x59b31bd5c88446a00454b941, - limb2: 0x1b550799768d3cff, + limb0: 0x6e4f338da615ef33a7b733f4, + limb1: 0x176ad50a8048ff3dd7a58b3e, + limb2: 0x16265bd05af915b2, limb3: 0x0 }, u384 { - limb0: 0xa7c57383266c375bc1aac99d, - limb1: 0xda8c5b65b1d0781d4b84fa5e, - limb2: 0x25b1e9fbf6ef2197, + limb0: 0xa6af69560419e03edd44abf5, + limb1: 0x6458c3b381cee6477c96bdfd, + limb2: 0x19bd8343bf52d0f4, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -10442,114 +10469,114 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0x3bd93e1796b564949b6cc1bf, - limb1: 0x11d315f6e26cd64fc0273da0, - limb2: 0x8689632899dee75, + limb0: 0x11eb2b8eef79162525ef35a0, + limb1: 0x8adeb002607b4c1ba37c75b7, + limb2: 0x40ff14c4bb27c8f, limb3: 0x0 }, u384 { - limb0: 0x5ba6436d71a51eb8a04f598c, - limb1: 0x57a6c188714ffa4ebfab9873, - limb2: 0x1ee4bece88f712f7, + limb0: 0x4ddbe8ca3d7e99542261b64e, + limb1: 0x10e9a6bbfb68fd98083fa37, + limb2: 0x2f1cb5ce57d99ed5, limb3: 0x0 }, u384 { - limb0: 0x48e33311a09310e2e57acf94, - limb1: 0xe304023e51d4c780b75fae5e, - limb2: 0xd91a6d907f323f3, + limb0: 0x8f1b0c45deb5fdf6859628ae, + limb1: 0xd08b0b50fa7c0a4947900bde, + limb2: 0xece587d003ed7b2, limb3: 0x0 }, u384 { - limb0: 0x9b5983e7ddfbc12630336f56, - limb1: 0xb7e378b9b33bad3b872c9121, - limb2: 0x1ce667090d579aa5, + limb0: 0x57cd8fc14cb80f8f1181e7a3, + limb1: 0x3ac958d1cb47a82ebd2a2399, + limb2: 0x2d37f8102c5f3102, limb3: 0x0 }, u384 { - limb0: 0x3aab79937bbf176e328ad574, - limb1: 0xfba6543807892ea556ee25ac, - limb2: 0x9c16aa9f347de17, + limb0: 0x5caf0d77c4f22bff4058ec86, + limb1: 0xf6b6a9bb28fd5d5da5a15c4, + limb2: 0x206a5eed9e3b54d, limb3: 0x0 }, u384 { - limb0: 0x665e5231ea87683b62f56be2, - limb1: 0xe89307899223042600e3af81, - limb2: 0x26dd8213c881bb80, + limb0: 0x7a8e1978c6be9de87cbcb140, + limb1: 0xd595b648cd3f50fe98e9cc30, + limb2: 0xed97c6651194729, limb3: 0x0 }, u384 { - limb0: 0x6db1d175bc1e3ddb955366d4, - limb1: 0xd0af5cfead2bb01f9920ba36, - limb2: 0x2043958c439ba3b9, + limb0: 0xbdb01a71150f7d74722b5939, + limb1: 0xb1f12af08a1d18c7119faae7, + limb2: 0x1d6dd69917fbedef, limb3: 0x0 }, u384 { - limb0: 0x46aa31c6db6a822f12312b91, - limb1: 0xb2eba5bdec9a010b52f76828, - limb2: 0x20cc97a2e26f6734, + limb0: 0x3cd923670bfbd01a8539b56e, + limb1: 0xc284b59aefbfbc6413398c23, + limb2: 0x26a40367732418e8, limb3: 0x0 }, u384 { - limb0: 0x189038d82952323468dc35e, - limb1: 0xdc2822db40c0ac2e8083479a, - limb2: 0x183227397098d014, + limb0: 0x97d3fff2dd90d0b6a8d5e4b8, + limb1: 0xb85045b68181585d4a84a7b4, + limb2: 0x30644e72e131a029, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0x68aa1fe56d3f6d5a7889d807, - limb1: 0x901001e886a84cc3c6c1f44b, - limb2: 0xb0a230bc61fff88, + limb0: 0x2a705e58609568d0d9730589, + limb1: 0x4941dab61bc7f321af660e25, + limb2: 0x2e01a6c7a973a7bf, limb3: 0x0 }, u384 { - limb0: 0x40de08361d0266b3ccd65c3c, - limb1: 0x6a33af6701ee0452377a5d19, - limb2: 0x700966eef87a9ab, + limb0: 0x82d8c51c3dd30c83943490e1, + limb1: 0xa5c4ffadc08e417e89491f15, + limb2: 0x2807462ae465eef0, limb3: 0x0 }, u384 { - limb0: 0x11946a094820e51781538084, - limb1: 0xe6bc96685c45f04494e5d5af, - limb2: 0xa716a07b1fa4edf, + limb0: 0x71ee45731e816e662d1bf61, + limb1: 0x650e22280750260f4865f973, + limb2: 0x2ead24760446b0a6, limb3: 0x0 }, u384 { - limb0: 0x40a308018583691ea77f2b8e, - limb1: 0x33fd2c6a6a8e11ef6ef22306, - limb2: 0x72a8b46e8a4839c, + limb0: 0x84461ccbacc84a36d281f3a8, + limb1: 0x9db885fb640afc0f352f2473, + limb2: 0x25d71fe1ca5298ca, limb3: 0x0 }, u384 { - limb0: 0xd836513a73b8bda119b8ceaa, - limb1: 0xee8ae23e29042a75040cd3d7, - limb2: 0x2c35b24e42a3289, + limb0: 0x80442dd468cbdbe36a776d19, + limb1: 0x49b4a323e3078cab378a79c9, + limb2: 0x2a79fceef9d9a1b3, limb3: 0x0 }, u384 { - limb0: 0x65c7067cc22238cbfb0ff34c, - limb1: 0xeed75e7ecba7393476b37da9, - limb2: 0x10ef0cc4428389c9, + limb0: 0xbb29ba6857f2b30020dd7442, + limb1: 0x2d28a553a57ce14abb65e001, + limb2: 0x69e49ab23336d0c, limb3: 0x0 }, u384 { - limb0: 0xc212dca2b43afeb63499933b, - limb1: 0xa061be2a331e7bb975599f1c, - limb2: 0x2ad607dfb8f0424, + limb0: 0x3051d842c6ecbe626be33d9, + limb1: 0x3aa09d823097a7e26c12f41c, + limb2: 0x2c31962afff43f73, limb3: 0x0 }, u384 { - limb0: 0x7c4c911822e1452c10933c61, - limb1: 0xe3ba22a0fba729cfd1999e5e, - limb2: 0x11af08ae858e8806, + limb0: 0x616bcc20fb61cd0ae53cfd36, + limb1: 0xb8d7b77c70296fdf4cd41a64, + limb2: 0x16a62e34b1139db2, limb3: 0x0 }, u384 { - limb0: 0xe460e6de45991ee4ce4dc7a5, - limb1: 0x81ecf40b2064d9d6cad5b4f2, - limb2: 0x1cbe63512090cb26, + limb0: 0xe9dd3f0178757a02662d597c, + limb1: 0xc9e69588574467877f36c205, + limb2: 0x2e005559adf30725, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -10557,138 +10584,138 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xa57032ea651aea76093ff1b8, - limb1: 0x4ff73110a206ee54ff8ded9a, - limb2: 0x1c663214ccc785f7, + limb0: 0xe93c44a2bed0a63748464f2c, + limb1: 0x3f3f37aa88aa5135ccaa826b, + limb2: 0x208e2230a287e7d0, limb3: 0x0 }, u384 { - limb0: 0x901e2c94b93c2ccc2564f50, - limb1: 0xc3700f619670355f8a8d6b94, - limb2: 0x1315167869506ced, + limb0: 0xaa1172a2d95987083e82ff64, + limb1: 0xc10604dd25539a0cfaac9835, + limb2: 0x4aaf38e069b3b30, limb3: 0x0 }, u384 { - limb0: 0xab8a0f1e3398829ace105594, - limb1: 0x277e32b635df8992d70e57a2, - limb2: 0xf1d8851839ca25f, + limb0: 0x65494181c877cd5580fe1804, + limb1: 0xcc5002236f1f19dd8072c5a8, + limb2: 0x41845a62f96d0be, limb3: 0x0 }, u384 { - limb0: 0xf7bd3e9d46d4f5e67757c0d6, - limb1: 0x2d446b403146842807f27c07, - limb2: 0x1f9b13ca932c23df, + limb0: 0x5e99e6c6e1a2194e4cc733a7, + limb1: 0x11a1d9def582f6283b946848, + limb2: 0xa163a7cef1b19f4, limb3: 0x0 }, u384 { - limb0: 0xa6967fb3875f238cb0c7085f, - limb1: 0xf6386a0082f1ab85d5b9b9b8, - limb2: 0x20a78c7952defdb1, + limb0: 0x9283d3d65fa88e32ebe0fe6f, + limb1: 0xae8332947f71f6086e7efb2d, + limb2: 0x1fb7f2f449fb8b21, limb3: 0x0 }, u384 { - limb0: 0xf409dbb7e1e4149f13c2e44, - limb1: 0x378807a01269957e6dfe0364, - limb2: 0x28a6b21ae11de58e, + limb0: 0x9e0f9ccfac263cbf495a580c, + limb1: 0x4871f1cb8b38ca3cf1e63f0, + limb2: 0xa7e0b11c59989ba, limb3: 0x0 }, u384 { - limb0: 0x2fd85f227f1a7aadae7d318e, - limb1: 0xc6c402ca87485465cd185b15, - limb2: 0x9179179b3d3749a, + limb0: 0xa2001a60ac1e29e1f0d85751, + limb1: 0xf289e2db60caf47ce5d90a1d, + limb2: 0x18d3514304bf1367, limb3: 0x0 }, u384 { - limb0: 0xd00eaf168886c0ac9222c249, - limb1: 0xfc3f3b1dc4c1ce8b62fa819a, - limb2: 0x95e3c997ff0f824, + limb0: 0x817f7c45c110bb4881ef3635, + limb1: 0x4b8cd2bf744964f738884ff7, + limb2: 0x101a92c775bedd57, limb3: 0x0 }, u384 { - limb0: 0xf0fad767fb46b1804573f6df, - limb1: 0x7e7a1a97ae9c2bbcebe7936b, - limb2: 0x18bd8e0183dc766b, + limb0: 0x883688e5d45c866b1be551bb, + limb1: 0x20f95ed0331a660ac73f4074, + limb2: 0x1137ac33f4f992f, limb3: 0x0 }, u384 { - limb0: 0x5f2ea7ae5a1ef45ead7e7d98, - limb1: 0xdba41d5785f56d210bc4d1ff, - limb2: 0x1926ec7e44daa425, + limb0: 0x61dd27f819deed73b4481092, + limb1: 0x2b74ec984a03f8cddafc6db8, + limb2: 0x2eb4f70334c6c17b, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x39fe5fb047be480f699d8815, - limb1: 0xb03005b993f8e64b5445dce2, - limb2: 0x211e6923525ffe99, + limb0: 0xae6d85eea97f2244db5f160d, + limb1: 0x6b2504b5505528a9df2f554c, + limb2: 0x293c577139f7b6ea, limb3: 0x0 }, u384 { - limb0: 0xc29a18a25707341b668314b4, - limb1: 0x3e9b0e3505ca0cf6a66f174b, - limb2: 0x1501c34cce96fd02, + limb0: 0xb7a6ba3a41380d5d0ba3b815, + limb1: 0x80ae739c3ea813c06cd8881d, + limb2: 0x174d359aeace8c7e, limb3: 0x0 }, u384 { - limb0: 0x34bd3e1bd862af4683fa818c, - limb1: 0xb435c33914d1d0cdbeb1810d, - limb2: 0x1f543e1715eeec9f, + limb0: 0x447917eb1d772c85777b4395, + limb1: 0xbe89db0b12edc172aa2f1736, + limb2: 0x2b3ed07c4a70d19f, limb3: 0x0 }, u384 { - limb0: 0x2a9337e9fdc9a8b66f075ab1, - limb1: 0x2c078727c652829213985d5e, - limb2: 0x2089c4e0800d8a5d, + limb0: 0x7ded5513b28ca330c781e8ac, + limb1: 0xf97a9b84c364de36886f3bcb, + limb2: 0xe5a1b1464d691a1, limb3: 0x0 }, u384 { - limb0: 0xc980fbe5782c9f971a00c83a, - limb1: 0x35d456217cfa83b143a0d8a0, - limb2: 0xf4aa7dd9c064149, + limb0: 0xca4feef1c3d4fbe94a23e057, + limb1: 0x59f217f5e520de6769644cbd, + limb2: 0x1648519f2e5df38d, limb3: 0x0 }, u384 { - limb0: 0xda77b2f2526703649a065d21, - limb1: 0xfaf26c2e3dba4384617ee419, - limb2: 0xcda41e198534c13, + limb0: 0xd02a4902fd9fa3cfeced1ee0, + limb1: 0x3437cc6c76457191e3162ee6, + limb2: 0x1223b3048caf57a1, limb3: 0x0 }, u384 { - limb0: 0x86db9de9a2346541454be53f, - limb1: 0x152266e903e9851bceff005c, - limb2: 0xf32acc0db51900a, + limb0: 0x540015b07db309a4bd45975e, + limb1: 0x24a98d5e714dea9db2e3c113, + limb2: 0x193ef70a269a76a7, limb3: 0x0 }, u384 { - limb0: 0xe4aa39f5a03c010e72f58686, - limb1: 0xe169046a9a784f86e1584461, - limb2: 0x76c26bd93a42a74, + limb0: 0xd3a3fd1ce2b02ad669346a2d, + limb1: 0x39b3e2c30812b8def03f3d3, + limb2: 0xda3eaa74ab13a78, limb3: 0x0 }, u384 { - limb0: 0x420625fd1aac7d4cb4ff4fad, - limb1: 0x3fdaf3329d315fda831c75f, - limb2: 0x66199d1e1d2aaea, + limb0: 0xa7dde252491208d9a26b8628, + limb1: 0x1a3bda7fa84767260a0750f0, + limb2: 0x2fd6acd26aa9422a, limb3: 0x0 }, u384 { - limb0: 0xc212dca2b43afeb63499933e, - limb1: 0xa061be2a331e7bb975599f1c, - limb2: 0x2ad607dfb8f0424, + limb0: 0x3051d842c6ecbe626be33dc, + limb1: 0x3aa09d823097a7e26c12f41c, + limb2: 0x2c31962afff43f73, limb3: 0x0 }, u384 { - limb0: 0x7c4c911822e1452c10933c61, - limb1: 0xe3ba22a0fba729cfd1999e5e, - limb2: 0x11af08ae858e8806, + limb0: 0x616bcc20fb61cd0ae53cfd36, + limb1: 0xb8d7b77c70296fdf4cd41a64, + limb2: 0x16a62e34b1139db2, limb3: 0x0 }, u384 { - limb0: 0xe460e6de45991ee4ce4dc7a5, - limb1: 0x81ecf40b2064d9d6cad5b4f2, - limb2: 0x1cbe63512090cb26, + limb0: 0xe9dd3f0178757a02662d597c, + limb1: 0xc9e69588574467877f36c205, + limb2: 0x2e005559adf30725, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -10698,9 +10725,9 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0x599c4a434dd30cf3c4adf62f, - limb1: 0xaf2c6e16638fc30389785d98, - limb2: 0x23a8069ea239697f, + limb0: 0xcd6286dc309244841937671d, + limb1: 0xc80460896b3b431569ad5785, + limb2: 0x106c0841fc9af728, limb3: 0x0 }, u384 { @@ -10713,15 +10740,15 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0xf8fd8c78735bc69e6e9903c, - limb1: 0xfa6fd1d16be69a25274c8834, - limb2: 0x2fc692281903d557, + limb0: 0x9744429c718cd1a671245f53, + limb1: 0x820a07960c27e09410107083, + limb2: 0x14d5e52faa7b9b44, limb3: 0x0 }, u384 { - limb0: 0x6ff799ceac242ebac5241179, - limb1: 0x93ff0474bdf6100bdc0277cf, - limb2: 0xb32ba276b12e19f, + limb0: 0xcf681bcea5948694f352dce, + limb1: 0xf944b46fb36521ea8c5a76bd, + limb2: 0xfe3fb8d3e00f287, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -10729,49 +10756,49 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xe90569a30f35e6fbc17253c9, - limb1: 0x632cc4d75aedebe16c4bc0cf, - limb2: 0xebc54148c81af02, + limb0: 0x8c6462d7430dcfc1129bd411, + limb1: 0x5523e84939df531e2178cca8, + limb2: 0x26211295d20e84e3, limb3: 0x0 }, u384 { - limb0: 0xcff1b9070ebc728a5739d245, - limb1: 0xed8c5a492d0a15a72c5bfb64, - limb2: 0x2ad837d12740a7a0, + limb0: 0x69301c7f7f32abfa620d1e90, + limb1: 0x270a2cd78576d4d2bdb31812, + limb2: 0x245312786b6cd6cb, limb3: 0x0 }, u384 { - limb0: 0x983aa5cd372641fdf0096eab, - limb1: 0x18725ddcabced55dcbfde4c5, - limb2: 0xd3ebc94e3111151, + limb0: 0x49d11ea2511d97100b06c146, + limb1: 0xc47cf9b2e3f5783386b06c27, + limb2: 0x8adeaec6a5a2bc1, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x5dcbf53c1d601d1003c2b626, - limb1: 0x7eaeea0740b11db446e2c379, - limb2: 0x2e8b199288a83fb4, + limb0: 0x5d5afd481885e8dc7af020b2, + limb1: 0xcdcdd10ba2f6495e98afe6f9, + limb2: 0xe1d611c1e4131a3, limb3: 0x0 }, u384 { - limb0: 0x4fe6cd6c046c8c304f6c346b, - limb1: 0xbbfd0d5e39e230239407676e, - limb2: 0x21982e764138a4de, + limb0: 0x26e38536bf0bd93bed9f896a, + limb1: 0xebce1d4f1a2f65bfa50f6437, + limb2: 0x2fabf2a7ba02d797, limb3: 0x0 }, u384 { limb0: 0x3, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xf8fd8c78735bc69e6e9903c, - limb1: 0xfa6fd1d16be69a25274c8834, - limb2: 0x2fc692281903d557, + limb0: 0x9744429c718cd1a671245f53, + limb1: 0x820a07960c27e09410107083, + limb2: 0x14d5e52faa7b9b44, limb3: 0x0 }, u384 { - limb0: 0x6ff799ceac242ebac5241179, - limb1: 0x93ff0474bdf6100bdc0277cf, - limb2: 0xb32ba276b12e19f, + limb0: 0xcf681bcea5948694f352dce, + limb1: 0xf944b46fb36521ea8c5a76bd, + limb2: 0xfe3fb8d3e00f287, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -10781,25 +10808,12 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0x2071e50f455a55e20eadab80, - limb1: 0x1e5f852423bebf594372ea6, - limb2: 0x17024830c17decd, + limb0: 0x273660ff37d85b97bec4b577, + limb1: 0x84bdee1afb4ee2ea429723a1, + limb2: 0xbb93be14af1f9c0, limb3: 0x0 }, - g_rhs_sqrt: array![ - u384 { - limb0: 0x99b263cc87d89ff29b2c9d0b, - limb1: 0xe6a84ac7a221793e6dcc9526, - limb2: 0x181ca5b75778c138, - limb3: 0x0 - }, - u384 { - limb0: 0xd89ed7a38170cbf1d34d3da3, - limb1: 0x366cc05c77654c5ea611c729, - limb2: 0x555a28decd9e21b, - limb3: 0x0 - } - ], + g_rhs_sqrt: array![], }; let res = msm_g1( points, scalars, scalars_digits_decompositions, msm_hint, derive_point_from_x_hint, 0 @@ -10807,15 +10821,15 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0x7ea4a8cc6075d334d2b75b13, - limb1: 0x5c79bc44d76ef1467dae55a8, - limb2: 0xd3ae091e1b34d32, + limb0: 0x21172f7bb34fefdb61660a9d, + limb1: 0xdc135c8873d99ffb980d0914, + limb2: 0x17e2a8414c0e19e9, limb3: 0x0 }, y: u384 { - limb0: 0xe425dfc861142be86c311ba3, - limb1: 0x7025affd7058583371a6ccb5, - limb2: 0x1f923beb5e443fed, + limb0: 0x982966631d93440b0295dcc4, + limb1: 0xc9eb32718b25410f71dc8211, + limb2: 0x1b91684d90009bf4, limb3: 0x0 } } @@ -10828,23 +10842,23 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0xdbcd264ccca097c28c7ba4d8, - limb1: 0x5a22add1ce5fa66cea3aeb61, - limb2: 0x9503d0db99dd2c0b1dc3a697, - limb3: 0xadc32aa71dd223542c4e1a3 + limb0: 0xe4f817e54aede0613c17035c, + limb1: 0xdff1f15010392a6da1f95a6, + limb2: 0xbed78d3d341e911d49f15454, + limb3: 0x18154782ce0913b21588066d }, y: u384 { - limb0: 0xfe7efebd8e2a74a562a6266e, - limb1: 0x771f7ce3e24333c12ae20e6f, - limb2: 0x25380c3e0a856e53c82f3664, - limb3: 0x160b122148d2270a8bf6b69c + limb0: 0x3d77d61326ef5a9a5a681757, + limb1: 0xd3070afd4f0e121de7fcee60, + limb2: 0xdf9ef4088763fe611fb85858, + limb3: 0x11a612bdd0bc09562856a70 } }, ] .span(); let scalars = array![ u256 { - low: 0x76cf4677f1af6d88518bff98052fc909, high: 0x572ea49d3ee2308157e41a8f8af20197 + low: 0xb4862b21fb97d43588561712e8e5216a, high: 0x12cfa194e6f4590b9a164106cf6a659e }, ] .span(); @@ -10854,169 +10868,169 @@ mod msm_tests { array![ 0x0, -0x1, - 0x1, - -0x1, 0x0, - -0x1, + 0x0, + 0x1, + 0x1, 0x1, 0x1, 0x1, - -0x1, - -0x1, 0x0, - -0x1, 0x0, - -0x1, - -0x1, + 0x1, -0x1, 0x0, 0x0, 0x1, 0x1, + 0x1, 0x0, + 0x1, + 0x1, 0x0, - 0x0, + -0x1, + 0x1, 0x1, 0x0, -0x1, 0x0, 0x0, -0x1, - -0x1, + 0x1, + 0x1, + 0x1, 0x0, -0x1, 0x1, 0x0, + 0x1, 0x0, -0x1, -0x1, - -0x1, - 0x0, 0x1, 0x1, - -0x1, - 0x0, + 0x1, 0x0, -0x1, + 0x1, + 0x1, 0x0, + -0x1, 0x0, -0x1, -0x1, + 0x0, + -0x1, 0x1, + 0x0, 0x1, - 0x1, + 0x0, 0x1, 0x0, 0x0, - -0x1, 0x0, - -0x1, - -0x1, - -0x1, + 0x0, 0x1, 0x0, 0x0, - -0x1, - -0x1, - 0x1, 0x1, 0x1, - -0x1, - 0x0, 0x0, - -0x1, 0x0, -0x1, 0x1, - 0x0, + -0x1, 0x1, + -0x1, + -0x1, 0x1, 0x0, 0x1, + -0x1, + -0x1, ] .span(), array![ + 0x1, + 0x1, + 0x1, 0x0, 0x1, + 0x1, + -0x1, -0x1, - 0x0, - 0x0, -0x1, -0x1, - 0x0, 0x0, 0x1, -0x1, -0x1, 0x0, - 0x1, 0x0, 0x1, + 0x0, 0x1, -0x1, 0x1, 0x0, + 0x1, 0x0, + -0x1, 0x0, 0x1, 0x1, - 0x1, - 0x1, - -0x1, - -0x1, - -0x1, - -0x1, - 0x1, + 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, + -0x1, 0x0, -0x1, -0x1, + -0x1, + 0x0, + -0x1, 0x1, -0x1, + -0x1, + 0x1, + 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x1, 0x0, -0x1, 0x0, - 0x1, - 0x1, -0x1, - -0x1, - -0x1, - -0x1, - 0x0, + 0x1, 0x1, 0x0, 0x0, + -0x1, 0x0, 0x1, - 0x1, -0x1, + 0x0, -0x1, - 0x1, -0x1, 0x1, + 0x1, 0x0, -0x1, - 0x1, 0x0, 0x0, -0x1, - 0x1, - -0x1, - 0x1, - 0x1, 0x0, 0x1, + -0x1, 0x1, - 0x1, + -0x1, + -0x1, ] .span() ), @@ -11026,121 +11040,124 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0xafcd9621fea61b64a7586578, - limb1: 0xb465e2710f28fcfbd06e8760, - limb2: 0xcd1c8a70aab97ab88f1622c7, - limb3: 0x6af0f364bf785d972b9fd05 + limb0: 0x29bab3bb3c5a3498ef52c10e, + limb1: 0x1a2cb9165f39a2b96e111e1d, + limb2: 0xa1e1aa80472b71ffe237f65c, + limb3: 0x8d6b69927c3363c5eccadbf }, y: u384 { - limb0: 0xb4cf2b093a500cfd28ea1d31, - limb1: 0x83549c1947f43526ee4901c3, - limb2: 0xe55cc029d1ffab5ff2203a0e, - limb3: 0x90acee01aa2ee1f74b6b366 + limb0: 0x720d96acc81b6630196ccf5d, + limb1: 0xd84a5f28b95187d31a44eafa, + limb2: 0x78579d836e4f34e9573fa265, + limb3: 0x621f59b924be99226c509e5 } }, Q_high: G1Point { x: u384 { - limb0: 0xe4afc42aa9dc88deb964c82, - limb1: 0xe602568f68caa7398fc02d5, - limb2: 0x9b9bf6b847cc34c430ece34c, - limb3: 0x144915ad1ff0439ab142840 + limb0: 0x1f331a3fc12126eebdae3f59, + limb1: 0x2cb7dbc661cf888114515a2e, + limb2: 0xb20395314f340002f87089d1, + limb3: 0x17c6859d5428edf721de9025 }, y: u384 { - limb0: 0x77ba64a102bc6df55745d199, - limb1: 0xf276908e292dd8fb73623603, - limb2: 0x25e8bc1c5262d970c5870672, - limb3: 0x148d9a8478678807eeb09c87 + limb0: 0x66c8ca463bb31730c280588f, + limb1: 0xb724561772624d4a07bde932, + limb2: 0x619e8301e670ee3f7b307d70, + limb3: 0x9a6e9b54bb78587420cb983 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0x1400ff5c299d278e671aaf76, - limb1: 0x8bead9efa9ab52b9965c530f, - limb2: 0xbf5d75a5f15b851b6b63c59a, - limb3: 0x1b901c223a8f8d71e99e709 + limb0: 0x1256cabcc66af1452b941a8, + limb1: 0x8a3694cb214b8b9219d6b558, + limb2: 0x62da7a2bdad5e3fd7f424ab, + limb3: 0x75d1733043d8ba7f9ca3713 }, y: u384 { - limb0: 0xab02943486fe056d9717c558, - limb1: 0xf77d957e89480116ea8c7f7a, - limb2: 0x61570d654219a6a2f33591a0, - limb3: 0x48a968e0efee0e7c126a7fc + limb0: 0x1c80747ef95f644c801874ee, + limb1: 0x33d485f1cc6e1729a06a74a5, + limb2: 0xefa381e03300893b110fae06, + limb3: 0x1435ec08d73e466ee22f00d1 } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0xbfffaee3263b841eaf19541f, - limb1: 0x2167e87897034c142bcb8e39, - limb2: 0xb6c1050e4e352e1c01c4ba43, - limb3: 0x1195ebc137cbbb7a48cf9a1e + limb0: 0x28c84bc715619cfe6affc131, + limb1: 0x465b7062d4104df4775dfbe9, + limb2: 0x824a1e91acc60f97fc19ab9b, + limb3: 0x317b4e47bdae42d8d3938a6 }, u384 { - limb0: 0x148f93c01e18f2a47d63a1aa, limb1: 0x3b92dd1e, limb2: 0x0, limb3: 0x0 + limb0: 0xc39ad3de356e4c0c9158e1c6, + limb1: 0xb39869507b587b118c0f06f9, + limb2: 0x21a5d66bb23ba5c279c2895f, + limb3: 0xd0088f51cbff34d258dd3db } ] .span(), a_den: array![ u384 { - limb0: 0xaa5fdcb16b7565c32958a928, - limb1: 0x7d8b9570ce6290a7d47601d3, - limb2: 0x5fe078259ab276c9bee7ee98, - limb3: 0x17fe907d9c67c18dfa5f8f76 + limb0: 0x992c27e575737c25f0a07636, + limb1: 0xac1be3b60330a92e1b681520, + limb2: 0xb035ee7cbaaac5351dab1d66, + limb3: 0xf53a23912c09841903fdbd8 }, u384 { - limb0: 0x25b94390eeb84cd8cc2ba05b, - limb1: 0x58a8425e192852bb64028d3c, - limb2: 0xe12b518b1fe0a4c146ab4960, - limb3: 0x875d0097bab3e8b959cc90c + limb0: 0x53f5345eecb5eb05d49590ec, + limb1: 0xa635cd168d24b6e7f5274c39, + limb2: 0x25de21f14da493ecbae0dace, + limb3: 0x131625b87d33834621e29b3f }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] .span(), b_num: array![ u384 { - limb0: 0xc0a822e04fe6e13cc87513db, - limb1: 0x668a1859ab97d44b80689809, - limb2: 0xe9c3852b640fb9716dacb468, - limb3: 0x6a334b1108a9d2b09aa2bbd + limb0: 0xc6126345957ccb20d7841cec, + limb1: 0x57f86db1839640f380799bfd, + limb2: 0xe42e050f5dff8b10b97e7115, + limb3: 0x127266a895ae43f6083724fb }, u384 { - limb0: 0xe5cf8ff86b12715db8937c19, - limb1: 0xff7d55c6446725b74879d1c9, - limb2: 0xff60f88405fbdbe4cdb87dd5, - limb3: 0x76563e7128a76649b348849 + limb0: 0x8bd2845402e88f4c2f5320d6, + limb1: 0xee3d2466e0653501be96614d, + limb2: 0x47304badd9e5f0efd4aed94e, + limb3: 0x6b830a25a79f015d8c57650 }, u384 { - limb0: 0xeb778e5bc818491b49fbe619, - limb1: 0x47861993aac1864495673550, - limb2: 0x5ee1bfad748da0e4404f190c, - limb3: 0x19166e6caf2fa39e7c773258 + limb0: 0x40ba4d8991a977bf673f64a8, + limb1: 0xbf82f776835c7399648af968, + limb2: 0xdd9b0d43e62317284cdce6e4, + limb3: 0xb24ad48a722b90bd9d67ae6 } ] .span(), b_den: array![ u384 { - limb0: 0x958372c67fd8970ca563a49f, - limb1: 0xc09bdde055776032f5d40752, - limb2: 0xb59eda103d63f89821108223, - limb3: 0x11f70c37c51f5269082b46b6 + limb0: 0x2089f9661cff097c2828382, + limb1: 0xe20de9961f60b87030485485, + limb2: 0x3a40604421bc7dca8fa2501b, + limb3: 0x94c650fd80293d1aac81ff6 }, u384 { - limb0: 0xe5910e4400e2336330aed6c1, - limb1: 0xfb7036d76df054c9715e34f1, - limb2: 0x416199551b0b4780272812c1, - limb3: 0x7d62e3bb52d13940b577c7d + limb0: 0xed2cd17c3ed9ac175256ee5a, + limb1: 0xca758f184730ef57974530e7, + limb2: 0x10e12e166da3b8a9047945bb, + limb3: 0x1856730d81ce3fe3f1531d90 }, u384 { limb0: 0x4, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xaa5fdcb16b7565c32958a928, - limb1: 0x7d8b9570ce6290a7d47601d3, - limb2: 0x5fe078259ab276c9bee7ee98, - limb3: 0x17fe907d9c67c18dfa5f8f76 + limb0: 0x992c27e575737c25f0a07636, + limb1: 0xac1be3b60330a92e1b681520, + limb2: 0xb035ee7cbaaac5351dab1d66, + limb3: 0xf53a23912c09841903fdbd8 }, u384 { - limb0: 0x25b94390eeb84cd8cc2ba05b, - limb1: 0x58a8425e192852bb64028d3c, - limb2: 0xe12b518b1fe0a4c146ab4960, - limb3: 0x875d0097bab3e8b959cc90c + limb0: 0x53f5345eecb5eb05d49590ec, + limb1: 0xa635cd168d24b6e7f5274c39, + limb2: 0x25de21f14da493ecbae0dace, + limb3: 0x131625b87d33834621e29b3f }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] @@ -11149,78 +11166,81 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0x3a51c82657e69a243d0b6b56, - limb1: 0xd743a22ac2e1301dcdbf47b0, - limb2: 0x8fec737c36045cf8caffb9d1, - limb3: 0x19e776d59172de6afddb5195 + limb0: 0x21945a6bd6a6d02bfb0079cf, + limb1: 0xb0a9e7c5a6de9c2ffcec6eb2, + limb2: 0x9764b62377eb496ecea938a7, + limb3: 0xf80efd9c5f20f01bbe4cc7d }, u384 { - limb0: 0x3be7d1773c4f1354cde885d0, limb1: 0x2bc2c2d5, limb2: 0x0, limb3: 0x0 + limb0: 0xcf5797400900cd24689acc67, + limb1: 0xb39869507b587b12015abdaf, + limb2: 0x21a5d66bb23ba5c279c2895f, + limb3: 0xd0088f51cbff34d258dd3db } ] .span(), a_den: array![ u384 { - limb0: 0xc65cdbf3cd9cd04ea1bb643a, - limb1: 0x14ea9b54c6834a9e722c1f7c, - limb2: 0xafb57dea15d411575015917, - limb3: 0x17a3c38ef608de38da6c65fe + limb0: 0x55f58b8ac1d7535f62949d15, + limb1: 0xd636ffcd7ee3f6001d348df8, + limb2: 0x23dace4cd2a97e3bdc15e201, + limb3: 0x126eab5ba2ab278576071004 }, u384 { - limb0: 0xc73bdd7042c09faf87edb951, - limb1: 0xfeadff6631c4a5439b7511c7, - limb2: 0x12abe54382cdeab5a4d488db, - limb3: 0xde04de4f5a3c02b5d429dd2 + limb0: 0x5e7ccdda67eef8b0063a12a1, + limb1: 0x93aaaa668a8ed1204ee71028, + limb2: 0x15bc3740459c05e9a4a84759, + limb3: 0x42656b450cdcb8b5ed0b8d9 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] .span(), b_num: array![ u384 { - limb0: 0x5eb791af56e52caf68bff6b2, - limb1: 0xd71a7ef5d3339fa25d040ba8, - limb2: 0x5a0b007b83762fa4a178b939, - limb3: 0x144804b5ca0cf5505add128 + limb0: 0x87f62fff0a53a8bf03675087, + limb1: 0xa62186f083163f7889f06a2e, + limb2: 0xeb76966e7893f85d3fa3810d, + limb3: 0x10a92c7a2bfb413da648ae52 }, u384 { - limb0: 0xdb1fb99c23849557a905619d, - limb1: 0x2470e9ac1a6c4018df83e385, - limb2: 0x94b8c781fe8c593601171d18, - limb3: 0x603d8b535babff1ea20c696 + limb0: 0x88390a2b30bad490d6971318, + limb1: 0xa4c69545b7aaed61cc05af3, + limb2: 0x7d046e4b86a167e2f4342dbc, + limb3: 0x137bbcca08124c412031ebcd }, u384 { - limb0: 0xd0ba6ac806cfada216b79b45, - limb1: 0x9889f47303710fd7d582d4af, - limb2: 0xc7dca6bdf5a6eece2be64b06, - limb3: 0xf1a3af4ea94404f4d3c3988 + limb0: 0xb6aea6d72f4cffae81fabf63, + limb1: 0xcb53d9aef8901f25c15e77a2, + limb2: 0x235c8a8bfbe63bf4136429c1, + limb3: 0x89317188debc0ec65b4b489 } ] .span(), b_den: array![ u384 { - limb0: 0x5776fd00876413a86ee90e7, - limb1: 0x1e17f57035fa480d6cac7df7, - limb2: 0x620a58f4580f21c6f9762c1e, - limb3: 0x108bd87d2ba3c514885ea0d5 + limb0: 0xf52e2e2b935f4d7d8a531efe, + limb1: 0x8a7a59f40e2debb8377a37e3, + limb2: 0x8d3df8481b761e5894d6288, + limb3: 0x15b8899a17acd0e141e4f0a4 }, u384 { - limb0: 0xba4775c197047ebe1fb78fee, - limb1: 0x2c565856d9b0a8c6307c4721, - limb2: 0xc4183b5f424913ccac47fdf1, - limb3: 0x37f13bf638f3378ded327db + limb0: 0x79f337699fbbe2c018e84a84, + limb1: 0x4eaaa99a2a3b44813b9c40a1, + limb2: 0x56f0dd01167017a692a11d66, + limb3: 0x10995ad143372e2d7b42e364 }, u384 { limb0: 0x4, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xc65cdbf3cd9cd04ea1bb643a, - limb1: 0x14ea9b54c6834a9e722c1f7c, - limb2: 0xafb57dea15d411575015917, - limb3: 0x17a3c38ef608de38da6c65fe + limb0: 0x55f58b8ac1d7535f62949d15, + limb1: 0xd636ffcd7ee3f6001d348df8, + limb2: 0x23dace4cd2a97e3bdc15e201, + limb3: 0x126eab5ba2ab278576071004 }, u384 { - limb0: 0xc73bdd7042c09faf87edb951, - limb1: 0xfeadff6631c4a5439b7511c7, - limb2: 0x12abe54382cdeab5a4d488db, - limb3: 0xde04de4f5a3c02b5d429dd2 + limb0: 0x5e7ccdda67eef8b0063a12a1, + limb1: 0x93aaaa668a8ed1204ee71028, + limb2: 0x15bc3740459c05e9a4a84759, + limb3: 0x42656b450cdcb8b5ed0b8d9 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] @@ -11229,10 +11249,10 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0x46ddde13938fc4f3b43818e2, - limb1: 0xd1e2f39209f14310cce2a393, - limb2: 0xc8534547e0ef84a6ed1b3309, - limb3: 0x15bf60a03760a757ba865b8d + limb0: 0x5681794e8173f7cd95d84d1f, + limb1: 0xcafac12def6e3786ba533fd6, + limb2: 0xf86995346ea08859bf513a17, + limb3: 0x5f29ea7c5083d3fce2f76a4 }, u384 { limb0: 0x302ea91a3b09524e7c49fbbb, @@ -11244,66 +11264,66 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0x2fd6c406866e591a34bf9faf, - limb1: 0xf8cb781272f894b3f3b24bd9, - limb2: 0x9ba16a2c1f8e2c766e51a318, - limb3: 0xf8adc7d6666ccac6a7aa3d7 + limb0: 0xb8d5caef0dff395749764c58, + limb1: 0xa13c40a412c34ca3541676b6, + limb2: 0x2cd3a59034c9bd27a6b4cba1, + limb3: 0x9347cdc16bcef7a13591938 }, u384 { - limb0: 0x8f080460e5c40fe3ad4eaeb3, - limb1: 0xcce5d3485678f8f6ef53aa1a, - limb2: 0xe85240792b4f91a5573469d8, - limb3: 0x17037ecd43d7e989816d986b + limb0: 0x424f7913e67629fcef97d455, + limb1: 0x177334b06a46d8350f2ff077, + limb2: 0xce661cdabc0d38c716a57702, + limb3: 0x14de87041a9953957a8e8833 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] .span(), b_num: array![ u384 { - limb0: 0x2790f829d737cf9e45bec3ee, - limb1: 0x3f7c49df1c11c290c0f9770f, - limb2: 0x9eea2c0936a5efb4c682be64, - limb3: 0x14eeac8c40f98650f0375b63 + limb0: 0x1dcc38ebbc7092881d2f8dfa, + limb1: 0xb0e656761dcdc05bf4d6e9a9, + limb2: 0x2cc367adcbb00a15873d95a3, + limb3: 0xe40a91e0a9be8418e755700 }, u384 { - limb0: 0x594d9470d29de3e91ce8c1d0, - limb1: 0xaf5683ed493d3138785ef9b5, - limb2: 0xe649db6ee2e1b6b62e2ee5c6, - limb3: 0x8e3d7cc472dfca5eda05f1e + limb0: 0xc4e2c0678ec4378806edc078, + limb1: 0xb0518182ade1d0a0fde986b1, + limb2: 0x4b426d2ce86cb3e4369f451c, + limb3: 0x10dcd4f6f2f747db76d94b4b }, u384 { - limb0: 0x7f5186d2bbe2909fc7f05b34, - limb1: 0xda9ee671b2a618d75bf08995, - limb2: 0xe8f2e285aece409da0c33cf, - limb3: 0x73e3eec5690855f6911e1fd + limb0: 0x2de929bf4810146fe09d4955, + limb1: 0x6934c01931e21879906e32e2, + limb2: 0x54ab26b30763db9887ba4c9b, + limb3: 0x12f70b6ced3f32105ac1807 } ] .span(), b_den: array![ u384 { - limb0: 0x5cb3101aa5bb6468d2ff2966, - limb1: 0x14cc3b07de80668791712f67, - limb2: 0xe7ee4f01b54a1acfd23c66e5, - limb3: 0xa294e21269b657d13b33ff1 + limb0: 0x32032bbc7dfde55d25d986b5, + limb1: 0x1dc02fef545c3c6931addadc, + limb2: 0x7002e9696eafa919a74e1bc7, + limb3: 0xad0e1862173d74e0248bd2a }, u384 { - limb0: 0x2824118469133f8eb53bbacb, - limb1: 0xfe04d53e75d1016f614aa86e, - limb2: 0xd765fb5e7fd8640682426f24, - limb3: 0xe0ac57662dff25724636a8c + limb0: 0xf541e4506bdba7f3be605153, + limb1: 0x283a5adec5087e67e0bbc1e0, + limb2: 0x6fb56ce4c2cf008d8006a3ca, + limb3: 0x576e651bde59a8708e729ac }, u384 { limb0: 0x4, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x2fd6c406866e591a34bf9faf, - limb1: 0xf8cb781272f894b3f3b24bd9, - limb2: 0x9ba16a2c1f8e2c766e51a318, - limb3: 0xf8adc7d6666ccac6a7aa3d7 + limb0: 0xb8d5caef0dff395749764c58, + limb1: 0xa13c40a412c34ca3541676b6, + limb2: 0x2cd3a59034c9bd27a6b4cba1, + limb3: 0x9347cdc16bcef7a13591938 }, u384 { - limb0: 0x8f080460e5c40fe3ad4eaeb3, - limb1: 0xcce5d3485678f8f6ef53aa1a, - limb2: 0xe85240792b4f91a5573469d8, - limb3: 0x17037ecd43d7e989816d986b + limb0: 0x424f7913e67629fcef97d455, + limb1: 0x177334b06a46d8350f2ff077, + limb2: 0xce661cdabc0d38c716a57702, + limb3: 0x14de87041a9953957a8e8833 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] @@ -11312,23 +11332,17 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0xcc9c77272744c2eae9f9e3a0, - limb1: 0x58cfe5b4ce2c9f94ceb16110, - limb2: 0x6b3c99b339102c83e8f23db4, - limb3: 0x77a47138cc9a82614b878d7 + limb0: 0xe15515df9388f0d6b1ba8ea2, + limb1: 0x750e1d16fcdd2fb021e78322, + limb2: 0x84bd8f5d8a734f10549e3f3c, + limb3: 0x743d0fa04bd023fc4e0b88 }, g_rhs_sqrt: array![ u384 { - limb0: 0xf57ff0fcc1ba8ab54866d241, - limb1: 0x5fde8c3892e41a27390c98c6, - limb2: 0x5550271f9090bb750ab0adc2, - limb3: 0xab779573ee931ca809c6a28 - }, - u384 { - limb0: 0x8703f63300c2d4794f39b70f, - limb1: 0xf247077c5312f88cbaa49d9a, - limb2: 0x3d02ee1932c376ab5bb0d775, - limb3: 0xb9a324254aa6f8a28c014ef + limb0: 0x3668e5dca62b89894364b168, + limb1: 0xf4e400503a3a2bfc9dde5a08, + limb2: 0xcdf9cdf6478192215118dc97, + limb3: 0x425ee01cd06554efeb9fd12 } ], }; @@ -11338,16 +11352,16 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0xc947e73cdd0900514286b841, - limb1: 0x9102be3f6399fb04b752343b, - limb2: 0x8959fe2ed8480667f5df8d76, - limb3: 0xb8560f02c22098ba7053e67 + limb0: 0xb603ffc901ec7f3e42216ae4, + limb1: 0x269adaf11286bf338b9dacb1, + limb2: 0xab33b097e05378c0867894f, + limb3: 0xbfd8ef26d4610b8e77f5c28 }, y: u384 { - limb0: 0x27d0aef09065d3415c828ff3, - limb1: 0x5918364ee6deae18a32a2b5, - limb2: 0x152ac22882661c6925945950, - limb3: 0x14d84c49cc78faa54a4c0628 + limb0: 0x9afe78c2bb0f305eccbffb90, + limb1: 0xc8b06f9aaf49eda1f9fd6cfd, + limb2: 0xc422cd476b9611aef3a1ee3, + limb3: 0x1201e1e9a2b0867eb9da1725 } } ); @@ -11359,40 +11373,40 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0xec556ce34f79473dded2ddd, - limb1: 0xe94f53b36fa4bf4f433d87aa, - limb2: 0x85ba29e50f3ffaecd302681d, - limb3: 0x14798b56bfec7c8b10e8ea1b + limb0: 0xe4f817e54aede0613c17035c, + limb1: 0xdff1f15010392a6da1f95a6, + limb2: 0xbed78d3d341e911d49f15454, + limb3: 0x18154782ce0913b21588066d }, y: u384 { - limb0: 0x2878c20a0c95888134f7c4c9, - limb1: 0x3a9384959554813c9275942f, - limb2: 0x90d129a9aa023f80f866ecfb, - limb3: 0x4d368220280637e7ae3c7ac + limb0: 0x3d77d61326ef5a9a5a681757, + limb1: 0xd3070afd4f0e121de7fcee60, + limb2: 0xdf9ef4088763fe611fb85858, + limb3: 0x11a612bdd0bc09562856a70 } }, G1Point { x: u384 { - limb0: 0x106fcbf0779169eb4659e7e8, - limb1: 0x32eb5405bbe77d87a49e2103, - limb2: 0x73d18330f81a0e12d9c63490, - limb3: 0x1235cd4d4dd009115ff477a1 + limb0: 0xde4f62a6588c9401ffefbd3, + limb1: 0x9bb5f797ac6d3395b71420b5, + limb2: 0xdc39e973aaf31de52219df08, + limb3: 0x105dcc4dce3960447d21d3c1 }, y: u384 { - limb0: 0x1149a162c9173afabe2c2849, - limb1: 0x1d98a058dfb0ad100d254d4d, - limb2: 0x12e632fa19c02699b4d38c48, - limb3: 0xf3717f01add2fdc33b743bd + limb0: 0xaefd0d854043fd325dd3c34f, + limb1: 0x9b63c98d9a7845c52e1e2b0f, + limb2: 0x9db0be660d847ccc58358f3f, + limb3: 0x17cb6c41f0c4e1a7394ab62a } }, ] .span(); let scalars = array![ u256 { - low: 0x61c168bb7c9f3182bd9a683dc423da9, high: 0x4c66178246431bf92871b8379b65e035 + low: 0x12e0c8b2bad640fb19488dec4f65d4d9, high: 0x2a43e70faf19922ad9b8a714e61a441c }, u256 { - low: 0xa6ec013f83becf7545d5b2cbd79adf91, high: 0x5560639428498c880fec356628d3545e + low: 0x5a92118719c78df48f4ff31e78de5857, high: 0x51f964df9c6316b950f244556f25e2a2 }, ] .span(); @@ -11400,29 +11414,26 @@ mod msm_tests { array![ ( array![ - -0x1, - -0x1, - 0x0, - 0x0, - 0x0, - 0x0, 0x0, -0x1, - 0x1, 0x0, + -0x1, + -0x1, 0x1, - 0x1, + -0x1, + -0x1, + -0x1, 0x1, -0x1, 0x0, + -0x1, + -0x1, + -0x1, 0x0, 0x1, -0x1, 0x1, - 0x0, - 0x1, -0x1, - 0x0, 0x1, 0x0, -0x1, @@ -11430,18 +11441,20 @@ mod msm_tests { 0x1, 0x1, 0x1, - 0x1, - -0x1, -0x1, + 0x0, + 0x0, -0x1, 0x1, + 0x1, + -0x1, + -0x1, -0x1, - 0x0, - 0x0, - 0x0, -0x1, 0x1, 0x1, + 0x1, + 0x0, 0x0, -0x1, 0x0, @@ -11449,46 +11462,45 @@ mod msm_tests { 0x0, 0x0, 0x0, - -0x1, - -0x1, - -0x1, 0x0, - -0x1, - -0x1, - -0x1, 0x0, 0x1, -0x1, + 0x0, + -0x1, + 0x0, 0x1, 0x0, 0x1, + 0x0, + 0x0, + 0x0, 0x1, + 0x0, -0x1, - 0x1, + 0x0, -0x1, 0x1, - -0x1, + 0x1, 0x0, - -0x1, 0x1, -0x1, 0x0, - 0x0, + 0x1, + 0x1, + 0x1, 0x1, -0x1, 0x1, -0x1, + -0x1, ] .span(), array![ - 0x1, - -0x1, - 0x1, 0x0, 0x0, 0x1, - 0x1, - -0x1, + 0x0, -0x1, -0x1, 0x1, @@ -11498,77 +11510,88 @@ mod msm_tests { 0x1, -0x1, -0x1, - 0x0, 0x1, 0x1, 0x0, 0x1, - 0x1, - 0x1, - -0x1, - 0x1, - -0x1, - 0x1, + 0x0, 0x0, -0x1, - 0x1, 0x0, 0x1, - 0x1, - 0x1, + 0x0, + -0x1, 0x1, 0x1, -0x1, + 0x0, + -0x1, + 0x1, 0x1, 0x0, 0x0, 0x0, 0x1, + 0x0, + -0x1, + -0x1, 0x1, 0x1, -0x1, + -0x1, 0x1, 0x0, - 0x1, + 0x0, -0x1, 0x0, + -0x1, 0x0, -0x1, -0x1, - 0x1, 0x0, 0x1, -0x1, 0x1, + -0x1, 0x1, + -0x1, 0x1, 0x0, - 0x0, - 0x0, - -0x1, - -0x1, -0x1, -0x1, - 0x0, - -0x1, - 0x0, 0x1, - -0x1, - 0x0, 0x0, 0x1, + 0x0, -0x1, - -0x1, + 0x1, + 0x1, + 0x1, + 0x1, + 0x1, + 0x1, 0x0, 0x1, 0x1, + 0x1, + -0x1, + 0x0, + -0x1, ] .span() ), ( array![ + -0x1, + 0x0, 0x0, 0x1, + 0x0, + 0x0, + -0x1, + -0x1, + 0x1, + -0x1, -0x1, 0x1, -0x1, @@ -11578,77 +11601,68 @@ mod msm_tests { -0x1, -0x1, 0x1, - 0x1, + -0x1, 0x1, 0x0, - 0x1, 0x0, -0x1, - 0x1, - 0x1, - -0x1, - 0x1, 0x0, - -0x1, + 0x0, + 0x0, 0x0, 0x1, - -0x1, - -0x1, + 0x0, -0x1, -0x1, 0x1, -0x1, 0x0, 0x0, - 0x0, - -0x1, - -0x1, 0x1, 0x1, + -0x1, 0x1, 0x0, 0x0, + -0x1, + 0x0, + -0x1, 0x1, + -0x1, 0x0, -0x1, 0x1, -0x1, 0x1, 0x1, - 0x0, - 0x0, - 0x0, -0x1, 0x0, 0x0, -0x1, 0x1, - 0x0, -0x1, - 0x0, 0x1, -0x1, -0x1, 0x0, 0x1, - 0x1, - 0x1, -0x1, + 0x0, -0x1, 0x0, + -0x1, + 0x0, + -0x1, 0x0, 0x1, 0x1, 0x0, - -0x1, + 0x0, + 0x0, -0x1, 0x1, - -0x1, 0x1, - -0x1, 0x1, - -0x1, - -0x1, ] .span(), array![ @@ -11656,47 +11670,40 @@ mod msm_tests { -0x1, 0x0, 0x1, - 0x0, -0x1, 0x1, 0x0, - 0x1, - 0x0, - 0x1, - -0x1, -0x1, 0x1, 0x0, - 0x0, -0x1, 0x1, 0x1, - 0x0, - 0x1, - -0x1, 0x1, 0x0, - 0x0, - 0x0, - 0x1, - 0x1, -0x1, 0x1, + 0x1, 0x0, -0x1, 0x1, 0x0, - 0x0, - 0x1, + -0x1, + -0x1, -0x1, 0x1, -0x1, 0x0, + 0x1, + -0x1, -0x1, -0x1, 0x0, 0x0, -0x1, + 0x1, + 0x1, + -0x1, 0x0, 0x0, 0x0, @@ -11707,32 +11714,39 @@ mod msm_tests { 0x1, -0x1, 0x0, + 0x0, + 0x1, + 0x0, + 0x0, + 0x1, -0x1, -0x1, 0x1, 0x0, - 0x1, -0x1, 0x0, 0x1, 0x1, - 0x0, + -0x1, -0x1, 0x1, -0x1, + -0x1, + 0x1, + 0x0, + 0x0, + 0x0, 0x0, 0x1, 0x1, -0x1, 0x0, 0x1, - -0x1, - -0x1, - -0x1, 0x0, 0x1, 0x1, 0x1, + 0x1, ] .span() ), @@ -11742,63 +11756,63 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0xbc7fe90dcd506978764a9c17, - limb1: 0x22b5b85116d83f439dbd7a2a, - limb2: 0x9b65704ffeb906ccda496a0d, - limb3: 0x11689594c6ae768ca667e319 + limb0: 0xa94cb70d1045a5f5122c6cba, + limb1: 0xbef689cbbb5a28729c98e623, + limb2: 0x46458a56de645221dec95c2b, + limb3: 0x6cb227e4fa20b20e3b8f12 }, y: u384 { - limb0: 0xfa98c56332fd2eb006b078a9, - limb1: 0x2f21ea68dbd93bf03c5fb784, - limb2: 0x27215d7638885e0d44bd3932, - limb3: 0x25f0f72b30dd9eae4d27ce4 + limb0: 0xd9923850c9fad3cfd8e1f841, + limb1: 0x508312ef6baba21ccc0c32a0, + limb2: 0x6eecbdb5721672de7f553c8d, + limb3: 0x186630555406053c24845a69 } }, Q_high: G1Point { x: u384 { - limb0: 0xc8399663b8ce4d45d78b204, - limb1: 0x3b0d75bc71f73381cfbb1a53, - limb2: 0x4e579d5f515453a0cdfc41ba, - limb3: 0x1839c750a4aff894267c3b98 + limb0: 0x3e7154dc547d7dcaeefcf5b0, + limb1: 0x459890a5fd7900a43e66fc93, + limb2: 0x36625c251ff9adb2f43a4bf8, + limb3: 0x70c5545c1b87b1aafea6915 }, y: u384 { - limb0: 0xecd4c24f585a04491480f52a, - limb1: 0x328e1ccd1098c952275b5261, - limb2: 0x8c479c5001fe55f74350e141, - limb3: 0x1790e23b14e5f12e823daae3 + limb0: 0x9fb6b25570fe0d775b020303, + limb1: 0xd8209910bc52b435cd4ca96, + limb2: 0xfe778adca225e978274d0406, + limb3: 0x36fa9591acef2fe92c4ca85 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0x2a248d5088e1aa12bbc8936a, - limb1: 0x9edb00f5bf79ecd5405d2794, - limb2: 0x62ebff1cc6d099baa5dca28d, - limb3: 0x16169fd62a9a7d8ed48a985f + limb0: 0xfc619000f58d8d41da4f7c95, + limb1: 0xead352a2b4154967b1957b16, + limb2: 0x79bf9d707833c14ff9d96a24, + limb3: 0x18e483eca3abedc74f6222f6 }, y: u384 { - limb0: 0x79bd3d82ba60e2dbe34e17d6, - limb1: 0x9f229ec9dc22745299c25b11, - limb2: 0x69382060843a81e72e4fb13c, - limb3: 0x266246fc95380065e1bebf + limb0: 0xf49507312253ccd5057e12bc, + limb1: 0xa3dd8b643c6ee7623a8d0bb7, + limb2: 0x78798796d531318014948231, + limb3: 0xc48d18b3950768af11b67f9 } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0x9c10ea69fab684d16e89886b, - limb1: 0xe526aefb7d7665008df3be84, - limb2: 0xe3b2ab051c5c3243a3d42578, - limb3: 0x1610f91d8f0dcba0caf8304 + limb0: 0xf3426bb5bd5aab7a95b66d3a, + limb1: 0x5b134116d2fb7a539ad6acdd, + limb2: 0xb33e1fc67de2314d1b06c7cb, + limb3: 0x8ee68708b0ddf2d8b2c2f80 }, u384 { - limb0: 0x298f19c64536078741a8f648, - limb1: 0x69798a6ba12feaa547b2154a, - limb2: 0x94584ba44191cc9ebda4a3a1, - limb3: 0x14bf9406fe09eeb377c8620d + limb0: 0xc7e346b64d86a2476562c276, + limb1: 0x317c8d9fefe85e40cea94a2d, + limb2: 0x9ada6f1886fe4bb54fe04549, + limb3: 0x4a2753bc55bc21c24ebc8ed }, u384 { - limb0: 0x94bf27ba1f6e86aa8a3ccc32, - limb1: 0xb39869507b587b1190b3823a, + limb0: 0xf77bee1bad2dc027699a25b6, + limb1: 0xb39869507b587b122a9b92b1, limb2: 0x21a5d66bb23ba5c279c2895f, limb3: 0xd0088f51cbff34d258dd3db } @@ -11806,89 +11820,89 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0x454c2843b982b4bf06cc4ee5, - limb1: 0x817a535b0a61f7937a40f80e, - limb2: 0xa545f03ace83081441c5eaad, - limb3: 0x98d46902f56fc929146e803 + limb0: 0x281416ebaee085061ea924c2, + limb1: 0x5d7a9ae6778f6016e24377ab, + limb2: 0x65edf43b11a368c6fef4be0f, + limb3: 0x177ad6538c82403d513172f7 }, u384 { - limb0: 0xc234b94013ccc428f6c49039, - limb1: 0xf9d3ec5533dafd7defeb5fe5, - limb2: 0xfd5b044862cd50c8fcc42d48, - limb3: 0x28611e42919117da69f8c10 + limb0: 0x22c7655695346e24b18684ea, + limb1: 0x6838be3be8a4b574dccec1f0, + limb2: 0x645cf6374393a41b61b9f161, + limb3: 0xe1bcd0d52e0b24f1484d62e }, u384 { - limb0: 0x3846f432b4239828656d4e25, - limb1: 0xf6a217d8a1ae6651d66add24, - limb2: 0x34f1e9202752d2c2537d3182, - limb3: 0x15eb4785d814b7a5ca0db24c + limb0: 0xc67e3ae2b341b06991bce96d, + limb1: 0x65b604c98496fd990f8b637d, + limb2: 0xa54058a70b7895e59c3595f6, + limb3: 0xb225ddbf1c3388bf551e62a }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] .span(), b_num: array![ u384 { - limb0: 0x5ce092e74fd60bff6c58a17d, - limb1: 0xc952677cfc6b63b78d3a67d7, - limb2: 0xe893e029676af3dcf4204fb2, - limb3: 0x139a88cfe87739100e21d061 + limb0: 0x8c5f0da29c69410199dcedea, + limb1: 0xcbf7c38530d4a6ea1c327db4, + limb2: 0x9ab95a458051aa1be443d8bc, + limb3: 0x16b2937dadc5708e05109b44 }, u384 { - limb0: 0x9c9b72453feac76e17259699, - limb1: 0x345b8b8da7821ba9248a7ebc, - limb2: 0x4fcf31ff18653bf723e50f1f, - limb3: 0xf77fe23297298e474a97e08 + limb0: 0xcecff02d2ff07c6836b02127, + limb1: 0x6f95d0af356e4cf2333a6d1, + limb2: 0xa724e794bdfcd571a5cce6e1, + limb3: 0xa6e11a55616c2488859f680 }, u384 { - limb0: 0xfecc79be1068c4f9013c076f, - limb1: 0x9c903d1c78d11c1dc4cccd79, - limb2: 0x38aa682c1a23ad9ff3260b2, - limb3: 0xa748da582935e5d1cfa0d73 + limb0: 0x84c12d8a14096e56b96a9bde, + limb1: 0xfef3d2dd9a093770c7946535, + limb2: 0x5a32c7b1acb87d2aa06c8d34, + limb3: 0x650b00218fd68a94040efe2 }, u384 { - limb0: 0xc4e79c90c39578a60bd94e43, - limb1: 0x791beb5ca3c25a12b742dcb9, - limb2: 0x45381ee3ebf6916139735803, - limb3: 0x16030700f12ef8a68fa0ee + limb0: 0x7d6a7c624681d68fd5755bef, + limb1: 0xca0b6210cfc5e3ad401700e1, + limb2: 0x704070ca32888fe5e6ccb5bc, + limb3: 0x7153a67c9de0b9bae4cae5d } ] .span(), b_den: array![ u384 { - limb0: 0x63dca10f2c0bd2fc1b3190e9, - limb1: 0x9eb87acb32d6e829ca57e03a, - limb2: 0x51cc1413d594d4cc139297f6, - limb3: 0xc34085683dc0baff9fff858 + limb0: 0x8c545baf8d8514187aa59307, + limb1: 0x4057f3b6fa2a9def2d09deb0, + limb2: 0xcdd4ca661927c08d2143bfff, + limb3: 0xfe8238f85894d266372d4ba }, u384 { - limb0: 0x8d2e5004f3310a3db1240e4, - limb1: 0xe74fb154cf6bf5f7bfad7f97, - limb2: 0xf56c11218b354323f310b523, - limb3: 0xa184790a46445f69a7e3043 + limb0: 0x2875955ae0d3b892c61abe52, + limb1: 0xd28153adb530e98b35e307c3, + limb2: 0xadc7f2e455ff9639fdda006, + limb3: 0x46d1060d882fc07bbdc094d }, u384 { - limb0: 0xcd1fd0cba29160a195b63893, - limb1: 0xa4f5e77fa2a6b6dafda77494, - limb2: 0x9e49dfa6fe5687a73658dcd, - limb3: 0x9a9e858b3d32ac846e3d20e + limb0: 0x68a4eb8b1307c1a646f3fb09, + limb1: 0x2fa740851bab00401f818df8, + limb2: 0x51b5b5c4c96b0c117d51451a, + limb3: 0x128865858d8cfb958a2bf0f4 }, u384 { - limb0: 0x454c2843b982b4bf06cc4ee9, - limb1: 0x817a535b0a61f7937a40f80e, - limb2: 0xa545f03ace83081441c5eaad, - limb3: 0x98d46902f56fc929146e803 + limb0: 0x281416ebaee085061ea924c6, + limb1: 0x5d7a9ae6778f6016e24377ab, + limb2: 0x65edf43b11a368c6fef4be0f, + limb3: 0x177ad6538c82403d513172f7 }, u384 { - limb0: 0xc234b94013ccc428f6c49039, - limb1: 0xf9d3ec5533dafd7defeb5fe5, - limb2: 0xfd5b044862cd50c8fcc42d48, - limb3: 0x28611e42919117da69f8c10 + limb0: 0x22c7655695346e24b18684ea, + limb1: 0x6838be3be8a4b574dccec1f0, + limb2: 0x645cf6374393a41b61b9f161, + limb3: 0xe1bcd0d52e0b24f1484d62e }, u384 { - limb0: 0x3846f432b4239828656d4e25, - limb1: 0xf6a217d8a1ae6651d66add24, - limb2: 0x34f1e9202752d2c2537d3182, - limb3: 0x15eb4785d814b7a5ca0db24c + limb0: 0xc67e3ae2b341b06991bce96d, + limb1: 0x65b604c98496fd990f8b637d, + limb2: 0xa54058a70b7895e59c3595f6, + limb3: 0xb225ddbf1c3388bf551e62a }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] @@ -11897,107 +11911,110 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0x2b2d1bb3d571e79fe598c5be, - limb1: 0x20a437c896c0af3dc0852fce, - limb2: 0x5eb8d9ffdc1ae044d2d6556d, - limb3: 0x17845d79800ffcaaf74a0ebf + limb0: 0x3fd682758c13d2f5dc6155d1, + limb1: 0x1a28951a5f51e3b0a2140086, + limb2: 0x16028e3c245dd1efe9bda52c, + limb3: 0x146092011287f722e9899b73 }, u384 { - limb0: 0xece130c0d796b1947419a802, - limb1: 0xc9be96159a04c02a0deaa2c9, - limb2: 0xd1376262f7eedc9c2869d13f, - limb3: 0x18c9771620d2163cef007f45 + limb0: 0x8cc8f2470dfac27d89596c78, + limb1: 0x5a515edbde15527d23fa3a97, + limb2: 0x1a1a3e13dd0693197a0c1532, + limb3: 0xf4e630cfb4618ff8c108c97 }, u384 { - limb0: 0x7736554cb7cd3ca932ea121b, limb1: 0x4f386595, limb2: 0x0, limb3: 0x0 + limb0: 0x800e57d6f32511a5fef7c288, + limb1: 0xb39869507b587b12243852d3, + limb2: 0x21a5d66bb23ba5c279c2895f, + limb3: 0xd0088f51cbff34d258dd3db } ] .span(), a_den: array![ u384 { - limb0: 0x2ce2c5c9c7885d921b47760, - limb1: 0x3268a389e3146596412c93eb, - limb2: 0x9e7ac6f90c3757b6edc2070c, - limb3: 0x9ed9aaa7089b487f4840e5c + limb0: 0x3e29c60cf1dbf4547040286a, + limb1: 0x53a58978049ae53c9a190dfd, + limb2: 0x328eed2e318edb28a4bda0d3, + limb3: 0x491a307cc81371e286b81aa }, u384 { - limb0: 0xb06c4cb54b2a58f4c4a03ebe, - limb1: 0x41a5141680dc387390d510e9, - limb2: 0x1044ef872c2e8edebe46ec8e, - limb3: 0xb14523883a5352e1cec522 + limb0: 0x7976251c6c7e831be9fc550d, + limb1: 0x87222b2803e6631c399ea883, + limb2: 0xdea4b79f536a9e2d2183c352, + limb3: 0xad98b4466b88012fd738de }, u384 { - limb0: 0xe84343da45e71ccc7e3f3838, - limb1: 0xde4a5a6d468f7213a46d3cfb, - limb2: 0x81ffbc10d4b785ee5fca59d5, - limb3: 0xf1a15c9fa13359e49f959cd + limb0: 0x31599d136f09d893b4ec6077, + limb1: 0xdf13fdef427825676dbd4d0e, + limb2: 0xb52386d8c9e33a5486c4a629, + limb3: 0x482babe1504de2353a30c27 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] .span(), b_num: array![ u384 { - limb0: 0xe15c4bbc3fc6e19f516f6f2f, - limb1: 0xf33ce50b40e061cefd478d8c, - limb2: 0xffe3874516805e350701ce34, - limb3: 0x128d2486ecf351d923cf0f5c + limb0: 0x76e6eba41350b6c40d0fc53b, + limb1: 0x152e3900b16257e60361ac43, + limb2: 0xc16c3cb7db5291b3c49422f8, + limb3: 0xfc550e0570f7aa4c5b74f05 }, u384 { - limb0: 0x32bccecd28f69d0b158eda8b, - limb1: 0x8cb4a0d9d1b2beb6f6d81245, - limb2: 0xc3ee2124c2324269e46c8859, - limb3: 0x11bdab6b0afd9543cf157451 + limb0: 0x6b332957ed4d0d84cc542892, + limb1: 0x696c24ebb285165716927be2, + limb2: 0x6f6cabc000dba2e538473961, + limb3: 0x11174496222161d6f0ab8e28 }, u384 { - limb0: 0xe13969b3fe61b0b22285b279, - limb1: 0x9686bc40ad4436bbc32d72f4, - limb2: 0x3958c77d23af3666711019e9, - limb3: 0x1988c50f38d2a46d0a8f4712 + limb0: 0xdc67c86d7570fc86c1c98496, + limb1: 0xffc07945cf806da784e63dd1, + limb2: 0x8db60ec01a17890cc9e8cefd, + limb3: 0x3e5311aca4999024c52385 }, u384 { - limb0: 0x31f97dfd9057f9d3d38cf5ea, - limb1: 0x91b4c8ce2679f4435199a642, - limb2: 0x931b40cc8a0707e706a5ae4e, - limb3: 0x5b14edc5dcda407671b6e58 + limb0: 0x9d9e048b22ee7e721dcb3dcf, + limb1: 0x439426d46df2e66b89acde57, + limb2: 0x2272f03beafee9a171741d57, + limb3: 0x345855d3452b59859c55586 } ] .span(), b_den: array![ u384 { - limb0: 0x59e4b172b7e3176486d232d5, - limb1: 0x6271bb8695a0a034e6064fad, - limb2: 0x369f6f0ccc661356c3830971, - limb3: 0xdb558bf88a6eb8586f491bc + limb0: 0xf8a71833c76fd151c100a1a8, + limb1: 0x4e9625e0126b94f2686437f4, + limb2: 0xca3bb4b8c63b6ca292f6834d, + limb3: 0x12468c1f3204dc78a1ae06a8 }, u384 { - limb0: 0xc1b132d52ca963d31280faf8, - limb1: 0x694505a0370e1ce435443a6, - limb2: 0x4113be1cb0ba3b7af91bb239, - limb3: 0x2c5148e20e94d4b873b1488 + limb0: 0xe5d89471b1fa0c6fa7f15434, + limb1: 0x1c88aca00f998c70e67aa20d, + limb2: 0x7a92de7d4daa78b4860f0d4a, + limb3: 0x2b662d119ae2004bf5ce37b }, u384 { - limb0: 0x3e650f69a39e7331f8fd8b8a, - limb1: 0xaac7c4732cdbdc06545cf3f2, - limb2: 0x8167969489ef80af981f41d8, - limb3: 0x8663353754d094491ae17c9 + limb0: 0xc566744dbc27624ed3b181dc, + limb1: 0x7c4ff7bd09e0959db6f53438, + limb2: 0xd48e1b63278ce9521b1298a7, + limb3: 0x120aeaf85413788d4e8c309e }, u384 { - limb0: 0x2ce2c5c9c7885d921b47764, - limb1: 0x3268a389e3146596412c93eb, - limb2: 0x9e7ac6f90c3757b6edc2070c, - limb3: 0x9ed9aaa7089b487f4840e5c + limb0: 0x3e29c60cf1dbf4547040286e, + limb1: 0x53a58978049ae53c9a190dfd, + limb2: 0x328eed2e318edb28a4bda0d3, + limb3: 0x491a307cc81371e286b81aa }, u384 { - limb0: 0xb06c4cb54b2a58f4c4a03ebe, - limb1: 0x41a5141680dc387390d510e9, - limb2: 0x1044ef872c2e8edebe46ec8e, - limb3: 0xb14523883a5352e1cec522 + limb0: 0x7976251c6c7e831be9fc550d, + limb1: 0x87222b2803e6631c399ea883, + limb2: 0xdea4b79f536a9e2d2183c352, + limb3: 0xad98b4466b88012fd738de }, u384 { - limb0: 0xe84343da45e71ccc7e3f3838, - limb1: 0xde4a5a6d468f7213a46d3cfb, - limb2: 0x81ffbc10d4b785ee5fca59d5, - limb3: 0xf1a15c9fa13359e49f959cd + limb0: 0x31599d136f09d893b4ec6077, + limb1: 0xdf13fdef427825676dbd4d0e, + limb2: 0xb52386d8c9e33a5486c4a629, + limb3: 0x482babe1504de2353a30c27 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] @@ -12006,10 +12023,10 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0xb4be4b4be2c6cad0af64c4b6, - limb1: 0x6d3371aad7025db0b22c414b, - limb2: 0x2c0990100c82561571a00259, - limb3: 0x9508be88a1f4470694ad73f + limb0: 0xff90f1384ca1ef72a65da595, + limb1: 0x45a5fdd0c34dca58be41070f, + limb2: 0xc66ce7a5fb1725e3abad67af, + limb3: 0xf4363cc5818140f0ea35f0e }, u384 { limb0: 0x302ea91a3b09524e7c49fbbb, @@ -12021,66 +12038,66 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0x47cece434777530f38128657, - limb1: 0x22061964a77e9dd2735e96cc, - limb2: 0x9ccc2955c617359be937a57, - limb3: 0x13a7876612f0bad814ddcae2 + limb0: 0x489d73a6137d69f7be9e6ae9, + limb1: 0xfb2c15d265c2d5e63ef114e4, + limb2: 0x487cd6f46002cef9678a2933, + limb3: 0x1852694980012641cebb127b }, u384 { - limb0: 0x2bffd948af8f7118e6be0fe8, - limb1: 0xf4792e8fbbf0cbf12d3fbe16, - limb2: 0xd553bd32b0c9a9ae73314136, - limb3: 0x5b1bcada3b557119b307b74 + limb0: 0x27d51b2229f2f4f336b2e311, + limb1: 0x9df5c1f93bd3a23c4d5b8853, + limb2: 0xd675601930c12806f8f66f61, + limb3: 0x14114aa20d9b645296eac360 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] .span(), b_num: array![ u384 { - limb0: 0x2f2270416c8f38bb8d1533ea, - limb1: 0x10aa25f16e2870312a5292e6, - limb2: 0xee2018789a1c5841714bfc2e, - limb3: 0x151c19f50fbf719d5e83488c + limb0: 0x14f35ce48c28f84c3705ea55, + limb1: 0xfc2090f98bc3cd23e87bda01, + limb2: 0xed39b39bc29551478c9d0d5c, + limb3: 0xf7565917ba1c624998f3072 }, u384 { - limb0: 0x450396f4131b49a37c80b403, - limb1: 0xd66ce89fb80d1ab198f3cc8c, - limb2: 0xe33fd7fc1736906fb662788e, - limb3: 0xe2a8e967feaab6992d87e84 + limb0: 0x6cefe6a8f7acf0f81678b4e6, + limb1: 0x2213f4c76aab0b411da0e4ef, + limb2: 0x84e91cf0e5d92d28cf0300ae, + limb3: 0x1635bf142813caaaae968403 }, u384 { - limb0: 0xde003250f82c2004fb32e1b8, - limb1: 0x37374898e650b814e89aca6e, - limb2: 0xf1f59ff199729d17f4f4eba6, - limb3: 0x158055863af35fadc5bb79f0 + limb0: 0x3245002a4ce0e77474651400, + limb1: 0x54458262cb51546e2c073bc, + limb2: 0x73927dc6189c8ada56e70efb, + limb3: 0x3ab940237a43daf2a08b93 } ] .span(), b_den: array![ u384 { - limb0: 0xb3f390defe04c3ce04b195b, - limb1: 0x5285edafb9e794dd71765b35, - limb2: 0x5d5003cf441fead81fbeb11e, - limb3: 0x9ae7d99f43379172243465 + limb0: 0xe79ce991ff8a7defa7aaba3, + limb1: 0xb71ddf66b2f8752c9fc05395, + limb2: 0x5810554b52a55956c3996c91, + limb3: 0x13466f675384e538599952ca }, u384 { - limb0: 0xafff6522be3dc4639af83fa0, - limb1: 0xd1e4ba3eefc32fc4b4fef858, - limb2: 0x554ef4cac326a6b9ccc504db, - limb3: 0x16c6f2b68ed55c466cc1edd3 + limb0: 0x8b586c8979ced3ccdacc8c43, + limb1: 0x424490020b3ba684d96a2150, + limb2: 0x8ff279de959ebd8d094a8548, + limb3: 0x241f4c989eddd7b7a581660 }, u384 { limb0: 0x4, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x47cece434777530f38128657, - limb1: 0x22061964a77e9dd2735e96cc, - limb2: 0x9ccc2955c617359be937a57, - limb3: 0x13a7876612f0bad814ddcae2 + limb0: 0x489d73a6137d69f7be9e6ae9, + limb1: 0xfb2c15d265c2d5e63ef114e4, + limb2: 0x487cd6f46002cef9678a2933, + limb3: 0x1852694980012641cebb127b }, u384 { - limb0: 0x2bffd948af8f7118e6be0fe8, - limb1: 0xf4792e8fbbf0cbf12d3fbe16, - limb2: 0xd553bd32b0c9a9ae73314136, - limb3: 0x5b1bcada3b557119b307b74 + limb0: 0x27d51b2229f2f4f336b2e311, + limb1: 0x9df5c1f93bd3a23c4d5b8853, + limb2: 0xd675601930c12806f8f66f61, + limb3: 0x14114aa20d9b645296eac360 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] @@ -12089,29 +12106,23 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0x7faefeeaf8dec77fdfc01b5d, - limb1: 0xc8f26cccd4a508c2b48ca804, - limb2: 0x7ee12f89a5fedab8d1562009, - limb3: 0xcf6e90bd59f783d62d15e81 + limb0: 0x5d809e3a1f0db6a2da364177, + limb1: 0x72d024e1f38c458817ffff89, + limb2: 0xd29beea38716ebf9c17eaf93, + limb3: 0xacac90741115fd8f60e344d }, g_rhs_sqrt: array![ u384 { - limb0: 0x13465fa4aec64f7bfddb39f, - limb1: 0x6d871925494e6a236ab345f8, - limb2: 0x758c8164e2d74d606f84d1df, - limb3: 0x2c9b1133ea97b996240bdbf + limb0: 0x9ed4b9b1fefb0b5ad1af4504, + limb1: 0x18014b99317e990bead88528, + limb2: 0x47d1e14edca99202ae38291e, + limb3: 0x776d0767f658216009846f1 }, u384 { - limb0: 0xaa66ba564daf69775a8711b5, - limb1: 0x58801d4988fb997dcb4e1c38, - limb2: 0x9ae91a99b050061dcb2ca999, - limb3: 0xccb359b3f32bb02369f5106 - }, - u384 { - limb0: 0xc6905c32579f0079c51a506e, - limb1: 0xe94840721291da32e290ed32, - limb2: 0x93a252c230298e1838e81e68, - limb3: 0x319732eb1560088487d3bd9 + limb0: 0x2bdc6ca6d69b67ce40e930fd, + limb1: 0x4a9ab50c6ac4335bbcd8c30d, + limb2: 0x5fa0e1e72f8fb1ef912ef1c5, + limb3: 0x6e6131f056d13526ee9a2d0 } ], }; @@ -12121,16 +12132,16 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0x773a7fce03cc1c527a934e1f, - limb1: 0x656885c98a0e019454a4849f, - limb2: 0xa2b5b135c08b71e084c5024f, - limb3: 0x19076e9f088dc6a2452bd54d + limb0: 0x32321a942ef961780ca91c06, + limb1: 0x57e5605fbba104f908e63665, + limb2: 0x843c0bbd70b5a837b690bd95, + limb3: 0xbe7f58485672327a5c447c1 }, y: u384 { - limb0: 0x537f160b429b7b512a244d6e, - limb1: 0xc0dc000589a3b91bd39a52ed, - limb2: 0xaab38c3cba8f9faf6a12317c, - limb3: 0xe5043003847eb1cefedfa5d + limb0: 0x2150b2afd97c7793d20d0ecc, + limb1: 0x4f6a0ae7eaf68e727f2fcb5d, + limb2: 0x96407ddecb1fe770faf07c8c, + limb3: 0x4c4183b2e457821188d59e7 } } ); @@ -12142,57 +12153,57 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0xc4eb125ecc75cee6576eb3af, - limb1: 0xa22797478cbfeadf5fa688d4, - limb2: 0x7a08de43383d2590b02682ad, - limb3: 0x13becb4d718dc6ddec49d663 + limb0: 0xe4f817e54aede0613c17035c, + limb1: 0xdff1f15010392a6da1f95a6, + limb2: 0xbed78d3d341e911d49f15454, + limb3: 0x18154782ce0913b21588066d }, y: u384 { - limb0: 0x873e2674a36c9b33fa3d8e63, - limb1: 0xe923038da8ea7385f3bcc8a4, - limb2: 0xe3e574f906c87fea1cd634c, - limb3: 0x1164b1d491c408b295f2f3cb + limb0: 0x3d77d61326ef5a9a5a681757, + limb1: 0xd3070afd4f0e121de7fcee60, + limb2: 0xdf9ef4088763fe611fb85858, + limb3: 0x11a612bdd0bc09562856a70 } }, G1Point { x: u384 { - limb0: 0xa9195e0c55788cb3b7892d73, - limb1: 0x1484e05f1f27cc3b59010895, - limb2: 0x41030dc08c1949046a8585d0, - limb3: 0x1946e13228cd2662cd92de8f + limb0: 0xde4f62a6588c9401ffefbd3, + limb1: 0x9bb5f797ac6d3395b71420b5, + limb2: 0xdc39e973aaf31de52219df08, + limb3: 0x105dcc4dce3960447d21d3c1 }, y: u384 { - limb0: 0xf0830be7bab804f6c3dda25c, - limb1: 0x381df6c2508ea8139a425757, - limb2: 0xee35530b5a1989d63a18bb4, - limb3: 0x16712d25c87941279065a4d7 + limb0: 0xaefd0d854043fd325dd3c34f, + limb1: 0x9b63c98d9a7845c52e1e2b0f, + limb2: 0x9db0be660d847ccc58358f3f, + limb3: 0x17cb6c41f0c4e1a7394ab62a } }, G1Point { x: u384 { - limb0: 0xe838ddf995df5a904a2e7d3a, - limb1: 0x38b21c3a5fff326cb417a95c, - limb2: 0x45a631e253700066fca21260, - limb3: 0x8a2997796c2591b21c88c11 + limb0: 0xcf86158ab69213388e721bb7, + limb1: 0x5f7812269d790797cad9aa15, + limb2: 0xb1c3622a0177001d9ed8e25f, + limb3: 0x115cf429f459884785c6ba46 }, y: u384 { - limb0: 0xdb36a3ded59cb472a32b35b2, - limb1: 0x3b9c8be04f7f87b0878962fc, - limb2: 0xc79c431afe952a92b8608526, - limb3: 0x665d143a2bd2136dd19361e + limb0: 0x1e81341e2f3f988ff115dda3, + limb1: 0xad22946489db6ee4954fa5e1, + limb2: 0x83bed94412e19d92b73cc763, + limb3: 0x2074c7bceff87d0d41edba1 } }, ] .span(); let scalars = array![ u256 { - low: 0xd205fb0a0bc6deef64a1f4d6fe111f1, high: 0x41a9a5a7e1e9822e8c59a96b29a9e5b1 + low: 0x5a92118719c78df48f4ff31e78de5857, high: 0x51f964df9c6316b950f244556f25e2a2 }, u256 { - low: 0x8fe23f44f62486de33f25f2b367d5b52, high: 0x6bef62914a71222c6181b9997ff4c7db + low: 0x8d723104f77383c13458a748e9bb17bc, high: 0x42bbb74ddd84f39e71545a137a1d5006 }, u256 { - low: 0x99952df0fb8f6c869150ad81477881c7, high: 0x1b88b2a9fdc80edf1f936831a77ef38 + low: 0xeb2083e6ce164dba0ff18e0242af9fc3, high: 0xbf0551e03983ca8ea7e9d498c778ea6 }, ] .span(); @@ -12202,87 +12213,106 @@ mod msm_tests { array![ -0x1, 0x0, + 0x0, 0x1, + 0x0, + 0x0, -0x1, - 0x1, -0x1, 0x1, - 0x1, - 0x1, - 0x1, - 0x1, + -0x1, + -0x1, 0x1, -0x1, + -0x1, 0x0, - 0x0, - 0x0, - 0x0, + -0x1, + -0x1, -0x1, 0x1, -0x1, + 0x1, 0x0, 0x0, -0x1, - -0x1, 0x0, - -0x1, 0x0, - 0x1, 0x0, 0x0, + 0x1, + 0x0, + -0x1, -0x1, 0x1, + -0x1, 0x0, 0x0, 0x1, - 0x0, + 0x1, -0x1, + 0x1, 0x0, - -0x1, 0x0, -0x1, 0x0, -0x1, + 0x1, + -0x1, 0x0, - 0x0, + -0x1, + 0x1, + -0x1, 0x1, 0x1, - 0x0, -0x1, 0x0, + 0x0, -0x1, + 0x1, -0x1, + 0x1, -0x1, -0x1, 0x0, + 0x1, -0x1, + 0x0, -0x1, - 0x1, 0x0, + -0x1, 0x0, -0x1, 0x0, + 0x1, + 0x1, + 0x0, 0x0, 0x0, - 0x1, -0x1, 0x1, 0x1, 0x1, + ] + .span(), + array![ -0x1, + -0x1, + 0x0, 0x1, -0x1, + 0x1, 0x0, + -0x1, + 0x1, 0x0, -0x1, 0x1, 0x1, - 0x0, 0x1, - ] - .span(), - array![ + 0x0, -0x1, + 0x1, + 0x1, 0x0, -0x1, 0x1, @@ -12290,77 +12320,60 @@ mod msm_tests { -0x1, -0x1, -0x1, - 0x0, + 0x1, -0x1, 0x0, - 0x0, + 0x1, + -0x1, -0x1, -0x1, 0x0, 0x0, - 0x1, + -0x1, 0x1, 0x1, -0x1, 0x0, 0x0, 0x0, - 0x0, - -0x1, - -0x1, - -0x1, - 0x0, - -0x1, - -0x1, 0x1, 0x1, 0x1, 0x0, + 0x1, -0x1, 0x0, 0x0, - -0x1, - -0x1, + 0x1, + 0x0, 0x0, + 0x1, -0x1, -0x1, + 0x1, 0x0, -0x1, 0x0, - -0x1, + 0x1, 0x1, -0x1, -0x1, - 0x0, - 0x0, 0x1, + -0x1, + -0x1, 0x1, 0x0, 0x0, - 0x1, - -0x1, - 0x0, - -0x1, - -0x1, 0x0, 0x0, 0x1, 0x1, - 0x1, - 0x0, - 0x0, - -0x1, - -0x1, - -0x1, - -0x1, -0x1, + 0x0, 0x1, - -0x1, + 0x0, 0x1, 0x1, - 0x0, - -0x1, - -0x1, 0x1, 0x1, ] @@ -12368,79 +12381,73 @@ mod msm_tests { ), ( array![ - 0x1, - -0x1, - 0x0, - -0x1, - 0x0, 0x0, 0x1, 0x1, + 0x0, + -0x1, 0x1, + 0x0, 0x1, -0x1, - -0x1, 0x1, 0x1, -0x1, + 0x1, -0x1, 0x1, -0x1, + -0x1, 0x1, 0x0, 0x0, -0x1, - -0x1, - 0x0, + 0x1, 0x0, 0x0, - -0x1, 0x0, 0x0, 0x1, - 0x1, - 0x0, - -0x1, -0x1, 0x1, + 0x1, -0x1, 0x1, 0x0, 0x1, - -0x1, 0x0, - 0x1, 0x0, + 0x0, + 0x0, + 0x1, -0x1, -0x1, + 0x0, + 0x1, -0x1, + 0x0, -0x1, 0x1, + 0x1, + -0x1, 0x0, 0x0, 0x0, - 0x1, - 0x0, + -0x1, -0x1, 0x0, -0x1, 0x1, - -0x1, + 0x0, + 0x0, 0x1, 0x1, -0x1, - -0x1, - -0x1, - -0x1, - -0x1, - -0x1, 0x0, - 0x1, 0x0, - -0x1, 0x1, -0x1, - -0x1, + 0x0, -0x1, 0x1, 0x1, @@ -12448,55 +12455,47 @@ mod msm_tests { 0x1, 0x0, -0x1, + 0x0, + 0x0, 0x1, - ] - .span(), - array![ -0x1, -0x1, -0x1, - 0x0, 0x1, + ] + .span(), + array![ 0x1, -0x1, 0x0, - 0x0, + 0x1, 0x0, 0x1, + 0x1, + -0x1, -0x1, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, -0x1, - 0x1, -0x1, - 0x1, - 0x0, 0x1, -0x1, 0x1, - 0x0, + 0x1, 0x1, 0x1, 0x0, - 0x0, + -0x1, 0x1, -0x1, - 0x0, -0x1, - 0x0, - 0x0, + -0x1, 0x1, 0x1, + -0x1, 0x1, 0x0, - 0x0, - 0x0, -0x1, 0x1, - 0x0, + -0x1, -0x1, -0x1, 0x0, @@ -12504,200 +12503,217 @@ mod msm_tests { 0x1, 0x1, 0x0, - 0x1, + 0x0, + 0x0, + -0x1, 0x0, 0x1, -0x1, -0x1, 0x0, + 0x1, + -0x1, + 0x1, 0x0, -0x1, + 0x0, 0x1, + 0x1, + 0x0, -0x1, -0x1, -0x1, -0x1, 0x1, + 0x1, + -0x1, + -0x1, -0x1, + 0x0, + 0x1, -0x1, + 0x0, 0x1, 0x1, 0x1, -0x1, - -0x1, 0x1, - 0x0, + -0x1, + -0x1, 0x1, 0x1, + -0x1, + -0x1, 0x1, - 0x0, - 0x0, 0x1, ] .span() ), ( array![ - 0x1, - -0x1, -0x1, - -0x1, - 0x1, - 0x1, 0x1, + -0x1, 0x1, + -0x1, + 0x0, 0x0, -0x1, -0x1, -0x1, 0x1, + 0x0, + 0x0, -0x1, -0x1, + 0x1, + 0x1, + 0x1, -0x1, + 0x1, -0x1, - 0x0, 0x1, 0x1, -0x1, + 0x0, + 0x1, + 0x0, + 0x0, -0x1, 0x0, + -0x1, + -0x1, 0x1, 0x0, + 0x1, + 0x1, -0x1, 0x1, 0x0, -0x1, -0x1, + -0x1, + -0x1, + -0x1, + -0x1, 0x0, 0x0, 0x0, 0x0, 0x0, - -0x1, - 0x1, - 0x0, 0x1, -0x1, 0x1, 0x0, -0x1, 0x0, - 0x1, - -0x1, 0x0, 0x1, - 0x1, 0x0, - -0x1, 0x0, - -0x1, - -0x1, - -0x1, 0x1, - -0x1, 0x1, + -0x1, + -0x1, 0x1, 0x1, 0x0, - 0x1, -0x1, 0x0, - 0x1, -0x1, - 0x1, - 0x1, 0x0, - 0x1, - 0x1, + 0x0, 0x1, -0x1, - 0x0, -0x1, + -0x1, + 0x0, 0x0, 0x1, - -0x1, 0x0, -0x1, - 0x1, + -0x1, ] .span(), array![ - -0x1, - 0x1, 0x1, + -0x1, 0x0, - 0x1, - 0x1, + -0x1, -0x1, -0x1, 0x1, 0x0, - 0x1, + -0x1, + 0x0, 0x0, 0x1, -0x1, + 0x0, 0x1, -0x1, - 0x1, + 0x0, -0x1, -0x1, - 0x1, 0x0, 0x0, 0x1, - 0x1, - 0x0, + -0x1, 0x0, + 0x1, + -0x1, + 0x1, 0x0, -0x1, -0x1, 0x1, - 0x0, - 0x0, - 0x0, -0x1, - 0x0, -0x1, + 0x1, 0x0, + 0x1, 0x0, 0x1, 0x1, 0x1, 0x0, + 0x0, -0x1, - -0x1, - -0x1, - 0x1, 0x0, - 0x1, 0x0, -0x1, 0x0, - -0x1, + 0x1, 0x0, -0x1, -0x1, 0x0, 0x0, + 0x1, + 0x1, + 0x0, + 0x0, 0x0, 0x1, 0x1, + 0x1, + 0x0, + 0x0, -0x1, -0x1, 0x0, 0x1, 0x1, - -0x1, - 0x0, - -0x1, 0x1, 0x1, - -0x1, 0x1, - 0x0, -0x1, -0x1, -0x1, + 0x0, + 0x1, + 0x0, + 0x0, 0x1, ] .span() @@ -12708,69 +12724,69 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0x516627f62f66139ade147de8, - limb1: 0x1e44188c82aaa402e1749d3, - limb2: 0xa77b83bb7b2eedb45572088f, - limb3: 0xb49670488aae7a02bccb3b1 + limb0: 0x11823dbc15aaa1c4744e3ae6, + limb1: 0xed165517e5e9ea86ef83626d, + limb2: 0x599bb805cf82df0ad7b88d4, + limb3: 0x2259d656631cd6cb7ca503 }, y: u384 { - limb0: 0xadc7d709a90f8b42d440913, - limb1: 0xb4f8fb9cb9d59de7353c3396, - limb2: 0xae0acf35b991b6ef70d05168, - limb3: 0xe6aac1a0919e1fc29a53c73 + limb0: 0xa52767bf9500996dcb6f06de, + limb1: 0x4c3edc0a3d7e785efff8d773, + limb2: 0xa810050dbd5b772d7d4a6ec2, + limb3: 0x187f28f27554dc36632450b4 } }, Q_high: G1Point { x: u384 { - limb0: 0x9e0d2211e82b75b6caddaf9, - limb1: 0x64e40bbf86335fc7f1316106, - limb2: 0xb114fd0d74725b1b535109e9, - limb3: 0x252367a4b8aeb62b0baface + limb0: 0xbeae5e8027eab18d8ba094b5, + limb1: 0x731aab37aea92eee9fccf8f, + limb2: 0x31bba431f14bff8a86f8ebcc, + limb3: 0x20679302b8899ab4845e9a1 }, y: u384 { - limb0: 0x3c7cd249d3e1c51efd20a429, - limb1: 0x6e783fd45d2e83f9fe81e786, - limb2: 0x58db74d33ec30b29f13c90b7, - limb3: 0xb7142b29a44bb780a08f835 + limb0: 0xefe258df34e11aff024e164a, + limb1: 0xf4d830d93bddf2773a7468b4, + limb2: 0x2fe489afbf0e10e359231e86, + limb3: 0x182a85bb31f64b21d56f0d3e } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0xfb07eba478bb9911c34f9391, - limb1: 0x197e2ff9b1e2a38da95974d3, - limb2: 0xf05a99fdd8b91fe7f2513a9e, - limb3: 0x1d6e2acb9341922cc3dc650 + limb0: 0x985385c853deff5bb4583470, + limb1: 0xe599c2621df11becc1f3d4f6, + limb2: 0xdd4fb32dace0fc7229e86c53, + limb3: 0x10e509e0db936c6250450203 }, y: u384 { - limb0: 0x400913dbee9a3ea1750f00e0, - limb1: 0x2f53365c2843c21ae6ca891c, - limb2: 0xa1192a43d35fb96f2ccce6dd, - limb3: 0x7abdc96a42725e6cffb2cbd + limb0: 0xdd875fe78892d835f6e33a20, + limb1: 0xde7c5230dbf7253a9c70f8db, + limb2: 0x388a8293eb7837b46117e229, + limb3: 0xac01465b94f9a4d0372b51c } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0x61923015756b1b5c1cb32a6a, - limb1: 0x9a444ffce584f4870754a900, - limb2: 0x1f1c6bb7c5e1c8776d445157, - limb3: 0x1048191feb4cc152a8413f43 + limb0: 0x73449f235806ead82e399b3b, + limb1: 0xe6945411ee38f300baf295a9, + limb2: 0xccb2c35fdf227ba935452325, + limb3: 0x181b4fed5ba114b30699439d }, u384 { - limb0: 0xa69037c04b6f177b9e6b0143, - limb1: 0x91df923d87ebb6f1f21032e1, - limb2: 0x133cf44eb49749278bfbe2cf, - limb3: 0xd2d5ce6963d8bbdeac12a63 + limb0: 0x8eacda3dec1d4361b8db4d52, + limb1: 0xfd8397d36fb8147ca203d44a, + limb2: 0x54981485b776676f42cbe5d9, + limb3: 0xc451c1a01b67e5637820616 }, u384 { - limb0: 0xa77c466fce5defec8bebf98, - limb1: 0x39bf0dc1bf82962e23335f6, - limb2: 0xfe622ba9d26f8c404b3564f3, - limb3: 0x64ee29f8fb56ddc934ab0dd + limb0: 0xd21648b6c4e4f9a08904988c, + limb1: 0x13bdd865ce0b12d134c806aa, + limb2: 0x5927736c5e7598c3886f8f56, + limb3: 0xcc69d3db04912fbccbac10f }, u384 { - limb0: 0xe2a73043edebea7bcca82c0f, - limb1: 0xb39869507b587b125ca82560, + limb0: 0xe121ff5898e71229d3ddab70, + limb1: 0xb39869507b587b11f9280f2c, limb2: 0x21a5d66bb23ba5c279c2895f, limb3: 0xd0088f51cbff34d258dd3db } @@ -12778,107 +12794,107 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0x7e781d6c9ec7df0290c95117, - limb1: 0xe510184e2d61b02f75260b93, - limb2: 0xe39649900319f6cbb101335e, - limb3: 0x112a5eda3b7c3d049bfd2643 + limb0: 0xf479ce6ae63c5902a03ce71c, + limb1: 0x858bd2852cecb1f6f91e7e9d, + limb2: 0x82201194661069e89ccdaa09, + limb3: 0x14e092f35a5175ee75b8b2ac }, u384 { - limb0: 0x47efd789cd4649959918a8ab, - limb1: 0x27ec678a11711b07258f9106, - limb2: 0xf9c97978795f02b781f6494a, - limb3: 0x174ba00d3215075071bd40bf + limb0: 0xeceaaec04df47b9d399e7ec4, + limb1: 0x676986b87dd50b1cad9f2367, + limb2: 0xa0d37b55b700cd4ca827046e, + limb3: 0x18413be55a5e6a3e45bd4111 }, u384 { - limb0: 0x133868f2a5ad2a8a3ff38b33, - limb1: 0x618ac3f441251e9af9e57c02, - limb2: 0x1b90b87d8c68ce7316ae2f58, - limb3: 0x3bb38b9efe4231e76e14cb8 + limb0: 0x5f6fc01b4e7418025d593089, + limb1: 0xfbe37b6108ce807dd225021b, + limb2: 0xb7ee2c421b917b6c62dee9f5, + limb3: 0x10d95591f99ed96ca85818fe }, u384 { - limb0: 0x6c5889a446c9363ac8c423bd, - limb1: 0x444fa27910014ea4c12d7b61, - limb2: 0x21b564e49a7085de6dcf14d1, - limb3: 0xd1188c2f2b785d2d9e1026d + limb0: 0x40169ea8b149a161a128aa35, + limb1: 0x3f4ef9f7b33f2a1110733d1d, + limb2: 0x7774722aefe5057e222f99ad, + limb3: 0x1410d3edc5809ab9fd65bda9 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] .span(), b_num: array![ u384 { - limb0: 0xa790c0df75ce58b31cc62597, - limb1: 0xf71a296bb167a923ebe73230, - limb2: 0x5991f75c9973191ee08b0c8c, - limb3: 0x9278faddc95d6cfe88f2404 + limb0: 0xa474b754a7e6a20964692978, + limb1: 0x9a8084c537366aeae50c73bb, + limb2: 0xec047a67f01893bc4a45c320, + limb3: 0x25611661c9b07c32a926bc2 }, u384 { - limb0: 0xab00e3f59694c43dbcd01f57, - limb1: 0xd1e5713a3d5a22197a36259, - limb2: 0xb0fdbfc8be5d85820991a2e7, - limb3: 0x188adfd04217360942278b0f + limb0: 0xd30c90c72febee4ce8141c76, + limb1: 0x898c761bdf46327c191ec318, + limb2: 0x1829059e60446156c6c22f3, + limb3: 0x133d0035b4c31a4b67e3d6f0 }, u384 { - limb0: 0x2150a8c9423a84f19ebebdec, - limb1: 0x45fd0b10c1d657d4c953f211, - limb2: 0xc09957df68e86eacfe00227a, - limb3: 0x9f68496dc16ac11917eb313 + limb0: 0xbb4ef5c6e4266711af3057c, + limb1: 0xe80f389f8dc5975a6b78c287, + limb2: 0x28f218d1203dba555f21096d, + limb3: 0x16e51b75e8af51b93c78543 }, u384 { - limb0: 0xe66e36320f827d294090a11d, - limb1: 0x54d038a401dfe920efd8b2c0, - limb2: 0xa72f20a7b2ccd65604dcd3aa, - limb3: 0xc9060e0bc33a2e4d12727d2 + limb0: 0xd6cfef0aeefae88353a8f7c0, + limb1: 0xc5a8f22adbe98b90b158e1ac, + limb2: 0x9a461443e1031819c57bfd8e, + limb3: 0x167c034d5a003d36b43e8b43 }, u384 { - limb0: 0x3b884267d19c9bb70697e6bc, - limb1: 0x3f891ad204775d55906ffd6f, - limb2: 0x96f54ca9c490383c94251e6c, - limb3: 0x1605b581914455cc01233c91 + limb0: 0x90eb9b90963f5267aa2eba84, + limb1: 0xb18e75861808ddb2ada9c3b6, + limb2: 0x50b2f97754b45c4a41b00d43, + limb3: 0x14dc052889dae75a6895210a } ] .span(), b_den: array![ u384 { - limb0: 0x973875b307217c0a4325ef06, - limb1: 0xc5debbf6c824d47597402e50, - limb2: 0x7c1cc9143794424dcfaa7fc, - limb3: 0x10a757947af126ddd9bd49a3 + limb0: 0xbdeb39ac6af4640a80f49c6f, + limb1: 0xe09cd231cf9fe56f8875fa7b, + limb2: 0x3e9d3fcb6adbc51398a76fe7, + limb3: 0x57f160ebcc623eaf58fd38f }, u384 { - limb0: 0xbc35e28071c26566463a2ab, - limb1: 0x6a1f264561b189b03a3a441d, - limb2: 0x1d42df5bb816284f2d49ecea, - limb3: 0xf2b4a761bd46972e5a20bdd + limb0: 0x9faebb0209d4ee74e67afb0f, + limb1: 0x6813a2ff13414a065a788da3, + limb2: 0xb96ae6d0ae9d52a3c60cd97b, + limb3: 0x1301b9d6bcf9f52a35a20d23 }, u384 { - limb0: 0x4ce1a3ca96b4aa28ffce2ccc, - limb1: 0x862b0fd104947a6be795f008, - limb2: 0x6e42e1f631a339cc5ab8bd61, - limb3: 0xeece2e7bf908c79db8532e0 + limb0: 0x1b17006dc5d2600975656cce, + limb1: 0x212c484235d815af0b3c0870, + limb2: 0x59215759a55756a7a4718259, + limb3: 0xf633273737b987e0b29148e }, u384 { - limb0: 0xcd3243fe45eeb7edb3da8ab5, - limb1: 0x27ecfcf08004fe7a3c83f91b, - limb2: 0xe3d48373a3ed773b81336125, - limb3: 0x116e5e11935a871b6d49e08b + limb0: 0xe0d8490e7d65de8924e08fef, + limb1: 0x4d35428115d677cedee77316, + limb2: 0x960ed3b9f83e9d524afcd880, + limb3: 0x1720acebc3d42d0789fcb22f }, u384 { - limb0: 0x47efd789cd4649959918a8af, - limb1: 0x27ec678a11711b07258f9106, - limb2: 0xf9c97978795f02b781f6494a, - limb3: 0x174ba00d3215075071bd40bf + limb0: 0xeceaaec04df47b9d399e7ec8, + limb1: 0x676986b87dd50b1cad9f2367, + limb2: 0xa0d37b55b700cd4ca827046e, + limb3: 0x18413be55a5e6a3e45bd4111 }, u384 { - limb0: 0x133868f2a5ad2a8a3ff38b33, - limb1: 0x618ac3f441251e9af9e57c02, - limb2: 0x1b90b87d8c68ce7316ae2f58, - limb3: 0x3bb38b9efe4231e76e14cb8 + limb0: 0x5f6fc01b4e7418025d593089, + limb1: 0xfbe37b6108ce807dd225021b, + limb2: 0xb7ee2c421b917b6c62dee9f5, + limb3: 0x10d95591f99ed96ca85818fe }, u384 { - limb0: 0x6c5889a446c9363ac8c423bd, - limb1: 0x444fa27910014ea4c12d7b61, - limb2: 0x21b564e49a7085de6dcf14d1, - limb3: 0xd1188c2f2b785d2d9e1026d + limb0: 0x40169ea8b149a161a128aa35, + limb1: 0x3f4ef9f7b33f2a1110733d1d, + limb2: 0x7774722aefe5057e222f99ad, + limb3: 0x1410d3edc5809ab9fd65bda9 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] @@ -12887,26 +12903,26 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0x7e6a71a5317d64f9a17e2c04, - limb1: 0xebf81842266e110af9c13b7e, - limb2: 0x5536e9908e7f2ed0eb45a9b8, - limb3: 0x16ef60fc2899f1a18ec5fa63 + limb0: 0x72fbf8cf26b992f352e35f0a, + limb1: 0x3fad9e2e1d4bd5120d1b2754, + limb2: 0xa7e4fe2479949860a1a3ef49, + limb3: 0x77daa068760c28db773db8a }, u384 { - limb0: 0xebfe0f13602bc86a8e957336, - limb1: 0xe676e5cc34ca3fcb2fedad3a, - limb2: 0x2ee1eeb1ce88ef84f763e42f, - limb3: 0x133450a6952b19f18aa98381 + limb0: 0xedf08e80b2f26a3efa636f9b, + limb1: 0x6d9253842d20f5a41c6c1933, + limb2: 0xf604da33d15c81078d5974ce, + limb3: 0x177a16bd759ef9e08aa8144 }, u384 { - limb0: 0x1bdbbaa5f7a32ccc4610f7ef, - limb1: 0x82f74f1c2d4775eb32ac83c5, - limb2: 0xabcd2a30a46c8547f387bb1d, - limb3: 0x19a1dd9a312a16272458f15d + limb0: 0x7bb86f45e8d00ca09fdfe54a, + limb1: 0xceb6f850c88ed439b14ebfcb, + limb2: 0xde5840814736b84e382fc6d0, + limb3: 0x91335390b6f77fa903f640d }, u384 { - limb0: 0xcf152f74099e5062943b3a0d, - limb1: 0xb39869507b587b126ed592ba, + limb0: 0x1dd2e1e6987c6c560429b7ec, + limb1: 0xb39869507b587b1267e6d5c8, limb2: 0x21a5d66bb23ba5c279c2895f, limb3: 0xd0088f51cbff34d258dd3db } @@ -12914,107 +12930,107 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0x309866b091db19f6aacf96a8, - limb1: 0xde45c8009f51491eec8a41dd, - limb2: 0x7c97b3f4b17ff519425dcc46, - limb3: 0x8b56a0ce0d69134c77f62e2 + limb0: 0x317622f15777591269e1f889, + limb1: 0xbb3252301106a1b6c751eaf7, + limb2: 0xb32816ef7d31cfab04681f8e, + limb3: 0x127efc1f9293be962432f9a7 }, u384 { - limb0: 0xd784cc6f4ffcfbd13febce4d, - limb1: 0xf6924e107dfe3dd150511a65, - limb2: 0xf9c261e019085fc4547759b6, - limb3: 0x15c12252cb2a8da17a3d1c93 + limb0: 0xad9a01c76608cef89bab776a, + limb1: 0xeea8685d9eb5f0a5fe93bf95, + limb2: 0x7a54118b34723333b497e485, + limb3: 0xd41c2d1315677ce798eb59 }, u384 { - limb0: 0x7b223dd7d53e5d0cc4f59830, - limb1: 0x9c0e8ad5b06189e921500398, - limb2: 0x2883f3c23231b8e0a73b4d3f, - limb3: 0x192bb4e1e17058b606dbe98e + limb0: 0xf59721f488941411c4e9146a, + limb1: 0xcc8134757b149df2d2b04e0c, + limb2: 0xa5cae21a7fbd7d510f70df7c, + limb3: 0xe02b5a243f087cfdfde737d }, u384 { - limb0: 0xb3dddf7957ac927a3a2ac6ac, - limb1: 0xe14fd84251f8991cfe13642e, - limb2: 0x181beb92a12d18776ff01376, - limb3: 0x1608b94d2fd7821054f2bb50 + limb0: 0x92ea7de49f09919889d65066, + limb1: 0x2533a45c1e3e81a915f9cffa, + limb2: 0x4b5289795b9133e448b236b6, + limb3: 0x122cb493f05b1de5809c790b }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] .span(), b_num: array![ u384 { - limb0: 0x894bd4809a79dcfceacb9ce5, - limb1: 0x52024ce0632c94fcc76a3fef, - limb2: 0x7e67e36f7022a606fb08e90c, - limb3: 0x14dfc7dc8fdb797b002148bf + limb0: 0xe115e3e860c9ca69dd8829fe, + limb1: 0xd93ffb1eee86c6ca057d435d, + limb2: 0xd3ce81aff601fbd76583e733, + limb3: 0x199c0337a6c46646f387d289 }, u384 { - limb0: 0x3f79608916dc175b284b8b6a, - limb1: 0xefbbb9cfe5a747e5dce9ce90, - limb2: 0x1fbaccfc82245226e361e3d0, - limb3: 0xb12a75d99d20664daea0d3f + limb0: 0x2d7e067f8caacf49eec467b7, + limb1: 0x37402a2b151ca3202adb8802, + limb2: 0x781b92e0a55370c1cacd94f2, + limb3: 0xf8644697f9a3c456959340d }, u384 { - limb0: 0xc68ca2ce994ccfe9b42fa820, - limb1: 0xd0791052022660a01b23e5eb, - limb2: 0xce57e48fed7118ee38ef47ba, - limb3: 0x43dafecb8bf50df9cca8bce + limb0: 0x25541cca19b4fdbf9fc0ebe5, + limb1: 0x905dbdf2d62abc43f1e06230, + limb2: 0xf04397c07400aa98b6f465a0, + limb3: 0x82a1b6e72ea4c741b87b0dc }, u384 { - limb0: 0x47b829279ad3b84822fe235b, - limb1: 0x5abc92ba445c854ba4c83698, - limb2: 0x90985884fbc6c346c3420330, - limb3: 0xe94438e514d1f0c05271dc1 + limb0: 0x37d21fc1f6649d83afa8df11, + limb1: 0xa3b7535cd695c8c4cf88a9df, + limb2: 0xc6ecd8a2133301d4f090660b, + limb3: 0x169d05b3ebf2d27095b2fd8d }, u384 { - limb0: 0x221b6adfc4f7490f4af33307, - limb1: 0x3294af504efc26984a3bb6be, - limb2: 0xa93d2c7b0df3a0c9d67b5651, - limb3: 0x1eebf0be139f0b81f178b9 + limb0: 0xae2c7c2bc82fcb2247fd3d99, + limb1: 0x44c22f265ebc45de929b667f, + limb2: 0xf5403ab5e9bdc30972e5a100, + limb3: 0x71114ad5340b5b0ba82b069 } ] .span(), b_den: array![ u384 { - limb0: 0x110d9ac28d6d67daab3eaff5, - limb1: 0x11e64d6186942e57937d0776, - limb2: 0xaf1322fb618888e015f21e5c, - limb3: 0x8d4964949da5e38d2e1e3d3 + limb0: 0x63308bc5e9df6449a7888cce, + limb1: 0x1e67a37e56b89a92dfefabdf, + limb2: 0x4609020f2bd8a7a22a9658bc, + limb3: 0x15f9cca9d74f2d23fa949732 }, u384 { - limb0: 0x4a1731be11f6ef44ffb03933, - limb1: 0xa4b6c05f13e614d8e540699b, - limb2: 0x1d2680fa36bb9c82774e2e9d, - limb3: 0x901538c802a82b707a17b2d + limb0: 0xb668071d98233be26eaddda8, + limb1: 0xbaa1a1767ad7c297fa4efe56, + limb2: 0xe950462cd1c8ccced25f9217, + limb3: 0x35070b44c559df39e63ad65 }, u384 { - limb0: 0xd88cf76026fc743313d760bf, - limb1: 0x3aa7b373dd734538293c0e65, - limb2: 0xd82cc8829b6100f3c25dfcc0, - limb3: 0x16ab9dc8d941af093a1caf15 + limb0: 0x73b487d2ae52504713a4fc52, + limb1: 0x63a32c93fef08b830d693836, + limb2: 0x10942ebb36075e3a56b95874, + limb3: 0x408b2b49cc2520ae9427e8a }, u384 { - limb0: 0xec13e496c29063df937bb157, - limb1: 0x2df2b1270320cb2688d3d29b, - limb2: 0x13245bb908ce7468278ee1e4, - limb3: 0x12d51982f3b4e5a739f75900 + limb0: 0x69241a84a5a09f74913c3a20, + limb1: 0x1a6e6bbda5edc5eec3352ae5, + limb2: 0x168f364ebe10bcad4ca1c229, + limb3: 0xd2e98b0a780825d4551e6b2 }, u384 { - limb0: 0xd784cc6f4ffcfbd13febce51, - limb1: 0xf6924e107dfe3dd150511a65, - limb2: 0xf9c261e019085fc4547759b6, - limb3: 0x15c12252cb2a8da17a3d1c93 + limb0: 0xad9a01c76608cef89bab776e, + limb1: 0xeea8685d9eb5f0a5fe93bf95, + limb2: 0x7a54118b34723333b497e485, + limb3: 0xd41c2d1315677ce798eb59 }, u384 { - limb0: 0x7b223dd7d53e5d0cc4f59830, - limb1: 0x9c0e8ad5b06189e921500398, - limb2: 0x2883f3c23231b8e0a73b4d3f, - limb3: 0x192bb4e1e17058b606dbe98e + limb0: 0xf59721f488941411c4e9146a, + limb1: 0xcc8134757b149df2d2b04e0c, + limb2: 0xa5cae21a7fbd7d510f70df7c, + limb3: 0xe02b5a243f087cfdfde737d }, u384 { - limb0: 0xb3dddf7957ac927a3a2ac6ac, - limb1: 0xe14fd84251f8991cfe13642e, - limb2: 0x181beb92a12d18776ff01376, - limb3: 0x1608b94d2fd7821054f2bb50 + limb0: 0x92ea7de49f09919889d65066, + limb1: 0x2533a45c1e3e81a915f9cffa, + limb2: 0x4b5289795b9133e448b236b6, + limb3: 0x122cb493f05b1de5809c790b }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] @@ -13023,10 +13039,10 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0x39fe548b94f53f879fc26627, - limb1: 0x6bb46171e1c51be01e896e7f, - limb2: 0x8175d7be62e9492b6fe1a714, - limb3: 0x253d04fefabf3ea245c9a06 + limb0: 0xe19ac780da7abab3191831e, + limb1: 0xc4d8335a90950ccf95a96f28, + limb2: 0x50b48891c095ee07e826f606, + limb3: 0x1098ac5e84b72e3ef66f0ef }, u384 { limb0: 0x302ea91a3b09524e7c49fbbb, @@ -13038,66 +13054,66 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0x2b9dcfd69cc5cacb65755ec0, - limb1: 0x6bb49375c23178206b27de4e, - limb2: 0x857e3f40aa2c7ac68132a9aa, - limb3: 0x8bbbe492de43746536042d4 + limb0: 0x387d928131bb776910493d49, + limb1: 0xddfc8f8abf51eb960fc9bb64, + limb2: 0xccca6a6eb33f5333c7b39a8, + limb3: 0x92d80e0889352251e0a73a0 }, u384 { - limb0: 0xac6b423a22c0af92d0023c21, - limb1: 0xe8ce96e7be9af2ce84212a24, - limb2: 0xa1dc15cc174bd081ade2ce37, - limb3: 0x15d7f8c334c0e214ce22e696 + limb0: 0x5a521bb73e354f16c006e186, + limb1: 0x7a65658b5dd5474872bb5b78, + limb2: 0x34405577c64a4f8842a3ba9f, + limb3: 0x7158ed93263e08cb290bc11 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] .span(), b_num: array![ u384 { - limb0: 0xc4268fe6026dc6f58985d6a9, - limb1: 0x297b9f6d66eb50b525a6a8c6, - limb2: 0xd91be299c878218fe67397aa, - limb3: 0x4961364b24031d3717343bc + limb0: 0x470647448698160336edcb99, + limb1: 0xcdf7af4dc86bf151f203be89, + limb2: 0x691f5cc173e44eaae7bb3657, + limb3: 0xd450998f26e03ac9e0486f4 }, u384 { - limb0: 0x445dbb3775bbac283ea3de70, - limb1: 0x4af9a49cddd9469acc001b64, - limb2: 0x1366fdb23d72c2439bc9c00, - limb3: 0xb0ac3206beb0e5b540a2bf4 + limb0: 0x3e59c8a6dae9d4dfbca8f8b5, + limb1: 0xe92ffd0c085da7a97464330d, + limb2: 0xbbd461ab7ad0d9b33e505e49, + limb3: 0xc6dc765ca82ebde37891bfe }, u384 { - limb0: 0x2dc98c0edaf66f718ec2fa7f, - limb1: 0x66790c67119be09e4c54232b, - limb2: 0x5152b2bdecfd0b688de8a868, - limb3: 0x12f641feec35c56730e7fd32 + limb0: 0x8c979c760a37a56026d0059a, + limb1: 0xe28a507490ff5dcead0ddc52, + limb2: 0x66eb5f62b3790445768b9c6e, + limb3: 0x39d46e88c5f37fad68d46aa } ] .span(), b_den: array![ u384 { - limb0: 0xfd233f5ab9182b2d95d5d055, - limb1: 0x47a17b361214ea5d8df37939, - limb2: 0xd2ad502b443a9f95114593ea, - limb3: 0x8ede73a7e10f67f0265639b + limb0: 0x30a24a050ceedda441254a79, + limb1: 0x10c16b8a0696b834207aed92, + limb2: 0xefe6edc448588947fe67d3e4, + limb3: 0xab4f197e8cd61fa2d0e26c9 }, u384 { - limb0: 0x9db108e95d05be4b4009f083, - limb1: 0x6da7e3bc1658e8cdb480a896, - limb2: 0xbd8d50aa2fc95f77dcfc00a1, - limb3: 0x95cad4e2683d4845738a337 + limb0: 0xb7f46edd3ed63c5b001bdb6d, + limb1: 0x8264c38c80a426fdac416de2, + limb2: 0x8db5a907b4b1f29c1709d7be, + limb3: 0x255297a900f9b987f27488e }, u384 { limb0: 0x4, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x2b9dcfd69cc5cacb65755ec0, - limb1: 0x6bb49375c23178206b27de4e, - limb2: 0x857e3f40aa2c7ac68132a9aa, - limb3: 0x8bbbe492de43746536042d4 + limb0: 0x387d928131bb776910493d49, + limb1: 0xddfc8f8abf51eb960fc9bb64, + limb2: 0xccca6a6eb33f5333c7b39a8, + limb3: 0x92d80e0889352251e0a73a0 }, u384 { - limb0: 0xac6b423a22c0af92d0023c21, - limb1: 0xe8ce96e7be9af2ce84212a24, - limb2: 0xa1dc15cc174bd081ade2ce37, - limb3: 0x15d7f8c334c0e214ce22e696 + limb0: 0x5a521bb73e354f16c006e186, + limb1: 0x7a65658b5dd5474872bb5b78, + limb2: 0x34405577c64a4f8842a3ba9f, + limb3: 0x7158ed93263e08cb290bc11 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] @@ -13106,17 +13122,23 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0xd7ad140db07332a2dbe6ae57, - limb1: 0x5bd72de1e0de9ce8bffa260b, - limb2: 0xf157b2f2d493812ed1f4f6c3, - limb3: 0x751babf8a2828b3f6b31d37 + limb0: 0x1dc13ed46fe3d076336f262b, + limb1: 0x7aaad57e763eabd1b14602ab, + limb2: 0xb638d134c2489168dab445f1, + limb3: 0x15698696762ad6979634bec }, g_rhs_sqrt: array![ u384 { - limb0: 0x2e1fca279bf7457b2b8a2ab9, - limb1: 0xd98ae7eb05f0a82eee55ddd4, - limb2: 0x480b7de9ae05d367fd3e5b0c, - limb3: 0xe85746059e8c5c63af4ef9 + limb0: 0x3b4007d7a3b314b527b9b07e, + limb1: 0x1a5349c5be5f3a9c535b89a7, + limb2: 0x6f0a8ed3be94c258adef0e4b, + limb3: 0xac360ab47e1ee4caaf37762 + }, + u384 { + limb0: 0x97a109c1054b7d5960c7907a, + limb1: 0x1a4501a270bfefaafdfef3b2, + limb2: 0xa0d7ff8d3aaea912acf44b4c, + limb3: 0xa80b12ec2a3adba519c5828 } ], }; @@ -13126,16 +13148,16 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0xde11b024fe1cc93378ef3db7, - limb1: 0xa8fbf786d4f8db4a588adc0d, - limb2: 0xcc75c6f6cc70af6acc9f22d8, - limb3: 0x15f837f9182d49e576a52cd8 + limb0: 0x21b85c07d97d8ad7ed64cf5c, + limb1: 0xc68ab576217c87f6afe7e8f6, + limb2: 0x8aecb918175dcc693f68b02c, + limb3: 0x16bdc982d01b9f8d1782060e }, y: u384 { - limb0: 0x1862aa6d91c7faeaf0474a00, - limb1: 0x2ed96b9139da00b300213386, - limb2: 0x6a5b4b2e719c2ee70aeac528, - limb3: 0x16889471f9cadaba06ac05dd + limb0: 0x11cf0b8dceb54a416ec13f47, + limb1: 0x81a05b3acc5b76a765127289, + limb2: 0xcdbd38ba08efd726fae10661, + limb3: 0x9747640d51b315635b0059a } } ); @@ -13147,74 +13169,74 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0x330cbaf17ca9ea4cd5cfa869, - limb1: 0xf247bc052822916267bca05f, - limb2: 0xf520b45a74fd8f61db4d3870, - limb3: 0x9b473c77bc0ef0e90ac7341 + limb0: 0xe4f817e54aede0613c17035c, + limb1: 0xdff1f15010392a6da1f95a6, + limb2: 0xbed78d3d341e911d49f15454, + limb3: 0x18154782ce0913b21588066d }, y: u384 { - limb0: 0x474fc890b2e2af26942f5e02, - limb1: 0x1cac8d15a0a7df2fadf2401d, - limb2: 0x7100eb80fb03a77352e4b971, - limb3: 0x2a9d00a2f4da1cda6e9b034 + limb0: 0x3d77d61326ef5a9a5a681757, + limb1: 0xd3070afd4f0e121de7fcee60, + limb2: 0xdf9ef4088763fe611fb85858, + limb3: 0x11a612bdd0bc09562856a70 } }, G1Point { x: u384 { - limb0: 0x1e748274f5927a9b9cbef55d, - limb1: 0x58991b87eb4dd65d8d7a82dd, - limb2: 0x73fa22608f5a99ee4c65fa6c, - limb3: 0x13a0221c0e092f7c42db6fc6 + limb0: 0xde4f62a6588c9401ffefbd3, + limb1: 0x9bb5f797ac6d3395b71420b5, + limb2: 0xdc39e973aaf31de52219df08, + limb3: 0x105dcc4dce3960447d21d3c1 }, y: u384 { - limb0: 0x30d5862748463b51b7f772eb, - limb1: 0x119794da280b697436488181, - limb2: 0x2f0b9d1d48b97b25c0b592ba, - limb3: 0x1896f8bcf05a09edd01165ce + limb0: 0xaefd0d854043fd325dd3c34f, + limb1: 0x9b63c98d9a7845c52e1e2b0f, + limb2: 0x9db0be660d847ccc58358f3f, + limb3: 0x17cb6c41f0c4e1a7394ab62a } }, G1Point { x: u384 { - limb0: 0x3666ce59a2b1a481a2cc1294, - limb1: 0x9306f38ac7a51103506f551d, - limb2: 0xf6e354144ca9099a2b658bd6, - limb3: 0x18e119f2ed26cab15f630591 + limb0: 0xcf86158ab69213388e721bb7, + limb1: 0x5f7812269d790797cad9aa15, + limb2: 0xb1c3622a0177001d9ed8e25f, + limb3: 0x115cf429f459884785c6ba46 }, y: u384 { - limb0: 0xe3d219a5d8292e6dd7ab7311, - limb1: 0x8c6847c3410650556f42ef7a, - limb2: 0xff85b0aca692242364953b5b, - limb3: 0xe2d615b03a91524b6004ce + limb0: 0x1e81341e2f3f988ff115dda3, + limb1: 0xad22946489db6ee4954fa5e1, + limb2: 0x83bed94412e19d92b73cc763, + limb3: 0x2074c7bceff87d0d41edba1 } }, G1Point { x: u384 { - limb0: 0x68268e6d10bae456d3ff879c, - limb1: 0x77c9caa0d3575bc2454c6f73, - limb2: 0xd1e6682301e000b86b7cf009, - limb3: 0x17709428b07c96064594ff0c + limb0: 0xe2955c55da59eba4b7b57d3d, + limb1: 0x1e6629b0431bce67cf28c22, + limb2: 0x1c35b7efd5b67f87221b8bfc, + limb3: 0x3e53df9e3488a9e42acd87e }, y: u384 { - limb0: 0x6e06a70834de2ac6d1af0a37, - limb1: 0x6d1f38b57e775827cd40f466, - limb2: 0x2b459ad2c536933e513bbfe8, - limb3: 0x109cbf1c1f6c37880d019568 + limb0: 0x2e089afa726154d40dd12102, + limb1: 0x5391613ecf49db2bcf1cad86, + limb2: 0x84a2abb2de6b3a6e09026a50, + limb3: 0x19557a3a3c1d62a205d5dc87 } }, ] .span(); let scalars = array![ u256 { - low: 0xa7c0211cfb0a434ec711d9f63ce0ffa8, high: 0x569c65c7d9c95da705f36cfc56fd4e50 + low: 0x8d723104f77383c13458a748e9bb17bc, high: 0x42bbb74ddd84f39e71545a137a1d5006 }, u256 { - low: 0x961614f7bd1b859e729ace46f5413dde, high: 0x17228117ca528a9520ddcbc343e654c0 + low: 0xeb2083e6ce164dba0ff18e0242af9fc3, high: 0xbf0551e03983ca8ea7e9d498c778ea6 }, u256 { - low: 0x2d3a34881a929ffb11bedc7dabfa4ed3, high: 0x6c63c11a63fd80e3e1a4355c7e3be5e0 + low: 0xb5d32b1666194cb1d71037d1b83e90ec, high: 0x5008b5f2ab0c1681c8f8e3d0d3290a4c }, u256 { - low: 0x1768958b1d3839bb29a0c7eb5d138388, high: 0x786b9ff9776051fc9f34a6705ef4f52 + low: 0xd3fbf47a7e5b1e7f9ca5499d004ae545, high: 0x5d79c4bd3e70f16a55485822de1b372a }, ] .span(); @@ -13222,341 +13244,340 @@ mod msm_tests { array![ ( array![ + 0x0, 0x1, 0x1, 0x0, - 0x0, -0x1, - 0x0, 0x1, - -0x1, - 0x0, 0x0, 0x1, + -0x1, 0x1, 0x1, - 0x0, - 0x0, - -0x1, - 0x0, - 0x0, - -0x1, - 0x0, - -0x1, -0x1, 0x1, + -0x1, 0x1, -0x1, -0x1, - 0x0, 0x1, 0x0, - 0x1, + 0x0, -0x1, 0x1, 0x0, - -0x1, 0x0, - -0x1, 0x0, + 0x0, + 0x1, -0x1, + 0x1, + 0x1, -0x1, - 0x0, 0x1, 0x0, - 0x0, 0x1, 0x0, - 0x1, 0x0, - -0x1, 0x0, 0x0, - -0x1, - -0x1, + 0x1, -0x1, -0x1, 0x0, + 0x1, -0x1, + 0x0, -0x1, + 0x1, + 0x1, -0x1, 0x0, 0x0, - -0x1, + 0x0, -0x1, -0x1, 0x0, -0x1, 0x1, 0x0, + 0x0, + 0x1, + 0x1, -0x1, 0x0, 0x0, + 0x1, + -0x1, 0x0, + -0x1, 0x1, 0x1, + 0x0, 0x1, + 0x0, -0x1, - -0x1, - -0x1, + 0x0, + 0x0, 0x1, -0x1, - 0x1, -0x1, -0x1, + 0x1, ] .span(), array![ - 0x0, + 0x1, -0x1, 0x0, - 0x0, - 0x0, - 0x0, - 0x1, 0x1, + 0x0, 0x1, - -0x1, 0x1, -0x1, -0x1, -0x1, -0x1, - 0x0, - -0x1, + 0x1, -0x1, 0x1, 0x1, - -0x1, - -0x1, - 0x0, 0x1, 0x1, - -0x1, - 0x0, 0x0, + -0x1, 0x1, + -0x1, + -0x1, + -0x1, 0x1, 0x1, - 0x0, -0x1, 0x1, + 0x0, -0x1, 0x1, -0x1, - 0x0, - 0x0, -0x1, -0x1, - 0x1, - 0x0, 0x0, + -0x1, 0x1, 0x1, - -0x1, 0x0, 0x0, 0x0, + -0x1, 0x0, + 0x1, -0x1, -0x1, - 0x1, - 0x0, 0x0, + 0x1, -0x1, + 0x1, 0x0, -0x1, - -0x1, + 0x0, + 0x1, 0x1, + 0x0, + -0x1, -0x1, -0x1, - 0x0, -0x1, 0x1, - 0x0, - 0x0, + 0x1, -0x1, -0x1, -0x1, + 0x0, + 0x1, -0x1, + 0x0, 0x1, 0x1, 0x1, - 0x0, - 0x0, - 0x0, + -0x1, + 0x1, + -0x1, + -0x1, 0x1, 0x1, + -0x1, + -0x1, + 0x1, 0x1, ] .span() ), ( array![ - 0x1, -0x1, - 0x0, 0x1, - 0x1, - 0x0, -0x1, 0x1, + -0x1, 0x0, 0x0, -0x1, -0x1, -0x1, - -0x1, + 0x1, + 0x0, 0x0, + -0x1, + -0x1, 0x1, 0x1, 0x1, -0x1, - -0x1, 0x1, -0x1, - -0x1, 0x1, - 0x0, - -0x1, + 0x1, -0x1, + 0x0, 0x1, 0x0, - -0x1, - -0x1, 0x0, + -0x1, 0x0, -0x1, + -0x1, 0x1, 0x0, - 0x0, 0x1, 0x1, -0x1, - -0x1, 0x1, + 0x0, + -0x1, + -0x1, + -0x1, + -0x1, + -0x1, -0x1, 0x0, - 0x1, - 0x1, 0x0, - -0x1, - 0x1, 0x0, 0x0, 0x0, + 0x1, -0x1, + 0x1, + 0x0, -0x1, 0x0, 0x0, + 0x1, + 0x0, 0x0, 0x1, + 0x1, + -0x1, -0x1, 0x1, 0x1, 0x0, -0x1, - 0x1, 0x0, - 0x1, -0x1, - 0x1, 0x0, 0x0, 0x1, -0x1, -0x1, + -0x1, 0x0, 0x0, - -0x1, 0x1, 0x0, - 0x0, -0x1, - 0x1, + -0x1, ] .span(), array![ - 0x0, - 0x0, - 0x1, 0x1, + -0x1, 0x0, -0x1, + -0x1, + -0x1, 0x1, 0x0, + -0x1, 0x0, - 0x1, - 0x1, - 0x1, 0x0, 0x1, -0x1, - -0x1, - -0x1, - -0x1, 0x0, 0x1, -0x1, - -0x1, - -0x1, 0x0, -0x1, -0x1, - -0x1, - -0x1, - -0x1, - -0x1, - -0x1, 0x0, 0x0, - 0x0, - -0x1, - 0x1, - 0x0, 0x1, - 0x0, -0x1, 0x0, + 0x1, -0x1, 0x1, 0x0, -0x1, -0x1, - -0x1, 0x1, -0x1, -0x1, 0x1, + 0x0, 0x1, - -0x1, - -0x1, - -0x1, 0x0, 0x1, - -0x1, + 0x1, + 0x1, 0x0, 0x0, + -0x1, 0x0, - 0x1, 0x0, -0x1, 0x0, - -0x1, 0x1, + 0x0, + -0x1, -0x1, 0x0, 0x0, + 0x1, + 0x1, 0x0, 0x0, 0x0, 0x1, - -0x1, + 0x1, + 0x1, + 0x0, 0x0, -0x1, + -0x1, 0x0, + 0x1, + 0x1, + 0x1, + 0x1, + 0x1, -0x1, -0x1, + -0x1, + 0x0, + 0x1, + 0x0, + 0x0, + 0x1, ] .span() ), @@ -13565,247 +13586,251 @@ mod msm_tests { -0x1, -0x1, 0x0, - 0x0, - 0x1, - 0x0, - 0x1, -0x1, - 0x0, - -0x1, - 0x0, 0x1, 0x0, - -0x1, - 0x0, 0x0, - -0x1, 0x1, 0x1, - -0x1, + 0x1, + 0x1, 0x0, 0x1, + 0x0, 0x1, 0x0, 0x1, -0x1, + 0x1, -0x1, + 0x0, -0x1, 0x1, 0x1, - -0x1, - -0x1, - -0x1, - 0x0, + 0x1, 0x0, + 0x1, -0x1, -0x1, - -0x1, + 0x0, + 0x1, + 0x1, 0x1, -0x1, -0x1, 0x0, 0x0, 0x1, - -0x1, 0x1, -0x1, - 0x0, -0x1, - 0x1, -0x1, + 0x1, + 0x0, -0x1, -0x1, + 0x1, 0x0, -0x1, + 0x1, + 0x1, -0x1, 0x1, + 0x0, -0x1, 0x0, 0x1, - 0x1, + -0x1, 0x0, -0x1, 0x0, -0x1, 0x0, 0x1, + -0x1, + -0x1, 0x0, - 0x0, - 0x1, -0x1, 0x1, - -0x1, + 0x1, 0x1, 0x0, 0x0, 0x0, 0x1, + -0x1, + 0x0, 0x1, + 0x0, + 0x1, + -0x1, -0x1, ] .span(), array![ - 0x1, - 0x1, -0x1, - 0x1, - 0x1, -0x1, 0x0, - 0x0, - 0x1, - 0x1, 0x1, + 0x0, 0x1, + 0x0, 0x1, -0x1, + -0x1, + -0x1, 0x1, 0x1, -0x1, - -0x1, 0x0, + -0x1, + -0x1, 0x0, 0x0, -0x1, 0x0, + -0x1, 0x1, + 0x0, -0x1, + 0x1, 0x0, 0x0, 0x1, - 0x0, 0x1, -0x1, - 0x0, 0x1, - -0x1, - -0x1, - -0x1, - 0x0, - 0x0, + 0x1, + 0x1, 0x0, 0x1, + 0x1, 0x0, 0x0, 0x0, - 0x1, 0x0, + -0x1, 0x1, 0x1, 0x0, 0x0, + 0x0, 0x1, + 0x0, + 0x0, + -0x1, 0x1, -0x1, -0x1, - 0x0, -0x1, 0x0, 0x0, 0x0, + 0x1, + 0x1, 0x0, 0x0, - -0x1, 0x1, -0x1, + -0x1, + -0x1, 0x0, 0x1, 0x1, - 0x0, 0x1, -0x1, -0x1, - -0x1, - -0x1, - -0x1, - 0x1, - 0x0, 0x0, 0x1, - 0x1, 0x0, + -0x1, + 0x1, + -0x1, 0x0, 0x1, + 0x1, ] .span() ), ( array![ - 0x0, - 0x0, - 0x0, - 0x0, - 0x1, 0x1, -0x1, -0x1, + -0x1, + -0x1, 0x0, 0x0, -0x1, 0x0, 0x1, - 0x0, - 0x0, + 0x1, + 0x1, -0x1, 0x1, - 0x0, - 0x0, + 0x1, + 0x1, 0x0, 0x1, -0x1, 0x1, - 0x0, + -0x1, -0x1, 0x0, - 0x0, - 0x0, + -0x1, 0x1, 0x0, - 0x0, - 0x0, + -0x1, + 0x1, + 0x1, 0x1, -0x1, 0x0, -0x1, -0x1, - -0x1, - -0x1, - -0x1, + 0x1, + 0x0, + 0x1, -0x1, -0x1, 0x0, -0x1, - -0x1, + 0x0, + 0x0, + 0x0, -0x1, 0x1, -0x1, - -0x1, 0x1, + 0x0, + 0x1, + 0x0, + 0x0, 0x1, + 0x0, 0x1, 0x0, + 0x0, + 0x0, 0x1, - -0x1, 0x1, - -0x1, + 0x0, -0x1, -0x1, 0x0, - -0x1, 0x0, 0x0, 0x1, - 0x1, + -0x1, 0x0, + 0x0, + -0x1, 0x1, 0x1, 0x1, - -0x1, - 0x1, - 0x0, 0x1, -0x1, - 0x0, + 0x1, 0x0, -0x1, 0x0, @@ -13814,84 +13839,86 @@ mod msm_tests { ] .span(), array![ - 0x1, - -0x1, -0x1, 0x0, + 0x1, -0x1, + 0x1, -0x1, 0x1, 0x0, 0x1, -0x1, 0x0, - -0x1, - -0x1, - 0x0, 0x1, - -0x1, - 0x0, 0x1, - -0x1, - 0x0, 0x1, - 0x0, 0x1, -0x1, 0x1, 0x1, - 0x1, 0x0, -0x1, 0x0, + 0x1, -0x1, 0x1, 0x1, 0x0, + 0x0, -0x1, 0x1, - 0x1, 0x0, + 0x1, -0x1, + 0x0, + 0x1, -0x1, -0x1, -0x1, 0x0, 0x1, + 0x0, + 0x1, 0x1, -0x1, + 0x1, + -0x1, + 0x1, + 0x1, 0x0, 0x0, - -0x1, - -0x1, 0x0, 0x1, - 0x1, 0x0, 0x1, 0x0, - -0x1, 0x1, + -0x1, 0x1, 0x0, 0x0, + -0x1, + 0x1, + -0x1, + -0x1, 0x0, + 0x1, 0x0, 0x1, 0x1, -0x1, 0x1, - -0x1, + 0x0, -0x1, 0x1, 0x1, - 0x0, + 0x1, 0x0, -0x1, 0x1, -0x1, - -0x1, - 0x1, + 0x0, 0x1, ] .span() @@ -13902,201 +13929,201 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0x9d5572af13a56048483af426, - limb1: 0xd0200c2c7929c8a4f51b40bf, - limb2: 0xb52a1364145776e0c88c88a8, - limb3: 0x4413e525783466c49afc310 + limb0: 0xbc4181692563ab0eb1a31318, + limb1: 0x61ebbf0e84462f1e79d96252, + limb2: 0x3ed57b59ebb05f49e5578e45, + limb3: 0x85cba71b10f68d24eba882c }, y: u384 { - limb0: 0x2bb3946db3a773ba7226ad19, - limb1: 0x3d82fade92ab31ea8a27d7bd, - limb2: 0x34a980dbf1777e7f34901881, - limb3: 0x175162974bbb3adf117cc0dd + limb0: 0xef7532546377fc0e87f0f47f, + limb1: 0xb3e379fdb7fffe0a18148be1, + limb2: 0x825aa84d33ad9b1f9abf50be, + limb3: 0x97a13125c28ee4a39d4f322 } }, Q_high: G1Point { x: u384 { - limb0: 0x9f9f5e7106bc94070f28b952, - limb1: 0xc78b232e90f842def8031720, - limb2: 0x115cf9d2a2b48a7286e3ce0c, - limb3: 0xf420bc7c4fdc57bd779cfa3 + limb0: 0x1b9517bf39f57f45bd768cb3, + limb1: 0x56ae645efa941498ade3d968, + limb2: 0x1702c9bbae1a182cbb312172, + limb3: 0x330fea96f28b19489357321 }, y: u384 { - limb0: 0xf8fdb361bc38b979c73bfe7, - limb1: 0xda6efb8711cf0e65f690dcb7, - limb2: 0x5b639723222f89abb3c879c1, - limb3: 0x19fc3c1a10cd7a7a77f9c8fa + limb0: 0x703735b4c7649cf319813732, + limb1: 0xfaef500d5a6be26ae510d4dc, + limb2: 0xc23221d9004dcc2188e1518a, + limb3: 0xd7db70cb60f5ba45d194915 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0x3b531429b7014402bacfce2b, - limb1: 0xdd40a52dbc3c8f240fac563e, - limb2: 0xa31b5119f6a3d9682c50fd16, - limb3: 0x134d856344b13b2578cf2fdd + limb0: 0xb5e126acc0464686d79b1067, + limb1: 0xba7e52b04fbefd897bda1667, + limb2: 0xa34ca72e7aa959d64fa58abe, + limb3: 0x51da27c65a605812639db08 }, y: u384 { - limb0: 0x63fd25d4cb31363566e61c11, - limb1: 0xd1c27b0d1e5fd35b88fae891, - limb2: 0x861216279b35702287a35469, - limb3: 0xb45a62ca9d6be36ad41ee50 + limb0: 0xf74e08691a70739af1a84eea, + limb1: 0xb8233f6a0726b25c2ea31e74, + limb2: 0x42301f593d415c7eeb614c78, + limb3: 0x152bbc9d714256fd4c92ba1e } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0x7a55e81f9cc499b1f1eacad3, - limb1: 0x77d848dc4f846b436ff50ebf, - limb2: 0x43444efe0410ac76b29273fa, - limb3: 0x1cfe9352eb4064e4f7d7c23 + limb0: 0xd445c8b6c4d0c73bc705fa95, + limb1: 0xf2e1ac2d2f22560fb27a22a6, + limb2: 0x86be06ffabfbad17cadc9c62, + limb3: 0x6f400f52b825abdbd3532e3 }, u384 { - limb0: 0x56f3fff873b4b684a57655a4, - limb1: 0x64d5bab3b90b919358b890ad, - limb2: 0x2d55ebbeac0ca1131e0936eb, - limb3: 0x221655a90eb30d37fd959ee + limb0: 0x82ff543a8a60047a4353443a, + limb1: 0xd3abf9cc7d0ea8560d676502, + limb2: 0xef67b15ed4c5b92d778aa449, + limb3: 0x11d8e3ff0f669e46c9b7f8f9 }, u384 { - limb0: 0x5dd0bd461083d1f4f367c34b, - limb1: 0xedcde1bfad9dffae8d1d7fd3, - limb2: 0xb669dd64d504f27417687655, - limb3: 0x15c7f5dffcc9c45c019c17ad + limb0: 0xa3848b5be71fc6e64c1f4312, + limb1: 0x6accec15e1b70660f28a7453, + limb2: 0xe19c7514dd9ed67fbae56ba0, + limb3: 0x14036fe87021468e6113f077 }, u384 { - limb0: 0x5a7a330bc7809f9659ab48e0, - limb1: 0x3df47965d5b0d3f230d70b8b, - limb2: 0x52030ecbfe90346539f4e956, - limb3: 0x14ee1921ef3e9e319d6d93d5 + limb0: 0xa371a9939abe80b4a30f3a62, + limb1: 0x60e9782f357e2b68f45779df, + limb2: 0x99f09deac91dbc78ca3ded11, + limb3: 0x24718f3b77ceabc973ee827 }, u384 { - limb0: 0x717c4f5a984b820c1ce27ebd, - limb1: 0x6730d2a0f6b0f623acfbd1e0, - limb2: 0x434bacd764774b84f38512bf, - limb3: 0x1a0111ea397fe69a4b1ba7b6 + limb0: 0xa549f487ae2c714741802c68, + limb1: 0xb39869507b587b10e389bd16, + limb2: 0x21a5d66bb23ba5c279c2895f, + limb3: 0xd0088f51cbff34d258dd3db } ] .span(), a_den: array![ u384 { - limb0: 0x9f8e4b56d5fb22ba5a3c0cca, - limb1: 0x4aeab2a252feb65cb6c4bff4, - limb2: 0x4e7eea9a05ca5b1092db40ee, - limb3: 0xc0bcef80b129e8fdd41568f + limb0: 0x64b16524b9223d00c9c733, + limb1: 0xc6194083ddc95b0e1452ffa4, + limb2: 0x603473bb96e8f8f81d62deb4, + limb3: 0x1875d77c3de587d765ab41da }, u384 { - limb0: 0x5354b70c076507c4850fe64d, - limb1: 0x2dd8a130745c2162fd4475cb, - limb2: 0x722de386b62b65feb5ba948c, - limb3: 0xee99dc8b9dfc3da0a72dd2a + limb0: 0x6e1b02c8399c149d97cd4878, + limb1: 0x529a2da58cf1d0d2dc3429be, + limb2: 0x172167a54dbed02312a7190d, + limb3: 0x197251a2f09c916eddc336b1 }, u384 { - limb0: 0x9f8da9330cfa5c3f2d288222, - limb1: 0x37fd03f0b892c9950567de6a, - limb2: 0x1657ec6b932dde5879021d55, - limb3: 0x909c42f238795acc6408311 + limb0: 0xdac6b8af2c58d4a01d7a8249, + limb1: 0xc01d87bfffbdc8188902ff03, + limb2: 0x4902605d0c2e7342697a7c6e, + limb3: 0xbc764e24b86364271474b83 }, u384 { - limb0: 0x6d0e01ac03652c6fee67d5d9, - limb1: 0xdffd0f0eb64bd86f901a1625, - limb2: 0x953221373d8821ecd3c8e8c0, - limb3: 0x5c765084616fc82237a69bf + limb0: 0x72e2714711e14db536a8cbf0, + limb1: 0x67e499792ce69eb21a60c67, + limb2: 0xf4e328a801d8479940d8584f, + limb3: 0x870ee056d0895711ec8b5f3 }, u384 { - limb0: 0x37ebf322aeadb1f6ce697e90, - limb1: 0x76f1a89eb32d3b65faa1d76e, - limb2: 0x26200d072aa4839046f21397, - limb3: 0x161cc557670ed4ba6a3ef421 + limb0: 0xb2c1fea5c736ac72ac1e54c6, + limb1: 0xc8932d6610b12893092ab114, + limb2: 0x2202fa618b76549dc8380840, + limb3: 0x7f13558878bc420377b0202 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] .span(), b_num: array![ u384 { - limb0: 0x4f97faa58a9a8eea18b25582, - limb1: 0x7fcd1dc8907212108c1b293d, - limb2: 0x9c915079b65a7d7375c56e39, - limb3: 0x94d0bfc813b5d7ee2d4fba5 + limb0: 0x7c71a2d6595b782b0602f9b6, + limb1: 0xbeb5632920ff3135b1e3951c, + limb2: 0xc37161a74fd6f6de05a6fdbc, + limb3: 0xa056f1974c9e324bf49634f }, u384 { - limb0: 0xf0d36a0431176fc6d9187519, - limb1: 0x850c69035837170a42a1f829, - limb2: 0xeeb14532976f53b9c1a5323b, - limb3: 0xff328b9cf5d96fdeedd6f4f + limb0: 0xa103b9c0549710312b039be3, + limb1: 0x54d65e589337938949267335, + limb2: 0x327b5d1494d1f8c4dbf5819a, + limb3: 0x18af77bd9a7c1c354174ea3f }, u384 { - limb0: 0xc08f91d4ab8b398c0793bbca, - limb1: 0x3df6a7c859e9a0cd89103e1f, - limb2: 0x5b0855cde0f1c37888194112, - limb3: 0x193af6e97bfab7dd7f703522 + limb0: 0x7547296b1221e9446ea914a0, + limb1: 0x1093394f01f9e9389b14f805, + limb2: 0xd43fbf6df837f3a0fdf8c911, + limb3: 0x47150701f3c9251397faf71 }, u384 { - limb0: 0x621f52b820027d4687b0a9df, - limb1: 0x55a2d35dfc915004512f7b33, - limb2: 0xf6d78a7a5c3bf3f07361ba, - limb3: 0x19b380f881b8f53abf7e5b56 + limb0: 0x3800cfcc98e43897050f2d59, + limb1: 0xbef8e2ca16a9ccddf39aade3, + limb2: 0x1ac68bab431a5255da792384, + limb3: 0x1291657dabfb111bc781296d }, u384 { - limb0: 0x9dd3c3aa4e1f55843e9558d5, - limb1: 0xd41b1c6d2f105aaab5b90219, - limb2: 0xbe53d4a5e0f501921f4bd5d, - limb3: 0x5f017d6bdd7ae99c9745d23 + limb0: 0xaece8f2ee28921179eec365b, + limb1: 0xe62ba431fb0ae0944572cb29, + limb2: 0x76da975ebf1be1172b87919f, + limb3: 0x3baa95f2810f46b5937fbb8 }, u384 { - limb0: 0x6104f11188fcdddd64b6dd1c, - limb1: 0xd326a2ce722c1053e918faa8, - limb2: 0x14f7baae7613b4bdcb4a3e60, - limb3: 0x7de359abf2493f78e17b141 + limb0: 0x50056e88102c5faaa2a62438, + limb1: 0x5e8856f9c001675acb17c9f6, + limb2: 0xe332d75b333b9eaff72d95da, + limb3: 0x19dd7ba85bc00eb5b1f13627 } ] .span(), b_den: array![ u384 { - limb0: 0xcce52d5b9ded8ae968f0887d, - limb1: 0xc479f7e85549e34ebc66ffd3, - limb2: 0xf6affd90b2b220bd57e7f0f9, - limb3: 0x162e29f5f2ca93a529e9b286 + limb0: 0xed96c59564e788f403281ccb, + limb1: 0xe2d28a2c931289cbf547fe93, + limb2: 0xb6eec8682e3e01519afc4294, + limb3: 0x13d428324b166b8eb55a1046 }, u384 { - limb0: 0xeaaadc30a9961f12144043de, - limb1: 0xe900df7fe40e9943b7b9d72f, - limb2: 0x4220346c0fbf00f0efe02cb1, - limb3: 0x7a4534e747f42339394253d + limb0: 0xa4700b21b87352765f3621df, + limb1: 0x14d63eb34fb460df14cca6fd, + limb2: 0x92a2980f09955dfd700d2bf7, + limb3: 0x17c610cd15f291ec95b9e3a1 }, u384 { - limb0: 0xcce2a4cc79ea70fcb4a25ddd, - limb1: 0x78c33d21eb9a302ff6f379ab, - limb2: 0x161404d6e8402ddcf0836295, - limb3: 0xa25fed2549e7018cde6648e + limb0: 0xb9c6e2bcf764528075ea5e79, + limb1: 0x99454c5f08462a3e055ffc10, + limb2: 0xe0bdd49ccc428184b264defb, + limb3: 0x151c819ef498f26f7a018656 }, u384 { - limb0: 0xa27252072990d47a13dbb983, - limb1: 0x63ae1c3c357d21f6d881188b, - limb2: 0x5ffbc29f9773973eee79d132, - limb3: 0x928512ee9eea9fe200f55d7 + limb0: 0x69467681f8405911db6da19d, + limb1: 0x11b0c1a03ba116725d933144, + limb2: 0xad29bcacd55b805339ba1a72, + limb3: 0x6376bbd7f0810674a96ca3d }, u384 { - limb0: 0x1f088397941ecf9fbeb6e08c, - limb1: 0xd40ccbc85cfe2c8e8bc7d388, - limb2: 0x40cb111d335791b0f6f3aaab, - limb3: 0x19597d67a99b62f4d21bb68c + limb0: 0xd67afd5fe278c6684847463a, + limb1: 0xa6853dfbe25486d6c386ee13, + limb2: 0x1895f77cb2a98b904c7d1491, + limb3: 0x53503309bcbd4bb2577ef4d }, u384 { - limb0: 0x9f8da9330cfa5c3f2d288226, - limb1: 0x37fd03f0b892c9950567de6a, - limb2: 0x1657ec6b932dde5879021d55, - limb3: 0x909c42f238795acc6408311 + limb0: 0xdac6b8af2c58d4a01d7a824d, + limb1: 0xc01d87bfffbdc8188902ff03, + limb2: 0x4902605d0c2e7342697a7c6e, + limb3: 0xbc764e24b86364271474b83 }, u384 { - limb0: 0x6d0e01ac03652c6fee67d5d9, - limb1: 0xdffd0f0eb64bd86f901a1625, - limb2: 0x953221373d8821ecd3c8e8c0, - limb3: 0x5c765084616fc82237a69bf + limb0: 0x72e2714711e14db536a8cbf0, + limb1: 0x67e499792ce69eb21a60c67, + limb2: 0xf4e328a801d8479940d8584f, + limb3: 0x870ee056d0895711ec8b5f3 }, u384 { - limb0: 0x37ebf322aeadb1f6ce697e90, - limb1: 0x76f1a89eb32d3b65faa1d76e, - limb2: 0x26200d072aa4839046f21397, - limb3: 0x161cc557670ed4ba6a3ef421 + limb0: 0xb2c1fea5c736ac72ac1e54c6, + limb1: 0xc8932d6610b12893092ab114, + limb2: 0x2202fa618b76549dc8380840, + limb3: 0x7f13558878bc420377b0202 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] @@ -14105,32 +14132,32 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0x72f9af4bbf0b4fa540c06c04, - limb1: 0x6338ff4f664a31f1e495856a, - limb2: 0x175d166f62442f50b3ad6388, - limb3: 0x15a7b011ede0e2432e042d4c + limb0: 0xc63a0ec6131cb0e360ec1e9f, + limb1: 0x98eec44df807722eda9f5546, + limb2: 0xe9ee1e11cc7326ad8b87183a, + limb3: 0xa5e277c2ae79a8d81bc3db }, u384 { - limb0: 0xdb43534157775d94bb7b8390, - limb1: 0xd8af9267428f5d748cb6274c, - limb2: 0x3ee7f04defb3005236af5c62, - limb3: 0x122a7f2fa475f5be08190600 + limb0: 0x9846deb4579b6ee9d01897, + limb1: 0xac3fdbfa285d8b7a4df79eeb, + limb2: 0xe837488b5b8078aacd42b392, + limb3: 0x17294c38e937ba8f54571701 }, u384 { - limb0: 0x95759199f86fb8b49e00184d, - limb1: 0x538b6973f2dd6265cdf8687, - limb2: 0xb34935c49427e962d012bbbc, - limb3: 0x14e64302e04a5a2bb07abc5d + limb0: 0xda6090a0d6626ffa43fab9ec, + limb1: 0x4c03265da0871c131837d553, + limb2: 0xb12204a2f44b423a73a6aba, + limb3: 0x93a341ea53342b0273f3ce1 }, u384 { - limb0: 0x6b8c8a9057022d11f5020ef8, - limb1: 0x8c970be0c8d24f8ff04987d9, - limb2: 0x5a59d623c1d3b75832bc56a0, - limb3: 0x1072a039c657a7414ee42da8 + limb0: 0x979ad2631735e77af20a36b2, + limb1: 0xc8d6e3666af6f748c58918ec, + limb2: 0xcaf9025225d264f59811ec2, + limb3: 0x1022ae9ecfbd960cd091229a }, u384 { - limb0: 0x82c9f977cd36a1dfb92ecf12, - limb1: 0xb39869507b587b1269daafca, + limb0: 0x5adb019310c20238c0ffa8d3, + limb1: 0xb39869507b587b129edcfed6, limb2: 0x21a5d66bb23ba5c279c2895f, limb3: 0xd0088f51cbff34d258dd3db } @@ -14138,125 +14165,125 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0x432608694fac45d719592099, - limb1: 0xa44b424fe63f3dfb6f4ae2e6, - limb2: 0x956de2fa07bc19fc4bfae220, - limb3: 0x8b9b12147fa01fd06c3e6ad + limb0: 0xb7a77e29e20566fae45f3e3, + limb1: 0xfed0b18116589f91b189bf2e, + limb2: 0x57807003189ebeabe2636cd6, + limb3: 0x11cb76b408ade987a1d33962 }, u384 { - limb0: 0x421681d2b370c8bfbe76ba2, - limb1: 0x7b24131cc575364c88af65af, - limb2: 0xcec07fdf460c74cada0fa3e8, - limb3: 0x800a1bec54b12a61ec01016 + limb0: 0xf6b4af7cb75bb5080f8a9309, + limb1: 0x8df75bcea04de00b6659595a, + limb2: 0xa58a5926b1163ddf7c0403cb, + limb3: 0x12007ce67243e466ad984ab0 }, u384 { - limb0: 0xcd5b655838636ed3fe8d0afc, - limb1: 0x8c0e6f9c4bcd9cd69d4afb30, - limb2: 0x2aa2c5a5e965cd9a9598ad1b, - limb3: 0x794be0a13d8d0304187515c + limb0: 0x5291ce358486f9d626a4a083, + limb1: 0x2e070e6ac512f525cbcc86c6, + limb2: 0x8258162328a629e8cf634cd5, + limb3: 0x1752b6517c27170efe3100d1 }, u384 { - limb0: 0xcd92e0d0e404302142e6a30d, - limb1: 0x60a3d04c2768953e8a28ad93, - limb2: 0xadec7dff146286b76775ca44, - limb3: 0x66caa77ffefad7064bc650d + limb0: 0x8c819cc63d78213bcf169460, + limb1: 0x598d7d4619c1b0b97abdbd7c, + limb2: 0xdf73832e459e595969f0ebfc, + limb3: 0x4df0fa095fbf51b3dbbd49d }, u384 { - limb0: 0x35a20760bb967e38077bb964, - limb1: 0x7f86919c9b5ec12bf7ba010d, - limb2: 0xc9ed26989c476ffe889ace33, - limb3: 0xb1bf7e1f99455aadc74e78e + limb0: 0x536e684fb2a4d83ba04adb2b, + limb1: 0xd3d088159a634318d52039ff, + limb2: 0x49d5abffc90c9bbaf25e7513, + limb3: 0xd1cf120c9727b5dfd00170d }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] .span(), b_num: array![ u384 { - limb0: 0xb3e33a63fb5e5b9d97f65fd6, - limb1: 0x72750b18e868d4cdd5aea3df, - limb2: 0x166f602cb238feca94bb5be4, - limb3: 0x82a05298da4516cc53861d2 + limb0: 0xca1446cc9952113f37d7ba70, + limb1: 0xc5115b7652e9338368d2ccac, + limb2: 0xefd1abd7da593f9b096eaf80, + limb3: 0x116472b1e2bf47927996d56a }, u384 { - limb0: 0xe9c78da8b832bc4a594ae06d, - limb1: 0xb3081731dc927563be9dd3fa, - limb2: 0xe9917a51dc2b890f85c54cd3, - limb3: 0x1ec85b9560fe84eecbd8c06 + limb0: 0xbbcf156a25d738af572c7a6d, + limb1: 0x56636f5f95f668f6ee25535e, + limb2: 0x83fefc408a24f768ff3ed659, + limb3: 0x4bef83c40c26286cd80bcdf }, u384 { - limb0: 0xd63c5859d848738b70ef9813, - limb1: 0x4201cf4eaf3f50c581efc54c, - limb2: 0x1bc3ba599878e34da68e3391, - limb3: 0x79a1893dda634562e9f5942 + limb0: 0xf3aca6fbcdc2a08c104a1046, + limb1: 0x5fc09f6f328e09d131be4022, + limb2: 0x86f7d2b6d8f5f16d33505e16, + limb3: 0x477fd267886ea196f2c8a09 }, u384 { - limb0: 0x99526078767a97a8841a017b, - limb1: 0x52a9097085fbd3ac3d897990, - limb2: 0x6a0b9017f525c3fdad01bce1, - limb3: 0x4f042c10c686ba65b5ec727 + limb0: 0xb1a95a52f0a4705d31b5a68c, + limb1: 0x69e1250516ed6a89e81a3cf9, + limb2: 0xdf55b638aaabfb814c87ab5e, + limb3: 0x118a090ac8b1fc17c6893305 }, u384 { - limb0: 0xb4785fe24312a79c3a5593d6, - limb1: 0xebf099bd26eea09974f36f1c, - limb2: 0x5f839f50f41e1df98fa486f1, - limb3: 0x188faf935e4aabb1e8ea9c89 + limb0: 0xe3db44a7dd3e15efcdbd1b34, + limb1: 0x2087355425141e778cb4830e, + limb2: 0x5e6bb950795de7c4d3ae8922, + limb3: 0x88a70b1e78c3e36c38b6eb5 }, u384 { - limb0: 0x6e6f426a618793ed403212d2, - limb1: 0xae5ee0964d3004635d52086c, - limb2: 0xf0782eaa5e67acf50c6f3118, - limb3: 0xf9c4a7813aad1f2eacfd27b + limb0: 0xf50204fbef75fcc1087fd430, + limb1: 0xf4bacb0d3ab83d66f579ec47, + limb2: 0x79b43eaf6a7c1dfd687d0cbd, + limb3: 0xbbaaae9a7205002c29b823d } ] .span(), b_den: array![ u384 { - limb0: 0x5b4421a584b2175c6564d7b9, - limb1: 0x29fc369ea24c01c99e7f8b9a, - limb2: 0x126bdf10ba791c6c3c6675c3, - limb3: 0x8e5b29ae6682159cff3f300 + limb0: 0xcb41df8b048359beb9187a36, + limb1: 0x2ce120c26c0091fe88cefcba, + limb2: 0xd76a665d998c63a5a2838ddd, + limb3: 0x132bb6fbafb7d8e9f115961c }, u384 { - limb0: 0x5f31a074f2dd322fef9e03dd, - limb1: 0x855f79d21f23e30e041196bd, - limb2: 0xf7b652a5b3ba87a674b97ce2, - limb3: 0x6017510dbac63fe2fe498a4 + limb0: 0x782abdf36970d4203e2af6ce, + limb1: 0x697bc9f893d593e55c0d656e, + limb2: 0xf920aebfb6a60740905e9af, + limb3: 0x13ffcfc5560fc4662029db56 }, u384 { - limb0: 0x84199561278ebb4ffa348145, - limb1: 0xc908ebd038857d36567fecc4, - limb2: 0x673f69c0411feae562dda1ae, - limb3: 0x451e63e15e35a26bb019dba + limb0: 0x364b38d6e41ee7589a93820b, + limb1: 0x8289c1c83038f22ad32e1b1d, + limb2: 0x3f7d52067532c51462fdfb16, + limb3: 0xf47a387441ca86d17710c23 }, u384 { - limb0: 0xc81d8bad25be065c24f40222, - limb1: 0xbfa9b0df8d309cd179419936, - limb2: 0x9d42e1ef4cee954f64cf872, - limb3: 0x86b49170e38d1244e99d32e + limb0: 0x8c2ceafbda01db5eeaa09ab8, + limb1: 0xfdd5d3f886ae6c537dd4b521, + limb2: 0x9202cfe4caa0d88c96a20a08, + limb3: 0xb46a34c271dd75a4da6e423 }, u384 { - limb0: 0x780185a0a593056c19d6fbdc, - limb1: 0xaadcb44d458e4eb42a3f69e6, - limb2: 0x6fddc092ee3b9dbb1570b737, - limb3: 0x6e5d72389c9c1cfa5c5ee5 + limb0: 0xe1c650bc0df115f690b6aa5f, + limb1: 0xed7d6e31c7900267d82415a, + limb2: 0x4649af770c5a15c15e73b29c, + limb3: 0x12721d95250e04aa0b615779 }, u384 { - limb0: 0xcd5b655838636ed3fe8d0b00, - limb1: 0x8c0e6f9c4bcd9cd69d4afb30, - limb2: 0x2aa2c5a5e965cd9a9598ad1b, - limb3: 0x794be0a13d8d0304187515c + limb0: 0x5291ce358486f9d626a4a087, + limb1: 0x2e070e6ac512f525cbcc86c6, + limb2: 0x8258162328a629e8cf634cd5, + limb3: 0x1752b6517c27170efe3100d1 }, u384 { - limb0: 0xcd92e0d0e404302142e6a30d, - limb1: 0x60a3d04c2768953e8a28ad93, - limb2: 0xadec7dff146286b76775ca44, - limb3: 0x66caa77ffefad7064bc650d + limb0: 0x8c819cc63d78213bcf169460, + limb1: 0x598d7d4619c1b0b97abdbd7c, + limb2: 0xdf73832e459e595969f0ebfc, + limb3: 0x4df0fa095fbf51b3dbbd49d }, u384 { - limb0: 0x35a20760bb967e38077bb964, - limb1: 0x7f86919c9b5ec12bf7ba010d, - limb2: 0xc9ed26989c476ffe889ace33, - limb3: 0xb1bf7e1f99455aadc74e78e + limb0: 0x536e684fb2a4d83ba04adb2b, + limb1: 0xd3d088159a634318d52039ff, + limb2: 0x49d5abffc90c9bbaf25e7513, + limb3: 0xd1cf120c9727b5dfd00170d }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] @@ -14265,10 +14292,10 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0xb9851e77e47d7f311d2a4e7a, - limb1: 0xd6d634ee1102656f809b8afa, - limb2: 0xc3fd96529ce5f72c65c8f1a0, - limb3: 0x9a03893b289ba6b8690dcb1 + limb0: 0x5db0104c314ed14fd0141584, + limb1: 0x1ab222b2aa5a85642fdf0e4c, + limb2: 0x6e300e86044c08e1268e5e6a, + limb3: 0x166c1177c9be418f291fc84 }, u384 { limb0: 0x302ea91a3b09524e7c49fbbb, @@ -14280,66 +14307,66 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0x15810320a09dd5f19bdc1f8e, - limb1: 0xbd868033ee0b486cf364d50f, - limb2: 0x40e968027de74af32b7c6535, - limb3: 0x146fa115b0cfd6d770f77de4 + limb0: 0x61cc669ff826f78c435a57a0, + limb1: 0x5e5c9592d9b6369e04d546fd, + limb2: 0x6612bb77b55518c6d5c717e5, + limb3: 0xaff6bcdf3324ed2785c2ff3 }, u384 { - limb0: 0x87b58d64b64027f63606cdd9, - limb1: 0x2995dce5a02d1a4535a8929e, - limb2: 0xd21f0ec22f96332f33d55a5b, - limb3: 0x117292a96950cc9345ee4feb + limb0: 0xdfddc193bfc33a336aee0d91, + limb1: 0x56041b91ac5de401f4ee102e, + limb2: 0x88fc3bed3bb3d981e8ae668e, + limb3: 0x11b270c464b12f849bac598c }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] .span(), b_num: array![ u384 { - limb0: 0x90eaa2264c3a576f3c72c9b0, - limb1: 0xac36db8634f43ac8b3ca0ebc, - limb2: 0x7e2d02be4d064cd7dbb4d3fc, - limb3: 0x11d988c0d4fb5f9ce2b02be6 + limb0: 0x5f155908fc87dc5fd6b12a18, + limb1: 0x4589a537c7b9d1562de77711, + limb2: 0x94233cdfbd751fe1c7f9c469, + limb3: 0x437ddfb783c70bec9fe8f67 }, u384 { - limb0: 0x407eb8450694fd894da30dce, - limb1: 0x36e0a89736fe478007ae9383, - limb2: 0xd7e15cbe39b6e973144090bb, - limb3: 0x2622154f67f2ed03a5a844e + limb0: 0x885d2309c79ac64dedf1562a, + limb1: 0xc7494f83e0acb4082f48dd34, + limb2: 0xd2b8f5f44217731414167861, + limb3: 0x2b5751cbb1c89ff97ecb1d3 }, u384 { - limb0: 0x83447519e7e4c4b3c70bf6e, - limb1: 0x812c47f0e7aa9fe6d361c476, - limb2: 0xd80494134db6819ed89c1169, - limb3: 0x8be6beeaa4d4f72cbf56760 + limb0: 0x8002213fac8732f7a06b47b, + limb1: 0x2aa026c6d9944752f540d811, + limb2: 0x3b469667fb088bb7cc29b49, + limb3: 0x163787e18aa597bd935ecd32 } ] .span(), b_den: array![ u384 { - limb0: 0x42080c83547a57c66f717e37, - limb1: 0xc08788ecd41a3f47718f5440, - limb2: 0x39c29983ca37493dd3625c98, - limb3: 0x3bb4e9816bfa78ee28b006e + limb0: 0xd5dd9a80269cde310d69b3d5, + limb1: 0x124183aa7027e453f4a91bf6, + limb2: 0x54ff410770dd179663974cd6, + limb3: 0x11fc9d4d934954af96551817 }, u384 { - limb0: 0xbc2e359365029fd8d81be20e, - limb1: 0xd7f5ce5493527ccc994a4a7c, - limb2: 0xc1e4e159f56a35b2e84b43ed, - limb3: 0x11c826d1324365188181f042 + limb0: 0x1ccf064f8b0ee8cdabb8e0ee, + limb1: 0x89aec904c415a3bf966040be, + limb2: 0x9d59960625e0cefdbbaf74ba, + limb3: 0x12c79f3d1fc4f0ddd87a16c5 }, u384 { limb0: 0x4, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x15810320a09dd5f19bdc1f8e, - limb1: 0xbd868033ee0b486cf364d50f, - limb2: 0x40e968027de74af32b7c6535, - limb3: 0x146fa115b0cfd6d770f77de4 + limb0: 0x61cc669ff826f78c435a57a0, + limb1: 0x5e5c9592d9b6369e04d546fd, + limb2: 0x6612bb77b55518c6d5c717e5, + limb3: 0xaff6bcdf3324ed2785c2ff3 }, u384 { - limb0: 0x87b58d64b64027f63606cdd9, - limb1: 0x2995dce5a02d1a4535a8929e, - limb2: 0xd21f0ec22f96332f33d55a5b, - limb3: 0x117292a96950cc9345ee4feb + limb0: 0xdfddc193bfc33a336aee0d91, + limb1: 0x56041b91ac5de401f4ee102e, + limb2: 0x88fc3bed3bb3d981e8ae668e, + limb3: 0x11b270c464b12f849bac598c }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] @@ -14348,17 +14375,17 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0x6a0db3518e21b72aba1b57f1, - limb1: 0x26206a881b7d3b7fe3dfb59d, - limb2: 0xe5d5017ed8e865ab5212fef1, - limb3: 0x1ad546ba1c6b653d3d716b5 + limb0: 0xe05966be0ba55ebc1e77920f, + limb1: 0xf2d2147055b525791a28afa3, + limb2: 0x9b0a5e8e1b8fcc676c1314b2, + limb3: 0xb7d206ff503560d20f279ca }, g_rhs_sqrt: array![ u384 { - limb0: 0x6446e322ced02881d516c0e8, - limb1: 0x7bc2cd0181dbe83fec40354, - limb2: 0xd3569cd10942014be2f67993, - limb3: 0x38bf9b0ee3a471c7f07bfd2 + limb0: 0x6d469fe1c0213e961d9346f5, + limb1: 0xe4b2409c2744874d1c0276d2, + limb2: 0x7469c030af10d163dc423f08, + limb3: 0x78a95e88fa9fee87d3dc6a2 } ], }; @@ -14368,16 +14395,16 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0x9265b80710e8126964d22ebb, - limb1: 0x467cd44ab326b9d173fbed20, - limb2: 0xaccf0ccd070d33e9b8b62394, - limb3: 0xf73652e3f79e844ad0532f5 + limb0: 0x7406fee5d57362d0bd20a5fe, + limb1: 0x9c148946ef3f3c63933238ab, + limb2: 0x29449d34c8a2d4f2985f3c36, + limb3: 0xa598551ba8198a566f2d4be }, y: u384 { - limb0: 0xf7c6a821b79d4809ab2e9de4, - limb1: 0x13eb7ab975faf3ed7ce0fe10, - limb2: 0x361056fef4c57cfb1a221f76, - limb3: 0x9572b4e3c9b823170170d7d + limb0: 0x79e483b729f05957e7c73f33, + limb1: 0x3a0046ded0b81194df4ad0d5, + limb2: 0x6bb49380867caf051586303a, + limb3: 0xc750343cc7a561d93f3d0c0 } } ); @@ -14389,91 +14416,91 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0x6be95a4c9eaa7da914d2c30, - limb1: 0x35771fe01b0cb1a201e52248, - limb2: 0x8494d42730d469f92b94bcb6, - limb3: 0xb6d04ac4ceb125c78b9b795 + limb0: 0xe4f817e54aede0613c17035c, + limb1: 0xdff1f15010392a6da1f95a6, + limb2: 0xbed78d3d341e911d49f15454, + limb3: 0x18154782ce0913b21588066d }, y: u384 { - limb0: 0x6126108903532823250ed818, - limb1: 0x282d399fe5adc1101b6d5042, - limb2: 0x23b7902a532b83bcef6a6e0f, - limb3: 0x88c7dbbed8344d4b597ba08 + limb0: 0x3d77d61326ef5a9a5a681757, + limb1: 0xd3070afd4f0e121de7fcee60, + limb2: 0xdf9ef4088763fe611fb85858, + limb3: 0x11a612bdd0bc09562856a70 } }, G1Point { x: u384 { - limb0: 0x38e2944e0fb5d786806aedf3, - limb1: 0xaf33f9f6604df51dcb26fc82, - limb2: 0x33075ad7d9c4b172bc6e3ff7, - limb3: 0x11bbe9db4c4d9eb496ee6e70 + limb0: 0xde4f62a6588c9401ffefbd3, + limb1: 0x9bb5f797ac6d3395b71420b5, + limb2: 0xdc39e973aaf31de52219df08, + limb3: 0x105dcc4dce3960447d21d3c1 }, y: u384 { - limb0: 0xa94432e3857ab4265b6dcf44, - limb1: 0x6d31c8f3b04cdbc80cccddfe, - limb2: 0xe312ecad9a9e81d832983a97, - limb3: 0x11df4de01cdcf0455fe02f84 + limb0: 0xaefd0d854043fd325dd3c34f, + limb1: 0x9b63c98d9a7845c52e1e2b0f, + limb2: 0x9db0be660d847ccc58358f3f, + limb3: 0x17cb6c41f0c4e1a7394ab62a } }, G1Point { x: u384 { - limb0: 0x559cb31f38cf6b6bb43981b1, - limb1: 0x47e4d530a8069559516c8421, - limb2: 0x23c93cef1732469b3fd6a1e4, - limb3: 0x169c5fa4215e4335cff9c2d8 + limb0: 0xcf86158ab69213388e721bb7, + limb1: 0x5f7812269d790797cad9aa15, + limb2: 0xb1c3622a0177001d9ed8e25f, + limb3: 0x115cf429f459884785c6ba46 }, y: u384 { - limb0: 0xbf77776953bdd154c0d28ddb, - limb1: 0xbb268822f58f121df53e5a4f, - limb2: 0x6d659ef88bb9c9e8a68b68a, - limb3: 0xb2ed378591b798de4673f05 + limb0: 0x1e81341e2f3f988ff115dda3, + limb1: 0xad22946489db6ee4954fa5e1, + limb2: 0x83bed94412e19d92b73cc763, + limb3: 0x2074c7bceff87d0d41edba1 } }, G1Point { x: u384 { - limb0: 0x2ff93eaf1ea3393d917c8b9a, - limb1: 0x5a6eb73fb57bb5546ecd43ff, - limb2: 0x92cc931886223bc6d3476700, - limb3: 0xa433c7ac4eacf2b7b2bc50a + limb0: 0xe2955c55da59eba4b7b57d3d, + limb1: 0x1e6629b0431bce67cf28c22, + limb2: 0x1c35b7efd5b67f87221b8bfc, + limb3: 0x3e53df9e3488a9e42acd87e }, y: u384 { - limb0: 0xcd88ecfe2cbd2f42081e935f, - limb1: 0xdb51cb9fdec1fc5aee0503eb, - limb2: 0x1613978c61c6d886650e5a75, - limb3: 0x6ca4747a2e7e1887eadf41d + limb0: 0x2e089afa726154d40dd12102, + limb1: 0x5391613ecf49db2bcf1cad86, + limb2: 0x84a2abb2de6b3a6e09026a50, + limb3: 0x19557a3a3c1d62a205d5dc87 } }, G1Point { x: u384 { - limb0: 0x751a0a2e9d75ebc9be7abcf7, - limb1: 0xd489ecf4ea239ab83ac165cc, - limb2: 0x929576ad8c75458ba5a7b8ff, - limb3: 0xac4194fb8eb381a439f4e6b + limb0: 0x490bf40774926e8b279947c, + limb1: 0xeabab6aef9e9d2a4f64f4e7d, + limb2: 0x3e309fe1b1c8247abab20d7e, + limb3: 0x79c527862917f69ac58fcc4 }, y: u384 { - limb0: 0x34ea39e75d9d01d11567a6c9, - limb1: 0x80a96c17ca9d2b19587fabed, - limb2: 0xf3145feeaa7c1eac684b0295, - limb3: 0x144010e9fde603eedb6b3285 + limb0: 0xacb18f2da2b425c2ff50dafd, + limb1: 0x7623850d87e279a8a30f31ff, + limb2: 0x777564c7291d95fa80203ade, + limb3: 0x1764ce0e7fb626109b63789b } }, ] .span(); let scalars = array![ u256 { - low: 0x15f8e2e29447eb0892122793d9d9f4fa, high: 0x21ee8dcd68aa6994de914c458f444b0d + low: 0xeb2083e6ce164dba0ff18e0242af9fc3, high: 0xbf0551e03983ca8ea7e9d498c778ea6 }, u256 { - low: 0x6fb6b43c4829a9a73a260f1c087e8b1c, high: 0x4fbafc1d50faa548b59b0418a9cac3f0 + low: 0xb5d32b1666194cb1d71037d1b83e90ec, high: 0x5008b5f2ab0c1681c8f8e3d0d3290a4c }, u256 { - low: 0xc29a242aa530fd94a0e47059acb601fa, high: 0x1f2f86f975a88c8a3f9e63a63727b26a + low: 0xd3fbf47a7e5b1e7f9ca5499d004ae545, high: 0x5d79c4bd3e70f16a55485822de1b372a }, u256 { - low: 0xe0233304afe6468853da0232e9ec00d7, high: 0x2748d4d533d1b72d8c292c844d583695 + low: 0x101fbcccded733e8b421eaeb534097ca, high: 0x1c60cb179148624feac1c14f30e9c5cc }, u256 { - low: 0xb8e2d65f76ed61616fe4d7331c1e17c8, high: 0x63e961c29cb17806a9048c0491a32fde + low: 0x247a8333f7b0b7d2cda8056c3d15eef7, high: 0xbacf6e172ae22448b0163c1cd9d2b7d }, ] .span(); @@ -14481,334 +14508,336 @@ mod msm_tests { array![ ( array![ - 0x1, - -0x1, -0x1, 0x1, -0x1, 0x1, -0x1, 0x0, - 0x1, 0x0, - 0x1, - 0x1, - -0x1, -0x1, -0x1, -0x1, 0x1, + 0x0, + 0x0, + -0x1, -0x1, 0x1, - 0x0, 0x1, 0x1, + -0x1, + 0x1, + -0x1, + 0x1, 0x1, + -0x1, 0x0, 0x1, 0x0, + 0x0, -0x1, + 0x0, -0x1, - 0x1, -0x1, 0x1, + 0x0, 0x1, 0x1, -0x1, - -0x1, - 0x0, - 0x0, 0x1, 0x0, -0x1, -0x1, + -0x1, + -0x1, + -0x1, + -0x1, 0x0, - 0x1, 0x0, 0x0, 0x0, - 0x1, 0x0, - -0x1, + 0x1, -0x1, 0x1, 0x0, - 0x1, -0x1, 0x0, 0x0, 0x1, - 0x1, - -0x1, - -0x1, + 0x0, 0x0, 0x1, 0x1, + -0x1, + -0x1, 0x1, 0x1, 0x0, - 0x0, -0x1, 0x0, - 0x1, - 0x1, -0x1, 0x0, 0x0, + 0x1, + -0x1, + -0x1, + -0x1, 0x0, 0x0, 0x1, - 0x1, + 0x0, -0x1, -0x1, ] .span(), array![ - -0x1, - 0x1, 0x1, + -0x1, + 0x0, + -0x1, + -0x1, + -0x1, 0x1, 0x0, + -0x1, 0x0, 0x0, 0x1, + -0x1, 0x0, + 0x1, -0x1, 0x0, -0x1, + -0x1, + 0x0, 0x0, 0x1, -0x1, 0x0, - -0x1, - -0x1, 0x1, + -0x1, 0x1, 0x0, - 0x1, -0x1, -0x1, 0x1, -0x1, + -0x1, 0x1, 0x0, 0x1, - 0x1, - 0x1, 0x0, 0x1, 0x1, 0x1, - 0x1, - 0x1, - 0x1, - 0x1, 0x0, 0x0, - 0x1, -0x1, 0x0, 0x0, - 0x0, - 0x0, - 0x0, -0x1, - 0x1, 0x0, - -0x1, 0x1, + 0x0, -0x1, -0x1, - 0x1, - -0x1, - 0x1, + 0x0, 0x0, 0x1, - -0x1, 0x1, + 0x0, + 0x0, + 0x0, 0x1, 0x1, 0x1, + 0x0, + 0x0, + -0x1, -0x1, 0x0, 0x1, - -0x1, 0x1, 0x1, - 0x0, 0x1, + 0x1, + -0x1, + -0x1, -0x1, 0x0, 0x1, - 0x1, - 0x1, 0x0, - -0x1, + 0x0, + 0x1, ] .span() ), ( array![ - 0x0, -0x1, -0x1, - 0x1, 0x0, + -0x1, + 0x1, 0x0, 0x0, 0x1, - 0x0, - -0x1, + 0x1, 0x1, 0x1, 0x0, 0x1, - -0x1, 0x0, + 0x1, + 0x0, + 0x1, -0x1, + 0x1, -0x1, 0x0, - 0x0, -0x1, + 0x1, + 0x1, + 0x1, 0x0, - -0x1, + 0x1, -0x1, -0x1, 0x0, - 0x0, 0x1, - 0x0, - 0x0, + 0x1, 0x1, -0x1, -0x1, - 0x1, + 0x0, + 0x0, 0x1, 0x1, -0x1, - 0x1, -0x1, -0x1, - 0x0, 0x1, 0x0, - 0x0, - 0x1, -0x1, - 0x0, - 0x0, -0x1, 0x1, 0x0, - 0x1, + -0x1, 0x1, 0x1, -0x1, - -0x1, - 0x1, 0x1, 0x0, -0x1, 0x0, - 0x0, + 0x1, + -0x1, 0x0, -0x1, + 0x0, -0x1, 0x0, 0x1, - 0x1, - 0x0, -0x1, - 0x0, -0x1, 0x0, -0x1, + 0x1, + 0x1, + 0x1, 0x0, - -0x1, 0x0, 0x0, + 0x1, + -0x1, 0x0, + 0x1, 0x0, 0x1, + -0x1, + -0x1, ] .span(), array![ - 0x0, - 0x0, - 0x1, + -0x1, -0x1, 0x0, 0x1, 0x0, + 0x1, 0x0, + 0x1, + -0x1, -0x1, -0x1, 0x1, - 0x0, - 0x0, + 0x1, -0x1, 0x0, - 0x0, -0x1, - 0x1, -0x1, 0x0, + 0x0, -0x1, - -0x1, + 0x0, -0x1, 0x1, - -0x1, 0x0, -0x1, - -0x1, 0x1, - -0x1, 0x0, - -0x1, - -0x1, + 0x0, + 0x1, 0x1, -0x1, - 0x0, + 0x1, + 0x1, 0x1, 0x0, 0x1, - -0x1, + 0x1, 0x0, - -0x1, - -0x1, - -0x1, - -0x1, 0x0, 0x0, - 0x1, - -0x1, - -0x1, 0x0, + -0x1, + 0x1, + 0x1, 0x0, 0x0, 0x0, - -0x1, 0x1, 0x0, 0x0, + -0x1, 0x1, -0x1, -0x1, -0x1, 0x0, 0x0, - -0x1, - 0x0, 0x0, 0x1, - -0x1, 0x1, 0x0, + 0x0, + 0x1, + -0x1, + -0x1, -0x1, 0x0, 0x1, 0x1, + 0x1, + -0x1, + -0x1, + 0x0, + 0x1, 0x0, + -0x1, 0x1, -0x1, 0x0, @@ -14819,291 +14848,277 @@ mod msm_tests { ), ( array![ + 0x1, + -0x1, -0x1, - 0x0, -0x1, -0x1, 0x0, 0x0, + -0x1, 0x0, 0x1, 0x1, - -0x1, + 0x1, -0x1, 0x1, 0x1, - -0x1, + 0x1, 0x0, + 0x1, -0x1, 0x1, -0x1, -0x1, - 0x1, - 0x0, 0x0, -0x1, 0x1, 0x0, -0x1, - -0x1, - 0x0, - -0x1, + 0x1, + 0x1, + 0x1, -0x1, 0x0, -0x1, -0x1, 0x1, - 0x1, 0x0, 0x1, - 0x1, + -0x1, + -0x1, 0x0, + -0x1, 0x0, - 0x1, 0x0, 0x0, -0x1, + 0x1, -0x1, 0x1, 0x0, 0x1, + 0x0, + 0x0, 0x1, + 0x0, 0x1, - -0x1, - -0x1, - -0x1, - -0x1, - 0x1, - 0x1, - 0x1, - -0x1, 0x0, 0x0, 0x0, + 0x1, + 0x1, 0x0, -0x1, + -0x1, + 0x0, 0x0, 0x0, 0x1, -0x1, - -0x1, - 0x1, - 0x1, 0x0, 0x0, + -0x1, 0x1, 0x1, 0x1, 0x1, + -0x1, 0x1, - 0x1, - 0x1, - 0x1, + 0x0, + -0x1, + 0x0, -0x1, -0x1, ] .span(), array![ - 0x1, - -0x1, -0x1, + 0x0, 0x1, + -0x1, 0x1, + -0x1, 0x1, 0x0, + 0x1, + -0x1, 0x0, 0x1, 0x1, 0x1, 0x1, -0x1, - 0x0, - -0x1, - -0x1, 0x1, - -0x1, - 0x0, - 0x0, - -0x1, + 0x1, 0x0, -0x1, - -0x1, 0x0, - 0x0, - 0x1, - 0x1, 0x1, -0x1, 0x1, + 0x1, 0x0, 0x0, -0x1, - 0x0, - 0x0, 0x1, 0x0, 0x1, -0x1, + 0x0, + 0x1, -0x1, -0x1, -0x1, - -0x1, - -0x1, + 0x0, 0x1, - -0x1, - -0x1, 0x0, 0x1, + 0x1, -0x1, - 0x0, + 0x1, -0x1, + 0x1, + 0x1, + 0x0, 0x0, 0x0, 0x1, - -0x1, 0x0, 0x1, 0x0, + 0x1, -0x1, + 0x1, 0x0, 0x0, -0x1, - 0x0, - 0x0, 0x1, - 0x0, -0x1, -0x1, 0x0, + 0x1, 0x0, 0x1, + 0x1, -0x1, - 0x0, 0x1, + 0x0, -0x1, 0x1, + 0x1, + 0x1, 0x0, -0x1, + 0x1, + -0x1, + 0x0, + 0x1, ] .span() ), ( array![ + 0x1, 0x0, -0x1, - 0x0, -0x1, - 0x0, - 0x1, -0x1, - 0x1, -0x1, 0x1, - 0x0, -0x1, - 0x0, -0x1, - 0x1, - 0x1, - 0x1, - 0x1, + -0x1, + -0x1, 0x1, 0x0, -0x1, 0x0, + 0x1, -0x1, + 0x0, 0x1, 0x0, 0x0, + 0x1, + -0x1, + 0x1, 0x0, + 0x1, -0x1, -0x1, -0x1, - 0x0, - 0x0, - 0x1, - 0x1, - 0x1, - 0x0, -0x1, 0x0, + 0x1, -0x1, 0x0, - 0x0, - 0x0, -0x1, - 0x1, -0x1, -0x1, - 0x0, - 0x0, - 0x1, -0x1, - 0x1, - 0x0, -0x1, 0x1, - 0x1, -0x1, 0x0, 0x1, 0x1, - 0x1, -0x1, 0x0, 0x0, - 0x0, - 0x1, - 0x0, - 0x0, -0x1, - 0x0, - 0x1, - 0x0, - 0x1, 0x1, -0x1, + 0x1, -0x1, -0x1, 0x1, - 0x0, - 0x0, - 0x0, -0x1, -0x1, - ] - .span(), - array![ 0x0, -0x1, + -0x1, 0x0, -0x1, 0x1, 0x0, 0x1, + 0x0, 0x1, -0x1, + 0x1, -0x1, -0x1, 0x0, - 0x1, -0x1, 0x0, - -0x1, 0x1, 0x1, + 0x1, + 0x0, -0x1, 0x1, + ] + .span(), + array![ + 0x1, + 0x0, 0x1, -0x1, - -0x1, + 0x1, 0x0, -0x1, -0x1, + -0x1, + -0x1, + -0x1, 0x0, 0x1, + -0x1, + 0x0, 0x1, - 0x1, + -0x1, + 0x0, -0x1, 0x0, 0x1, @@ -15112,134 +15127,144 @@ mod msm_tests { -0x1, -0x1, 0x0, - 0x0, - 0x0, -0x1, 0x1, -0x1, 0x0, + 0x0, + 0x1, -0x1, -0x1, + 0x1, 0x0, - -0x1, 0x1, - -0x1, + 0x1, + 0x1, + 0x1, 0x0, 0x1, + 0x1, + 0x0, + 0x1, + 0x1, 0x0, -0x1, -0x1, - -0x1, - 0x0, 0x0, -0x1, + -0x1, + 0x0, 0x1, 0x1, + 0x0, + 0x0, -0x1, - 0x1, -0x1, + 0x0, + 0x1, 0x1, 0x0, 0x0, + -0x1, + 0x1, 0x0, -0x1, 0x0, -0x1, 0x0, -0x1, - 0x1, + 0x0, + 0x0, 0x0, 0x1, + 0x0, -0x1, -0x1, - 0x0, -0x1, ] .span() ), ( array![ - 0x0, - 0x1, - -0x1, - 0x1, 0x1, 0x1, - 0x0, - -0x1, -0x1, -0x1, 0x0, + 0x0, + 0x1, + 0x0, -0x1, -0x1, - -0x1, - -0x1, + 0x1, 0x1, 0x0, + 0x1, + 0x1, -0x1, + 0x1, 0x0, -0x1, -0x1, -0x1, + 0x1, -0x1, - -0x1, - 0x0, - 0x0, 0x1, -0x1, 0x1, 0x0, 0x0, -0x1, - -0x1, - -0x1, 0x0, - 0x1, + 0x0, + 0x0, 0x1, -0x1, + 0x0, + 0x0, -0x1, 0x1, 0x0, - 0x0, 0x1, 0x1, + 0x1, + -0x1, 0x0, 0x1, + 0x1, + -0x1, + -0x1, -0x1, -0x1, -0x1, - 0x0, - 0x1, -0x1, 0x0, - 0x1, 0x0, -0x1, 0x1, + -0x1, 0x1, -0x1, 0x0, + -0x1, + 0x0, 0x1, 0x1, 0x1, - 0x1, - 0x0, - 0x0, - 0x1, + -0x1, -0x1, 0x0, -0x1, 0x0, - 0x1, - 0x1, 0x0, + -0x1, + 0x1, 0x0, + -0x1, 0x1, 0x0, 0x0, 0x0, - 0x1, - -0x1, -0x1, ] .span(), @@ -15247,51 +15272,49 @@ mod msm_tests { -0x1, 0x1, 0x1, - 0x0, - 0x1, 0x1, + 0x0, -0x1, 0x1, - 0x1, - 0x1, + 0x0, -0x1, - 0x1, - 0x1, - 0x1, -0x1, 0x1, + 0x0, 0x1, + 0x0, 0x1, 0x1, + 0x0, -0x1, + 0x0, -0x1, + 0x0, 0x1, + -0x1, + -0x1, + 0x0, + -0x1, 0x1, 0x1, - 0x1, - 0x0, -0x1, 0x0, 0x0, -0x1, - 0x1, + -0x1, 0x0, 0x1, + 0x0, -0x1, - 0x1, 0x0, 0x1, -0x1, -0x1, - -0x1, - -0x1, 0x1, - -0x1, 0x1, - 0x0, - 0x0, -0x1, - 0x0, + -0x1, + -0x1, 0x1, -0x1, 0x0, @@ -15300,29 +15323,29 @@ mod msm_tests { -0x1, 0x1, 0x0, - 0x1, - 0x0, 0x0, 0x1, 0x1, - -0x1, 0x0, + 0x1, -0x1, 0x0, - -0x1, - -0x1, 0x1, - -0x1, + 0x0, + 0x1, -0x1, 0x0, + 0x1, 0x0, 0x0, 0x0, + -0x1, + 0x0, + -0x1, 0x1, - 0x1, + -0x1, 0x1, 0x0, - -0x1, 0x0, 0x1, ] @@ -15334,81 +15357,81 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0xacdcf6f8c26618f0057f872d, - limb1: 0xf80b925351f635347a00324, - limb2: 0xc8772f7fa336705d785fd50f, - limb3: 0x14bf56348a9c10fcbaf2f6b6 + limb0: 0xc86f831afb96d0f69bf100cb, + limb1: 0xbc24f376583a22992a2957d6, + limb2: 0x7d39d4ec45e6427b3028b0d6, + limb3: 0xe1b331fc7d465cfce0222da }, y: u384 { - limb0: 0xec29b557c125a5a5b21664ff, - limb1: 0x5e867b2d077eaa8fa3ecd6d, - limb2: 0xabe48342658b7460f08bb3fe, - limb3: 0x14766bfee463653b9ffe197b + limb0: 0x79cb1f6c9951611a6bd227a2, + limb1: 0x5a177e0f7f0b8a073ce6b78d, + limb2: 0x7d69ab1117b3dfcbf2a7c198, + limb3: 0x102da748b7c13d1f92810f37 } }, Q_high: G1Point { x: u384 { - limb0: 0xb6532935df10a963edb57ea3, - limb1: 0xd4f2e8177c6b1a616d1a032c, - limb2: 0x5de6c87880128b6dc7e43bb5, - limb3: 0x3b38c65f77852fe8aae64c0 + limb0: 0xd84d879363b351653c86d9f2, + limb1: 0x9cd85bedee65aa379ef4962d, + limb2: 0x392b65eb4e51c515b084b618, + limb3: 0x5d0900334bd65c1a990ad5d }, y: u384 { - limb0: 0xf425a39fd4f6088b55623c5f, - limb1: 0xeb43123ad64792cb6d72ad00, - limb2: 0x3ce61bb9102669b46f25acb6, - limb3: 0xaa864ff0b41a632f9e49233 + limb0: 0x60256c472ff12f1d0b945b1c, + limb1: 0x2ced0b42d7e7d53a85b445ed, + limb2: 0x5c2a727d89bb445880916c95, + limb3: 0x88bec426340fa8fd0e3ff11 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0xb0b913d57fc2cb3a5b391332, - limb1: 0xe1ecc34145b707696915e1f, - limb2: 0xb5355f9210a6174d9fc3d2cb, - limb3: 0x167528e0e94706503cf8d29c + limb0: 0xca99907aab2fafeee900661a, + limb1: 0x79f7664d32d62d5d69edfa84, + limb2: 0x56037136f80ed2bbfc5a4991, + limb3: 0x15b870474d49887d3ddcc246 }, y: u384 { - limb0: 0x1ef6e5bc02cefda1ff0feaa7, - limb1: 0x5471849b6a1884ae4767bb90, - limb2: 0xbfe9185c96b5fef0a1c468ee, - limb3: 0x143e7dc3b2b7cf439b9f1ea5 + limb0: 0x7d38e8bad7c6d3d8c7a88329, + limb1: 0xc290b167b8fd4798d2a09ed0, + limb2: 0xd8e07b256a73de2bf50aa48f, + limb3: 0xe6b0fd3246aab1c3db3756e } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0x47973c4f590c2fb4ae48ef7a, - limb1: 0xf312d8142f5aa51c89001b30, - limb2: 0x1577082faad1a85ffbbb816e, - limb3: 0x2b236744cbb72151dc8e4e + limb0: 0xf2cce8d2fda9e7a4cee61abf, + limb1: 0xb35b31351183022381f5de87, + limb2: 0x765b278a66920b6d84f233c9, + limb3: 0x17af53d726092eb5468c53f }, u384 { - limb0: 0x38c0fdbb0dba692635bc0ed3, - limb1: 0x1c85f40821223761d9382fdd, - limb2: 0x44d55e64040d2f841bc0b2b0, - limb3: 0x48b62d55efec3692e91a8a1 + limb0: 0x1c268d32156321d4e09717c7, + limb1: 0x95db890dcf6d20ad2e87419b, + limb2: 0x97db31233e91bc1b5c6c41c9, + limb3: 0xc5ee01cd7edb8a95fc07a5f }, u384 { - limb0: 0xa63871fa00f5f7cf2ad1e65, - limb1: 0x47a3d40774db802903f2293d, - limb2: 0x1d0317d8f6313dc51cc7d52e, - limb3: 0xab58b8ce0119396e84830f + limb0: 0x86b5f1434571bfbc38463dba, + limb1: 0xf7896ec060c8d79f5789602b, + limb2: 0x8d518c02fb7d74078eef45b7, + limb3: 0x14ceb02fbd94478129eae77e }, u384 { - limb0: 0x9aca17b4c5a9726895caa3ff, - limb1: 0x9123ab26ca0a5ba104335854, - limb2: 0x3526ed1867d17753bc7441de, - limb3: 0x734093c16e5618a560db03 + limb0: 0xe6ecf7112ef5c5593b11cbd4, + limb1: 0xe146221eb10e1fd02e3e63e6, + limb2: 0x1de60d4ac2e697602d0c8a6a, + limb3: 0x35594036bdb26eebe920de1 }, u384 { - limb0: 0x9081533a3e31f828d141bda6, - limb1: 0x758c17bacd56a7f7fa55954e, - limb2: 0x4ba78fe697bdfd3c089eb57c, - limb3: 0xa91aead7f6cc7f83ea9304a + limb0: 0x68e5d86d4e9ee04ec3d25107, + limb1: 0x78b24fc2f682b23da861a703, + limb2: 0x289752820629ab4dc2f23572, + limb3: 0x545f0baf4679d2ba66c252f }, u384 { - limb0: 0x7a325e19a4bbfe9859a7ae6, - limb1: 0x6730d2a0f6b0f622da8baaec, + limb0: 0x81d530760929e6bacb7889f7, + limb1: 0x6730d2a0f6b0f622ba49ec65, limb2: 0x434bacd764774b84f38512bf, limb3: 0x1a0111ea397fe69a4b1ba7b6 } @@ -15416,143 +15439,143 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0x91fc59dcef12db337aaf67e4, - limb1: 0x28ba0ec8a143eaa4b3832b5f, - limb2: 0xc3ee606bba8adcc229207b9, - limb3: 0x1499e75017bbc0c1563125b1 + limb0: 0x4af90611cf00af63442bb878, + limb1: 0x3e751644f069e49fb359a4f2, + limb2: 0xacaa2d8259633303b4b9acd6, + limb3: 0x163482f15295b0ae260c055e }, u384 { - limb0: 0x331884efa6bcc1286f7b435e, - limb1: 0xd5457c0e25fc7a4afb2884ec, - limb2: 0x767683418882d48975f25fbf, - limb3: 0xdafeb27cd8255348b683345 + limb0: 0xa3457315ed95eb502ae4a568, + limb1: 0xb78f06d2981aef13d2457d1, + limb2: 0x1a07a56a939a0ae1347437a4, + limb3: 0x1168be8da15b1af254e8704b }, u384 { - limb0: 0xf0763bab1dd789f50e110cd0, - limb1: 0xba72c2f06a657a0f97dcb5a5, - limb2: 0x6ba079856afe89de36244e2, - limb3: 0x198e2bf47d6e9a568d1497ea + limb0: 0xcc815a12fa485d8eb7e005f, + limb1: 0x6e499ea3461d5af534022c87, + limb2: 0x594ee30bb515f261c14ad312, + limb3: 0x150636f6c893611bc56c44a4 }, u384 { - limb0: 0x561a6397f03d406fbfeb1ebf, - limb1: 0xa786c1da7b611a1955796d6a, - limb2: 0x8991d92d4bb5ff36bb0b0427, - limb3: 0x4c6b3dc9de005eb4a362267 + limb0: 0x42f8070e74d24670b527cf8c, + limb1: 0x1b089eb95d99c6130386ce29, + limb2: 0x698fb9fea1b143821c4c1bd8, + limb3: 0x9da4687c09d12cc696aff2e }, u384 { - limb0: 0x53e829c5716a0a45db2989cc, - limb1: 0x320f509889b5952224b4d1bc, - limb2: 0xd8ed905faa4e3ea4f623fe30, - limb3: 0xe4a7358ae19406faea540e1 + limb0: 0x21fede942c22f2afc8e0d589, + limb1: 0x46ca394939daf137e7ad9313, + limb2: 0x44d85928be2a012cc532cc2c, + limb3: 0x2bf9d5cd7e52f54c836743f }, u384 { - limb0: 0xde21e316570cd73be4963f1a, - limb1: 0x31b9fe22e2a3e9176b08b01e, - limb2: 0x43f00e29ba43da5cb4ebb75c, - limb3: 0xa784d7e22f68ddfd30eabce + limb0: 0x53573db333b95fa20f567d42, + limb1: 0xead014f03984589781376d12, + limb2: 0xe8b9adc4e3ef9876b639eaef, + limb3: 0x14977c1c47b52e5356f61245 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] .span(), b_num: array![ u384 { - limb0: 0xc92c334085d6dcd36ae97872, - limb1: 0x63dc01b03dbd0ac58b55f25a, - limb2: 0xe4a1cdaa18688978db404b0d, - limb3: 0xabaa3399b09a7daa452c24c + limb0: 0x6287dfcdad496b339355632b, + limb1: 0xa7890a5e7ea5f6b5ffdbd34c, + limb2: 0xa156256ebd5a0ec599423483, + limb3: 0x184ca14dd75b02fc2d2b628b }, u384 { - limb0: 0x5d6fc8b2bb48c40dfaec5cf2, - limb1: 0xb57378de8f73cf523441ad7e, - limb2: 0xaffbe530d6619639b69f7820, - limb3: 0xff82af1d37d229b1767d90a + limb0: 0x791544d8a707bae2e4d722fc, + limb1: 0x14f63772793cb0d2c71adf55, + limb2: 0x224de4ec2bef40253d685d1f, + limb3: 0x45f23e68389c2a6a61f72b2 }, u384 { - limb0: 0xb8e5ec8506f4bcb62aeee5fd, - limb1: 0xb3124afbba38fd357f78f3d4, - limb2: 0x61db48611a95eca140734a81, - limb3: 0x1131db27da32dd7647e6fa15 + limb0: 0x6bafcbe421a595cc0feac6ed, + limb1: 0x4c12c86e98b6bf49aad48310, + limb2: 0x89e96ba1ab1cb6998636fc1b, + limb3: 0x3990c5edbda83aea454945c }, u384 { - limb0: 0xacdd97e4298d5e6caae388b8, - limb1: 0x19ee4cb1d1a195cf62bc367c, - limb2: 0x8d1d18ccd3c7dac6874ddc4d, - limb3: 0xb955135244c89ec497e3f2 + limb0: 0x54d37a1cf56446ba02f5af36, + limb1: 0x6accb9753a5dd5a98bcded2, + limb2: 0xaf1b8719e470252a4de96ec6, + limb3: 0x134174eb1cfc30bff82f5ee5 }, u384 { - limb0: 0xefe0245990da21deb7befd6c, - limb1: 0x403569b82267451110ba85d3, - limb2: 0x282f70b25349e045c60bc1f4, - limb3: 0xc2f9835936037c20337a068 + limb0: 0x2ce659cc288e58a567ac71d1, + limb1: 0x57fbd726adc0705b2ec3f6cd, + limb2: 0xe32eed0cdce94299d3e779a0, + limb3: 0x8a6a208967a48247d2ef675 }, u384 { - limb0: 0x6d4595f6c6cd8399e90ea3ad, - limb1: 0xf506ead707c294e4b00d3aef, - limb2: 0x61a6f318dcf14553f255697e, - limb3: 0x185227882b5987f0a4c03dc0 + limb0: 0xbd2c06b9c2ee622a37749f50, + limb1: 0xa5a5cb1cc7ba15161c0cb6d6, + limb2: 0xec52fc797c22cefbf88433ab, + limb3: 0x17374a714a3e46398dc2b86 }, u384 { - limb0: 0x9e2772af89fb3b01cceb3a07, - limb1: 0xbf89786e173c4ddada45d979, - limb2: 0xa3726ab058db65b0872f98d6, - limb3: 0xabd0e9349f2af5f04df1317 + limb0: 0xe5c38c8c99c30fa9c1a216a9, + limb1: 0x50ef00f1c0c1249ae77dee24, + limb2: 0x5e992c4c8ed0808772bcf8f1, + limb3: 0x14810773a2268b16c21cf14d } ] .span(), b_den: array![ u384 { - limb0: 0x33f567748e4e6ccdeabe9f8f, - limb1: 0x6d55c33fa0fcc8267208ad82, - limb2: 0x67189194c13cd4a1afb8e6a6, - limb3: 0x4646781b26f4f3677719fa1 + limb0: 0x17e818480e05bd8d10afe1df, + limb1: 0xc441e130dd94b012716293cd, + limb2: 0xe8c5af833826e97ff8577b1a, + limb3: 0xaced6069dd70ee9b6dd1e57 }, u384 { - limb0: 0x69ba13bf26f504a1bdedb822, - limb1: 0x86b44af6aa8ffce3af4a13b3, - limb2: 0x5342b357591cbb1bf0bf5980, - limb3: 0x2bd88cac309879d97697da9 + limb0: 0x2a6dcc584259ad40ab93404a, + limb1: 0x5f821c72b8a4cf7cb7395f49, + limb2: 0xe1873bfb8579947aeac6b911, + limb3: 0x11a0d662126c9e94bd6a71bf }, u384 { - limb0: 0xaddceead496127d43845333f, - limb1: 0xb43893dec58305d2036ed69b, - limb2: 0x510517db2d59bfe8b2f9db4c, - limb3: 0x18357a13493ab58b52ff6885 + limb0: 0x1f24568590951763adf9017b, + limb1: 0x839402aa346289687404b220, + limb2: 0x9b5885a8a6f1e6f82a9c140b, + limb3: 0x615a61c75cdd0a0345e1b6e }, u384 { - limb0: 0x3911e83cf608dcf27a5c3835, - limb1: 0x5fa4439198175ce5eabce10a, - limb2: 0xef3a9de486095f221b390598, - limb3: 0xdb3a4d855bbf1d433ee0798 + limb0: 0xf431224c2e4bc92618cba152, + limb1: 0xdc35ebe8796f10a3841cdd99, + limb2: 0xcc51bbce1739aa023edff6b7, + limb3: 0x99b793be20a2eab3580b2ab }, u384 { - limb0: 0x20112c05f866ea3fdc221538, - limb1: 0xcf21192e5f70e28b50a3cbe0, - limb2: 0x53956b1168cd381367783301, - limb3: 0x12d794b612e789beafc5e760 + limb0: 0x79eced66e422b60f4e6850e1, + limb1: 0xbf7102f11a3c7dacbd2ea41f, + limb2: 0xea1d5d3627cac40f55ba5595, + limb3: 0x2662216c76ff1ab2aa69991 }, u384 { - limb0: 0x655c805060ce6e4a06ab3e2, - limb1: 0xb2f9163a0793322506a77624, - limb2: 0x8fe2e69076d0bb06d006fcd4, - limb3: 0xf6d3e18964904a14317f7b6 + limb0: 0x46290c6ed08d046128d8f566, + limb1: 0xe3f77a81481bdae6dcdbe0d4, + limb2: 0x32529399176e71adbfa34693, + limb3: 0x1960f1a93ae8669a3ff19699 }, u384 { - limb0: 0x561a6397f03d406fbfeb1ec3, - limb1: 0xa786c1da7b611a1955796d6a, - limb2: 0x8991d92d4bb5ff36bb0b0427, - limb3: 0x4c6b3dc9de005eb4a362267 + limb0: 0x42f8070e74d24670b527cf90, + limb1: 0x1b089eb95d99c6130386ce29, + limb2: 0x698fb9fea1b143821c4c1bd8, + limb3: 0x9da4687c09d12cc696aff2e }, u384 { - limb0: 0x53e829c5716a0a45db2989cc, - limb1: 0x320f509889b5952224b4d1bc, - limb2: 0xd8ed905faa4e3ea4f623fe30, - limb3: 0xe4a7358ae19406faea540e1 + limb0: 0x21fede942c22f2afc8e0d589, + limb1: 0x46ca394939daf137e7ad9313, + limb2: 0x44d85928be2a012cc532cc2c, + limb3: 0x2bf9d5cd7e52f54c836743f }, u384 { - limb0: 0xde21e316570cd73be4963f1a, - limb1: 0x31b9fe22e2a3e9176b08b01e, - limb2: 0x43f00e29ba43da5cb4ebb75c, - limb3: 0xa784d7e22f68ddfd30eabce + limb0: 0x53573db333b95fa20f567d42, + limb1: 0xead014f03984589781376d12, + limb2: 0xe8b9adc4e3ef9876b639eaef, + limb3: 0x14977c1c47b52e5356f61245 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] @@ -15561,182 +15584,179 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0x807c438ca0a9f70504d085a1, - limb1: 0x4fdf34fff26f7d61711c83c4, - limb2: 0xe5a35d9402d3fbac91d5cd6c, - limb3: 0x168614a842e4c88ab2a1a4b3 + limb0: 0xef33ffc48415df29d9eb7e1c, + limb1: 0xbfd7bd416d6acdaba4632c79, + limb2: 0x7d23bb6f5aa1fedda64d8e2, + limb3: 0x15e23acffc31fa34b907abf3 }, u384 { - limb0: 0x29c860e9ed43744fbdada1c5, - limb1: 0x7785c0380124ebd2b5cfb9d9, - limb2: 0x5aacef79798f63f7cb736706, - limb3: 0x839c67b0479cb691d77ec6b + limb0: 0xde08c6d5d5ddea42e6978405, + limb1: 0x762b05b25cb924d7af2c550f, + limb2: 0x629865afe967823be86042f9, + limb3: 0x148e608fc645f0e40bd6ae85 }, u384 { - limb0: 0xb53c866605aee75bfc583258, - limb1: 0x9a5705e5b3cd4201b1ef1b9c, - limb2: 0x36b48915740fe7aef55965ca, - limb3: 0x9f7c38da7b9849217bd2b7b + limb0: 0xe2ba70c5e194e1721cc7fa42, + limb1: 0x94b0e387ebf4113ff1fc0a12, + limb2: 0xac74cbed1f8e9ae5c15db39e, + limb3: 0xa71f523143ece7c651ec7bc }, u384 { - limb0: 0x1b2480b41c42cd1d1832ae8f, - limb1: 0x98955cf8b279e255d6fa3482, - limb2: 0xedd42b6661554c4680aefa4d, - limb3: 0x1bd3b8ba7892bf95891b054 + limb0: 0x428a7df41178071249b2bc32, + limb1: 0xe12b4bd89a735f78b0944827, + limb2: 0x8455324025e3e9517608d1db, + limb3: 0x123857778202e15fe749fbf7 }, u384 { - limb0: 0x2b31f09c793a1000d83d11e5, - limb1: 0xf6426105a2d75aff70368ff5, - limb2: 0x10d53ff68ac2b293e7ffc5bd, - limb3: 0x68fbd3a17414e6638f99b99 + limb0: 0xac8cba17d3ebe1eab833a516, + limb1: 0x588e4c99f7a2434170515cc, + limb2: 0x977ea1f01c99bccb6ef3626d, + limb3: 0xaf157c90a2927b65a7e854 }, u384 { - limb0: 0xe9e1b8beeec7bacfe31412dd, - limb1: 0xb39869507b587b1234ef3418, - limb2: 0x21a5d66bb23ba5c279c2895f, - limb3: 0xd0088f51cbff34d258dd3db + limb0: 0x9d28911098e669d867f6e9af, limb1: 0x5d30b05e, limb2: 0x0, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0x28032b79b68969cdd051d55a, - limb1: 0xa79a1217080aaf85f4cca817, - limb2: 0xec031f321e0aedd4118fcdeb, - limb3: 0x1a942b808bb789e2f1c7158 + limb0: 0xc79293bc87127697853e67eb, + limb1: 0x70fc0043ea38c867f1f4a2f5, + limb2: 0x18f747980165a8f5969fbdae, + limb3: 0x1068b901b19ad34f183e3000 }, u384 { - limb0: 0x9e3821910624a886786d009f, - limb1: 0x71de6a23faa7a2254e740910, - limb2: 0x42475ebd7efc626bb622435e, - limb3: 0x164578b7e97f7624fda8e5be + limb0: 0x74e6fdaec86a56db05190649, + limb1: 0x610a02adc04c11e125c2a562, + limb2: 0x1d20e9dd708e42bddbd1207d, + limb3: 0x34f40ba872b28d2e5deff72 }, u384 { - limb0: 0x2ea1ddb6ecca48526e6ef605, - limb1: 0x5f35891406be50b642ad2f60, - limb2: 0x32fd1403e2096e7b1ead6f8d, - limb3: 0x1026cb4e55abbdf79bd09da6 + limb0: 0x4d6247b379c2ec22b5ffeba4, + limb1: 0xc9942f338608dcfe571eabb6, + limb2: 0x267550cfa510a7c6bbf8eeb, + limb3: 0xeb68c3c8c9558b8550aad8c }, u384 { - limb0: 0x7e718c8d1156cb20f0653cd6, - limb1: 0x7f4aec56795c5c60bfda29fb, - limb2: 0x6ff951241cbe8e59bd48146d, - limb3: 0xe4da1d0d3894a8d82226452 + limb0: 0xb0328a6f2482b65fa5ef43df, + limb1: 0xa4f89f14dcf33d3e0aa457ca, + limb2: 0x2ba229ee8d55c4233a99f71d, + limb3: 0xcec77284abc89b4217add5f }, u384 { - limb0: 0xf242140629af42e65fd65b04, - limb1: 0xf7e91857f5701dfd59bfcc2c, - limb2: 0x2e30ba3488301326df906046, - limb3: 0xd59f4d231e46ff735c4b1e8 + limb0: 0xc7a871a35fdeecaae8c13439, + limb1: 0x3012e95cf1fdd0c1ae5b26c2, + limb2: 0x2cc59f12e91b284da4fb248c, + limb3: 0xd48966530984b1033cf2a13 }, u384 { - limb0: 0x2357b0d9806346c7fc609cf9, - limb1: 0x516fc8fa4a73be526e2b018, - limb2: 0x6b34c85978f073c771e23df6, - limb3: 0x18305627c9a6543b837960e + limb0: 0x9225393b119ddf336ec0f970, + limb1: 0xa2ebd9d7aca7dad4edc02ebc, + limb2: 0xe97c6fee770cca574258d2ee, + limb3: 0x2e10d4ea14c47c7304be00c }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] .span(), b_num: array![ u384 { - limb0: 0x5cabca8ae61b286c6afa4da4, - limb1: 0x7efc3ed481b0b995659df28b, - limb2: 0x93df298c0644c1fd560a6546, - limb3: 0x13ad1ea3766658fb1aa8da74 + limb0: 0x8036bf217eb585cca74453f4, + limb1: 0xe8d0335c013a7f18fd67c50f, + limb2: 0x56841024d12ad5fcf6cd0378, + limb3: 0x128a25dddec0bd80e3b43f5b }, u384 { - limb0: 0x2d2df743c0210cc60166ab28, - limb1: 0xe665eaa303152661172d9c, - limb2: 0xb8a34560a92396921953caad, - limb3: 0x1184b4b6e34e5d6b803ec3c3 + limb0: 0x2919ea3e211ba79016ec1a18, + limb1: 0x9c144bf5cc8a07dba92f5f17, + limb2: 0xc86ceab1198fd3412104d596, + limb3: 0xbd85f1fa3af2a5f1047213e }, u384 { - limb0: 0x2de1ecfe77a541d8e4495df4, - limb1: 0x92e61f6b5981e37c5f84afd9, - limb2: 0x97d4e5a9b8c26e6373ed27b0, - limb3: 0x762a85db0feac7aa6390a1a + limb0: 0xee02d833f7075b372c911376, + limb1: 0xdc580eec4fce292a768d2940, + limb2: 0xa21ce9d279a8661d3c9e3f5, + limb3: 0x192a44c3dafc147b08104566 }, u384 { - limb0: 0x21abcb4dc7919f6cdde2c37f, - limb1: 0x975b7c027e9ba0be242e3868, - limb2: 0x1dafa7e356e11f79a0af1d09, - limb3: 0x12430d9fc66e8f08031471f8 + limb0: 0xdcba0d776930d11d17c088ff, + limb1: 0x61a2ef543bab2246f87844f2, + limb2: 0x84aa44791de5a8d4f130bcc, + limb3: 0x19380ce183ab226db2317040 }, u384 { - limb0: 0x5011a010a347e0f7f7bf18fb, - limb1: 0xd94aefbcbb5b31aee9c8bea6, - limb2: 0xab905c9d456728c60505cd1f, - limb3: 0x2dce6fb581923962d31d525 + limb0: 0x305c81001f00a5924ae9205a, + limb1: 0xcfd45a3011660ffae571d214, + limb2: 0x56377a9404f7432e39790f28, + limb3: 0x1840c384dfbc9923076953b7 }, u384 { - limb0: 0x1ceef66c76f676493076d1d7, - limb1: 0x8f11373f2532a8951d8caa73, - limb2: 0x68aaae431a79c47eb12132af, - limb3: 0xea1bda36f34e3c78959f5a5 + limb0: 0xf4dab8b7dec620714842aabe, + limb1: 0x1eb2942bf36a3715388d8b95, + limb2: 0x5cda0bc563c6957496c5dce4, + limb3: 0x9e34edff3c9cbe2fcbe64eb }, u384 { - limb0: 0x3c702268d49cd0ec4f91cf9d, - limb1: 0xa92943c0cd9f9742eec30df7, - limb2: 0x1fc1236b420574416945b5f0, - limb3: 0x81fe417091eef92220a0621 + limb0: 0x6585afc61902f0512287668c, + limb1: 0xe4f7dba98f1f1ba0e01f9907, + limb2: 0x208b4b9a55d6a44d680eed16, + limb3: 0x33cde87eb9b39623116010b } ] .span(), b_den: array![ u384 { - limb0: 0xa00cade6da25a73741475568, - limb1: 0x9e68485c202abe17d332a05c, - limb2: 0xb00c7cc8782bb750463f37ae, - limb3: 0x6a50ae022ede278bc71c563 + limb0: 0xbba24ef2a84bda5e14fa4a56, + limb1: 0xf58e5bcdbb8135578a7a8bd9, + limb2: 0xdd45c4b13ca80ccc7374d13a, + limb3: 0xda0c032536b8007cac17093 }, u384 { - limb0: 0x64e48644ea95a219e1b5027b, - limb1: 0x91e730ad068ba628ddcc2446, - limb2: 0x3f3a746fce8ba71ffdf9d53b, - limb3: 0xb12ad20f97e24c515509fd6 + limb0: 0xd39bf6bb21a95b6c14641924, + limb1: 0x84280ab701304784970a9589, + limb2: 0x7483a775c2390af76f4481f5, + limb3: 0xd3d02ea1caca34b977bfdc8 }, u384 { - limb0: 0x57df76dc3f2b2149b9bc82be, - limb1: 0xae747f0e2d975690cd5cbd83, - limb2: 0x455cf660bf3722e293ab98b6, - limb3: 0xc990964e3af2aa9d90b272c + limb0: 0xd2e11ece730db08ad800593a, + limb1: 0x57ef178c2ac187b11f22aedb, + limb2: 0x8305fa85205592e7c7f41630, + limb3: 0x6d80d1dbf5595acbdf366c3 }, u384 { - limb0: 0xbf215dae87e6965191e7735c, - limb1: 0xd6641e2f001a34c0b6dd5007, - limb2: 0x25510a13c81690311fa5fa22, - limb3: 0x6dda626e3e0d59fa16eb336 + limb0: 0x25b4bd79a51f50161cfc2211, + limb1: 0x367cd75570a3d117df2e0223, + limb2: 0x40e895a36dce227899fd74a6, + limb3: 0x101871ce698d2ceb07f25610 }, u384 { - limb0: 0x49871aa38e3b41ff7c71759, - limb1: 0x83212641e3062dd2781b39c7, - limb2: 0x7472ede0d6ce17fd4d599efb, - limb3: 0x17ab282c3e1168cd3e845df2 + limb0: 0x30e0c43cd3e80986a81e81d7, + limb1: 0x52f402df9ae1689fa1d74070, + limb2: 0x49a00c7a4c0c4cea88b38d2f, + limb3: 0x46f767ad68c87df1ee45852 }, u384 { - limb0: 0xbc00a11cee5763725ff169e9, - limb1: 0x73917b52995b404ade37efc0, - limb2: 0xdfd03569c5cb3d98e6366765, - limb3: 0x1632e0d8481553067caef5df + limb0: 0xe4a32ca0063b68f0710426b9, + limb1: 0xee12c3f141f7522def7366a9, + limb2: 0x650d67ef720ce854819dc7e6, + limb3: 0x39af8cd846913acb1e8609 }, u384 { - limb0: 0x7e718c8d1156cb20f0653cda, - limb1: 0x7f4aec56795c5c60bfda29fb, - limb2: 0x6ff951241cbe8e59bd48146d, - limb3: 0xe4da1d0d3894a8d82226452 + limb0: 0xb0328a6f2482b65fa5ef43e3, + limb1: 0xa4f89f14dcf33d3e0aa457ca, + limb2: 0x2ba229ee8d55c4233a99f71d, + limb3: 0xcec77284abc89b4217add5f }, u384 { - limb0: 0xf242140629af42e65fd65b04, - limb1: 0xf7e91857f5701dfd59bfcc2c, - limb2: 0x2e30ba3488301326df906046, - limb3: 0xd59f4d231e46ff735c4b1e8 + limb0: 0xc7a871a35fdeecaae8c13439, + limb1: 0x3012e95cf1fdd0c1ae5b26c2, + limb2: 0x2cc59f12e91b284da4fb248c, + limb3: 0xd48966530984b1033cf2a13 }, u384 { - limb0: 0x2357b0d9806346c7fc609cf9, - limb1: 0x516fc8fa4a73be526e2b018, - limb2: 0x6b34c85978f073c771e23df6, - limb3: 0x18305627c9a6543b837960e + limb0: 0x9225393b119ddf336ec0f970, + limb1: 0xa2ebd9d7aca7dad4edc02ebc, + limb2: 0xe97c6fee770cca574258d2ee, + limb3: 0x2e10d4ea14c47c7304be00c }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] @@ -15745,10 +15765,10 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0xccc145fb6d7281c216cfc4a6, - limb1: 0x480ae0248edff2095d39240c, - limb2: 0xfc7c8730f6102560ff90ad6d, - limb3: 0x15b1e342db213fa33ccde977 + limb0: 0x5627e6d9720d63f359037212, + limb1: 0xbe133837e287ee934f77532a, + limb2: 0x87c54bc75ee85cf394444af2, + limb3: 0xb1a1f350d00fbfb1385610f }, u384 { limb0: 0x302ea91a3b09524e7c49fbbb, @@ -15760,66 +15780,66 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0x62d0e6e35331a6182595fde3, - limb1: 0xed3a3d49c3efe2d103ad6d16, - limb2: 0x301da7591324b11c7e056b48, - limb3: 0xf1590f4dd8f26ca447a7390 + limb0: 0x9e6bdf3e7f4438a5424e95b1, + limb1: 0x47fcd162839cac4942e4f346, + limb2: 0xd130dc1fa190e8759563970, + limb3: 0x63ade607477ef5ebe47801f }, u384 { - limb0: 0xfb9bc2f4152a8b61b710c381, - limb1: 0xeb4ff0f65c9b617039ac9eb0, - limb2: 0x737b31a43835f44e7f6216fd, - limb3: 0x19d96e8d924073e5ce90180f + limb0: 0xbfc0e7f1651afeabda78154a, + limb1: 0xb791e306cc2614b334756f4a, + limb2: 0xf768828c828dff383a2b25d4, + limb3: 0x18792389f0f8def5aec9dfc8 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] .span(), b_num: array![ u384 { - limb0: 0xb66b582e0d4a89a9d681df49, - limb1: 0xc7f87ebb608769fdd10f0b8e, - limb2: 0xc32282e066022bef683c56d, - limb3: 0x183c870a883915a77307ea5d + limb0: 0x87b83590f198099128b8fe15, + limb1: 0xd7d25019a624189639997c0d, + limb2: 0x75a1a5ab5508582ecedd7efe, + limb3: 0x1542fba1d70af8826a61c6e0 }, u384 { - limb0: 0x4999105736bd30761b42afbc, - limb1: 0x7c039df6232ed093cc16b796, - limb2: 0xe20955ff78a8cb176f70904e, - limb3: 0xa22534745b472983db1c682 + limb0: 0xd2c0ed6482f7b10d685ebb6c, + limb1: 0x7bcbe4cba07f43aa71e4253d, + limb2: 0x2efff6ac8d7cc44c7cbb5d76, + limb3: 0xcc6604ca1ecc12ac22a6f34 }, u384 { - limb0: 0x48500f2f2fc4eeca59cff0fb, - limb1: 0x45b6f5fcc1600c2bd9081625, - limb2: 0x8e9c22e8c570f456d5fd4e59, - limb3: 0x8600f5032681db3bd0a25f6 + limb0: 0x3be6dd513efdafda41d4f03a, + limb1: 0xaaac60e5d1f61d7de8b3fa9d, + limb2: 0x990fc8b96ed0afe2e2901e20, + limb3: 0x61eeca32351f25f1097f } ] .span(), b_den: array![ u384 { - limb0: 0x289b9b8dd8c898609658a236, - limb1: 0xe6874fe5225d9efbd15db45c, - limb2: 0x39df43b583a42d68110b87a4, - limb3: 0x8541fff033ccdf47bb27ed4 + limb0: 0x79af7cf9fd10e295093a56c4, + limb1: 0x1ff3458a0e72b1250b93cd1a, + limb2: 0x344c3707e8643a1d6558e5c1, + limb3: 0x18eb7981d1dfbd7af91e007c }, u384 { - limb0: 0xda730bd126ad2d86dc440e03, - limb1: 0x77ad4bf68e5aa3548aae7ac7, - limb2: 0x409c00ab371eeab22f923b9, - limb3: 0x196284779c821bc858ed691b + limb0: 0xeb079fc6666efaaf69e15527, + limb1: 0xa8b514384c85706075d1bd2e, + limb2: 0x13bf03abdcd21a520e1d5f14, + limb3: 0x13e158691763c807d9d48801 }, u384 { limb0: 0x4, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x62d0e6e35331a6182595fde3, - limb1: 0xed3a3d49c3efe2d103ad6d16, - limb2: 0x301da7591324b11c7e056b48, - limb3: 0xf1590f4dd8f26ca447a7390 + limb0: 0x9e6bdf3e7f4438a5424e95b1, + limb1: 0x47fcd162839cac4942e4f346, + limb2: 0xd130dc1fa190e8759563970, + limb3: 0x63ade607477ef5ebe47801f }, u384 { - limb0: 0xfb9bc2f4152a8b61b710c381, - limb1: 0xeb4ff0f65c9b617039ac9eb0, - limb2: 0x737b31a43835f44e7f6216fd, - limb3: 0x19d96e8d924073e5ce90180f + limb0: 0xbfc0e7f1651afeabda78154a, + limb1: 0xb791e306cc2614b334756f4a, + limb2: 0xf768828c828dff383a2b25d4, + limb3: 0x18792389f0f8def5aec9dfc8 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] @@ -15828,35 +15848,23 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0x7acefd26ed59773559ce025a, - limb1: 0x8ae06c14c3645a2fc8de4eb9, - limb2: 0x38379e72e28343aff576e5b2, - limb3: 0x590849f3d8ca1339547b998 + limb0: 0xf47c12559fe441a7b0859710, + limb1: 0xc795b340cbc937efd3c37a61, + limb2: 0xac129f704b62b2ad1cbbf705, + limb3: 0x95962bfd1c7b52ba0d27366 }, g_rhs_sqrt: array![ u384 { - limb0: 0xee4125b3a182e43bff8b37c, - limb1: 0x3c9d677273035afa09c25037, - limb2: 0x38b421f4e8132dee59ba45e2, - limb3: 0x39511bc3dda92e99a855c13 + limb0: 0x67460befe6b79bfc417edc9e, + limb1: 0xb3262977e6d4a8dd7844caba, + limb2: 0x436899b8dc922b8c87ab3a03, + limb3: 0x2ed51d46213b2bf3d16d72a }, u384 { - limb0: 0xe7e6d01d0706f95ed980b927, - limb1: 0x52474bcb1296bd9b2c2b6f00, - limb2: 0x36e50e093908508f6a9d1972, - limb3: 0x1469fd52f26c75c53ac1bdb - }, - u384 { - limb0: 0x8a93c8d489b9e82cc8694dbf, - limb1: 0x563ae3fb5db12a13752f9eb2, - limb2: 0x212680bdc90200f49f320bed, - limb3: 0x3720a7d6b295bffa49d13ff - }, - u384 { - limb0: 0x70868f44caf3252179015bc5, - limb1: 0xf5d00b4e4d9d3b0185d75cde, - limb2: 0xfb9a15feab936107993f6e9a, - limb3: 0x70fbc7fe62abc53ed46646e + limb0: 0xdaf2020ba5d21adc7568dad3, + limb1: 0x84f3231e6b445ebefcadabd1, + limb2: 0x9341be991641fd8cca5e095b, + limb3: 0xcc783e884f55c81b18691b5 } ], }; @@ -15866,16 +15874,16 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0x2e35edac9bb803daf91dad6f, - limb1: 0x210f32988aeff273744e8fb7, - limb2: 0x288da649bfeec950b451e9d0, - limb3: 0x23b3bd3bfa6b97fff48a478 + limb0: 0xcc7fa91aa583c5cbe68d2579, + limb1: 0x19bc63316f4d5cc5250c5df1, + limb2: 0xc2ea076d80a769a548ade37b, + limb3: 0x116ca6da59818cdf177ef1e9 }, y: u384 { - limb0: 0x1a23eadcf99dff13e4f03fcf, - limb1: 0x3b92c4aa7292f0f84ed79dd7, - limb2: 0xdc70f95d35fccb327210aa13, - limb3: 0x116453978d565e5e58bb8033 + limb0: 0x7d56a13a7bde948fccf1959c, + limb1: 0xe5962eb015cf33a4b05b3cb1, + limb2: 0xe529b2f06898a13d036e5fb0, + limb3: 0x103115bdfc5cb3d3ad9f7e20 } } ); @@ -15887,108 +15895,108 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0x773b2a245b6a065456fc32b0, - limb1: 0x897fa9e077a6875f72a03308, - limb2: 0x6ed2a759b25337f80799af12, - limb3: 0x16e3691d46ff680f4a5d3d43 + limb0: 0xe4f817e54aede0613c17035c, + limb1: 0xdff1f15010392a6da1f95a6, + limb2: 0xbed78d3d341e911d49f15454, + limb3: 0x18154782ce0913b21588066d }, y: u384 { - limb0: 0x3643c2ccb78e7cd957f8ff9, - limb1: 0xb624cf18952bc4d0584f2ce1, - limb2: 0x5fc57db46b2a4971016c0def, - limb3: 0x10a830698f3f49076ca44648 + limb0: 0x3d77d61326ef5a9a5a681757, + limb1: 0xd3070afd4f0e121de7fcee60, + limb2: 0xdf9ef4088763fe611fb85858, + limb3: 0x11a612bdd0bc09562856a70 } }, G1Point { x: u384 { - limb0: 0x82a692584e9af88f5d878df3, - limb1: 0x5debf3f3d65d551886f9a860, - limb2: 0xe3fe0d1d92c1cbb678741a2b, - limb3: 0xe120f1cab655c57ac49b63c + limb0: 0xde4f62a6588c9401ffefbd3, + limb1: 0x9bb5f797ac6d3395b71420b5, + limb2: 0xdc39e973aaf31de52219df08, + limb3: 0x105dcc4dce3960447d21d3c1 }, y: u384 { - limb0: 0x54f79c8c1c8d565075df8a72, - limb1: 0x415135ff67feb75e5e18411f, - limb2: 0xaecf268f1d2aa62b2530c456, - limb3: 0x14e7b0a8bd8acffd8947936d + limb0: 0xaefd0d854043fd325dd3c34f, + limb1: 0x9b63c98d9a7845c52e1e2b0f, + limb2: 0x9db0be660d847ccc58358f3f, + limb3: 0x17cb6c41f0c4e1a7394ab62a } }, G1Point { x: u384 { - limb0: 0x4b5ced6888d492b24c240cbf, - limb1: 0xfde7b1b96877321ecb226edd, - limb2: 0xf620f232736aa7b8e7664cda, - limb3: 0xa74ed7ca318fe0b6da2e2fd + limb0: 0xcf86158ab69213388e721bb7, + limb1: 0x5f7812269d790797cad9aa15, + limb2: 0xb1c3622a0177001d9ed8e25f, + limb3: 0x115cf429f459884785c6ba46 }, y: u384 { - limb0: 0xedc22f36c1e1fda8b0ccc5c1, - limb1: 0x38803b2c8ed6d34e65a3b433, - limb2: 0x5f22899e69d7aa490b93f78f, - limb3: 0x22e954621d2d165d5e7c679 + limb0: 0x1e81341e2f3f988ff115dda3, + limb1: 0xad22946489db6ee4954fa5e1, + limb2: 0x83bed94412e19d92b73cc763, + limb3: 0x2074c7bceff87d0d41edba1 } }, G1Point { x: u384 { - limb0: 0x1c09247f64bd52e03c9626c9, - limb1: 0x55bac2422adf5935e8402df8, - limb2: 0x48fc029bc6be742638774f65, - limb3: 0xab6318e0a35ac0196430f55 + limb0: 0xe2955c55da59eba4b7b57d3d, + limb1: 0x1e6629b0431bce67cf28c22, + limb2: 0x1c35b7efd5b67f87221b8bfc, + limb3: 0x3e53df9e3488a9e42acd87e }, y: u384 { - limb0: 0xf3b34c19c2bb19af27e6347, - limb1: 0x6026a2cb028356752122f37b, - limb2: 0xfc21b3e673b1f51a2d461336, - limb3: 0x6e0b95b26e0041fe5d57c87 + limb0: 0x2e089afa726154d40dd12102, + limb1: 0x5391613ecf49db2bcf1cad86, + limb2: 0x84a2abb2de6b3a6e09026a50, + limb3: 0x19557a3a3c1d62a205d5dc87 } }, G1Point { x: u384 { - limb0: 0x24e1dc068b6d56c47387906e, - limb1: 0x24e9434af3dc353869ea42db, - limb2: 0x50bc2c3c2fc3b6f82b6c10aa, - limb3: 0x8d0c82c51c822a0a1a93ed9 + limb0: 0x490bf40774926e8b279947c, + limb1: 0xeabab6aef9e9d2a4f64f4e7d, + limb2: 0x3e309fe1b1c8247abab20d7e, + limb3: 0x79c527862917f69ac58fcc4 }, y: u384 { - limb0: 0xd6d67d5278ef42ddfa1909be, - limb1: 0xcf8007cf2b6de10b5c8115c1, - limb2: 0x59b0bd58cbf4630659d92a5d, - limb3: 0x18240fde8ee20c11855dd292 + limb0: 0xacb18f2da2b425c2ff50dafd, + limb1: 0x7623850d87e279a8a30f31ff, + limb2: 0x777564c7291d95fa80203ade, + limb3: 0x1764ce0e7fb626109b63789b } }, G1Point { x: u384 { - limb0: 0x9570f8392494bc867d9746d7, - limb1: 0x4f3dcbf7e11e87a992bb72b7, - limb2: 0x5cafbcd3e86e4e6aeeb43e6c, - limb3: 0x69c47ae130cdbd2953cffc9 + limb0: 0x42f2f3f4f6b9d2c2b73a361f, + limb1: 0xcd78c070c184c38b1e5716aa, + limb2: 0x72cbc24cd90da89e0e3cefe4, + limb3: 0x19485e1c46d0dce75f8b192b }, y: u384 { - limb0: 0xf5ad846e6d0069ebb4dd28c5, - limb1: 0xad32baa97ab7c332f8c8f7f8, - limb2: 0xcaa8813dbadf06b78cb620b3, - limb3: 0x84563f806c5a57e665e2104 + limb0: 0xb56b3539074b3c47b3f504d9, + limb1: 0x2c229530bddedd8851b03dcc, + limb2: 0xc93eef8474c4e18d6378e7f0, + limb3: 0x173d36f17a3c9ae77a2acc25 } }, ] .span(); let scalars = array![ u256 { - low: 0xf7318bd48efc67dacbdd002dc9f51e42, high: 0x4fdcf466cfe4589573c1e1b246107d4e + low: 0xb5d32b1666194cb1d71037d1b83e90ec, high: 0x5008b5f2ab0c1681c8f8e3d0d3290a4c }, u256 { - low: 0x73510d22e6420d599ffa4c2cc1277947, high: 0x3af373a2c0f07dcf7278052fd5d4c565 + low: 0xd3fbf47a7e5b1e7f9ca5499d004ae545, high: 0x5d79c4bd3e70f16a55485822de1b372a }, u256 { - low: 0x5205ea3ef9a3328c5acb4be938f3bf30, high: 0x1b36ffbf71a3782484d60ea48f9a7bc5 + low: 0x101fbcccded733e8b421eaeb534097ca, high: 0x1c60cb179148624feac1c14f30e9c5cc }, u256 { - low: 0x6fa2e03471a48f4e5833c5ddfeec510f, high: 0x369b12e4625aa63cf8b36ef4be3048f4 + low: 0x247a8333f7b0b7d2cda8056c3d15eef7, high: 0xbacf6e172ae22448b0163c1cd9d2b7d }, u256 { - low: 0xa76c2df0d2c853be63f43eb93aad34d2, high: 0x301654fb602932fe0c2f283d55be9823 + low: 0xe005b86051ef1922fe43c49e149818d1, high: 0x3ea0f301eece328bff7b118e820865d6 }, u256 { - low: 0xe52cb32d7001890ec25fb2014d730631, high: 0x6ed8d28b608152ee632ce9e9eb9bd5f2 + low: 0x4a84eb038d1fd9b74d2b9deb1beb3711, high: 0x2a97919d8c25166a1ff39849b4e1357d }, ] .span(); @@ -15996,166 +16004,166 @@ mod msm_tests { array![ ( array![ - 0x0, - 0x1, -0x1, - 0x1, - 0x0, - 0x0, - 0x1, + -0x1, 0x0, -0x1, + 0x1, 0x0, 0x0, 0x1, 0x1, 0x1, - -0x1, 0x1, 0x0, - -0x1, - 0x0, - 0x0, 0x1, 0x0, + 0x1, 0x0, - -0x1, - -0x1, - -0x1, - -0x1, - -0x1, - 0x0, + 0x1, -0x1, 0x1, -0x1, 0x0, - 0x0, -0x1, - 0x0, + 0x1, 0x1, 0x1, 0x0, - 0x0, + 0x1, -0x1, - 0x0, -0x1, 0x0, 0x1, - -0x1, - 0x0, 0x1, + 0x1, + -0x1, + -0x1, 0x0, 0x0, 0x1, + 0x1, + -0x1, + -0x1, -0x1, - 0x0, 0x1, 0x0, - 0x0, + -0x1, + -0x1, 0x1, 0x0, -0x1, 0x1, 0x1, -0x1, + 0x1, 0x0, - 0x0, + -0x1, 0x0, 0x1, -0x1, - 0x1, 0x0, + -0x1, 0x0, + -0x1, 0x0, + 0x1, + -0x1, + -0x1, 0x0, -0x1, 0x1, 0x1, + 0x1, 0x0, 0x0, 0x0, + 0x1, -0x1, - -0x1, + 0x0, + 0x1, + 0x0, + 0x1, -0x1, -0x1, ] .span(), array![ - 0x1, - 0x1, - -0x1, - 0x1, - 0x0, - 0x0, - -0x1, -0x1, -0x1, + 0x0, 0x1, + 0x0, 0x1, + 0x0, 0x1, -0x1, - 0x1, -0x1, -0x1, 0x1, 0x1, -0x1, - -0x1, - 0x1, 0x0, -0x1, - 0x1, -0x1, + 0x0, + 0x0, -0x1, - 0x1, - 0x1, 0x0, -0x1, + 0x1, 0x0, -0x1, + 0x1, 0x0, 0x0, 0x1, 0x1, - 0x0, -0x1, 0x1, 0x1, 0x1, + 0x0, 0x1, - -0x1, - -0x1, + 0x1, + 0x0, + 0x0, 0x0, 0x0, -0x1, 0x1, - -0x1, - 0x0, 0x1, - -0x1, - -0x1, + 0x0, 0x0, 0x0, 0x1, + 0x0, + 0x0, -0x1, 0x1, -0x1, + -0x1, + -0x1, + 0x0, + 0x0, 0x0, 0x1, 0x1, - 0x1, + 0x0, 0x0, 0x1, -0x1, + -0x1, + -0x1, + 0x0, 0x1, 0x1, - 0x0, - 0x0, 0x1, - 0x0, -0x1, - 0x1, -0x1, + 0x0, + 0x1, + 0x0, -0x1, 0x1, -0x1, @@ -16168,40 +16176,18 @@ mod msm_tests { ( array![ 0x1, - 0x1, - 0x1, - 0x0, -0x1, - 0x1, - -0x1, - 0x0, - 0x1, - 0x1, - 0x0, - 0x0, - 0x0, - 0x0, -0x1, - 0x1, - 0x0, -0x1, -0x1, - 0x1, 0x0, - 0x1, + 0x0, -0x1, 0x0, 0x1, 0x1, - -0x1, - -0x1, - -0x1, - -0x1, - 0x1, - 0x0, 0x1, -0x1, - 0x0, 0x1, 0x1, 0x1, @@ -16211,293 +16197,314 @@ mod msm_tests { 0x1, -0x1, -0x1, - -0x1, - 0x1, - 0x0, - 0x0, - 0x1, - 0x0, 0x0, -0x1, + 0x1, 0x0, -0x1, 0x1, 0x1, + 0x1, + -0x1, + 0x0, -0x1, -0x1, 0x1, 0x0, + 0x1, -0x1, -0x1, 0x0, - 0x1, -0x1, + 0x0, + 0x0, + 0x0, -0x1, 0x1, - 0x1, -0x1, 0x1, 0x0, + 0x1, 0x0, 0x0, + 0x1, 0x0, + 0x1, 0x0, 0x0, 0x0, - -0x1, - 0x0, - 0x0, - 0x1, - ] - .span(), - array![ - -0x1, 0x1, 0x1, 0x0, - 0x0, -0x1, + -0x1, + 0x0, 0x0, 0x0, 0x1, -0x1, 0x0, 0x0, + -0x1, + 0x1, 0x1, 0x1, 0x1, -0x1, - 0x0, 0x1, + 0x0, + -0x1, + 0x0, + -0x1, + -0x1, + ] + .span(), + array![ -0x1, 0x0, 0x1, + -0x1, 0x1, -0x1, 0x1, 0x0, 0x1, + -0x1, + 0x0, 0x1, 0x1, 0x1, - 0x0, 0x1, -0x1, - -0x1, 0x1, 0x1, + 0x0, -0x1, 0x0, 0x1, + -0x1, + 0x1, 0x1, 0x0, + 0x0, + -0x1, 0x1, + 0x0, 0x1, -0x1, - -0x1, - -0x1, - 0x1, + 0x0, 0x1, -0x1, -0x1, - 0x0, -0x1, + 0x0, 0x1, - -0x1, + 0x0, 0x1, 0x1, -0x1, - 0x0, 0x1, -0x1, - 0x0, + 0x1, + 0x1, 0x0, 0x0, 0x0, 0x1, + 0x0, 0x1, + 0x0, 0x1, -0x1, + 0x1, + 0x0, 0x0, -0x1, + 0x1, -0x1, -0x1, - -0x1, + 0x0, + 0x1, + 0x0, + 0x1, 0x1, -0x1, - -0x1, + 0x1, 0x0, + -0x1, + 0x1, 0x1, 0x1, + 0x0, -0x1, 0x1, + -0x1, + 0x0, 0x1, ] .span() ), ( array![ + 0x1, 0x0, -0x1, -0x1, - 0x1, -0x1, -0x1, - 0x0, - 0x0, - 0x0, + 0x1, + -0x1, -0x1, - 0x0, -0x1, - 0x1, - 0x1, -0x1, 0x1, 0x0, - 0x0, - 0x0, -0x1, 0x0, + 0x1, + -0x1, 0x0, 0x1, 0x0, + 0x0, + 0x1, -0x1, + 0x1, 0x0, + 0x1, -0x1, -0x1, -0x1, - 0x1, -0x1, 0x0, 0x1, -0x1, - 0x1, - 0x0, - 0x0, 0x0, -0x1, -0x1, -0x1, -0x1, + -0x1, 0x1, -0x1, 0x0, 0x1, 0x1, - 0x1, - -0x1, - -0x1, - 0x1, - -0x1, -0x1, 0x0, 0x0, - 0x0, -0x1, 0x1, + -0x1, 0x1, -0x1, -0x1, 0x1, - 0x1, -0x1, -0x1, 0x0, -0x1, - 0x0, - 0x0, + -0x1, 0x0, -0x1, 0x1, + 0x0, 0x1, + 0x0, 0x1, + -0x1, 0x1, - 0x1, + -0x1, + -0x1, + 0x0, + -0x1, 0x0, 0x1, 0x1, 0x1, + 0x0, + -0x1, 0x1, ] .span(), array![ + 0x1, 0x0, 0x1, -0x1, - -0x1, - 0x1, - 0x0, 0x1, 0x0, - 0x1, -0x1, -0x1, - 0x1, -0x1, -0x1, - 0x0, - 0x0, -0x1, 0x0, - 0x0, + 0x1, -0x1, 0x0, - 0x0, 0x1, -0x1, + 0x0, -0x1, + 0x0, 0x1, + 0x1, + 0x0, + -0x1, -0x1, 0x0, -0x1, + 0x1, -0x1, 0x0, 0x0, + 0x1, + -0x1, -0x1, 0x1, 0x0, 0x1, 0x1, - -0x1, 0x1, 0x1, + 0x0, 0x1, 0x1, 0x0, + 0x1, + 0x1, 0x0, - 0x0, - -0x1, -0x1, -0x1, 0x0, - 0x0, - 0x1, -0x1, - 0x0, -0x1, 0x0, 0x1, 0x1, - 0x1, - -0x1, - -0x1, + 0x0, + 0x0, -0x1, -0x1, + 0x0, 0x1, 0x1, 0x0, + 0x0, + -0x1, 0x1, + 0x0, -0x1, 0x0, + -0x1, 0x0, - 0x1, - 0x1, - 0x1, - 0x1, -0x1, + 0x0, + 0x0, + 0x0, 0x1, - 0x1, - -0x1, + 0x0, -0x1, -0x1, -0x1, @@ -16506,137 +16513,135 @@ mod msm_tests { ), ( array![ - 0x0, 0x1, 0x1, - 0x0, - 0x1, + -0x1, -0x1, 0x0, + 0x0, 0x1, + 0x0, -0x1, -0x1, + 0x1, + 0x1, 0x0, - 0x0, - 0x0, + 0x1, 0x1, -0x1, + 0x1, + 0x0, + -0x1, -0x1, -0x1, - 0x0, - 0x0, 0x1, -0x1, - 0x0, 0x1, + -0x1, 0x1, 0x0, 0x0, - 0x1, -0x1, - 0x1, 0x0, 0x0, - 0x1, - 0x0, 0x0, + 0x1, -0x1, 0x0, - 0x1, 0x0, -0x1, - -0x1, - -0x1, - -0x1, - 0x0, 0x1, 0x0, 0x1, 0x1, - -0x1, - 0x0, - 0x0, 0x1, + -0x1, 0x0, 0x1, - 0x0, 0x1, -0x1, -0x1, -0x1, + -0x1, + -0x1, + -0x1, + 0x0, 0x0, -0x1, 0x1, - 0x1, - 0x1, - 0x1, - 0x1, - -0x1, -0x1, 0x1, -0x1, + 0x0, -0x1, + 0x0, + 0x1, 0x1, 0x1, -0x1, + -0x1, + 0x0, + -0x1, 0x0, 0x0, -0x1, + 0x1, 0x0, + -0x1, + 0x1, 0x0, 0x0, 0x0, - 0x1, + -0x1, ] .span(), array![ -0x1, - 0x0, - -0x1, - 0x0, - 0x1, - 0x1, - 0x1, - 0x1, 0x1, 0x1, 0x1, + 0x0, -0x1, 0x1, 0x0, - 0x1, + -0x1, + -0x1, 0x1, 0x0, + 0x1, 0x0, + 0x1, + 0x1, 0x0, + -0x1, 0x0, -0x1, 0x0, + 0x1, + -0x1, + -0x1, 0x0, + -0x1, 0x1, 0x1, -0x1, 0x0, 0x0, - 0x0, - 0x0, - 0x0, + -0x1, -0x1, 0x0, 0x1, 0x0, -0x1, + 0x0, 0x1, -0x1, -0x1, - 0x0, - -0x1, 0x1, - 0x0, - 0x0, 0x1, -0x1, - 0x1, + -0x1, + -0x1, 0x1, -0x1, 0x0, @@ -16644,289 +16649,289 @@ mod msm_tests { 0x1, -0x1, 0x1, - 0x1, + 0x0, 0x0, 0x1, - -0x1, - -0x1, - 0x1, - -0x1, 0x1, 0x0, 0x1, -0x1, 0x0, - -0x1, - -0x1, 0x1, + 0x0, 0x1, -0x1, 0x0, + 0x1, + 0x0, 0x0, 0x0, - 0x1, - 0x1, - 0x1, + -0x1, + 0x0, -0x1, 0x1, -0x1, + 0x1, + 0x0, + 0x0, + 0x1, ] .span() ), ( array![ + 0x0, + 0x0, 0x1, -0x1, - -0x1, - -0x1, 0x0, + 0x1, -0x1, 0x0, + 0x0, + 0x0, 0x1, + 0x0, -0x1, -0x1, 0x1, 0x1, - 0x1, - -0x1, - 0x1, + 0x0, 0x1, 0x1, + 0x0, 0x1, -0x1, -0x1, - 0x1, - 0x1, - -0x1, - 0x1, + 0x0, + 0x0, + 0x0, + 0x0, 0x0, -0x1, -0x1, - 0x1, - 0x1, - 0x1, - -0x1, -0x1, + 0x0, + 0x0, + 0x0, -0x1, + 0x0, 0x1, - -0x1, + 0x0, + 0x0, + 0x0, -0x1, 0x1, 0x1, - -0x1, + 0x0, 0x1, 0x1, - 0x0, - -0x1, -0x1, - 0x1, - 0x0, - 0x0, - 0x0, 0x0, + 0x1, 0x0, + -0x1, 0x0, 0x1, -0x1, -0x1, 0x0, - -0x1, + 0x0, 0x0, 0x1, 0x1, - 0x0, - 0x0, -0x1, + 0x0, 0x1, 0x1, 0x1, - -0x1, 0x0, 0x0, - -0x1, 0x0, - 0x0, - -0x1, -0x1, 0x1, + -0x1, 0x0, 0x0, - -0x1, 0x1, -0x1, + -0x1, 0x1, + 0x0, + 0x0, + 0x0, -0x1, -0x1, ] .span(), array![ - 0x1, - 0x0, - 0x1, 0x1, -0x1, 0x0, - 0x1, - -0x1, 0x0, - -0x1, 0x0, 0x0, 0x0, -0x1, -0x1, + 0x0, -0x1, + 0x1, 0x0, 0x0, - -0x1, - -0x1, 0x0, + 0x1, 0x0, 0x1, - -0x1, + 0x1, 0x0, - -0x1, - -0x1, 0x1, 0x0, - -0x1, 0x1, + -0x1, + -0x1, 0x1, + 0x0, 0x1, -0x1, - 0x0, -0x1, - 0x1, + -0x1, -0x1, -0x1, 0x0, + 0x1, -0x1, + 0x1, -0x1, 0x0, + -0x1, + 0x1, 0x1, - 0x0, -0x1, -0x1, 0x0, - 0x0, -0x1, + 0x0, + 0x0, 0x1, -0x1, + 0x1, + 0x0, 0x0, -0x1, - -0x1, + 0x0, 0x1, 0x1, 0x1, - 0x0, - -0x1, -0x1, + 0x1, 0x0, 0x1, + 0x1, -0x1, -0x1, 0x1, - 0x0, - 0x0, - 0x0, - -0x1, + 0x1, -0x1, + 0x1, + 0x0, -0x1, -0x1, -0x1, + 0x1, 0x0, + 0x1, + 0x1, 0x0, -0x1, - 0x0, 0x1, - -0x1, + 0x1, ] .span() ), ( array![ + -0x1, + -0x1, 0x0, - 0x1, - 0x1, -0x1, 0x0, -0x1, + 0x1, + 0x0, 0x0, -0x1, + 0x1, -0x1, 0x1, 0x1, 0x1, + 0x0, + 0x0, -0x1, 0x1, - 0x1, 0x0, 0x1, - 0x0, - -0x1, - -0x1, 0x1, + 0x0, -0x1, 0x1, - -0x1, - -0x1, 0x0, -0x1, -0x1, - -0x1, - -0x1, - -0x1, + 0x1, 0x0, 0x1, + 0x1, 0x0, 0x0, - 0x1, -0x1, + 0x1, 0x0, 0x0, -0x1, - -0x1, 0x0, - -0x1, - 0x1, - -0x1, - 0x1, 0x0, - 0x1, - -0x1, - 0x1, 0x0, 0x0, - 0x1, + 0x0, 0x1, 0x0, 0x0, - 0x1, - -0x1, - 0x1, 0x0, 0x1, - -0x1, 0x1, 0x1, - -0x1, 0x0, + -0x1, 0x0, 0x1, - -0x1, + 0x0, + 0x0, + 0x0, 0x1, + 0x0, -0x1, 0x0, 0x1, + 0x1, -0x1, -0x1, 0x0, -0x1, + -0x1, + -0x1, 0x1, 0x1, - 0x0, -0x1, + 0x1, + 0x0, -0x1, + 0x0, + 0x0, + 0x0, + 0x1, + 0x1, ] .span(), array![ @@ -16934,83 +16939,82 @@ mod msm_tests { 0x0, -0x1, 0x0, - -0x1, - -0x1, 0x0, 0x1, + 0x0, 0x1, - -0x1, - 0x1, + 0x0, -0x1, -0x1, 0x1, 0x1, - -0x1, - -0x1, 0x1, - -0x1, + 0x0, + 0x0, 0x1, 0x1, -0x1, + 0x0, 0x1, - 0x1, - 0x1, + 0x0, + 0x0, -0x1, 0x1, + 0x0, -0x1, 0x1, - 0x0, + -0x1, 0x0, -0x1, 0x1, 0x1, 0x0, + 0x1, + -0x1, -0x1, -0x1, 0x0, + 0x0, -0x1, 0x1, - 0x1, - 0x1, 0x0, -0x1, 0x0, 0x1, 0x0, 0x0, - 0x1, - -0x1, - 0x1, - 0x0, 0x0, 0x1, - 0x0, + 0x1, + -0x1, + -0x1, -0x1, -0x1, - 0x1, 0x0, 0x0, - 0x1, -0x1, - 0x0, - 0x1, - 0x1, - 0x1, -0x1, - 0x1, + -0x1, + -0x1, 0x1, 0x0, -0x1, -0x1, - 0x0, - 0x1, 0x1, + -0x1, 0x1, 0x0, + -0x1, 0x0, 0x0, + -0x1, + -0x1, + 0x0, 0x0, 0x1, + -0x1, + 0x0, + -0x1, ] .span() ), @@ -17020,249 +17024,249 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0xbad1ce71b91007f1e969eaa5, - limb1: 0xc0e52f3c33cd7f002c5b2a0, - limb2: 0x6b16bc9c2af27052248777cc, - limb3: 0x12bba9b5f430a8b66d2ea280 + limb0: 0x6bfa177dd20066e4a240a087, + limb1: 0x4b967a726403ac18176250b2, + limb2: 0x1a678e6e169563bd57682566, + limb3: 0xe78964de46488e76256f386 }, y: u384 { - limb0: 0xdcf009aa59ba5e9d93a0e2d9, - limb1: 0x86a6f5ccc58bcd136f729602, - limb2: 0xa52080398a7d23ff06d247cb, - limb3: 0x11ff8c27161816ca07362fc + limb0: 0x125fb034a51551d74101d6f3, + limb1: 0x7b33cbd2959278754791dbe6, + limb2: 0xfe55c815eafda4916b6036bb, + limb3: 0xe9ee7b6055ed78f41754a40 } }, Q_high: G1Point { x: u384 { - limb0: 0x2d587366a83df2b3ea9a85b3, - limb1: 0x237d60fc73b51cb0c702c798, - limb2: 0x1a0a681dbe9c1ecc2888929e, - limb3: 0x147a9fe0c379b7de6b1efe1 + limb0: 0x5962142849053e0cce6c0e43, + limb1: 0xcbb60e2ac8082ba6552d2e8f, + limb2: 0xdbdc69b3aeb151d87d07a82a, + limb3: 0x2e33db0169c2fd59c5ea442 }, y: u384 { - limb0: 0xd2cc1001d6ecbd29de6e1c61, - limb1: 0xaaabfa4a92fd6ccdc22bde8e, - limb2: 0xe686d9a65c900e2b3612f640, - limb3: 0xa46672770aab698ae5d3a91 + limb0: 0x801b96ea740e2c8bf21f3aa5, + limb1: 0xc65eba411bcfd16c2ee8763d, + limb2: 0x44c5278d4488e61567f3438d, + limb3: 0x123b6f9c78e1fb64c6bbdfc3 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0x8035f34eb84cb240e9f56a9f, - limb1: 0xf39fb57107add07ded679ad9, - limb2: 0x699d08979d914227bf92d02d, - limb3: 0x1e766bda3b090ac52fb05ba + limb0: 0xf5fd278f6b21ee3b669cae69, + limb1: 0xbfa4ee77723b9fd16ba5ce4f, + limb2: 0xe1d99a941f3798d184d7e562, + limb3: 0x54caf765eeddb0b29399d09 }, y: u384 { - limb0: 0x3c0bacd439f927369ce3552c, - limb1: 0x78c030b95b458f1faa35e12c, - limb2: 0x2515471df51a0a488d1da1b9, - limb3: 0x26c7cfb1f267b377a1b73a8 + limb0: 0x1bc27ed0042bef2a172d07d6, + limb1: 0xfdb2c6d76a0c3cd4c5b91dc7, + limb2: 0x4e53dee85a92897bdf0fb74e, + limb3: 0x11b91a5241bff37cd2d9ee42 } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0x8791037e548bb439436431b9, - limb1: 0xe6afbe9fa31504b1ede41c85, - limb2: 0xb4c3e494a36d2901ac73504, - limb3: 0xf7255520bd15652ee6f9b1a + limb0: 0xb9aceca5d7431768070b1abd, + limb1: 0xd245970b464799c24bcddef7, + limb2: 0x361df903bf5fa008225fba0c, + limb3: 0x1e82062a27f0b39de1fdf72 }, u384 { - limb0: 0x528f55202bfc214aa4592d21, - limb1: 0xdff017d85ad156a208b2e9cf, - limb2: 0xe64a98bff0b9178d27cb9409, - limb3: 0x15a4e3588a9f2cb22b0ac3fe + limb0: 0x109ea6a4b01ec219eea6af8e, + limb1: 0x787e735b7f93c4f9d7eb6c70, + limb2: 0x37ab538f904ea7db3a612fae, + limb3: 0xa12f94080e4b02db1491864 }, u384 { - limb0: 0x981a888d33aeb9668db5d19c, - limb1: 0x1b03f2fbaae59203531ab35c, - limb2: 0xe717c12004e4fba4ad11958e, - limb3: 0x1142395593061e641065d0ff + limb0: 0x1b6f8caa984c57f88d06eaf3, + limb1: 0x4f09199944434302549abeeb, + limb2: 0xf10f1b00fb018576a809ee18, + limb3: 0x120591dbc358f9a1d83c7e30 }, u384 { - limb0: 0x66dbb8b0d4ab9848ed0b7808, - limb1: 0x6a7acce5f461289d3de2f05d, - limb2: 0x433d7089c8fad9cf3ba1af53, - limb3: 0xc7ce48e1e785fb2a74d95e4 + limb0: 0xf10f4bf65e866d8a2cc524f8, + limb1: 0x571d288edb92725df5786f72, + limb2: 0xf70604dbbfde8b36dc8bed35, + limb3: 0x148ebc1bc6d661e5793e92a }, u384 { - limb0: 0xaa5956266ba837d74d60db2b, - limb1: 0x40b15b268daae2294481b040, - limb2: 0xd1a0eb0b64ae9ccaec2af004, - limb3: 0x101abf4fc9627ba24c9b5883 + limb0: 0xca0c2c6a93a3ee28fe55cb81, + limb1: 0x261fe51449dd0319af1a3d44, + limb2: 0x313f5e8aaa440a1029eff52a, + limb3: 0x16a2e202fcca0f4d8ddd1c9f }, u384 { - limb0: 0x4d25b87a48aedc44e3ea1135, - limb1: 0xf9c359815348144e1086a9f3, - limb2: 0x87a60b2797f161537a54557b, - limb3: 0xe5ed7a215bbeeba70e03db7 + limb0: 0xc9b65f451683e12f35e76dd8, + limb1: 0x17960225f796a2e1ea0cbe57, + limb2: 0xb1da103e136bb5d77b83ab3d, + limb3: 0x486d4dfa3565a97515f4ff8 }, u384 { - limb0: 0xc580e78fcebca84e0918a59f, - limb1: 0x6730d2a0f6b0f62351d38322, - limb2: 0x434bacd764774b84f38512bf, - limb3: 0x1a0111ea397fe69a4b1ba7b6 + limb0: 0x38e10acf353a61f7f15e67b4, + limb1: 0xb39869507b587b10ca45c7c3, + limb2: 0x21a5d66bb23ba5c279c2895f, + limb3: 0xd0088f51cbff34d258dd3db } ] .span(), a_den: array![ u384 { - limb0: 0x1fdbd9900dd261d637654109, - limb1: 0x95c16a69f348bb310d2db92a, - limb2: 0xfbac108b7d6cfc8867cb5424, - limb3: 0x1785456d7aac77822af6670a + limb0: 0x1cc1751212ac0e81fa535edd, + limb1: 0x68456fee72d3b748308e67af, + limb2: 0xfde95c45a0cab4bb404dd885, + limb3: 0x5f7facdd1fc3cd38b266abf }, u384 { - limb0: 0x33f53689a20e0995b544e10, - limb1: 0x8dea924957e5b25a3121e7de, - limb2: 0xc80bc187674fa4ec2c173ff6, - limb3: 0xf84a6f04ba83657433efd5e + limb0: 0xc33f17f7fdbde21493a81ffc, + limb1: 0x31369075bc9ba6bf5c9dc06a, + limb2: 0xd75670012c13fc025c5ef69, + limb3: 0x56f0851f2afaf21b5912312 }, u384 { - limb0: 0xef10c9681c60244d078e7e5e, - limb1: 0xf87618ae62c53fd2d38dcefd, - limb2: 0x7fe89b9ca9ee8f99f8696e58, - limb3: 0x28b99d0f08750125a1ff94 + limb0: 0x818e6c4943dcd5aad462b1b8, + limb1: 0xfb5a608f133b4ea380c4c404, + limb2: 0xe710d9c993a31b3f2b73c3d8, + limb3: 0xcbe2c3a91721ff5e657cdd4 }, u384 { - limb0: 0xb0a97b8ad8ebf80e4e3455ec, - limb1: 0xe9948b682eff14d1c50087b, - limb2: 0xf19c38a64917374b6e0c294f, - limb3: 0x686d5f66ccf3a60e7df10a + limb0: 0xcdf8fff760959432da4344eb, + limb1: 0x5d3975540b38162d8e415d21, + limb2: 0x44450173655a70914d99ab16, + limb3: 0xb5a28320bffae8e9fd7fb71 }, u384 { - limb0: 0x3bcfa8c1d76aebfd73a151cb, - limb1: 0x27bb5406b055f4f2b2fe174d, - limb2: 0xd05314481032ebe0b2ac1391, - limb3: 0xf5643049a88b4894d8b8405 + limb0: 0xc7f65b330ae21057534bfdcf, + limb1: 0x2b7c7d11469f0f60522f5731, + limb2: 0xa2fbe35f81a40b7b76187105, + limb3: 0x1515d789d88ea9fbf7ef5ca5 }, u384 { - limb0: 0xae657fd5092a684504763448, - limb1: 0x64d94f93988047d8fe6b2549, - limb2: 0x1dc4abaa41f79f920c1daaef, - limb3: 0x15629a74628b037f91cef0fe + limb0: 0xf016c876465fc5a40a468670, + limb1: 0xcf6cc11a77236ae5f429ec95, + limb2: 0x4fe136dfd3dc32f75d3e74d7, + limb3: 0xcc07f6317a2640a653c41d6 }, u384 { - limb0: 0xeee38ee8e753004ce837f497, - limb1: 0xe17fd67d6131dbf1ce481f88, - limb2: 0x62be646bcf7a98d0ef811e9c, - limb3: 0xbbaf6d3ed4684cb8dccd7e2 + limb0: 0x1e2db55b2094f6f151cc5212, + limb1: 0xf516a02462e701b194535d8b, + limb2: 0x1c0bdecd9eaa1a1b7442993a, + limb3: 0x14f2ccbc1dd414eeae31d025 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] .span(), b_num: array![ u384 { - limb0: 0x630651d9ac8b73cabd412ff8, - limb1: 0xb18a9f2245bc49c2d1819b39, - limb2: 0x36a97d5a05af1fed38bdcf1c, - limb3: 0x17c4ab99e7d528920a773895 + limb0: 0xbc3b094d1dcd7c3471c4f83f, + limb1: 0xda32ac206febc5b63691a11d, + limb2: 0x444992855d24272228c8f52e, + limb3: 0x19d99d79758329bc845b4c6 }, u384 { - limb0: 0x4f026b5cd7ee554d356cf4e3, - limb1: 0x84d8130efe3d9e87447a9e87, - limb2: 0x1c68f68d40b2031476968abc, - limb3: 0xe0178ac43a2b8f9c70a6cb5 + limb0: 0x1bb560f893f532253559c1e7, + limb1: 0xe998f5fbd9ffc6dfa764cf2d, + limb2: 0x7c89f85d274e1c73e7b13e83, + limb3: 0x5b459e127455e49c77b5df1 }, u384 { - limb0: 0x528c6a58fe3b22bdb7abfa9a, - limb1: 0xf3b3a5c4b329d4e430e28718, - limb2: 0x77a2a90299102c13570c4215, - limb3: 0x14c119287da4fd72b86c50dc + limb0: 0xf2882628e61e3393e2eee7fc, + limb1: 0xb794fd565f22ad6c50c24345, + limb2: 0xac2fcb39fe51f01d1b061f62, + limb3: 0x3174f0de4a40642871e22b5 }, u384 { - limb0: 0x3c8d1092332a423f557ecb6c, - limb1: 0x29fd8d5730cc3b36e8f353bd, - limb2: 0x2ef743ba0c11c08555971b1b, - limb3: 0xe2b1d5217338ce737545ff9 + limb0: 0x447fb230e8fc6bc1a1495d35, + limb1: 0x368d1386de0c5681e31c4ad3, + limb2: 0x81f89526b21943aaf91f531c, + limb3: 0x7875e9d476a5f93a45b3fc8 }, u384 { - limb0: 0xafa20cd09b0ebb6bf0f62989, - limb1: 0x22ce7a10ff512b58ced95154, - limb2: 0xa88c633a7979cf8df2ff6109, - limb3: 0x8ab07785bb01ba930da99d3 + limb0: 0x3f6ec8dd50d22ac95fdc99c7, + limb1: 0x359bf3cfa05e2d9b2e5b58ef, + limb2: 0x586a8b89374ffe124407a95, + limb3: 0x422043aa8820e8577324416 }, u384 { - limb0: 0x23192f0a228446d49b580958, - limb1: 0x748e3212a2728a7f8b083290, - limb2: 0x947a653943ca2423ee8cfe8b, - limb3: 0x10520cf21defb8a4d9bf3083 + limb0: 0xab78d344df8f586bdeb2281d, + limb1: 0x25bcd45a4eddfa5ab555c6dd, + limb2: 0x76413242498567b5f579abd6, + limb3: 0x151a4a0b3b6276e91d53443c }, u384 { - limb0: 0xed9c8e9729093099208ecc88, - limb1: 0xb8d189266b29f5fad48903f4, - limb2: 0xb5f23b9ed05b102e96f1ca58, - limb3: 0x11105085c0272b99340c4973 + limb0: 0x3b1b2750753cff1a7fd2008b, + limb1: 0x259c7cc263d32cb1ef4d0153, + limb2: 0x70c92a5582c42eb3dfad9461, + limb3: 0xcb86e6c2f6d04d72088384a }, u384 { - limb0: 0x97e805a6615778f6483077c3, - limb1: 0xb21224ec4a0da8bf9946634c, - limb2: 0xe9f2f73336320f1586666f43, - limb3: 0x246e3f58818b8888de1852f + limb0: 0x7d1b272bcd232028cb54e304, + limb1: 0x584069ee64bf3b16de9f6fd3, + limb2: 0x8b5a65a1417ea5dc8b00faf4, + limb3: 0xcc640ac4e545104ba86d9d6 } ] .span(), b_den: array![ u384 { - limb0: 0x6b736641094c8758dd960423, - limb1: 0x217331c4e9100a57d8b2e4ac, - limb2: 0x24cd3ba7c84e0f92c49e1854, - limb3: 0x1011dff73e322a39ca86a509 + limb0: 0x7305d4484ab03a07e94d7b74, + limb1: 0xa115bfb9cb4edd20c2399ebc, + limb2: 0xf7a57116832ad2ed01376215, + limb3: 0x17dfeb3747f0f34e2c99aaff }, u384 { - limb0: 0xaa554da2f48582656d51e2ea, - limb1: 0x6948a3e37234dd20872f9f7a, - limb2: 0x9997ac6ed44ffca6c952da5b, - limb3: 0xa1077ecbba10c2876c4a60e + limb0: 0xcfc5fdff6f788524ea07ff0, + limb1: 0xc4da41d6f26e9afd727701ab, + limb2: 0x35d59c004b04ff009717bda4, + limb3: 0x15bc2147cabebc86d6448c48 }, u384 { - limb0: 0xbc4325a0718091341e39f978, - limb1: 0xe1d862b98b14ff4b4e373bf7, - limb2: 0xffa26e72a7ba3e67e1a5b963, - limb3: 0xa2e6743c21d4049687fe51 + limb0: 0x54e5b125557456ab518b1c35, + limb1: 0x8638af9b563c4469e4671013, + limb2: 0x58f7ba4eea152177ba49fca4, + limb3: 0x18f79f000c48993d4e438f9d }, u384 { - limb0: 0xe281c7bb7182420f703698b9, - limb1: 0xd0268d43ff0880657e6ddb18, - limb2: 0xc21cf324a1c9d9b61ffbf960, - limb3: 0x1926faeb15e0461a64ee2b36 + limb0: 0xa35174efdb035f4d6360c7de, + limb1: 0x75fa729da90319da4ae7dc37, + limb2: 0xcbb1b53bd1bd2b7b832f721f, + limb3: 0x195f89abc87b1073bf6ab0ce }, u384 { - limb0: 0x8fd5f67083ce908f29da3fe6, - limb1: 0x5e763d222bdb99dcbfc24515, - limb2: 0x82c0b8f8df2cbd650fbd68bc, - limb3: 0x18db8f2e42cb3b47e335be09 + limb0: 0xcf1c84c4fb492371e0d91737, + limb1: 0xa9960cd7f30501d449571d35, + limb2: 0xcf81edf7ebeb8b1f23987b3f, + limb3: 0xbc330baa86aa342b3fb9e85 }, u384 { - limb0: 0x94aac8bd130cc56119684f7d, - limb1: 0x5648df19e0b37cca71366428, - limb2: 0x2d1843bf84672b534e50e1d8, - limb3: 0x7afedafecb4cf308b8acc6a + limb0: 0xdf418e22e95dec3afd7d7622, + limb1: 0x6aabbfb702670df31414765e, + limb2: 0x9ffe5b9a1a255012b96371b9, + limb3: 0xbbe05f27cfbe2eae51185c1 }, u384 { - limb0: 0xbae3b72ebc38f941ef147d9d, - limb1: 0x2d67d00b11066af036c486a0, - limb2: 0x394a1d7e228a4f0a388b9103, - limb3: 0x155336c4e2672039fa95a8de + limb0: 0x32b3d564b4ec6ff821758d32, + limb1: 0xfc017e02b2c13a87838ad352, + limb2: 0xea917623b29cf6704414d7c3, + limb3: 0x11222563d6d04e7a774c44e2 }, u384 { - limb0: 0x3bcfa8c1d76aebfd73a151cf, - limb1: 0x27bb5406b055f4f2b2fe174d, - limb2: 0xd05314481032ebe0b2ac1391, - limb3: 0xf5643049a88b4894d8b8405 + limb0: 0xc7f65b330ae21057534bfdd3, + limb1: 0x2b7c7d11469f0f60522f5731, + limb2: 0xa2fbe35f81a40b7b76187105, + limb3: 0x1515d789d88ea9fbf7ef5ca5 }, u384 { - limb0: 0xae657fd5092a684504763448, - limb1: 0x64d94f93988047d8fe6b2549, - limb2: 0x1dc4abaa41f79f920c1daaef, - limb3: 0x15629a74628b037f91cef0fe + limb0: 0xf016c876465fc5a40a468670, + limb1: 0xcf6cc11a77236ae5f429ec95, + limb2: 0x4fe136dfd3dc32f75d3e74d7, + limb3: 0xcc07f6317a2640a653c41d6 }, u384 { - limb0: 0xeee38ee8e753004ce837f497, - limb1: 0xe17fd67d6131dbf1ce481f88, - limb2: 0x62be646bcf7a98d0ef811e9c, - limb3: 0xbbaf6d3ed4684cb8dccd7e2 + limb0: 0x1e2db55b2094f6f151cc5212, + limb1: 0xf516a02462e701b194535d8b, + limb2: 0x1c0bdecd9eaa1a1b7442993a, + limb3: 0x14f2ccbc1dd414eeae31d025 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] @@ -17271,203 +17275,206 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0x1feac3d5cd7ffa72c81e7164, - limb1: 0xe2ee39412f9550c51f38f1f3, - limb2: 0x109aae48239b7b0dc4f23d1f, - limb3: 0x159beb367ffa153c6542a568 + limb0: 0x4228eb14bd25962eb64d03f6, + limb1: 0x342ee5a514054add0d9dbfc2, + limb2: 0x919bdbc9b310db4b2d528efa, + limb3: 0xd32822cdcd73230d2624945 }, u384 { - limb0: 0xa4f6582f74f3d6aa40f4fc52, - limb1: 0xf2213892d00a002bf68f122, - limb2: 0xf92f93724f9b987cafb2bb7a, - limb3: 0x160b66d22e4496a28474485f + limb0: 0x12d8288ec8ebcf9d3569360a, + limb1: 0xae1a2d87b8e3034f626bca5a, + limb2: 0x39d3b1716ed757e606aa692e, + limb3: 0x12cb97572728967fc33ace2 }, u384 { - limb0: 0x7826e4b94b0e4e07e3a256c3, - limb1: 0x34fdfd67de62dc1fbc926e2a, - limb2: 0xe22427284f621b8a2bd7beba, - limb3: 0x98221ec150230c5ee12d9e3 + limb0: 0x8c0d7290e0219417298e9195, + limb1: 0x2dc2cf7989aff412f04c9d57, + limb2: 0x57347cb79bca46210f8a8bf, + limb3: 0x1638932401d02422f8aadcb5 }, u384 { - limb0: 0x28ab88711d44d0beba95047c, - limb1: 0xe3d682fa1076faa9267aedcb, - limb2: 0xeda21baa03f9feab8687aaeb, - limb3: 0x60ce8290a5ba7571148862f + limb0: 0xbfaa50f6b99e349fd244395a, + limb1: 0x2ea6b21c4ba1b5db809fd499, + limb2: 0x2650ed922f9dd0d237ea5269, + limb3: 0x5aea8542af46b66f85c4476 }, u384 { - limb0: 0x1563167791b1f9fa86fffb49, - limb1: 0x803ea116e53d2fa6dee23f75, - limb2: 0x912826efab305d35597bcae1, - limb3: 0x1314a736dc493d0efbe93b2c + limb0: 0x5ca4dd567f3a210ed56c82de, + limb1: 0x6e6454657510efe0e1fbcba5, + limb2: 0xb30d5ee1bdd5f08303aef418, + limb3: 0x58a400b9302a18b8daf1c24 }, u384 { - limb0: 0xa59d61bcae8a7d706e225f23, - limb1: 0x1c12ae95ef87596d58f8d664, - limb2: 0xa9699d98814664f2fc622f29, - limb3: 0x9dab6d1f672ef9256c168f4 + limb0: 0x7547c35cfe27fc88634d788f, + limb1: 0x25b28027ddcac832499fcfea, + limb2: 0x4a6d6628ef5a4d508a301b93, + limb3: 0x3a65548bae95f066233dfe8 }, u384 { - limb0: 0x96302249b5d89b3d510f6dfb, limb1: 0x5d67a8b0, limb2: 0x0, limb3: 0x0 + limb0: 0x46d681980e878548d65bb7c3, + limb1: 0xb39869507b587b127e5b1c83, + limb2: 0x21a5d66bb23ba5c279c2895f, + limb3: 0xd0088f51cbff34d258dd3db } ] .span(), a_den: array![ u384 { - limb0: 0x95d88197d0c0e2afb3accc8f, - limb1: 0x885d15703df5fe84be98a389, - limb2: 0x62c6189ef45cc3522db9e94e, - limb3: 0x442cfb4dea69b92cdad159f + limb0: 0x74a61e007a8679d7a492db71, + limb1: 0x476d442109ad8f524d869f53, + limb2: 0x2990e16b9d6aafc6e4294677, + limb3: 0xe1f76150f9394108858f38e }, u384 { - limb0: 0x4892963e8e4285773374679c, - limb1: 0x17f5ce2afe81ebe8eb522425, - limb2: 0x4fa1cf327ad38a56cf46b991, - limb3: 0xb4ae6e9c22a2048dd4f5aa9 + limb0: 0x93a2245edebd14d99639d61, + limb1: 0x721811ec1136e37f0bf91885, + limb2: 0x73b5be6db560ed113f9d4060, + limb3: 0x16ed8ce589683a982d41b7ff }, u384 { - limb0: 0xa8b41b6c7e831e1661f200ef, - limb1: 0xd6bb5d4065c72f4d6e33b860, - limb2: 0xc1305efa8f9061fae810a71f, - limb3: 0xcc6a71bf4d235b94048c141 + limb0: 0xaeb12af9d0fc3c2d7287d546, + limb1: 0x8bd1673cd589ad2c203fa4e8, + limb2: 0x250bc2d42cd4278aaf5f3ec3, + limb3: 0x983d02e4e374f735410a375 }, u384 { - limb0: 0xbf8340feade582f695ab138e, - limb1: 0x479adbac2eb504209caa881e, - limb2: 0x8ab5e3d11c096c46b9a1048b, - limb3: 0xe982e43779cccf871f87fb1 + limb0: 0x64fd740d0be38fcae432bd25, + limb1: 0x6f0db53129ddc2780180643c, + limb2: 0x6942d5f47aff4341ae274ba9, + limb3: 0xa284c301d805c4ecf4a3ed5 }, u384 { - limb0: 0xb96ba23adea934823fe517d9, - limb1: 0xe06a5759352d3b81b0c2dfea, - limb2: 0x8e341c2712aaf8fe8614ca9b, - limb3: 0x17b35fc114fa8e00f7b2c6cb + limb0: 0xa6e14ecfe0928a8222b1aa42, + limb1: 0x1bb1b3a2b5a77b8997f35c0e, + limb2: 0x71b15d67deb5e9dfa0a0b271, + limb3: 0x15d6219d7c6e65cfb621a563 }, u384 { - limb0: 0x9ca34ac848f52882d0bb1b11, - limb1: 0x11fad8e151dd1c1dfbd043b2, - limb2: 0xb2c453c8ced1a4f976c35637, - limb3: 0x61655892f59dcaac5887244 + limb0: 0x24ba5e95a8846807cff18337, + limb1: 0x33704e063cf31d79a5c3c571, + limb2: 0xfa96765bd5269cd4a300b129, + limb3: 0xad6cacbf0c1216dbd8e5081 }, u384 { - limb0: 0xcb08e9f43e26158ae707aede, - limb1: 0x62dff5d3ba08a10ceb5f0a92, - limb2: 0x707f0c12d7599ed1f7faf10b, - limb3: 0x32de4a19bbfab69c92de2cb + limb0: 0x7f71b8b0ef911fc925a139ab, + limb1: 0xdc639cb08318bff37dc7faf, + limb2: 0x174b56b0a216e07b5b1e03b7, + limb3: 0x687136fb21c8766290e77b2 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] .span(), b_num: array![ u384 { - limb0: 0x98941fda4973c0ee67eb74de, - limb1: 0x230e9129ab3da3b14cf499eb, - limb2: 0x6eb78190491f10ecee75d6ee, - limb3: 0xbf848b0d644990c9aa638b5 + limb0: 0x4751e2dff7395635b8ed60a4, + limb1: 0x99fbc9e11002e0458ebd3939, + limb2: 0xdfd5bb29b106ab8f9913dd4d, + limb3: 0x64cbac78c5255832f3ce249 }, u384 { - limb0: 0x6d7fa0abbad0eec65e4badd4, - limb1: 0x9bf36b9d594da0c6fc900472, - limb2: 0xc0399fbfc18a741f47201c5, - limb3: 0x1235a00a81bdf9df8c04ff46 + limb0: 0x1c7ce618629059026eef12d2, + limb1: 0xe76966a3c36ca363686e93d8, + limb2: 0x857abe1d7511b33bacd3129c, + limb3: 0x6d6fd45007f2849e5b483a1 }, u384 { - limb0: 0xd5b386a710426fc8cffee5a5, - limb1: 0xb60a39589cc0b2a21d354164, - limb2: 0x4ab3ff12c6e2fdfadd842285, - limb3: 0x2fdbef72031a77120b414d9 + limb0: 0x4a73909a0e3656604fde3089, + limb1: 0x3302f4a97028ea8050021692, + limb2: 0x7420fc871992146f968f5d35, + limb3: 0x41a1bb844620c64d3dc6b56 }, u384 { - limb0: 0x7b04109689b455e84c4b8042, - limb1: 0xc23c417071f13ac0c2bda8e8, - limb2: 0x5b2f287b7f04b86f47c1cd90, - limb3: 0x4c4c81432b3269191bdf243 + limb0: 0x32b1c5fdcc0e4ec5b8c6b43f, + limb1: 0x55c8cf12dfa42f0cc721a802, + limb2: 0x195edf7a8119bf3795e6fe4b, + limb3: 0x167053c2d52b98972a8e3f41 }, u384 { - limb0: 0xd2bfb7c206f3401c008e7e26, - limb1: 0xba0547d39adecb3baaaeaeb3, - limb2: 0xcad4297e1fd6c0c5558c471d, - limb3: 0x16ce0f43cdc614211d3561e9 + limb0: 0x525f10ada5f9a27dd37b6cda, + limb1: 0xbaa6d3d23981c00a18a20382, + limb2: 0xb826097b8ca003595625e153, + limb3: 0x111533a13e38152183424c7d }, u384 { - limb0: 0xf54cd889e0331185a32f546d, - limb1: 0x32e5b0cf4cdef0be9c46ac98, - limb2: 0xcb86ce4966a24d14007ee557, - limb3: 0x15ae7172fe08655b16363e6e + limb0: 0xdfad9bcafa2451620c2810ac, + limb1: 0x7064c8e6e7f5075072917083, + limb2: 0xf5b931fcff097b82511a6a24, + limb3: 0x14966d933f2fd3bfb873b8ac }, u384 { - limb0: 0xb9f2f827f9c5f0a1bc29f407, - limb1: 0x5f5c212b0ae1b8eaba0377ff, - limb2: 0x53cb704d4118f863e0fb2224, - limb3: 0x14a03669bb5eedf4eb45f03d + limb0: 0x5766f8c9f4134188cd45e2ce, + limb1: 0x4344ef3ffe1c81020f709661, + limb2: 0x28be9e93f7e8e183db1e0b86, + limb3: 0x3c7364e02a0ad33ded6a50d }, u384 { - limb0: 0xc4ea8680f958fb3d094a1f2e, - limb1: 0x8b49d2f3d7d7a8ba88e67210, - limb2: 0xb3af8c06e416b74953280d5, - limb3: 0x15267342cd8565182f0c2e11 + limb0: 0x46ef2668d95866352982f34f, + limb1: 0x955a1e83d0c307c8341377e7, + limb2: 0x686bfbd1e1aaf8dc47936b7, + limb3: 0x187d78e477042acd0f79e29d } ] .span(), b_den: array![ u384 { - limb0: 0x5762065f43038abeceb3323c, - limb1: 0x217455c0f7d7fa12fa628e26, - limb2: 0x8b18627bd1730d48b6e7a53a, - limb3: 0x110b3ed37a9a6e4b36b4567d + limb0: 0x6ff07802761be75e924c186e, + limb1: 0x4f536b4239545100f8c27d50, + limb2: 0x1fac2bffacbc2811a99af45e, + limb3: 0x47bb47fcb4e830d8b2c7ecc }, u384 { - limb0: 0x70f658fa7f0b15dccdd1f3c5, - limb1: 0xf8a6660b0356b97f8e9c9096, - limb2: 0xfb3b8ff286d6ddd64995d384, - limb3: 0x132a89bccf289a892a21c2ee + limb0: 0x10ec891889b24536658f7583, + limb1: 0x92cdcfcd60c8ab8fd3e06218, + limb2: 0x4f3f330a81dd1b623e5c943, + limb3: 0xdb2fdd779213691d3b3e8db }, u384 { - limb0: 0xf17c6db2400d785987c85911, - limb1: 0xf3bca260a06bc7119a22e183, - limb2: 0xc175cf12d9ca3c66acbd89bf, - limb3: 0x19198a8599c8f04ab6075d50 + limb0: 0x970abe789f1f0b5ca1faa6d, + limb1: 0xc814ca525f75be8c625293a4, + limb2: 0x50e35e794ed952a5c9f7e84e, + limb3: 0xc0e2eceff5d57330526e61e }, u384 { - limb0: 0x313d85931458ee8a0a59c571, - limb1: 0xd866dedf0b6822bef3eac407, - limb2: 0x7064e349b93dd632d33d5fc, - limb3: 0xaa164ee4a1a023fff57c4f9 + limb0: 0xa5f3ee353616b903355e7aaf, + limb1: 0x354273a3c3c2acea16303047, + limb2: 0x4804df8ec07925c3b5bc4f9e, + limb3: 0x2be8301129538172f4a9f77 }, u384 { - limb0: 0x68f11f2b20eb5780330a1c54, - limb1: 0xfcdbe10bf873015f33ada3d5, - limb2: 0x7b438c7133a2403d19859902, - limb3: 0x2141e453014bde38fabd6fe + limb0: 0xdf6f5d868839fb56242b9bbd, + limb1: 0x441b95f30d10f914f11688c4, + limb2: 0x2d4c80af9e5b667bf40bbf27, + limb3: 0x641cbb29522376dd959aeb4 }, u384 { - limb0: 0x69ed468de858c021a4dec288, - limb1: 0xb775ee24b68aa9a13ec8c72c, - limb2: 0x48f60146665faa5bcf98ed3c, - limb3: 0xb1eeb5678b9c1ca0b4ee29e + limb0: 0xdef2a550ff0fdc4cb24e8ccc, + limb1: 0x8b30fa13dbf436ca79f6baaf, + limb2: 0x88ce4294b88003d35457dde9, + limb3: 0xdcd7899e3c07f5b4129610 }, u384 { - limb0: 0x3a52e8cfec7ed92231ca245b, - limb1: 0x6be9e05a202692302b7ab26b, - limb2: 0x966674514f89c09a607b5f9, - limb3: 0x14eaedfad1b94054b946329 + limb0: 0xb17056d110290eef7ab7f926, + limb1: 0x3ef5c9bc53f2fc50c24662fb, + limb2: 0x832483df9ee379aa271a47c6, + limb3: 0xa438804ac72934d286875e7 }, u384 { - limb0: 0xb96ba23adea934823fe517dd, - limb1: 0xe06a5759352d3b81b0c2dfea, - limb2: 0x8e341c2712aaf8fe8614ca9b, - limb3: 0x17b35fc114fa8e00f7b2c6cb + limb0: 0xa6e14ecfe0928a8222b1aa46, + limb1: 0x1bb1b3a2b5a77b8997f35c0e, + limb2: 0x71b15d67deb5e9dfa0a0b271, + limb3: 0x15d6219d7c6e65cfb621a563 }, u384 { - limb0: 0x9ca34ac848f52882d0bb1b11, - limb1: 0x11fad8e151dd1c1dfbd043b2, - limb2: 0xb2c453c8ced1a4f976c35637, - limb3: 0x61655892f59dcaac5887244 + limb0: 0x24ba5e95a8846807cff18337, + limb1: 0x33704e063cf31d79a5c3c571, + limb2: 0xfa96765bd5269cd4a300b129, + limb3: 0xad6cacbf0c1216dbd8e5081 }, u384 { - limb0: 0xcb08e9f43e26158ae707aede, - limb1: 0x62dff5d3ba08a10ceb5f0a92, - limb2: 0x707f0c12d7599ed1f7faf10b, - limb3: 0x32de4a19bbfab69c92de2cb + limb0: 0x7f71b8b0ef911fc925a139ab, + limb1: 0xdc639cb08318bff37dc7faf, + limb2: 0x174b56b0a216e07b5b1e03b7, + limb3: 0x687136fb21c8766290e77b2 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] @@ -17476,10 +17483,10 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0x3b9d76e7ecd412910f0b45ae, - limb1: 0xafc5ab161642301f6c72abee, - limb2: 0xc2f3791e9eccd5ab6a5785a9, - limb3: 0x654549bd29c73a9b46fed11 + limb0: 0x5b3e0135da78116a0bcea597, + limb1: 0xbc440d73737a89f86aaec80, + limb2: 0xdf07ef0aba23f07264e01e92, + limb3: 0x4244bdf9824e591ba68fcf0 }, u384 { limb0: 0x302ea91a3b09524e7c49fbbb, @@ -17491,66 +17498,66 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0x572817546909748484dea48b, - limb1: 0x905b4a775759218d62de43e5, - limb2: 0x45a30b5fd0fbd6cc1e78c487, - limb3: 0x8e61ffa9592b493fe332950 + limb0: 0x3981d6326249c94f8bb9bc30, + limb1: 0x6d7eeda47356c215ca1e376a, + limb2: 0x3af253fff38a70c6cc4d1411, + limb3: 0x1299230434206bc09efcceaf }, u384 { - limb0: 0x3c5994a59745b0b2b6fba59, - limb1: 0x5013bc337b4e08f56a419d8d, - limb2: 0xbfa43c220849ea910b69aff3, - limb3: 0x16d2012e8997ba70116eb21a + limb0: 0x61f4c44805d7d3b7caf6edff, + limb1: 0xdbd5d5febc6d2aac5dd9031f, + limb2: 0x8595a88f968e60daf1a58531, + limb3: 0x11d124c3c3f5dbb985836669 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] .span(), b_num: array![ u384 { - limb0: 0x76acbefc8f1e891fa5f202f9, - limb1: 0x9dbe79d02aef29cb12d60e5e, - limb2: 0xad08cb9ce1fa6e0249c24b93, - limb3: 0xe6a763bb01404dd5531af94 + limb0: 0xa0754178e92a2afc260d737f, + limb1: 0xc0d8a58f41aa18b96e79a477, + limb2: 0x26e703513b9ea99045a35d8e, + limb3: 0x8eddf4d1fa82ad4827fcf88 }, u384 { - limb0: 0x8a210ba360b1684a074781db, - limb1: 0x83ed4b6da06d0f834fd9286f, - limb2: 0x2e7331d9ea9be6ad27a76be8, - limb3: 0x16669101fe51dd7acc59922f + limb0: 0x31bbb8a34b66edbc1f33734d, + limb1: 0xd53502b87a4f30667b44f03c, + limb2: 0x4cb6c46991f4f71f92fb1f1, + limb3: 0xec5b1ee2d180308e8795fcc }, u384 { - limb0: 0x9d41356a09c34bbf1eb02c3, - limb1: 0x967bd483f43b601bf2f146fd, - limb2: 0x21090e11a34b8ab0801d9468, - limb3: 0x7e897d5615dc94cc0124653 + limb0: 0x364905ea257201ed7d6e2582, + limb1: 0x707dad2c663dca58ad926c3f, + limb2: 0x9f895e88e4f492f5dc692b82, + limb3: 0xfa0848e35d8e876ae142a } ] .span(), b_den: array![ u384 { - limb0: 0xab4c5d51ea26d212137ae781, - limb1: 0xda3c573c66b390116ccd0f96, - limb2: 0xd34080a7df780fab865dff5e, - limb3: 0x9976e001ccaebb5adb0fd8a + limb0: 0x835f58ca1529253e2ee79b6a, + limb1: 0xe79a114fdff91c0eeb20ddab, + limb2: 0x6531f651053b2c114a2a2ac6, + limb3: 0x1662683c5d81e1cde5bbeb50 }, u384 { - limb0: 0xfb1a652a37d46c2cadbfe963, - limb1: 0xabc78eb092541694d027637, - limb2: 0x34adea01f3c1c7b55317878f, - limb3: 0xd44cefb79df35f16467d148 + limb0: 0x252b1120a3614edf2bdc62a6, + limb1: 0xa0f5b2b90452be693a0c0c80, + limb2: 0x8fbf488f914aec61df8bef48, + limb3: 0x13426f3a9cd7a1b17fd64a39 }, u384 { limb0: 0x4, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x572817546909748484dea48b, - limb1: 0x905b4a775759218d62de43e5, - limb2: 0x45a30b5fd0fbd6cc1e78c487, - limb3: 0x8e61ffa9592b493fe332950 + limb0: 0x3981d6326249c94f8bb9bc30, + limb1: 0x6d7eeda47356c215ca1e376a, + limb2: 0x3af253fff38a70c6cc4d1411, + limb3: 0x1299230434206bc09efcceaf }, u384 { - limb0: 0x3c5994a59745b0b2b6fba59, - limb1: 0x5013bc337b4e08f56a419d8d, - limb2: 0xbfa43c220849ea910b69aff3, - limb3: 0x16d2012e8997ba70116eb21a + limb0: 0x61f4c44805d7d3b7caf6edff, + limb1: 0xdbd5d5febc6d2aac5dd9031f, + limb2: 0x8595a88f968e60daf1a58531, + limb3: 0x11d124c3c3f5dbb985836669 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] @@ -17559,25 +17566,12 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0x3fa8c601134fb6c86cd46526, - limb1: 0xc4df1a6f9b2748c6229020c0, - limb2: 0x1e3a10f42ce434631e01b9a, - limb3: 0x18bbd3a2c4ae72c09bb696a + limb0: 0xc83209474fedee8df86c6fa, + limb1: 0xb8e8035e10f02319805c74f5, + limb2: 0x7ef1246e88a5a6f6f176f475, + limb3: 0x44f8a40cf6f7c8bf6ad89da }, - g_rhs_sqrt: array![ - u384 { - limb0: 0xb2a1fded292db8deb9af175b, - limb1: 0x2d72cae87f37ac96396e952d, - limb2: 0xa1719ebbc1e3175e2293710b, - limb3: 0xa59dacaa856e97396c779e3 - }, - u384 { - limb0: 0x42c8c24196269dedb913c23c, - limb1: 0x414845906aea478c2a3feefc, - limb2: 0xc59260e1a84a245058f31a4a, - limb3: 0x5bf81b609a9141a4f539766 - } - ], + g_rhs_sqrt: array![], }; let res = msm_g1( points, scalars, scalars_digits_decompositions, msm_hint, derive_point_from_x_hint, 1 @@ -17585,16 +17579,16 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0x7b24d198163b17aecac64382, - limb1: 0x7cc8e9dc37a5d2a4eba69987, - limb2: 0x527dcab50a6d101d98108154, - limb3: 0x7f3881cdfbdb1775300ac59 + limb0: 0xa292b1199aca5f36c96056d7, + limb1: 0x979354e519d20a7e69dde76c, + limb2: 0xb862165df0b9a08e2f2d847a, + limb3: 0x15c431dd97b64b2acd31a985 }, y: u384 { - limb0: 0x3ea465c494406407dd3c3083, - limb1: 0xe083e4d758b48744c13c3091, - limb2: 0x282dc842fb1328d0752a871b, - limb3: 0x1077ae3d10fd3673e9d6b2bc + limb0: 0xc6fee65ff8a13b7d9bdfe2a5, + limb1: 0xfe20324a8003d54efb3e1915, + limb2: 0xae412448669e2654c7018c8b, + limb3: 0x8099a543a77ae5202e4098b } } ); @@ -17606,125 +17600,125 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0x14c0a89d5172e076461b9354, - limb1: 0x13c0f2f29feb856cdc4434f3, - limb2: 0x67beb01737e6a87a85c9a556, - limb3: 0xd97282591009ec87350ec56 + limb0: 0xe4f817e54aede0613c17035c, + limb1: 0xdff1f15010392a6da1f95a6, + limb2: 0xbed78d3d341e911d49f15454, + limb3: 0x18154782ce0913b21588066d }, y: u384 { - limb0: 0x2c06e2de67cd2010b466038f, - limb1: 0xf629d3c4e1fb7542a3d6e728, - limb2: 0x2aad940fe6f94dd6938c024a, - limb3: 0x108db4d84d11bd7aaea3a9f1 + limb0: 0x3d77d61326ef5a9a5a681757, + limb1: 0xd3070afd4f0e121de7fcee60, + limb2: 0xdf9ef4088763fe611fb85858, + limb3: 0x11a612bdd0bc09562856a70 } }, G1Point { x: u384 { - limb0: 0xb5348f536e5496dbb8c42ec4, - limb1: 0x762026037d78663364cb841e, - limb2: 0x628e7e4cbf4dd663f4bcce48, - limb3: 0x19076d12ff7dc5f47e1f7031 + limb0: 0xde4f62a6588c9401ffefbd3, + limb1: 0x9bb5f797ac6d3395b71420b5, + limb2: 0xdc39e973aaf31de52219df08, + limb3: 0x105dcc4dce3960447d21d3c1 }, y: u384 { - limb0: 0xb99424443b65c8db0b79e9da, - limb1: 0xb8c12bee454fc0957ab35789, - limb2: 0x404f7f7dc1f00cfd6453ad01, - limb3: 0x14ec11cddb07877e873cfea4 + limb0: 0xaefd0d854043fd325dd3c34f, + limb1: 0x9b63c98d9a7845c52e1e2b0f, + limb2: 0x9db0be660d847ccc58358f3f, + limb3: 0x17cb6c41f0c4e1a7394ab62a } }, G1Point { x: u384 { - limb0: 0x8a2b0c13d9184fc4a4dfb4a, - limb1: 0x28c3387d43d4c5c9e9d16d6a, - limb2: 0xb0389799a951e15754d4e104, - limb3: 0x13a104caad7aac8410f8ca47 + limb0: 0xcf86158ab69213388e721bb7, + limb1: 0x5f7812269d790797cad9aa15, + limb2: 0xb1c3622a0177001d9ed8e25f, + limb3: 0x115cf429f459884785c6ba46 }, y: u384 { - limb0: 0x65a371056ae02ac93efa8232, - limb1: 0x23f32d76a6872d9d8e2d0c77, - limb2: 0xfd744830da9386b1c36c62c4, - limb3: 0x7fee04e7ab53b71799f4775 + limb0: 0x1e81341e2f3f988ff115dda3, + limb1: 0xad22946489db6ee4954fa5e1, + limb2: 0x83bed94412e19d92b73cc763, + limb3: 0x2074c7bceff87d0d41edba1 } }, G1Point { x: u384 { - limb0: 0x2ee32b1a40af5cc0d8692125, - limb1: 0xa8be0a6c91b7a9151b8fd767, - limb2: 0x35b593f93ac4f5510c62dd61, - limb3: 0x110c0219063af8a746cf16a6 + limb0: 0xe2955c55da59eba4b7b57d3d, + limb1: 0x1e6629b0431bce67cf28c22, + limb2: 0x1c35b7efd5b67f87221b8bfc, + limb3: 0x3e53df9e3488a9e42acd87e }, y: u384 { - limb0: 0x302ada0608d6c61843e45e6, - limb1: 0x8de353409ccbcd3da90022d2, - limb2: 0xb9741d38679598f16a5a01fd, - limb3: 0xf71fcc0ec9bb0c21ff37d6d + limb0: 0x2e089afa726154d40dd12102, + limb1: 0x5391613ecf49db2bcf1cad86, + limb2: 0x84a2abb2de6b3a6e09026a50, + limb3: 0x19557a3a3c1d62a205d5dc87 } }, G1Point { x: u384 { - limb0: 0x605a1d3a0d0f480c7f89fb07, - limb1: 0x9ea52d9f0898c37b7d97fc92, - limb2: 0xedc1eb22366fac596bdb3a23, - limb3: 0x19283ed2530909742da5639b + limb0: 0x490bf40774926e8b279947c, + limb1: 0xeabab6aef9e9d2a4f64f4e7d, + limb2: 0x3e309fe1b1c8247abab20d7e, + limb3: 0x79c527862917f69ac58fcc4 }, y: u384 { - limb0: 0xdc9d261db944065e25f08021, - limb1: 0x269424dff2fd2ef5c5935102, - limb2: 0x7dd5d689605c3753d1a531af, - limb3: 0x3d015a00c10911775a3dd80 + limb0: 0xacb18f2da2b425c2ff50dafd, + limb1: 0x7623850d87e279a8a30f31ff, + limb2: 0x777564c7291d95fa80203ade, + limb3: 0x1764ce0e7fb626109b63789b } }, G1Point { x: u384 { - limb0: 0xf104dfcdfea0d13520edc44c, - limb1: 0x8d36597f57b5804cd6c029dc, - limb2: 0x98fc635b6fbadcfca1656fb0, - limb3: 0x18709be7a05970a122c6ddf3 + limb0: 0x42f2f3f4f6b9d2c2b73a361f, + limb1: 0xcd78c070c184c38b1e5716aa, + limb2: 0x72cbc24cd90da89e0e3cefe4, + limb3: 0x19485e1c46d0dce75f8b192b }, y: u384 { - limb0: 0xee6dc0efc680537065a22dcb, - limb1: 0xbd61c700ad33d653ddf2ff2a, - limb2: 0xcc0bbcb3bb6ce5774e3da6e2, - limb3: 0x7f50619fb4d7487e9475be4 + limb0: 0xb56b3539074b3c47b3f504d9, + limb1: 0x2c229530bddedd8851b03dcc, + limb2: 0xc93eef8474c4e18d6378e7f0, + limb3: 0x173d36f17a3c9ae77a2acc25 } }, G1Point { x: u384 { - limb0: 0x35c042510be1bd1bd1fc425b, - limb1: 0x4ea208bb977bc09e611879a7, - limb2: 0xee2dc494649b39866ba2422f, - limb3: 0xe22746643749a8b5c2b9a94 + limb0: 0x5fbf29cf20556a11621a6639, + limb1: 0xdfda5b7dbf0b226822094787, + limb2: 0x4a3b059e521b4b0445df96d5, + limb3: 0x333988c2c09f5af061cdfb }, y: u384 { - limb0: 0x273bdeeef22f3678c1b7985e, - limb1: 0xc99370ca77e1c0bff667d8e9, - limb2: 0x99c6d5c433cd669f784949d0, - limb3: 0xac032bb9982f9c207bfdf48 + limb0: 0x13d3570be6d27d1d588b22fc, + limb1: 0x20c763e58d4df3e4990cdae9, + limb2: 0x2c3301367f400c31f4bded26, + limb3: 0x16a6c25d133fba74b4c55972 } }, ] .span(); let scalars = array![ u256 { - low: 0x9d2fc12147d55b18a9daa9d28de6aacc, high: 0x645645bd34f5cc02945c750306aeab2d + low: 0xd3fbf47a7e5b1e7f9ca5499d004ae545, high: 0x5d79c4bd3e70f16a55485822de1b372a }, u256 { - low: 0xffa5ec97b532339bca8405fbb47e5402, high: 0x2007d01fcebf3c9e58af632a762e817f + low: 0x101fbcccded733e8b421eaeb534097ca, high: 0x1c60cb179148624feac1c14f30e9c5cc }, u256 { - low: 0xe8716b5c1dde464e9e8108cfea0c4d5c, high: 0xa82deda1654623273349e6e2e2be0ec + low: 0x247a8333f7b0b7d2cda8056c3d15eef7, high: 0xbacf6e172ae22448b0163c1cd9d2b7d }, u256 { - low: 0x7dc42bf3f8bbf88c715295f1479aad5c, high: 0x3ee452c6253b151bbb522915e70e8b8a + low: 0xe005b86051ef1922fe43c49e149818d1, high: 0x3ea0f301eece328bff7b118e820865d6 }, u256 { - low: 0x237c6f4adbf7ff2a78ef3666e414bb0d, high: 0x1e668d18ed4f9d10cd773d0e53a36ea7 + low: 0x4a84eb038d1fd9b74d2b9deb1beb3711, high: 0x2a97919d8c25166a1ff39849b4e1357d }, u256 { - low: 0xfe8e491f0667845197feab553c6444a1, high: 0x3580d29429a0b62efd55bcbb3bca7ce6 + low: 0x3405095c8a5006c1ec188efbd080e66e, high: 0x460ba2d39a6a5f92cca74147f6be1f72 }, u256 { - low: 0xbe128ece381d9ecf1bd93ab3ad3927c7, high: 0x5501a71b468a4bbeea4427da58990f23 + low: 0x1775336d71eacd0549a3e80e966e1277, high: 0x2894fdbe6288e1a5cc45782198a6416d }, ] .span(); @@ -17732,139 +17726,141 @@ mod msm_tests { array![ ( array![ - 0x0, - 0x0, 0x1, + -0x1, + -0x1, + -0x1, + -0x1, 0x0, 0x0, - 0x1, - 0x0, -0x1, - 0x1, 0x0, 0x1, 0x1, - 0x0, + 0x1, -0x1, + 0x1, + 0x1, + 0x1, 0x0, + 0x1, -0x1, - -0x1, + 0x1, -0x1, -0x1, 0x0, -0x1, + 0x1, 0x0, + -0x1, 0x1, 0x1, 0x1, -0x1, + 0x0, + -0x1, + -0x1, 0x1, 0x0, + 0x1, + -0x1, + -0x1, 0x0, -0x1, - 0x1, 0x0, 0x0, 0x0, + -0x1, 0x1, -0x1, 0x1, 0x0, 0x1, - 0x1, - -0x1, 0x0, - 0x1, - -0x1, - -0x1, - 0x1, 0x0, 0x1, + 0x0, 0x1, 0x0, 0x0, + 0x0, 0x1, - -0x1, - -0x1, - 0x1, - -0x1, - -0x1, 0x1, - -0x1, 0x0, -0x1, - 0x1, -0x1, - 0x1, 0x0, 0x0, - 0x1, - 0x0, 0x0, + 0x1, -0x1, 0x0, + 0x0, -0x1, 0x1, - -0x1, 0x1, - -0x1, - 0x0, 0x1, 0x1, -0x1, 0x1, + 0x0, + -0x1, + 0x0, + -0x1, + -0x1, ] .span(), array![ -0x1, - 0x1, - 0x1, 0x0, 0x1, - 0x1, -0x1, 0x1, -0x1, - 0x0, - -0x1, + 0x1, 0x0, 0x1, -0x1, - -0x1, - -0x1, 0x0, 0x1, 0x1, 0x1, - -0x1, - 0x0, - 0x0, - 0x0, - 0x0, - -0x1, - -0x1, + 0x1, -0x1, 0x1, 0x1, + 0x0, + -0x1, + 0x0, 0x1, + -0x1, 0x1, 0x1, - -0x1, 0x0, 0x0, -0x1, + 0x1, 0x0, + 0x1, -0x1, + 0x0, 0x1, -0x1, + -0x1, + -0x1, + 0x0, 0x1, + 0x0, 0x1, 0x1, -0x1, + 0x1, -0x1, + 0x1, + 0x1, + 0x0, + 0x0, 0x0, - -0x1, - -0x1, 0x1, 0x0, 0x1, @@ -17872,28 +17868,27 @@ mod msm_tests { 0x1, -0x1, 0x1, - -0x1, + 0x0, + 0x0, -0x1, 0x1, -0x1, - 0x0, - 0x1, -0x1, 0x0, + 0x1, 0x0, - 0x0, + 0x1, 0x1, -0x1, - 0x0, - 0x0, 0x1, 0x0, + -0x1, 0x1, 0x1, 0x1, 0x0, + -0x1, 0x1, - 0x0, -0x1, 0x0, 0x1, @@ -17902,17 +17897,13 @@ mod msm_tests { ), ( array![ - 0x0, - 0x0, + 0x1, 0x0, -0x1, - 0x0, - 0x1, -0x1, - 0x1, -0x1, - 0x0, -0x1, + 0x1, -0x1, -0x1, -0x1, @@ -17920,138 +17911,140 @@ mod msm_tests { 0x1, 0x0, -0x1, + 0x0, 0x1, -0x1, - 0x1, - -0x1, - -0x1, - 0x1, 0x0, 0x1, - -0x1, 0x0, 0x0, + 0x1, -0x1, + 0x1, 0x0, 0x1, -0x1, -0x1, - 0x1, + -0x1, -0x1, 0x0, 0x1, + -0x1, 0x0, -0x1, - 0x1, -0x1, -0x1, - 0x1, - 0x1, - 0x0, - 0x0, -0x1, - 0x0, + -0x1, 0x1, - 0x0, -0x1, 0x0, - -0x1, 0x1, 0x1, + -0x1, 0x0, 0x0, + -0x1, 0x1, + -0x1, 0x1, + -0x1, + -0x1, 0x1, + -0x1, + -0x1, 0x0, -0x1, + -0x1, 0x0, -0x1, + 0x1, 0x0, + 0x1, 0x0, 0x1, -0x1, 0x1, -0x1, - 0x0, - 0x0, - 0x0, -0x1, + 0x0, -0x1, 0x0, 0x1, + 0x1, + 0x1, 0x0, -0x1, - -0x1, - -0x1, + 0x1, ] .span(), array![ 0x1, 0x0, - 0x0, - 0x0, 0x1, -0x1, - -0x1, - 0x0, - 0x1, 0x1, - -0x1, 0x0, -0x1, - 0x1, -0x1, -0x1, - 0x1, - 0x1, - 0x1, - 0x0, + -0x1, + -0x1, 0x0, + 0x1, + -0x1, 0x0, 0x1, + -0x1, 0x0, -0x1, - 0x1, - 0x1, - 0x1, 0x0, 0x1, + 0x1, 0x0, -0x1, - 0x0, -0x1, + 0x0, -0x1, 0x1, - 0x1, - 0x1, -0x1, + 0x0, + 0x0, 0x1, -0x1, -0x1, + 0x1, 0x0, - 0x0, + 0x1, + 0x1, + 0x1, 0x1, 0x0, 0x1, - -0x1, 0x1, - -0x1, + 0x0, 0x1, 0x1, 0x0, + -0x1, + -0x1, 0x0, -0x1, + -0x1, + 0x0, 0x1, 0x1, + 0x0, + 0x0, -0x1, -0x1, 0x0, - 0x0, 0x1, 0x1, 0x0, 0x0, + -0x1, + 0x1, 0x0, -0x1, 0x0, @@ -18061,54 +18054,40 @@ mod msm_tests { 0x0, 0x0, 0x0, + 0x1, 0x0, -0x1, -0x1, - 0x1, - 0x0, -0x1, ] .span() ), ( array![ - 0x0, 0x1, - -0x1, - -0x1, - 0x0, - -0x1, 0x1, -0x1, - 0x0, -0x1, - 0x1, 0x0, 0x0, + 0x1, 0x0, -0x1, - 0x1, -0x1, 0x1, - 0x0, - 0x0, - -0x1, + 0x1, 0x0, 0x1, 0x1, -0x1, - -0x1, + 0x1, 0x0, -0x1, - 0x1, - 0x1, - 0x1, + -0x1, -0x1, 0x1, - 0x1, - 0x1, - 0x0, -0x1, + 0x1, -0x1, 0x1, 0x0, @@ -18119,72 +18098,66 @@ mod msm_tests { 0x0, 0x1, -0x1, - -0x1, - -0x1, + 0x0, 0x0, -0x1, + 0x1, 0x0, 0x1, 0x1, 0x1, -0x1, + 0x0, 0x1, 0x1, - 0x1, - 0x0, -0x1, -0x1, - 0x1, - 0x1, - 0x1, + -0x1, + -0x1, + -0x1, + -0x1, 0x0, - 0x1, 0x0, + -0x1, 0x1, - 0x0, - 0x0, + -0x1, 0x1, -0x1, 0x0, - 0x0, -0x1, + 0x0, 0x1, 0x1, 0x1, - 0x0, -0x1, -0x1, - ] - .span(), - array![ 0x0, -0x1, - 0x1, 0x0, 0x0, -0x1, 0x1, 0x0, - 0x1, + -0x1, 0x1, 0x0, - 0x1, 0x0, - 0x1, - -0x1, - 0x1, - 0x1, - -0x1, - 0x1, + 0x0, -0x1, - 0x1, + ] + .span(), + array![ -0x1, 0x1, 0x1, 0x1, 0x0, + -0x1, 0x1, + 0x0, + -0x1, -0x1, + 0x1, 0x0, 0x1, 0x0, @@ -18195,45 +18168,62 @@ mod msm_tests { 0x0, -0x1, 0x0, + 0x1, + -0x1, + -0x1, + 0x0, -0x1, 0x1, + 0x1, + -0x1, 0x0, 0x0, -0x1, - 0x1, + -0x1, 0x0, 0x1, + 0x0, -0x1, 0x0, 0x1, -0x1, -0x1, 0x1, - 0x0, 0x1, -0x1, -0x1, -0x1, + 0x1, -0x1, 0x0, -0x1, 0x1, -0x1, 0x1, - -0x1, - -0x1, + 0x0, + 0x0, 0x1, 0x1, 0x0, - 0x0, 0x1, -0x1, + 0x0, + 0x1, + 0x0, + 0x1, -0x1, - -0x1, + 0x0, + 0x1, 0x0, 0x0, + 0x0, + -0x1, + 0x0, + -0x1, 0x1, -0x1, + 0x1, + 0x0, 0x0, 0x1, ] @@ -18245,161 +18235,162 @@ mod msm_tests { 0x0, 0x1, -0x1, - -0x1, + 0x0, 0x1, -0x1, - 0x1, 0x0, - 0x1, 0x0, - 0x1, - -0x1, - 0x1, - 0x1, 0x0, 0x1, + 0x0, -0x1, - 0x1, -0x1, 0x1, 0x1, + 0x0, 0x1, - -0x1, - -0x1, 0x1, 0x0, - 0x0, 0x1, -0x1, - 0x1, - 0x1, - 0x0, -0x1, 0x0, - -0x1, + 0x0, + 0x0, 0x0, 0x0, -0x1, -0x1, - 0x1, - -0x1, -0x1, 0x0, + 0x0, + 0x0, -0x1, 0x0, 0x1, 0x0, + 0x0, + 0x0, + -0x1, 0x1, 0x1, - 0x1, - -0x1, + 0x0, 0x1, 0x1, -0x1, 0x0, 0x1, 0x0, - 0x0, + -0x1, 0x0, 0x1, -0x1, - 0x0, -0x1, + 0x0, + 0x0, + 0x0, + 0x1, 0x1, -0x1, + 0x0, 0x1, 0x1, - -0x1, 0x1, + 0x0, + 0x0, + 0x0, -0x1, 0x1, -0x1, - 0x1, + 0x0, 0x0, 0x1, -0x1, -0x1, 0x1, 0x0, - 0x1, + 0x0, + 0x0, + -0x1, + -0x1, ] .span(), array![ 0x1, - 0x0, -0x1, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, -0x1, -0x1, + 0x0, -0x1, 0x1, - 0x1, - -0x1, - -0x1, 0x0, - -0x1, - -0x1, + 0x0, + 0x0, 0x1, + 0x0, 0x1, 0x1, 0x0, 0x1, 0x0, - -0x1, - -0x1, - 0x0, - -0x1, 0x1, -0x1, + -0x1, 0x1, 0x0, - 0x0, 0x1, - 0x0, -0x1, -0x1, - 0x0, - 0x0, - 0x0, -0x1, - 0x0, - 0x0, - 0x0, -0x1, -0x1, + 0x0, + 0x1, + -0x1, 0x1, -0x1, 0x0, -0x1, - -0x1, 0x1, 0x1, -0x1, -0x1, 0x0, -0x1, + 0x0, + 0x0, 0x1, -0x1, + 0x1, + 0x0, 0x0, -0x1, + 0x0, 0x1, - -0x1, 0x1, 0x1, - 0x0, -0x1, 0x1, 0x0, - 0x0, + 0x1, 0x1, -0x1, -0x1, - -0x1, - 0x0, 0x1, 0x1, + -0x1, + 0x1, 0x0, -0x1, + -0x1, + -0x1, 0x1, + 0x0, 0x1, 0x1, 0x0, @@ -18411,424 +18402,422 @@ mod msm_tests { ), ( array![ - 0x0, - 0x1, - 0x1, - 0x1, - 0x0, -0x1, -0x1, - 0x1, 0x0, -0x1, + 0x0, -0x1, 0x1, 0x0, + 0x0, + -0x1, + 0x1, -0x1, + 0x1, + 0x1, + 0x1, 0x0, 0x0, -0x1, + 0x1, 0x0, + 0x1, + 0x1, 0x0, -0x1, + 0x1, 0x0, + -0x1, + -0x1, + 0x1, 0x0, 0x1, 0x1, 0x0, 0x0, - 0x0, + -0x1, 0x1, 0x0, - -0x1, + 0x0, -0x1, 0x0, 0x0, 0x0, - 0x1, + 0x0, + 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, - -0x1, - -0x1, - -0x1, - 0x0, - -0x1, 0x1, - -0x1, - -0x1, 0x1, 0x0, - 0x1, + -0x1, 0x0, 0x1, - -0x1, - -0x1, 0x0, 0x0, 0x0, - -0x1, 0x1, 0x0, - 0x0, - -0x1, -0x1, 0x0, 0x1, - 0x0, 0x1, -0x1, + -0x1, 0x0, + -0x1, + -0x1, + -0x1, 0x1, 0x1, - 0x0, - 0x1, -0x1, + 0x1, 0x0, -0x1, 0x0, 0x0, - -0x1, + 0x0, + 0x1, + 0x1, ] .span(), array![ - 0x1, - 0x1, - 0x1, - 0x1, - 0x1, - 0x1, 0x1, 0x0, - 0x0, -0x1, 0x0, 0x0, - 0x0, 0x1, - 0x1, - 0x0, 0x0, 0x1, - -0x1, - -0x1, + 0x0, -0x1, -0x1, 0x1, 0x1, + 0x1, 0x0, 0x0, - 0x0, - 0x0, + 0x1, + 0x1, -0x1, 0x0, 0x1, 0x0, 0x0, - 0x1, + -0x1, 0x1, 0x0, - 0x0, + -0x1, 0x1, + -0x1, 0x0, - 0x1, + -0x1, 0x1, 0x1, 0x0, 0x1, -0x1, - 0x0, -0x1, -0x1, + 0x0, + 0x0, -0x1, 0x1, + 0x0, -0x1, 0x0, 0x1, - -0x1, + 0x0, + 0x0, 0x0, 0x1, 0x1, + -0x1, + -0x1, + -0x1, + -0x1, + 0x0, 0x0, -0x1, - 0x1, - 0x1, + -0x1, + -0x1, + -0x1, 0x1, 0x0, -0x1, - 0x0, -0x1, 0x1, - 0x0, + -0x1, + 0x1, 0x0, -0x1, 0x0, - 0x1, 0x0, -0x1, - 0x1, + -0x1, + 0x0, 0x0, 0x1, -0x1, - -0x1, + 0x0, -0x1, ] .span() ), ( array![ - 0x0, + -0x1, + -0x1, + -0x1, + -0x1, -0x1, 0x1, - 0x0, - 0x0, - 0x0, - 0x0, - 0x1, - 0x1, - 0x1, - 0x1, + -0x1, + -0x1, + -0x1, + -0x1, + -0x1, 0x1, 0x1, - 0x0, -0x1, 0x0, + -0x1, 0x1, -0x1, - 0x0, 0x1, + 0x0, 0x1, + 0x0, 0x1, -0x1, -0x1, - 0x1, 0x0, -0x1, - -0x1, 0x0, -0x1, - -0x1, - 0x0, 0x0, -0x1, 0x0, + 0x1, -0x1, + 0x1, + 0x1, -0x1, -0x1, + 0x1, + 0x0, 0x0, 0x0, 0x0, - -0x1, - 0x1, - -0x1, - 0x1, 0x1, 0x1, 0x0, 0x1, - 0x1, 0x0, - -0x1, - -0x1, 0x1, 0x0, 0x1, 0x0, - -0x1, - -0x1, - -0x1, 0x0, 0x0, + 0x1, + 0x1, + 0x1, -0x1, -0x1, - 0x1, -0x1, 0x1, 0x0, - 0x1, - -0x1, 0x0, + 0x0, + 0x1, -0x1, 0x1, 0x1, + -0x1, 0x1, + 0x0, -0x1, + 0x0, + 0x0, -0x1, - 0x1, 0x0, -0x1, -0x1, + 0x1, -0x1, ] .span(), array![ + 0x0, 0x1, 0x1, -0x1, - -0x1, 0x1, 0x0, - -0x1, - -0x1, 0x1, 0x0, 0x0, -0x1, 0x0, - 0x0, - 0x1, 0x1, - 0x1, - 0x0, 0x0, - 0x0, - 0x1, - 0x1, + -0x1, -0x1, -0x1, 0x1, -0x1, 0x0, - 0x0, - 0x0, - 0x0, - -0x1, 0x1, -0x1, - 0x1, - 0x1, - 0x0, - 0x0, 0x0, 0x1, + -0x1, + -0x1, + -0x1, 0x0, + 0x1, 0x0, 0x0, + 0x1, 0x0, 0x0, + 0x1, -0x1, - 0x0, + 0x1, -0x1, + 0x0, + 0x1, 0x1, -0x1, + 0x0, 0x1, 0x0, + -0x1, + 0x1, 0x1, -0x1, -0x1, - 0x0, - 0x0, + -0x1, 0x1, 0x1, - 0x0, - 0x0, 0x1, + 0x0, + -0x1, -0x1, 0x1, + -0x1, 0x0, 0x1, -0x1, - -0x1, 0x0, 0x0, -0x1, 0x1, 0x1, 0x1, + -0x1, + -0x1, 0x1, + -0x1, + 0x0, + -0x1, + -0x1, 0x0, 0x0, 0x0, - -0x1, 0x1, - -0x1, + 0x0, + 0x1, + 0x1, ] .span() ), ( array![ -0x1, - 0x0, 0x1, 0x1, 0x0, - 0x0, - -0x1, - -0x1, - -0x1, - -0x1, - -0x1, - -0x1, - -0x1, - -0x1, 0x1, 0x0, 0x1, 0x1, - -0x1, - 0x0, 0x1, 0x0, + 0x0, -0x1, - 0x1, - 0x1, -0x1, 0x0, 0x1, - -0x1, 0x0, - -0x1, - -0x1, 0x1, 0x0, + 0x1, + 0x1, 0x0, -0x1, + -0x1, 0x1, 0x0, - 0x1, + -0x1, 0x0, 0x0, + 0x1, + 0x1, 0x0, 0x0, 0x0, -0x1, + -0x1, 0x1, -0x1, - 0x0, -0x1, 0x1, - 0x0, - 0x0, + 0x1, 0x1, -0x1, + 0x1, + 0x0, -0x1, + 0x1, + 0x0, + 0x0, -0x1, + 0x1, -0x1, + 0x1, 0x0, 0x0, + -0x1, 0x0, 0x1, -0x1, - -0x1, - -0x1, 0x0, -0x1, + 0x1, + 0x0, -0x1, -0x1, - 0x1, -0x1, 0x0, + 0x0, + -0x1, + -0x1, 0x1, 0x1, 0x0, 0x1, - -0x1, + 0x1, + 0x1, 0x0, -0x1, 0x0, - 0x1, -0x1, -0x1, ] @@ -18839,17 +18828,10 @@ mod msm_tests { -0x1, 0x0, 0x0, - -0x1, - 0x1, - 0x1, - -0x1, - 0x0, - -0x1, - 0x0, 0x0, + 0x1, 0x0, -0x1, - -0x1, 0x0, -0x1, 0x1, @@ -18857,64 +18839,70 @@ mod msm_tests { 0x1, 0x1, 0x0, - -0x1, - 0x1, - 0x0, - 0x1, - 0x0, 0x0, + -0x1, 0x0, 0x0, + 0x1, + -0x1, + -0x1, + -0x1, -0x1, -0x1, 0x1, 0x0, - -0x1, 0x0, 0x0, 0x0, 0x0, -0x1, 0x1, - -0x1, - 0x0, 0x0, + 0x1, + 0x1, + -0x1, + 0x1, + 0x1, + -0x1, -0x1, -0x1, -0x1, -0x1, 0x0, - 0x1, + -0x1, + 0x0, -0x1, -0x1, - 0x1, 0x0, 0x0, 0x1, -0x1, 0x0, -0x1, - -0x1, + 0x0, + 0x1, + 0x1, + 0x1, + 0x0, 0x1, 0x0, 0x0, - -0x1, + 0x1, + 0x0, 0x0, - -0x1, 0x0, -0x1, + 0x0, + 0x1, -0x1, + 0x0, + 0x0, -0x1, 0x1, 0x0, -0x1, - -0x1, 0x0, -0x1, - 0x0, - 0x1, - 0x1, - 0x1, ] .span() ), @@ -18924,93 +18912,93 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0xc84bb581f5eade01ac1aac22, - limb1: 0xfea978b13529b9c6574d282c, - limb2: 0x7a2f46b67e5cb6dd743316c5, - limb3: 0x14ea772cb84cfc46052c539 + limb0: 0x6a6487ce0c84fd98dcb0733, + limb1: 0x1c7ddf90e8029a8d905702a8, + limb2: 0x7c3a1a49e4d4addb90bd66ce, + limb3: 0x4b2b4db8306e50bcf0c356e }, y: u384 { - limb0: 0x42380e95f1b58a65137ad680, - limb1: 0xbdbbf180a6c50f09d64074f0, - limb2: 0xae4bcf90a290e437e81abeda, - limb3: 0xf86b11452acd7c37432f23a + limb0: 0x1918ff318f988fc4c5f40c2e, + limb1: 0x8a497eb1608cd1b575e7a2b3, + limb2: 0x4205a683977e8510b1082024, + limb3: 0x739a95bec6a59c1164876cb } }, Q_high: G1Point { x: u384 { - limb0: 0x1dd3496be58f9e882d01c19d, - limb1: 0x251dbc0622a8d107246d79b6, - limb2: 0xceec9f98b1fdbba796d9290a, - limb3: 0x92ba979ce15fc41636050e0 + limb0: 0x9771fa4f5cd59346bbc8c814, + limb1: 0xbcf659baa3f134d8cf461d01, + limb2: 0x666a25216015530e7abb77b8, + limb3: 0x161a7af108b476673c91aaec }, y: u384 { - limb0: 0x3d294637a4fb2d4877d92edd, - limb1: 0xa953ca0180544248091b0099, - limb2: 0x43afdc9475caf7fb7aca28f, - limb3: 0x3e11cd75682680100ce6ecc + limb0: 0xebefb510eb3c2e76ebe0f92f, + limb1: 0x269f006979caac070b09623a, + limb2: 0xf0e7a3adf398bcaf07f185cd, + limb3: 0x10ef546da25aa3f3f4995d6d } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0x7deb940452bddfbc01e3b802, - limb1: 0x7ce245524cf1086c0be0f1ea, - limb2: 0x275d306fb5e480573b1c6de7, - limb3: 0x100e058e2ff2b38957e03645 + limb0: 0xb7e6b3631b8f6095a4d64c4a, + limb1: 0x1dec69a6cd9758ce1ca3678c, + limb2: 0xec33d56a14c99420b3e623d2, + limb3: 0x40f221ad949f416adb23bd0 }, y: u384 { - limb0: 0xcee699ae154b3ce1b5062e97, - limb1: 0x321e163f0ae22663204896da, - limb2: 0xd40df5afd533b9259464602e, - limb3: 0x1da40b487a53f63f469966f + limb0: 0x41538f8906db86d18cd63371, + limb1: 0xab6e815377264628cf82ae29, + limb2: 0x71be26dc762f01b970d54cf3, + limb3: 0x8cda91d4c5b147f528aea8e } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0xce3c538223f6aa969f702de2, - limb1: 0xf4ff6020a022217df06b1a61, - limb2: 0x7a3b937419c509ced2d984c0, - limb3: 0x2e28cdae64804a263db0b19 + limb0: 0x86bdd2bae30cb2367718190f, + limb1: 0x65493493c3f6ee04b19df0f7, + limb2: 0xe682562a70869ac5b60b9691, + limb3: 0x56d391d59a880f03d5c11ac }, u384 { - limb0: 0xfbf409b7cae3d833fb428a75, - limb1: 0xe8fdce783ee14d3fa877a639, - limb2: 0x7d06394cd041975ff9702e11, - limb3: 0xb5123326f43a15bdbd3776a + limb0: 0xf03901afb20dcd48c17c8190, + limb1: 0xf802fac741765eceb97952d3, + limb2: 0xb015de1d1fb2e257804272ab, + limb3: 0x96a92d5fd95ef6716162fea }, u384 { - limb0: 0x7bd17af451d53c38935ab842, - limb1: 0x9075bdfc6ccadf81c632661e, - limb2: 0xf0503c649c7b5c5072c8f26c, - limb3: 0xa2a091741477c0959456304 + limb0: 0x72115b3e2bb1c01f7ede9ed3, + limb1: 0x7db14f372f32496f7085b817, + limb2: 0xb95063e8113064b5927d12e8, + limb3: 0x1124e967ab258220958ce2e }, u384 { - limb0: 0xf110445b8dee06a561d1d5ae, - limb1: 0x19e9a1752476da9ed95890f0, - limb2: 0xd3bcf69fda36084a4c25be5a, - limb3: 0x99443be6d493f8a05adcc90 + limb0: 0x12704d30a491973ccb7b3090, + limb1: 0x2eb09be653a8da038fe12986, + limb2: 0x7319785c70e49b605fe4633d, + limb3: 0xe4655c47a49372db675b594 }, u384 { - limb0: 0xab7af28b06cabb8e73d24e17, - limb1: 0x44ef354293b2ec1e78c6529b, - limb2: 0x4c60b55915b3410b09277f6b, - limb3: 0x26aa5e68b070f71e3a17101 + limb0: 0xf475afeefcba136a074d6f15, + limb1: 0xc5caa0e0149daacc2ab771ca, + limb2: 0xbcb27e1350762189cb865a51, + limb3: 0x965476ef445826845567134 }, u384 { - limb0: 0x914d9c1878cccecea2042d49, - limb1: 0x648bf24c26e844beda87f683, - limb2: 0x41319883cb4b1525fda00be6, - limb3: 0x9dc30ff77a76b411f12dedd + limb0: 0xf61bd00a9ce2377686d73082, + limb1: 0x2388a8d1eacc11719a17c6c3, + limb2: 0x3b7e2ea10401cdb6512a93df, + limb3: 0xeb535e906b7e285bbc9ae87 }, u384 { - limb0: 0x244864b18ba343d5b8f8ded1, - limb1: 0x18c52a0d9a1339189d184627, - limb2: 0x746c8136777b9a9a9d61b0e0, - limb3: 0xf46c414a92e2aa4a10fe0a + limb0: 0xf03142359c122083d7151f54, + limb1: 0x9cb82e3084df1ba8a7c62853, + limb2: 0x9585162c72966c03b9a4517, + limb3: 0x1749fdf0f3b08d87c63bf74a }, u384 { - limb0: 0xb5fb92599b201770947a9732, - limb1: 0x6730d2a0f6b0f6227c443542, + limb0: 0xa896ef4670636d8a0b85b947, + limb1: 0x6730d2a0f6b0f6234449a654, limb2: 0x434bacd764774b84f38512bf, limb3: 0x1a0111ea397fe69a4b1ba7b6 } @@ -19018,179 +19006,179 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0xe670aa2ee1c1f022bdd4b2d1, - limb1: 0xebf0a874229e3efac2f42a78, - limb2: 0xdfb536264480f2d4c9f54a72, - limb3: 0x54719532a2e83dd93334d09 + limb0: 0xdf0e6eeb227576bf2d11ecb3, + limb1: 0x9c3ae7ee44b5fb6be91a3d47, + limb2: 0x4e1650b795dad027facb8f14, + limb3: 0x8b053a375dda620854c75ab }, u384 { - limb0: 0x66875f1efc7b657a3738b49f, - limb1: 0xf0a7db582bebd2f2b81f612f, - limb2: 0x2b38299897fd2e212902d25a, - limb3: 0x18f17115cd8fba69e94fe797 + limb0: 0x8e1537d79f5997f50fe3205d, + limb1: 0xda0d83bc317d1cd70710a8c2, + limb2: 0xcc8f338d142ccfbeaa391b3c, + limb3: 0x622f82eb65e4f90fe34d4ca }, u384 { - limb0: 0x10f066b5a764eff995f224da, - limb1: 0x3375686607c3a7881d57d57d, - limb2: 0x7c395523a9f30846ed5ab677, - limb3: 0x124c82350a61339cc6e231eb + limb0: 0x39773dce7676ab73f4d023bf, + limb1: 0x918590ab3a1daa6a447550a2, + limb2: 0xedf5162e4275acd383c27b5e, + limb3: 0x17b20ecc25992dc8169ce584 }, u384 { - limb0: 0xf12bdaa8f69a8ae93135d093, - limb1: 0x85228090606913dfefbe67a, - limb2: 0xbb84073d1a34d246a55a2459, - limb3: 0xd9b22dc0dfce50b53bb3c0 + limb0: 0xeb83e2e66a3fe7ded862213a, + limb1: 0x4c1213dafba361cbe56fc161, + limb2: 0xb7145d558f0ca9334939154b, + limb3: 0x4170b350af8acb811f03f54 }, u384 { - limb0: 0x7ea28ba2d006ead3924086c2, - limb1: 0x128c4f25b6af90e85e507cb3, - limb2: 0x8ba133a6c9cb7c8ea419f1b3, - limb3: 0x118a55c086754af60425a23b + limb0: 0x525df0381f47a2fa7864609e, + limb1: 0x9640868fcd50297c04ee35d2, + limb2: 0x9de6c05932f8a51a7b9a9e68, + limb3: 0x106a19b679282b2e215eccd1 }, u384 { - limb0: 0xcc3e8830da8338f502bbe57b, - limb1: 0x52114cac4de7fed0f079d62b, - limb2: 0x377e5b52b4ef68a8e835fd42, - limb3: 0x46dd5dc7ae39560ee75e40a + limb0: 0xde1071fab34a6b3a7265a9aa, + limb1: 0x1c412465b945d9e11054f924, + limb2: 0xf0698e07dc3b86381eaef474, + limb3: 0x17307832f60b97223fbbcef6 }, u384 { - limb0: 0x61fd6459ff8f6890f31ba51b, - limb1: 0x87c9dfb6d40d38b95fcfe7ab, - limb2: 0x7de56a552264b9c6f2ecf118, - limb3: 0x250eef1acd0aaa51ca42bd5 + limb0: 0xecbb6e9a70f18b7d3a24d16, + limb1: 0x95259160af80e29bfdbafed6, + limb2: 0x921a94605ea0b933df667662, + limb3: 0x944d610a53c1a0e77a1c4c4 }, u384 { - limb0: 0xd711f7571074f291bfd873ab, - limb1: 0x969b8b5aa841ac2c64d939d1, - limb2: 0xf46f594cf65df5dcec4a3bae, - limb3: 0xfb0d8ce126f79506c830f71 + limb0: 0x726e5a8d3778a3eb0427da82, + limb1: 0xdd240ce7292bfaafdaa9640f, + limb2: 0x2cb2a07c19d839740188ae3d, + limb3: 0x48462bb82f132d505ff188b }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] .span(), b_num: array![ u384 { - limb0: 0xf34c3501765b612f0e189b1a, - limb1: 0xf460c589598591015b86fdd9, - limb2: 0xd0262d192bd5bcb2c85ecca, - limb3: 0x11efee7a640cfc53ebc93eaf + limb0: 0xd21e543590b97b4e337ba281, + limb1: 0x71cdbe8b107414ddb9b6183b, + limb2: 0x1e70b514991423bb3b227b90, + limb3: 0x14a0d0f18689f838fa4b52c2 }, u384 { - limb0: 0x565b43b87e584ea4cb544eda, - limb1: 0xcf2dbe576c5d202d8b0afbe5, - limb2: 0xdb92ed74ad163cfbc6ef974c, - limb3: 0xca8f75052f1da51722c06a5 + limb0: 0x5a1beda9c9a1a47c2c11025a, + limb1: 0x4f0f9d1de85037c31c90fa2, + limb2: 0x4ed44a898c7bb95d5f389c85, + limb3: 0x892c7c282abfb2b418a4585 }, u384 { - limb0: 0xf2c277ccbb3daa4704500712, - limb1: 0x9117b318ac0849ea4a252422, - limb2: 0xfc62f5685bc9d51dd06cb96e, - limb3: 0xa58640dde887734c2c50626 + limb0: 0x3ea2bb5de9c8c5859b2494ad, + limb1: 0x7adb32d75c8ec3e16fc19f12, + limb2: 0x6bfeb78380b6b9cb3a11bfe6, + limb3: 0x10401aca352101195b4c8126 }, u384 { - limb0: 0x5458c7020a53b4e37e6b5122, - limb1: 0x89b1360de9a6ca58bc2b1807, - limb2: 0x3030dc070ea00b5aa1fac17b, - limb3: 0x11c63ffc65b5510daaac0303 + limb0: 0xba8a0dfbf92da00df185576c, + limb1: 0x5fd9c99cd6a782978965c94f, + limb2: 0x3dd8d8636963551624d9f352, + limb3: 0x148f8e91537004ff9abafd46 }, u384 { - limb0: 0xeb087d9953b6704192fe6368, - limb1: 0x99105f8bbb237d4d2897f720, - limb2: 0xe9efe2ad8376cf560ba3e8f9, - limb3: 0xea3bd3633519e750ba08006 + limb0: 0x814f12fe9fd3e670b3491b5e, + limb1: 0x4740b1f9d00b971ddc23a09c, + limb2: 0xa08f8015c2180ab87feddb8f, + limb3: 0x10bbc9d12b12a566a8ffc549 }, u384 { - limb0: 0x83eba2df14050a9265fb1cfd, - limb1: 0xcd601c6366d282483e2e5bfc, - limb2: 0xd220424c3721c490ed79000, - limb3: 0xd68f26fd8f4107f165f95c9 + limb0: 0x82cd5a2b557ef367181209c9, + limb1: 0x66ec398e94821153ab35dddf, + limb2: 0x8c5442043b49d90f36b46af, + limb3: 0xbc702950e89827e95ba07ef }, u384 { - limb0: 0x38b4deee3f2f262c0c765e62, - limb1: 0x124dbaa7f39601fab895e841, - limb2: 0x14bd8912ca3ce739feaa7362, - limb3: 0x70998e0aafe5bb8ef495db2 + limb0: 0xd17399bac4b2cd223a8ce956, + limb1: 0x9620e1680334e1449fd6edac, + limb2: 0x67eadc401f0e7441bbfce44e, + limb3: 0x11d041480e35833e22edb28c }, u384 { - limb0: 0x1008343a8e657940393aa521, - limb1: 0x3bab33cbd0f54d863118a5cb, - limb2: 0x97d4a52be696d64b9d684ee2, - limb3: 0x2e67443b60ae7d9fc11b48 + limb0: 0x17996fb1691c82de851acf90, + limb1: 0xc00762d2cc449de45e22a354, + limb2: 0x93f5bc89124c941ab3ca3222, + limb3: 0x145c70cc0467ed490c8506b6 }, u384 { - limb0: 0x279dcf66940c2bb47ea09a27, - limb1: 0x6286986775479ec9cefe1a91, - limb2: 0x7b07a27c9f0e74e1b54a6aa6, - limb3: 0x1d8571b89386b3350976dc9 + limb0: 0x1fb6bffdfcac4a5258c70e0b, + limb1: 0x409c7ad91531384ae00351ca, + limb2: 0xa75200eacfd29c47b505b291, + limb3: 0xe43ade64748011b51a73671 } ] .span(), b_den: array![ u384 { - limb0: 0x99c2a8bb8707c08af752cb44, - limb1: 0xafc2a1d08a78fbeb0bd0a9e3, - limb2: 0x7ed4d8991203cb5327d529cb, - limb3: 0x151c654ca8ba0f764ccd3427 + limb0: 0xcae5bbaccfd6dafcb4480821, + limb1: 0x9bacd181c26f78b85bcf520, + limb2: 0xf50d9606f2f3f51af7a92993, + limb3: 0x8c03ca39df6b1e7ca162ef6 }, u384 { - limb0: 0x86217c7cc3f095e8dce3d27b, - limb1: 0x8d0cf57dcb9c695e847984c1, - limb2: 0xe2fd9fdc328ed5f5c97c112d, - limb3: 0x15c28e9889bf35d8c3eca739 + limb0: 0x3854df5e7d665fd43f8c8174, + limb1: 0x68360ef0c5f4735c1c42a30a, + limb2: 0x323cce3450b33efaa8e46cf3, + limb3: 0x188be0bad9793e43f8d3532b }, u384 { - limb0: 0xe1199ad72995bfe657c93e12, - limb1: 0xff73fc5631acb1d8380755f6, - limb2: 0x6a4dfadfdedd8a11ce60b45d, - limb3: 0x152fe4ffb685013e85517841 + limb0: 0xd1e0f73aabddadcfd3418efb, + limb1: 0x1083caca0463c73cb5d1428c, + limb2: 0xedf15232dc70d0bf347ab53c, + limb3: 0x10c50571e9e5035179209ef0 }, u384 { - limb0: 0xab2014d2bc2c1bc782abf51d, - limb1: 0xd3948983ab883f2bee3c464, - limb2: 0xcdc5531aad543bef5f5ddbd7, - limb3: 0x8ade20a2dadbd2068221c0c + limb0: 0x8d1dfa84cb75163a8e9a719b, + limb1: 0xcc83375a3343829b7ed942cf, + limb2: 0x2a67c60dd20d74f51fafe441, + limb3: 0x190c8077a1c05900cd0d72fe }, u384 { - limb0: 0x4d158dab0e9a10c8803bcfa6, - limb1: 0x546a00c22973427d55d5401, - limb2: 0x8fd9f1ad91c53dccdedb60e9, - limb3: 0x111792593ae5327318937962 + limb0: 0x74e4f8b8a87a23def1754d7f, + limb1: 0x64adf8b9795bd67edd71800e, + limb2: 0xbd92db431720cd1eb1996f60, + limb3: 0x13c93b3427ff2f14ed78b8a4 }, u384 { - limb0: 0x909687795772d3cda0e2101b, - limb1: 0x1489c87648b2aca7c0932e2d, - limb2: 0x16e7159719395f659aad98c1, - limb3: 0xa02c7bcbc6fa286359e1a5e + limb0: 0xec6905ba5ba4585dbe681fbb, + limb1: 0x65c6d7be4471395e0b19353a, + limb2: 0xa26c9af0218697a0306a0231, + limb3: 0xc6fa7ef17c7efe7e91d8287 }, u384 { - limb0: 0x79216c10f4d82d2cfda464ff, - limb1: 0x2779a6e4563b74237e3b8528, - limb2: 0xb319b091a3c7b962710de8bb, - limb3: 0xa1d6df4742278e527cc6316 + limb0: 0x755ebe8d4c7d4abe26ebaae7, + limb1: 0x397786bcc2f5f617bdafbcbb, + limb2: 0xbc3301ffa518427dd34ddc16, + limb3: 0xf29518d66692e57a55baab0 }, u384 { - limb0: 0xc6ee68ffe3ddb51a91a3556d, - limb1: 0x376804ad73a35f2d95b163fe, - limb2: 0x937b925475dd71737ab3a82f, - limb3: 0x24a833a23b37c68d4dee8e0 + limb0: 0x6ac35a6d432b32a689041ffb, + limb1: 0xa39fe78b7b4f1e1750e7c611, + limb2: 0xd65957235e23f658e3844a0, + limb3: 0x87a92ba4b6d0fe7ee3f8748 }, u384 { - limb0: 0xcc3e8830da8338f502bbe57f, - limb1: 0x52114cac4de7fed0f079d62b, - limb2: 0x377e5b52b4ef68a8e835fd42, - limb3: 0x46dd5dc7ae39560ee75e40a + limb0: 0xde1071fab34a6b3a7265a9ae, + limb1: 0x1c412465b945d9e11054f924, + limb2: 0xf0698e07dc3b86381eaef474, + limb3: 0x17307832f60b97223fbbcef6 }, u384 { - limb0: 0x61fd6459ff8f6890f31ba51b, - limb1: 0x87c9dfb6d40d38b95fcfe7ab, - limb2: 0x7de56a552264b9c6f2ecf118, - limb3: 0x250eef1acd0aaa51ca42bd5 + limb0: 0xecbb6e9a70f18b7d3a24d16, + limb1: 0x95259160af80e29bfdbafed6, + limb2: 0x921a94605ea0b933df667662, + limb3: 0x944d610a53c1a0e77a1c4c4 }, u384 { - limb0: 0xd711f7571074f291bfd873ab, - limb1: 0x969b8b5aa841ac2c64d939d1, - limb2: 0xf46f594cf65df5dcec4a3bae, - limb3: 0xfb0d8ce126f79506c830f71 + limb0: 0x726e5a8d3778a3eb0427da82, + limb1: 0xdd240ce7292bfaafdaa9640f, + limb2: 0x2cb2a07c19d839740188ae3d, + limb3: 0x48462bb82f132d505ff188b }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] @@ -19199,230 +19187,227 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0x90300294d11e3b18c815655f, - limb1: 0x1a5673d1fb0a1907834ed073, - limb2: 0x6153d29932293ded52eccd2, - limb3: 0x5e25bec7192bb55ab164bef + limb0: 0x2b24720c7f44760472b1b155, + limb1: 0xc4b132481e2f14b78eb23b80, + limb2: 0xd1d57eaa8e2a4ebb267def8, + limb3: 0x83a2a46c593356ae0d8762c }, u384 { - limb0: 0x2ca25392a318e6c52961f207, - limb1: 0xe0e223a5240a2d20db25e3e0, - limb2: 0x2600167ca92475ef1c8d677a, - limb3: 0x12911ad4cbf6dec8f406605f + limb0: 0xd77e3beea23611e29902d783, + limb1: 0x9847b913fdbb68a0d6a85538, + limb2: 0x3d92dca17ff13b6482dc9ea6, + limb3: 0xea610a053a82e2535c662a0 }, u384 { - limb0: 0x6bd0e1879404bb74cf06a92e, - limb1: 0xd06096354dac04ddad47c4b3, - limb2: 0x376195cbe661e16e153c185c, - limb3: 0x90475ac8187ec943f1dadce + limb0: 0x6226ff127f61844cdcbe96f0, + limb1: 0x51464594bf80c5710a880090, + limb2: 0x579790642c4a7a5e23c98985, + limb3: 0x19f9aefd36b8824dca8df45e }, u384 { - limb0: 0xdff555753c2630f29a46d942, - limb1: 0x39da9e8e4ce1764b4e06998f, - limb2: 0x1eaf888f40a1b6de5ead3b09, - limb3: 0x9af135ba233d81735e4aaa3 + limb0: 0x1426f07fd05f053242bfb931, + limb1: 0x15bcf578c705a9e8d01a049e, + limb2: 0x9e2a9d8b79fd4a96abba0648, + limb3: 0x1254807c5f2061a445a0dbd2 }, u384 { - limb0: 0xe0e40e1502a1711758593aee, - limb1: 0x8a5ae677200d75f359f9d03d, - limb2: 0x9fad8bf7d00e0a7af094d54e, - limb3: 0x1988b895b33168642a9af0c1 + limb0: 0xe4fc104c83c0a08c2258d019, + limb1: 0x7eb18304db8ff5dece2724dc, + limb2: 0xa4a0c38ccf0fe8c8b212baa8, + limb3: 0x14e636c38d1659186d445356 }, u384 { - limb0: 0x63131f6905f06b33d89db6b9, - limb1: 0x8a4dc6b361ea3fb55ccfa713, - limb2: 0xd242ba101ce3da581f400500, - limb3: 0x6e12ccdeb5c4b22944870e9 + limb0: 0xad8ee40755fee57a2e74e95a, + limb1: 0xb2b2a84059a424bf0989b663, + limb2: 0x51771c0c11f518ede8f2f7e2, + limb3: 0x17bf04b99cee8ac0a47713af }, u384 { - limb0: 0x7c1156a40ec842e99757b09c, - limb1: 0xc396a94a9f25dcc637a9f365, - limb2: 0xe8ec294c989587d9fb085f2c, - limb3: 0x18823dbfe316a0b4bdf81621 + limb0: 0x9b3c4ee1668e100a56975a44, + limb1: 0xfc56efe5f4933a5736db174d, + limb2: 0xce7c87a8700bb1bbfee02d0f, + limb3: 0x139ff11a6b955dcb24ce4a8e }, u384 { - limb0: 0x76ee83c3f9d04b83cd7489e3, - limb1: 0xb39869507b587b127bfbb673, - limb2: 0x21a5d66bb23ba5c279c2895f, - limb3: 0xd0088f51cbff34d258dd3db + limb0: 0x9765cce9842ba0d98fe08b09, limb1: 0x59d3b2ba, limb2: 0x0, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0x270f1702c9f1710e6201b1ef, - limb1: 0x3968e1cc051d0b1e17795cab, - limb2: 0x6b5572e11d599055cc7785c3, - limb3: 0xcf6c50eecfa925bb0140067 + limb0: 0xe87a7f29770c63fcffa71561, + limb1: 0x8e07413bafa7ea1f86fc0f44, + limb2: 0xa82d1e9f32ddb6e06c96d134, + limb3: 0xa7dc050877a424bbd7327bd }, u384 { - limb0: 0xf4d32963c9bbd583a6f79251, - limb1: 0xa6b6931c737defe9a53ef5cf, - limb2: 0x980512009126c2ab609ba11, - limb3: 0xbfaeca96f0f9a9eb8a610b6 + limb0: 0x76e3185daad9737dd563b327, + limb1: 0x6c9ff0592b137483d6a847dd, + limb2: 0x2e1d4ddab3a1c134fe4ea6fe, + limb3: 0x15b17e4b5881dc898acffbe3 }, u384 { - limb0: 0x40d231972bd7efd4c0583cb, - limb1: 0xb54482ef09e957ce8252219b, - limb2: 0x3d304bae8330cad9531f55c1, - limb3: 0x13908a929a2c911280546072 + limb0: 0x41fb305e1e88387ba5e2d4d5, + limb1: 0xecc691e0a8bc231c989318e8, + limb2: 0x23295f1b48d62bd173d7deb4, + limb3: 0x4ae145a8092890c7e4a00e2 }, u384 { - limb0: 0xae9aa6d0ea9714792dc6684f, - limb1: 0x3afe3e1bd9b8bb673a3713be, - limb2: 0xc3f6f3fca80d7b16711fe145, - limb3: 0x6155aaa6a9952b8452ce897 + limb0: 0xb7b81579bc71d72d7237c4da, + limb1: 0xde2bf6d355c3a3b15d29a920, + limb2: 0x4c7720a107496867c11f1032, + limb3: 0x13a59ffe358950f807085e39 }, u384 { - limb0: 0x73f7b471386827df1bc359a0, - limb1: 0x1f9fdffcfc814a9203dcd75b, - limb2: 0x6f8f7e39f6a52ed5f624f117, - limb3: 0x18d20a0c12177fd62ca0a571 + limb0: 0x4a64e0dc9f5a8d07cb13443e, + limb1: 0xf6ebe91d9a6fc4028143a80c, + limb2: 0xadf262e36a74aceedda0237, + limb3: 0x19469f00c601ad7bd2cd1be2 }, u384 { - limb0: 0xe702e67db55472ceeab9186e, - limb1: 0x5a13a5e28fd00ce63f641fbd, - limb2: 0x6e4af76590da9ea33c20339, - limb3: 0xd22d6ce435d30a3f2ae2fea + limb0: 0x6a828abf3e84e243abc41347, + limb1: 0xcc94024412093006adcc2053, + limb2: 0x16367f0fadefb703476a537e, + limb3: 0x9fb38814d3e5540c042b481 }, u384 { - limb0: 0xfb416b154b13103ba9c74dcf, - limb1: 0x799cd4399686da6c7002780c, - limb2: 0xeccc89fee22ca8318ea507bb, - limb3: 0xd11f49fde7d5351dc4e7f4c + limb0: 0xc3e2b141e28518ba5db73a23, + limb1: 0x64094173c1f03ae9c3698e7b, + limb2: 0x59e0379746ea30e668411a29, + limb3: 0x6fe398e37d9dbf6d8fec05f }, u384 { - limb0: 0x818a636d20d0320b3ef15e30, - limb1: 0x70274805bac294eb97b8e848, - limb2: 0x9fb2006ac2bcf112c9a4296a, - limb3: 0x7d3d6c70fde4cd3697583ca + limb0: 0x92f6a8ba756a607dd629c44c, + limb1: 0xa3dc655e63ee5688ba6649b4, + limb2: 0x85ce427c030edfc60b0fb012, + limb3: 0xd1dae9036c38813e3954ac3 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] .span(), b_num: array![ u384 { - limb0: 0x5b4f85cb8a1932371706ce5e, - limb1: 0xf91a1e712f46fbddc046ced1, - limb2: 0xdee45cc350729cdff7ce68a2, - limb3: 0x311d8ebb1f94638d881a3e8 + limb0: 0x4408e9366ff8fe4c4884651, + limb1: 0x523581b1060b66de12cc339d, + limb2: 0xefc65798ce26bae078d57a62, + limb3: 0x1bc800659af1cbb66f98def }, u384 { - limb0: 0xaeb2a5cde127264fe2642520, - limb1: 0x3e8a3f594704d1ffa278eac0, - limb2: 0xde14cf0f4d28047a61da9c70, - limb3: 0x1165874c4c314ae29e2ec0fb + limb0: 0x5c0e087ace172f0efadb84e4, + limb1: 0xbfe607aaf078a706e6d2ec4c, + limb2: 0xda349ced8ca028f67e65b57d, + limb3: 0x195b1c9b4c2cb9b6722805c0 }, u384 { - limb0: 0x57912650592b9d58ad5bee5c, - limb1: 0x3aad8325d31acf7d71be2670, - limb2: 0x690709776b811db3d3cb04fa, - limb3: 0x1467df10793c2ddb9d8356de + limb0: 0xae25a0d21dae9d514a15fb0, + limb1: 0xffb70305c7ad4df77f202096, + limb2: 0x5bfac2c6c6dbe5e5059fb801, + limb3: 0xf9291f8e76cff1f8eede546 }, u384 { - limb0: 0xf28864b22df916a6d075df68, - limb1: 0x864949609a168599eb0f4eef, - limb2: 0x2e2346015aff4f72f48c41ab, - limb3: 0x253298e5898e19ac21ceef + limb0: 0xff263094cdc4d5675af25748, + limb1: 0x8d7885f278f932cc4579ba1a, + limb2: 0x8cad97364978f75521bbb285, + limb3: 0x1319ed4259dafe5d8c236422 }, u384 { - limb0: 0x53e8eb25d36876f5819b64f, - limb1: 0x261476f94fdccce328978664, - limb2: 0x88e68cc89e6e15f0ab08b6fd, - limb3: 0x3542a0f8e23e2bbdfef203f + limb0: 0xd5407cde2510190405a51c6e, + limb1: 0xc82d1613342718faf485bcb4, + limb2: 0x69e540aa622420c180e5200e, + limb3: 0x80f69df4b21346bd18b820b }, u384 { - limb0: 0x2a80b2133908e79d72fb89a4, - limb1: 0xf045159798bab452ec0bbf1, - limb2: 0x233dcfd915934c764eb73b9b, - limb3: 0xfc45e727d1aa0dbec7861d9 + limb0: 0xccd47f3f207ef133a3175fc4, + limb1: 0xf72c36fdfab5891d81f93335, + limb2: 0xbecb6938e27273ead714c982, + limb3: 0x182b656e893f462909f9f85c }, u384 { - limb0: 0x1c4f8f892e6640062cfa90dd, - limb1: 0x251acc265255b661ded7db1f, - limb2: 0x34df585b8f2691c1e0d4ffe, - limb3: 0x17f747cacdc54a83e7d0ff52 + limb0: 0x8c56bbf5feb2a51cdee90dba, + limb1: 0xe4040f15be5f3d96d07d6a3f, + limb2: 0x12d6590ccebcb7be92244b61, + limb3: 0x69c6113f832ba95dda58c4f }, u384 { - limb0: 0x42fc0cfd7952589b5d188784, - limb1: 0x21cfecfab3c96a5484a80256, - limb2: 0x37a0763b7f9a31b06f58d0a8, - limb3: 0x196a059baa3b3a9bd61c2e4d + limb0: 0xe4e95d0db85af8ae95b2567d, + limb1: 0xcab32bf64079edfca5e167cf, + limb2: 0x43c240766aa339cb8993eb06, + limb3: 0x143b528895ab311d6f87af04 }, u384 { - limb0: 0x8175272b9e7964f27491773c, - limb1: 0xb4eb9cdb4c0d70cd86c675c, - limb2: 0xac2f94f91dc190bbdaca128d, - limb3: 0x13b093951dbba6e1d4885e04 + limb0: 0x49d1341acd300f5d5ffcda4, + limb1: 0x4478d2397dcdbc8299cb3e9c, + limb2: 0x41d5c4683aee41a7e265fe1e, + limb3: 0x11e76c2625a9428e0d348446 } ] .span(), b_den: array![ u384 { - limb0: 0xeae85c0b6dc6c43988071d11, - limb1: 0x7e72b48f1dc336543f3972ad, - limb2: 0x6a0a1ead10eef5d23e59044d, - limb3: 0x19da02517a6a62d4753459e7 + limb0: 0xf095fca622328ff3fe9caad9, + limb1: 0xd0ec324dc7eeb259fd443d14, + limb2: 0x5d68cda566ff8ffcbed63212, + limb3: 0xff5ef57e4692294aab0f740 }, u384 { - limb0: 0x21f8a58f6cf0560e9bde9e99, - limb1: 0x33a979d0d746c982764fd741, - limb2: 0xe2b597a8bfd26525e4a1d587, - limb3: 0x15eaa0bb82be83e0977c9b21 + limb0: 0xc79061777d68cdf7558fcc9b, + limb1: 0x7ced4981c83aefa2fe9d1f79, + limb2: 0xee9230e4a12122451eab63bb, + limb3: 0x8c2c36eb587be5749ecf869 }, u384 { - limb0: 0xfc388c669cf8fbf530170f2b, - limb1: 0x9f7f93d943927ccdad44866f, - limb2: 0x2ade2833df5d48d671ee1ec8, - limb3: 0x3ef48bbc32907b1ffe8aa6 + limb0: 0x7ecc1787a20e1ee978b5354, + limb1: 0xb31a4782a2f08c72624c63a1, + limb2: 0x8ca57c6d2358af45cf5f7ad3, + limb3: 0x12b8516a024a2431f9280388 }, u384 { - limb0: 0x3025b246ba4ec2f3191ba880, - limb1: 0xbe31079a754f0296e1a9aba7, - limb2: 0x37e595fc5918312a9d71f818, - limb3: 0xb4b1dce5ddff6a279abfb10 + limb0: 0xb35ed5113ad6c0b2c88728c8, + limb1: 0xd124a4a622a396789f9eb3cb, + limb2: 0x10269a9d229d75f09683d9c1, + limb3: 0xb110a8ab11fd25cf841a980 }, u384 { - limb0: 0xff61fb29c360750016064e25, - limb1: 0x8872c88c8abf41a13a025342, - limb2: 0xba8f96aa51c9f96ec0893370, - limb3: 0x73ecd30d16dff8e3eba07a2 + limb0: 0xdb269bd14047a79d01b21973, + limb1: 0xab8c4a4bba0eabfd6106e813, + limb2: 0x4c6b3335fc61be5ce7a264e0, + limb3: 0x12c7b2a58a88f80fa995cc92 }, u384 { - limb0: 0x3d70bd10d4114a38f6ea902d, - limb1: 0x4f3175375bc79f1f428aa095, - limb2: 0xd22bafd91e78db783b1d3d28, - limb3: 0x1419c1f734a1866db4d5d0ad + limb0: 0x3ab15b5b5e9cc18a54f37746, + limb1: 0xb7e5c84ffa2fed1331179a37, + limb2: 0x38b7ae829c1dbc599dfc19f0, + limb3: 0x1299e4757c0bf77534392b30 }, u384 { - limb0: 0x38f85326a2e55567d4e44a35, - limb1: 0x530fe9c0467238d0bce8f3f5, - limb2: 0xf091c24967d184d2c4a9dab4, - limb3: 0x65b0955718ed2cb202f965e + limb0: 0x15eeda818c873a16e91502bb, + limb1: 0x7202a0166d399344c23e311, + limb2: 0x70ac5226be7ae07c6e9e6619, + limb3: 0x159d744cdb70da391fe7b800 }, u384 { - limb0: 0x1779422647aaf00c17897d0a, - limb1: 0x11db5ad1fa29b1f825687880, - limb2: 0x67c0263638aa5c1735ab7142, - limb3: 0x41f4153de90e5ef3c3f652f + limb0: 0x339783c701060eff23bb0018, + limb1: 0xb7fbd9553cc731dd2d84cee1, + limb2: 0x9b80d66f79f432dd330e9d03, + limb3: 0x19bb356d2e100096caeaf783 }, u384 { - limb0: 0xe702e67db55472ceeab91872, - limb1: 0x5a13a5e28fd00ce63f641fbd, - limb2: 0x6e4af76590da9ea33c20339, - limb3: 0xd22d6ce435d30a3f2ae2fea + limb0: 0x6a828abf3e84e243abc4134b, + limb1: 0xcc94024412093006adcc2053, + limb2: 0x16367f0fadefb703476a537e, + limb3: 0x9fb38814d3e5540c042b481 }, u384 { - limb0: 0xfb416b154b13103ba9c74dcf, - limb1: 0x799cd4399686da6c7002780c, - limb2: 0xeccc89fee22ca8318ea507bb, - limb3: 0xd11f49fde7d5351dc4e7f4c + limb0: 0xc3e2b141e28518ba5db73a23, + limb1: 0x64094173c1f03ae9c3698e7b, + limb2: 0x59e0379746ea30e668411a29, + limb3: 0x6fe398e37d9dbf6d8fec05f }, u384 { - limb0: 0x818a636d20d0320b3ef15e30, - limb1: 0x70274805bac294eb97b8e848, - limb2: 0x9fb2006ac2bcf112c9a4296a, - limb3: 0x7d3d6c70fde4cd3697583ca + limb0: 0x92f6a8ba756a607dd629c44c, + limb1: 0xa3dc655e63ee5688ba6649b4, + limb2: 0x85ce427c030edfc60b0fb012, + limb3: 0xd1dae9036c38813e3954ac3 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] @@ -19431,10 +19416,10 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0x543f86bb84c81757ef53d4bd, - limb1: 0xd9449c4db8f590042828e4a7, - limb2: 0x375f274d0dd3e3750c106ccf, - limb3: 0x3217f54b7237ed7903a7c21 + limb0: 0xf09ae585233870da226040f4, + limb1: 0xc08b54b6f2a0e86f7716032b, + limb2: 0xa9947fe859ff00eae15b2a9e, + limb3: 0x1782670af24267c1cc2d1dcd }, u384 { limb0: 0x302ea91a3b09524e7c49fbbb, @@ -19446,66 +19431,66 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0xc0d8a731aa7af0d5029f31fd, - limb1: 0x20df7f0e6af99cfdc537a444, - limb2: 0x17dfa59471c8d739d5ac5c35, - limb3: 0x7ed18082d89cd17a15410e9 + limb0: 0x1e728a01c0eb9de8a2b91003, + limb1: 0x447a930d64c10333fe7aa5e7, + limb2: 0xd9f3920597482e3132553754, + limb3: 0x704361220664180bd675e8f }, u384 { - limb0: 0x1595228f81b181bbd11a310c, - limb1: 0xc530d14887171cb0ee5d945e, - limb2: 0x4d01dccefc950f86218f7bcd, - limb3: 0xc762e23b7736cf8fdb2090 + limb0: 0x134f524cfb990c239f6040f8, + limb1: 0xf37ee1e07bd95ea1516e7b6f, + limb2: 0x33f95f23540fafdab86889f3, + limb3: 0x19d886c8910162b6abf368af }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] .span(), b_num: array![ u384 { - limb0: 0x24db48b49952fe4272c80e73, - limb1: 0x1390887e3408dcd1d4f1f857, - limb2: 0xbe1000f45fae5fedc488bf93, - limb3: 0x1547e15bbdad0163f4ec527e + limb0: 0x8be8643b3e18a6fa0e14686a, + limb1: 0x87df8a68ff976c46a434fb8, + limb2: 0x2e47547027ad0adb28434b54, + limb3: 0x4913daccaa70bee5f62b390 }, u384 { - limb0: 0x67d489447bd655a50de0b17d, - limb1: 0xcdae39a469adafe2ca2696f3, - limb2: 0x30000598a5737579f95c9187, - limb3: 0x1067caf7033d04ece954c0d5 + limb0: 0x1e440e85dc2d7ab82f747035, + limb1: 0xc7b2936d46c76c08107f2a5b, + limb2: 0xcb39cdcbd97d13d452a8194a, + limb3: 0x1354694cac12586b269baed1 }, u384 { - limb0: 0xb4533911dfe4ca387cd2124d, - limb1: 0x1e9550602ab22031c8cfc6a9, - limb2: 0xefffa73e245f852065b1bad5, - limb3: 0x4aaa74c0ad763601b759120 + limb0: 0x588351d257f87c1aede598c3, + limb1: 0xd1b09c4caebff2a3f3666fb, + limb2: 0xd521726f8c892119f173e351, + limb3: 0xb609ff4bcfa670d58d18b51 } ] .span(), b_den: array![ u384 { - limb0: 0x520e9cc6efecc3540a7d1d49, - limb1: 0x1c4d2998b5357dd2f6329114, - limb2: 0x1c32e97a62ac1162632c5e15, - limb3: 0x5b34e367ca74dc43a349bee + limb0: 0xc876280749af77a28ae49561, + limb1: 0xaab979949c5316abdb3e979d, + limb2: 0x24829b3ef8a96d3fd5cfca91, + limb3: 0x20fc65e48191f68aa81d289 }, u384 { - limb0: 0x56548a3e06c606ef4468c430, - limb1: 0x14c345221c5c72c3b9765178, - limb2: 0x3407733bf2543e18863def37, - limb3: 0x31d8b88eddcdb3e3f6c8241 + limb0: 0x39414934c067308e7d8203df, + limb1: 0x98690f9f0b529818e9b5edc0, + limb2: 0x602760722d8dcdc0712ef91, + limb3: 0x195ee5639785d70bce7aab9a }, u384 { limb0: 0x4, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xc0d8a731aa7af0d5029f31fd, - limb1: 0x20df7f0e6af99cfdc537a444, - limb2: 0x17dfa59471c8d739d5ac5c35, - limb3: 0x7ed18082d89cd17a15410e9 + limb0: 0x1e728a01c0eb9de8a2b91003, + limb1: 0x447a930d64c10333fe7aa5e7, + limb2: 0xd9f3920597482e3132553754, + limb3: 0x704361220664180bd675e8f }, u384 { - limb0: 0x1595228f81b181bbd11a310c, - limb1: 0xc530d14887171cb0ee5d945e, - limb2: 0x4d01dccefc950f86218f7bcd, - limb3: 0xc762e23b7736cf8fdb2090 + limb0: 0x134f524cfb990c239f6040f8, + limb1: 0xf37ee1e07bd95ea1516e7b6f, + limb2: 0x33f95f23540fafdab86889f3, + limb3: 0x19d886c8910162b6abf368af }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] @@ -19514,19 +19499,12 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0x6c4971cfb92f45ac939751b3, - limb1: 0x8b55a3562a4de846f2b2c08a, - limb2: 0xd40d6c5744d4336ff99823fe, - limb3: 0xbac92c692cf46a76df8aa5a + limb0: 0xf581529a34638b7e154e0c2c, + limb1: 0xcacdf969b971ee9aa28d4e95, + limb2: 0x320b5ffa552b815a5661fd30, + limb3: 0xc205a0c5bc42414ac0c0822 }, - g_rhs_sqrt: array![ - u384 { - limb0: 0x34b768a5c84be2c2ddd42424, - limb1: 0x349032a45ac0f715412850d5, - limb2: 0xbd6e49e227d0d9a7b2ce88e9, - limb3: 0x5a642f2cb4340a2d2f87e2c - } - ], + g_rhs_sqrt: array![], }; let res = msm_g1( points, scalars, scalars_digits_decompositions, msm_hint, derive_point_from_x_hint, 1 @@ -19534,16 +19512,16 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0x89644cb7e4a8f56de6bd1bb9, - limb1: 0x2c960f294584897555a8bdb0, - limb2: 0x362904ca5a94ba19c6516e55, - limb3: 0xed5cbda922e2c8fe638e798 + limb0: 0x856294afc0ace98441799749, + limb1: 0x6625413adcc09187f103b094, + limb2: 0x4106addc65e532766853583e, + limb3: 0x145dc3bc059358c3aa51756d }, y: u384 { - limb0: 0xa14631e5e685cb65db6bec5a, - limb1: 0x61c8e9a04668785a0511fd23, - limb2: 0x54071ab948ee54c6abec634f, - limb3: 0x17584159876770d9ceca6b4a + limb0: 0xfa367c951cd6019e3e9d0b00, + limb1: 0x3e4e1391e2c8bc34dce0d986, + limb2: 0xdc949d11b5ba8c43c70b583c, + limb3: 0x7c9c6dcca8f77629837734c } } ); @@ -19555,142 +19533,142 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0x3640174a8982e7b2f87d41c5, - limb1: 0x98c483f2dd0c56de6756da2, - limb2: 0x4424a6648610adb5813c7c39, - limb3: 0x14e7b1c752382ba4b1fadde + limb0: 0xe4f817e54aede0613c17035c, + limb1: 0xdff1f15010392a6da1f95a6, + limb2: 0xbed78d3d341e911d49f15454, + limb3: 0x18154782ce0913b21588066d }, y: u384 { - limb0: 0xb163c7832886a34578b8f8a2, - limb1: 0x680290715f555bf885c14d83, - limb2: 0xd544a70800cf0a6f0ee62dfa, - limb3: 0x1766d9a63de5a07b70b9f19c + limb0: 0x3d77d61326ef5a9a5a681757, + limb1: 0xd3070afd4f0e121de7fcee60, + limb2: 0xdf9ef4088763fe611fb85858, + limb3: 0x11a612bdd0bc09562856a70 } }, G1Point { x: u384 { - limb0: 0x45099893884d15de3f92e986, - limb1: 0x883cf6b124de899e88273867, - limb2: 0x62752bbea4ad4435a2626c8b, - limb3: 0x3eed82f1b0abda3d4813640 + limb0: 0xde4f62a6588c9401ffefbd3, + limb1: 0x9bb5f797ac6d3395b71420b5, + limb2: 0xdc39e973aaf31de52219df08, + limb3: 0x105dcc4dce3960447d21d3c1 }, y: u384 { - limb0: 0x408c0ec0f7c3bc6d8892bfa9, - limb1: 0xe025247394167db27eeaf8ab, - limb2: 0xd4ac0cc1018f18503e6aa19a, - limb3: 0x7522a72cc536847d89df841 + limb0: 0xaefd0d854043fd325dd3c34f, + limb1: 0x9b63c98d9a7845c52e1e2b0f, + limb2: 0x9db0be660d847ccc58358f3f, + limb3: 0x17cb6c41f0c4e1a7394ab62a } }, G1Point { x: u384 { - limb0: 0x4a351dadcc0f8a725db148a4, - limb1: 0x6459221a582eec3dfb81a77b, - limb2: 0xc20e5c4e1eeafaa0d90eafe7, - limb3: 0x4c45ecac9c372da7759f991 + limb0: 0xcf86158ab69213388e721bb7, + limb1: 0x5f7812269d790797cad9aa15, + limb2: 0xb1c3622a0177001d9ed8e25f, + limb3: 0x115cf429f459884785c6ba46 }, y: u384 { - limb0: 0xa0bc0dd6fd49e207a1b29c7c, - limb1: 0xb2ed295bba639078426338f6, - limb2: 0x8865c33a81b875957fd1bdc1, - limb3: 0x1951908a67e9862b3cc0ccd7 + limb0: 0x1e81341e2f3f988ff115dda3, + limb1: 0xad22946489db6ee4954fa5e1, + limb2: 0x83bed94412e19d92b73cc763, + limb3: 0x2074c7bceff87d0d41edba1 } }, G1Point { x: u384 { - limb0: 0x785c9ee0c19de0036c5ef2d1, - limb1: 0x9ee2f3a1e5fb4b54f738648f, - limb2: 0x31280a9fa4e44d467e031917, - limb3: 0x12a2fdb2c5f8aabdbd6b1450 + limb0: 0xe2955c55da59eba4b7b57d3d, + limb1: 0x1e6629b0431bce67cf28c22, + limb2: 0x1c35b7efd5b67f87221b8bfc, + limb3: 0x3e53df9e3488a9e42acd87e }, y: u384 { - limb0: 0x80cbbf8be68deed13913db90, - limb1: 0x3e00982989460e45838a4c13, - limb2: 0x2ec2346a7abccdb5a0ea194, - limb3: 0x9c1005b2fa9973f900a3b27 + limb0: 0x2e089afa726154d40dd12102, + limb1: 0x5391613ecf49db2bcf1cad86, + limb2: 0x84a2abb2de6b3a6e09026a50, + limb3: 0x19557a3a3c1d62a205d5dc87 } }, G1Point { x: u384 { - limb0: 0x67637d407d6d4fe5cc3b858c, - limb1: 0xa3f252e898e40c7b20210963, - limb2: 0x71d6e96c4ddd06c476a31860, - limb3: 0x1726973b6043e821931d1a59 + limb0: 0x490bf40774926e8b279947c, + limb1: 0xeabab6aef9e9d2a4f64f4e7d, + limb2: 0x3e309fe1b1c8247abab20d7e, + limb3: 0x79c527862917f69ac58fcc4 }, y: u384 { - limb0: 0xb33da89f19a977b7fc7d312, - limb1: 0x4cc8f1e1ca55722e9190fed2, - limb2: 0x4414365fda636e4918308eff, - limb3: 0x156ff03306e29a0588734cf0 + limb0: 0xacb18f2da2b425c2ff50dafd, + limb1: 0x7623850d87e279a8a30f31ff, + limb2: 0x777564c7291d95fa80203ade, + limb3: 0x1764ce0e7fb626109b63789b } }, G1Point { x: u384 { - limb0: 0x74b3afd51b0c41d57b47833b, - limb1: 0xcd28eba38f6048c38448554, - limb2: 0x353443c527fc108afa355630, - limb3: 0x9d880cdfcbb5964fcbdf781 + limb0: 0x42f2f3f4f6b9d2c2b73a361f, + limb1: 0xcd78c070c184c38b1e5716aa, + limb2: 0x72cbc24cd90da89e0e3cefe4, + limb3: 0x19485e1c46d0dce75f8b192b }, y: u384 { - limb0: 0x6e5cc3fe3449fffe32e7d4f, - limb1: 0xe589c757afd5b9f07669445c, - limb2: 0x82c9e3841b296385f4fba1d2, - limb3: 0x12ffbb214ea1fe8cdbf48874 + limb0: 0xb56b3539074b3c47b3f504d9, + limb1: 0x2c229530bddedd8851b03dcc, + limb2: 0xc93eef8474c4e18d6378e7f0, + limb3: 0x173d36f17a3c9ae77a2acc25 } }, G1Point { x: u384 { - limb0: 0xb1285a048e6082c9ca00bca6, - limb1: 0xdd1cb3cc95a2ec624d051344, - limb2: 0x53831a19fedef481d44d861, - limb3: 0x17b45bf5e65e54e74ae50527 + limb0: 0x5fbf29cf20556a11621a6639, + limb1: 0xdfda5b7dbf0b226822094787, + limb2: 0x4a3b059e521b4b0445df96d5, + limb3: 0x333988c2c09f5af061cdfb }, y: u384 { - limb0: 0x481dc8fcdae025537466beb, - limb1: 0xd264fe1a4759bf134830fe7e, - limb2: 0x74ea9d275687e0209cebf997, - limb3: 0x9250c67a8279c777958e8a4 + limb0: 0x13d3570be6d27d1d588b22fc, + limb1: 0x20c763e58d4df3e4990cdae9, + limb2: 0x2c3301367f400c31f4bded26, + limb3: 0x16a6c25d133fba74b4c55972 } }, G1Point { x: u384 { - limb0: 0x92c65c64e3aa469247a6d447, - limb1: 0x7e6dd4ed3a0ac3ed9f1f4c72, - limb2: 0x3d5ab2ad0895f77a2e027ca8, - limb3: 0x14c3977da27c6c3a646257d6 + limb0: 0xcb24d12438557639f52df5fd, + limb1: 0x4a6a46feebe8a88a8062bd0e, + limb2: 0x65f04211af4b168b1e25787d, + limb3: 0x17935d6f4fa575744ca46f75 }, y: u384 { - limb0: 0x4bbf95c2ff48b26db594de47, - limb1: 0x61f727137520de58bb08bbfa, - limb2: 0x3a2ac57da61fc569405cf7e6, - limb3: 0x73197bfc800f6111a69b859 + limb0: 0x644f324be8a5c152625a5b8a, + limb1: 0x501e52e8c5707d7a3a77ee18, + limb2: 0x9636c463c14c5b85c2e6d3b1, + limb3: 0x1939b6f297f7b5b7fd0ac458 } }, ] .span(); let scalars = array![ u256 { - low: 0x15b5c990758cee81c803e2eb20971fbf, high: 0x150baf7e7a5997da9c10a72aebdff461 + low: 0x101fbcccded733e8b421eaeb534097ca, high: 0x1c60cb179148624feac1c14f30e9c5cc }, u256 { - low: 0xb9a17b17c73e59a23af31c851030fe5a, high: 0x7973dc5a818e98de3045c8b9298a181 + low: 0x247a8333f7b0b7d2cda8056c3d15eef7, high: 0xbacf6e172ae22448b0163c1cd9d2b7d }, u256 { - low: 0x318351df84c109dbaea1351de114e46, high: 0x3fecb4be57447e9ec8867d557d2338cd + low: 0xe005b86051ef1922fe43c49e149818d1, high: 0x3ea0f301eece328bff7b118e820865d6 }, u256 { - low: 0x55103782c34d3bce07302c9cb2b1a13a, high: 0x17a4a5e63cab19724ef857215790008f + low: 0x4a84eb038d1fd9b74d2b9deb1beb3711, high: 0x2a97919d8c25166a1ff39849b4e1357d }, u256 { - low: 0xd3d24bd7bc1722440abd709747f01c70, high: 0x17b7a23912c3909c94e5db2c0c60649d + low: 0x3405095c8a5006c1ec188efbd080e66e, high: 0x460ba2d39a6a5f92cca74147f6be1f72 }, u256 { - low: 0x6cc430c6fe8d5aafc1365ae7bc0f3f37, high: 0x41c4db701c36b792a0775f7016c2018e + low: 0x1775336d71eacd0549a3e80e966e1277, high: 0x2894fdbe6288e1a5cc45782198a6416d }, u256 { - low: 0x7b23175b6a0d67eee9acfffc3e0169bf, high: 0x50efc1e6d6f43a9fa3936c3e972531a2 + low: 0x2f1205544a5308cc3dfabc08935ddd72, high: 0x43870ae2fcd81b5d24bace4307bf326 }, u256 { - low: 0xb3c31096729e823d1568af61a7fa8995, high: 0x3248a93784ede3f532beb86ac59e8819 + low: 0x42930b33a81ad477fb3675b89cdeb3e6, high: 0x56e06d3d16febaa011af923d79fdef7c }, ] .span(); @@ -19698,167 +19676,166 @@ mod msm_tests { array![ ( array![ - -0x1, - 0x0, - 0x1, 0x1, 0x0, - 0x0, - 0x0, - 0x0, -0x1, -0x1, - 0x0, -0x1, -0x1, 0x1, - 0x1, - -0x1, - -0x1, -0x1, - 0x0, - 0x0, -0x1, -0x1, -0x1, - 0x0, 0x1, - -0x1, - -0x1, - -0x1, 0x0, -0x1, 0x0, 0x1, - 0x1, - -0x1, - 0x1, -0x1, + 0x0, 0x1, + 0x0, + 0x0, 0x1, -0x1, 0x1, - 0x1, 0x0, 0x1, - 0x1, - 0x1, -0x1, -0x1, - 0x0, -0x1, + -0x1, + 0x0, 0x1, -0x1, 0x0, -0x1, - 0x1, -0x1, -0x1, - 0x0, - 0x0, -0x1, -0x1, - 0x0, - 0x0, 0x1, - 0x0, - -0x1, -0x1, 0x0, 0x1, - -0x1, 0x1, - 0x0, + -0x1, 0x0, 0x0, -0x1, 0x1, - 0x1, - 0x1, + -0x1, 0x1, -0x1, -0x1, - ] - .span(), - array![ + 0x1, + -0x1, -0x1, - 0x0, - 0x0, 0x0, -0x1, -0x1, 0x0, + -0x1, + 0x1, 0x0, + 0x1, 0x0, 0x1, -0x1, 0x1, - 0x0, -0x1, -0x1, - 0x1, + 0x0, -0x1, 0x0, 0x1, 0x1, 0x1, + 0x0, + -0x1, + 0x1, + ] + .span(), + array![ + 0x1, + 0x0, 0x1, -0x1, + 0x1, + 0x0, + -0x1, + -0x1, -0x1, -0x1, -0x1, - 0x1, - 0x0, 0x0, 0x1, -0x1, 0x0, 0x1, + -0x1, 0x0, + -0x1, 0x0, 0x1, 0x1, - -0x1, 0x0, + -0x1, + -0x1, 0x0, -0x1, 0x1, -0x1, + 0x0, + 0x0, 0x1, -0x1, + -0x1, 0x1, 0x0, - 0x0, 0x1, 0x1, - -0x1, + 0x1, 0x1, 0x0, - -0x1, - 0x0, - 0x0, + 0x1, + 0x1, 0x0, 0x1, + 0x1, + 0x0, -0x1, -0x1, - 0x1, + 0x0, + -0x1, -0x1, 0x0, + 0x1, + 0x1, 0x0, 0x0, + -0x1, + -0x1, 0x0, 0x1, + 0x1, 0x0, 0x0, - 0x1, - 0x1, + -0x1, 0x1, 0x0, + -0x1, 0x0, + -0x1, 0x0, -0x1, 0x0, + 0x0, + 0x0, 0x1, + 0x0, + -0x1, -0x1, -0x1, ] @@ -19866,505 +19843,507 @@ mod msm_tests { ), ( array![ - -0x1, - 0x0, - -0x1, - -0x1, - -0x1, - 0x1, - 0x1, 0x1, 0x1, -0x1, + -0x1, + 0x0, 0x0, + 0x1, 0x0, -0x1, + -0x1, 0x1, 0x1, + 0x0, 0x1, 0x1, + -0x1, 0x1, + 0x0, -0x1, -0x1, + -0x1, + 0x1, + -0x1, 0x1, -0x1, + 0x1, 0x0, 0x0, -0x1, 0x0, + 0x0, + 0x0, 0x1, + -0x1, 0x0, 0x0, -0x1, 0x1, - 0x1, - -0x1, 0x0, 0x1, 0x1, 0x1, -0x1, + 0x0, + 0x1, 0x1, -0x1, -0x1, -0x1, - 0x1, - 0x0, - 0x1, -0x1, - 0x1, - 0x1, -0x1, - 0x1, -0x1, 0x0, 0x0, - 0x1, - 0x0, -0x1, - 0x0, 0x1, -0x1, 0x1, + -0x1, 0x0, + -0x1, 0x0, 0x1, - 0x0, - -0x1, 0x1, - -0x1, 0x1, -0x1, + -0x1, 0x0, - 0x0, - 0x1, + -0x1, 0x0, 0x0, -0x1, + 0x1, + 0x0, -0x1, + 0x1, 0x0, 0x0, 0x0, - 0x1, - -0x1, -0x1, ] .span(), array![ + -0x1, + 0x1, 0x1, - 0x0, 0x1, + 0x0, + -0x1, 0x1, + 0x0, -0x1, -0x1, + 0x1, + 0x0, + 0x1, 0x0, 0x1, 0x1, 0x0, -0x1, 0x0, + -0x1, 0x0, + 0x1, -0x1, -0x1, - 0x1, - 0x1, 0x0, -0x1, 0x1, 0x1, -0x1, + 0x0, + 0x0, + -0x1, -0x1, 0x0, 0x1, 0x0, -0x1, + 0x0, 0x1, -0x1, + -0x1, 0x1, 0x1, -0x1, - 0x0, -0x1, -0x1, 0x1, + -0x1, 0x0, -0x1, 0x1, -0x1, - -0x1, 0x1, 0x0, 0x0, + 0x1, + 0x1, 0x0, + 0x1, -0x1, 0x0, - 0x0, - 0x0, 0x1, 0x0, 0x1, - 0x1, - 0x1, -0x1, 0x0, - -0x1, 0x1, 0x0, - -0x1, - 0x1, 0x0, 0x0, - 0x1, - -0x1, - -0x1, - 0x1, - 0x1, -0x1, 0x0, -0x1, - 0x0, - 0x1, 0x1, -0x1, 0x1, 0x0, - 0x1, + 0x0, 0x1, ] .span() ), ( array![ - 0x1, 0x0, - 0x1, 0x0, - -0x1, 0x1, -0x1, - -0x1, 0x0, - 0x0, - -0x1, 0x1, -0x1, 0x0, - -0x1, + 0x0, + 0x0, 0x1, 0x0, + -0x1, + -0x1, 0x1, 0x1, + 0x0, 0x1, 0x1, + 0x0, 0x1, + -0x1, + -0x1, 0x0, 0x0, - -0x1, 0x0, - -0x1, 0x0, 0x0, - 0x1, - 0x1, - 0x1, + -0x1, + -0x1, + -0x1, 0x0, 0x0, 0x0, - 0x1, -0x1, + 0x0, 0x1, 0x0, + 0x0, + 0x0, -0x1, 0x1, - -0x1, 0x1, - -0x1, - -0x1, + 0x0, 0x1, 0x1, + -0x1, + 0x0, 0x1, + 0x0, -0x1, + 0x0, 0x1, -0x1, -0x1, 0x0, 0x0, 0x0, - -0x1, 0x1, 0x1, -0x1, - -0x1, 0x0, 0x1, - -0x1, 0x1, 0x1, + 0x0, + 0x0, + 0x0, -0x1, 0x1, -0x1, - -0x1, + 0x0, + 0x0, + 0x1, -0x1, -0x1, 0x1, 0x0, - -0x1, - -0x1, - -0x1, + 0x0, + 0x0, -0x1, -0x1, ] .span(), array![ - 0x0, - 0x0, - -0x1, - 0x0, 0x1, -0x1, - 0x1, 0x0, 0x0, 0x0, - -0x1, 0x0, 0x0, -0x1, - 0x0, - 0x1, - 0x1, -0x1, 0x0, - 0x1, - 0x0, -0x1, 0x1, 0x0, - 0x1, 0x0, 0x0, 0x1, 0x0, - -0x1, - -0x1, - -0x1, + 0x1, 0x1, 0x0, + 0x1, 0x0, 0x1, + -0x1, + -0x1, 0x1, 0x0, 0x1, + -0x1, + -0x1, + -0x1, + -0x1, + -0x1, + 0x0, 0x1, + -0x1, 0x1, + -0x1, 0x0, + -0x1, 0x1, 0x1, - 0x1, - 0x0, - 0x0, -0x1, -0x1, + 0x0, -0x1, + 0x0, + 0x0, 0x1, + -0x1, 0x1, 0x0, - -0x1, 0x0, -0x1, - -0x1, - -0x1, + 0x0, + 0x1, 0x1, 0x1, -0x1, + 0x1, 0x0, 0x1, + 0x1, + -0x1, -0x1, 0x1, 0x1, -0x1, + 0x1, 0x0, - 0x0, -0x1, + -0x1, + -0x1, + 0x1, 0x0, 0x1, 0x1, 0x0, -0x1, 0x1, - -0x1, - -0x1, - -0x1, - 0x1, 0x1, ] .span() ), ( array![ + -0x1, -0x1, 0x0, - 0x1, - 0x1, - 0x0, + -0x1, 0x0, + -0x1, + 0x1, 0x0, 0x0, + -0x1, 0x1, - 0x0, -0x1, + 0x1, + 0x1, + 0x1, + 0x0, 0x0, -0x1, + 0x1, 0x0, - 0x0, + 0x1, + 0x1, 0x0, -0x1, + 0x1, + 0x0, -0x1, -0x1, 0x1, 0x0, 0x1, - -0x1, - 0x0, 0x1, 0x0, 0x0, -0x1, - -0x1, - -0x1, - -0x1, - -0x1, + 0x1, 0x0, - -0x1, - -0x1, 0x0, -0x1, - -0x1, 0x0, - -0x1, - 0x1, + 0x0, + 0x0, + 0x0, + 0x0, 0x1, - -0x1, + 0x0, + 0x0, + 0x0, 0x1, 0x1, 0x1, - -0x1, 0x0, -0x1, 0x0, + 0x1, 0x0, - -0x1, 0x0, 0x0, 0x1, 0x0, - 0x1, -0x1, 0x0, - 0x0, + 0x1, + 0x1, -0x1, -0x1, + 0x0, -0x1, -0x1, -0x1, - 0x0, - 0x1, 0x1, 0x1, -0x1, - -0x1, - 0x0, - 0x0, 0x1, 0x0, - 0x0, -0x1, 0x0, - 0x1, + 0x0, + 0x0, 0x1, 0x1, ] .span(), array![ - -0x1, - -0x1, + 0x1, + 0x0, -0x1, 0x0, 0x0, 0x1, + 0x0, 0x1, - -0x1, - 0x1, + 0x0, -0x1, -0x1, - 0x0, - 0x0, - 0x1, 0x1, 0x1, 0x1, 0x0, + 0x0, 0x1, 0x1, -0x1, - -0x1, - 0x0, 0x0, 0x1, 0x0, - 0x1, - -0x1, 0x0, + -0x1, 0x1, 0x0, - 0x1, - 0x1, -0x1, 0x1, - 0x1, - 0x0, + -0x1, 0x0, -0x1, 0x1, 0x1, + 0x0, + 0x1, + -0x1, -0x1, -0x1, 0x0, 0x0, - 0x1, - 0x0, -0x1, 0x1, + 0x0, -0x1, - 0x1, 0x0, 0x1, 0x0, - -0x1, - -0x1, 0x0, + 0x0, + 0x1, 0x1, + -0x1, + -0x1, + -0x1, + -0x1, 0x0, 0x0, -0x1, - 0x1, -0x1, -0x1, -0x1, - 0x0, 0x1, 0x0, + -0x1, + -0x1, + 0x1, + -0x1, + 0x1, 0x0, + -0x1, 0x0, 0x0, - 0x0, - 0x0, - 0x0, - -0x1, -0x1, -0x1, 0x0, + 0x0, + 0x1, -0x1, + 0x0, -0x1, ] .span() @@ -20374,244 +20353,236 @@ mod msm_tests { -0x1, -0x1, -0x1, - 0x0, + -0x1, -0x1, 0x1, -0x1, -0x1, -0x1, + -0x1, + -0x1, 0x1, 0x1, + -0x1, 0x0, + -0x1, 0x1, -0x1, 0x1, + 0x0, + 0x1, + 0x0, 0x1, -0x1, -0x1, - -0x1, + 0x0, -0x1, 0x0, -0x1, + 0x0, -0x1, + 0x0, + 0x1, -0x1, + 0x1, + 0x1, -0x1, -0x1, 0x1, + 0x0, + 0x0, + 0x0, + 0x0, 0x1, 0x1, - -0x1, + 0x0, 0x1, - -0x1, 0x0, - -0x1, - -0x1, 0x1, 0x0, 0x1, - -0x1, 0x0, - -0x1, 0x0, - -0x1, - -0x1, + 0x0, + 0x1, + 0x1, 0x1, - -0x1, -0x1, -0x1, -0x1, 0x1, - -0x1, 0x0, - -0x1, 0x0, 0x0, 0x1, -0x1, + 0x1, + 0x1, -0x1, - -0x1, - -0x1, + 0x1, 0x0, -0x1, 0x0, 0x0, -0x1, + 0x0, + -0x1, + -0x1, 0x1, + -0x1, + ] + .span(), + array![ + 0x0, 0x1, 0x1, - 0x0, + -0x1, 0x1, 0x0, - 0x0, - 0x0, 0x1, 0x0, - -0x1, - 0x1, 0x0, -0x1, 0x0, + 0x1, + 0x0, -0x1, -0x1, - ] - .span(), - array![ -0x1, + 0x1, -0x1, 0x0, 0x1, - 0x0, -0x1, - 0x1, - 0x1, 0x0, 0x1, -0x1, - 0x1, - 0x1, - 0x1, -0x1, -0x1, - 0x1, 0x0, 0x1, 0x0, 0x0, - 0x0, 0x1, 0x0, 0x0, - -0x1, 0x1, + -0x1, 0x1, + -0x1, 0x0, 0x1, 0x1, + -0x1, + 0x0, + 0x1, 0x0, -0x1, 0x1, + 0x1, -0x1, -0x1, - 0x0, - 0x1, -0x1, - 0x0, - 0x0, 0x1, 0x1, - 0x0, - 0x0, - 0x1, - 0x0, 0x1, 0x0, -0x1, - 0x0, - 0x0, + -0x1, 0x1, - 0x0, - 0x0, + -0x1, 0x0, 0x1, -0x1, 0x0, 0x0, - 0x0, - -0x1, -0x1, 0x1, - -0x1, - 0x0, - -0x1, 0x1, 0x1, -0x1, - 0x0, -0x1, 0x1, -0x1, - -0x1, - -0x1, - -0x1, 0x0, -0x1, -0x1, + 0x0, + 0x0, + 0x0, + 0x1, + 0x0, + 0x1, + 0x1, ] .span() ), ( array![ -0x1, - -0x1, - -0x1, - -0x1, - -0x1, - -0x1, - 0x0, - 0x0, 0x1, - 0x0, - -0x1, 0x1, 0x0, 0x1, 0x0, 0x1, - -0x1, - -0x1, 0x1, + 0x1, + 0x0, + 0x0, -0x1, -0x1, 0x0, 0x1, - -0x1, - 0x1, + 0x0, 0x1, + 0x0, 0x1, 0x1, 0x0, - 0x1, -0x1, - 0x0, - 0x1, -0x1, 0x1, + 0x0, -0x1, 0x0, 0x0, + 0x1, + 0x1, + 0x0, 0x0, 0x0, + -0x1, + -0x1, + 0x1, + -0x1, + -0x1, 0x1, - 0x0, 0x1, 0x1, - 0x0, - -0x1, -0x1, + 0x1, 0x0, + -0x1, 0x1, 0x0, 0x0, - 0x1, - 0x1, - -0x1, -0x1, + 0x1, -0x1, 0x1, 0x0, 0x0, -0x1, 0x0, - 0x0, + 0x1, + -0x1, 0x0, -0x1, 0x1, - 0x1, - 0x0, 0x0, -0x1, -0x1, - 0x1, -0x1, 0x0, 0x0, @@ -20620,432 +20591,433 @@ mod msm_tests { 0x1, 0x1, 0x0, - 0x0, 0x1, + 0x1, + 0x1, + 0x0, + -0x1, + 0x0, + -0x1, + -0x1, ] .span(), array![ - 0x0, - 0x1, - 0x1, - 0x1, 0x1, -0x1, + -0x1, 0x0, 0x0, 0x0, + 0x1, 0x0, -0x1, - -0x1, 0x0, -0x1, 0x1, - -0x1, - 0x1, - -0x1, 0x0, 0x1, + 0x1, 0x0, 0x0, -0x1, 0x0, + 0x0, + 0x1, + -0x1, + -0x1, -0x1, -0x1, -0x1, 0x1, 0x0, + 0x0, + 0x0, + 0x0, + 0x0, -0x1, + 0x1, 0x0, 0x1, - -0x1, - -0x1, 0x1, -0x1, 0x1, 0x1, -0x1, + -0x1, + -0x1, + -0x1, + -0x1, 0x0, + -0x1, 0x0, - 0x1, - 0x0, - 0x1, + -0x1, + -0x1, 0x0, 0x0, + 0x1, -0x1, 0x0, - 0x0, -0x1, 0x0, 0x1, - 0x0, + 0x1, 0x1, 0x0, + 0x1, 0x0, 0x0, - -0x1, - 0x1, 0x1, 0x0, - -0x1, - -0x1, - 0x0, - -0x1, 0x0, 0x0, -0x1, 0x0, 0x1, -0x1, - 0x1, - -0x1, - -0x1, - -0x1, 0x0, 0x0, -0x1, - -0x1, - 0x1, 0x1, + 0x0, + -0x1, + 0x0, + -0x1, ] .span() ), ( array![ - -0x1, - 0x1, - -0x1, + 0x0, 0x0, 0x1, 0x0, + 0x1, + -0x1, + -0x1, -0x1, - 0x0, -0x1, 0x1, 0x0, + 0x1, + -0x1, -0x1, - 0x0, -0x1, -0x1, 0x0, -0x1, + -0x1, 0x0, -0x1, 0x0, + 0x1, 0x0, - -0x1, + 0x1, 0x0, -0x1, + 0x0, 0x1, 0x1, 0x1, - 0x1, - -0x1, - 0x0, 0x0, 0x0, -0x1, 0x0, + 0x1, 0x0, + 0x1, 0x0, 0x1, - -0x1, 0x0, -0x1, - 0x1, - 0x1, + -0x1, 0x1, 0x0, + 0x0, -0x1, -0x1, -0x1, 0x0, - -0x1, - 0x0, 0x1, 0x0, 0x0, + 0x1, + -0x1, + -0x1, 0x0, 0x0, 0x0, - -0x1, - 0x1, - 0x0, - -0x1, 0x1, - -0x1, - -0x1, 0x1, 0x0, - 0x1, + 0x0, 0x0, -0x1, + 0x1, 0x0, -0x1, 0x0, -0x1, -0x1, -0x1, - 0x0, + -0x1, 0x1, 0x0, - 0x0, + -0x1, + 0x1, 0x1, - 0x0, 0x1, + -0x1, ] .span(), array![ - 0x1, - 0x1, + -0x1, 0x0, -0x1, + -0x1, + -0x1, 0x1, - 0x0, 0x1, - 0x0, - -0x1, -0x1, -0x1, 0x0, - -0x1, 0x0, + -0x1, 0x0, 0x1, -0x1, 0x1, + 0x0, + 0x0, + -0x1, -0x1, -0x1, -0x1, - 0x1, - 0x1, -0x1, + 0x1, 0x0, 0x0, - -0x1, 0x1, -0x1, 0x0, - -0x1, - 0x1, + 0x0, + 0x0, 0x1, - -0x1, + 0x0, 0x1, 0x0, - -0x1, 0x0, + 0x1, + 0x1, + 0x1, 0x0, 0x1, 0x1, 0x1, + -0x1, 0x1, - 0x0, - 0x0, + -0x1, 0x1, - 0x0, -0x1, + 0x1, -0x1, 0x0, -0x1, + 0x1, + 0x1, 0x0, -0x1, - -0x1, - -0x1, - -0x1, - -0x1, - -0x1, 0x1, -0x1, 0x0, - 0x1, -0x1, + 0x1, + 0x0, -0x1, 0x0, + 0x1, + 0x1, + 0x1, -0x1, + 0x1, 0x0, 0x0, 0x0, 0x0, 0x1, - -0x1, - -0x1, 0x1, 0x0, 0x0, -0x1, - 0x1, - 0x1, - 0x1, - 0x1, ] .span() ), ( array![ 0x0, - 0x1, - 0x1, 0x0, - -0x1, - -0x1, - 0x1, - -0x1, 0x0, 0x1, 0x1, - 0x0, - -0x1, - -0x1, - 0x0, 0x1, 0x1, + 0x0, + 0x0, -0x1, - -0x1, + 0x0, -0x1, 0x0, -0x1, 0x1, -0x1, - 0x1, 0x0, -0x1, 0x1, + -0x1, 0x1, -0x1, + 0x0, + 0x0, -0x1, - 0x1, + 0x0, 0x0, 0x0, 0x0, 0x1, - -0x1, 0x1, 0x1, 0x0, - 0x0, - -0x1, - -0x1, -0x1, 0x1, 0x0, + -0x1, + 0x0, + 0x0, + 0x0, + -0x1, 0x1, -0x1, -0x1, 0x0, + 0x0, 0x1, + 0x0, -0x1, + 0x0, + 0x1, + 0x0, -0x1, 0x1, -0x1, + 0x1, -0x1, -0x1, 0x1, 0x1, 0x0, + 0x1, + 0x1, 0x0, 0x0, 0x0, - 0x0, + -0x1, + 0x1, 0x1, - 0x0, - 0x0, -0x1, 0x0, - -0x1, 0x0, - -0x1, 0x1, -0x1, + 0x1, -0x1, 0x0, -0x1, + -0x1, 0x1, - 0x0, 0x1, - -0x1, - -0x1, ] .span(), array![ - 0x1, 0x0, + 0x0, + -0x1, + 0x1, 0x1, 0x1, - 0x0, 0x1, -0x1, - 0x0, + -0x1, 0x1, + -0x1, + -0x1, + -0x1, 0x1, -0x1, 0x0, 0x0, - 0x1, - 0x1, 0x0, 0x0, + -0x1, + -0x1, + -0x1, + 0x0, + -0x1, 0x1, + 0x0, -0x1, 0x1, 0x1, + -0x1, 0x0, 0x1, 0x1, -0x1, -0x1, -0x1, + -0x1, + 0x0, + -0x1, 0x1, 0x1, 0x1, -0x1, - -0x1, 0x1, + -0x1, + 0x0, 0x0, 0x0, - -0x1, - 0x1, - -0x1, 0x0, - -0x1, + 0x1, + 0x1, + 0x1, + 0x1, 0x1, -0x1, -0x1, - -0x1, - -0x1, - -0x1, + 0x1, -0x1, -0x1, 0x0, + 0x0, + 0x0, + -0x1, -0x1, - 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, - 0x0, - 0x1, -0x1, -0x1, - 0x1, 0x0, - 0x1, - 0x1, - -0x1, -0x1, - -0x1, - 0x0, 0x1, - 0x1, - -0x1, 0x0, + -0x1, 0x0, - 0x1, 0x0, 0x1, 0x1, - 0x0, 0x1, - -0x1, ] .span() ), @@ -21055,99 +21027,99 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0x8a11fe095f6ff3c39c5ffe0, - limb1: 0x6ca6bb5e85de9d01a42083f2, - limb2: 0xcbd6d3891449b2326b72c2fa, - limb3: 0x17f1ff68a5072d4174fa3103 + limb0: 0xbd4662e50d916bce9928451c, + limb1: 0xffed7a2ff36ed269ad8343a7, + limb2: 0x70bc3565d38ea9211eba62d6, + limb3: 0xa7df58a9e7560a5d42dbeea }, y: u384 { - limb0: 0x3b10e56113e64ce634e1538b, - limb1: 0xd711923eff7deb621e3c05f0, - limb2: 0x7738bfaff30b647e3862e804, - limb3: 0x16f035a5941e9e95405ca072 + limb0: 0x8f94e758297386bf989b7041, + limb1: 0xa07d2146894ce1678517775b, + limb2: 0x931b24837ae2f74d8778604d, + limb3: 0x158b0c488cb7ac6a5ac35180 } }, Q_high: G1Point { x: u384 { - limb0: 0xb8daef610370a5da0562ed18, - limb1: 0x5fc85a19d170ba9bc2689c52, - limb2: 0xbf4bd8dffd3734e11986d09b, - limb3: 0x80b1fd3eb3072abcc44f21d + limb0: 0x17fde461e73891d6f081b187, + limb1: 0x6c7cd38d4806d742cb3703fb, + limb2: 0x33186ff5f032df4aa45f3d7f, + limb3: 0xe76bd9aece9676ff4a38197 }, y: u384 { - limb0: 0x81a9cb7e7318ed82ee69b9c7, - limb1: 0xafa9ad911819b7a44788c68c, - limb2: 0xb3f675f94862e605ecafca12, - limb3: 0xe1e654ab789f9e69dd7e9d3 + limb0: 0x99be4420803c0d059edd487e, + limb1: 0x4280ae0eb5650998048842f0, + limb2: 0x98efcb693715f2cbfad6f4ee, + limb3: 0xba94b45944e7d872e7a17a4 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0x5d45bad593a4fce3ce996f2, - limb1: 0xf103b515f48b5e1126e6b98c, - limb2: 0x197937f685a5de6fab5923ab, - limb3: 0x193178d61aad4ed8800c9b2a + limb0: 0xca6ea02cdfe90c547c57e864, + limb1: 0x6d9a6b261c31d2b7a6e16386, + limb2: 0x557e125efa9539881ed7420a, + limb3: 0x9b545f7563589b3d4c00546 }, y: u384 { - limb0: 0xe1ecde1fa0926e7244142c74, - limb1: 0x16d3843c27e153cea0aff8e9, - limb2: 0xccf055be12539c18eea41f6d, - limb3: 0x1792009c2c738ea68a8ba5e3 + limb0: 0x1f1661d63f20854a7ff598e4, + limb1: 0x689719b70cf763a02006e1d0, + limb2: 0xf781e4aaea0a5d00d8b1780, + limb3: 0x12c8e235e7e0a82b825375dd } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0x3840bf8e836ecac1df51ca29, - limb1: 0xa3acaa9794e63aa0c05e4b9c, - limb2: 0x2b163ab2b20d8f943241bbca, - limb3: 0xda7286f7702dfb5eb757c02 + limb0: 0x6e0bbb677fc52af75bdaccff, + limb1: 0x22c3117db98b98c34280c771, + limb2: 0x414c25a2605846a027b4e5fc, + limb3: 0x16b5ce3b0e521a85cf55bb42 }, u384 { - limb0: 0x80810e887241f4b3a208f900, - limb1: 0xa270d667202adb4d492213a7, - limb2: 0xa2adbdf51f866cd4512bba09, - limb3: 0xdceb21da395dafde123c1f9 + limb0: 0x49b30dda467060ec15f2d2a7, + limb1: 0xd13d05d4ed6503d061771602, + limb2: 0xd0f4d08537100cee50ebe581, + limb3: 0x179af3802966e016b8a56a05 }, u384 { - limb0: 0x571d076aa6dd12603f56cdd6, - limb1: 0x1d2da9da5fc8fbc754f93198, - limb2: 0x678848335347342fa2861089, - limb3: 0x12c1248aa1490babbeeeff65 + limb0: 0xa93af358f7169e35b06e165b, + limb1: 0x6d0143778e6af92a5c2f94e6, + limb2: 0xa17bc10e4bf112c698a562de, + limb3: 0xbb162267186fad17f677b0a }, u384 { - limb0: 0x9a4d3672c31a666baf45005c, - limb1: 0xbc5b8e2373269aacd59f8101, - limb2: 0x71cf12f102b556a9a945a7e4, - limb3: 0x7eff3c8031bc98d37fd03a4 + limb0: 0xf7bb798974b0152f2588b808, + limb1: 0x55d049af4042e599a6fb2941, + limb2: 0xcbffd056e616629c9847dc5b, + limb3: 0x941b75fcc085389503e9ce7 }, u384 { - limb0: 0x77c95c9c966a54c6edb848fe, - limb1: 0x47e6fc275ade4f51b9dc2441, - limb2: 0xf3e9c32eb24ad31fc7b1b481, - limb3: 0x68fe4f6cdda28bff5d39d30 + limb0: 0x51e4628763ed6d56f97288de, + limb1: 0x4f264505979e251c8c2f9ffd, + limb2: 0x605d65675d0b297ab2da228c, + limb3: 0x15db6686a28ae22cb6cc9914 }, u384 { - limb0: 0x37aee5d7cdcb18b41891d34e, - limb1: 0x1bceeed957a2ae0e800134b0, - limb2: 0xd13af3c77e34ae8b4ddd2e1b, - limb3: 0xbdc633521a7eeb7f210b2af + limb0: 0x36f740b063197f8a101dee02, + limb1: 0x7da4fab7820a4bba3cd8a358, + limb2: 0x381c99bdbd48f8b863f0804c, + limb3: 0xc4fc2cc7794d7e8fad2ff8f }, u384 { - limb0: 0x5bb46200e5983f84d3258652, - limb1: 0xbd2d9b8acabcc73cebd9ce68, - limb2: 0x3b175def07176ece2d808c, - limb3: 0xa5bcb81428c1fd14a03d82c + limb0: 0x9b04ff48d8074e155c5884e9, + limb1: 0xc74e894cf7be35d5241ca238, + limb2: 0x7559f71b2aa32dc36027ca3a, + limb3: 0x7164325c85b621abff328f3 }, u384 { - limb0: 0x6592cb38a0ca4d652c928d86, - limb1: 0x8b822f9238cce190664dc1ee, - limb2: 0xa5828263d1ad2f98dcd78cc7, - limb3: 0xc712798470b127c00f596d8 + limb0: 0xb39a13cc262bda5fc49c3906, + limb1: 0x39e584c2fc0b28e6b1d6786d, + limb2: 0x1bed2acceb5628f1235edff4, + limb3: 0xe5e91c538ed4529de62cefe }, u384 { - limb0: 0xedc4af5375a8699a51482e8d, - limb1: 0xb39869507b587b1131db5e71, + limb0: 0xd96afcb5a2ab6901026f4b28, + limb1: 0xb39869507b587b11b87f31ec, limb2: 0x21a5d66bb23ba5c279c2895f, limb3: 0xd0088f51cbff34d258dd3db } @@ -21155,197 +21127,197 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0xaf230363ba2e63d658dc7016, - limb1: 0xe8bae7189b060dcecd8a9c2f, - limb2: 0xa5b6ace7cd8af5f26cb023a2, - limb3: 0x17d4d3196dfd800f8256fc89 + limb0: 0xb1118ebebd644507975370e0, + limb1: 0x66fcfda2acec8c2e52f1cac3, + limb2: 0xd9a2e0e15b4baf4af5b56f26, + limb3: 0x18a4a50bdade23a11f7f8f22 }, u384 { - limb0: 0x64bda483d9ef27dd46c75615, - limb1: 0x9f8712df0da19328760158f9, - limb2: 0x9637a359be26b924ede7b312, - limb3: 0x81c2d4665b6a086aafd7811 + limb0: 0xc114251567712a288898f9a3, + limb1: 0x9a37998b9b18b82f9a54acf1, + limb2: 0xe6c9df104745e132f81900eb, + limb3: 0xd08324504eac6cf578e95d2 }, u384 { - limb0: 0xcc275549c615becbf143db22, - limb1: 0x6b3fb151b524e63739385d9, - limb2: 0xb01f3bf21a5ba7875546621, - limb3: 0x150a2812ef098e7b67eb337 + limb0: 0xcdad0f15f15fb50327866d1d, + limb1: 0x45a8b696c6cbb05d09fa38ed, + limb2: 0x9291c4e4d201ff14d26913e2, + limb3: 0xda7caabf7351fdd61753253 }, u384 { - limb0: 0xf9bdc99468a53a8aa516f0c6, - limb1: 0xe4556c44fb4e542630c86dab, - limb2: 0x2f03acad765a36e9c236b453, - limb3: 0x162f9b5096197a91e2efccdf + limb0: 0xa05047aa7332823d59de19ec, + limb1: 0xff7d596c949fc941200e5be5, + limb2: 0x4af10c2f4ddfc98685f70377, + limb3: 0xbed92422d8da4e9d81b7de9 }, u384 { - limb0: 0x1a15d9d5655d343ad437bae4, - limb1: 0xf77aa4ddb6fbd5a3bffd5f4c, - limb2: 0xb0f5963114e6e05f36780f0a, - limb3: 0x18a74e0fa26362a6f56f61ab + limb0: 0xc2b54c1d0151a6e0e5b0bba8, + limb1: 0x53dfd17b2a21cf74bdefcf87, + limb2: 0x1e7e7c2928e7c0cdbc738c84, + limb3: 0x25f829046b1228feacbbef6 }, u384 { - limb0: 0xf30b6754d8261e2dd5d39ad7, - limb1: 0xbf7a3206dbc27336c60ce88b, - limb2: 0x9a4e3efa61cd17f9fa815e76, - limb3: 0x6fe150a7d966d8c27cd0be7 + limb0: 0xebe0cfe6902681d2045c1a7c, + limb1: 0x5fceb27e87a0ca0d46512951, + limb2: 0xc784541855d91ffc1bb43723, + limb3: 0x27e32621d1940214bbe4a16 }, u384 { - limb0: 0xb86d9a44395b2a2f46a2c160, - limb1: 0xc084ae4273062dd105f2819a, - limb2: 0x4836398d8d4bb2871fbce97, - limb3: 0x5bc1abf83bb325b528c8e45 + limb0: 0xadfa3de619da61306259b0dd, + limb1: 0x2bc8524ab3c1ff80019668e9, + limb2: 0xd636d0078117bcb968153fe2, + limb3: 0x176a964aca9d9051e4ec7ea0 }, u384 { - limb0: 0xf92f53a2a0504482f35b2acf, - limb1: 0xb85f8400751b48fef8cfedd7, - limb2: 0x828f626aa2171a799f95c0d6, - limb3: 0x12f330aac18d89fcaf3c407d + limb0: 0x137d7900568ce4cac8256c3c, + limb1: 0x3958d7c795f3f9b8bcaeb4cd, + limb2: 0xe583ae3fed5f5229308525af, + limb3: 0xde7f00308365525712ae3ab }, u384 { - limb0: 0xc17590321c013da56aecffae, - limb1: 0x5d29755e0fe5dfe06e06db82, - limb2: 0x4480eef23997db0712db3823, - limb3: 0x19f8b0ceae33d9bdba235c69 + limb0: 0xa1fd6f008c5911bc039c5147, + limb1: 0x167afdea2888106d5bc665ff, + limb2: 0x158bf025e04a732848eb4c77, + limb3: 0x126d687515d2860ff54c750 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] .span(), b_num: array![ u384 { - limb0: 0xb2ae258e870074b375fe2fdb, - limb1: 0x3bbd4c7c4c2bddd572fe81a3, - limb2: 0x4a8d261f6f22b823dc91248c, - limb3: 0x107e368e080d42d6251449ef + limb0: 0x4935cb124bb69c1b84de70, + limb1: 0x8416a1c0f246441c31c5c260, + limb2: 0x33683f8faf80f64ff5361bff, + limb3: 0x3d1f5a7a8c1a8e006fedc78 }, u384 { - limb0: 0x3084198b8d33cfa44957a10f, - limb1: 0xb6a10da7006bd99039798bb4, - limb2: 0x6c54a0b88dbd25b984faded4, - limb3: 0x1430378e06d52b38a50891cd + limb0: 0x25cf1fb36808b42bf1e780fa, + limb1: 0x216a3ff12dd3d832ddb3bfa, + limb2: 0x1bbd3579b3b4e85f35ecd9bf, + limb3: 0x47bd0a72ece8e034ad422be }, u384 { - limb0: 0x7f30fa8590c91d5a5ae1679c, - limb1: 0xcb27581653d99fa0981cedb9, - limb2: 0x71ad83fe48ced94ce4c68f85, - limb3: 0xa4c5ec3880961d952204206 + limb0: 0x17c775d0650ae6756528c8, + limb1: 0x4412cc4dfc65a4c499f3aa62, + limb2: 0xde6d6fcd0f25ed77f774758d, + limb3: 0x193d6c92ed86f1fe7be691af }, u384 { - limb0: 0xaf4c875b1f10795416a5b097, - limb1: 0xc3c22c75176912a1522603ca, - limb2: 0x1877553b426afc91d6c2e32e, - limb3: 0xc58908aea077ca71a6398bf + limb0: 0x8ec1d6061b0ffdb450254bf1, + limb1: 0xd20861b66caf4aca4d18b8af, + limb2: 0x966c20a9b88b097ff4bd8355, + limb3: 0xed4ce7f25054b50c6a03e83 }, u384 { - limb0: 0xe6a9b8403f370b77f5fa29fb, - limb1: 0x57e54c8e5c8fa1c9c69b9ca5, - limb2: 0x792484ba81172b50da87a5b6, - limb3: 0x118962b2d71932c571cda421 + limb0: 0x2ff0cc0ce85d7c8212f56a78, + limb1: 0xcdfd17f4223cf2e91959f368, + limb2: 0x3690d6da6694b0d6aaffc130, + limb3: 0x21e571cf1461450cd43f518 }, u384 { - limb0: 0x4f7f4bb43e66622f86de546b, - limb1: 0xf15c40fd158a5f834db55dcb, - limb2: 0xb7367f4c32f542a2fab32ecf, - limb3: 0x14d50318019118ab31fad8c9 + limb0: 0xea253e40417f588640e54c49, + limb1: 0x1e5ae28fd2eaa83c98857791, + limb2: 0xf72d218ba648abbe9ff79359, + limb3: 0xf40a02e46bb964c8794b93b }, u384 { - limb0: 0xa294cab3e500bc8d0afec215, - limb1: 0x4dd76df733ecc7255ba5716b, - limb2: 0x3920f33d4365dedba199899c, - limb3: 0x12858f72e31d149422aacb70 + limb0: 0x7cb1a63bb3be729f33391c7e, + limb1: 0x84f3ee66d0a4f3bf193a519a, + limb2: 0xa73b0d7362be1d4e295b669a, + limb3: 0x2b8ad3bef309406d5544cc4 }, u384 { - limb0: 0x517b591730e3f3255bb46f2, - limb1: 0xcc89c734b1d6378634a7f5db, - limb2: 0x2b092bf86f7b5a378f9b8865, - limb3: 0xe55d68649dccf0b5397df49 + limb0: 0xdd29385b7f502066df12bf8a, + limb1: 0x55555d4d1665f2c0e24fa0da, + limb2: 0x403c1d43c53ad44e57345cf0, + limb3: 0xc5698d0bf1b3a51ecf46515 }, u384 { - limb0: 0x5a61e6c08306f0d65740e5be, - limb1: 0x1930c07a1bbb92f7a5a139ec, - limb2: 0x8082ea61fd07e9c5dcfaa183, - limb3: 0xda1b52b547ae8f03a3a632c + limb0: 0xa8de4176945b1a7c9b6d4093, + limb1: 0xcd70b3103c8164bb0e161632, + limb2: 0x3ba5e0d4cbabea0e6112e861, + limb3: 0xffd503c5839a9a57c9c76c7 }, u384 { - limb0: 0xaeaa893f30e6b937755b72c0, - limb1: 0x38819261e9eb27a8843cf0db, - limb2: 0xe7b461f690a49da32d94aa83, - limb3: 0xa33f1ec9633bc4063922bae + limb0: 0x7cc4fb89eef2f1fba48a2e6c, + limb1: 0x3dbee8353f342d01a1efd4b1, + limb2: 0x32e13a940d6476e84abcdc1e, + limb3: 0xa38a3ed233adbb5001fb5ce } ] .span(), b_den: array![ u384 { - limb0: 0xa8900d8fbabc8f596372c057, - limb1: 0x6d59247f880554ceda2670c2, - limb2: 0xccf7ad1908c5f53ad831564d, - limb3: 0x115016a70b764c6f2808fb03 + limb0: 0xb04a3afbc794141e5d4ec37f, + limb1: 0x66617ea7cf9f4e4cefc32b12, + limb2: 0x9ca87cff3fc8da9cfc46845b, + limb3: 0x148f5e70bef8dab59cab4568 }, u384 { - limb0: 0xe1a2920fadbd9f751b1dada9, - limb1: 0x16eb78db3fd5567db95963e6, - limb2: 0x1592e08f9423990ec419b98b, - limb3: 0x66fa32f5d5a9b8060da3890 + limb0: 0xa1a8945629c6a8a222649136, + limb1: 0x9a7cc0ec7f00f4762bfab3c9, + limb2: 0x149022925428edc1f959de2f, + limb3: 0x1ea53fa0ab4e08c80307df }, u384 { - limb0: 0x309d55271856fb2fc50f6c88, - limb1: 0x1acfec546d49398dce4e1767, - limb2: 0x2c07cefc8696e9e1d5519884, - limb3: 0x5428a04bbc2639ed9faccdc + limb0: 0xd40c3c585180d40c9e1a5f1e, + limb1: 0x484135192dccd52bea90e3b9, + limb2: 0xc3afb9e47f196549629a2a0a, + limb3: 0x29d06db69d4b240ef9d79e1 }, u384 { - limb0: 0xd0ca29b674c74e00ed398882, - limb1: 0xdd4d4da8ad7b85d715fc52e4, - limb2: 0x5496ac401516a385a776a9f4, - limb3: 0x88ef8b2e063cfede1a7912d + limb0: 0xcfaaad6916304dfcfecc833a, + limb1: 0x9690be131209c4ea95d33a5c, + limb2: 0x7ecfb7efc9dc3e5b26875787, + limb3: 0x1458ca401e14ea13e9b6375b }, u384 { - limb0: 0x7c50bda8767f8c897a796f9, - limb1: 0xe0ae5bd20ecd1126fb46d62f, - limb2: 0x4cdf48c07fe50c8df9b3a440, - limb3: 0x2b51ddc094490b9544c5fe7 + limb0: 0xcbe955896cb7c5ac1f5be843, + limb1: 0xe9b6df78439ff6029213eb10, + limb2: 0x60c3cfb4eae4e469e9e732fc, + limb3: 0x16863c861faf510f02bd91ab }, u384 { - limb0: 0xe700f29d6caf378348929bd3, - limb1: 0x9d6bf08f93ab251a6d1b280a, - limb2: 0x30ef42d14462cedb6bd4cd3c, - limb3: 0x347e4c0ebca687e0a973b1f + limb0: 0x7d304eb031f9bc4b38f6d70d, + limb1: 0xc4e38090e54ed892233ede35, + limb2: 0xb0a3154629667f054139f06f, + limb3: 0x17a094346b9a2062906e5aae }, u384 { - limb0: 0x2a2032a59412e347bfa24b9b, - limb1: 0x7f3752add0b6154629e67418, - limb2: 0xfdc58e397535d80696a0dbf3, - limb3: 0x131ef4646b865d64e2065e3c + limb0: 0x92e93f43f2a006fee34632b4, + limb1: 0x11db581388e3eeb0abb7ff91, + limb2: 0x969d98efc0618e585837b803, + limb3: 0x193a3c472044bc83f5ed993 }, u384 { - limb0: 0xead72860b8a14646a1a5661f, - limb1: 0xa3663cfca7561733473916af, - limb2: 0xf15019556fdd67b6da3fda27, - limb3: 0x1670dafbfc19d6cad10d6c7e + limb0: 0xae03301ee7873a0c06471742, + limb1: 0x6ae18b57948fca0f7352a2be, + limb2: 0x2df5db7a15767268977dfdc2, + limb3: 0x5fd1ec7f48aa9f1193ffe39 }, u384 { - limb0: 0x3391a81e602f14c38188eee3, - limb1: 0x975cbcfb40961a280378569c, - limb2: 0x9f234765b64f560277d9f406, - limb3: 0x6dc909c50663a19e3ebdeb3 + limb0: 0x73d68be8c18ac8c212cd5f98, + limb1: 0xb9baaa2729c10bc2b56ac150, + limb2: 0x1db414afd702ec9d3f6168ff, + limb3: 0x7198c7f628de1a549116757 }, u384 { - limb0: 0xb86d9a44395b2a2f46a2c164, - limb1: 0xc084ae4273062dd105f2819a, - limb2: 0x4836398d8d4bb2871fbce97, - limb3: 0x5bc1abf83bb325b528c8e45 + limb0: 0xadfa3de619da61306259b0e1, + limb1: 0x2bc8524ab3c1ff80019668e9, + limb2: 0xd636d0078117bcb968153fe2, + limb3: 0x176a964aca9d9051e4ec7ea0 }, u384 { - limb0: 0xf92f53a2a0504482f35b2acf, - limb1: 0xb85f8400751b48fef8cfedd7, - limb2: 0x828f626aa2171a799f95c0d6, - limb3: 0x12f330aac18d89fcaf3c407d + limb0: 0x137d7900568ce4cac8256c3c, + limb1: 0x3958d7c795f3f9b8bcaeb4cd, + limb2: 0xe583ae3fed5f5229308525af, + limb3: 0xde7f00308365525712ae3ab }, u384 { - limb0: 0xc17590321c013da56aecffae, - limb1: 0x5d29755e0fe5dfe06e06db82, - limb2: 0x4480eef23997db0712db3823, - limb3: 0x19f8b0ceae33d9bdba235c69 + limb0: 0xa1fd6f008c5911bc039c5147, + limb1: 0x167afdea2888106d5bc665ff, + limb2: 0x158bf025e04a732848eb4c77, + limb3: 0x126d687515d2860ff54c750 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] @@ -21354,254 +21326,251 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0x5826de1812be32aa4fd68368, - limb1: 0x875f159d2a1f3b5a17897138, - limb2: 0x2da4acf62303dacc6e418f2f, - limb3: 0x1390f93e5c4aba54c62c30f6 + limb0: 0x8d97b73cdb43563a0452b7d, + limb1: 0x7d5ddca654bdefa6881d9654, + limb2: 0x4c35350e051349a7e6aa9ad4, + limb3: 0xb7f6606280ce946c3ea144e }, u384 { - limb0: 0xbf3fae71abd4f99dcb336252, - limb1: 0xd549357eac46cfa0c01dc51a, - limb2: 0xedadc705dc73306e15340082, - limb3: 0xb84ae703e5746a43912b1dd + limb0: 0x116f9c0f23d068ad012d4aa2, + limb1: 0xea9129b4f4743cba98284f86, + limb2: 0x80385d547d66220ffbb6b163, + limb3: 0x91ff45546384b5de5975571 }, u384 { - limb0: 0x6b9c0b92f4348dc078c947cc, - limb1: 0xc298c72d74d7594cbacdb05e, - limb2: 0x8169d72290a16752aa4d1601, - limb3: 0xc2fcd9a5430ce6890f11c5 + limb0: 0x4494d2bb8c5ec9b229950465, + limb1: 0xd437cd50c862d090b99347c5, + limb2: 0xe92945b1aace415e2f674155, + limb3: 0x58becb4ecd27a4bc5cda037 }, u384 { - limb0: 0xf4238b3d3c9e4a66ee494e4b, - limb1: 0xbfbc1913d027fcfeea9552e2, - limb2: 0x7a61faa3578b09452fc9a745, - limb3: 0x10c045ddf8e3f82ef8a0ae43 + limb0: 0x60ddacf8ec05fe5257616a96, + limb1: 0xc4d2406031b3bb54e2e4488b, + limb2: 0x768b5821493a0cb3c3eda69d, + limb3: 0x166a899fc6d387b46a7ee154 }, u384 { - limb0: 0x15cba5360a76a0c7407c40c5, - limb1: 0xc5cc7c80fe304db0a72e6d05, - limb2: 0x829160287dca19cec0cd4756, - limb3: 0x1b1a26e5bc98f5d2a2ca7a1 + limb0: 0x6190d854f03bd5569afd53ab, + limb1: 0xeabb610cf40490a0ab48431e, + limb2: 0xbdd2a561d09ecf22f77b7f37, + limb3: 0x31ddb0adafd2dfc76be369d }, u384 { - limb0: 0x258caef8747723c3110f0ded, - limb1: 0xf0bf2b42ec5230164ce2ba65, - limb2: 0xab9547205c44d61523cadcfc, - limb3: 0x4348331fe20263564bff75f + limb0: 0x130b8ba25ab611c0764c3b63, + limb1: 0x8a656889c3ea76906b35c999, + limb2: 0xe2aa9c90368f54992cb761d2, + limb3: 0xe49a97d3263ebd7a2ef3975 }, u384 { - limb0: 0xf8f58a200df2166a86353531, - limb1: 0x4adc19543e3faf3a49f30434, - limb2: 0x8c3fc4434b510d6eecc06f4c, - limb3: 0x11506352b54d9cdfe5b0ab45 + limb0: 0xc50f0a4eb5569f9610851d88, + limb1: 0x2d394c089e5a05de1179ca82, + limb2: 0x31e05d1d6d27576c210b5fc4, + limb3: 0xa5922c8fad9c45728c3dd34 }, u384 { - limb0: 0x4bf1f622c900769207abc789, - limb1: 0xf54e48855a0f87da42197786, - limb2: 0xc3444d213ca3b02892d8f476, - limb3: 0x10cb707b92ac133d7d5f3f9b + limb0: 0xd3cfe2a9104e7d71cc3a6974, + limb1: 0x668cc3e6f0353823b7f13c21, + limb2: 0xfbb52da660f3f85108c1d985, + limb3: 0xee36432b43656d3a2bd781 }, u384 { - limb0: 0x5d868527d8901f4cc570161d, - limb1: 0xb39869507b587b125ddf7b0a, - limb2: 0x21a5d66bb23ba5c279c2895f, - limb3: 0xd0088f51cbff34d258dd3db + limb0: 0x2b4555d8a585db61b0eb7f0a, limb1: 0x465b5d8a, limb2: 0x0, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0x84afa7181c8ddb407d66e267, - limb1: 0xe49d63b5c0c0d2a0b0faa04f, - limb2: 0xd05d04db2e07d203317540c3, - limb3: 0x15e0726b0192aeea1a64aace + limb0: 0xbe0b8fcbbf8f57acf95e5b2d, + limb1: 0x60410d1bde915351e52a4ecd, + limb2: 0x143f4ef6760d2f69ee3b91d3, + limb3: 0x4ab2b467683a62205f71434 }, u384 { - limb0: 0x60f835fd0fd00cb7cccdd9c1, - limb1: 0xe614d04402a15bb4ee712f01, - limb2: 0x494d5f423c20d840c0de4102, - limb3: 0x1426f73462cccf9e0a307d7 + limb0: 0x2828294e854551350ec72f61, + limb1: 0x387ff2794842ca8cb8516d35, + limb2: 0x91d2d56dc2d5b9b0ce572643, + limb3: 0x6349df37e0129e5e0a7032 }, u384 { - limb0: 0x17497b5887b92a382c243571, - limb1: 0x7a0c83773972ff4db774a50e, - limb2: 0xcd4b73f70fa7a363f90886, - limb3: 0xe72c59f19069e073e4ae23 + limb0: 0x284d182a84e1cead41d1d5f8, + limb1: 0x3930e79643a0a891db1e077e, + limb2: 0x20ff7fb2e432228b5c7f4977, + limb3: 0x12fbdc9135af1b876cfe74e6 }, u384 { - limb0: 0x8b8062031a67547a8c6d7766, - limb1: 0x50abd276b63086ba4efdc00c, - limb2: 0xca4f70be7e43106902205414, - limb3: 0x2b8319dc612926065cc9402 + limb0: 0x55e1eef1b48be4c8318713b5, + limb1: 0x225c61a7fdcba8817b89fbe9, + limb2: 0x74fb2f1ed8b1859097a9f915, + limb3: 0x14e5b4df2d1d6e27f9f5e5b }, u384 { - limb0: 0x942ec32ecebd98d7edebeab2, - limb1: 0x7cf1ec861640a7e512023dd2, - limb2: 0x14f02d36a3409d5a7485321c, - limb3: 0x56f3581d0f3bbabf6de8e90 + limb0: 0x4a2a52ad29b7a241be41a30, + limb1: 0xf5cb02db337331c6e6eb2a4e, + limb2: 0xed4d23bd3922087953b464c2, + limb3: 0xaee5c34b23dec9a004c2d17 }, u384 { - limb0: 0x1145f168367182a54d3d7aa6, - limb1: 0xadcf75debafaa5279c00b381, - limb2: 0x3074ce8d973bc7fe6653dadc, - limb3: 0x102e3cfd85bacd8b99f4cf88 + limb0: 0xc5670faf513b381598c13e51, + limb1: 0x600f4f8d60355e880d6dabe5, + limb2: 0x33ccaf832c766aaaa6a69b6b, + limb3: 0x74bb9a53e3bd4dc4cf4f9f2 }, u384 { - limb0: 0xcb6c83335e861a3fb09c405c, - limb1: 0xaeb51438e60de0ca08d8e886, - limb2: 0x7b8e2b71d624a84ab29c7b9c, - limb3: 0x10b4528b1dad5221fe203488 + limb0: 0x5e81eebb3b5de9a1bc014b27, + limb1: 0x10157ff1e1b9211aff5ab698, + limb2: 0x31d838b42c781abf8406b1f8, + limb3: 0x6480f9e14ea4efbfcbd0819 }, u384 { - limb0: 0xe7838dc0d4dc1a51b6e978c1, - limb1: 0x6c368f2278e9fc92539d069a, - limb2: 0x7e60de6d6d72c8ade2e3aa2f, - limb3: 0xe8430feabc7bd6b0ad072fb + limb0: 0x3c5ff0798ed713873abd39f2, + limb1: 0xde6814d9e12af19c41ae977, + limb2: 0x800f16cf42de59f6af5ee5f, + limb3: 0xb42b25c22d27ba199aba09 }, u384 { - limb0: 0x5fe7c0b1f48897079f5067cb, - limb1: 0x2d70401cda2cc223112c323, - limb2: 0xdc03cc3ec330cd3714217c3, - limb3: 0xfde7e792e8aadb917bcf399 + limb0: 0xf899ed836cb0ebb3ac428f87, + limb1: 0x111c772dcaa101b85cbea5aa, + limb2: 0x967b626d281d8883b6cb848e, + limb3: 0x172f20613c69083129faac59 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] .span(), b_num: array![ u384 { - limb0: 0x880eed1acd8d62c8d7020b4b, - limb1: 0xb2d894707d2f3a6158a542cd, - limb2: 0x7efca4f9c1ea6bbbadb2b065, - limb3: 0xd5b8015fe179aa0a45e7ae7 + limb0: 0x329b8728cebdf99783f12f12, + limb1: 0x2cc1ad30ae10daa253c027fa, + limb2: 0xc534cb3e9ce2b2020b61dd78, + limb3: 0x508377e8dc2566f86b4269c }, u384 { - limb0: 0x7c654e2302beb3d1b3577d0a, - limb1: 0xc1b0d7467e10a10ea645a3d3, - limb2: 0xd27a5aa63fafb72a4c4dadd4, - limb3: 0x1097835391147e2e156a265f + limb0: 0x7700116dc882ce8b40057c1b, + limb1: 0x699f2694cef30e8ba49473e2, + limb2: 0x44516ae8eb8b5b77588922b9, + limb3: 0x8c44771b3ee82094c82654c }, u384 { - limb0: 0x7fd2b76ae6436a2cca8d6825, - limb1: 0xdc0acb13a01f44717ab674c2, - limb2: 0x84e8e42191b04799c4dc4770, - limb3: 0x4159dabbf6c20dfa94d001d + limb0: 0xfe040d7e1702758acfc2047c, + limb1: 0xc3e7efc7ef76ed3644b5e142, + limb2: 0xd91bfeab5c007d574cf499c0, + limb3: 0x10bf22be7ee27851b4f2deb3 }, u384 { - limb0: 0x6729a2575ce7f00dd508dae6, - limb1: 0x29b1a6dee07c9cd779e722aa, - limb2: 0x74e1ddfe13d5b145cb50334f, - limb3: 0xecd28f28f307a6680483946 + limb0: 0xc12b5f32dbce6939583e8d39, + limb1: 0x8720acb6167c60f25e4a2e75, + limb2: 0xd6bec161d58364c77c42ff91, + limb3: 0xfd0679973a297ad5c2f1989 }, u384 { - limb0: 0x9992fa5559c1666a440bc5e, - limb1: 0xcaed9d33b3d6276d8d822978, - limb2: 0xabf8b4e8dc14bd106a4f0521, - limb3: 0x39bb7f52fa0717b36fe9d4e + limb0: 0x649210aced8d48cc4459eaef, + limb1: 0x5032a1a16e7df35e171ed491, + limb2: 0x8b470daeed48f8faf9eb87c2, + limb3: 0xb6d481ab6b21d7b9ab2ac99 }, u384 { - limb0: 0x6e024d8e4ef34af6a37b268a, - limb1: 0x5be18d1729e86de01f1eaa9e, - limb2: 0xdef5459adf7fc9f72f6759, - limb3: 0x121d47050c6693e394499f41 + limb0: 0x7fde6b9f33c70203898e9b3a, + limb1: 0xcde7bf3a6121547abfb9e1ff, + limb2: 0xcdfd2765c98b0059d6a753ae, + limb3: 0x1d23caefdb3282d2fec381f }, u384 { - limb0: 0x8f660846c43cfffe3b2ee64a, - limb1: 0x208b15b2792b6442cc941985, - limb2: 0xfc1d5a20fc389451cb049b18, - limb3: 0x163b15478db2941d07ed608d + limb0: 0x70210e6fc2e3eeb3b375fdab, + limb1: 0xfe9415e87ebe4c4d1b598dc8, + limb2: 0x8dc14dc2a9e65fc741411fa7, + limb3: 0x1687492daf3dedff5c07eea5 }, u384 { - limb0: 0xc0b2a3f41a618449786902fc, - limb1: 0xbcd3320d80d0575da83b1af2, - limb2: 0xbe3529be52af0f4201d1b554, - limb3: 0x101955d11e9d6a61d76a8ff7 + limb0: 0x7f5dd64915c03abd8185a757, + limb1: 0x64fc5f4b47b1c7778360457c, + limb2: 0xb5159f57657b1703bb57ee1d, + limb3: 0x1610bbde1c5e09d04518fd79 }, u384 { - limb0: 0x333941e7cf95e9917b54e1a9, - limb1: 0x3843027924a374c1a9a9729f, - limb2: 0xd0dabe5dd5d369d8c1451cad, - limb3: 0xabdcbf76b19bebbf5fc395b + limb0: 0x87f2fc71fea51a8aef45e244, + limb1: 0x244f5fc680958df65ffb7013, + limb2: 0xa065185706ef153b9bdd543a, + limb3: 0x868682e1a13a9008596ce93 }, u384 { - limb0: 0x6c009a93b02f078ce2052764, - limb1: 0xbd421d253ba0ba60bf308a78, - limb2: 0x4ad937d0629a11476a609c7d, - limb3: 0x41530d7b50804af4b0352cd + limb0: 0x38da73b38765d0050e89afe7, + limb1: 0x2668cd2b0c5cb1d7a5452a3a, + limb2: 0x96582d4a2e2002231420cce4, + limb3: 0x45d0fe4a493fba825270ab3 } ] .span(), b_den: array![ u384 { - limb0: 0xfec29c61443a6d01f59c899b, - limb1: 0x5ce316f41ef0681667e68141, - limb2: 0x77910ce68ab9657deb45cad1, - limb3: 0x97e93ed59cb07d9883fb418 + limb0: 0xf82e3f2efe3d5eb3e5796cb4, + limb1: 0x8104346f7a454d4794a93b36, + limb2: 0x50fd3bd9d834bda7b8ee474d, + limb3: 0x12acad19da0e988817dc50d0 }, u384 { - limb0: 0x83e0d7f43f4032df33376704, - limb1: 0x985341100a856ed3b9c4bc05, - limb2: 0x25357d08f08361030379040b, - limb3: 0x509bdcd18b333e7828c1f5d + limb0: 0xa0a0a53a151544d43b1cbd84, + limb1: 0xe1ffc9e5210b2a32e145b4d4, + limb2: 0x474b55b70b56e6c3395c990c, + limb3: 0x18d277cdf804a797829c0ca }, u384 { - limb0: 0x5d25ed621ee4a8e0b090d5c4, - limb1: 0xe8320ddce5cbfd36ddd29438, - limb2: 0x3352dcfdc3e9e8d8fe42219, - limb3: 0x39cb167c641a781cf92b88c + limb0: 0x3e8c60aa9f893ab50748028a, + limb1: 0x1661f9172120b5ff2f201dfb, + limb2: 0xfd66a51cc7d9f3238af3005e, + limb3: 0x17ed4e7063bca0e91dc2842b }, u384 { - limb0: 0x15d2f24cc2c2d2aaf1d1554, - limb1: 0xc01bdaefa2d1f765ce45a083, - limb2: 0xb64f1afdc29cc82246717e55, - limb3: 0x6c026f7e05d11d1667b5323 + limb0: 0x15934b9291beeacdbf7aaa01, + limb1: 0xe9b293bbd5bff557d3523e73, + limb2: 0xe82c0b71d8d345ac4ce37627, + limb3: 0x9e4987e41cb01ac04748da1 }, u384 { - limb0: 0xb1b342b84ac67017847d8489, - limb1: 0xd9dc825c5ba3fb49367a264b, - limb2: 0x9d0e141cc9234daa92f30974, - limb3: 0x16ff457a89fbbba9bc1d4217 + limb0: 0x895ebdfa15b439c57e57ed76, + limb1: 0xa87b2b451f5e9b843552166e, + limb2: 0x3bbb78b42e6901129a3a68f, + limb3: 0x121ba8c7c757de6c141f7cdc }, u384 { - limb0: 0xf9b940f9ed8134cd611acab3, - limb1: 0x62e8b5b037fba7a3ea1f7314, - limb2: 0x3c092bfb8b103093163e4e7a, - limb3: 0xd9dfc7b957bd2da45809cd7 + limb0: 0x8c9556e80fcfaf03a4d72491, + limb1: 0x523d532acdc52c8df228b716, + limb2: 0xace690e8319481b10394a465, + limb3: 0x1629b13bf51e885e55b6b4f8 }, u384 { - limb0: 0x568a6ed12081bd794edf2380, - limb1: 0x3d1e7e1861061d9a3509622a, - limb2: 0x31f0c4d70de71a89e5881d08, - limb3: 0x118757f5c9c80db3c81616b8 + limb0: 0x1e95a9dee8048b4f218c95a6, + limb1: 0xfb818ece8dff36c95a48d64c, + limb2: 0xf9106518261aa509b43fae35, + limb3: 0x6d87dc0cfb2c382777d709 }, u384 { - limb0: 0xcf94fa32ae30021ec9927860, - limb1: 0x5f6a83ce0c86ade6231e5840, - limb2: 0x87dc4d3d901d29081909b55b, - limb3: 0xb7dd5a80d12e4238be90b11 + limb0: 0xf62267110df7c84106d901f8, + limb1: 0x2d650811abbdee2df756d02a, + limb2: 0xd50e97109d99ef6ff8c1e3f, + limb3: 0xdbf08cbbaf28b8266b7153c }, u384 { - limb0: 0x7ce8f430da96dec3ca8019d1, - limb1: 0x83990e030d72f3440447c012, - limb2: 0x9d92bb171aa218bd50cd01aa, - limb3: 0x1a501239365d0a11795a6c9 + limb0: 0x93d2c5bdd601e6e449cc7c6c, + limb1: 0x6eeeb461a6a682fd24644295, + limb2: 0xc3d732b19f86aa2aa7457565, + limb3: 0x1605056b836041d2138cb435 }, u384 { - limb0: 0xcb6c83335e861a3fb09c4060, - limb1: 0xaeb51438e60de0ca08d8e886, - limb2: 0x7b8e2b71d624a84ab29c7b9c, - limb3: 0x10b4528b1dad5221fe203488 + limb0: 0x5e81eebb3b5de9a1bc014b2b, + limb1: 0x10157ff1e1b9211aff5ab698, + limb2: 0x31d838b42c781abf8406b1f8, + limb3: 0x6480f9e14ea4efbfcbd0819 }, u384 { - limb0: 0xe7838dc0d4dc1a51b6e978c1, - limb1: 0x6c368f2278e9fc92539d069a, - limb2: 0x7e60de6d6d72c8ade2e3aa2f, - limb3: 0xe8430feabc7bd6b0ad072fb + limb0: 0x3c5ff0798ed713873abd39f2, + limb1: 0xde6814d9e12af19c41ae977, + limb2: 0x800f16cf42de59f6af5ee5f, + limb3: 0xb42b25c22d27ba199aba09 }, u384 { - limb0: 0x5fe7c0b1f48897079f5067cb, - limb1: 0x2d70401cda2cc223112c323, - limb2: 0xdc03cc3ec330cd3714217c3, - limb3: 0xfde7e792e8aadb917bcf399 + limb0: 0xf899ed836cb0ebb3ac428f87, + limb1: 0x111c772dcaa101b85cbea5aa, + limb2: 0x967b626d281d8883b6cb848e, + limb3: 0x172f20613c69083129faac59 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] @@ -21610,10 +21579,10 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0x4a7b0b69c5956d6c232ff972, - limb1: 0xa68b6c7c2cdd246ac52f9204, - limb2: 0x9d600f6442c41f51cabe781b, - limb3: 0x737b899c5804e79c79c3e29 + limb0: 0x2c5b33c1774358ecfd698492, + limb1: 0x4e32e744beb9a87c6847dba8, + limb2: 0xef93c997061a9d270836d2c6, + limb3: 0x13783cf9d5ae741c0c0249c6 }, u384 { limb0: 0x302ea91a3b09524e7c49fbbb, @@ -21625,66 +21594,66 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0xbd9689c938d5699fea760ea4, - limb1: 0x188bec4abaaedf7c5ac0261f, - limb2: 0xb72326a3952d50af97574296, - limb3: 0xbd0a4b5d52a136ed1662b7e + limb0: 0x95d9b1cf3c006e357346b034, + limb1: 0xba0f9969bbc6cdfba5b900f8, + limb2: 0xecd2325e90884581f56a2583, + limb3: 0x14830ebe316ebbc41d582608 }, u384 { - limb0: 0xa3f8b4f117530a57bdb2d14c, - limb1: 0x7d9596122765d39b5408aa1e, - limb2: 0xadd248d8461183b9222a3137, - limb3: 0x12c58b2a6d220bb049e5c224 + limb0: 0xcee77b70f2dd61d4932610c0, + limb1: 0x8d1993ed92784c29ac93987c, + limb2: 0xbab52a8279af32b2304e9335, + limb3: 0x1d50e57f660f57681b820d8 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] .span(), b_num: array![ u384 { - limb0: 0x2e23fed9a4f5965a2b7d7bb1, - limb1: 0x6e0bd5721920e46e6b0883fa, - limb2: 0x7b2ab2c9bdac4b904b0d8504, - limb3: 0x18448797e57913d8bfc8d6e1 + limb0: 0x6d9ce56950fe7b4be8dda4bc, + limb1: 0xfafc70bb0bc94153448d0ebd, + limb2: 0xa7d740d1ef9e280243c775cf, + limb3: 0x4703f17bbdcb9a356a7e4ea }, u384 { - limb0: 0x84a4f17255361d4adda730c5, - limb1: 0x524fb8f45dd258f9a6c49e64, - limb2: 0xf0ea4fb8170a94bceb8fb1de, - limb3: 0xba7bd6f274b13933a713ba0 + limb0: 0x640572e027ac0f52ce96ac42, + limb1: 0x322c6f8610cf69fba521e82b, + limb2: 0x3076da9ff7d80e5a1b1d2c9f, + limb3: 0x90b074dfa3b766158915d06 }, u384 { - limb0: 0x3b5d6b098d82ba525bd8514, - limb1: 0xa1d1472dff04f1b3a58f5145, - limb2: 0x58a668f189fe396aa2592496, - limb3: 0x4a6bacc825b01f669f011c1 + limb0: 0xad6c164ec93bc746cd5632f, + limb1: 0x9d87a323b35ace474422d16d, + limb2: 0x3331566e2e6503fa9fe5b7b0, + limb3: 0x5888e8bf01449e8df6447b1 } ] .span(), b_den: array![ u384 { - limb0: 0x450627252956a67fa9d88fe5, - limb1: 0xfafede89f40a87cd4c549880, - limb2: 0x9940edb6f03df73969d7f798, - limb3: 0x154180ed1b286720fa7d0644 + limb0: 0x436ac73dc204b8d5cd1bc0cf, + limb1: 0xb2abedc40b0855823ae003e6, + limb2: 0xe965c2f414bb3378fb195dd0, + limb3: 0x409053a193b3b41940da100 }, u384 { - limb0: 0x2d3ad3c4e94e295ef6cbefda, - limb1: 0x27f4b306b035622512caa87d, - limb2: 0x30b1c9b24f5777daa19e9f5f, - limb3: 0x171408d54188618c915fb926 + limb0: 0x3b9dedc3cb7587524c984300, + limb1: 0x34664fb649e130a6b24e61f3, + limb2: 0xead4aa09e6bccac8c13a4cd6, + limb3: 0x754395fd983d5da06e08362 }, u384 { limb0: 0x4, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xbd9689c938d5699fea760ea4, - limb1: 0x188bec4abaaedf7c5ac0261f, - limb2: 0xb72326a3952d50af97574296, - limb3: 0xbd0a4b5d52a136ed1662b7e + limb0: 0x95d9b1cf3c006e357346b034, + limb1: 0xba0f9969bbc6cdfba5b900f8, + limb2: 0xecd2325e90884581f56a2583, + limb3: 0x14830ebe316ebbc41d582608 }, u384 { - limb0: 0xa3f8b4f117530a57bdb2d14c, - limb1: 0x7d9596122765d39b5408aa1e, - limb2: 0xadd248d8461183b9222a3137, - limb3: 0x12c58b2a6d220bb049e5c224 + limb0: 0xcee77b70f2dd61d4932610c0, + limb1: 0x8d1993ed92784c29ac93987c, + limb2: 0xbab52a8279af32b2304e9335, + limb3: 0x1d50e57f660f57681b820d8 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } ] @@ -21693,17 +21662,17 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0x7700a1eaba87cfa8f8d6626d, - limb1: 0x26ade21a4ba5357dbef543fe, - limb2: 0xa9fb16d24a8f5e03434bc930, - limb3: 0x5b9a276733cb3ed1480b643 + limb0: 0x8052fd32b01027d7d0f309f7, + limb1: 0xb26009560a5e978eebf2cbc1, + limb2: 0x49a1e78948e630d6e4798ce3, + limb3: 0x9f505192995566a7f90b591 }, g_rhs_sqrt: array![ u384 { - limb0: 0x1e54f7257e987e725839f44, - limb1: 0xb9aca7d4e4134583d5e633e8, - limb2: 0x3b854e2e6459636278f04e03, - limb3: 0x996fc8dece1f20077655e10 + limb0: 0x60312fd85881407cab03da34, + limb1: 0xf0fe4de7c03a9a9acd7720f5, + limb2: 0xfd677f976398a9779a22b1a, + limb3: 0xc08686697e6084330938dde } ], }; @@ -21713,16 +21682,16 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0x6a23b3b2e3364836acd86361, - limb1: 0x34dd376f2c34ffa798099edf, - limb2: 0xb662c20ee8ae59616add16bc, - limb3: 0xe85f38d645818c651ac6d7f + limb0: 0x3e56f28e7b8066f1bb140da2, + limb1: 0x6df9eeb97668b6faf8cb23aa, + limb2: 0x688600b3a247a8bde6abeb25, + limb3: 0xfe8842c5aab9abde963e3d4 }, y: u384 { - limb0: 0x31df91616171404d30855973, - limb1: 0xf26f1ecbcc476ae5df007bc0, - limb2: 0xbc47bbf94c48731136c34f0, - limb3: 0x151fac7825c3dd9c817d7dba + limb0: 0x7cf6ee3d9f05bdb478c16cc0, + limb1: 0xaf068a3a2b579604827818cf, + limb2: 0xc55a253e580619a90be8a582, + limb3: 0x6396d55ac66fd5ecbb68dae } } ); @@ -21734,15 +21703,15 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0xd7357d697c562fbfaafb6137, - limb1: 0x8422bb8241972a273a043019, - limb2: 0x881d0eae39f0d85a, + limb0: 0x113c8d620e3745e45e4389b8, + limb1: 0x85b8ff52d905fd02fe191c3f, + limb2: 0xf5d132d685201517, limb3: 0x0 }, y: u384 { - limb0: 0x3525d2dc281a0e0410693c6a, - limb1: 0xaec37cec9f4d071ef2f11d21, - limb2: 0xbcd550fc1da1efd2, + limb0: 0x60c0ba1b358f375b2362662e, + limb1: 0x6abfc829d93e09aa5174ec04, + limb2: 0x7bc4637aca93cb5a, limb3: 0x0 } }, @@ -21750,7 +21719,7 @@ mod msm_tests { .span(); let scalars = array![ u256 { - low: 0x2012ded6f0ed51f3a38ce52f56170fdf, high: 0x42fb3247d0dd61ed4fdbe43a39c12d91 + low: 0xeb1167b367a9c3787c65c1e582e2e662, high: 0xf7c1bd874da5e709d4713d60c8a70639 }, ] .span(); @@ -21758,170 +21727,173 @@ mod msm_tests { array![ ( array![ + 0x1, + 0x1, -0x1, - 0x0, -0x1, 0x1, - -0x1, 0x0, 0x0, - 0x1, - -0x1, - -0x1, - -0x1, + 0x0, 0x0, 0x1, - -0x1, 0x0, -0x1, -0x1, - -0x1, - 0x0, - 0x1, - -0x1, - 0x1, - 0x1, - 0x1, - 0x1, - 0x1, 0x1, 0x0, 0x0, 0x0, - 0x0, 0x1, -0x1, 0x0, 0x0, + -0x1, 0x1, 0x0, - 0x1, - 0x1, + -0x1, 0x0, + 0x0, + -0x1, 0x1, -0x1, -0x1, -0x1, -0x1, + 0x1, -0x1, 0x0, + 0x0, + -0x1, + 0x0, + 0x0, + -0x1, -0x1, -0x1, 0x1, 0x1, -0x1, -0x1, + -0x1, + 0x1, + 0x0, 0x0, 0x1, - -0x1, + 0x0, -0x1, 0x1, 0x1, 0x1, 0x0, - -0x1, 0x1, + -0x1, + -0x1, + -0x1, 0x1, + 0x0, + 0x0, + 0x0, + -0x1, -0x1, 0x0, 0x0, -0x1, 0x1, 0x1, - 0x1, - -0x1, - -0x1, - -0x1, 0x0, -0x1, -0x1, + 0x0, + 0x0, 0x1, 0x0, -0x1, + -0x1, ] .span(), array![ - -0x1, - 0x0, - 0x0, 0x1, -0x1, 0x0, + -0x1, 0x1, + -0x1, + -0x1, + -0x1, 0x1, - 0x1, - 0x1, + -0x1, + 0x0, 0x1, 0x0, -0x1, - -0x1, + 0x0, 0x0, -0x1, + 0x1, + 0x1, -0x1, 0x1, 0x0, 0x1, -0x1, - -0x1, 0x0, 0x0, + 0x0, + 0x0, + -0x1, 0x1, 0x1, 0x1, 0x1, + 0x0, + 0x0, + 0x0, -0x1, 0x1, - 0x1, - 0x1, -0x1, -0x1, + 0x0, + 0x0, + 0x0, 0x1, - -0x1, 0x0, -0x1, - 0x0, -0x1, 0x0, -0x1, - 0x1, + 0x0, 0x1, -0x1, - 0x1, -0x1, -0x1, 0x0, - 0x1, - 0x1, - -0x1, + 0x0, 0x1, 0x0, -0x1, 0x0, + 0x1, -0x1, 0x0, -0x1, -0x1, 0x0, 0x1, - 0x1, - 0x0, -0x1, - 0x1, 0x0, 0x0, + -0x1, + -0x1, + -0x1, + -0x1, 0x1, -0x1, 0x0, 0x0, - 0x1, - 0x0, - 0x1, - 0x1, - 0x1, -0x1, -0x1, - 0x1, - 0x1, + -0x1, + -0x1, ] .span() ), @@ -21931,73 +21903,73 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0x21fb3cab144e0881f6f8f768, - limb1: 0x7d45a753a79667c50617bdfc, - limb2: 0x2f919c294b693ce0, + limb0: 0x9436821257142dd72820672d, + limb1: 0xc620eb419f1fe7d73cb5fefe, + limb2: 0xc64a9c09ac1f5ea7, limb3: 0x0 }, y: u384 { - limb0: 0x76249d403ed363186a243003, - limb1: 0xbac77918201d10fa41899b17, - limb2: 0xcbefbf9c6ca1901, + limb0: 0xa7511b8bdff092bde43f2151, + limb1: 0x22e576fcf3094192fbda2872, + limb2: 0xdfa1f4b9bd91fa05, limb3: 0x0 } }, Q_high: G1Point { x: u384 { - limb0: 0x8e3fb86624f8706242fc7e3d, - limb1: 0x79d7d46371d069b1da247c48, - limb2: 0x35c24c4e38827031, + limb0: 0x51fafdb2da1ff7c9a8a14b2f, + limb1: 0x6cee75a31e68e31fe52c0800, + limb2: 0xe68f39600d63e2a7, limb3: 0x0 }, y: u384 { - limb0: 0x320dd150a928d8df52f4d6bb, - limb1: 0x59288c5858c7979519d0c1ec, - limb2: 0xa7c723045fc43fba, + limb0: 0xc7545cbaf91748ede45e709, + limb1: 0xe1e9f105b92f17716f22ec86, + limb2: 0xa2c4c708bc48d9a0, limb3: 0x0 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0xf94736189acf015a4c4f8772, - limb1: 0xd5ea4d6b04e7a5a78f586820, - limb2: 0xf93966b0a8531755, + limb0: 0x310c0bbb7ee3baa463a14b32, + limb1: 0xe4a2c10127642331129d8f9f, + limb2: 0xd48ddb30d3212023, limb3: 0x0 }, y: u384 { - limb0: 0x4e74ea38c8e6ba121fcfc773, - limb1: 0xc6e51b126a53c426c125cdcf, - limb2: 0xded087e28a5562b1, + limb0: 0x1584ff8e95a6c0cf0026addf, + limb1: 0x8df5471b2fd1d86d30f5b117, + limb2: 0x1b5d5d6744ca8ef8, limb3: 0x0 } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0xf7d8a92f8a2b758d613e1ca9, - limb1: 0xfe54c59514b15d9802e2e97a, - limb2: 0xf8b3768cdab146d7, + limb0: 0x6a5d3a2cf3448668662aca55, + limb1: 0x1076ef6b6759345d6ca429ca, + limb2: 0xa1aea959684732a4, limb3: 0x0 }, u384 { - limb0: 0x1817892d9f3b69f9dd7f081f, - limb1: 0xffffffffffffffffebd89bb9, - limb2: 0xffffffff00000000, + limb0: 0x3666e21a57418f0209b24b28, + limb1: 0x7fffffffffffffff96d52f19, + limb2: 0x7fffffff80000000, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0xbb0bf30ef1225445507f4324, - limb1: 0xd1a5199a080d5fdcea858499, - limb2: 0x3c16ee760c0e8fda, + limb0: 0x87bbdf169ced2d5e5098fe3b, + limb1: 0xac3459f601742c84cb1f7316, + limb2: 0x1b896bbecdb611c4, limb3: 0x0 }, u384 { - limb0: 0x6cf45eb6f5bc7be5e0ba760, - limb1: 0xfe979d2a16d26e13bfe411eb, - limb2: 0x485155277aa5eac5, + limb0: 0x5a8cf08b9ab48c44799c0f19, + limb1: 0xb426156b87da1b25c530e4c4, + limb2: 0x43e4311dcec08c42, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -22005,54 +21977,54 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xe267cb924e7c7b6cda03be4b, - limb1: 0xe5a3e6f8fe66e438ad2796ad, - limb2: 0xeca0b7b45f98f31d, + limb0: 0xbde7221f2db1dfa47bd34895, + limb1: 0xc4788a9513c2136398765838, + limb2: 0x77ed71d38c9f2a0, limb3: 0x0 }, u384 { - limb0: 0xb15f3bc7e7983510965aec5d, - limb1: 0xdb57fa56abb5de37515165c4, - limb2: 0x40647d1a2a4662ef, + limb0: 0xf5247cfee80173a745321e36, + limb1: 0xd4145b48e93e56e3821a287b, + limb2: 0x99eef966d66a8d64, limb3: 0x0 }, u384 { - limb0: 0xcbdca688e7d425664616e6f8, - limb1: 0xfa46b61f9ad6eafcdba6a1ad, - limb2: 0xb16cfc65ee76b348, + limb0: 0x2156f8d21b7046b926bc3904, + limb1: 0x44cc88f546abf114315dfd96, + limb2: 0xfd838ea050e1fd2d, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x8954dd769a2721fb0f9c00d4, - limb1: 0x3e49248655a91d655ac2be51, - limb2: 0x55c18511de075a33, + limb0: 0x5d97116dcc6834cb3c949bb6, + limb1: 0xfa4004cb8af6fa03dfd7ba10, + limb2: 0x738aa51c820adda0, limb3: 0x0 }, u384 { - limb0: 0x4b132cffa2f0e906667c07d8, - limb1: 0xdee96d715b77eb034e862fd7, - limb2: 0x1050f3894d60a970, + limb0: 0xa2ce76f2586ec69dbabf6be0, + limb1: 0xd4004aba08489d6d77359c3, + limb2: 0xa6f6fb4232651317, limb3: 0x0 }, u384 { - limb0: 0xb7e5df33edbae5030daf6a2a, - limb1: 0xb824e5d732213c812570d0f0, - limb2: 0x81d236613a48d396, + limb0: 0xbcacdf536bb09770bafe32ff, + limb1: 0x97797d12df0a354b158a5864, + limb2: 0x8f19a27e3df8ef20, limb3: 0x0 }, u384 { - limb0: 0xbb0bf30ef1225445507f4321, - limb1: 0xd1a5199a080d5fdcea858499, - limb2: 0x3c16ee760c0e8fda, + limb0: 0x87bbdf169ced2d5e5098fe38, + limb1: 0xac3459f601742c84cb1f7316, + limb2: 0x1b896bbecdb611c4, limb3: 0x0 }, u384 { - limb0: 0x6cf45eb6f5bc7be5e0ba760, - limb1: 0xfe979d2a16d26e13bfe411eb, - limb2: 0x485155277aa5eac5, + limb0: 0x5a8cf08b9ab48c44799c0f19, + limb1: 0xb426156b87da1b25c530e4c4, + limb2: 0x43e4311dcec08c42, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -22062,27 +22034,30 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0xeea787b6c326ac86303c9d5, - limb1: 0xe837c561b6132d78f315841f, - limb2: 0x60df0794491bde28, + limb0: 0xa26ac5d381be0ce53826d15, + limb1: 0xac5f68b210cc4956b8b0f88a, + limb2: 0x7b78c46b6b8a8260, limb3: 0x0 }, u384 { - limb0: 0xae26d7fb08c55ddbb1f1ada0, limb1: 0x29ba19cb, limb2: 0x0, limb3: 0x0 + limb0: 0x5974a92ec437e566b696d326, + limb1: 0xffffffffffffffff84462f63, + limb2: 0xffffffff00000000, + limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0xcd5df741a3aa90624121f7d8, - limb1: 0x3cddf2ef95cc303da5f86f9f, - limb2: 0xf5b54391dafa6397, + limb0: 0x7a1057f0d79e91f1cac3adc1, + limb1: 0x7878e922a824ba2603bb1db1, + limb2: 0x1eb47c44b521c394, limb3: 0x0 }, u384 { - limb0: 0x9a8aca305eb15fde1208208b, - limb1: 0x205701a4c986c26ebd7539e, - limb2: 0x4220a5028d8cb775, + limb0: 0x9cc874eb17a8c251f91b2b17, + limb1: 0xd588b0a08911fdd1cbadbc2, + limb2: 0x239f93c76d7c0843, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -22090,54 +22065,54 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xf90ce889e5bdd98ba0721b0e, - limb1: 0xeb1bfafda84a3b914febe772, - limb2: 0x90f2270fba194028, + limb0: 0xa6d09ee14f34b3aa584d0301, + limb1: 0x974cb9d8d8e36fd93c59206c, + limb2: 0x4a213ca23fc23c46, limb3: 0x0 }, u384 { - limb0: 0x41b0c396ee5d78490d6a5dae, - limb1: 0x445491245a480b970727304d, - limb2: 0x16a3baaede55a5ce, + limb0: 0x598e1551f89959303c22f4c, + limb1: 0xb5c8cc8e905f939bab9c5941, + limb2: 0x8b570351acc5b57d, limb3: 0x0 }, u384 { - limb0: 0xcfdbdd763488c3f7a2b4fdca, - limb1: 0x15336642abaeebee83ef1f44, - limb2: 0xa656c23a507c2cfe, + limb0: 0x15fc71aa5379e14441861e5c, + limb1: 0x14ebf8befc989733a29cd588, + limb2: 0xad746febd48f5762, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xf8bd7ae74c94f0227e0cb133, - limb1: 0x719f6c129d7897ccdacfb1bf, - limb2: 0x2616c4280f39eadd, + limb0: 0x33a43a035b506e14e9975317, + limb1: 0xfd686306785cffd2be853021, + limb2: 0x614799578c21b5e8, limb3: 0x0 }, u384 { - limb0: 0x81a15a2f1bea91aa9caa468f, - limb1: 0xbe1700c3f21f78ad639b1cc5, - limb2: 0xb7c2cb43a8f5f69d, + limb0: 0x209486015c5ccc1b9575ba23, + limb1: 0xb53aef16646733c14fdb54da, + limb2: 0x28648cc45b05d9a4, limb3: 0x0 }, u384 { - limb0: 0xfcb352651fba1ca3f1b9fea9, - limb1: 0xaddb6d0690cf4247a1970bd5, - limb2: 0x946446d001946d89, + limb0: 0xf5fa5234f4d3f5483c80df05, + limb1: 0x8be21c375ce527250eec7369, + limb2: 0xefe77a8161c67b1f, limb3: 0x0 }, u384 { - limb0: 0xcd5df741a3aa90624121f7d5, - limb1: 0x3cddf2ef95cc303da5f86f9f, - limb2: 0xf5b54391dafa6397, + limb0: 0x7a1057f0d79e91f1cac3adbe, + limb1: 0x7878e922a824ba2603bb1db1, + limb2: 0x1eb47c44b521c394, limb3: 0x0 }, u384 { - limb0: 0x9a8aca305eb15fde1208208b, - limb1: 0x205701a4c986c26ebd7539e, - limb2: 0x4220a5028d8cb775, + limb0: 0x9cc874eb17a8c251f91b2b17, + limb1: 0xd588b0a08911fdd1cbadbc2, + limb2: 0x239f93c76d7c0843, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -22147,9 +22122,9 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0x1dfd90877510f19ad09c504a, - limb1: 0xb074e9aa525d8c79349e524a, - limb2: 0x94c66199a6ba1590, + limb0: 0xdbd313658e9f3e9a68a37516, + limb1: 0x56d390768a6d62711e052a76, + limb2: 0x3d6c26b4dd8f841c, limb3: 0x0 }, u384 { @@ -22162,15 +22137,15 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0x48bf3a82ba262fd16c12ec2c, - limb1: 0xc9036d18a6b986e3a374f1ae, - limb2: 0x6c2233a8b011be71, + limb0: 0xd099228bc0607465ceb4a483, + limb1: 0x3867065e449b561ef7c5fad3, + limb2: 0x6edc0e6073e4d6ea, limb3: 0x0 }, u384 { - limb0: 0x7879118140388e4370b3fa4f, - limb1: 0xb03dde318947f0a696831b98, - limb2: 0xd1044cff1f2a787a, + limb0: 0x7cf8f691a6fc4d91f3bd699d, + limb1: 0xae6ec95bba32f9af08366862, + limb2: 0x44e2eb6d1f7afd36, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -22178,54 +22153,54 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x3da9b6aefd3516046937b382, - limb1: 0xa45338fe4e82c9dbac25ec19, - limb2: 0xcfb78711078d444b, + limb0: 0xccbd809e2895f03793da5470, + limb1: 0x2bcca86372eadb06b6bad35f, + limb2: 0xdafdeb08efc48e0d, limb3: 0x0 }, u384 { - limb0: 0x7219031bc465d593d714ed18, - limb1: 0x19a7f8f1065dfb662a66d764, - limb2: 0xfc2465e0091cceeb, + limb0: 0xbb4bb582c20ad35e198f199d, + limb1: 0x2c69f9ebbd0d68981b13a901, + limb2: 0xba2c47433bf59837, limb3: 0x0 }, u384 { - limb0: 0x7f257ffbc9a06327fb1e094f, - limb1: 0xbdeec89080a66e3406edac0a, - limb2: 0x8bfcce511bacdfd1, + limb0: 0x811a4d87c0b0af9c8039101d, + limb1: 0xe7211695805cbbf5ff41bd07, + limb2: 0x490ee661e97242d1, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xd88e467da71f0a6fafc265bf, - limb1: 0xb891487631f73ac9a7822515, - limb2: 0x52959cdecd7b72fe, + limb0: 0xbb49727a47ff29a95b3e8134, + limb1: 0x726e35357625927d75352d64, + limb2: 0xaf58f21c6360947f, limb3: 0x0 }, u384 { - limb0: 0x8ce2e42089272e91ed0f9cb8, - limb1: 0x31352bad871fd7b970a4cdc5, - limb2: 0xe52771285282ef00, + limb0: 0x5c8910f9840ad1f64a4fb917, + limb1: 0xe7142a2c6576ef9f877ebc6, + limb2: 0x41b8554cc02ff1dd, limb3: 0x0 }, u384 { - limb0: 0x62e87c727b249173d5b6715b, - limb1: 0xa33222c0dac0b4c8a193b3ea, - limb2: 0xe7b94ed84cbb2a7a, + limb0: 0x5568cd4146d953884c9a2373, + limb1: 0xa89f614247ff99af4c79cd8a, + limb2: 0x8c1d73904bc99c44, limb3: 0x0 }, u384 { - limb0: 0x48bf3a82ba262fd16c12ec29, - limb1: 0xc9036d18a6b986e3a374f1ae, - limb2: 0x6c2233a8b011be71, + limb0: 0xd099228bc0607465ceb4a480, + limb1: 0x3867065e449b561ef7c5fad3, + limb2: 0x6edc0e6073e4d6ea, limb3: 0x0 }, u384 { - limb0: 0x7879118140388e4370b3fa4f, - limb1: 0xb03dde318947f0a696831b98, - limb2: 0xd1044cff1f2a787a, + limb0: 0x7cf8f691a6fc4d91f3bd699d, + limb1: 0xae6ec95bba32f9af08366862, + limb2: 0x44e2eb6d1f7afd36, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -22235,16 +22210,22 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0xbdb2f62bd05bb832b0470250, - limb1: 0xa50a504b283cb9149aff9e60, - limb2: 0x615f2276aa48d422, + limb0: 0x5878abe4d0d05d01b83af01a, + limb1: 0x6091e3b59ae08655a77fe53f, + limb2: 0x776d8d9567f262c2, limb3: 0x0 }, g_rhs_sqrt: array![ u384 { - limb0: 0x276928b22fe54a72c29e80b1, - limb1: 0x756f94447b01aba71430b69a, - limb2: 0x52ed39a607a55cf8, + limb0: 0x63ef2e1ae6eb2c756069efe8, + limb1: 0xeb0387c8a8c17fad8c0a9324, + limb2: 0x55fe2c479038a0bc, + limb3: 0x0 + }, + u384 { + limb0: 0x9f3045df98e4cd4099e13207, + limb1: 0x1dfa04fc68980e286fec6fb0, + limb2: 0x1813afbd9c05412a, limb3: 0x0 } ], @@ -22255,15 +22236,15 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0xd9534dbc202b60dcec7665a7, - limb1: 0x22185745297706f49c95d5c3, - limb2: 0xd68dc1e8b9836e3, + limb0: 0x5ecaccc77099015edd4567b8, + limb1: 0xa82e8c31fd89230e9e054b35, + limb2: 0x9b8f95662d8ac62b, limb3: 0x0 }, y: u384 { - limb0: 0x1dc4d21d42b936682e20de0b, - limb1: 0x5cc69fc6101b12a3f2527535, - limb2: 0xc387fe8df50dd34f, + limb0: 0x197a10d65c49dfb9020a06d1, + limb1: 0x385d645da0e58782b062bea8, + limb2: 0xce16e956485f6821, limb3: 0x0 } } @@ -22276,29 +22257,29 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0x4bc9145b3a4fb6e2614a06c6, - limb1: 0x3101e1537439d819fa56dd7c, - limb2: 0xdcdaaea2c7c5a0e1, + limb0: 0x113c8d620e3745e45e4389b8, + limb1: 0x85b8ff52d905fd02fe191c3f, + limb2: 0xf5d132d685201517, limb3: 0x0 }, y: u384 { - limb0: 0x38ddc6e9729c0f24b9b57c26, - limb1: 0x5c2794887c8653e0c9065f23, - limb2: 0xb7fc696fb0f5beab, + limb0: 0x60c0ba1b358f375b2362662e, + limb1: 0x6abfc829d93e09aa5174ec04, + limb2: 0x7bc4637aca93cb5a, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x8c37b7c8864de1cbee158a4b, - limb1: 0x2f04f28200d6b0bbfafbe652, - limb2: 0x8315f1428de87444, + limb0: 0xd3ff147ff0ee4213f51f677d, + limb1: 0x431366a7732a6e4a6b942255, + limb2: 0x9fe743b25d39a591, limb3: 0x0 }, y: u384 { - limb0: 0x2e2ba1ff6b4c3017bf814f62, - limb1: 0xb005c9178e9aa0ef5618a9e0, - limb2: 0xaefa53577d49be3a, + limb0: 0x7f8bb562ff60a902ef14bcb0, + limb1: 0xeb9420089fa531db62e806a6, + limb2: 0xfd028df433dfd5cc, limb3: 0x0 } }, @@ -22306,10 +22287,10 @@ mod msm_tests { .span(); let scalars = array![ u256 { - low: 0x5940b9644e64c72e5d056ac981c4ce8d, high: 0x845115d195711daac26adef69969c4b3 + low: 0xe443df789558867f5ba91faf7a024204, high: 0x23a7711a8133287637ebdcd9e87a1613 }, u256 { - low: 0xd12bd0b5247cdc98c12c6bae9657faf8, high: 0x7546d0a0ddad3bd9468207836b6d7882 + low: 0x1846d424c17c627923c6612f48268673, high: 0xfcbd04c340212ef7cca5a5a19e4d6e3c }, ] .span(); @@ -22317,39 +22298,42 @@ mod msm_tests { array![ ( array![ - 0x0, + -0x1, 0x1, + 0x0, + -0x1, -0x1, + 0x0, 0x1, 0x1, 0x1, + -0x1, + 0x0, + -0x1, 0x0, 0x1, 0x1, - 0x0, 0x1, + 0x0, 0x1, -0x1, -0x1, - -0x1, - -0x1, - -0x1, - -0x1, - 0x1, 0x1, 0x0, 0x0, 0x1, + 0x1, -0x1, - 0x0, -0x1, + -0x1, + 0x0, + 0x1, 0x1, 0x0, 0x0, -0x1, 0x1, 0x0, - -0x1, 0x0, -0x1, -0x1, @@ -22360,67 +22344,58 @@ mod msm_tests { -0x1, 0x0, 0x1, - 0x1, - 0x1, 0x0, -0x1, - -0x1, - 0x1, 0x1, -0x1, - 0x1, - 0x1, - 0x1, - 0x1, -0x1, 0x0, - 0x0, + 0x1, -0x1, -0x1, -0x1, - 0x0, - 0x1, -0x1, 0x1, 0x1, 0x1, 0x0, - 0x1, 0x0, - 0x1, 0x0, - 0x1, 0x0, 0x0, + 0x1, + 0x1, 0x0, -0x1, - -0x1, 0x1, + -0x1, + -0x1, 0x1, + -0x1, + -0x1, + -0x1, 0x1, + -0x1, + 0x0, + 0x0, + -0x1, + -0x1, ] .span(), array![ + 0x1, 0x1, -0x1, 0x0, -0x1, - 0x1, - 0x1, + -0x1, 0x0, 0x0, 0x0, 0x1, - 0x1, - 0x1, - -0x1, -0x1, 0x0, - 0x1, - 0x0, 0x0, - 0x0, - 0x1, -0x1, -0x1, 0x1, @@ -22428,30 +22403,29 @@ mod msm_tests { -0x1, 0x0, 0x0, - -0x1, - 0x1, - 0x1, - 0x0, - 0x0, - 0x0, 0x0, -0x1, -0x1, - -0x1, + 0x1, + 0x0, 0x0, -0x1, 0x1, - -0x1, - -0x1, 0x1, - -0x1, + 0x1, + 0x1, -0x1, 0x0, 0x0, -0x1, + -0x1, + 0x0, + 0x0, + 0x0, 0x1, 0x1, -0x1, + -0x1, 0x1, -0x1, 0x0, @@ -22464,8 +22438,9 @@ mod msm_tests { 0x0, 0x1, -0x1, + -0x1, 0x1, - 0x1, + -0x1, 0x1, 0x0, 0x1, @@ -22475,43 +22450,34 @@ mod msm_tests { 0x0, 0x1, -0x1, + 0x1, + 0x1, 0x0, - -0x1, 0x0, 0x1, + 0x1, + 0x1, + 0x0, + 0x0, -0x1, + 0x0, + 0x0, -0x1, - 0x1, ] .span() ), ( array![ - -0x1, - -0x1, - 0x1, - 0x1, - 0x1, 0x0, -0x1, 0x1, - 0x1, - 0x1, 0x0, 0x0, - 0x1, - -0x1, - 0x0, - -0x1, - -0x1, - -0x1, -0x1, + 0x1, -0x1, 0x0, -0x1, - -0x1, - -0x1, - 0x0, 0x0, 0x0, -0x1, @@ -22519,140 +22485,154 @@ mod msm_tests { 0x0, -0x1, 0x1, - 0x1, 0x0, 0x1, 0x0, -0x1, - -0x1, + 0x1, 0x0, + 0x1, 0x0, 0x0, + 0x1, + 0x1, 0x0, + -0x1, 0x1, 0x0, 0x0, 0x0, - 0x1, 0x0, + 0x1, -0x1, 0x1, + -0x1, 0x0, 0x1, + 0x0, + 0x0, + -0x1, 0x1, -0x1, 0x0, - 0x1, + -0x1, + -0x1, 0x1, 0x0, -0x1, + 0x1, 0x0, 0x1, + -0x1, 0x1, 0x1, 0x1, - 0x0, -0x1, 0x0, + 0x1, + 0x1, + 0x0, -0x1, -0x1, + 0x1, + 0x1, + 0x1, -0x1, + 0x0, -0x1, 0x1, 0x0, - -0x1, 0x0, - -0x1, - -0x1, + 0x1, 0x0, - -0x1, 0x0, -0x1, -0x1, ] .span(), array![ - 0x1, - -0x1, - 0x1, + 0x0, 0x0, -0x1, -0x1, - 0x1, - 0x0, 0x0, 0x1, 0x0, - 0x0, 0x1, 0x1, - 0x0, + -0x1, + -0x1, 0x1, 0x0, 0x0, -0x1, + -0x1, 0x1, 0x1, + -0x1, + 0x1, + -0x1, + 0x0, 0x1, 0x1, 0x0, -0x1, -0x1, + -0x1, 0x1, -0x1, 0x0, -0x1, - -0x1, - 0x1, - 0x1, 0x0, -0x1, 0x0, -0x1, 0x0, - -0x1, - 0x1, - 0x1, 0x0, - 0x1, 0x0, - 0x1, + 0x0, 0x0, -0x1, -0x1, 0x1, 0x0, - -0x1, - -0x1, + 0x0, + 0x1, + 0x1, -0x1, 0x0, + -0x1, 0x0, -0x1, -0x1, -0x1, - 0x1, - 0x0, + -0x1, 0x1, -0x1, 0x1, + 0x1, + 0x0, 0x0, 0x0, 0x1, 0x1, 0x0, - 0x0, - -0x1, -0x1, - 0x1, -0x1, 0x0, - 0x1, -0x1, 0x1, + 0x0, -0x1, 0x0, + 0x1, 0x0, 0x1, + -0x1, + -0x1, + -0x1, + -0x1, + -0x1, ] .span() ), @@ -22662,63 +22642,63 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0x696b1a5834551c89097de328, - limb1: 0x4e14c3046c4fc45461d053a6, - limb2: 0x868ffc0f6184110c, + limb0: 0x9f631c63cf70ae44a4f5a2a2, + limb1: 0x5aa2f48efe1c88101f80186a, + limb2: 0xf5a6e4dffa999a49, limb3: 0x0 }, y: u384 { - limb0: 0x54104afe839009f76f6097d5, - limb1: 0xf888d72f6540d7c41d3df71b, - limb2: 0x8ce45828bf7b23d0, + limb0: 0xe6b4a7566e8864eedee862d3, + limb1: 0x28665d4a6e2274862789da95, + limb2: 0x544a0084c86826e1, limb3: 0x0 } }, Q_high: G1Point { x: u384 { - limb0: 0x6c042825f69c33fe505ee659, - limb1: 0x9e4d6ae42926e55318a1e0d1, - limb2: 0x5009bd861e207363, + limb0: 0x70dea0dfe4e7fec6602a1bed, + limb1: 0x29c310a365059fa2d72e40ef, + limb2: 0x4bedd53a18f4dc60, limb3: 0x0 }, y: u384 { - limb0: 0x746c4644fd6ef8792fb7356f, - limb1: 0x711ed175e7015f8dc0348d92, - limb2: 0xdb989a3c73b32929, + limb0: 0xfa49513b356c9ca2bb554f7a, + limb1: 0xccb42caf4786c1e9a012ac89, + limb2: 0xa8f414c492b79cb9, limb3: 0x0 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0xdfb86bb991661957dca00d5c, - limb1: 0xbcca103e5e4d73b2fd5fea9f, - limb2: 0x262b36fc35cf4002, + limb0: 0x9837ae626bef2667c055bbe6, + limb1: 0x2b39522c2fa59614c47a00fc, + limb2: 0x17b31f35a5d8cbb8, limb3: 0x0 }, y: u384 { - limb0: 0x72612f979770e170b204195e, - limb1: 0xd139d990ab885c7f21fd1739, - limb2: 0xa2d354eae9666ad5, + limb0: 0xaf2a10cd568f6a3e1fb1bd84, + limb1: 0x59ee46ef1268c1e166c297f6, + limb2: 0x1052233f548d7377, limb3: 0x0 } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0x9d6af6950f2784913220d8ef, - limb1: 0x5d6e9944a2bb7d5083312d74, - limb2: 0x9ab6bc1c2ef06697, + limb0: 0xc4e92f25ab010699af576d0, + limb1: 0xe97c301882a8939d58afd595, + limb2: 0xa97e0a95812ee60a, limb3: 0x0 }, u384 { - limb0: 0xc9de01b9810f862b5d03f0bb, - limb1: 0xf9ed95bd885cf18c870768f5, - limb2: 0xdc3ad1d2f717e263, + limb0: 0x4d02b5d66461952ac7d36245, + limb1: 0x368971289c5522e6c3bc29ee, + limb2: 0x241acf5547ecf2a8, limb3: 0x0 }, u384 { - limb0: 0xbce920711e21b4f0d856f251, - limb1: 0xffffffffffffffffc14a1ecb, + limb0: 0xa10abcd1222644928f5fad3d, + limb1: 0xffffffffffffffff82ad81f5, limb2: 0xffffffff00000000, limb3: 0x0 } @@ -22726,21 +22706,21 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0x46c7c1b4f6d9c78f0d87d150, - limb1: 0x3019469c23c8eefc43737172, - limb2: 0xeb98bb9b0f5ce990, + limb0: 0x6383f6f4f2dd03fe717e67f1, + limb1: 0x9955d4dd7989fd83905c7a2d, + limb2: 0x1d2a6604bf3f33fb, limb3: 0x0 }, u384 { - limb0: 0x18ad8c2ad205239f4f222e1, - limb1: 0xf88e99f426ef7a45147ba33c, - limb2: 0xbf6dd7305a5d8e4b, + limb0: 0xbeca0b5a793859b8ee283c4c, + limb1: 0xa970fb8bdb34e6ad8c593523, + limb2: 0x8565d8e2c154e636, limb3: 0x0 }, u384 { - limb0: 0xbe9419840b0d4ac8a7228bc5, - limb1: 0x51e469261e9fb2d5a8dce88c, - limb2: 0x197f640948cdd9d0, + limb0: 0x7b6141ba3169c9c307a76c26, + limb1: 0xdc90a576b5b30ca276d2a903, + limb2: 0x74a0a494230cab10, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -22748,66 +22728,66 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x9d894deabff92cc03ae792d9, - limb1: 0x920907e4bc221acdd80c2c72, - limb2: 0xc1ce0cc379d4fe6, + limb0: 0xc5f4a8e06bafd8472e90ea70, + limb1: 0xf305b5b79db4064de15dbe21, + limb2: 0x2d0f63a5e8e6ba9e, limb3: 0x0 }, u384 { - limb0: 0xf1620842af7e53aba176fd7d, - limb1: 0x616d97810d3038cfa47d102, - limb2: 0x8abf973d9888900d, + limb0: 0x13f5ccdc83bb7a891a51bc2e, + limb1: 0x60e54ecbe5ba196557fd4bb, + limb2: 0xac8d4bcb082e288d, limb3: 0x0 }, u384 { - limb0: 0xc612c2df6ba53b6407d32be, - limb1: 0x9e4926cbe30a9f1a01b6f2a3, - limb2: 0x398256b6844d6a02, + limb0: 0xba8922d9ebfd118f4c66b03, + limb1: 0xffe95f1ff3935831f3e10e76, + limb2: 0x98dc1066777510a7, limb3: 0x0 }, u384 { - limb0: 0x7abcd7356921760d2e47b893, - limb1: 0x909fe934f555d704abfbb459, - limb2: 0xccba033fc28fdfff, + limb0: 0x179f3a6ba3a6d1cef8e5f74b, + limb1: 0x11a05f8c6288f3560c22413a, + limb2: 0x7a4a81a6d5ffbaf7, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x1078dbb78d3c784fe0d8bf70, - limb1: 0xbd95de4c814d402bad71b850, - limb2: 0xa51cf1408b7a1a42, + limb0: 0xbc43b4c11c4638d7106143eb, + limb1: 0x8a65ae91642eaa7f057c5ccd, + limb2: 0xa8fc52ce8ae5d8f6, limb3: 0x0 }, u384 { - limb0: 0xafb38bab4f258dde6bcc1acb, - limb1: 0xeefad6e4c4b8da3fa064fa2b, - limb2: 0xdb1083ddf1b954d0, + limb0: 0xb02438c2ca319083725998d3, + limb1: 0x59ad052b8e66e00367459dd3, + limb2: 0xa5fe42bb76ebb2d5, limb3: 0x0 }, u384 { - limb0: 0xaf9ea416fda5eaac76ed505e, - limb1: 0xf5019fb06a529438e2deacfb, - limb2: 0x7682c588d33bd7f2, + limb0: 0xe698f3a92057f7f2e9944542, + limb1: 0x123c30fe75148009d1d75f80, + limb2: 0xa6bb93b1bb6e0c39, limb3: 0x0 }, u384 { - limb0: 0xd75f261f118023733ff28e4c, - limb1: 0xee57c87f3e825d37adf9be7c, - limb2: 0xf9e0c557df2df006, + limb0: 0xbdb3e2bc9a6de2f3825a83c9, + limb1: 0xb78fa1cecf095e58910185d4, + limb2: 0x1a0eae200053c6b1, limb3: 0x0 }, u384 { - limb0: 0x18ad8c2ad205239f4f222de, - limb1: 0xf88e99f426ef7a45147ba33c, - limb2: 0xbf6dd7305a5d8e4b, + limb0: 0xbeca0b5a793859b8ee283c49, + limb1: 0xa970fb8bdb34e6ad8c593523, + limb2: 0x8565d8e2c154e636, limb3: 0x0 }, u384 { - limb0: 0xbe9419840b0d4ac8a7228bc5, - limb1: 0x51e469261e9fb2d5a8dce88c, - limb2: 0x197f640948cdd9d0, + limb0: 0x7b6141ba3169c9c307a76c26, + limb1: 0xdc90a576b5b30ca276d2a903, + limb2: 0x74a0a494230cab10, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -22817,39 +22797,42 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0xbc0c947158d7fa8108c18f15, - limb1: 0xfc1535b141bde50bb092a97, - limb2: 0x478e3263a7d6daaf, + limb0: 0x797196c9aabc4a2e1f7f0ec9, + limb1: 0x5d22f0b18f87ffacc99b5799, + limb2: 0x4dbcf7ec9875ab0f, limb3: 0x0 }, u384 { - limb0: 0xecc8bfe77a4516b1595699d0, - limb1: 0xdd8df18620b2311e6701078, - limb2: 0x1fbd1f27e18971fd, + limb0: 0x558199939c06bc811d805c64, + limb1: 0x6c12e4eb80edd3eae1af323, + limb2: 0xf3af3033849b74db, limb3: 0x0 }, u384 { - limb0: 0x11d309a585aa7a68152db37b, limb1: 0x5f04fa9e, limb2: 0x0, limb3: 0x0 + limb0: 0x9592729a2f751ba45e431394, + limb1: 0xffffffffffffffff714aa7be, + limb2: 0xffffffff00000000, + limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0x510745b034711921593e1354, - limb1: 0xd5bae4d0e4f96c1d231b3f71, - limb2: 0xfa3dacdd22f3597b, + limb0: 0x1c84af9ca0dcef421c7b205f, + limb1: 0xd20779511c6b3961fff73f2b, + limb2: 0xf85db6dedbd1324, limb3: 0x0 }, u384 { - limb0: 0x54f536689fe19a4552d4d442, - limb1: 0x7b70c2aebcfa17f09964fcfb, - limb2: 0x8378b9a32060a0dd, + limb0: 0x79e83d2fcf0bf0c3246ca396, + limb1: 0x651be52e6699ddd0a8f15e92, + limb2: 0x7eacca2dd011fe08, limb3: 0x0 }, u384 { - limb0: 0xbbfb0bb648c6335360418894, - limb1: 0x1abc14661c891d6f20b5b61, - limb2: 0x5005a2928c317779, + limb0: 0xa9e5bd3e1bf279414c72f2dc, + limb1: 0xd7089624ec9f50fbf24807d, + limb2: 0x1e59b43b04b168f9, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -22857,66 +22840,66 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x33aabf69184d9c07b1782cec, - limb1: 0xab842b0c630b528f552c9c2f, - limb2: 0x5d1ee2a3c1c91a85, + limb0: 0xe57bfafdbee1f10680628c46, + limb1: 0x49aaac232faffba420f17de9, + limb2: 0x13c0e5279cb13c65, limb3: 0x0 }, u384 { - limb0: 0x1c7e97c0ad78a37aae645567, - limb1: 0x80bc9c07a7d9d0c0fbe7a27e, - limb2: 0xb364921e58c5e74f, + limb0: 0x44ca26821abed833d4bd6e14, + limb1: 0xde58b9fc885d7c2df0d03cae, + limb2: 0xa610488679d4187d, limb3: 0x0 }, u384 { - limb0: 0x2af55615f05468807c283998, - limb1: 0x34255e2b1ecd667b58652cc0, - limb2: 0xe0b34498429b4adb, + limb0: 0x13b0d0908598c769f05d660f, + limb1: 0x7ad3e2582b728e78d95ec074, + limb2: 0xf4c4699eb8c7d849, limb3: 0x0 }, u384 { - limb0: 0x886df99a18cde3ed393b3f02, - limb1: 0xa3931af9bac87d5bd4d05796, - limb2: 0x40cb7c6fc1c6f423, + limb0: 0xea6d85c0cb36f9a7cc365e25, + limb1: 0x401e53c63f46ae5d8f08fdf4, + limb2: 0x27041263f86b4bf, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x96a26aac8ec79d2fa6821ee, - limb1: 0x2644ca0d27587dfe9fe82500, - limb2: 0xda553e7a56e529e2, + limb0: 0xa586e4d11b06d9dd24d70a26, + limb1: 0x6a6e6ed33d70c8fcc3ae0014, + limb2: 0x94dbae8aa40ae616, limb3: 0x0 }, u384 { - limb0: 0x331aa803e0723bd8b56d9977, - limb1: 0x94bb300862621b03195f411e, - limb2: 0x4897f5993f453b20, + limb0: 0x55eabc0e0fe092190397bfee, + limb1: 0x40fa0b4feec17a208e14b289, + limb2: 0x9ff8de906f77ea8c, limb3: 0x0 }, u384 { - limb0: 0xb5889f69082d9175670f9362, - limb1: 0x90009ccbdb6bee5506597dce, - limb2: 0xebea110139f09b0c, + limb0: 0x2bc93e61e4ffeb2b9f1eca1b, + limb1: 0xc15e10329be9d973ecb134d3, + limb2: 0x93dcb7b9e73db455, limb3: 0x0 }, u384 { - limb0: 0xe969d38395ecbb65604bd9e3, - limb1: 0x84a35e5336383d54b21633fc, - limb2: 0x64f2fafe289986f8, + limb0: 0xeb2728d888d3bfbc5ef4a816, + limb1: 0x5da19a7fa6a5e0ef27a6c462, + limb2: 0xf3ef49589e36c21, limb3: 0x0 }, u384 { - limb0: 0x54f536689fe19a4552d4d43f, - limb1: 0x7b70c2aebcfa17f09964fcfb, - limb2: 0x8378b9a32060a0dd, + limb0: 0x79e83d2fcf0bf0c3246ca393, + limb1: 0x651be52e6699ddd0a8f15e92, + limb2: 0x7eacca2dd011fe08, limb3: 0x0 }, u384 { - limb0: 0xbbfb0bb648c6335360418894, - limb1: 0x1abc14661c891d6f20b5b61, - limb2: 0x5005a2928c317779, + limb0: 0xa9e5bd3e1bf279414c72f2dc, + limb1: 0xd7089624ec9f50fbf24807d, + limb2: 0x1e59b43b04b168f9, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -22926,9 +22909,9 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0xa06bf1d8f99319ba614afb3e, - limb1: 0x966cdc84dae16f6526b9bc0c, - limb2: 0x91461b76042e4a4c, + limb0: 0x940b1b5c5b3b74ffe9f79778, + limb1: 0xfad4cbad3d3563d3bd68daab, + limb2: 0xd9bb9dda7ed568ba, limb3: 0x0 }, u384 { @@ -22941,15 +22924,15 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0x40f4670d31b3b0a2eddddce2, - limb1: 0xa84325b72a14748c8cf0fec7, - limb2: 0x29cd8833d2474bb1, + limb0: 0xd3875e9815031a07243450c0, + limb1: 0x6aa98e0335b931ea4ee84153, + limb2: 0x418a5337e0a275fa, limb3: 0x0 }, u384 { - limb0: 0xb4436c2077fdb2a9d3010c4a, - limb1: 0xa4e884dd788ba6f9e9fe348f, - limb2: 0x89cb0b7cac104c9a, + limb0: 0xf6e9b0bdaf28dad1df80282c, + limb1: 0xab039d306b54ca486457be14, + limb2: 0x9c5f0b8f413257e8, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -22957,54 +22940,54 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x5f8f6afeecbc83fcecca2f9a, - limb1: 0x6b464f7c56c8ff66e91b6a7b, - limb2: 0x3266aa66b57b1298, + limb0: 0xa05082dfd492948a9310ac63, + limb1: 0x13e81bc3616348aa30233c53, + limb2: 0xa306419dcd6bfa6e, limb3: 0x0 }, u384 { - limb0: 0x848dc8f48a82d239d0cd6d78, - limb1: 0x15eda35ef27c63d0c6cd3ddc, - limb2: 0x2a9e920d8d1c1b8f, + limb0: 0x33b37fa38f45f27dcf9e2259, + limb1: 0x2cafd5e4bef8fc7c6ecc4715, + limb2: 0xdfe27f2b53ef9337, limb3: 0x0 }, u384 { - limb0: 0xf684ed3c71b1333d1daa4c59, - limb1: 0x17efcf74175d51ee74f525e4, - limb2: 0xb9c4486f3ae84096, + limb0: 0x653a06aed840d5b5dc01cba2, + limb1: 0x585264c7846c7b31e9160328, + limb2: 0x77eb8cd1f3ada1d5, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xc915a2e8c4514db4ec4f2318, - limb1: 0x3ef1edc78a70e4a7ade7dd8c, - limb2: 0xa661615e8191110b, + limb0: 0xce83094176f6938a6d5b4c38, + limb1: 0x552d66f15199943413bbfef3, + limb2: 0xc43b243a40477c63, limb3: 0x0 }, u384 { - limb0: 0x69c5fe0426f8db39b959c810, - limb1: 0xb23d3065267d2a1e3c70fe35, - limb2: 0x36b1a68a6460e4ac, + limb0: 0x3ca420d9ff2fc0d9e7795675, + limb1: 0x1ea281e63f2ceee0896612a0, + limb2: 0x3c9fec82d074b4e6, limb3: 0x0 }, u384 { - limb0: 0xaf896c94d3d52440aecf3b6b, - limb1: 0xc5322ebd0cf591cea7226903, - limb2: 0xbd651360a609ae19, + limb0: 0xe7969ebd2e53abc88951e7c5, + limb1: 0xb2e0e5c4349a27e33815cc73, + limb2: 0x85a91328e6a38c2f, limb3: 0x0 }, u384 { - limb0: 0x40f4670d31b3b0a2eddddcdf, - limb1: 0xa84325b72a14748c8cf0fec7, - limb2: 0x29cd8833d2474bb1, + limb0: 0xd3875e9815031a07243450bd, + limb1: 0x6aa98e0335b931ea4ee84153, + limb2: 0x418a5337e0a275fa, limb3: 0x0 }, u384 { - limb0: 0xb4436c2077fdb2a9d3010c4a, - limb1: 0xa4e884dd788ba6f9e9fe348f, - limb2: 0x89cb0b7cac104c9a, + limb0: 0xf6e9b0bdaf28dad1df80282c, + limb1: 0xab039d306b54ca486457be14, + limb2: 0x9c5f0b8f413257e8, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -23014,9 +22997,9 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0xaf04473bff579d844c31c671, - limb1: 0x7b92703165f56ec94ef48e86, - limb2: 0x3067a282d19027fb, + limb0: 0xdd189fd8cca0ceea13b4b25c, + limb1: 0x74a70cfcf3a6ac1638d51a6a, + limb2: 0x2e9a7eb44d4ecd37, limb3: 0x0 }, g_rhs_sqrt: array![], @@ -23027,15 +23010,15 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0xd6462c75ea56f7bb68c84a69, - limb1: 0x8dd253e20c99c43c4f68bed2, - limb2: 0x18984ed5d31f249a, + limb0: 0x7c99e6e15710cca6d05a228c, + limb1: 0xb3b0695cd0bcf4e2fff2aa40, + limb2: 0xf51b415c36a8d206, limb3: 0x0 }, y: u384 { - limb0: 0xf3dbd029d4367da57a7a42a5, - limb1: 0x562b4f70146f5f2fe0dc34a3, - limb2: 0xe30e43c60690ced7, + limb0: 0x3ed9af037beeebe8a4e51272, + limb1: 0x59c17339e41ffb8881d8ff31, + limb2: 0x8659e768c3fbaf89, limb3: 0x0 } } @@ -23048,43 +23031,43 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0x9726cf8eeead73dc5d395016, - limb1: 0xa29ab79dcffa879d321816a4, - limb2: 0x1588632336f6b4d3, + limb0: 0x113c8d620e3745e45e4389b8, + limb1: 0x85b8ff52d905fd02fe191c3f, + limb2: 0xf5d132d685201517, limb3: 0x0 }, y: u384 { - limb0: 0x3ba7a6b401e5c01a85695d90, - limb1: 0x27e37b0f2e5913bd92fff8, - limb2: 0x55eeca8b11cf9200, + limb0: 0x60c0ba1b358f375b2362662e, + limb1: 0x6abfc829d93e09aa5174ec04, + limb2: 0x7bc4637aca93cb5a, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xdeafbaf34e4aac6a75e0ff5f, - limb1: 0x28402199508879ef73ca80, - limb2: 0x590cd563c12eb6b5, + limb0: 0xd3ff147ff0ee4213f51f677d, + limb1: 0x431366a7732a6e4a6b942255, + limb2: 0x9fe743b25d39a591, limb3: 0x0 }, y: u384 { - limb0: 0xdc78fefc86506f2816c7ee65, - limb1: 0xb5adcf5d69e108642d50ec1a, - limb2: 0xcff1cb37b1766dd6, + limb0: 0x7f8bb562ff60a902ef14bcb0, + limb1: 0xeb9420089fa531db62e806a6, + limb2: 0xfd028df433dfd5cc, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xad4db338b89e9c858bd5131d, - limb1: 0xd87cb7985fba393df2cadae, - limb2: 0x2347372ae1c7a845, + limb0: 0x46ae31f6fc294ad0814552b6, + limb1: 0x2d54cc811efaf988efb3de23, + limb2: 0x2a2cc02b8f0c419f, limb3: 0x0 }, y: u384 { - limb0: 0xe83f06a54d431942f38ae16, - limb1: 0x5c0a042731b9357ab77c62e3, - limb2: 0xa0544acfdc8a50b8, + limb0: 0xaec889b9d8ce51c4a2c3586f, + limb1: 0xa2b07874c333bfee9f78e13e, + limb2: 0xc445de21be8d8709, limb3: 0x0 } }, @@ -23092,13 +23075,13 @@ mod msm_tests { .span(); let scalars = array![ u256 { - low: 0x332564b2a5bc00258babdf0a681bdab, high: 0xdfe89a221ff53488ab54a470be8db3de + low: 0x1846d424c17c627923c6612f48268673, high: 0xfcbd04c340212ef7cca5a5a19e4d6e3c }, u256 { - low: 0x4479e32e014084ceb4399fd4bf62a7ed, high: 0xdc3d433e2baf45449642e8f182b7bb2d + low: 0xb4862b21fb97d43588561712e8e5216a, high: 0x259f4329e6f4590b9a164106cf6a659e }, u256 { - low: 0xa9772ae2c08bf2f8c6fc60ffba3b5040, high: 0xf0a7230897cb6230a594334b8511c570 + low: 0x12e0c8b2bad640fb19488dec4f65d4d9, high: 0x5487ce1eaf19922ad9b8a714e61a441c }, ] .span(); @@ -23107,14 +23090,7 @@ mod msm_tests { ( array![ 0x0, - 0x0, - 0x0, - -0x1, -0x1, - 0x0, - 0x1, - 0x1, - 0x0, 0x1, 0x0, 0x0, @@ -23122,141 +23098,150 @@ mod msm_tests { 0x1, -0x1, 0x0, + -0x1, 0x0, 0x0, - 0x1, -0x1, + 0x0, + 0x0, -0x1, 0x1, - 0x1, - 0x1, - 0x1, - -0x1, 0x0, + 0x1, 0x0, -0x1, + 0x1, 0x0, 0x1, 0x0, 0x0, 0x1, - 0x0, 0x1, - -0x1, - 0x0, - -0x1, - -0x1, 0x0, -0x1, 0x1, 0x0, 0x0, + 0x0, + 0x0, 0x1, + -0x1, 0x1, - 0x0, + -0x1, 0x0, 0x1, + 0x0, + 0x0, -0x1, + 0x1, -0x1, 0x0, -0x1, + -0x1, + 0x1, 0x0, + -0x1, 0x1, 0x0, 0x1, -0x1, 0x1, 0x1, - 0x0, - 0x1, 0x1, + -0x1, 0x0, 0x1, + 0x1, 0x0, -0x1, + -0x1, + 0x1, + 0x1, 0x1, -0x1, + 0x0, -0x1, 0x1, 0x0, 0x0, + 0x1, + 0x0, 0x0, - -0x1, -0x1, -0x1, ] .span(), array![ 0x0, - 0x1, + 0x0, -0x1, + -0x1, + 0x0, 0x1, 0x0, 0x1, 0x1, + -0x1, + -0x1, 0x1, 0x0, 0x0, - 0x0, - 0x0, - 0x0, -0x1, - 0x1, -0x1, 0x1, + 0x1, -0x1, 0x1, + -0x1, + 0x0, 0x1, 0x1, + 0x0, + -0x1, + -0x1, -0x1, 0x1, -0x1, 0x0, - 0x1, + -0x1, 0x0, + -0x1, 0x0, - 0x1, -0x1, 0x0, - 0x1, 0x0, 0x0, - 0x1, + 0x0, 0x0, -0x1, + -0x1, 0x1, 0x0, - 0x1, 0x0, + 0x1, + 0x1, + -0x1, 0x0, -0x1, 0x0, -0x1, + -0x1, + -0x1, + -0x1, 0x1, + -0x1, 0x1, 0x1, - 0x1, - 0x0, - 0x0, - 0x1, 0x0, 0x0, 0x0, 0x1, - -0x1, 0x1, 0x0, - 0x0, - 0x0, - 0x0, - 0x0, -0x1, - 0x0, - 0x1, - 0x1, -0x1, - 0x1, 0x0, + -0x1, 0x1, 0x0, -0x1, @@ -23264,9 +23249,9 @@ mod msm_tests { 0x1, 0x0, 0x1, - 0x0, - 0x0, - 0x0, + -0x1, + -0x1, + -0x1, -0x1, -0x1, ] @@ -23274,255 +23259,252 @@ mod msm_tests { ), ( array![ + 0x0, + -0x1, 0x0, 0x0, 0x1, + 0x1, + 0x1, + 0x1, + 0x1, + 0x0, 0x0, 0x1, -0x1, - -0x1, + 0x0, + 0x0, 0x1, 0x1, - -0x1, 0x1, - -0x1, + 0x0, 0x1, + 0x1, + 0x0, -0x1, - -0x1, - -0x1, 0x1, + 0x1, + 0x0, -0x1, 0x0, 0x0, -0x1, - -0x1, - -0x1, 0x1, - -0x1, + 0x1, + 0x1, 0x0, + -0x1, + 0x1, 0x0, + 0x1, 0x0, -0x1, + -0x1, 0x1, 0x1, 0x1, + 0x0, + -0x1, 0x1, 0x1, 0x0, - 0x0, - 0x0, -0x1, + 0x0, -0x1, -0x1, 0x0, + -0x1, 0x1, 0x0, 0x1, - 0x1, - -0x1, 0x0, + 0x1, 0x0, 0x0, - 0x1, - 0x1, - -0x1, - -0x1, 0x0, 0x0, 0x1, - -0x1, - 0x1, - -0x1, 0x0, 0x0, 0x1, 0x1, 0x0, 0x0, - 0x1, - 0x0, - -0x1, - -0x1, - -0x1, - -0x1, -0x1, + 0x1, -0x1, - 0x0, + 0x1, -0x1, - 0x0, -0x1, 0x1, 0x0, 0x1, - 0x1, + -0x1, + -0x1, ] .span(), array![ - 0x1, - 0x1, - 0x1, - 0x1, - 0x1, -0x1, 0x0, - 0x1, 0x0, -0x1, -0x1, 0x1, - -0x1, - 0x0, - 0x1, 0x1, 0x1, 0x0, - -0x1, + 0x0, 0x0, -0x1, + 0x1, + 0x1, -0x1, 0x1, 0x1, 0x0, 0x0, 0x0, - 0x1, - 0x1, - 0x0, 0x0, + -0x1, 0x0, -0x1, 0x1, - -0x1, - 0x0, - 0x0, - 0x0, 0x0, + -0x1, + 0x1, + 0x1, + 0x1, 0x1, 0x0, 0x0, + -0x1, 0x1, - 0x0, + -0x1, + -0x1, + -0x1, -0x1, 0x1, 0x0, 0x0, + 0x0, 0x1, -0x1, -0x1, 0x1, - 0x0, 0x1, 0x1, 0x0, 0x0, 0x0, - 0x0, - 0x1, - 0x1, -0x1, 0x0, - 0x0, - 0x1, -0x1, 0x1, 0x0, - 0x0, + -0x1, 0x1, 0x0, 0x1, + 0x1, -0x1, 0x0, 0x1, - -0x1, 0x1, + -0x1, + -0x1, 0x1, 0x0, + 0x1, + 0x1, 0x0, + 0x1, + 0x1, -0x1, + 0x0, + 0x0, + 0x0, -0x1, ] .span() ), ( array![ - -0x1, - -0x1, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, 0x0, + -0x1, 0x0, -0x1, -0x1, - 0x0, - 0x1, 0x1, -0x1, -0x1, - 0x1, -0x1, 0x1, -0x1, - -0x1, 0x0, -0x1, - 0x0, + -0x1, -0x1, 0x0, + 0x1, -0x1, 0x1, -0x1, + 0x1, 0x0, -0x1, - 0x0, - 0x0, -0x1, - 0x0, - 0x0, 0x1, + 0x1, + 0x1, + -0x1, 0x0, 0x0, -0x1, - 0x0, + 0x1, 0x1, -0x1, - 0x0, - 0x0, -0x1, -0x1, -0x1, 0x1, + 0x1, + 0x1, + 0x0, 0x0, - -0x1, -0x1, 0x0, 0x1, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, 0x1, -0x1, - 0x1, 0x0, - 0x1, - 0x1, + -0x1, + 0x0, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, - -0x1, - 0x1, - 0x1, 0x1, - -0x1, 0x0, + -0x1, 0x0, + -0x1, + 0x1, + 0x1, 0x0, 0x1, -0x1, 0x0, 0x1, + 0x1, + 0x1, + 0x1, -0x1, 0x1, -0x1, @@ -23530,88 +23512,87 @@ mod msm_tests { ] .span(), array![ - 0x0, 0x1, 0x0, - -0x1, - 0x0, - -0x1, 0x1, - 0x0, + 0x1, + 0x1, + 0x1, 0x1, -0x1, 0x1, + 0x0, 0x1, 0x0, + 0x0, + 0x0, -0x1, - 0x1, -0x1, -0x1, -0x1, -0x1, 0x1, - -0x1, 0x1, - -0x1, 0x1, + -0x1, 0x0, -0x1, 0x0, -0x1, 0x1, + 0x0, + 0x0, -0x1, - 0x1, - 0x1, + 0x0, + 0x0, 0x1, -0x1, - 0x1, -0x1, -0x1, + 0x0, + -0x1, -0x1, 0x1, + -0x1, 0x0, 0x1, - -0x1, 0x0, -0x1, - 0x0, 0x1, -0x1, 0x0, -0x1, -0x1, + 0x1, 0x0, + 0x0, + 0x1, -0x1, 0x1, -0x1, 0x0, + 0x0, + 0x0, + -0x1, -0x1, - 0x1, -0x1, -0x1, -0x1, - 0x0, 0x1, 0x0, 0x1, -0x1, - -0x1, 0x1, -0x1, - 0x0, - 0x1, - 0x1, - 0x0, - 0x0, 0x1, 0x0, -0x1, 0x1, -0x1, - 0x1, 0x0, - -0x1, - -0x1, + 0x1, + 0x1, + 0x1, ] .span() ), @@ -23621,69 +23602,69 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0x7bae5a4f1786ce120edcfd31, - limb1: 0xcb0a3b2ff69a7acd3a724b11, - limb2: 0x7fb88df8073a77cd, + limb0: 0xd79cb31dc2b0542f06ede67a, + limb1: 0xb98b00c44311bb3ca724bf49, + limb2: 0xb5c2684fd6f92f87, limb3: 0x0 }, y: u384 { - limb0: 0x3b06c6f7695656e1eb6c9f74, - limb1: 0x71640322dbaa6abfb5dd10d6, - limb2: 0x39cf101cd3b600d2, + limb0: 0x1b240851f32ad546a373eb51, + limb1: 0x7b1b154b38b9232af3ec006d, + limb2: 0xc1d0bcf577480806, limb3: 0x0 } }, Q_high: G1Point { x: u384 { - limb0: 0x97ed348cdc06b1960d4967b, - limb1: 0x786adaa8d6a9cde87bccf6eb, - limb2: 0xf17d62e69b926916, + limb0: 0x5c70a87edcdd965bd342be8a, + limb1: 0x8802913f2834f6b0965860db, + limb2: 0xb83f2de1acec00d9, limb3: 0x0 }, y: u384 { - limb0: 0xff04bce2f5e36a3b10ee5047, - limb1: 0x97a783addec7bc9f6fa18e43, - limb2: 0x632f9da4a291cfcf, + limb0: 0x3ca6bbf033338d5caab9156f, + limb1: 0xd1a8a0c89ed3b7e9f157bf2e, + limb2: 0x875869148b23d9fb, limb3: 0x0 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0x369b8a3678ca0e1ec58bd009, - limb1: 0x566466b760ec5454817cce48, - limb2: 0xbd79259024c15907, + limb0: 0x296649cf39fa239e28180a27, + limb1: 0xfc96a29c36270223c8955dbd, + limb2: 0x9787709708d85e28, limb3: 0x0 }, y: u384 { - limb0: 0x6c12d77c45fd6c4862936630, - limb1: 0xa68210cecd32a89c38ab0f33, - limb2: 0x805bf44416cb4501, + limb0: 0x670c5ceafdc89b50311c69b9, + limb1: 0xff5ef2ad523b831a22aab9c4, + limb2: 0x519afd0ffda5a9e5, limb3: 0x0 } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0x1d92d19a25fe15ceddaa4cac, - limb1: 0x297171a9b5222137fd536212, - limb2: 0xef33d3478f76410b, + limb0: 0x208fb064626a210dbcbb157d, + limb1: 0xbb821873b20f03232f2bdda4, + limb2: 0x12a70e5b50468a3d, limb3: 0x0 }, u384 { - limb0: 0x7c020e85dbf553d53b01b990, - limb1: 0x3f73bc798956ed32163c0e30, - limb2: 0x33516a9be45b06fb, + limb0: 0x9e6e265cfafc945d7124303b, + limb1: 0x89c821cc82a3ba804a9eca39, + limb2: 0x1c859f0ba2460b2d, limb3: 0x0 }, u384 { - limb0: 0xf043e256c41c5676fb1bceca, - limb1: 0xd9717e49d5100e1122570c11, - limb2: 0xb9e99f031bd02105, + limb0: 0xdb6c293444a89e7a4c5e022, + limb1: 0x5ee0a62572ba85675f788d27, + limb2: 0x26d773e31701c8e8, limb3: 0x0 }, u384 { - limb0: 0x7f8b32501d23fe5cfcd2fae4, - limb1: 0x7fffffffffffffffa4682695, + limb0: 0x405b4feaad129774d2623626, + limb1: 0x7fffffffffffffff623f2c62, limb2: 0x7fffffff80000000, limb3: 0x0 } @@ -23691,27 +23672,27 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0xc2ddaca12f7d86da45c70a29, - limb1: 0xc7354b04535a1afcf8a0030, - limb2: 0x1dc15dc664831532, + limb0: 0xfd97be2871b68ed8c551b59e, + limb1: 0x64d8f4f6c1db9c277127493a, + limb2: 0x77f81513c859df3e, limb3: 0x0 }, u384 { - limb0: 0xd9a80faf46372b7389e16367, - limb1: 0x44f7821e13bc7b09d0450b3c, - limb2: 0xc4ec6237db95391a, + limb0: 0x534861bb1a8ffce9ab949748, + limb1: 0xbbad2c53db079582d7190fc8, + limb2: 0xfd5ca7a156f86bfe, limb3: 0x0 }, u384 { - limb0: 0xd3840faa6add586de2035d2c, - limb1: 0x5d2ecaf0c50d6875cf67021, - limb2: 0x32e3c761d31c7d5c, + limb0: 0x6f91c5cd126fd864448cf1c5, + limb1: 0x81feb751f30992dae9610254, + limb2: 0xe1f911cb41fd158f, limb3: 0x0 }, u384 { - limb0: 0x612d67f5f2e275219233a03b, - limb1: 0x84ab01971a1ed187c4d5261c, - limb2: 0xee6b02541ed87466, + limb0: 0xfc7979094200d9082469d598, + limb1: 0x5053ccc051c2dfecff7a2400, + limb2: 0x8a5860f8b7a0d433, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -23719,78 +23700,78 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x5a5f2c64580931119918b712, - limb1: 0x503834de5004b1548d1fdf7, - limb2: 0xf73cf7d6190c9355, + limb0: 0x578ebc0b6ef481f8d69ff224, + limb1: 0xf52aeaeeb0b6b05cb1891273, + limb2: 0xef221e80f4e58c68, limb3: 0x0 }, u384 { - limb0: 0x28fb28aa1e38e3be4c8daa9a, - limb1: 0x16fdb3f59f1182c9d93c2846, - limb2: 0xdb8b949b3860652f, + limb0: 0x87de8e218841371bbbf8b049, + limb1: 0x95cde79cf66395616600710d, + limb2: 0x9070ee5dd604ceaf, limb3: 0x0 }, u384 { - limb0: 0xb451a39226f9db4be95dbc2d, - limb1: 0xc7a173969ab134ad5e8a1cba, - limb2: 0x65ee138f69a5ba09, + limb0: 0xaddd1e355268e4098c353e2f, + limb1: 0x3df5e10aaae12a3c44b6a2ec, + limb2: 0x6bed54ad6fdcb2f5, limb3: 0x0 }, u384 { - limb0: 0xc5dcd624190bb4c64626e39c, - limb1: 0x5b94978f0b8a11ab879fe75e, - limb2: 0xbeb4cbb947eb7d8c, + limb0: 0xfee8a13d511001a1b252575c, + limb1: 0xe53c75962a0cfb904e7f0da3, + limb2: 0x8470c1fe5903d52e, limb3: 0x0 }, u384 { - limb0: 0x53012fab2cf4fce5a4bbfdce, - limb1: 0x4b62139abb2ca76a90d9801d, - limb2: 0x9d527fffbd69145b, + limb0: 0x6116c42d02030fea2e8feea0, + limb1: 0x5f6eca63b74f0710ca98daaf, + limb2: 0xb98bf5917657ab8a, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x6432a197f98057f6c4a186a3, - limb1: 0x1044e83279e640be85166777, - limb2: 0x491a81e0c95e0665, + limb0: 0x75baa567945ad1c244b58190, + limb1: 0x63c1cc89b8868f5f53d131e0, + limb2: 0x3ce01f176c32e025, limb3: 0x0 }, u384 { - limb0: 0x642b94120e8a0e82d2320b11, - limb1: 0xa9594d45cb6e3917a5b064b6, - limb2: 0x13c761e78065f6f4, + limb0: 0x146140709abb5c521d6e0883, + limb1: 0x3c3a5ca32e45554c3bcbd8e, + limb2: 0x9dc373c9a93fb977, limb3: 0x0 }, u384 { - limb0: 0x1a2d5d7bfbcba0fdc2ab928, - limb1: 0x61e76328edd9035ad32f071a, - limb2: 0xa6bc5999aa852b23, + limb0: 0x76cac46632043d0ee97f7359, + limb1: 0xf957d6c1f33cbfe09abd506e, + limb2: 0xbab4b964283dda45, limb3: 0x0 }, u384 { - limb0: 0x1ef12cfcbbceec7cf45f362d, - limb1: 0x1a8970ea199b573ae13f7722, - limb2: 0xfadd688d9f88d8d8, + limb0: 0xa565d0c65e8d9c867c6ead3b, + limb1: 0x9afda933acda9a91cb473852, + limb2: 0x7ad2f415130f7cf7, limb3: 0x0 }, u384 { - limb0: 0x827388c3a95e084cfb18e2ff, - limb1: 0x6ae23aae3bf88d2ee6e29f9a, - limb2: 0x5471911229466fd0, + limb0: 0x2a2fa795905bae0f662976ca, + limb1: 0x7e9d83685c577c783dc7aa77, + limb2: 0xb919ba8eda50834d, limb3: 0x0 }, u384 { - limb0: 0xd3840faa6add586de2035d29, - limb1: 0x5d2ecaf0c50d6875cf67021, - limb2: 0x32e3c761d31c7d5c, + limb0: 0x6f91c5cd126fd864448cf1c2, + limb1: 0x81feb751f30992dae9610254, + limb2: 0xe1f911cb41fd158f, limb3: 0x0 }, u384 { - limb0: 0x612d67f5f2e275219233a03b, - limb1: 0x84ab01971a1ed187c4d5261c, - limb2: 0xee6b02541ed87466, + limb0: 0xfc7979094200d9082469d598, + limb1: 0x5053ccc051c2dfecff7a2400, + limb2: 0x8a5860f8b7a0d433, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -23800,54 +23781,54 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0x51d3fc798f7b09224eea78b7, - limb1: 0x7cb6842e1679232cf07aa777, - limb2: 0x4e904012e1d3ff70, + limb0: 0x4c81a733fef97d95c57e6c98, + limb1: 0x775690b793b679d7a19a3bf4, + limb2: 0x4d65f87de010adbd, limb3: 0x0 }, u384 { - limb0: 0x3480fe4a796da51d384567ff, - limb1: 0x5436bbc2f384a9c9a64f6668, - limb2: 0x333f12c4d60f29e9, + limb0: 0xe56e71d4e39a24c0f67a9984, + limb1: 0x67b880ffbe9063ac76f7be47, + limb2: 0xc944da011981a3dc, limb3: 0x0 }, u384 { - limb0: 0xce907bd6e3f3865693de696e, - limb1: 0x3418f27e01a46b1aa8ece399, - limb2: 0xeb232da8567b4454, + limb0: 0x93676dbbb36db753f1f09387, + limb1: 0xb9e108433d342c755c2286e6, + limb2: 0x2f3be8c0eea5a459, limb3: 0x0 }, u384 { - limb0: 0x51cbe47d1123b6f6d262e942, - limb1: 0xfffffffffffffffeb634d777, - limb2: 0xffffffff00000000, + limb0: 0xd20e4c77c71723ce1c327392, + limb1: 0x7fffffffffffffff9c3abe44, + limb2: 0x7fffffff80000000, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0x7dd653635c468ed03a147f7c, - limb1: 0xa9646245deefdff061a36f22, - limb2: 0x793e3b8e57113d7d, + limb0: 0xd7e5096f97478f73630b5f2c, + limb1: 0xa321158fddaf80c0d48b73c8, + limb2: 0x70453a9e72b9c663, limb3: 0x0 }, u384 { - limb0: 0xc8bdb8ed8ba3645d290d89ff, - limb1: 0x89806d78ca3c1d1269883ae9, - limb2: 0x89e2845fffb60414, + limb0: 0x6a44812f88399f595bfb250e, + limb1: 0x9ce5edf08d3de86c1edbaa8d, + limb2: 0x9db78c88e952114, limb3: 0x0 }, u384 { - limb0: 0x733f9fe1a9d700fe06517f90, - limb1: 0xd01a3b8fddd3fd11cc3aa3a9, - limb2: 0x3cc12cd246b561f, + limb0: 0x991c972b3b5285ed617d2a8d, + limb1: 0x4d661a456f379b2ab419f770, + limb2: 0xda300cdbb8777fb2, limb3: 0x0 }, u384 { - limb0: 0xd35ceefc3ca8d81a403c06f1, - limb1: 0xd74a621e3a0f7e6c837a7a42, - limb2: 0x7ca62d658a80831d, + limb0: 0x77a583a827d396db5814fd88, + limb1: 0x81dc3c456c9fa4791046826f, + limb2: 0x87db9b66e1ae02e1, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -23855,78 +23836,78 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x7e40b82a806ce631b39bca8, - limb1: 0x34463c832083914ceb4be396, - limb2: 0xefe8fc819bee1c4d, + limb0: 0x6e63bc8bee4e8da05c82a7a6, + limb1: 0x2c46e18b8cea2c7cacf8db67, + limb2: 0xa9ec062544c45675, limb3: 0x0 }, u384 { - limb0: 0x8ffd64ea138a3c6c9334154a, - limb1: 0x6d2cb13af35e95497d2c7cbd, - limb2: 0x505c899163a9ebc9, + limb0: 0xe6cd1639e9121b854d8065a1, + limb1: 0x3855195e9795f812b2aa103b, + limb2: 0x91a79b639cf331ec, limb3: 0x0 }, u384 { - limb0: 0x61ed3ab406c8827069591d39, - limb1: 0xcf0942d07e89f10dfa5d59ba, - limb2: 0x4d7750ef90fd6c61, + limb0: 0x6b817e6fa9849f23f773b65b, + limb1: 0x3d54ec12c7ab74c5a6b78bfa, + limb2: 0xc9901bdc97686269, limb3: 0x0 }, u384 { - limb0: 0x73714db0a3f58ba95280ae63, - limb1: 0x8fc7d48eb51996ad4ed7d54f, - limb2: 0xef8925ba1df13a0a, + limb0: 0x252bdeab1f03ea205af80cea, + limb1: 0x9b696b29be28301a7d64dce5, + limb2: 0x4d96175072a1aad1, limb3: 0x0 }, u384 { - limb0: 0x5438637468c807fc308c1981, - limb1: 0x79bc2ece5f3468a3bb61546b, - limb2: 0x9a668065c9602bbc, + limb0: 0x3b4ec36cd2dfd9a40256c06f, + limb1: 0x9577067551e47bc419a69cba, + limb2: 0x2a8e5791940f77e3, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x6f1e03de55717c9b2a2ac56e, - limb1: 0xe608e13ef3da3bbd89a78c88, - limb2: 0xd2235cf5f07b3b22, + limb0: 0x15c5655a2a058d975a64a7b5, + limb1: 0xba8d730686527e4b71f9da31, + limb2: 0x4efa8422d7221a5a, limb3: 0x0 }, u384 { - limb0: 0xd1406dc1f485abe351fc1cc5, - limb1: 0xea5570cc25ef9bc45b9290af, - limb2: 0x39759d3074569caf, + limb0: 0x16bf7bb6514e632cc60af399, + limb1: 0x6a52e6c096b8cce456af2ba5, + limb2: 0x3eadda39c8607082, limb3: 0x0 }, u384 { - limb0: 0x62db2bc569439366c5ded592, - limb1: 0x1e887137ac03e3a45b793122, - limb2: 0x9cdf4f759b2abeab, + limb0: 0xe5fde28856e5b23587fce40a, + limb1: 0xa975a06a594d57dbcc740302, + limb2: 0x84ce3a863bc77b4b, limb3: 0x0 }, u384 { - limb0: 0x5b9bf857cd4427147b44eaa5, - limb1: 0xa7f6e7b71abc920870658282, - limb2: 0x37d5d7a6a145eb0e, + limb0: 0x41fb04215453803ae4d63fa5, + limb1: 0xf057fa7bfbb33a0a6915aa7f, + limb2: 0xea2c668d7f0c32c7, limb3: 0x0 }, u384 { - limb0: 0x1afa9cef1177184c902bd576, - limb1: 0xb78d047392a628894435d2d3, - limb2: 0x6eb632070a6f0ea3, + limb0: 0xcfa7a72d4c8d17057b8e8cbf, + limb1: 0xcb3cf675bdf781bd532529f1, + limb2: 0xcd0edc6a93c5ac59, limb3: 0x0 }, u384 { - limb0: 0x733f9fe1a9d700fe06517f8d, - limb1: 0xd01a3b8fddd3fd11cc3aa3a9, - limb2: 0x3cc12cd246b561f, + limb0: 0x991c972b3b5285ed617d2a8a, + limb1: 0x4d661a456f379b2ab419f770, + limb2: 0xda300cdbb8777fb2, limb3: 0x0 }, u384 { - limb0: 0xd35ceefc3ca8d81a403c06f1, - limb1: 0xd74a621e3a0f7e6c837a7a42, - limb2: 0x7ca62d658a80831d, + limb0: 0x77a583a827d396db5814fd88, + limb1: 0x81dc3c456c9fa4791046826f, + limb2: 0x87db9b66e1ae02e1, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -23936,9 +23917,9 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0x14a9b660e666a579e04af7e3, - limb1: 0x3e10f29a564f014721fc8d70, - limb2: 0x30a9845c3bc22a3c, + limb0: 0x11607d6c139fbc75969b5199, + limb1: 0xfdf34b5edb1dae52dd4aff9, + limb2: 0xd68a26f0fd93f1b2, limb3: 0x0 }, u384 { @@ -23951,15 +23932,15 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0x95dfea43caae852a458bc4d3, - limb1: 0x23fb8014ac6b98635726f563, - limb2: 0xd8840e740ba46ac2, + limb0: 0xf6fdaa552da7a2b3c0a0cb79, + limb1: 0x1fd35a8da5290feb8b82d7ba, + limb2: 0x4a45237b765284d8, limb3: 0x0 }, u384 { - limb0: 0xbfe5a280b97586c7d99f997a, - limb1: 0x3130be9fc869ddc302b63ace, - limb2: 0x510977873fac3de4, + limb0: 0x7a290db1e928460604a5374d, + limb1: 0x7b66cc24a1a4072ba1124169, + limb2: 0xb03961854a3ba0ff, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -23967,54 +23948,54 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xe9285e26c835d2e5b8bcde6c, - limb1: 0xf1479a3be58589be923460b5, - limb2: 0x98cd5479c91538f9, + limb0: 0x272e5b9151b1422649ca24e2, + limb1: 0xbdf24f98cda70b0f647de636, + limb2: 0xa2faaba45847feef, limb3: 0x0 }, u384 { - limb0: 0x90dd4681eaf0fa204b67b8c2, - limb1: 0x1ad36b5693da5b2b5a394566, - limb2: 0x54a18491f05106f3, + limb0: 0x436611e057185c7b618e5e10, + limb1: 0x73a1533c181b72dd75d2b7c1, + limb2: 0xe6e62f4dc87def34, limb3: 0x0 }, u384 { - limb0: 0xaad9b35ef41029c97e5d7f02, - limb1: 0x2f9aa648e6b0d1a55360923, - limb2: 0x16e556e93d6fc980, + limb0: 0x49e6a4e1d84868f98ae79da4, + limb1: 0x2dc04403975cdbd552743f00, + limb2: 0xd6ad3badc0839857, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x9ce8e1c4eabc60c3c8a9fb8d, - limb1: 0xbb367995d34c7ae32d74ff46, - limb2: 0xc9a224f1c8a12a4e, + limb0: 0xf4ee36bd06e5f785cbceb0e5, + limb1: 0x233c26bd0ba49f554b39ecaa, + limb2: 0xe6d06a6a366e2d0f, limb3: 0x0 }, u384 { - limb0: 0x5a9bdf871171ddccf0a0bf42, - limb1: 0xb5847e472e57a86fe5d1f01c, - limb2: 0x2c80384aa229b2b2, + limb0: 0xa91c20469fe0342728199c4f, + limb1: 0x7aa6be338ece7e56882b3546, + limb2: 0x743d6e32cd1c5a09, limb3: 0x0 }, u384 { - limb0: 0x8ca2c9740f6da7e69af393dc, - limb1: 0x205981761d5aed735cfa5645, - limb2: 0x67a9cf41eb35da3c, + limb0: 0x5dd887e080556a2c19e2ba62, + limb1: 0x41b758e791ac713981e64276, + limb2: 0x4a1a1146cb87b0eb, limb3: 0x0 }, u384 { - limb0: 0x95dfea43caae852a458bc4d0, - limb1: 0x23fb8014ac6b98635726f563, - limb2: 0xd8840e740ba46ac2, + limb0: 0xf6fdaa552da7a2b3c0a0cb76, + limb1: 0x1fd35a8da5290feb8b82d7ba, + limb2: 0x4a45237b765284d8, limb3: 0x0 }, u384 { - limb0: 0xbfe5a280b97586c7d99f997a, - limb1: 0x3130be9fc869ddc302b63ace, - limb2: 0x510977873fac3de4, + limb0: 0x7a290db1e928460604a5374d, + limb1: 0x7b66cc24a1a4072ba1124169, + limb2: 0xb03961854a3ba0ff, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -24024,22 +24005,22 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0x40d69909bd1f89868fc12a88, - limb1: 0x2038ae0130a7d8f288207d4c, - limb2: 0xb8f856ef6b6a999, + limb0: 0xa7c05613b03917987b67120a, + limb1: 0x9b97e7316e63a434e786249b, + limb2: 0x1050825393c8d20, limb3: 0x0 }, g_rhs_sqrt: array![ u384 { - limb0: 0x74ac0ffcf338121813309f08, - limb1: 0x73c6773f511cf4c5a6cb523, - limb2: 0x48fe9be8742d5109, + limb0: 0x963acee69dd7d808f619980, + limb1: 0xbb8f1df505cc875458145db3, + limb2: 0x22bcc767a839d5d3, limb3: 0x0 }, u384 { - limb0: 0xa6cfedf63fd1ca077774a982, - limb1: 0x4e092f58467973ac6af58017, - limb2: 0x5f369ae78948ad85, + limb0: 0xa2b13e5c581f552bfa928831, + limb1: 0x212033cb444203bdddd0ed3a, + limb2: 0x43a27927480bf2dd, limb3: 0x0 } ], @@ -24050,15 +24031,15 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0x4520dc4c717b43e094587343, - limb1: 0x2b9a314b82b03bb297874842, - limb2: 0x91a47a208209ccf8, + limb0: 0x60a04d1cd61720fd649a635, + limb1: 0x4de992ec1fe826266faf9542, + limb2: 0x7fcc86284cb4d8d5, limb3: 0x0 }, y: u384 { - limb0: 0x13dd0713b7be54ada46178c0, - limb1: 0xee32bae06459ee148ad99bde, - limb2: 0xf6895c143766ae93, + limb0: 0xc5cc56bee25131b3aec25cee, + limb1: 0x60f429ebbf34f181ee9e0f69, + limb2: 0xeaba7780c9c9f8a8, limb3: 0x0 } } @@ -24071,57 +24052,57 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0x801b6b3d30ef5ea8d97b0d71, - limb1: 0x73986c1628b3b411a009f9f9, - limb2: 0xa1d33510fd9cc2b7, + limb0: 0x113c8d620e3745e45e4389b8, + limb1: 0x85b8ff52d905fd02fe191c3f, + limb2: 0xf5d132d685201517, limb3: 0x0 }, y: u384 { - limb0: 0xf61828261a164cfcb5213d3f, - limb1: 0x2b8fec345d86aed517373983, - limb2: 0xf35586b8c8d85ecd, + limb0: 0x60c0ba1b358f375b2362662e, + limb1: 0x6abfc829d93e09aa5174ec04, + limb2: 0x7bc4637aca93cb5a, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xc49d2cc986d3b941e291b8ab, - limb1: 0x3ba069556d1f51c4a6e38c68, - limb2: 0x601654cbc5f77ee1, + limb0: 0xd3ff147ff0ee4213f51f677d, + limb1: 0x431366a7732a6e4a6b942255, + limb2: 0x9fe743b25d39a591, limb3: 0x0 }, y: u384 { - limb0: 0xf2375e7dba0702d5627c7bb0, - limb1: 0x1934b57ae4f9a894a645ff1f, - limb2: 0xa1a6fb9d1559d226, + limb0: 0x7f8bb562ff60a902ef14bcb0, + limb1: 0xeb9420089fa531db62e806a6, + limb2: 0xfd028df433dfd5cc, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x37af8c6c03b88a2d9aacc1ec, - limb1: 0x8878d1bd5cd0159d32a54eef, - limb2: 0xbebd83abcc1f540f, + limb0: 0x46ae31f6fc294ad0814552b6, + limb1: 0x2d54cc811efaf988efb3de23, + limb2: 0x2a2cc02b8f0c419f, limb3: 0x0 }, y: u384 { - limb0: 0x70db58a6c30c945bc0810653, - limb1: 0x50fdce8f62dd8dc6b3a6564d, - limb2: 0x8c84193bbbefb652, + limb0: 0xaec889b9d8ce51c4a2c3586f, + limb1: 0xa2b07874c333bfee9f78e13e, + limb2: 0xc445de21be8d8709, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xcfbb5c67d81c8571940664fa, - limb1: 0xac72fc9900b9f98e0dca9923, - limb2: 0xa1c4fce9ee18ec45, + limb0: 0x7e47d1c2d19c21b2f6870259, + limb1: 0xe701b40af42001c38bca00db, + limb2: 0xd87ea1720d4dd3d6, limb3: 0x0 }, y: u384 { - limb0: 0xb8c48f7c40b6e10e90a5580f, - limb1: 0x96e1a71ebd3a5de9fb5d212, - limb2: 0xa021c2354f3accd9, + limb0: 0x5b1d6cc74985ce49a1f737fe, + limb1: 0xb9127c572c3f091c031c249c, + limb2: 0x1392711e1576aa6f, limb3: 0x0 } }, @@ -24129,16 +24110,16 @@ mod msm_tests { .span(); let scalars = array![ u256 { - low: 0x51304d66b5d5211193aae873b35ff362, high: 0x6b986ee9cc4a7843227d39587e4669e9 + low: 0xb4862b21fb97d43588561712e8e5216a, high: 0x259f4329e6f4590b9a164106cf6a659e }, u256 { - low: 0xdfba2911388712f7926d524d1cef16aa, high: 0xab3dc78415dd8a9395b025df2f847a1a + low: 0x12e0c8b2bad640fb19488dec4f65d4d9, high: 0x5487ce1eaf19922ad9b8a714e61a441c }, u256 { - low: 0x205aac3d6d23ea1a8b463f6dba696a88, high: 0x3f355d694a84758a9c029a4effcc18ec + low: 0x5a92118719c78df48f4ff31e78de5857, high: 0xa3f2c9bf9c6316b950f244556f25e2a2 }, u256 { - low: 0x2f0c3d9160f86784822284ad124893b9, high: 0x3c6bec370537f59ba725c491023ccdd2 + low: 0x8d723104f77383c13458a748e9bb17bc, high: 0x85776e9add84f39e71545a137a1d5006 }, ] .span(); @@ -24147,128 +24128,100 @@ mod msm_tests { ( array![ 0x0, - 0x1, - -0x1, - 0x1, -0x1, 0x0, - -0x1, + 0x0, 0x1, - -0x1, - -0x1, 0x1, - -0x1, - -0x1, 0x1, - -0x1, - 0x0, 0x1, - 0x0, - -0x1, 0x1, - -0x1, 0x0, - -0x1, - -0x1, 0x0, 0x1, - 0x0, -0x1, + 0x0, + 0x0, 0x1, 0x1, 0x1, 0x0, 0x1, - 0x0, 0x1, 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, -0x1, 0x1, - 0x0, - 0x0, 0x1, - -0x1, 0x0, + -0x1, 0x0, 0x0, -0x1, - 0x0, + 0x1, + 0x1, 0x1, 0x0, -0x1, + 0x1, 0x0, 0x1, 0x0, -0x1, - 0x0, + -0x1, 0x1, 0x1, 0x1, 0x0, - 0x0, - 0x0, -0x1, - 0x0, + 0x1, + 0x1, 0x0, -0x1, + 0x0, -0x1, -0x1, - 0x1, 0x0, -0x1, 0x1, + 0x0, 0x1, + 0x0, 0x1, - 0x1, - ] - .span(), - array![ 0x0, - -0x1, - -0x1, 0x0, - -0x1, 0x0, - -0x1, - 0x1, 0x0, 0x1, 0x0, 0x0, - -0x1, 0x1, 0x1, - -0x1, - 0x1, + 0x0, 0x0, -0x1, 0x1, - 0x1, -0x1, 0x1, -0x1, -0x1, - -0x1, - 0x0, + 0x1, 0x0, 0x1, -0x1, -0x1, + ] + .span(), + array![ -0x1, 0x0, - -0x1, 0x0, -0x1, + -0x1, + 0x1, + 0x1, + 0x1, 0x0, 0x0, - 0x1, 0x0, -0x1, 0x1, @@ -24277,212 +24230,237 @@ mod msm_tests { 0x1, 0x1, 0x0, + 0x0, + 0x0, + 0x0, -0x1, - -0x1, - -0x1, - 0x1, + 0x0, -0x1, 0x1, 0x0, -0x1, - -0x1, - 0x0, 0x1, 0x1, 0x1, - -0x1, 0x1, - -0x1, 0x0, - 0x1, 0x0, -0x1, - 0x0, 0x1, -0x1, - 0x0, -0x1, - 0x0, -0x1, - 0x0, -0x1, - 0x0, 0x1, 0x0, 0x0, + 0x0, 0x1, - ] - .span() - ), - ( - array![ -0x1, - 0x0, -0x1, 0x1, 0x1, + 0x1, 0x0, - -0x1, - -0x1, 0x0, 0x0, -0x1, 0x0, - 0x0, - 0x1, -0x1, + 0x1, + 0x0, -0x1, + 0x1, 0x0, 0x1, 0x1, - 0x0, - 0x0, -0x1, 0x0, + 0x1, + 0x1, + -0x1, -0x1, 0x1, 0x0, - 0x0, 0x1, - 0x0, - -0x1, 0x1, + 0x0, 0x1, 0x1, -0x1, + 0x0, + 0x0, + 0x0, -0x1, - -0x1, + ] + .span() + ), + ( + array![ 0x0, -0x1, - 0x1, + 0x0, -0x1, -0x1, 0x1, - 0x0, -0x1, - 0x1, - 0x1, + -0x1, -0x1, 0x1, -0x1, 0x0, -0x1, - 0x0, -0x1, -0x1, 0x0, - 0x0, + 0x1, -0x1, + 0x1, -0x1, + 0x1, 0x0, -0x1, + -0x1, + 0x1, 0x1, 0x1, -0x1, 0x0, 0x0, + -0x1, 0x1, 0x1, -0x1, + -0x1, + -0x1, + -0x1, 0x1, 0x1, 0x1, + 0x0, + 0x0, -0x1, 0x0, 0x1, 0x0, 0x0, - 0x1, 0x0, 0x0, 0x0, - -0x1, - -0x1, - ] - .span(), - array![ 0x1, -0x1, - 0x1, + 0x0, + -0x1, + 0x0, 0x1, 0x0, 0x1, + 0x0, + 0x0, + 0x0, 0x1, 0x0, + -0x1, + 0x0, + -0x1, 0x1, 0x1, + 0x0, 0x1, -0x1, 0x0, 0x1, 0x1, 0x1, + 0x1, -0x1, - 0x0, - -0x1, + 0x1, -0x1, -0x1, + ] + .span(), + array![ 0x1, 0x0, + 0x1, + 0x1, + 0x1, + 0x1, + 0x1, -0x1, 0x1, 0x0, + 0x1, + 0x0, + 0x0, + 0x0, -0x1, -0x1, - 0x1, -0x1, -0x1, + -0x1, + 0x1, + 0x1, 0x1, + -0x1, 0x0, + -0x1, 0x0, -0x1, 0x1, 0x0, 0x0, - 0x1, - 0x1, -0x1, - 0x1, 0x0, - -0x1, - 0x1, 0x0, 0x1, + -0x1, + -0x1, + -0x1, 0x0, -0x1, -0x1, 0x1, - 0x1, + -0x1, + 0x0, 0x1, 0x0, + -0x1, + 0x1, + -0x1, 0x0, -0x1, + -0x1, 0x1, 0x0, + 0x0, 0x1, -0x1, 0x1, -0x1, + 0x0, + 0x0, + 0x0, + -0x1, + -0x1, + -0x1, -0x1, -0x1, 0x1, 0x0, - -0x1, 0x1, + -0x1, 0x1, + -0x1, 0x1, 0x0, + -0x1, 0x1, + -0x1, 0x0, 0x1, 0x1, 0x1, - -0x1, - 0x0, - -0x1, - 0x1, - -0x1, - -0x1, ] .span() ), @@ -24490,337 +24468,339 @@ mod msm_tests { array![ -0x1, 0x0, - -0x1, - -0x1, + 0x0, 0x1, 0x0, + 0x0, + -0x1, -0x1, 0x1, - 0x1, - 0x1, + -0x1, -0x1, 0x1, + -0x1, + -0x1, 0x0, + -0x1, + -0x1, + -0x1, 0x1, + -0x1, 0x1, 0x0, 0x0, -0x1, - 0x1, 0x0, - 0x1, 0x0, 0x0, - -0x1, 0x0, - -0x1, 0x1, 0x0, -0x1, -0x1, - 0x0, 0x1, -0x1, 0x0, 0x0, - -0x1, - -0x1, - 0x1, 0x1, 0x1, -0x1, + 0x1, 0x0, 0x0, + -0x1, + 0x0, + -0x1, 0x1, -0x1, + 0x0, + -0x1, 0x1, -0x1, 0x1, 0x1, + -0x1, 0x0, - 0x1, - 0x1, 0x0, - 0x1, -0x1, + 0x1, -0x1, 0x1, + -0x1, + -0x1, 0x0, 0x1, - 0x1, + -0x1, 0x0, -0x1, - 0x1, - 0x1, 0x0, + -0x1, + 0x0, + -0x1, 0x0, - 0x1, - 0x1, 0x1, 0x1, 0x0, 0x0, - 0x1, 0x0, -0x1, 0x1, - 0x0, 0x1, - 0x0, - -0x1, + 0x1, ] .span(), array![ + -0x1, + -0x1, + 0x0, 0x0, - 0x1, 0x1, 0x0, + -0x1, 0x1, -0x1, -0x1, - 0x1, + -0x1, 0x0, - 0x1, - 0x1, 0x0, 0x1, + 0x1, -0x1, 0x1, 0x1, 0x1, - 0x0, 0x1, - -0x1, - -0x1, - -0x1, + 0x0, 0x1, 0x1, 0x1, 0x0, - 0x1, + 0x0, 0x0, 0x1, - 0x1, - -0x1, 0x0, + 0x0, + -0x1, 0x1, 0x1, + 0x0, 0x1, 0x0, -0x1, 0x1, - 0x1, -0x1, - 0x1, - 0x1, + -0x1, + -0x1, -0x1, 0x1, -0x1, + 0x1, 0x0, + -0x1, 0x0, 0x0, + -0x1, 0x0, -0x1, + 0x0, + 0x0, 0x1, - -0x1, - -0x1, 0x0, 0x1, 0x0, + 0x1, 0x0, -0x1, - -0x1, - 0x1, + 0x0, -0x1, -0x1, 0x0, -0x1, - 0x1, - 0x0, - 0x1, + -0x1, + -0x1, 0x0, 0x0, 0x0, + -0x1, + 0x1, + 0x1, 0x1, -0x1, - 0x0, -0x1, - 0x0, - 0x0, - 0x1, - 0x0, -0x1, 0x1, + -0x1, 0x1, ] .span() ), ( array![ - 0x1, + 0x0, 0x1, 0x1, 0x0, -0x1, - -0x1, 0x1, - -0x1, 0x0, 0x1, + -0x1, 0x1, - 0x0, - 0x0, 0x1, -0x1, + 0x1, -0x1, + 0x1, -0x1, - 0x0, -0x1, 0x1, + 0x0, + 0x0, -0x1, 0x1, 0x0, 0x0, + 0x0, + 0x0, 0x1, + -0x1, + 0x1, + 0x1, + -0x1, 0x1, - 0x0, 0x0, 0x1, 0x0, 0x0, - -0x1, + 0x0, + 0x0, 0x1, -0x1, -0x1, - -0x1, - 0x1, 0x0, 0x1, + -0x1, 0x0, -0x1, 0x1, 0x1, - 0x1, -0x1, 0x0, 0x0, - 0x1, + 0x0, + -0x1, -0x1, - 0x1, - 0x1, 0x0, + -0x1, 0x1, 0x0, 0x0, - -0x1, 0x1, - -0x1, - -0x1, - -0x1, + 0x1, -0x1, 0x0, - -0x1, - -0x1, 0x0, + 0x1, -0x1, 0x0, -0x1, + 0x1, + 0x1, + 0x0, + 0x1, 0x0, - -0x1, -0x1, 0x0, + 0x0, 0x1, -0x1, -0x1, -0x1, 0x1, - 0x1, - 0x1, - -0x1, ] .span(), array![ - -0x1, 0x1, - -0x1, - -0x1, 0x0, - -0x1, + 0x0, + 0x0, 0x1, -0x1, 0x1, + 0x0, + 0x1, 0x1, + -0x1, 0x1, 0x0, -0x1, 0x0, 0x1, - 0x1, -0x1, 0x0, -0x1, - -0x1, 0x1, 0x1, - 0x0, - 0x0, - 0x0, -0x1, + 0x0, + 0x1, + 0x1, -0x1, -0x1, 0x1, - 0x0, - -0x1, 0x1, 0x0, -0x1, - -0x1, - -0x1, - 0x0, 0x0, 0x0, -0x1, -0x1, 0x1, + 0x0, -0x1, + 0x0, 0x1, - 0x1, - -0x1, - -0x1, - 0x1, + 0x0, 0x1, 0x1, + 0x0, 0x1, + 0x0, + -0x1, + -0x1, -0x1, 0x1, 0x1, - -0x1, 0x0, + -0x1, 0x1, 0x0, 0x1, - -0x1, - -0x1, 0x0, 0x0, + -0x1, + 0x1, 0x0, 0x1, + -0x1, 0x1, 0x1, + -0x1, 0x0, 0x1, - 0x0, - 0x0, - 0x0, + -0x1, 0x1, + -0x1, 0x0, 0x0, 0x0, -0x1, - 0x0, -0x1, 0x1, 0x1, + -0x1, + -0x1, + 0x1, ] .span() ), @@ -24830,109 +24810,109 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0x97ccc2676093f00683316e40, - limb1: 0xa5d2f559bdec643505afbefe, - limb2: 0xc26306a50df203ce, + limb0: 0xcbdc7b99140efe9c44632b29, + limb1: 0xc9a231fbe8da03c47c0d66b2, + limb2: 0xb02f47597faeca8a, limb3: 0x0 }, y: u384 { - limb0: 0x56bad0635f0460375e83ab27, - limb1: 0x87578984be5e1ee23b5899ee, - limb2: 0x2f0362f66b508a66, + limb0: 0x655639ada5e232fec729292c, + limb1: 0x61ce7107f4ba51d2daa5e86, + limb2: 0x63a6135830c729c2, limb3: 0x0 } }, Q_high: G1Point { x: u384 { - limb0: 0xe2e9e0568ad7649584e16f76, - limb1: 0x5e7ea74db4b0ea9d978a252a, - limb2: 0xdcf6f868162b564, + limb0: 0xbae3e7b236867962646edcee, + limb1: 0xcf0b20e8c9504e235eebe53f, + limb2: 0xc3d1341401f23948, limb3: 0x0 }, y: u384 { - limb0: 0xd4c9c284243bcaf55dcfcbc8, - limb1: 0xf1f297c546d2009a43702168, - limb2: 0xc39fb45a2eea558, + limb0: 0xfa6ec300ebfdb6aa1f61aa93, + limb1: 0x84b59ad33ac9f13e7491cb95, + limb2: 0xcae321fcc58e37aa, limb3: 0x0 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0xd1448f29a439a8dfe36ccff7, - limb1: 0xd586d9df32d0c56a82e66b2c, - limb2: 0x767580253f079334, + limb0: 0xb171fb1783a102343fee5512, + limb1: 0x61d3ff9c2f0c5f7f491dea7, + limb2: 0x6859f31d6357b831, limb3: 0x0 }, y: u384 { - limb0: 0xf078a043917087f57ce0f7b0, - limb1: 0x4b35367f9ae2ec979068d0a9, - limb2: 0x555ccf6f80cf6ff3, + limb0: 0xa0b58d839397bf8e92fbe136, + limb1: 0xa62e140ab79623671c010e2e, + limb2: 0x6bfcc193f736d104, limb3: 0x0 } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0x571e2e10cda56d2b8beb4097, - limb1: 0xd1dc42e0b39318aa3241bd14, - limb2: 0xc1e0bdbc646d852, + limb0: 0x974787fdf40217c9624736ff, + limb1: 0x6685a73681124c18a0ada209, + limb2: 0xdb97bd5008d9bc0, limb3: 0x0 }, u384 { - limb0: 0xab35cf0000a7a10843dbf229, - limb1: 0xcd2c3ab070b6673bbaef73a3, - limb2: 0x85baf3c5befda19b, + limb0: 0x9e87246468935748392b9b2, + limb1: 0xfc501684fa1a3586ebd03419, + limb2: 0xc4655a74c058042b, limb3: 0x0 }, u384 { - limb0: 0xc5437a834aeb94107f721bac, - limb1: 0xb4f5d72ed6e85e0f799019be, - limb2: 0xf2c57629ffe0e569, + limb0: 0xbc31a47d56e0362bb7c2f7ef, + limb1: 0xe3fcc75608fa60290fa8e7e4, + limb2: 0x671fd6703b72fb72, limb3: 0x0 }, u384 { - limb0: 0xef70b7ab82025b36bd117788, - limb1: 0xa273a0071b270715601c16b1, - limb2: 0x85cf1cfc14159eac, + limb0: 0xa4986854a8802ef23732a4a9, + limb1: 0xc3351db635380d33a81ca2f2, + limb2: 0x279441a3f4b60f8a, limb3: 0x0 }, u384 { - limb0: 0xaac54127dd7e8b048ca4e1a6, - limb1: 0xffffffffffffffff98c0fac6, - limb2: 0xffffffff00000000, + limb0: 0x38a2430fcf7ce5e0f20d647a, + limb1: 0x7fffffffffffffffc1d65735, + limb2: 0x7fffffff80000000, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0xb41f3f5ad3e12ac4d6125cc3, - limb1: 0xe646e8456bb9c020ab0ba268, - limb2: 0x9e24d1c7877d41c3, + limb0: 0xa4d143c5ac0c7d01a988d3dd, + limb1: 0xbcf69408184567efab71fa9b, + limb2: 0xa710a3a1ac9f4d87, limb3: 0x0 }, u384 { - limb0: 0xbfb55f43d59e3a88fe401ad9, - limb1: 0xe925e5d99c0664da9b1fb5f, - limb2: 0x9bbaba730aea3b24, + limb0: 0xc88eda7a7d46d57a959d2ab8, + limb1: 0xf97d55b4b293834dc0fce93c, + limb2: 0x5ccd9e8c9b3719b1, limb3: 0x0 }, u384 { - limb0: 0xa653b58b31291fbec86e2de4, - limb1: 0x6e4282a70c18c40daa231029, - limb2: 0x1e194ba3b666f806, + limb0: 0x5751362d36a82b8a490b937d, + limb1: 0x753bcb7150407a4de9ef34f1, + limb2: 0x4459278fde8be98f, limb3: 0x0 }, u384 { - limb0: 0x12c6b82b97c54b4eaf35bde, - limb1: 0x31dedb349f111556b6c76906, - limb2: 0x559348b5c3226a77, + limb0: 0x418cb59835159e938fbe3b50, + limb1: 0x26faadfd496739651644b56a, + limb2: 0x2ebe6f30395e0c64, limb3: 0x0 }, u384 { - limb0: 0x1c0fbcbe0bd3e86f920ea4ba, - limb1: 0x760866e44eb686c972f2d290, - limb2: 0xdb30eee474417a47, + limb0: 0x89f1decb1f060ce7f06d8e8f, + limb1: 0x593ae77db7da95a19ec77bbd, + limb2: 0xb76ce07c019d655a, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -24940,90 +24920,90 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xe66ccb450ab50fff4020f0ec, - limb1: 0x1ec5e310c47a62f312e4af69, - limb2: 0x816504817e98a828, + limb0: 0x37d4f6d9d48a2ed44b080d30, + limb1: 0xb5dd3fc6fda55f492fcaf73, + limb2: 0xa0b021365fbfb2f2, limb3: 0x0 }, u384 { - limb0: 0x7e984d0354381dc95537ea2, - limb1: 0x4325087732475fedae655f13, - limb2: 0x52e25462efec159e, + limb0: 0x7aa207dcc708be66f87daa61, + limb1: 0x95baf797a3bd145b462e7b1a, + limb2: 0x8550aa376346dbe7, limb3: 0x0 }, u384 { - limb0: 0xe9c0647d436bd2c36863835c, - limb1: 0x11722bed389ff217024d4489, - limb2: 0xb21181f187c79fdb, + limb0: 0x3af7fb2cd4850d91a84409d, + limb1: 0x5803a318b4d4d9a81c987d19, + limb2: 0x1098d08e924ce81e, limb3: 0x0 }, u384 { - limb0: 0xff555e92289c6f27d189e024, - limb1: 0x2b3eeb692f9640174a2ae04a, - limb2: 0x620d98139d6466ea, + limb0: 0x302652ef16b4bc3384c8850e, + limb1: 0xe4c74f349db6aebc168eb75e, + limb2: 0xccca76f099ba69a7, limb3: 0x0 }, u384 { - limb0: 0x1632f7b04009acae832755cb, - limb1: 0xa68ceedfaa0ad6b01ea30136, - limb2: 0x52c15ff95cb673e2, + limb0: 0x320ce750111e5d551f22eef8, + limb1: 0x8b148690aedb12682d5dee78, + limb2: 0xe19e60ada354875c, limb3: 0x0 }, u384 { - limb0: 0xe68049b7b69a93e9fc04f038, - limb1: 0x1f7837b6dfff08ff4baa33d, - limb2: 0x971673827f5e2e54, + limb0: 0xd51f1b829c85eca8a2eab7aa, + limb1: 0x5322d1d6a46c9674e2a3ecf8, + limb2: 0x5e68f5cf5e6103f6, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x5044c1db1da6c8fc4dc9657, - limb1: 0xc6007ccf7219441d2632f2c4, - limb2: 0xffd546b59223244d, + limb0: 0x204245d4ea22ba647029377e, + limb1: 0x6b0e78b57a03115d800f0b86, + limb2: 0xf6c5e281b19ef001, limb3: 0x0 }, u384 { - limb0: 0x7f9b4d013344ccabb5101e77, - limb1: 0xd7235408dbee9d952c4ed8e9, - limb2: 0x185d1ebcc4994b30, + limb0: 0xd95753878f931c6e381567b5, + limb1: 0xc3cc57d1a38b717fb14d3e1c, + limb2: 0x83824ed5177e3d5a, limb3: 0x0 }, u384 { - limb0: 0x64be78ebbc25b044844a743f, - limb1: 0x4d140058c3cda5680c94ccd6, - limb2: 0x64ba79bf26c01e48, + limb0: 0x5b565f6dd5bd4eafa17bbdc, + limb1: 0xe59a15870aee7c8f576d7ac6, + limb2: 0x2ab40cb9998baddb, limb3: 0x0 }, u384 { - limb0: 0x751cea77f11edf6fb6b4e663, - limb1: 0x12443c41c528b582fa91a0dd, - limb2: 0x892ecea819177955, + limb0: 0x35d4465d94cf17ad59c8b867, + limb1: 0x2291223a4ee7d3f41ea5e3bf, + limb2: 0x1ab3593de6ab5385, limb3: 0x0 }, u384 { - limb0: 0x5782f76297c7ad8130d204a0, - limb1: 0x46bb8a6ca883a629e779f9da, - limb2: 0x658cd808de39298, + limb0: 0x5c9f364fb8d919ca12f4f92c, + limb1: 0xae3933f7dad713d61b9056cb, + limb2: 0xbb7092e6b6b45fc6, limb3: 0x0 }, u384 { - limb0: 0x1e783047497ba2ae3a149ffe, - limb1: 0xc0150b4f968db66db6679f2d, - limb2: 0xe74cb4cc03dd1d1a, + limb0: 0x85cf4ac2156441109f954819, + limb1: 0x1d76d24d9f49402572b5c86b, + limb2: 0x78d8bbf283ee4d6a, limb3: 0x0 }, u384 { - limb0: 0x12c6b82b97c54b4eaf35bdb, - limb1: 0x31dedb349f111556b6c76906, - limb2: 0x559348b5c3226a77, + limb0: 0x418cb59835159e938fbe3b4d, + limb1: 0x26faadfd496739651644b56a, + limb2: 0x2ebe6f30395e0c64, limb3: 0x0 }, u384 { - limb0: 0x1c0fbcbe0bd3e86f920ea4ba, - limb1: 0x760866e44eb686c972f2d290, - limb2: 0xdb30eee474417a47, + limb0: 0x89f1decb1f060ce7f06d8e8f, + limb1: 0x593ae77db7da95a19ec77bbd, + limb2: 0xb76ce07c019d655a, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -25033,63 +25013,66 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0x16a8f6150d5e736e52ff592c, - limb1: 0xf91abab0240fe28262533b49, - limb2: 0xe03ccb97323c977, + limb0: 0x5a1e5fe56f31ba28ba52404c, + limb1: 0xad49ccaba1592800f102a144, + limb2: 0x729c799af8d5267d, limb3: 0x0 }, u384 { - limb0: 0xc585aa0ec49d1bb0f5ef394c, - limb1: 0x35baa297be5ca3e5e907059a, - limb2: 0xf3c73fbc37411c7a, + limb0: 0x5ebb4de8ecc193ca22748761, + limb1: 0xdec911ac9ade0f230633545f, + limb2: 0xfeea544f75828efe, limb3: 0x0 }, u384 { - limb0: 0x8c19ddfbce8ef6240da9d09f, - limb1: 0x4d5769bfb57c01f0d85b7900, - limb2: 0x655a6b179d8c1b2e, + limb0: 0xe04e97a34c26b6fdb34aa197, + limb1: 0xcd500707854389af39bd38ba, + limb2: 0x45227c5ef643aa6, limb3: 0x0 }, u384 { - limb0: 0x61d8f47ff01ee6fb9d27667d, - limb1: 0x7a95025f141cf928e152a5c2, - limb2: 0x76140585101c6ce2, + limb0: 0xcb892f8d759522d121cd65b0, + limb1: 0x54d6c768770608bafd238da, + limb2: 0xc0bc04e2f7a62e88, limb3: 0x0 }, u384 { - limb0: 0x99a7d80a7b670bc256ee50c7, limb1: 0x121381ba, limb2: 0x0, limb3: 0x0 + limb0: 0xd901aa06c75e60f717b36a0, + limb1: 0x80000000000000006c7d5b5e, + limb2: 0x7fffffff80000000, + limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0x90d3e1d0ea67d3229b18093a, - limb1: 0xf952bf3bc7ecbe9ebbac97f7, - limb2: 0x9ebbefca1ecdcd3a, + limb0: 0x12dae7d6211541a623e7090a, + limb1: 0xddbca0c459324e51fee11bac, + limb2: 0xf9f8b49c720dbfc1, limb3: 0x0 }, u384 { - limb0: 0x1810c07e43ac33dd4a9ce09c, - limb1: 0x381d7976e099af3362cfa0c3, - limb2: 0xde6dbae9c94900e, + limb0: 0xcf17eeed6256cf1e6456e03b, + limb1: 0xdcaf2b59c23b15a34a1c80ac, + limb2: 0x3dd7f2940c8afde3, limb3: 0x0 }, u384 { - limb0: 0x4321fd7b985ec93a3cbfb23a, - limb1: 0x9a97a28a6dbb9008428a0ca1, - limb2: 0x9d034f06430a116b, + limb0: 0xe92cb4310b1f6c2a7e1341fd, + limb1: 0x2dedf5008fa1309c1ba24d01, + limb2: 0x4e19dddf70f90640, limb3: 0x0 }, u384 { - limb0: 0xcac7cfde3b4382e67386e012, - limb1: 0x68aed59504f27a829c08e9fd, - limb2: 0xb43ee87e890ee716, + limb0: 0xdbc74cc64dd059b1f5c34349, + limb1: 0x38a303af06d20e3c1927013b, + limb2: 0x7afe970a4b5393f6, limb3: 0x0 }, u384 { - limb0: 0xd0f29ecee19073e0905ea385, - limb1: 0xbd5cb4f057f20060e1186c62, - limb2: 0x8fc4860400d0c8b0, + limb0: 0x9aea72b1fc8e9221d061dcca, + limb1: 0x53d1f890d7644b42bbe8fd30, + limb2: 0xa3caf3c17f59f69c, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -25097,90 +25080,90 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x1f16998314dcbf08bed0326, - limb1: 0x2cc32b68523fe8bacb0f66be, - limb2: 0x732aba85dd4b4ea7, + limb0: 0x3a7c5573c8bede8727998bb, + limb1: 0x9a44a40f50749ac969bb3e1e, + limb2: 0x243db37ac830e289, limb3: 0x0 }, u384 { - limb0: 0x843e0ef8000582fa063c13dc, - limb1: 0xf41ce0b199e8d43048be6db9, - limb2: 0xa249d14f03d093d3, + limb0: 0x34201f6659e6204e00c15cd, + limb1: 0x32df0863c575512333cd9eac, + limb2: 0x17351132db1e9045, limb3: 0x0 }, u384 { - limb0: 0x57d03b8435b1fc21ae7ac4e9, - limb1: 0xd19e52aee28bd4538f0165d9, - limb2: 0x23f5aa31ab714c5e, + limb0: 0x7f331698694293d681109e6b, + limb1: 0x7fa9aaa8c041c2626169991d, + limb2: 0x93ec02e0f10bfb0c, limb3: 0x0 }, u384 { - limb0: 0xe4c04e9da661ef0384036910, - limb1: 0xd57c3eaae1672ec05eaf28c, - limb2: 0xcf120ecc0e63a066, + limb0: 0xc57a1ea07ce4632471652510, + limb1: 0x42e9edce2a5c41a35e3b2f, + limb2: 0x78fd280108b677a7, limb3: 0x0 }, u384 { - limb0: 0x361b6401935ef3b924d1beff, - limb1: 0xc3302c75d3277e5893d598e6, - limb2: 0xc5afc774965691a6, + limb0: 0x565cbe10c266cb019a2b24e3, + limb1: 0x4d361727895d8febdc992513, + limb2: 0x1bfcff02e470883c, limb3: 0x0 }, u384 { - limb0: 0x444378e03393435f7fc8bf1e, - limb1: 0xf9704bfeaf202c8b87a9a711, - limb2: 0xd3652faaf5a2e0c8, + limb0: 0x64053c91ff878da9b8fc1644, + limb1: 0xf78fc1c60e20ff3f4161555d, + limb2: 0xaeb1a0894143062d, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x9faab5c71330cffdbbf09898, - limb1: 0x22713b45bc1e58ddcd02b4aa, - limb2: 0xcf6e09797bcdb36e, + limb0: 0x53894ad6640fa342be5f8a44, + limb1: 0xc589b6eac0aa62e95370b965, + limb2: 0x78fa04ee88dfa30b, limb3: 0x0 }, u384 { - limb0: 0x542b6bc6a3a6012262f3d11d, - limb1: 0x85d7eb9bc9890e969398eb76, - limb2: 0x11e714b1faf93390, + limb0: 0x938324d589ff19a6cf08d2f2, + limb1: 0x7fe14746c59ddace5483d019, + limb2: 0xf31dd4b2cef62212, limb3: 0x0 }, u384 { - limb0: 0x1f91afacdb27917050255b9a, - limb1: 0x27acf1f63fda151e6b980b5e, - limb2: 0x6aba1be80ea2222a, + limb0: 0x69646d0ca0cc35e43d0272ec, + limb1: 0x6fa91bf13ed04de09d6bfa84, + limb2: 0x4f883246fbb7f237, limb3: 0x0 }, u384 { - limb0: 0x19efe0639b0b56f8ffd647c1, - limb1: 0x7192d6225f24e3d7e3865944, - limb2: 0x6bc4dcbb1a50a931, + limb0: 0xbefe717c2768fa4a7f91a535, + limb1: 0x9d57163d353b45de372c6edf, + limb2: 0x39a0712c856f1dde, limb3: 0x0 }, u384 { - limb0: 0xaf6fc3c4d87dff23448a5185, - limb1: 0x516502652a8ece484916165d, - limb2: 0x810d4d8b24b96b09, + limb0: 0x444a2d88200c98ba75115937, + limb1: 0xa9273af273371cb5034d6e13, + limb2: 0xcd893d7c9072311f, limb3: 0x0 }, u384 { - limb0: 0x9c9dd2052f7ba9d6b37627f5, - limb1: 0x166d410edc7e15a2045dce2a, - limb2: 0x487bf2d1ead24b42, + limb0: 0xe4c10d115141f20334c00be8, + limb1: 0xe663c8a3800cd5904d045c22, + limb2: 0xbd7f38719d25b654, limb3: 0x0 }, u384 { - limb0: 0xcac7cfde3b4382e67386e00f, - limb1: 0x68aed59504f27a829c08e9fd, - limb2: 0xb43ee87e890ee716, + limb0: 0xdbc74cc64dd059b1f5c34346, + limb1: 0x38a303af06d20e3c1927013b, + limb2: 0x7afe970a4b5393f6, limb3: 0x0 }, u384 { - limb0: 0xd0f29ecee19073e0905ea385, - limb1: 0xbd5cb4f057f20060e1186c62, - limb2: 0x8fc4860400d0c8b0, + limb0: 0x9aea72b1fc8e9221d061dcca, + limb1: 0x53d1f890d7644b42bbe8fd30, + limb2: 0xa3caf3c17f59f69c, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -25190,9 +25173,9 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0x94b780a08a4475ed5461bb3, - limb1: 0x6b792eff87b69f6c4215a763, - limb2: 0xa05853c8891a2f0, + limb0: 0x301f6de3ea6cd1cc731921c5, + limb1: 0x1e29d77c14857ab58a8e58b6, + limb2: 0xfaa60ac7c4f69d03, limb3: 0x0 }, u384 { @@ -25205,15 +25188,15 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0x694ab6d13521420df2937c29, - limb1: 0x8d23fd0a71d0a93b4f9af83a, - limb2: 0x47e323eafda213f8, + limb0: 0x57ad78731a452badc91b3aca, + limb1: 0x3640c53850d1de46a984420d, + limb2: 0x3ddc6dc539c2402e, limb3: 0x0 }, u384 { - limb0: 0x4bd1907fd0eef28a97b1c092, - limb1: 0xcbfa7ed3187e4ff7e58f6fa9, - limb2: 0x7bbb10533f95b767, + limb0: 0x93aa1d3645d884695ba2cdfe, + limb1: 0x2ad79f1d73beebe4ac823c1a, + limb2: 0xd3d4d8cc9ab60e88, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -25221,54 +25204,54 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x7041de8be0296f5c2272f6d1, - limb1: 0x58e5cfb1dbe2dce424d2342c, - limb2: 0x7fc638a568aeb702, + limb0: 0xc2c9073e7140bb1988003fc4, + limb1: 0x42926f06b587bc1a014276bc, + limb2: 0x9cf5bab7faa6e0ce, limb3: 0x0 }, u384 { - limb0: 0x9ea89166fcbd5099a4feb0db, - limb1: 0x276c2b09e30b573d6446b1c5, - limb2: 0xb05cad9d93b25809, + limb0: 0x60318df863433e6e40b78a43, + limb1: 0xff23843f3056aea20c274d73, + limb2: 0xcf3265185e09c560, limb3: 0x0 }, u384 { - limb0: 0x3f456c64e8e00fb8be8c3790, - limb1: 0x98ba60f36cd33920e4e5997, - limb2: 0x2dbd7cd4c58cdcc9, + limb0: 0x4b577aef896d6e3354bf61b2, + limb1: 0x5f8244cadb2aebfcc88a83af, + limb2: 0x6021a5c211f3cb7f, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xbe1cd2ff83ca541e4c3ec8cb, - limb1: 0xaa1e0941eb33fee021669a20, - limb2: 0xcd5e9ff92c8e012f, + limb0: 0x886930de820cc9a295d45826, + limb1: 0x234d2f9833c96950a6af2102, + limb2: 0xdc30738527f7140a, limb3: 0x0 }, u384 { - limb0: 0xf661cc37854fcb361ca7c98, - limb1: 0xf4bbe0fa7a3d77503c4d6470, - limb2: 0x8624ec1c74c1a9bb, + limb0: 0xd4ed267b99dd0859862c564e, + limb1: 0xbef32f1de054db38d434e294, + limb2: 0xa8772f027f7565a0, limb3: 0x0 }, u384 { - limb0: 0xe8deff76c901649e60bd1e93, - limb1: 0x4ffc40dc2d1d96d4b46eb7b6, - limb2: 0xe79504dceb796db2, + limb0: 0x115559536a44af0214e9f64e, + limb1: 0x3364dffd1b5bc30e5f965264, + limb2: 0xdf47ab6fda186852, limb3: 0x0 }, u384 { - limb0: 0x694ab6d13521420df2937c26, - limb1: 0x8d23fd0a71d0a93b4f9af83a, - limb2: 0x47e323eafda213f8, + limb0: 0x57ad78731a452badc91b3ac7, + limb1: 0x3640c53850d1de46a984420d, + limb2: 0x3ddc6dc539c2402e, limb3: 0x0 }, u384 { - limb0: 0x4bd1907fd0eef28a97b1c092, - limb1: 0xcbfa7ed3187e4ff7e58f6fa9, - limb2: 0x7bbb10533f95b767, + limb0: 0x93aa1d3645d884695ba2cdfe, + limb1: 0x2ad79f1d73beebe4ac823c1a, + limb2: 0xd3d4d8cc9ab60e88, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -25278,34 +25261,28 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0x22faf492563e45d69ce72e5e, - limb1: 0x256ea4946eb9ae3902a6e0a, - limb2: 0x36b0ab5a3be9800c, + limb0: 0xd30234779e4492a65b49dbd6, + limb1: 0xfa2c2c68e38028e3dd623705, + limb2: 0x2e11a55f77d4708b, limb3: 0x0 }, g_rhs_sqrt: array![ u384 { - limb0: 0xd7d7ec83f5b3dd023cbdbff9, - limb1: 0xc36220493267dc705b5b7620, - limb2: 0x5e36f17e454b2dc7, - limb3: 0x0 - }, - u384 { - limb0: 0xf20d535306ceafb3575f04f, - limb1: 0x1c76431112712d5f6b448494, - limb2: 0x2692a0d0ca1943a1, + limb0: 0xf77443bc6678cf80aa54e2b2, + limb1: 0xfd5d14aa74c2fa4d1faff9f, + limb2: 0x5bb1cb91fa73d2d, limb3: 0x0 }, u384 { - limb0: 0xddb11361c65d25744a48d294, - limb1: 0xf993638bbb24363a7db68ac9, - limb2: 0x4dc1a024e5c064bb, + limb0: 0xc65a42b0815bf34e22b55be0, + limb1: 0xe5dbac2ac3a7c7394f96336a, + limb2: 0x2254ac3cabb47f44, limb3: 0x0 }, u384 { - limb0: 0x7949ee7887b30458f35773d8, - limb1: 0x6cc3940b45456a06175a2522, - limb2: 0x6ded24acd829b31a, + limb0: 0xe38b184d5f75a8991a062f83, + limb1: 0xafa3c58e1a370f2de3864006, + limb2: 0x1cd77501ae284dd3, limb3: 0x0 } ], @@ -25316,15 +25293,15 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0xf3fcecb6691f62f0e6e1972a, - limb1: 0x38724128f17ffbefef432d1b, - limb2: 0x85a38bef27a9fa3b, + limb0: 0x34c12d0510448edd8a4f435e, + limb1: 0x1c1b70597d3d6f0ffda68cdc, + limb2: 0x8f60be7a69fb2da6, limb3: 0x0 }, y: u384 { - limb0: 0x88d82beee15ef8005a036108, - limb1: 0xf785a9f344a32eb3589d8a1b, - limb2: 0x869e2006cd189f2c, + limb0: 0x67b330ca24613a628c5f1d44, + limb1: 0xa12378b8d8a57f7ee45cf035, + limb2: 0x7f7102c7548d7593, limb3: 0x0 } } @@ -25337,71 +25314,71 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0xfdea205bb51579f3527e3740, - limb1: 0xd054dff2099d21993994c460, - limb2: 0xeea700a000c0c2b, + limb0: 0x113c8d620e3745e45e4389b8, + limb1: 0x85b8ff52d905fd02fe191c3f, + limb2: 0xf5d132d685201517, limb3: 0x0 }, y: u384 { - limb0: 0x8e8c0626762076d9e607e61b, - limb1: 0xfbbc337f289b85e26bc262d0, - limb2: 0x5671345b4e859650, + limb0: 0x60c0ba1b358f375b2362662e, + limb1: 0x6abfc829d93e09aa5174ec04, + limb2: 0x7bc4637aca93cb5a, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x6bd3cded98ca6b5979c42e49, - limb1: 0x9dd7f2cec3ee3b49f8ce6dac, - limb2: 0xd8c42699dbe0fd1c, + limb0: 0xd3ff147ff0ee4213f51f677d, + limb1: 0x431366a7732a6e4a6b942255, + limb2: 0x9fe743b25d39a591, limb3: 0x0 }, y: u384 { - limb0: 0x6643d46614245689b8b3ab60, - limb1: 0x9c98774e382c86f7e8ff3d72, - limb2: 0x5e00fd0c9f3cdff8, + limb0: 0x7f8bb562ff60a902ef14bcb0, + limb1: 0xeb9420089fa531db62e806a6, + limb2: 0xfd028df433dfd5cc, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xd10c3a3b11e6bc0cd52a91cf, - limb1: 0x105cd479163d6a169b8ec648, - limb2: 0xf542e76832bf5b35, + limb0: 0x46ae31f6fc294ad0814552b6, + limb1: 0x2d54cc811efaf988efb3de23, + limb2: 0x2a2cc02b8f0c419f, limb3: 0x0 }, y: u384 { - limb0: 0x54aa166155d68789de832bed, - limb1: 0x1648700ec9d6ea63585e722a, - limb2: 0x48b9ee49d2006fdd, + limb0: 0xaec889b9d8ce51c4a2c3586f, + limb1: 0xa2b07874c333bfee9f78e13e, + limb2: 0xc445de21be8d8709, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x764b756f217845966d3e2a56, - limb1: 0x4b4930c37ead9ebb83a127e9, - limb2: 0x64350fa4a72999c9, + limb0: 0x7e47d1c2d19c21b2f6870259, + limb1: 0xe701b40af42001c38bca00db, + limb2: 0xd87ea1720d4dd3d6, limb3: 0x0 }, y: u384 { - limb0: 0xb9e6a5c06fb4e7894377b671, - limb1: 0xecca47733bf109d1b438527e, - limb2: 0x987fc8d32259a128, + limb0: 0x5b1d6cc74985ce49a1f737fe, + limb1: 0xb9127c572c3f091c031c249c, + limb2: 0x1392711e1576aa6f, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xfdb782a6e36f0bacfd32e343, - limb1: 0xf7c399fa75d32803c6dad527, - limb2: 0x312aa91e86fd04d5, + limb0: 0xb71f95ea692ed186e06e4c37, + limb1: 0x807276cd9cc59718bb11dbe9, + limb2: 0x10756a25836d67ca, limb3: 0x0 }, y: u384 { - limb0: 0x109ec1d07ba5243e585e6de0, - limb1: 0xfe22508514a28743f90c9ae4, - limb2: 0x4f44a691586b56f0, + limb0: 0xd34211b3520c83c5f9be99af, + limb1: 0x8f19a28ceef67bbda102ffe7, + limb2: 0x7ac2b92030d351cc, limb3: 0x0 } }, @@ -25409,19 +25386,19 @@ mod msm_tests { .span(); let scalars = array![ u256 { - low: 0xae5913cbba95d175a544d600ccd7e80d, high: 0x29aa729c33eef900581abb4bad190bf1 + low: 0x12e0c8b2bad640fb19488dec4f65d4d9, high: 0x5487ce1eaf19922ad9b8a714e61a441c }, u256 { - low: 0x5a504bd55593e079275a228a9159b181, high: 0x59fce1e60d0f02bbf66a3eb56000528c + low: 0x5a92118719c78df48f4ff31e78de5857, high: 0xa3f2c9bf9c6316b950f244556f25e2a2 }, u256 { - low: 0xfd85582c1ca89048540fa090089c8dbe, high: 0x2f34165d8543521d93e1535a66d04c5d + low: 0x8d723104f77383c13458a748e9bb17bc, high: 0x85776e9add84f39e71545a137a1d5006 }, u256 { - low: 0x310190ad724379b99624f4951a2c1892, high: 0x8236a8b0a5455b15dc7bd9d28ef11805 + low: 0xeb2083e6ce164dba0ff18e0242af9fc3, high: 0x17e0aa3c03983ca8ea7e9d498c778ea6 }, u256 { - low: 0x115445b02ae8520b99a5bba18ba92c6d, high: 0xa891587001b00a281d0989aa0dcc9306 + low: 0xb5d32b1666194cb1d71037d1b83e90ec, high: 0xa0116be5ab0c1681c8f8e3d0d3290a4c }, ] .span(); @@ -25429,252 +25406,251 @@ mod msm_tests { array![ ( array![ - 0x1, - -0x1, - 0x1, 0x0, - 0x1, -0x1, 0x0, - 0x0, - 0x0, - 0x0, - 0x0, -0x1, - 0x0, - 0x0, -0x1, 0x1, - 0x1, - 0x0, - 0x1, -0x1, - 0x1, - 0x1, - 0x0, - 0x1, -0x1, - 0x0, - 0x0, - 0x0, - 0x1, -0x1, - 0x0, - 0x0, 0x1, -0x1, 0x0, -0x1, - 0x0, -0x1, - 0x1, -0x1, 0x0, - 0x0, 0x1, - 0x0, - -0x1, -0x1, 0x1, -0x1, - 0x0, 0x1, + 0x0, -0x1, -0x1, + 0x1, + 0x1, + 0x1, -0x1, + 0x0, + 0x0, -0x1, 0x1, + 0x1, -0x1, -0x1, - 0x0, -0x1, -0x1, - 0x0, - 0x0, - 0x1, - 0x0, - 0x1, 0x1, 0x1, 0x1, - 0x1, - -0x1, + 0x0, + 0x0, -0x1, 0x0, + 0x1, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x0, - -0x1, 0x1, -0x1, - -0x1, - ] - .span(), - array![ 0x0, + -0x1, 0x0, 0x1, + 0x0, 0x1, 0x0, + 0x0, + 0x0, 0x1, 0x0, -0x1, 0x0, - 0x0, + -0x1, 0x1, 0x1, 0x0, 0x1, -0x1, + 0x0, 0x1, 0x1, 0x1, - 0x0, - 0x0, - -0x1, 0x1, + -0x1, 0x1, -0x1, + -0x1, + ] + .span(), + array![ + 0x1, 0x0, 0x1, 0x1, - 0x0, + 0x1, + 0x1, 0x1, -0x1, + 0x1, 0x0, + 0x1, 0x0, 0x0, - 0x1, 0x0, -0x1, -0x1, + -0x1, + -0x1, + -0x1, + 0x1, 0x1, 0x1, -0x1, + 0x0, -0x1, + 0x0, -0x1, - -0x1, + 0x1, + 0x0, 0x0, -0x1, + 0x0, + 0x0, 0x1, -0x1, -0x1, - 0x1, + -0x1, 0x0, + -0x1, + -0x1, 0x1, + -0x1, 0x0, 0x1, + 0x0, -0x1, 0x1, - 0x0, -0x1, 0x0, + -0x1, + -0x1, + 0x1, 0x0, 0x0, 0x1, + -0x1, + 0x1, + -0x1, 0x0, 0x0, 0x0, -0x1, - 0x0, - 0x1, + -0x1, + -0x1, + -0x1, + -0x1, 0x1, + 0x0, 0x1, -0x1, - 0x0, + 0x1, -0x1, 0x1, 0x0, - 0x0, -0x1, - 0x0, + 0x1, -0x1, 0x0, - -0x1, + 0x1, + 0x1, + 0x1, ] .span() ), ( array![ - 0x1, + -0x1, + 0x0, 0x0, 0x1, + 0x0, + 0x0, -0x1, -0x1, + 0x1, -0x1, -0x1, - -0x1, - 0x0, - -0x1, - 0x1, - 0x0, - 0x1, 0x1, -0x1, - 0x0, -0x1, 0x0, -0x1, - 0x0, + -0x1, -0x1, 0x1, -0x1, + 0x1, 0x0, - -0x1, 0x0, - 0x1, -0x1, 0x0, - 0x1, 0x0, - 0x1, - -0x1, 0x0, 0x0, 0x1, - -0x1, - 0x1, + 0x0, -0x1, -0x1, 0x1, - 0x0, + -0x1, 0x0, 0x0, 0x1, - -0x1, + 0x1, -0x1, 0x1, 0x0, 0x0, -0x1, - 0x1, + 0x0, -0x1, + 0x1, -0x1, 0x0, -0x1, + 0x1, + -0x1, + 0x1, + 0x1, -0x1, 0x0, 0x0, + -0x1, 0x1, - 0x1, + -0x1, 0x1, -0x1, -0x1, + 0x0, + 0x1, -0x1, 0x0, + -0x1, 0x0, + -0x1, 0x0, - 0x1, -0x1, 0x0, 0x1, 0x1, 0x0, - 0x1, - 0x1, + 0x0, 0x0, -0x1, 0x1, @@ -25683,595 +25659,598 @@ mod msm_tests { ] .span(), array![ - 0x0, -0x1, -0x1, 0x0, - 0x1, 0x0, + 0x1, 0x0, + -0x1, 0x1, -0x1, -0x1, + -0x1, + 0x0, 0x0, 0x1, 0x1, - 0x0, + -0x1, + 0x1, + 0x1, + 0x1, 0x1, 0x0, + 0x1, + 0x1, + 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, - 0x1, 0x0, + -0x1, 0x1, 0x1, - -0x1, - -0x1, 0x0, - -0x1, 0x1, + 0x0, + -0x1, 0x1, -0x1, -0x1, -0x1, + -0x1, 0x1, + -0x1, 0x1, 0x0, -0x1, - -0x1, - 0x1, 0x0, 0x0, -0x1, - 0x1, + 0x0, -0x1, - 0x1, 0x0, 0x0, 0x1, - -0x1, - -0x1, - 0x1, - -0x1, 0x0, 0x1, - 0x1, 0x0, 0x1, 0x0, -0x1, 0x0, - 0x1, - 0x1, - 0x1, + -0x1, -0x1, 0x0, - 0x1, - 0x1, - 0x1, -0x1, - 0x1, -0x1, -0x1, 0x0, - -0x1, - 0x1, + 0x0, 0x0, -0x1, 0x1, 0x1, 0x1, + -0x1, + -0x1, + -0x1, + 0x1, + -0x1, + 0x1, ] .span() ), ( array![ - 0x1, - -0x1, + 0x0, 0x1, 0x1, 0x0, -0x1, + 0x1, + 0x0, + 0x1, -0x1, 0x1, + 0x1, -0x1, - 0x0, - 0x0, + 0x1, -0x1, 0x1, - 0x0, + -0x1, -0x1, 0x1, 0x0, 0x0, -0x1, 0x1, - 0x1, 0x0, - -0x1, - -0x1, 0x0, - 0x1, - -0x1, 0x0, - -0x1, + 0x0, 0x1, -0x1, 0x1, + 0x1, -0x1, 0x1, 0x0, + 0x1, 0x0, 0x0, 0x0, - -0x1, 0x0, + 0x1, -0x1, -0x1, - 0x1, - 0x0, 0x0, 0x1, + -0x1, 0x0, + -0x1, + 0x1, 0x1, -0x1, 0x0, 0x0, 0x0, + -0x1, + -0x1, 0x0, + -0x1, 0x1, 0x0, - 0x1, 0x0, - -0x1, - -0x1, 0x1, 0x1, -0x1, 0x0, - -0x1, + 0x0, 0x1, -0x1, 0x0, - 0x0, -0x1, + 0x1, + 0x1, 0x0, + 0x1, 0x0, -0x1, 0x0, 0x0, - 0x0, 0x1, -0x1, - 0x1, - 0x0, - -0x1, -0x1, -0x1, + 0x1, ] .span(), array![ - 0x1, - 0x1, 0x1, 0x0, - -0x1, - -0x1, 0x0, - 0x1, - 0x1, 0x0, 0x1, - 0x0, - -0x1, - -0x1, -0x1, 0x1, 0x0, 0x1, - 0x0, + 0x1, -0x1, 0x1, 0x0, + -0x1, 0x0, + 0x1, -0x1, + 0x0, -0x1, 0x1, 0x1, + -0x1, + 0x0, 0x1, 0x1, -0x1, -0x1, + 0x1, + 0x1, 0x0, -0x1, 0x0, + 0x0, -0x1, - 0x1, -0x1, + 0x1, 0x0, - 0x0, - 0x0, - -0x1, -0x1, 0x0, + 0x1, 0x0, + 0x1, + 0x1, 0x0, - -0x1, 0x1, - -0x1, 0x0, -0x1, -0x1, - 0x0, - 0x1, + -0x1, 0x1, 0x1, + 0x0, + -0x1, 0x1, + 0x0, 0x1, + 0x0, + 0x0, + -0x1, 0x1, + 0x0, 0x1, -0x1, - -0x1, - -0x1, - -0x1, + 0x1, + 0x1, -0x1, 0x0, + 0x1, -0x1, - -0x1, + 0x1, -0x1, 0x0, 0x0, - 0x1, 0x0, - 0x1, -0x1, - 0x0, -0x1, 0x1, 0x1, - 0x1, -0x1, + -0x1, + 0x1, ] .span() ), ( array![ -0x1, - 0x0, - -0x1, - -0x1, + 0x1, -0x1, + 0x1, -0x1, 0x0, + 0x0, -0x1, -0x1, -0x1, 0x1, 0x0, 0x0, - 0x0, - -0x1, -0x1, -0x1, 0x1, + 0x1, + 0x1, -0x1, - 0x0, - 0x0, + 0x1, -0x1, - 0x0, - 0x0, - 0x0, 0x1, - 0x0, 0x1, -0x1, 0x0, - -0x1, + 0x1, 0x0, - -0x1, 0x0, -0x1, - -0x1, - -0x1, 0x0, -0x1, -0x1, + 0x1, 0x0, 0x1, 0x1, + -0x1, 0x1, 0x0, -0x1, - 0x0, -0x1, - 0x1, + -0x1, + -0x1, + -0x1, -0x1, 0x0, - 0x1, 0x0, 0x0, - 0x1, - 0x1, 0x0, + 0x0, + 0x1, + -0x1, 0x1, 0x0, + -0x1, 0x0, 0x0, 0x1, - -0x1, 0x0, - 0x1, 0x0, 0x1, - -0x1, + 0x1, -0x1, -0x1, 0x1, + 0x1, + 0x0, -0x1, - -0x1, + 0x0, -0x1, 0x0, + 0x0, 0x1, + -0x1, + -0x1, + -0x1, 0x0, 0x0, 0x1, + 0x0, + -0x1, -0x1, ] .span(), array![ 0x1, + -0x1, + 0x1, + -0x1, 0x0, + -0x1, 0x0, -0x1, 0x0, - 0x1, + -0x1, 0x0, - 0x1, + -0x1, 0x1, 0x0, - -0x1, 0x0, 0x0, 0x1, - -0x1, + 0x0, 0x1, 0x1, + 0x0, -0x1, 0x1, + -0x1, 0x0, 0x1, - 0x0, - 0x0, -0x1, - 0x1, 0x0, 0x0, + 0x1, -0x1, 0x0, 0x1, -0x1, - 0x1, -0x1, 0x1, - 0x1, - 0x1, - 0x0, - 0x0, 0x0, 0x0, + -0x1, 0x0, - 0x1, - 0x1, + -0x1, 0x0, - 0x1, + -0x1, + -0x1, 0x1, 0x0, 0x1, - 0x1, - 0x1, - 0x0, -0x1, -0x1, + 0x0, + 0x0, 0x1, -0x1, -0x1, - 0x1, - 0x1, + 0x0, 0x0, 0x1, 0x1, - 0x1, - 0x1, - 0x0, -0x1, + 0x1, -0x1, -0x1, 0x0, 0x1, - 0x0, -0x1, 0x0, - 0x0, + -0x1, + 0x1, + -0x1, 0x1, -0x1, 0x0, -0x1, 0x1, + 0x1, + -0x1, + -0x1, + 0x0, -0x1, -0x1, - 0x1, ] .span() ), ( array![ - 0x1, - 0x1, - 0x1, -0x1, -0x1, - 0x1, - 0x1, + 0x0, -0x1, 0x1, 0x0, - -0x1, 0x0, - -0x1, + 0x1, + 0x1, + 0x1, 0x1, 0x0, + 0x1, 0x0, + 0x1, 0x0, - 0x0, + 0x1, -0x1, 0x1, + -0x1, 0x0, + -0x1, + 0x1, + 0x1, 0x1, 0x0, - -0x1, 0x1, -0x1, -0x1, 0x0, 0x1, 0x1, - -0x1, - 0x0, 0x1, + -0x1, + -0x1, 0x0, 0x0, + 0x1, + 0x1, + -0x1, -0x1, -0x1, 0x1, 0x0, -0x1, + -0x1, + 0x1, 0x0, -0x1, 0x1, + 0x1, -0x1, 0x1, 0x0, + -0x1, 0x0, + 0x1, -0x1, 0x0, + -0x1, 0x0, -0x1, - 0x1, 0x0, 0x1, + -0x1, + -0x1, 0x0, -0x1, 0x1, - -0x1, 0x1, - 0x0, 0x1, - -0x1, 0x0, 0x0, - 0x1, 0x0, 0x1, -0x1, + 0x0, 0x1, 0x0, 0x1, -0x1, -0x1, + ] + .span(), + array![ 0x1, - 0x0, 0x1, + -0x1, + 0x1, + 0x0, 0x1, -0x1, 0x1, - ] - .span(), - array![ 0x0, -0x1, -0x1, 0x0, 0x1, 0x1, - -0x1, 0x0, 0x1, + 0x0, + 0x0, 0x1, 0x1, -0x1, + 0x0, -0x1, -0x1, 0x1, 0x0, + 0x0, -0x1, + 0x0, -0x1, + 0x0, -0x1, + 0x0, 0x1, 0x0, 0x0, + -0x1, 0x0, 0x1, - 0x0, -0x1, - -0x1, - 0x0, 0x0, -0x1, -0x1, - 0x0, + 0x1, + -0x1, 0x0, 0x1, 0x1, 0x0, - 0x1, 0x0, - 0x1, + 0x0, -0x1, 0x1, -0x1, - -0x1, - -0x1, 0x0, - -0x1, - 0x1, 0x0, -0x1, 0x1, -0x1, + -0x1, 0x0, 0x0, - 0x1, + -0x1, 0x0, - 0x1, -0x1, 0x1, - -0x1, 0x1, - 0x0, - 0x0, - -0x1, -0x1, - 0x0, - 0x1, 0x1, - 0x0, - 0x0, + -0x1, 0x0, -0x1, 0x0, + -0x1, + -0x1, 0x1, 0x0, - 0x1, - 0x1, 0x0, 0x1, -0x1, 0x1, - -0x1, - -0x1, ] .span() ), @@ -26281,81 +26260,81 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0x674c466349cf841fbb0a7204, - limb1: 0xba7edb4de7b8cd9434d2d9fc, - limb2: 0x688e7c8c9a309374, + limb0: 0x6a52325d5f65782cd5114e1a, + limb1: 0x5aee09a719ed52a6dbf2b5c6, + limb2: 0xf710bb56680463dc, limb3: 0x0 }, y: u384 { - limb0: 0x7cf5e8b51bc8439ecdc38e0d, - limb1: 0xb3110d3b8c71f4145670cd21, - limb2: 0xe1ed3f564cab2ddf, + limb0: 0x544c93d4b8cfcb836e1ed139, + limb1: 0x1c8b2c9c32c037325a67361b, + limb2: 0xa161de8fff684c99, limb3: 0x0 } }, Q_high: G1Point { x: u384 { - limb0: 0x7c83ae87700b6046a480ceac, - limb1: 0xe537795b8a3a238c7f97a80, - limb2: 0x92487193ced2465f, + limb0: 0xd2ebcfa0827d0bd172d7ff35, + limb1: 0x22c61cf49539003a59a0c97c, + limb2: 0x8df8109f21045a59, limb3: 0x0 }, y: u384 { - limb0: 0x1f760ae7d50aa2a161862484, - limb1: 0x592689f5f2788c6ad18b3138, - limb2: 0x9a9fe578e2d77822, + limb0: 0xd4db6311d00ff64b8f2c0218, + limb1: 0xdca1d298fa8bdb810a9d387e, + limb2: 0x2319082bfe4c9aa8, limb3: 0x0 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0x42cb4980ad0b69856f3756ec, - limb1: 0xc4e8ac0335daf3bd78a44afc, - limb2: 0x3d958011506b1e31, + limb0: 0xff9a34b68ad7adc279b535dc, + limb1: 0xd15631242f9ac07de98d6b99, + limb2: 0x8296fbb67c2023c4, limb3: 0x0 }, y: u384 { - limb0: 0x516141dcfe733256f95ddd87, - limb1: 0x997339452a67bda722707a53, - limb2: 0x35654e19c5a2a807, + limb0: 0xbd305ca04f5c9c44bf167fe0, + limb1: 0xef09e885a9290ff4b140fb1, + limb2: 0x21098e8c46fe9398, limb3: 0x0 } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0x6b887217b43ff95ce3575f45, - limb1: 0xf1789274cf954532ef4c4b2f, - limb2: 0x996814869006c8cf, + limb0: 0x2506b3b0afe239a6c03205cb, + limb1: 0x72a60d826fceec843f61f6b9, + limb2: 0x8aeb5f4cd6d0f48e, limb3: 0x0 }, u384 { - limb0: 0x2fe48a83d32a03fda341941f, - limb1: 0x877092636ca112afeae5dde9, - limb2: 0xefafa744ae4a6615, + limb0: 0xf3d763369d638b2b3e206823, + limb1: 0x9376d2ba2543f4297cbe93f2, + limb2: 0x254bab266261b05b, limb3: 0x0 }, u384 { - limb0: 0xc266c49d8afa3dec3f579399, - limb1: 0x7c9005a8d572c68b7a21915a, - limb2: 0x61935f7a7ced0f16, + limb0: 0x53772ab027603fce2ad1037b, + limb1: 0x702107939864ab504226d344, + limb2: 0xad6cb11647bc0370, limb3: 0x0 }, u384 { - limb0: 0x75b0d39dbdee339134d27faa, - limb1: 0xf34ca0f79a384572e46ecc36, - limb2: 0x7e71b4979be9ba3e, + limb0: 0x2e416b0ded94c57c1c33e642, + limb1: 0xeab966c0a05d912d572718bb, + limb2: 0x3d1909df993891ed, limb3: 0x0 }, u384 { - limb0: 0x6bca1f9422bedc7330f67e76, - limb1: 0xd44fd9d4511859a7a3979a9c, - limb2: 0x8151301fc83d1dab, + limb0: 0x768117c7236ddb786320a712, + limb1: 0xcf465a1e1f5876a508261f53, + limb2: 0x78f503c384975b44, limb3: 0x0 }, u384 { - limb0: 0xcd10679d160d23072c43c039, - limb1: 0xffffffffffffffff22c9b385, + limb0: 0xb6caf6cd2e1bee1d3bd87a60, + limb1: 0xffffffffffffffff57fae9ff, limb2: 0xffffffff00000000, limb3: 0x0 } @@ -26363,39 +26342,39 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0x9ef2aea1adbe5f478bfa3d78, - limb1: 0xece6949410a49ada3b4282e2, - limb2: 0xd15f09ab502880ca, + limb0: 0xa0556ae5585296c285bca040, + limb1: 0x82c1d50b695b1aee9ac9591c, + limb2: 0x92e79ea6b7053c23, limb3: 0x0 }, u384 { - limb0: 0xb531b1bc1247dcdc8c3a5ac1, - limb1: 0x271fcc406c7968319f33517e, - limb2: 0xd67e10d8335ddbfa, + limb0: 0x145fb9816a1000aeb3467d48, + limb1: 0x9a4cc653655d54fa03f06852, + limb2: 0x8185bece568637a8, limb3: 0x0 }, u384 { - limb0: 0xa04d71b9ada2fb2c0538c29f, - limb1: 0x434f8f7714ddb5fbd74ef755, - limb2: 0xe8d61c1e953e761f, + limb0: 0x6f7c56e951ca4b7cb55c1872, + limb1: 0xdcc9102a8d817208e7e6341c, + limb2: 0x964518e6f25eb552, limb3: 0x0 }, u384 { - limb0: 0xb30a76765525e028c71d2474, - limb1: 0x1f47bc3f65d2f9749bdcdd98, - limb2: 0x11a975a3b6f986d5, + limb0: 0xe2d8f3193a868b750543bb, + limb1: 0xbb360f4f90961c7e4aca0bd, + limb2: 0x77bd67a7906e20c3, limb3: 0x0 }, u384 { - limb0: 0x3e727bce3ba53b811dbb61c1, - limb1: 0x9da2bf78abd27c56f261c48f, - limb2: 0x65705c2bb2b0287d, + limb0: 0x8467f836ac21120cfdf63a1f, + limb1: 0x3b57442bbf5b52cad2d67747, + limb2: 0x9c7dadf7f5e3d6e3, limb3: 0x0 }, u384 { - limb0: 0xe9e699025182894339178908, - limb1: 0x83eab2ba3ffda4b2b2bf309e, - limb2: 0x25204ca128fc6971, + limb0: 0x345c921c6a80c1d07f511f67, + limb1: 0x477c9904ea01afa683d050c0, + limb2: 0x6016025995da643e, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -26403,102 +26382,102 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xc85a753091922aacd7821360, - limb1: 0x476e63b298043d066270ad31, - limb2: 0x57e41a4cc2b169d5, + limb0: 0xe4265b79bb1909b4b4a749e2, + limb1: 0xed024b6be7f85575bc08c98, + limb2: 0x8f29d7c390a94caa, limb3: 0x0 }, u384 { - limb0: 0x1998ed640149209d50bb356d, - limb1: 0x90d758043fe05950cdd6f773, - limb2: 0x319f3df942794c53, + limb0: 0x41f8ffd57a25ee25babf8cba, + limb1: 0xc262efe39f3eed23d5d20b20, + limb2: 0xf1171e444dfbf755, limb3: 0x0 }, u384 { - limb0: 0xedbaa887ed86dbe28c88735c, - limb1: 0x339ecefb639a29c508115443, - limb2: 0x1e0b49fc53c88fd7, + limb0: 0xc372e24f02d05a4a9998760f, + limb1: 0x606bd2eba187cf534306640f, + limb2: 0xe8daec50418279d4, limb3: 0x0 }, u384 { - limb0: 0x61ba3fbf5e681b3acbf6faaa, - limb1: 0xe1fee2261cbc9f2ce4c8c60e, - limb2: 0x6e3af026d230e0ba, + limb0: 0xc1877716aebeed445e35cb91, + limb1: 0x13206ce25ed932f40e62cdd, + limb2: 0x61f8c34976d49394, limb3: 0x0 }, u384 { - limb0: 0xc770a0a4e776d3b2f7b1dd7b, - limb1: 0xc8a390f266f9188a7f4d51bb, - limb2: 0xa9aa578baba7c85d, + limb0: 0x5508513fa725d7d5c717398d, + limb1: 0xa86a392f2c706ca48fb4f6b2, + limb2: 0x8f752625edf5a6fc, limb3: 0x0 }, u384 { - limb0: 0xdd696ab5b53b3b230929ecb3, - limb1: 0x87abd4e05cfeceabeb7fdc41, - limb2: 0x32b4ecb4af395554, + limb0: 0xa11762f2ce64c484402f7b84, + limb1: 0x5cc4d156caed322949ebbbad, + limb2: 0x76c2cd89bf194c5b, limb3: 0x0 }, u384 { - limb0: 0xb9b06b5da550a2d761403b1f, - limb1: 0xdf88cf6a2bf862e64915bf7, - limb2: 0xcffeae19a280f4ab, + limb0: 0x63392c5ad58bfdabde64614, + limb1: 0x913215e99bbbf7bb6bbb3186, + limb2: 0xf2e79144648fe275, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x15ddef78fedac022600cd601, - limb1: 0x5035d3e07fef8e9b94e5239c, - limb2: 0xd1d0c81599fb4283, + limb0: 0x8946188a3105c9f967b3170d, + limb1: 0x5ee3a2c9c693ffefc7bc575a, + limb2: 0x1e4dc923b38fadf7, limb3: 0x0 }, u384 { - limb0: 0x3c44cf1725b036d9637c0b41, - limb1: 0xdd5b1a292f2a328d518bdde2, - limb2: 0x76dbdeb0091b5d96, + limb0: 0xe6204ac921fcff36cc2e7c81, + limb1: 0xc91a060610bc82632cfe0543, + limb2: 0x537d288a0e2da2c0, limb3: 0x0 }, u384 { - limb0: 0xfdc2d457c6d597d990d413ff, - limb1: 0x325cba46888b93f78cd93878, - limb2: 0x75dafb8a56eff06d, + limb0: 0x768e4ba8225e0e62a84cace, + limb1: 0x36df2d40b5d8a691edc2746f, + limb2: 0x8ad3275547733b63, limb3: 0x0 }, u384 { - limb0: 0x4f62dab8cbdbd8ebd5c2e6e6, - limb1: 0x706c224fcac26b5091427104, - limb2: 0xbf1542b2e06c36ef, + limb0: 0xb43e368b26f56c8f9a0b949e, + limb1: 0x9ead79780102ea2a7eb44c0c, + limb2: 0xb5b640753c015d7b, limb3: 0x0 }, u384 { - limb0: 0x341dff5affae2463699ea3c2, - limb1: 0x8d8836887558cc3fa567481e, - limb2: 0x3723b035bb62003b, + limb0: 0x41a95c27cfe9b15b3422a3c7, + limb1: 0xdd751161b373960b73fcf022, + limb2: 0xacdba84b6eea0232, limb3: 0x0 }, u384 { - limb0: 0x38b46b85c24ed2ed9f5bb20a, - limb1: 0xb5625a4c866986212c609f38, - limb2: 0xa62795a69cb26146, + limb0: 0xab1e3c3dfbb25d0501151e5a, + limb1: 0x90868db87b09716de5b8e2f8, + limb2: 0xe9b72144441edd67, limb3: 0x0 }, u384 { - limb0: 0xc1aa5c659c6c809d43a8e9a6, - limb1: 0x477361661c729218e8bc526d, - limb2: 0xfd0ec597e63ede69, + limb0: 0x3020d39415867d581ee445d0, + limb1: 0xe929533bb19cd990be58b52e, + limb2: 0xb2419672791987f0, limb3: 0x0 }, u384 { - limb0: 0x3e727bce3ba53b811dbb61be, - limb1: 0x9da2bf78abd27c56f261c48f, - limb2: 0x65705c2bb2b0287d, + limb0: 0x8467f836ac21120cfdf63a1c, + limb1: 0x3b57442bbf5b52cad2d67747, + limb2: 0x9c7dadf7f5e3d6e3, limb3: 0x0 }, u384 { - limb0: 0xe9e699025182894339178908, - limb1: 0x83eab2ba3ffda4b2b2bf309e, - limb2: 0x25204ca128fc6971, + limb0: 0x345c921c6a80c1d07f511f67, + limb1: 0x477c9904ea01afa683d050c0, + limb2: 0x6016025995da643e, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -26508,78 +26487,78 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0x88182b3c7303a2e8c4e90b9b, - limb1: 0x7a981d15437de21d2e419333, - limb2: 0x6e74c6c5690799c2, + limb0: 0x9767909a9ceafc3c3eb5cefd, + limb1: 0xa8704259b9eaaf1673485b0a, + limb2: 0x78826329d4fc7502, limb3: 0x0 }, u384 { - limb0: 0xc687ae1e2bf7fb2b757910f1, - limb1: 0xd6fce5a1491e4965a337869f, - limb2: 0x4a2393762802768a, + limb0: 0x52050b87f244714ec67613ea, + limb1: 0x679d9a2e5fd06703f47acb16, + limb2: 0xe31eea2da7a713b1, limb3: 0x0 }, u384 { - limb0: 0x861de5739a926463af4c3ad7, - limb1: 0x9c4c5788724104ea94635206, - limb2: 0x76a2b710ea1aab62, + limb0: 0xe9983a6f5389ab97669b971f, + limb1: 0x28af327e23215d55864e0981, + limb2: 0xe7e2aeaf016cd7ff, limb3: 0x0 }, u384 { - limb0: 0xe9fe530e54e8e52bfa0bdff8, - limb1: 0x1eee15e141a0c70b51cdf83e, - limb2: 0xf9c09546c9ae3977, + limb0: 0xad8cbabbcc7b74abea6545f9, + limb1: 0x3c6772c84fd3017ba2143f54, + limb2: 0xcb5e4088a7519902, limb3: 0x0 }, u384 { - limb0: 0x1dc3c8947d337886936cc311, - limb1: 0x4394649877f2c126ef3184e7, - limb2: 0xbfffb21101c9907f, + limb0: 0xda6efb46eb95a607e2c24907, + limb1: 0x3cc106457678a76646074737, + limb2: 0xd0e23c90d9070f24, limb3: 0x0 }, u384 { - limb0: 0x34696bc3a86f332fb137c422, - limb1: 0xffffffffffffffffb26a830a, - limb2: 0xffffffff00000000, + limb0: 0x73f97689b3e0d5cc6c731b1f, + limb1: 0x80000000000000009e6d86cf, + limb2: 0x7fffffff80000000, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0xc50b5766f7023938a6d31f33, - limb1: 0x246c39c4d2290b417a621c25, - limb2: 0x3bd7a81d8430648b, + limb0: 0xc4c582d073d8fa62fe53d776, + limb1: 0xac635971357d91677e36037e, + limb2: 0x97ba35bcfca9aed5, limb3: 0x0 }, u384 { - limb0: 0xbfb44aa85a4165bda426caf5, - limb1: 0x9ce4b63c55cdddac7549eed, - limb2: 0xf54c087d0becb8d9, + limb0: 0xfdc43d5c08043d6ed971a72e, + limb1: 0x8b06c2d0f468c87d6340b7f, + limb2: 0xa820eead7b1293de, limb3: 0x0 }, u384 { - limb0: 0xcdf7e5bf603d8c9111052491, - limb1: 0xe0ad86bf5467ac3dc9cde37f, - limb2: 0xa33cf6f1d24952e7, + limb0: 0x4749e6c283b843a118f542ff, + limb1: 0x2c266c2671c66acbeaa0eb8, + limb2: 0xf4293ab748871b1, limb3: 0x0 }, u384 { - limb0: 0x4a39bfdc342abd4881d70f7c, - limb1: 0x70bebaca07301fb25d606de9, - limb2: 0xb0e0608be6b498ab, + limb0: 0xe676eeb189cb2586c35ed38d, + limb1: 0x14a5ae7f19238b1b00442e69, + limb2: 0x213a4b420ccaabed, limb3: 0x0 }, u384 { - limb0: 0x65dc4d9150493513971c6436, - limb1: 0x4d5f89837333e44789c66871, - limb2: 0xd9dfe6066b577d5a, + limb0: 0xb587ed1fb0ff54e729a88fd0, + limb1: 0x4f2965513efbe8b0469b293f, + limb2: 0x926c60ebb1162b4c, limb3: 0x0 }, u384 { - limb0: 0xd4af30de2b46ad1c4fa12c5f, - limb1: 0x301616726f12d00e1f98901b, - limb2: 0xfb665798f45ab688, + limb0: 0xcbc2f4d947692e2be18a6e4c, + limb1: 0x7fa485b76eb6021306223d09, + limb2: 0xc92ead10dcda6dc1, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -26587,102 +26566,102 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xa6a0d451de41ef8fad479f, - limb1: 0x662ccfac35556cbab703041f, - limb2: 0x34f09e1ed240b9ae, + limb0: 0xfd313cc8cbfbcce16b296404, + limb1: 0xed95e4d6f305f24826e4a823, + limb2: 0x49bfb5cd0b9be0ad, limb3: 0x0 }, u384 { - limb0: 0x2125d2499bdce5b6e8a0fee2, - limb1: 0xfd42ca5474772106b5eb3748, - limb2: 0x7c5e1672c80f818b, + limb0: 0xc160a1d8181859b4d13baeac, + limb1: 0x735fc6202ef9bd023998624a, + limb2: 0xf2864fd9d3a2920b, limb3: 0x0 }, u384 { - limb0: 0x874057095ba5f82958053e4, - limb1: 0x5f3d52c928852cc0682c3338, - limb2: 0x10a53c9465d1c74e, + limb0: 0x4a5a359c223f9823d1393660, + limb1: 0x284024a51ce8b8f3675e4274, + limb2: 0x49183c46653a5770, limb3: 0x0 }, u384 { - limb0: 0x168a1c88e60aaa2a0a63a26, - limb1: 0xf4d9226a34eb6905587a2ac0, - limb2: 0x7f1ba6ff74f4a15d, + limb0: 0x3d4f4f0eb3e4c488a404896f, + limb1: 0x169b18354aa0d9616c05c859, + limb2: 0xc2282cd5f7fcec11, limb3: 0x0 }, u384 { - limb0: 0xdb3ca5f87cd66aedcf5ac78b, - limb1: 0x2d4742f97127965c87e59ae3, - limb2: 0xe0ff491b1392ffe3, + limb0: 0x3b97f0c9197f991e1400cb43, + limb1: 0x466ff47c0cb7722b3b39efc0, + limb2: 0x625e07eb317f5b36, limb3: 0x0 }, u384 { - limb0: 0xd32f83228503ced7880709f, - limb1: 0xa4a02a45e0f5fc95feee9a9c, - limb2: 0x98ebe43ece41da1d, + limb0: 0x43b89025d05cfb642cffe85b, + limb1: 0xad69b9fcc4269aa20aa02ce3, + limb2: 0xcd8f4b9ef8ee3f9f, limb3: 0x0 }, u384 { - limb0: 0x50c3dc2a74f85f8d9b27f8a8, - limb1: 0xce30743929b47cb370cdef09, - limb2: 0xde6e83f0070a056d, + limb0: 0xb72693dcd40cec0ebde6b56a, + limb1: 0x64a6fa35486b6f0c2ac5a3c3, + limb2: 0x4ad40f688f54186c, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x7bc25909be80e181d834e5e, - limb1: 0xa5209cb79b4801b5a2950525, - limb2: 0xc36b2ad523dfa0e9, + limb0: 0xabd10011d36017fcbfb95113, + limb1: 0x883cbffd42bb0d4d8044b067, + limb2: 0x868ceca136a8e70f, limb3: 0x0 }, u384 { - limb0: 0x12d9877a1d55c6eff887ddbf, - limb1: 0x66393d96ede42907bf62e449, - limb2: 0x61f4bd465e6a20f6, + limb0: 0x75a040addee074e98586b899, + limb1: 0x8ce9e463955373148308f1ac, + limb2: 0x14be2af71ac681de, limb3: 0x0 }, u384 { - limb0: 0xc8807a6f2092fe918d2f4df5, - limb1: 0x7a22d8c25a1563f47c1b326d, - limb2: 0x805cbaf14bd96ed7, + limb0: 0x1f0e1cfdd0ed8e50d5a4c125, + limb1: 0x953a3078caa1901f4a2e7d5c, + limb2: 0x7c3fe5b6412b4cdb, limb3: 0x0 }, u384 { - limb0: 0x7d62dce14461a6c072867e5a, - limb1: 0xff4cafb200a98941970c9264, - limb2: 0x868a5237ca7adc36, + limb0: 0xb7a4fc71f2b6ca6e812cdff1, + limb1: 0xd5b4ede6174e7d4ce5f3ba75, + limb2: 0x91a18ee135c87a5f, limb3: 0x0 }, u384 { - limb0: 0x6744a7b447371d89748eda6, - limb1: 0xeb82ffb99297887fd9da06d9, - limb2: 0x1c86d4705a14eba8, + limb0: 0xd104c3daa75c802b1e3c0a58, + limb1: 0xd074ab98283598dedcadd990, + limb2: 0xae2b64503f16bd2c, limb3: 0x0 }, u384 { - limb0: 0x31e750dcce6e8585ebf8ba8b, - limb1: 0xe465c5772ec106a9d92efc11, - limb2: 0x1c674e06175f6710, + limb0: 0xd3addeaff30e5c4baab36625, + limb1: 0x1c8c0ae731cde28dba8f8513, + limb2: 0xbb09b30343e4ce16, limb3: 0x0 }, u384 { - limb0: 0x987fde37ee24f231bac5eaa8, - limb1: 0x946834c83090364463b3c448, - limb2: 0x19738f97b3df08fc, + limb0: 0x4f81c11bef5dd7414691e8f2, + limb1: 0x49a3daae439a0b9e52fa7dff, + limb2: 0x207479e62075f692, limb3: 0x0 }, u384 { - limb0: 0x65dc4d9150493513971c6433, - limb1: 0x4d5f89837333e44789c66871, - limb2: 0xd9dfe6066b577d5a, + limb0: 0xb587ed1fb0ff54e729a88fcd, + limb1: 0x4f2965513efbe8b0469b293f, + limb2: 0x926c60ebb1162b4c, limb3: 0x0 }, u384 { - limb0: 0xd4af30de2b46ad1c4fa12c5f, - limb1: 0x301616726f12d00e1f98901b, - limb2: 0xfb665798f45ab688, + limb0: 0xcbc2f4d947692e2be18a6e4c, + limb1: 0x7fa485b76eb6021306223d09, + limb2: 0xc92ead10dcda6dc1, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -26692,9 +26671,9 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0xb3e3be0fed65e9c5bdf9effc, - limb1: 0x14284bfc265050754c5fc165, - limb2: 0x11ace78f7a19874b, + limb0: 0xca88b9719dc0db0bee96ba8b, + limb1: 0x74145117c000d3ed200225ae, + limb2: 0x5b9c6f634afcab75, limb3: 0x0 }, u384 { @@ -26707,15 +26686,15 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0xc2ce80ecfa9b8b18d416722a, - limb1: 0x19d0a40d7bd172ed42ac3e9a, - limb2: 0x8e9d99918b0d6f28, + limb0: 0x277d08a4850ce8fa0c735176, + limb1: 0x8d19fa1d61f0540cd82752a5, + limb2: 0x20811d8d10088fd4, limb3: 0x0 }, u384 { - limb0: 0x40b107f7e2e93633ec47da67, - limb1: 0x2cc3dc6711816a09bf623a84, - limb2: 0x30220e59e0c29b70, + limb0: 0x2d79fba8f2ab466c1372caed, + limb1: 0xbe3b1e73b2c3f47bcd1caeb, + limb2: 0xef70f3a862db81e4, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -26723,54 +26702,54 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xe4d04af1521c1a6f50b94bda, - limb1: 0x91994b8c720c134e1ab51eac, - limb2: 0xd1259a70c9d1d1e, + limb0: 0x756cdeb0db2ae2cd7575d0eb, + limb1: 0xb0ec670c482f989ec7ab5e4d, + limb2: 0x4d3fa404cb9342a2, limb3: 0x0 }, u384 { - limb0: 0x3b922daa519f59e4cf668f6b, - limb1: 0x6e22dfe0029f546c50119210, - limb2: 0x23e694a31541f376, + limb0: 0xd396feaec3cfda0d3afa5ef4, + limb1: 0xe2a47c774a99c18af4566c0a, + limb2: 0x931280d4464d8a6, limb3: 0x0 }, u384 { - limb0: 0xe4a07c934fa2eff6aebf0782, - limb1: 0x275657b758f45d8715ff2f91, - limb2: 0xef9a9f4e80fdc158, + limb0: 0xee5dba317665d4561768ddc2, + limb1: 0xa3a1b7eb6181fc594cad4285, + limb2: 0x753fc97abb87ac5b, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xf80fe6828602a1f6fba8153, - limb1: 0x992e8cc2b31d2fc7b50f158b, - limb2: 0xb12ee02848966884, + limb0: 0x23ca8f77d8476bf0fe15e163, + limb1: 0x7d51050c2271690043029733, + limb2: 0xc66a0c2bbdc957f2, limb3: 0x0 }, u384 { - limb0: 0xa2453ab736d986bf1b9c569b, - limb1: 0x41285590c8d55198107df05f, - limb2: 0x5d34c848826fa50c, + limb0: 0x2c85795ac43c09fb9ff31607, + limb1: 0x8569952ec7eb226c72daeca2, + limb2: 0x41b5bd490ab54d86, limb3: 0x0 }, u384 { - limb0: 0xa40990e931299a262fad115, - limb1: 0x2da028204214489f26f65725, - limb2: 0xca600aca07f2c198, + limb0: 0x43e5bdfb63cc68f9ed79ff81, + limb1: 0x9040a79fc513c8e52ea7a5f2, + limb2: 0x8c735adc81a80e3e, limb3: 0x0 }, u384 { - limb0: 0xc2ce80ecfa9b8b18d4167227, - limb1: 0x19d0a40d7bd172ed42ac3e9a, - limb2: 0x8e9d99918b0d6f28, + limb0: 0x277d08a4850ce8fa0c735173, + limb1: 0x8d19fa1d61f0540cd82752a5, + limb2: 0x20811d8d10088fd4, limb3: 0x0 }, u384 { - limb0: 0x40b107f7e2e93633ec47da67, - limb1: 0x2cc3dc6711816a09bf623a84, - limb2: 0x30220e59e0c29b70, + limb0: 0x2d79fba8f2ab466c1372caed, + limb1: 0xbe3b1e73b2c3f47bcd1caeb, + limb2: 0xef70f3a862db81e4, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -26780,19 +26759,12 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0xc973063c715d87b794dcf71, - limb1: 0x43d472b76df92e057f1b8253, - limb2: 0x514993c60de291, + limb0: 0xf5d29c743e2d3b980b1ba428, + limb1: 0x5be6e3c645725be887997a85, + limb2: 0x61d6a20eb574859b, limb3: 0x0 }, - g_rhs_sqrt: array![ - u384 { - limb0: 0x96e5284ef38611c8a83c8d7, - limb1: 0xf29524fdd54c5c1b877d8c83, - limb2: 0x1e039d36fd2a8655, - limb3: 0x0 - } - ], + g_rhs_sqrt: array![], }; let res = msm_g1( points, scalars, scalars_digits_decompositions, msm_hint, derive_point_from_x_hint, 3 @@ -26800,15 +26772,15 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0x334eb561106842e9e932b95f, - limb1: 0x63b7b308d5fa7bcb8b863723, - limb2: 0xa0874b7a7dfe9023, + limb0: 0xbc71dd1bcd4c4f26a5dbe7f3, + limb1: 0x61f4ccdbdea2461b92367ca5, + limb2: 0x1c6c6e6b3e5b1dbd, limb3: 0x0 }, y: u384 { - limb0: 0x548fd8e3315626c5b313c076, - limb1: 0xf3c8943b4a96e612c2e126ba, - limb2: 0xa19b585e9568bfb3, + limb0: 0xc634da3a180f46bddae3b097, + limb1: 0xbee02e3ce3afe200a1f20b55, + limb2: 0x3cffad3c42319eda, limb3: 0x0 } } @@ -26821,85 +26793,85 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0x2109fca87c5e9ecece6f796e, - limb1: 0xcab27651e889b8145f177c22, - limb2: 0x4e0bc01572e025a0, + limb0: 0x113c8d620e3745e45e4389b8, + limb1: 0x85b8ff52d905fd02fe191c3f, + limb2: 0xf5d132d685201517, limb3: 0x0 }, y: u384 { - limb0: 0xfaaffc5abd4416e605176292, - limb1: 0x213a99e1b1dfd4e54b26ff9a, - limb2: 0x14e9a3e82d1d603f, + limb0: 0x60c0ba1b358f375b2362662e, + limb1: 0x6abfc829d93e09aa5174ec04, + limb2: 0x7bc4637aca93cb5a, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xb50150d2c4afb29a06ddb2e9, - limb1: 0xaf659e31316261ce8d0da402, - limb2: 0x3b3aeb7ac5466d9b, + limb0: 0xd3ff147ff0ee4213f51f677d, + limb1: 0x431366a7732a6e4a6b942255, + limb2: 0x9fe743b25d39a591, limb3: 0x0 }, y: u384 { - limb0: 0x538cc3e001efb0c65b983558, - limb1: 0xc8b8e22b7b301425853676e9, - limb2: 0xb3c3d80cd2cb8984, + limb0: 0x7f8bb562ff60a902ef14bcb0, + limb1: 0xeb9420089fa531db62e806a6, + limb2: 0xfd028df433dfd5cc, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xa5146a3779daecc177587e81, - limb1: 0xf5196f4a88ae19728270d5a4, - limb2: 0x570037d7964c760e, + limb0: 0x46ae31f6fc294ad0814552b6, + limb1: 0x2d54cc811efaf988efb3de23, + limb2: 0x2a2cc02b8f0c419f, limb3: 0x0 }, y: u384 { - limb0: 0x16cbba8eaf48e988f5be920e, - limb1: 0x61dd0fb4314bacf9acf0fdbf, - limb2: 0x38e2283b45368ac7, + limb0: 0xaec889b9d8ce51c4a2c3586f, + limb1: 0xa2b07874c333bfee9f78e13e, + limb2: 0xc445de21be8d8709, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xeb1802a682d299302f750358, - limb1: 0x9976198d80c5f84ffe9dacca, - limb2: 0x1c91ac476f67f5dd, + limb0: 0x7e47d1c2d19c21b2f6870259, + limb1: 0xe701b40af42001c38bca00db, + limb2: 0xd87ea1720d4dd3d6, limb3: 0x0 }, y: u384 { - limb0: 0x8fd11837202b1cf6a801e1b6, - limb1: 0xaf4aba68d405771c58ec9b56, - limb2: 0x79c970cf7e49ada0, + limb0: 0x5b1d6cc74985ce49a1f737fe, + limb1: 0xb9127c572c3f091c031c249c, + limb2: 0x1392711e1576aa6f, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xfe19f45f5c95c44b64bf0797, - limb1: 0xae4ecc0c0b81f51bf373c5e2, - limb2: 0xd6c8c7ea5834092f, + limb0: 0xb71f95ea692ed186e06e4c37, + limb1: 0x807276cd9cc59718bb11dbe9, + limb2: 0x10756a25836d67ca, limb3: 0x0 }, y: u384 { - limb0: 0xb47359f513b07a75eafe1bf5, - limb1: 0x4018b23fe6727bb221a66178, - limb2: 0x636e7381c8ebd576, + limb0: 0xd34211b3520c83c5f9be99af, + limb1: 0x8f19a28ceef67bbda102ffe7, + limb2: 0x7ac2b92030d351cc, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x7f7aa1021fbb42045000c52e, - limb1: 0x55a4693ae329ca97c12b9e69, - limb2: 0x3ae1bc44d83eb47e, + limb0: 0x411bb5d0fbe844f025c7178c, + limb1: 0xcf603787227b7ac499d6d1c4, + limb2: 0x5f6b2479862eb2f8, limb3: 0x0 }, y: u384 { - limb0: 0x1d4319ad9a2b08c2d41b1a69, - limb1: 0x4b27ec5ae6ff5924047bb663, - limb2: 0xdd32cae43d0b6c45, + limb0: 0xce60303cfcb98726ff64a1e5, + limb1: 0xa64534c614754b3527588d25, + limb2: 0x44f75e245622181, limb3: 0x0 } }, @@ -26907,22 +26879,22 @@ mod msm_tests { .span(); let scalars = array![ u256 { - low: 0x488288f6962e76d44c438a0445b3db85, high: 0x7ba917a2a7138e32b2a858b2be3913d5 + low: 0x5a92118719c78df48f4ff31e78de5857, high: 0xa3f2c9bf9c6316b950f244556f25e2a2 }, u256 { - low: 0xdcb64ce36be176a5dbf1e671d29e0b8f, high: 0x29e9aeeaa438cdbc73523b49a30c9709 + low: 0x8d723104f77383c13458a748e9bb17bc, high: 0x85776e9add84f39e71545a137a1d5006 }, u256 { - low: 0x61c3a568e63f604e75f8d6f127fad4ae, high: 0x1950df2d4f05f08543f931a1358bf615 + low: 0xeb2083e6ce164dba0ff18e0242af9fc3, high: 0x17e0aa3c03983ca8ea7e9d498c778ea6 }, u256 { - low: 0x2be5a75390e499871c5a3ebd495093b2, high: 0x8a7f86642df833edd308be70aaeb10f6 + low: 0xb5d32b1666194cb1d71037d1b83e90ec, high: 0xa0116be5ab0c1681c8f8e3d0d3290a4c }, u256 { - low: 0x9a8ebd3e25af3e96a08d9b4714d935f5, high: 0x3d48ff09e5a62d3dd81a099468fd1553 + low: 0xd3fbf47a7e5b1e7f9ca5499d004ae545, high: 0xbaf3897a3e70f16a55485822de1b372a }, u256 { - low: 0xab7ba0ccfa2d4c50e7bccc602a6b1947, high: 0xd33373f8e40733e48d864040ad066656 + low: 0x101fbcccded733e8b421eaeb534097ca, high: 0x38c1962e9148624feac1c14f30e9c5cc }, ] .span(); @@ -26930,85 +26902,85 @@ mod msm_tests { array![ ( array![ - 0x0, -0x1, 0x0, 0x0, - -0x1, - -0x1, + 0x1, 0x0, - -0x1, 0x0, -0x1, - 0x0, -0x1, 0x1, + -0x1, + -0x1, 0x1, + -0x1, + -0x1, 0x0, - 0x1, + -0x1, + -0x1, + -0x1, 0x1, -0x1, + 0x1, + 0x0, 0x0, -0x1, 0x0, 0x0, - 0x1, 0x0, - 0x1, - 0x0, - 0x1, 0x0, 0x1, 0x0, -0x1, - 0x0, - 0x1, - 0x1, -0x1, - -0x1, - 0x1, - 0x1, 0x1, -0x1, 0x0, + 0x0, 0x1, 0x1, + -0x1, + 0x1, 0x0, 0x0, -0x1, 0x0, -0x1, + 0x1, -0x1, + 0x0, -0x1, + 0x1, -0x1, 0x1, 0x1, -0x1, - -0x1, - 0x1, 0x0, - -0x1, - -0x1, 0x0, -0x1, 0x1, - 0x1, - 0x1, - 0x1, -0x1, 0x1, -0x1, -0x1, + 0x0, + 0x1, -0x1, + 0x0, -0x1, + 0x0, -0x1, 0x0, -0x1, + 0x0, 0x1, 0x1, - -0x1, 0x0, 0x0, + 0x0, + -0x1, + 0x1, 0x1, 0x1, ] @@ -27016,187 +26988,205 @@ mod msm_tests { array![ -0x1, -0x1, + 0x0, + 0x0, 0x1, + 0x0, -0x1, 0x1, -0x1, - 0x1, - 0x0, -0x1, - 0x0, -0x1, + 0x0, + 0x0, 0x1, 0x1, + -0x1, + 0x1, 0x1, 0x1, - -0x1, - -0x1, - -0x1, - -0x1, - -0x1, 0x1, 0x0, - 0x0, - -0x1, - -0x1, - -0x1, 0x1, - -0x1, 0x1, 0x1, 0x0, - -0x1, - -0x1, - -0x1, - 0x0, - -0x1, 0x0, 0x0, - -0x1, 0x1, 0x0, + 0x0, + -0x1, 0x1, 0x1, - -0x1, + 0x0, 0x1, - -0x1, 0x0, -0x1, 0x1, -0x1, - 0x0, - 0x1, - 0x1, -0x1, -0x1, - 0x1, + -0x1, 0x1, -0x1, 0x1, + 0x0, -0x1, 0x0, + 0x0, -0x1, 0x0, -0x1, + 0x0, + 0x0, + 0x1, + 0x0, + 0x1, + 0x0, + 0x1, + 0x0, -0x1, + 0x0, -0x1, -0x1, 0x0, - 0x0, -0x1, -0x1, -0x1, 0x0, - 0x1, - 0x1, - 0x0, 0x0, 0x0, + -0x1, 0x1, - 0x0, + 0x1, + 0x1, + -0x1, + -0x1, + -0x1, + 0x1, + -0x1, 0x1, ] .span() ), ( array![ - -0x1, 0x0, - -0x1, - -0x1, - 0x1, 0x1, 0x1, 0x0, + -0x1, 0x1, 0x0, 0x1, + -0x1, 0x1, 0x1, -0x1, 0x1, - 0x1, + -0x1, 0x1, -0x1, -0x1, 0x1, - 0x1, 0x0, - 0x1, 0x0, -0x1, - -0x1, + 0x1, + 0x0, + 0x0, + 0x0, 0x0, 0x1, -0x1, - -0x1, + 0x1, 0x1, -0x1, + 0x1, + 0x0, + 0x1, + 0x0, + 0x0, + 0x0, + 0x0, + 0x1, -0x1, -0x1, 0x0, - 0x0, 0x1, + -0x1, 0x0, -0x1, 0x1, + 0x1, + -0x1, + 0x0, 0x0, 0x0, - -0x1, -0x1, -0x1, 0x0, -0x1, + 0x1, + 0x0, 0x0, 0x1, 0x1, + -0x1, 0x0, 0x0, 0x1, + -0x1, 0x0, + -0x1, 0x1, 0x1, 0x0, 0x1, - -0x1, - 0x0, 0x0, + -0x1, 0x0, 0x0, + 0x1, + -0x1, + -0x1, + -0x1, + 0x1, + ] + .span(), + array![ + 0x1, 0x0, 0x0, 0x0, 0x1, + -0x1, 0x1, + 0x0, 0x1, 0x1, -0x1, 0x1, 0x0, + -0x1, 0x0, 0x1, - 0x1, -0x1, 0x0, - 0x0, - 0x0, - -0x1, -0x1, - ] - .span(), - array![ - 0x0, 0x1, 0x1, - 0x0, -0x1, 0x0, 0x1, - -0x1, 0x1, -0x1, -0x1, + 0x1, + 0x1, 0x0, + -0x1, 0x0, 0x0, -0x1, @@ -27204,173 +27194,149 @@ mod msm_tests { 0x1, 0x0, -0x1, - -0x1, - -0x1, - 0x1, 0x0, - -0x1, 0x1, 0x0, 0x1, + 0x1, 0x0, 0x1, + 0x0, -0x1, -0x1, - 0x1, - 0x1, -0x1, 0x1, 0x1, - -0x1, 0x0, + -0x1, 0x1, + 0x0, 0x1, 0x0, - -0x1, + 0x0, -0x1, 0x1, - -0x1, - -0x1, 0x0, 0x1, -0x1, 0x1, 0x1, -0x1, + 0x0, 0x1, -0x1, 0x1, -0x1, 0x0, - 0x1, - 0x0, - 0x1, - 0x1, - 0x1, - 0x0, - 0x1, 0x0, - 0x1, 0x0, -0x1, -0x1, 0x1, - 0x0, - 0x0, - 0x1, - 0x1, - -0x1, - 0x1, 0x1, -0x1, - 0x0, -0x1, + 0x1, ] .span() ), ( array![ - 0x0, - 0x0, + -0x1, + 0x1, + -0x1, 0x1, - 0x0, -0x1, 0x0, 0x0, -0x1, + -0x1, + -0x1, 0x1, 0x0, + 0x0, + -0x1, + -0x1, + 0x1, + 0x1, 0x1, -0x1, 0x1, - 0x0, -0x1, 0x1, - 0x0, - 0x0, + 0x1, -0x1, 0x0, + 0x1, 0x0, 0x0, + -0x1, 0x0, + -0x1, + -0x1, 0x1, 0x0, 0x1, 0x1, - 0x1, -0x1, + 0x1, 0x0, -0x1, - 0x0, -0x1, - 0x0, - 0x1, -0x1, -0x1, - 0x1, - 0x0, -0x1, - 0x0, - 0x1, -0x1, 0x0, - 0x1, - 0x1, - 0x0, - -0x1, - 0x1, - 0x1, 0x0, 0x0, 0x0, 0x0, 0x1, -0x1, + 0x1, 0x0, -0x1, 0x0, + 0x0, + 0x1, + 0x0, + 0x0, 0x1, - -0x1, 0x1, -0x1, -0x1, - 0x0, - 0x1, 0x1, 0x1, - -0x1, - 0x0, 0x0, -0x1, + 0x0, -0x1, 0x0, + 0x0, + 0x1, -0x1, -0x1, -0x1, 0x0, - -0x1, 0x0, 0x1, + 0x0, + -0x1, + -0x1, ] .span(), array![ - 0x0, 0x1, -0x1, 0x1, - 0x1, - 0x0, -0x1, - 0x1, - 0x1, - 0x0, - 0x0, 0x0, -0x1, - 0x1, 0x0, - 0x1, + -0x1, 0x0, + -0x1, 0x0, -0x1, 0x1, @@ -27378,40 +27344,45 @@ mod msm_tests { 0x0, 0x0, 0x1, - -0x1, 0x0, 0x1, - 0x0, 0x1, + 0x0, + -0x1, 0x1, -0x1, 0x0, 0x1, - 0x1, -0x1, 0x0, - 0x1, 0x0, - -0x1, - -0x1, - 0x1, 0x1, + -0x1, 0x0, 0x1, -0x1, -0x1, 0x1, 0x0, + 0x0, -0x1, - 0x1, + 0x0, -0x1, + 0x0, -0x1, -0x1, 0x1, 0x0, + 0x1, + -0x1, -0x1, + 0x0, + 0x0, 0x1, -0x1, + -0x1, + 0x0, + 0x0, 0x1, 0x1, -0x1, @@ -27419,18 +27390,20 @@ mod msm_tests { -0x1, -0x1, 0x0, - -0x1, 0x1, -0x1, + 0x0, -0x1, + 0x1, -0x1, - 0x0, 0x1, + -0x1, 0x0, - 0x0, + -0x1, + 0x1, 0x1, -0x1, - 0x0, + -0x1, 0x0, -0x1, -0x1, @@ -27439,113 +27412,116 @@ mod msm_tests { ), ( array![ - 0x1, - 0x1, - 0x0, + -0x1, + -0x1, 0x0, + -0x1, + 0x1, 0x0, 0x0, 0x1, - 0x0, 0x1, 0x1, - -0x1, 0x1, + 0x0, 0x1, 0x0, 0x1, 0x0, + 0x1, + -0x1, + 0x1, -0x1, 0x0, + -0x1, + 0x1, 0x1, 0x1, - 0x0, 0x0, 0x1, + -0x1, + -0x1, 0x0, 0x1, 0x1, - 0x0, 0x1, -0x1, -0x1, 0x0, 0x0, + 0x1, + 0x1, -0x1, - 0x0, -0x1, -0x1, 0x1, 0x0, -0x1, -0x1, - -0x1, 0x1, 0x0, - 0x0, - -0x1, -0x1, - -0x1, - 0x0, - 0x0, - 0x1, 0x1, - 0x0, 0x1, -0x1, + 0x1, 0x0, -0x1, 0x0, 0x1, -0x1, 0x0, - 0x1, - 0x0, - 0x0, - 0x1, + -0x1, 0x0, + -0x1, 0x0, 0x1, -0x1, -0x1, - -0x1, - 0x0, 0x0, + -0x1, + 0x1, 0x1, 0x1, 0x0, 0x0, + 0x0, + 0x1, -0x1, + 0x0, 0x1, + 0x0, 0x1, -0x1, + -0x1, ] .span(), array![ - 0x0, - -0x1, 0x1, - 0x0, + 0x1, -0x1, + 0x1, 0x0, 0x1, -0x1, 0x1, + 0x0, + -0x1, -0x1, 0x0, 0x1, 0x1, - 0x1, - 0x1, 0x0, 0x1, - -0x1, - 0x1, 0x0, 0x0, 0x1, + 0x1, -0x1, 0x0, + -0x1, + -0x1, + 0x1, 0x0, 0x0, -0x1, @@ -27554,53 +27530,52 @@ mod msm_tests { 0x0, -0x1, 0x0, + 0x1, 0x0, 0x0, - 0x1, -0x1, - 0x1, + 0x0, 0x1, -0x1, - 0x1, - 0x1, 0x0, - 0x1, -0x1, -0x1, 0x1, -0x1, - -0x1, - -0x1, 0x0, 0x1, - 0x0, 0x1, 0x0, - 0x1, + 0x0, + 0x0, + -0x1, 0x1, -0x1, 0x0, + 0x0, -0x1, 0x1, - 0x1, + -0x1, + -0x1, 0x0, 0x0, - 0x1, + -0x1, 0x0, - 0x1, - 0x1, + -0x1, 0x1, 0x1, -0x1, - 0x0, 0x1, - 0x0, - 0x0, -0x1, 0x0, -0x1, + 0x0, -0x1, -0x1, + 0x1, + 0x0, + 0x0, + 0x1, -0x1, 0x1, ] @@ -27608,329 +27583,332 @@ mod msm_tests { ), ( array![ + 0x1, + -0x1, -0x1, -0x1, - 0x1, -0x1, - 0x1, - 0x0, - 0x0, - 0x1, 0x0, 0x0, + -0x1, 0x0, 0x1, 0x1, + 0x1, -0x1, - -0x1, 0x1, 0x1, + 0x1, + 0x0, + 0x1, + -0x1, + 0x1, -0x1, -0x1, + 0x0, -0x1, 0x1, + 0x0, -0x1, 0x1, + 0x1, + 0x1, + -0x1, 0x0, - 0x0, + -0x1, + -0x1, + 0x1, 0x0, 0x1, + -0x1, + -0x1, 0x0, + -0x1, 0x0, 0x0, 0x0, -0x1, - 0x0, 0x1, -0x1, 0x1, - -0x1, 0x0, 0x1, 0x0, 0x0, - -0x1, - -0x1, - -0x1, 0x1, - -0x1, - -0x1, - -0x1, 0x0, - -0x1, 0x1, 0x0, 0x0, - 0x1, - 0x1, 0x0, 0x1, 0x1, + 0x0, -0x1, - 0x1, -0x1, 0x0, - 0x1, - -0x1, 0x0, 0x0, 0x1, - 0x1, - 0x0, - -0x1, - -0x1, - -0x1, - -0x1, -0x1, + 0x0, + 0x0, -0x1, 0x1, - -0x1, + 0x1, 0x1, 0x1, -0x1, 0x1, - ] - .span(), - array![ 0x0, + -0x1, 0x0, -0x1, -0x1, + ] + .span(), + array![ + 0x1, + -0x1, 0x0, + -0x1, + 0x1, + 0x1, + 0x1, 0x0, 0x0, 0x0, + 0x1, -0x1, + 0x1, -0x1, 0x1, - 0x0, - 0x0, 0x1, 0x0, 0x0, 0x1, 0x0, 0x1, - 0x0, 0x1, -0x1, + 0x0, + 0x1, -0x1, + 0x0, 0x1, 0x1, 0x1, + -0x1, 0x1, 0x0, + 0x0, -0x1, + 0x0, -0x1, 0x1, - -0x1, 0x0, -0x1, - -0x1, + 0x0, -0x1, 0x1, - -0x1, 0x0, 0x1, - -0x1, - 0x0, 0x1, -0x1, - 0x0, - 0x0, - 0x0, - 0x1, -0x1, - 0x1, - 0x1, - 0x1, 0x0, - -0x1, 0x1, 0x0, -0x1, - 0x1, - 0x1, -0x1, 0x0, 0x0, 0x0, - 0x1, + -0x1, -0x1, -0x1, -0x1, -0x1, 0x0, - 0x1, - 0x0, + -0x1, 0x0, + -0x1, + -0x1, + -0x1, 0x1, 0x1, 0x0, + -0x1, 0x1, 0x0, - 0x0, + 0x1, + -0x1, -0x1, 0x1, + 0x0, + 0x0, 0x1, + -0x1, + -0x1, ] .span() ), ( array![ + 0x1, 0x0, -0x1, - 0x0, + -0x1, + -0x1, + -0x1, 0x1, -0x1, + -0x1, + -0x1, + -0x1, 0x1, + 0x0, -0x1, 0x0, + 0x1, -0x1, 0x0, + 0x1, + 0x0, 0x0, 0x1, -0x1, 0x1, 0x0, - -0x1, 0x1, -0x1, -0x1, - 0x1, -0x1, - 0x1, + -0x1, + 0x0, 0x1, -0x1, + 0x0, + -0x1, -0x1, - 0x1, - 0x1, - 0x1, - 0x1, - 0x1, -0x1, -0x1, - 0x0, -0x1, 0x1, - 0x0, + -0x1, 0x0, 0x1, - 0x0, - 0x0, + 0x1, + -0x1, 0x0, 0x0, -0x1, 0x1, + -0x1, 0x1, - 0x0, + -0x1, + -0x1, 0x1, - 0x0, + -0x1, -0x1, 0x0, + -0x1, + -0x1, 0x0, + -0x1, 0x1, 0x0, 0x1, - 0x1, 0x0, 0x1, + -0x1, 0x1, + -0x1, + -0x1, 0x0, + -0x1, 0x0, 0x1, - -0x1, 0x1, 0x1, - -0x1, 0x0, -0x1, - -0x1, - 0x0, + 0x1, + ] + .span(), + array![ 0x0, - -0x1, + 0x1, 0x0, -0x1, -0x1, - -0x1, 0x0, -0x1, - 0x0, -0x1, - 0x1, -0x1, -0x1, - ] - .span(), - array![ - 0x1, - 0x1, - 0x0, + -0x1, 0x0, 0x0, + 0x1, + 0x1, 0x0, 0x1, + 0x1, + 0x1, -0x1, 0x1, 0x0, - -0x1, - -0x1, - -0x1, 0x0, 0x0, + 0x1, -0x1, -0x1, 0x1, - 0x1, - 0x1, -0x1, + 0x1, 0x0, -0x1, + -0x1, 0x1, 0x0, -0x1, 0x1, - -0x1, 0x1, 0x1, + -0x1, 0x0, 0x0, + 0x1, 0x0, 0x0, 0x0, + -0x1, 0x1, 0x0, + 0x1, + 0x1, -0x1, 0x1, 0x0, -0x1, -0x1, 0x1, - -0x1, 0x0, 0x1, - 0x0, 0x1, - -0x1, 0x1, + -0x1, + -0x1, 0x0, 0x1, - 0x1, - 0x0, - 0x0, - 0x0, 0x0, -0x1, 0x1, - 0x0, 0x1, - -0x1, 0x1, 0x1, - 0x0, - 0x0, - 0x0, - -0x1, + 0x1, 0x1, 0x0, 0x0, @@ -27938,13 +27916,8 @@ mod msm_tests { -0x1, 0x1, -0x1, - 0x0, 0x1, - 0x0, - -0x1, - 0x0, - -0x1, - -0x1, + 0x1, ] .span() ), @@ -27954,133 +27927,133 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0xaf5cfaebad442626c2010601, - limb1: 0x1cab1ee9db546061bde325c5, - limb2: 0xf7a14a50f3ab29df, + limb0: 0x74028195b487a781e4a88d98, + limb1: 0xa2028d001788102432e79f44, + limb2: 0x8965faefea1c0890, limb3: 0x0 }, y: u384 { - limb0: 0xbb21e60d010ceb6e1f5022a2, - limb1: 0xac147760ef76726c178a5d62, - limb2: 0xf14472a0b61ccda8, + limb0: 0xdbd7e032147cff6fe0671c64, + limb1: 0x18080768b7d311e3a29031d8, + limb2: 0x31a15950a19cd774, limb3: 0x0 } }, Q_high: G1Point { x: u384 { - limb0: 0xdfeb1b2ea0961cb7e1b3f52a, - limb1: 0x7aaf14af38b1ffa2c82d624f, - limb2: 0xc2c639c228074221, + limb0: 0x5f41c586fbc9081fc4f179b1, + limb1: 0xabcf842a5756268aa0cef0a2, + limb2: 0xbd4239f9b5e30b04, limb3: 0x0 }, y: u384 { - limb0: 0x2f305523cda7e95690375416, - limb1: 0x768b48750c3da8e2a01bea29, - limb2: 0x2c8e38d6baea0084, + limb0: 0x9f4517f52a9284c5493c1da8, + limb1: 0xa18a539e3b83b19d04735e75, + limb2: 0xf1702d4c8d85b1a, limb3: 0x0 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0xa53d77409d3d529b9b2d5831, - limb1: 0x57afa9ca8e1baf2a6452ced6, - limb2: 0x3cb012767708decf, + limb0: 0x991b04079ddd255794eeb119, + limb1: 0x1234386794eda07ce84d4bcf, + limb2: 0xc9ae308b0edd319b, limb3: 0x0 }, y: u384 { - limb0: 0x97765cabe389075f09c04f5e, - limb1: 0xc8515913b96a012dcefbc46c, - limb2: 0xade59712035b8837, + limb0: 0x6f3b67486b29a39cf09a4a8e, + limb1: 0x2db17ffdf240d447fd3cc405, + limb2: 0x9f0c746f9b96b693, limb3: 0x0 } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0xa6af44ab2d19ddc9480944c0, - limb1: 0xdf45dd0f1bd607bd70ec94c6, - limb2: 0x56ab5620f25220c9, + limb0: 0x1481a9b85331fe2f823ce830, + limb1: 0xb877f26f3f2a85317f082d7f, + limb2: 0xbb895ebbb9b995b8, limb3: 0x0 }, u384 { - limb0: 0x1302b1c3adb94f5a0862f400, - limb1: 0x5c07c25efa2c5cd71d2a7072, - limb2: 0xb307b09758b92f98, + limb0: 0x265ceec0162807247291ba35, + limb1: 0xebc6b9fb48ac729022803d3f, + limb2: 0x10ca0352e24c37a2, limb3: 0x0 }, u384 { - limb0: 0x9d896c0c8077ee95aea46fb8, - limb1: 0xd49ee32632c2899b452ae8f5, - limb2: 0x52c52f1c33b4201d, + limb0: 0x5bda9e92d6e7b6989d89a095, + limb1: 0xacd2177bcbec2809bb39092a, + limb2: 0x9c9da1be4784fa8f, limb3: 0x0 }, u384 { - limb0: 0xa29ddb7b340eb154265a25de, - limb1: 0xf7548216d018db268a53ffb, - limb2: 0x51983396e863a327, + limb0: 0x9320fa125eca2013f10ca4a8, + limb1: 0xc503200c18d7b7aca94216f6, + limb2: 0xfbd781b0f8b01867, limb3: 0x0 }, u384 { - limb0: 0x74d084d63ab452aaec921478, - limb1: 0x79e0cf0af716eb6f87af8b80, - limb2: 0x5e84d065423f3e5f, + limb0: 0x570281aa32d436308f3ffa1b, + limb1: 0x325b38495b504d5a22883d6b, + limb2: 0xb2b6159268c6484d, limb3: 0x0 }, u384 { - limb0: 0x502b4df1a2787927514baef, - limb1: 0xb976afc134461b9905097ab8, - limb2: 0xcff3b3dbbf48b8a9, + limb0: 0x44ba9d3354bc09919c1aff, + limb1: 0x2a32904030455b36c34eed60, + limb2: 0xdd53b38a5c91837c, limb3: 0x0 }, u384 { - limb0: 0xe05cf2eb61c81f7bb3fca8bd, - limb1: 0x7fffffffffffffff965e580f, - limb2: 0x7fffffff80000000, + limb0: 0x546ede0777b519f4b19051e2, + limb1: 0xffffffffffffffff014ef94e, + limb2: 0xffffffff00000000, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0x9f33fc407b76d84d02442397, - limb1: 0xb8e0cb981c2c175f43fe0a88, - limb2: 0xc88e88a79f10eb55, + limb0: 0x62b1c15aa0f284be4355857f, + limb1: 0x191e854a8fcdef36189e85fa, + limb2: 0xc36ab141ea78ad56, limb3: 0x0 }, u384 { - limb0: 0x32d1cd2c8d8017b668748a5f, - limb1: 0x7490c11319aae9209fcad495, - limb2: 0xb5afd976835f2680, + limb0: 0xe82caaa0b613271839298bfc, + limb1: 0xc011e83a4385bd94ef77cf8b, + limb2: 0x63ec3c1b4b69c502, limb3: 0x0 }, u384 { - limb0: 0x9726fdd977e146854b029801, - limb1: 0x35c1550c1fc9c1fcbaf84c92, - limb2: 0x1eaba9236b67e798, + limb0: 0x89ea3b6abce7f832bc65d9b0, + limb1: 0xe1fb23271107699009553d97, + limb2: 0x4fd6858cd4917ad9, limb3: 0x0 }, u384 { - limb0: 0x2a1cf7e5f4f6e6edec44fd89, - limb1: 0x7afa1622dae3ff2029954eb3, - limb2: 0x9355995997d561a8, + limb0: 0xe24f52993151c42b8ccef712, + limb1: 0xc2653fd5c31d5457405795fa, + limb2: 0xb800074ba46d8a1f, limb3: 0x0 }, u384 { - limb0: 0xd0ceef8747ee9e115bfcef8c, - limb1: 0x95e3cabae7cef44a0602f29d, - limb2: 0x51616b9b107813ed, + limb0: 0x9cb6377345539a58758a2bac, + limb1: 0xcbba13ddb33e921fa0e5f25, + limb2: 0x178d146e0a06a306, limb3: 0x0 }, u384 { - limb0: 0x961340d65d0bf6cb64bb741b, - limb1: 0x6bab172a2fc4e4043e97c838, - limb2: 0xc584352534db7a43, + limb0: 0x7f2f413f6f246d47ce779e4f, + limb1: 0xafc53eaef91e26786169c0d1, + limb2: 0x1e7d79b71b98cca3, limb3: 0x0 }, u384 { - limb0: 0x6cd6b55998aefc2f0d247f06, - limb1: 0xd6ba0e74129fb4452049d35d, - limb2: 0xf9dba1cc9e07194d, + limb0: 0xe9908d1319764d8b49f2c85d, + limb1: 0x3107de24c9eb77649304957d, + limb2: 0x6e559e468d940c91, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -28088,114 +28061,114 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xff679b1bf19fc55824fa7021, - limb1: 0x89faeea0dc97d80868b0fbd3, - limb2: 0x7733528e323c3dba, + limb0: 0x3e119b71e2c88ed28de78d46, + limb1: 0xb958bf898a745cda57053266, + limb2: 0x5467f960ee345a8d, limb3: 0x0 }, u384 { - limb0: 0xc4c3eee77e105d844d43cd83, - limb1: 0xde0e6b5d8f89851aea1ce22f, - limb2: 0x8023501921989468, + limb0: 0xea5670df9d8e32f73926fd0, + limb1: 0x68b3d53b3b1b29482456673c, + limb2: 0xafb270fbcefb6d95, limb3: 0x0 }, u384 { - limb0: 0x62f2a2758e286e5a4c8bbfae, - limb1: 0xbff49d57072a5c37e9b6676e, - limb2: 0xc22be55fe8a0b609, + limb0: 0xec91a3adc18ca78d68840a85, + limb1: 0xec66e1fd83798bccf15e4587, + limb2: 0x61428f6e745572fb, limb3: 0x0 }, u384 { - limb0: 0x2f653ba10871c1ea4ca2d071, - limb1: 0xcc40f3abb21897d592f502a8, - limb2: 0xce9b55e65313ede9, + limb0: 0x7d4b409801ed4dd8b7580e46, + limb1: 0xaf887abd49cfa21a83858bcf, + limb2: 0xf4af052622dd8494, limb3: 0x0 }, u384 { - limb0: 0x928d7a96d2244a995299db7b, - limb1: 0xe9d2bc081b1a4d8ee21807f2, - limb2: 0x661eaf7bca38a98e, + limb0: 0x6d7e175fd66ec34d35f47510, + limb1: 0x19b5182ba641598ddc21e69b, + limb2: 0x8cd96983957fd43a, limb3: 0x0 }, u384 { - limb0: 0x3aa91686133a6c0fe306cc06, - limb1: 0xd0f5b966cf929ac64426bcc8, - limb2: 0x66dda4da064aec4d, + limb0: 0xfce19535acbca160ab1cdb12, + limb1: 0x54e913f69abf1263136c3598, + limb2: 0x50934b72ab43c452, limb3: 0x0 }, u384 { - limb0: 0xe784bdb793facb6d1686c050, - limb1: 0xc71c7f2333eefcaa430a23a5, - limb2: 0x185b9b5f3180bfc6, + limb0: 0xde9cfe645ca31701c9b666d3, + limb1: 0xd741f19964b8b65e93bdd181, + limb2: 0xfec5bb26d5382f42, limb3: 0x0 }, u384 { - limb0: 0xeffebb432f4300ff9c77c94c, - limb1: 0xbaf4ce8d26e069629eda9f8b, - limb2: 0x372c19074ae7c726, + limb0: 0x94363934dae1fc86ccd88a99, + limb1: 0xac73ad2755c913f5992ddf7d, + limb2: 0x905a43679bd70fe, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x791e93ab6f0843b63688c5df, - limb1: 0xe16dc5ed68f9d33b10962461, - limb2: 0x71ad130ca8ed770a, + limb0: 0xec9ac0097f8298cae3f3bef0, + limb1: 0xd7b9d80447cc7d527750fb27, + limb2: 0x54c60c894a5358fc, limb3: 0x0 }, u384 { - limb0: 0x2a111d977ed748d6b31c3c13, - limb1: 0xbaddd4d3ab0a411db7176061, - limb2: 0x9c3f90392a7e3772, + limb0: 0xe3d9a7cbc14c68d24b5816c, + limb1: 0x5eeccf8a4318fe1006330660, + limb2: 0xbab89d83577b2d52, limb3: 0x0 }, u384 { - limb0: 0xb2b5ede054828f3592e7525e, - limb1: 0x7903e24fce4b190f540b18d7, - limb2: 0x11581b56e892d96b, + limb0: 0x7167cec3afc23b79e451abc7, + limb1: 0x82ed777f6f90189391483098, + limb2: 0x35cc9753a9283291, limb3: 0x0 }, u384 { - limb0: 0xc69e243b21aee25ebdd5d2c3, - limb1: 0x5e3b6eb992f44539168f9a20, - limb2: 0x8fc6e29dc52fc425, + limb0: 0xf6fac1f45775ebcd04076f82, + limb1: 0x8f5876e78a948917b7a51cb8, + limb2: 0x41dffc9370436a85, limb3: 0x0 }, u384 { - limb0: 0x952623d86c96bcb6203eb000, - limb1: 0xad304e9723cc0d35ebd036c5, - limb2: 0x451b729557af1ac9, + limb0: 0x5fbb99bf08f8d91d3015245a, + limb1: 0x301f3525e5079d2d72196f22, + limb2: 0x3df6db192892634c, limb3: 0x0 }, u384 { - limb0: 0xe941a1623cd8c67178b7cfae, - limb1: 0x5a8847e69c25de98aadef47c, - limb2: 0xd843abd5b0f18270, + limb0: 0x6635993f025696257b6c92d5, + limb1: 0x6454cd8cd32fbc7ac6abb45f, + limb2: 0x3bb2e52639587d7c, limb3: 0x0 }, u384 { - limb0: 0x7012eba22b18e7b501067ccf, - limb1: 0xea455f40df6a0faf62eda5c6, - limb2: 0x3473d09fc61f021c, + limb0: 0xea743f6c98f6ce816dd311a4, + limb1: 0xa35a2684e3799e6f0e16dc13, + limb2: 0xaaee9fe9e9e3a55d, limb3: 0x0 }, u384 { - limb0: 0x569e8070b9afe5c25c61d2c2, - limb1: 0xc5a15cb426885e370a427f39, - limb2: 0xbe94bc0ae09d5bee, + limb0: 0xac58413034beedf4bf8432df, + limb1: 0x2d8fc424f40a09b0a61da55d, + limb2: 0x27526f720b85113b, limb3: 0x0 }, u384 { - limb0: 0x961340d65d0bf6cb64bb7418, - limb1: 0x6bab172a2fc4e4043e97c838, - limb2: 0xc584352534db7a43, + limb0: 0x7f2f413f6f246d47ce779e4c, + limb1: 0xafc53eaef91e26786169c0d1, + limb2: 0x1e7d79b71b98cca3, limb3: 0x0 }, u384 { - limb0: 0x6cd6b55998aefc2f0d247f06, - limb1: 0xd6ba0e74129fb4452049d35d, - limb2: 0xf9dba1cc9e07194d, + limb0: 0xe9908d1319764d8b49f2c85d, + limb1: 0x3107de24c9eb77649304957d, + limb2: 0x6e559e468d940c91, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -28205,44 +28178,44 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0xa50c6e21b552237fbc95d5b, - limb1: 0xb71daeaddfb92b87a4968be5, - limb2: 0xa1460f84538d2ae1, + limb0: 0xa95b6ba1602ffb7e8babb31c, + limb1: 0xfe0a619e9aade388ac04a33d, + limb2: 0x9bc20f43deaffb47, limb3: 0x0 }, u384 { - limb0: 0x5978977fbd7bde70aa1fdf7f, - limb1: 0x331ff7cb876dce1b76086da6, - limb2: 0x806f0a9cf5158a8f, + limb0: 0x2ae17d9316ce365367d000a0, + limb1: 0x2fe99a56d7d8d316f7c67080, + limb2: 0x6f4e6549b89e911f, limb3: 0x0 }, u384 { - limb0: 0x4ee58b37b015cfd0a935a0d8, - limb1: 0xca87861e333b3d196f27e99b, - limb2: 0x7b583ae78792d48c, + limb0: 0x66015b41ba5d4624b2a5294d, + limb1: 0x25e65cb6084be654556fac64, + limb2: 0x1d868013c666b2ab, limb3: 0x0 }, u384 { - limb0: 0x34f340f271537ba20738e38, - limb1: 0x3542205f64c0c0a40d6be3f, - limb2: 0x2d1407134a23e23a, + limb0: 0x5608f3e1be3209448e76f0c9, + limb1: 0x2ff16b53bac859f9efe81bb1, + limb2: 0x64d8f1ae31fa530c, limb3: 0x0 }, u384 { - limb0: 0x6c0248b2e36007831a4117ca, - limb1: 0x9d308246eb851f3acd0d9b61, - limb2: 0xbabb7c09317e050, + limb0: 0x5d1f1a3d15239492f01046f3, + limb1: 0xfb3df3e4777da68496c08b3e, + limb2: 0x215b3c8b44130a4, limb3: 0x0 }, u384 { - limb0: 0xc56379cc2fe305547ebe1ec9, - limb1: 0x3f9751dde3150fcd8c4dcc9, - limb2: 0x363ca95928fd86c4, + limb0: 0x95e4cd96f1543e6d600fd305, + limb1: 0x2516a00766b0bac07a7fee8b, + limb2: 0x7ea6c3aa1f7db154, limb3: 0x0 }, u384 { - limb0: 0xe2e117d876db790ce1dd2bdb, - limb1: 0x800000000000000009e738a1, + limb0: 0x35353be1e9f0fb5896d04da3, + limb1: 0x80000000000000001b111855, limb2: 0x7fffffff80000000, limb3: 0x0 } @@ -28250,45 +28223,45 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0xb1a700d01c7e6bbcdfec5bdc, - limb1: 0x3866d498d964f9f8b21a47de, - limb2: 0x92d1fd89894925a3, + limb0: 0xf37d5ff1e2d6dc23b76294ad, + limb1: 0x46513f187c91a57aa76d0d9e, + limb2: 0xa764a5f8fc3e93bf, limb3: 0x0 }, u384 { - limb0: 0xf7aeffc38b44ec759d77ac51, - limb1: 0x2ea7120850b4fd9f2e715c32, - limb2: 0x7c76a0593abef608, + limb0: 0x2d47a89921ba0da5e666a9b3, + limb1: 0x27a439d64ae96f92e7fef5ad, + limb2: 0xb939abae76264259, limb3: 0x0 }, u384 { - limb0: 0x2bb286be0e0012728544bc2a, - limb1: 0x22de055b6a2cc98f3917a87a, - limb2: 0x219f25bd12c14793, + limb0: 0x5532b0a48abe6c9cebb94ea5, + limb1: 0xd03ff8ee6edb907ebf565e5, + limb2: 0xf3e554b5f3c5ac93, limb3: 0x0 }, u384 { - limb0: 0xb1da8da9506a0852ba1af48a, - limb1: 0xaced066829713570b7f01adc, - limb2: 0x4dd13bb7c2aeb122, + limb0: 0x32357a4dd3c29a14ce038715, + limb1: 0xd0738aacb1131e622ed55a0d, + limb2: 0x9b4a0be1ccc4a0a2, limb3: 0x0 }, u384 { - limb0: 0x6554642972da1c7fe4ad885d, - limb1: 0x8c55de036a0699e53ab9ebc, - limb2: 0x3958a26e92ba8f02, + limb0: 0xb489bbd21aad08047b982905, + limb1: 0x3958a0fa3265b3e2e4ebb0c0, + limb2: 0x11a1be6f06c185c0, limb3: 0x0 }, u384 { - limb0: 0x388bd9bfe702f4517410ceba, - limb1: 0xc79f38c2999c1837ad889f2, - limb2: 0xb3a52a6a4c90116, + limb0: 0xc247797710957084482250c6, + limb1: 0x84db2f7992ed6b9f2c697351, + limb2: 0x6e9116809fae2527, limb3: 0x0 }, u384 { - limb0: 0x3c489516a55d059ded718fde, - limb1: 0x78b618aeb542150415ff96d2, - limb2: 0x2eb6b25c69ab010a, + limb0: 0xfe514921d234eced69a9dc44, + limb1: 0x273ae6fa8a1d60fe251d441f, + limb2: 0x3a795f3cc1cd0a1d, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -28296,114 +28269,114 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x26a254324a5c67cd67cc15ea, - limb1: 0xba7d9dbf8af1f932ddca2817, - limb2: 0x1758ab798e06823a, + limb0: 0xe081508a51a0fecd49490092, + limb1: 0x42983656d63414dfa048f080, + limb2: 0x763ae899f8286f2c, limb3: 0x0 }, u384 { - limb0: 0xf5feafab7c55cd0a3bed0d9, - limb1: 0xd028f713fb811ceeb338943, - limb2: 0x283989b35658b3ce, + limb0: 0xb0ec4870e396a1f92ca84fc2, + limb1: 0x44fe64db68cc8f63bdf59ff3, + limb2: 0x3af5005ab037a4e, limb3: 0x0 }, u384 { - limb0: 0xd32ed4802487edd1107c21a, - limb1: 0xb51d098c6f652a75a1736406, - limb2: 0x3ebe041c53ac05dc, + limb0: 0x321e462d041233cce2917ab8, + limb1: 0x421fa98609978da12c414dbb, + limb2: 0xf70e1b2e60b373f0, limb3: 0x0 }, u384 { - limb0: 0x6aa1117dd53273fc83fa704e, - limb1: 0xa498f62e0b14aca559f29b3c, - limb2: 0xdc0e8a886a452c9e, + limb0: 0x40b78a2c6a309a9a1cb13c46, + limb1: 0xaef56a193b10686257d1c8db, + limb2: 0xb6309c614c054ef, limb3: 0x0 }, u384 { - limb0: 0xf1cbe842fb4fe46872c3d095, - limb1: 0x6dad201f41436b3e4e3d8b65, - limb2: 0x5d226ca05379777f, + limb0: 0xf27c35e23226b4a9b4f5d76f, + limb1: 0x585e897ab3e55f80326ffb60, + limb2: 0xf3e896e31af837ad, limb3: 0x0 }, u384 { - limb0: 0x6d1fa9ac07c6438a1d946c52, - limb1: 0xaf78680883865a40dd358f9f, - limb2: 0x394998ad0b3097c, + limb0: 0x2c6d74c347bb2b414dc10c3, + limb1: 0x85b78c789cafe96d6aeccadb, + limb2: 0xb19552de703d0652, limb3: 0x0 }, u384 { - limb0: 0x5b065b2a94b1ba7d45a649ab, - limb1: 0x31872ca25a0a0a4a697cb915, - limb2: 0x32f79d773947c2f1, + limb0: 0xede7c1285dd9c952333a3473, + limb1: 0x5d9a686f025545878f6e0a8b, + limb2: 0x4e1d37e3f54c9f3, limb3: 0x0 }, u384 { - limb0: 0x44a284f4cca170c8f3493608, - limb1: 0x6c5ae487789464fc425b6b3c, - limb2: 0x7f7f82303509791b, + limb0: 0xe9aca4dc7b1666bf40c430c7, + limb1: 0x17d871b3e5e2b0cb5e66bf0a, + limb2: 0xbc477b184978223a, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x882b96c7d8ea4062e14a9dfc, - limb1: 0xd4c7b2de939eb63ea158d5a7, - limb2: 0xab98cdce20bb2e62, + limb0: 0x77576dab1b07dcb939cb6849, + limb1: 0x5597c9181e71201e90ac31fe, + limb2: 0xa9865d72301d0ba5, limb3: 0x0 }, u384 { - limb0: 0x5f1e6540f3921e231d86aed8, - limb1: 0xf640e3512958525bbdb6a759, - limb2: 0xb90e513b03a3c3e3, + limb0: 0x493f2d148b646b359fafbb66, + limb1: 0xfb97ff22240b265854ca62c9, + limb2: 0xe5ae6b3e14be8b03, limb3: 0x0 }, u384 { - limb0: 0xedcda82ab14dfcc10d4a8a2f, - limb1: 0x23cff72aa28a32f61816f407, - limb2: 0x161ee1be82c46179, + limb0: 0xdd12197764f336c19da4cf9a, + limb1: 0x6de754c819de0705dcfb2b16, + limb2: 0x56184b8cea7bb9c8, limb3: 0x0 }, u384 { - limb0: 0xe3d8ff84c4f20d735e0bcdf1, - limb1: 0xc426e0c2771fa9878e0310a1, - limb2: 0x6cfa52e87e59d14c, + limb0: 0x5a2a4abe4b3846456dbec1ff, + limb1: 0xb9626e998b0cf23234e987e, + limb2: 0xde68a02fac7f7b96, limb3: 0x0 }, u384 { - limb0: 0x857017325b03d9f93fa55bec, - limb1: 0x3866b0e41480adb52eeb90c7, - limb2: 0xea0bdf57bdf02faf, + limb0: 0x8c6cc64bf4dfcb05b8cb0dc6, + limb1: 0xf81417bb383d37fd5e7b188e, + limb2: 0x67dfe5357a0be361, limb3: 0x0 }, u384 { - limb0: 0xb45790982b09c82c44c4f1fb, - limb1: 0x51a050003fcb0d5a6c7f7c9f, - limb2: 0x826331df32c90924, + limb0: 0x4db39e1106c2e5a699ca4220, + limb1: 0x231258db46407a6b1bdbf1e8, + limb2: 0x8a86cc17ec7a9ba1, limb3: 0x0 }, u384 { - limb0: 0xfab70eb102c359e3f144c571, - limb1: 0xd34f06094469fcce1d87fc25, - limb2: 0x9ff525841872d204, + limb0: 0x1fb40b6db3ce8123b6220abe, + limb1: 0x58067927a047269950cbfb02, + limb2: 0x5338fab4f3612a28, limb3: 0x0 }, u384 { - limb0: 0x7cce55dbbe9147e4442b390e, - limb1: 0x528ed1298d72b14e76c9e0f6, - limb2: 0x7fac131fff41fca, + limb0: 0x85e99162dfdc7d7a666cf483, + limb1: 0x7793a9600aa617a4dab0eb12, + limb2: 0xbcfbd6906b94fb51, limb3: 0x0 }, u384 { - limb0: 0x388bd9bfe702f4517410ceb7, - limb1: 0xc79f38c2999c1837ad889f2, - limb2: 0xb3a52a6a4c90116, + limb0: 0xc247797710957084482250c3, + limb1: 0x84db2f7992ed6b9f2c697351, + limb2: 0x6e9116809fae2527, limb3: 0x0 }, u384 { - limb0: 0x3c489516a55d059ded718fde, - limb1: 0x78b618aeb542150415ff96d2, - limb2: 0x2eb6b25c69ab010a, + limb0: 0xfe514921d234eced69a9dc44, + limb1: 0x273ae6fa8a1d60fe251d441f, + limb2: 0x3a795f3cc1cd0a1d, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -28413,9 +28386,9 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0x9982f48b612b4c8748204acf, - limb1: 0x4c863510dac0802bce969699, - limb2: 0x88759f7c94f64ca7, + limb0: 0x698fa04a6ab3642b96c7fb29, + limb1: 0x246df0d708966551251bb931, + limb2: 0xdaac4251d13c1a28, limb3: 0x0 }, u384 { @@ -28428,15 +28401,15 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0xdb320be1dcb75caba35e0ca8, - limb1: 0x2814608ec1397058c3237fd0, - limb2: 0x39ecb50ec6841adf, + limb0: 0xc5c81bf3bbf33f58efeea931, + limb1: 0x9c7bfae94372999dd8d9c976, + limb2: 0xb3fb85f8c18ce2ab, limb3: 0x0 }, u384 { - limb0: 0x7ad76d90c22c90ac831eb2a4, - limb1: 0x2da1418639325132d37fceda, - limb2: 0x89b3c660efdf10, + limb0: 0x7a336716659d288a61fd534, + limb1: 0x41fc436e13bc38f876e3c390, + limb2: 0x790f95793b3fc362, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -28444,54 +28417,54 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x3af57e250a966255c12e493c, - limb1: 0xadf3a53a69f2ebeab9140e4a, - limb2: 0xb9ece0bbe98d0067, + limb0: 0x5b1e9ac45e654bbd9cd78a96, + limb1: 0xcf2dcfd565d0f6a16f7c1ae3, + limb2: 0x9309b4bf681423c1, limb3: 0x0 }, u384 { - limb0: 0xdd0fcd3d43553037c0286c96, - limb1: 0x89ce60d27d799272c982e519, - limb2: 0xec06fccf5b0e3ce8, + limb0: 0x4211fb0639359d567442542e, + limb1: 0x62f7c521ef83795accd47ef7, + limb2: 0xe15c6aa1ef1c62a1, limb3: 0x0 }, u384 { - limb0: 0x6926cac5bff1fd659dfb563, - limb1: 0x47a0c192e58ea07efb9da080, - limb2: 0x3507155024ee3ae5, + limb0: 0xd571a4e9aff776f18a451e4d, + limb1: 0x69e367d1483a7a77abd462d, + limb2: 0xdbfdf7813929c3de, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xbb22a7eec1b3b1293f55ab42, - limb1: 0xaaaca0bb03635b87a934d844, - limb2: 0xe7d873741e65a511, + limb0: 0x8bc8b2f42b7f5b125b5de45e, + limb1: 0xdbf95c044da999af5e2abf7d, + limb2: 0x94f735250889489c, limb3: 0x0 }, u384 { - limb0: 0x9a5f884e1877179b863078d7, - limb1: 0x180380e19deb7007f1086875, - limb2: 0x92987296db7eae01, + limb0: 0xa4c6df61a4cc45c8f3043111, + limb1: 0xfc3a033351c53fb84f01131c, + limb2: 0x3ece2cdab747c570, limb3: 0x0 }, u384 { - limb0: 0x5bcd6843f5488a389e76485f, - limb1: 0x2b07f8c2cb019323ea9d9a21, - limb2: 0x59291a85876af6b7, + limb0: 0xb56a0da208c0c4a43572e0ad, + limb1: 0xedf6f30b3b63dbd30071bc02, + limb2: 0xef97756af87b49c2, limb3: 0x0 }, u384 { - limb0: 0xdb320be1dcb75caba35e0ca5, - limb1: 0x2814608ec1397058c3237fd0, - limb2: 0x39ecb50ec6841adf, + limb0: 0xc5c81bf3bbf33f58efeea92e, + limb1: 0x9c7bfae94372999dd8d9c976, + limb2: 0xb3fb85f8c18ce2ab, limb3: 0x0 }, u384 { - limb0: 0x7ad76d90c22c90ac831eb2a4, - limb1: 0x2da1418639325132d37fceda, - limb2: 0x89b3c660efdf10, + limb0: 0x7a336716659d288a61fd534, + limb1: 0x41fc436e13bc38f876e3c390, + limb2: 0x790f95793b3fc362, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -28501,9 +28474,9 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0x61fba92031bd48837bbc6730, - limb1: 0x3b32d20f982f0198e16afa0, - limb2: 0x67a17e93ab10f406, + limb0: 0xbc02dc6c861780d86530340, + limb1: 0x527d1fcaba35538410cb7f7b, + limb2: 0x212334c85849e48e, limb3: 0x0 }, g_rhs_sqrt: array![], @@ -28514,15 +28487,15 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0xac22c925ed532f00b52d0c13, - limb1: 0xa33a300d3f83446f90ae5db8, - limb2: 0xe1780bfb2e10b0b9, + limb0: 0x5b74d2c8fc2ed803a75a5db1, + limb1: 0xf0531bccc46abaa9ee26ffb8, + limb2: 0xd7e69986fd3bc4c, limb3: 0x0 }, y: u384 { - limb0: 0xd0eb91756f5b07e0bc2c5d02, - limb1: 0xdf20e508adb5cc4a11f4b202, - limb2: 0xa0c6de739e75bdb8, + limb0: 0x6a8def7b7c98392ba70b089b, + limb1: 0x929f16f8f8e5a1891fe9a695, + limb2: 0xeb0633e5f6b9263d, limb3: 0x0 } } @@ -28535,99 +28508,99 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0x32fec0685846eb0aaf2ace75, - limb1: 0x96f16d10e806dc0753b16a82, - limb2: 0x36616707c4decf22, + limb0: 0x113c8d620e3745e45e4389b8, + limb1: 0x85b8ff52d905fd02fe191c3f, + limb2: 0xf5d132d685201517, limb3: 0x0 }, y: u384 { - limb0: 0x7ed874ea9159533d50e74a41, - limb1: 0xdf33466fde9a16802d85955b, - limb2: 0xcaff1791587ae627, + limb0: 0x60c0ba1b358f375b2362662e, + limb1: 0x6abfc829d93e09aa5174ec04, + limb2: 0x7bc4637aca93cb5a, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xd331d283c134f8d7ea8c67da, - limb1: 0xdda0781f915ffddcef30044a, - limb2: 0x89510bc8be8ee17, + limb0: 0xd3ff147ff0ee4213f51f677d, + limb1: 0x431366a7732a6e4a6b942255, + limb2: 0x9fe743b25d39a591, limb3: 0x0 }, y: u384 { - limb0: 0xd9c3128cda2990d6f6b560e5, - limb1: 0xee58d14a9dd0e625a01b40ff, - limb2: 0xb9a28fa0376ebb38, + limb0: 0x7f8bb562ff60a902ef14bcb0, + limb1: 0xeb9420089fa531db62e806a6, + limb2: 0xfd028df433dfd5cc, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xff3fe2d16064155c56e11439, - limb1: 0x538254588ee4f7d9bebc0d4c, - limb2: 0xcfd0324412079172, + limb0: 0x46ae31f6fc294ad0814552b6, + limb1: 0x2d54cc811efaf988efb3de23, + limb2: 0x2a2cc02b8f0c419f, limb3: 0x0 }, y: u384 { - limb0: 0x8fa7e11451f502b16a55122c, - limb1: 0xdd4efc0b483129473f96ae2e, - limb2: 0x26167f678d11bb1a, + limb0: 0xaec889b9d8ce51c4a2c3586f, + limb1: 0xa2b07874c333bfee9f78e13e, + limb2: 0xc445de21be8d8709, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x8e1456b018c23af44f69d8c2, - limb1: 0xd2af547c1a27af8293ecc8a4, - limb2: 0x3f85ec524c50622, + limb0: 0x7e47d1c2d19c21b2f6870259, + limb1: 0xe701b40af42001c38bca00db, + limb2: 0xd87ea1720d4dd3d6, limb3: 0x0 }, y: u384 { - limb0: 0xb7ac2b3f3bca39440eac6f98, - limb1: 0x9484c3876ec19688a62dbfd1, - limb2: 0xfdd869b584df5356, + limb0: 0x5b1d6cc74985ce49a1f737fe, + limb1: 0xb9127c572c3f091c031c249c, + limb2: 0x1392711e1576aa6f, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x831bb58df3bb4e243e73fe29, - limb1: 0x26937dd36abac9a65fc237cf, - limb2: 0xab84652ae59d0d5d, + limb0: 0xb71f95ea692ed186e06e4c37, + limb1: 0x807276cd9cc59718bb11dbe9, + limb2: 0x10756a25836d67ca, limb3: 0x0 }, y: u384 { - limb0: 0xebea095a8468beedb7bdaf64, - limb1: 0xca6ceeb5bb2cb9ea6359bced, - limb2: 0x85e1a8290dd47146, + limb0: 0xd34211b3520c83c5f9be99af, + limb1: 0x8f19a28ceef67bbda102ffe7, + limb2: 0x7ac2b92030d351cc, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xa1b33213004cee83abc8b6c3, - limb1: 0x723edeade9e470cf0536a22e, - limb2: 0x2e81fd8008489c55, + limb0: 0x411bb5d0fbe844f025c7178c, + limb1: 0xcf603787227b7ac499d6d1c4, + limb2: 0x5f6b2479862eb2f8, limb3: 0x0 }, y: u384 { - limb0: 0x426783df249070aeab58b77c, - limb1: 0x630a03af8687bd90cea3fd8a, - limb2: 0x888c5e3bedaab995, + limb0: 0xce60303cfcb98726ff64a1e5, + limb1: 0xa64534c614754b3527588d25, + limb2: 0x44f75e245622181, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x2f04b1d8afdfcfa800dd34b6, - limb1: 0x37fcbfc72cf7548fa71f1a3a, - limb2: 0xbdc6b30df491c5e9, + limb0: 0x8a703177da18d4ede707c057, + limb1: 0x7d6c11e754ab6fbe73deea43, + limb2: 0xdf9787168190a047, limb3: 0x0 }, y: u384 { - limb0: 0xb6e2c6e7d4a7502894da22ef, - limb1: 0x6290b060fc239023d87d1a0d, - limb2: 0x63cab3ce20923c47, + limb0: 0x2e6585ab5f125a34fef37875, + limb1: 0xb70e9f02ce7744197172a117, + limb2: 0x60e305f9fe6f2298, limb3: 0x0 } }, @@ -28635,25 +28608,25 @@ mod msm_tests { .span(); let scalars = array![ u256 { - low: 0x71f540832b023b48928c3d2429d8609d, high: 0x3f9e19092b4493d3eddba431fca93ba8 + low: 0x8d723104f77383c13458a748e9bb17bc, high: 0x85776e9add84f39e71545a137a1d5006 }, u256 { - low: 0x2f37aa0630c1ab12e5942f1f04e41e59, high: 0x9299ad9bac06761ae06687156ea07cb8 + low: 0xeb2083e6ce164dba0ff18e0242af9fc3, high: 0x17e0aa3c03983ca8ea7e9d498c778ea6 }, u256 { - low: 0xa695349c7b5a17766fe235637055fef, high: 0xe474aa307a1082327a879e1ff898b60c + low: 0xb5d32b1666194cb1d71037d1b83e90ec, high: 0xa0116be5ab0c1681c8f8e3d0d3290a4c }, u256 { - low: 0x310503075926102e0611efd86ff021a5, high: 0xd12c52fc3e71bc33c6e628bbe511ad74 + low: 0xd3fbf47a7e5b1e7f9ca5499d004ae545, high: 0xbaf3897a3e70f16a55485822de1b372a }, u256 { - low: 0x22d968bf58c95e8dfb42f72af61d316d, high: 0x705f19c57a02a486a647bd0adb906af2 + low: 0x101fbcccded733e8b421eaeb534097ca, high: 0x38c1962e9148624feac1c14f30e9c5cc }, u256 { - low: 0xaabc189de0cfdc87b4a1be91d8ad2415, high: 0xe9844e83d4244ba8f4de69b85d213410 + low: 0x247a8333f7b0b7d2cda8056c3d15eef7, high: 0x1759edc372ae22448b0163c1cd9d2b7d }, u256 { - low: 0xabfd441068a3a23c90d9274641b81472, high: 0xbf16ad921fab9445629d19806d8fbbca + low: 0xe005b86051ef1922fe43c49e149818d1, high: 0x7d41e602eece328bff7b118e820865d6 }, ] .span(); @@ -28661,240 +28634,244 @@ mod msm_tests { array![ ( array![ - -0x1, - 0x1, + 0x0, 0x1, 0x1, - -0x1, 0x0, -0x1, 0x1, 0x0, - -0x1, - 0x0, + 0x1, -0x1, 0x1, - 0x0, 0x1, + -0x1, 0x1, - 0x0, -0x1, 0x1, -0x1, + -0x1, 0x1, 0x0, - 0x1, - 0x1, 0x0, - 0x1, - 0x1, - 0x1, - 0x1, -0x1, - 0x0, 0x1, 0x0, 0x0, - -0x1, - -0x1, 0x0, 0x0, 0x1, -0x1, 0x1, - -0x1, - 0x1, - 0x1, 0x1, + -0x1, 0x1, 0x0, - -0x1, 0x1, 0x0, + 0x0, + 0x0, + 0x0, 0x1, -0x1, -0x1, + 0x0, 0x1, + -0x1, + 0x0, + -0x1, 0x1, 0x1, -0x1, 0x0, - 0x1, + 0x0, + 0x0, + -0x1, -0x1, 0x0, -0x1, + 0x1, + 0x0, 0x0, 0x1, - -0x1, 0x1, -0x1, 0x0, + 0x0, 0x1, + -0x1, 0x0, + -0x1, 0x1, 0x1, + 0x0, 0x1, 0x0, + -0x1, 0x0, 0x0, + 0x1, + -0x1, -0x1, -0x1, - 0x0, - 0x0, 0x1, ] .span(), array![ - 0x1, - -0x1, 0x1, 0x0, - -0x1, - 0x1, - -0x1, - -0x1, - -0x1, 0x0, 0x0, + 0x1, -0x1, - -0x1, - 0x0, 0x1, 0x0, 0x1, - 0x0, + 0x1, -0x1, - 0x0, + 0x1, 0x0, -0x1, 0x0, + 0x1, -0x1, + 0x0, -0x1, - -0x1, - -0x1, - -0x1, - -0x1, - -0x1, - -0x1, - 0x1, 0x1, 0x1, -0x1, + 0x0, 0x1, - -0x1, 0x1, + -0x1, + -0x1, 0x1, - 0x0, 0x1, 0x0, -0x1, 0x0, + 0x0, -0x1, -0x1, + 0x1, + 0x0, -0x1, 0x0, + 0x1, + 0x0, + 0x1, + 0x1, + 0x0, + 0x1, 0x0, -0x1, -0x1, -0x1, - 0x0, 0x1, - -0x1, 0x1, 0x0, + -0x1, + 0x1, 0x0, + 0x1, 0x0, 0x0, -0x1, - -0x1, 0x1, + 0x0, 0x1, -0x1, + 0x1, + 0x1, -0x1, 0x0, + 0x1, -0x1, + 0x1, -0x1, + 0x0, + 0x0, + 0x0, -0x1, -0x1, 0x1, 0x1, - 0x0, - 0x0, -0x1, - 0x1, - 0x0, -0x1, 0x1, - 0x1, ] .span() ), ( array![ -0x1, - 0x0, 0x1, -0x1, + 0x1, -0x1, 0x0, 0x0, -0x1, - 0x1, + -0x1, -0x1, 0x1, 0x0, + 0x0, + -0x1, + -0x1, + 0x1, 0x1, 0x1, -0x1, + 0x1, -0x1, 0x1, + 0x1, -0x1, + 0x0, 0x1, + 0x0, + 0x0, -0x1, + 0x0, -0x1, -0x1, 0x1, + 0x0, 0x1, 0x1, -0x1, 0x1, - 0x1, + 0x0, -0x1, -0x1, -0x1, -0x1, - 0x0, -0x1, - 0x0, - 0x1, -0x1, - 0x1, - 0x1, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, 0x1, -0x1, 0x1, 0x0, - 0x1, - -0x1, - -0x1, -0x1, + 0x0, + 0x0, 0x1, 0x0, - -0x1, + 0x0, 0x1, 0x1, - 0x0, - -0x1, - -0x1, -0x1, -0x1, 0x1, - -0x1, - -0x1, - -0x1, 0x1, 0x0, - 0x0, + -0x1, 0x0, -0x1, 0x0, @@ -28902,151 +28879,129 @@ mod msm_tests { 0x1, -0x1, -0x1, - 0x0, -0x1, + 0x0, + 0x0, 0x1, - 0x1, + 0x0, -0x1, - 0x1, - 0x1, - 0x1, -0x1, ] .span(), array![ - -0x1, 0x1, -0x1, - 0x0, 0x1, -0x1, - 0x1, + 0x0, -0x1, + 0x0, -0x1, + 0x0, -0x1, 0x0, + -0x1, 0x1, + 0x0, + 0x0, + 0x0, 0x1, + 0x0, 0x1, 0x1, 0x0, - 0x0, -0x1, 0x1, -0x1, - -0x1, 0x0, + 0x1, -0x1, 0x0, + 0x0, 0x1, -0x1, 0x0, 0x1, -0x1, -0x1, - -0x1, - 0x1, 0x1, 0x0, - -0x1, - 0x1, 0x0, - 0x1, -0x1, 0x0, -0x1, 0x0, - 0x1, - -0x1, - -0x1, -0x1, - 0x0, -0x1, + 0x1, 0x0, - 0x0, + 0x1, -0x1, -0x1, 0x0, 0x0, - 0x0, - 0x0, - 0x1, 0x1, + -0x1, + -0x1, 0x0, 0x0, 0x1, 0x1, - 0x1, - 0x1, - 0x1, -0x1, 0x1, -0x1, - 0x1, - 0x1, - 0x1, - 0x1, - 0x1, - 0x0, - 0x1, - 0x1, -0x1, 0x0, - 0x0, - -0x1, 0x1, - ] - .span() - ), - ( - array![ - -0x1, -0x1, - -0x1, - 0x0, 0x0, -0x1, - 0x0, - 0x0, 0x1, + -0x1, 0x1, - 0x0, - 0x0, -0x1, 0x0, -0x1, 0x1, - 0x0, - 0x1, - 0x1, 0x1, -0x1, -0x1, + 0x0, -0x1, -0x1, + ] + .span() + ), + ( + array![ -0x1, -0x1, - -0x1, - 0x0, - 0x1, 0x0, -0x1, + 0x1, 0x0, 0x0, - -0x1, - -0x1, + 0x1, + 0x1, 0x1, 0x1, 0x0, + 0x1, 0x0, 0x1, 0x0, 0x1, + -0x1, 0x1, + -0x1, 0x0, -0x1, 0x1, + 0x1, + 0x1, 0x0, + 0x1, + -0x1, -0x1, 0x0, 0x1, @@ -29054,284 +29009,307 @@ mod msm_tests { 0x1, -0x1, -0x1, + 0x0, + 0x0, + 0x1, + 0x1, -0x1, -0x1, -0x1, + 0x1, + 0x0, -0x1, -0x1, 0x1, - -0x1, - 0x0, - 0x0, 0x0, -0x1, 0x1, + 0x1, -0x1, - -0x1, - 0x0, 0x1, 0x0, -0x1, + 0x0, + 0x1, -0x1, + 0x0, -0x1, + 0x0, -0x1, + 0x0, 0x1, -0x1, + -0x1, 0x0, + -0x1, 0x1, - ] - .span(), - array![ - 0x0, 0x1, 0x1, 0x0, + 0x0, + 0x0, 0x1, -0x1, - -0x1, 0x0, 0x1, 0x0, 0x1, - 0x0, -0x1, - 0x1, + -0x1, + ] + .span(), + array![ 0x1, 0x1, -0x1, 0x1, 0x0, - 0x0, - 0x1, - 0x0, 0x1, + -0x1, 0x1, 0x0, -0x1, - 0x1, -0x1, 0x0, - 0x0, 0x1, 0x1, 0x0, - 0x0, 0x1, 0x0, + 0x0, 0x1, 0x1, -0x1, 0x0, -0x1, - 0x1, - 0x1, - 0x1, - 0x1, + -0x1, 0x1, 0x0, - 0x1, 0x0, -0x1, + 0x0, + -0x1, + 0x0, -0x1, + 0x0, 0x1, + 0x0, + 0x0, -0x1, 0x0, 0x1, + -0x1, + 0x0, + -0x1, + -0x1, 0x1, + -0x1, + 0x0, 0x1, 0x1, 0x0, 0x0, + 0x0, -0x1, + 0x1, -0x1, 0x0, - -0x1, + 0x0, -0x1, 0x1, + -0x1, + -0x1, 0x0, 0x0, - 0x1, - 0x1, - 0x1, -0x1, 0x0, + -0x1, 0x1, 0x1, -0x1, 0x1, -0x1, 0x0, + -0x1, 0x0, -0x1, -0x1, + 0x1, + 0x0, + 0x0, + 0x1, + -0x1, + 0x1, ] .span() ), ( array![ - -0x1, 0x1, - 0x0, + -0x1, + -0x1, + -0x1, -0x1, 0x0, 0x0, - 0x1, - 0x0, -0x1, + 0x0, + 0x1, + 0x1, 0x1, -0x1, 0x1, 0x1, 0x1, - -0x1, + 0x0, + 0x1, -0x1, 0x1, -0x1, -0x1, + 0x0, -0x1, 0x1, + 0x0, + -0x1, 0x1, 0x1, - -0x1, 0x1, -0x1, 0x0, + -0x1, + -0x1, + 0x1, 0x0, + 0x1, + -0x1, -0x1, 0x0, -0x1, 0x0, - 0x1, + 0x0, + 0x0, -0x1, 0x1, -0x1, + 0x1, 0x0, 0x1, - -0x1, 0x0, 0x0, + 0x1, 0x0, - -0x1, + 0x1, 0x0, 0x0, 0x0, - -0x1, - -0x1, - -0x1, + 0x1, + 0x1, 0x0, -0x1, -0x1, 0x0, - -0x1, - -0x1, - -0x1, 0x0, - -0x1, 0x0, - -0x1, - -0x1, - -0x1, - 0x1, 0x1, -0x1, + 0x0, + 0x0, -0x1, 0x1, 0x1, 0x1, + 0x1, -0x1, - -0x1, - -0x1, - 0x0, - -0x1, - 0x0, 0x1, 0x0, + -0x1, 0x0, - 0x1, + -0x1, -0x1, ] .span(), array![ 0x1, - 0x0, + -0x1, 0x0, -0x1, 0x1, 0x1, + 0x1, 0x0, - -0x1, - 0x0, - -0x1, - -0x1, 0x0, 0x0, + 0x1, + -0x1, + 0x1, -0x1, 0x1, 0x1, + 0x0, + 0x0, 0x1, 0x0, 0x1, + 0x1, -0x1, 0x0, 0x1, -0x1, + 0x0, 0x1, 0x1, 0x1, + -0x1, 0x1, 0x0, 0x0, -0x1, - -0x1, - -0x1, - -0x1, - 0x0, 0x0, -0x1, 0x1, - 0x1, 0x0, -0x1, + 0x0, -0x1, 0x1, 0x0, 0x1, 0x1, -0x1, - 0x0, - 0x0, - 0x0, - 0x0, - 0x1, -0x1, - 0x1, 0x0, 0x1, + 0x0, -0x1, - 0x1, -0x1, 0x0, + 0x0, + 0x0, + -0x1, -0x1, -0x1, - 0x1, - 0x0, -0x1, - 0x1, - 0x1, -0x1, - 0x0, 0x0, -0x1, 0x0, + -0x1, + -0x1, + -0x1, + 0x1, 0x1, 0x0, -0x1, + 0x1, 0x0, + 0x1, -0x1, -0x1, + 0x1, 0x0, - -0x1, 0x0, + 0x1, -0x1, -0x1, ] @@ -29339,276 +29317,264 @@ mod msm_tests { ), ( array![ + 0x1, 0x0, -0x1, - 0x0, - 0x0, - 0x0, + -0x1, -0x1, -0x1, 0x1, -0x1, - 0x0, -0x1, -0x1, - 0x0, + -0x1, 0x1, 0x0, -0x1, 0x0, - 0x0, - 0x1, - 0x0, 0x1, + -0x1, 0x0, 0x1, 0x0, 0x0, - 0x0, + 0x1, -0x1, 0x1, 0x0, 0x1, - 0x1, - 0x0, + -0x1, + -0x1, + -0x1, -0x1, 0x0, 0x1, - 0x0, - 0x1, - 0x1, -0x1, 0x0, + -0x1, + -0x1, + -0x1, + -0x1, + -0x1, 0x1, - 0x1, - 0x0, -0x1, 0x0, - 0x0, - 0x0, - 0x0, 0x1, - 0x0, 0x1, + -0x1, 0x0, 0x0, - 0x0, + -0x1, 0x1, - 0x0, + -0x1, 0x1, -0x1, + -0x1, 0x1, + -0x1, + -0x1, 0x0, - 0x1, - 0x1, + -0x1, + -0x1, 0x0, - 0x1, - 0x1, -0x1, 0x1, 0x0, + 0x1, 0x0, 0x1, -0x1, - -0x1, 0x1, -0x1, + -0x1, 0x0, -0x1, + 0x0, + 0x1, 0x1, 0x1, 0x0, -0x1, + 0x1, ] .span(), array![ - 0x0, 0x0, 0x1, - -0x1, - 0x1, 0x0, -0x1, - 0x1, + -0x1, 0x0, -0x1, -0x1, - 0x1, - 0x1, - 0x1, -0x1, -0x1, + -0x1, + 0x0, + 0x0, 0x1, 0x1, - 0x1, - -0x1, - -0x1, + 0x0, 0x1, 0x1, 0x1, + -0x1, 0x1, 0x0, - -0x1, 0x0, 0x0, 0x1, + -0x1, + -0x1, 0x1, + -0x1, 0x1, 0x0, - 0x0, -0x1, + -0x1, + 0x1, 0x0, + -0x1, 0x1, 0x1, 0x1, + -0x1, + 0x0, + 0x0, 0x1, + 0x0, + 0x0, + 0x0, + -0x1, 0x1, + 0x0, 0x1, 0x1, + -0x1, 0x1, + 0x0, + -0x1, + -0x1, 0x1, 0x0, 0x1, 0x1, 0x1, -0x1, + -0x1, 0x0, 0x1, - -0x1, 0x0, -0x1, 0x1, - -0x1, - -0x1, 0x1, 0x1, - -0x1, 0x1, - -0x1, - 0x0, - 0x0, 0x1, - -0x1, 0x1, 0x0, - 0x1, + 0x0, -0x1, -0x1, - 0x0, 0x1, -0x1, - 0x0, 0x1, - 0x0, - 0x0, - 0x0, 0x1, ] .span() ), ( array![ - -0x1, - 0x0, 0x1, - 0x0, - -0x1, 0x1, -0x1, + -0x1, + 0x0, 0x0, 0x1, 0x0, -0x1, - 0x1, -0x1, - 0x0, + 0x1, 0x1, 0x0, 0x1, 0x1, - 0x0, -0x1, 0x1, + 0x0, -0x1, -0x1, -0x1, - 0x0, 0x1, - 0x0, -0x1, 0x1, - 0x0, -0x1, - 0x0, 0x1, + 0x0, + 0x0, -0x1, 0x0, 0x0, + 0x0, 0x1, -0x1, - -0x1, + 0x0, 0x0, -0x1, 0x1, 0x0, + 0x1, + 0x1, + 0x1, -0x1, 0x0, - 0x0, + 0x1, + 0x1, -0x1, -0x1, -0x1, -0x1, - 0x0, - 0x0, - 0x0, - 0x0, -0x1, -0x1, - 0x1, 0x0, - -0x1, + 0x0, -0x1, 0x1, + -0x1, 0x1, -0x1, 0x0, - 0x0, - 0x0, -0x1, + 0x0, 0x1, 0x1, 0x1, - 0x1, - 0x1, + -0x1, + -0x1, 0x0, -0x1, 0x0, + 0x0, -0x1, 0x1, - 0x1, + 0x0, -0x1, 0x1, - -0x1, + 0x0, + 0x0, + 0x0, -0x1, ] .span(), array![ - 0x1, 0x0, 0x0, 0x0, - -0x1, - 0x1, - 0x1, 0x0, - -0x1, - 0x1, - -0x1, - 0x1, - -0x1, 0x0, - 0x1, -0x1, + 0x1, 0x0, 0x1, 0x0, @@ -29616,62 +29582,69 @@ mod msm_tests { 0x1, 0x1, 0x1, - 0x0, 0x1, - 0x0, -0x1, - 0x1, + 0x0, + 0x0, -0x1, -0x1, 0x0, + 0x0, 0x1, 0x1, 0x0, - 0x0, - 0x1, -0x1, + 0x0, 0x1, 0x1, -0x1, -0x1, - 0x0, - -0x1, - 0x1, - -0x1, 0x1, - 0x0, -0x1, -0x1, - 0x0, - 0x0, 0x1, 0x0, 0x1, - -0x1, - -0x1, - 0x1, 0x1, 0x1, + -0x1, + 0x0, 0x1, + 0x0, + 0x0, 0x1, -0x1, 0x1, + 0x0, + -0x1, 0x1, -0x1, -0x1, + 0x1, + -0x1, -0x1, 0x0, - 0x0, + 0x1, + -0x1, -0x1, 0x0, + -0x1, + 0x1, 0x0, -0x1, 0x0, 0x1, - 0x0, + -0x1, -0x1, 0x0, + 0x0, + 0x1, 0x1, + 0x1, + 0x0, + 0x0, + 0x0, + -0x1, 0x0, -0x1, -0x1, @@ -29680,47 +29653,39 @@ mod msm_tests { ), ( array![ + 0x0, + 0x0, + 0x1, -0x1, - -0x1, + 0x0, 0x1, -0x1, 0x0, 0x0, - -0x1, - -0x1, - 0x1, 0x0, - -0x1, - -0x1, + 0x1, 0x0, -0x1, -0x1, - -0x1, 0x1, - 0x0, 0x1, 0x0, - 0x0, - 0x0, 0x1, 0x1, + 0x0, 0x1, -0x1, -0x1, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, -0x1, -0x1, -0x1, - 0x1, - 0x1, - -0x1, - 0x1, - -0x1, 0x0, - -0x1, - -0x1, - 0x1, 0x0, - 0x1, 0x0, -0x1, 0x0, @@ -29728,38 +29693,46 @@ mod msm_tests { 0x0, 0x0, 0x0, - 0x0, + -0x1, + 0x1, 0x1, 0x0, 0x1, - -0x1, 0x1, -0x1, + 0x0, 0x1, - 0x1, - -0x1, - -0x1, 0x0, -0x1, + 0x0, 0x1, -0x1, - 0x1, - 0x1, -0x1, 0x0, - -0x1, - -0x1, + 0x0, 0x0, 0x1, 0x1, -0x1, + 0x0, 0x1, + 0x1, + 0x1, + 0x0, + 0x0, 0x0, -0x1, + 0x1, -0x1, 0x0, + 0x0, + 0x1, + -0x1, -0x1, 0x1, + 0x0, + 0x0, + 0x0, -0x1, -0x1, ] @@ -29767,28 +29740,16 @@ mod msm_tests { array![ -0x1, 0x0, - 0x1, - 0x1, - 0x1, - -0x1, - 0x0, - 0x1, - 0x0, 0x0, + -0x1, + -0x1, 0x1, 0x0, - 0x0, - 0x0, - 0x1, - 0x1, - 0x1, - 0x1, -0x1, 0x0, 0x0, - 0x1, 0x0, - 0x1, + -0x1, -0x1, 0x1, 0x0, @@ -29796,57 +29757,68 @@ mod msm_tests { 0x1, 0x1, 0x0, + 0x1, + -0x1, -0x1, 0x0, - 0x0, - 0x0, + -0x1, + -0x1, 0x1, 0x0, - 0x0, -0x1, - 0x0, - 0x1, 0x1, -0x1, - 0x0, - 0x0, -0x1, 0x1, -0x1, -0x1, 0x1, 0x1, - -0x1, 0x1, 0x0, - 0x1, - 0x1, + 0x0, -0x1, -0x1, 0x0, - 0x0, - 0x0, -0x1, -0x1, - 0x0, + -0x1, 0x0, -0x1, + -0x1, + 0x1, 0x0, -0x1, + 0x1, + 0x1, + 0x1, + -0x1, + -0x1, + 0x1, + 0x1, 0x0, + -0x1, 0x0, 0x0, 0x1, 0x1, - 0x1, -0x1, -0x1, 0x1, - -0x1, + 0x1, 0x0, + -0x1, + 0x1, + -0x1, 0x1, + 0x0, -0x1, -0x1, + 0x1, + 0x0, + 0x1, + 0x0, + 0x1, ] .span() ), @@ -29856,93 +29828,93 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0x6ded0a79105f8694430acda1, - limb1: 0xb0b3482efa57f9e3690ad3f3, - limb2: 0xdce4576a3b539704, + limb0: 0xd7e267b6ca1bedcf066b766, + limb1: 0xd3b9931a21defe9b022284cd, + limb2: 0x5ff796060e1428f7, limb3: 0x0 }, y: u384 { - limb0: 0x6d9e4bc65e3457f20699aaf, - limb1: 0xbc6e2073eb38031f090f5542, - limb2: 0xcfa014a95935ae90, + limb0: 0x6d6845c669fbfd4bdbf6c3a4, + limb1: 0xc25a7fd475689da513646511, + limb2: 0xc4c9762f894259c2, limb3: 0x0 } }, Q_high: G1Point { x: u384 { - limb0: 0xf5780d841c4c0a88d79cd4ec, - limb1: 0x1410d89860fdc8dd25a951fd, - limb2: 0x58a22f7094dd394a, + limb0: 0x8f1c6274573914588f43806f, + limb1: 0x5b993d15a4b41556edf5310f, + limb2: 0x26685c7c935f7c5b, limb3: 0x0 }, y: u384 { - limb0: 0xad63a7a81d6040a820805145, - limb1: 0xcad933e5a45dda64a25d77ea, - limb2: 0x79e3d47f7da9feb6, + limb0: 0xf14d3c3999c0cbb3a82cb077, + limb1: 0x293c4ef3f2473b64e8824358, + limb2: 0xd4db7bf5937eb721, limb3: 0x0 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0xaa395141405e716a52175c6e, - limb1: 0x8150c0fb89b3b3b8c58cbf68, - limb2: 0x597396e10210ba95, + limb0: 0x3c085f99ca5f8f27c32cf690, + limb1: 0x4e32d218ec40f0f27d90273a, + limb2: 0xb9fc0350e0bf076f, limb3: 0x0 }, y: u384 { - limb0: 0x820f2095ed4fdb4b5204a547, - limb1: 0xa10e67ca717d6d9097346d3b, - limb2: 0xb924daf58e846a2e, + limb0: 0xf172befa0fc8ae5cba4f6cf0, + limb1: 0x208e5a94272a3c1c7b037e19, + limb2: 0x8d56d724bbd7934b, limb3: 0x0 } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0x7ce8ba6ff8263f4dc90fe60a, - limb1: 0x2d75c13b5265c651110d190d, - limb2: 0x2f45e1d8c7796cad, + limb0: 0xe80b77aa23f7b424d36fc49c, + limb1: 0xefe7ecaca2729166d3365b4b, + limb2: 0x7a1bb9205cf2344b, limb3: 0x0 }, u384 { - limb0: 0xb15653a2f506255508f81a1c, - limb1: 0x7d9c30145e742a86e1e8036c, - limb2: 0x237ad0e820cb8b99, + limb0: 0xc678663e1d7ef099f99ba07d, + limb1: 0x7bb4d41aef35251299707b7c, + limb2: 0x3c9e516f1e5590a9, limb3: 0x0 }, u384 { - limb0: 0xb88b0e402e65ed7053149271, - limb1: 0x710092ce6150fb22fd627462, - limb2: 0xa4a9bcdd90bed36d, + limb0: 0x6f7edf038ab74110121acddf, + limb1: 0x702353e94ba3d8463bca07b0, + limb2: 0x2aa49877d8c478c7, limb3: 0x0 }, u384 { - limb0: 0x34cb8cde27765f40d3ffce39, - limb1: 0x3a37db53227827c24d770c18, - limb2: 0xcad72a6a3f03a137, + limb0: 0x4980d9f4d667252c42a5f560, + limb1: 0x8a522563a761077c03c46d84, + limb2: 0xcd2943bd6a87b0da, limb3: 0x0 }, u384 { - limb0: 0x3cad4b0c851ae7a5d332c0a, - limb1: 0x27b3e79e19863ac6232f0da5, - limb2: 0x99df40a3ba423050, + limb0: 0xc6916ae09b9b9843f93c295d, + limb1: 0x8302dfcbe6da98a8f50da71d, + limb2: 0x57adb48a8c54096a, limb3: 0x0 }, u384 { - limb0: 0x4ab2dd76fdda3293c4db5f59, - limb1: 0x6c449389fe1bbd95bebab768, - limb2: 0x54672ad69857a78c, + limb0: 0xefabb59506a0be5bc4f61f0c, + limb1: 0x18de1027c1072afa8667e781, + limb2: 0x1130d06050a001e7, limb3: 0x0 }, u384 { - limb0: 0x65ea9daff0710872bbf4deb0, - limb1: 0xeb2f4e5c82781e8a416921e3, - limb2: 0x1a9ec08aceae3479, + limb0: 0xc6b3f85ac868b81ac0222493, + limb1: 0x8e5c4dcb54dc34df0a12ef2a, + limb2: 0x83a0fa81804da8f9, limb3: 0x0 }, u384 { - limb0: 0xb729fbee84033ad958edbfcb, - limb1: 0x7fffffffffffffff15f67fbf, + limb0: 0x87eeab5b475b337c4359e9d0, + limb1: 0x7ffffffffffffffe56c51222, limb2: 0x7fffffff80000000, limb3: 0x0 } @@ -29950,51 +29922,51 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0xa102f922afabd1c381f67eca, - limb1: 0xc0bddf884ea9e87ddbc9bdc4, - limb2: 0x210c1eec55a1578a, + limb0: 0xac0ad385bb57a18052c39ed, + limb1: 0x3186887203541450bbf76306, + limb2: 0x4d895b3f89abfe12, limb3: 0x0 }, u384 { - limb0: 0x67e0564f2c73ec2fde08b4c3, - limb1: 0xfbf40a46a3fe7c2b87c88eed, - limb2: 0xeedac390619360a2, + limb0: 0x17bf8321aa6e78eb1ae2b63a, + limb1: 0x8647cf9990c0a192863f6653, + limb2: 0x57324925a2004b62, limb3: 0x0 }, u384 { - limb0: 0xaaf6c3ebaa511d16e1780109, - limb1: 0x2bb96d7599dffca12b219c7, - limb2: 0x39216e3303fe026, + limb0: 0x9572a5f495e2ae011c872f6e, + limb1: 0x3db25e88b53a7abd7c76fd25, + limb2: 0x8c1de9570892b1dd, limb3: 0x0 }, u384 { - limb0: 0xfdec1a85edd9bea8df6fef45, - limb1: 0x9ec18cd224f8c6750901f153, - limb2: 0x9640cf560ebbd75b, + limb0: 0x185910f64c4bbc602866f2d9, + limb1: 0x4de48cdcab8d56838df627ee, + limb2: 0x7d69fde9fb6d06ff, limb3: 0x0 }, u384 { - limb0: 0xd9a56368b6753ca1699ba9e5, - limb1: 0xc80d53b27cdd560827d97b0c, - limb2: 0x1b3d4c5914d7cc3e, + limb0: 0xe121ac6f7ca12537ac29cfb2, + limb1: 0xb57158d1e639ec75a68328ac, + limb2: 0x3ce30e739182746f, limb3: 0x0 }, u384 { - limb0: 0x6cefc7932f20875966fdf727, - limb1: 0x9a4e13c0bc2108d2e6c16284, - limb2: 0xc499305c798bf800, + limb0: 0x2611c133f375eeb819649dbf, + limb1: 0xfa36ef068a14f291a9ab052a, + limb2: 0x90e267a92d93c138, limb3: 0x0 }, u384 { - limb0: 0x48a154a724b617acedf93619, - limb1: 0xd9535b5adf209138cff8ad14, - limb2: 0xb1a78edbf7ad9460, + limb0: 0xab4895cf78dd9da03039f0d, + limb1: 0x7c033cd4a05673c3cbbaad90, + limb2: 0x37bb68f1863c1db7, limb3: 0x0 }, u384 { - limb0: 0xaaba8f9fb91638e891d9256f, - limb1: 0xe3ba0d83619df5d6f552f319, - limb2: 0x788f8a0b5aa0a493, + limb0: 0xc5a4b6b587436142572cde37, + limb1: 0x81e4c6236ae9192f4feac5b2, + limb2: 0xb82c7c18e80b4be3, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -30002,126 +29974,126 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x5008a55bf0538fc1232d54ba, - limb1: 0xdc1518a54b0a2c66ee343dcd, - limb2: 0x62992832f25d393d, + limb0: 0x7cb1d2869613548e1709e1c1, + limb1: 0xea2b0d2846d810d85aba6272, + limb2: 0x8fd5ff3553a13d3d, limb3: 0x0 }, u384 { - limb0: 0xfc58d6b87d528bcf2d34ed4c, - limb1: 0x4e2206b8ba3a5796e2876a7e, - limb2: 0xf72fdd8842ffcb33, + limb0: 0xa87770e80714a09035af1b86, + limb1: 0xfb39d096eadae500de49ab0d, + limb2: 0xe7b6d4bd6082bda0, limb3: 0x0 }, u384 { - limb0: 0xf9298507f87a4f9e67366243, - limb1: 0x1d9f902b1502001a9909db2d, - limb2: 0xc1e04d4e491cfab7, + limb0: 0xe7be792c5a580942271effd2, + limb1: 0x5d5ae09b819b7c84f45cf99e, + limb2: 0xf8823db4a62f56eb, limb3: 0x0 }, u384 { - limb0: 0xc9337b6494b027c24ba0c852, - limb1: 0x4d4a1a40a3a382e5570d003e, - limb2: 0x9592dc7f294a9286, + limb0: 0xb4edc6b70bcf8b37c8f5d40, + limb1: 0x56935507d2c857977bc46cd1, + limb2: 0x23f164ef5611bae, limb3: 0x0 }, u384 { - limb0: 0x7521ebb3c02152c9e8a7a8cb, - limb1: 0x29b6a737a08ca4cec000d6cd, - limb2: 0x1501c9445008bd5f, + limb0: 0xdfa0e969ca1eb293bd87e0df, + limb1: 0x5fdf8ce170dc752f5544fde0, + limb2: 0x507d512028181f33, limb3: 0x0 }, u384 { - limb0: 0x6a1f467c79bce863b41a29d7, - limb1: 0x9e64fcee0405183c90da48fa, - limb2: 0xda2dc6d747a522af, + limb0: 0xf41d6eb53fa16864ed5c4ce0, + limb1: 0xf3d1f3575fa708bee1e50266, + limb2: 0xd782045791228fad, limb3: 0x0 }, u384 { - limb0: 0xa30faa3a57ee5b3dbc0c0421, - limb1: 0xb0ad380df53d2e9083f45f8f, - limb2: 0x27e9e24b234091c1, + limb0: 0x45dab23e171cf039c2431c, + limb1: 0xf974a15af2560dd2ddab0be8, + limb2: 0x7709bdc1fc23ebde, limb3: 0x0 }, u384 { - limb0: 0x1acd416502bd90d5e8a05cc, - limb1: 0xe2f37e153212fa8966cde621, - limb2: 0xc6331469821d75a0, + limb0: 0xef7544c573cea1fc1258ec60, + limb1: 0xe41c8787ee4418a148a96a3c, + limb2: 0xe8e7c5e8ecd1d437, limb3: 0x0 }, u384 { - limb0: 0xb4bea7a917219ff9eb3cebce, - limb1: 0x36af1bf20315605347a876c, - limb2: 0x5c481c11632efc81, + limb0: 0xf8ebd929ebf991e367905a15, + limb1: 0x53a5f1b85434f5372c48c2ee, + limb2: 0x329d0d4799bdbe0, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xdf9acca1e6ea3e705f17d4ed, - limb1: 0x87d0b9afc38400bf015ec1a4, - limb2: 0x565bdd27efa9e6b0, + limb0: 0x3529da2e38da06981a516289, + limb1: 0x41b7875854b81ee341cdec33, + limb2: 0x337a027217039d47, limb3: 0x0 }, u384 { - limb0: 0x9657c30ffca63977b6cd959e, - limb1: 0xd8d5d61d2fd21fa64b1b9e2c, - limb2: 0x30475ffa46b086c4, + limb0: 0x5a4ea1ded5494cae617d4cbd, + limb1: 0x4d73dc4006749d4632219f76, + limb2: 0x1a8a15bdc6cb732b, limb3: 0x0 }, u384 { - limb0: 0x495f3031561975e5754fc2, - limb1: 0x9cdaff290ac3a6cd20d903ff, - limb2: 0x9b2f52a75b752c44, + limb0: 0x998953d67017fb8dcfa316d1, + limb1: 0x164f60bbad773914d2645b88, + limb2: 0xf9cbe03365c779b1, limb3: 0x0 }, u384 { - limb0: 0xb9f3c5c48cd2f5ec5cd94ae8, - limb1: 0x9d91407ef7c44cbb3c245a94, - limb2: 0xc1bc2a8857adf82, + limb0: 0xa3ae6bd648f6417430c865a, + limb1: 0x499be01b5b7d999b6fb557a0, + limb2: 0x93b431c9b5d5573f, limb3: 0x0 }, u384 { - limb0: 0x7e81e5f98083134a9945e496, - limb1: 0x539ab20c21b82d881fa499a8, - limb2: 0x95dd9354b99df6f4, + limb0: 0x166ad32228982ea97a64e20, + limb1: 0xb818299871ba75bf7c354a39, + limb2: 0x3430eaeb7914da69, limb3: 0x0 }, u384 { - limb0: 0xc6be1fd052117d292f040469, - limb1: 0x9ffaae16ea48382dddcca950, - limb2: 0x5dac3e89c14cd0c6, + limb0: 0xe97d19b4f9b59ce58e176fc3, + limb1: 0x2e38ad25f616a993ad0da205, + limb2: 0x7f7b92ce542a47b2, limb3: 0x0 }, u384 { - limb0: 0x21e568b55d00b150711ae8ac, - limb1: 0xecfeeb18e23592c409c1db0e, - limb2: 0xc7bc41e7457f0327, + limb0: 0xd1f3646cd9a54116c5d76e12, + limb1: 0x455a9f7a9b5f11db40153c7a, + limb2: 0xd5bc956eb2506cf, limb3: 0x0 }, u384 { - limb0: 0x2184138dd70c0b4621fd42a5, - limb1: 0x845ea530bcffbfd8b729663a, - limb2: 0x60cb7f53840c02fe, + limb0: 0xbb6540f4d1eb5a48e42c6145, + limb1: 0x52f365337a3b8d34d95486c6, + limb2: 0x94517fbbf74e8c5f, limb3: 0x0 }, u384 { - limb0: 0x3913c9aa3fac18ddd944e724, - limb1: 0xa30ba88c0ddfae0a6be58fe9, - limb2: 0xb5b0c81213e49e2d, + limb0: 0xa1774e09997a072f3bb06363, + limb1: 0x287459f1bff22dc01f07bac4, + limb2: 0xc32329351fac7178, limb3: 0x0 }, u384 { - limb0: 0x48a154a724b617acedf93616, - limb1: 0xd9535b5adf209138cff8ad14, - limb2: 0xb1a78edbf7ad9460, + limb0: 0xab4895cf78dd9da03039f0a, + limb1: 0x7c033cd4a05673c3cbbaad90, + limb2: 0x37bb68f1863c1db7, limb3: 0x0 }, u384 { - limb0: 0xaaba8f9fb91638e891d9256f, - limb1: 0xe3ba0d83619df5d6f552f319, - limb2: 0x788f8a0b5aa0a493, + limb0: 0xc5a4b6b587436142572cde37, + limb1: 0x81e4c6236ae9192f4feac5b2, + limb2: 0xb82c7c18e80b4be3, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -30131,102 +30103,99 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0x59192fd3ea791c1adb923599, - limb1: 0x49275a84cba31506c52cfeaa, - limb2: 0x32b54bbc1f80d204, + limb0: 0xe8a1e4150dc15b57f3b9c746, + limb1: 0xf9c349ef5fdfdd28f396cdc9, + limb2: 0x3bb8d88fce5dc64d, limb3: 0x0 }, u384 { - limb0: 0xb10609060a85e40afd2dfc8e, - limb1: 0x7850e31d548b662358cf0c7d, - limb2: 0x1ea0fb114db13b74, + limb0: 0xce345f7388178a32535153f2, + limb1: 0x2744933df6dd3dd9be4a66aa, + limb2: 0xb00129c60fc7effa, limb3: 0x0 }, u384 { - limb0: 0xacd88a84aada3ee87ab92ade, - limb1: 0xd49d6e40088b804baa99f1d1, - limb2: 0x8a0c08ee3acd8315, + limb0: 0x628aaadb5c1ab3244490b607, + limb1: 0xbdb8de69139930b73939cc00, + limb2: 0x4a506f89ad52360d, limb3: 0x0 }, u384 { - limb0: 0x69eefbd970282b2ee72e5cca, - limb1: 0x125216e5060236cbb2c0a26f, - limb2: 0xf883b1e58cfa5fac, + limb0: 0x1022059e2a5faf43296633d1, + limb1: 0x42ec0a979aa77a50db8fa4a4, + limb2: 0x79c2d62e416e41ba, limb3: 0x0 }, u384 { - limb0: 0x29a077e78feff75a37e45561, - limb1: 0x5e02d928b73a3fcf9698e255, - limb2: 0x560c0ad8a352f0a8, + limb0: 0xd6b089ed32ceb7234cba868c, + limb1: 0xa49fdc280653b5c70665fcdf, + limb2: 0xf647dad188c15148, limb3: 0x0 }, u384 { - limb0: 0x97518db644b8509209fb9e8b, - limb1: 0x565c3d77f09e4d02850c9af5, - limb2: 0xa1a7e09f2c5d0332, + limb0: 0x2a9f054ea20610e4916f9a9b, + limb1: 0x7db75dcc316aa9fbccda4eb6, + limb2: 0xfcfe8d902156f6eb, limb3: 0x0 }, u384 { - limb0: 0x2145bf10738d0b76aefc3d56, - limb1: 0xc123a0fc5a8a37ff1958c662, - limb2: 0x77bc5cba25eb9b49, + limb0: 0xfbb5aaf10b4b907d98772d2f, + limb1: 0x59ef62180545a8f8f39dba4d, + limb2: 0x15ba2e3a6729d751, limb3: 0x0 }, u384 { - limb0: 0xe801cac06f24fc2452b297f8, - limb1: 0x7ffffffffffffffec4c6f848, - limb2: 0x7fffffff80000000, - limb3: 0x0 + limb0: 0x65010b3bc18d642e62bfdfa9, limb1: 0x2405d43a, limb2: 0x0, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0xe01eb098dd0e885fc7e619f6, - limb1: 0x5ea63f2cf5fbd1a42228bdb8, - limb2: 0xc7b4a5be851f01f1, + limb0: 0xa0214c6516dca8e76a2c8795, + limb1: 0xf54c2e01647500e56d4a62e9, + limb2: 0x177194ce47d65741, limb3: 0x0 }, u384 { - limb0: 0x285ed558cde0246e40bbaf69, - limb1: 0x7e4de8e4fbed605b29460807, - limb2: 0xba5787a2df758e45, + limb0: 0xdb5e7f2791736d187eb07773, + limb1: 0x31673c2ba290e5d388020171, + limb2: 0xb44db312a2e0d344, limb3: 0x0 }, u384 { - limb0: 0x5786fa7541605acebc3216d6, - limb1: 0xda229bf1b329af460a7b8c73, - limb2: 0xc4533b4317b6bf42, + limb0: 0xd060675dd7d937d9bb232993, + limb1: 0x16c0b87de8b7f4ec5ff3b090, + limb2: 0x96369434d8d399f2, limb3: 0x0 }, u384 { - limb0: 0xaeb442ddaedb558d961ec6a6, - limb1: 0x25db23a4a10fde28e684fe85, - limb2: 0x611adc55e26a0125, + limb0: 0xe8181ac389e3bee8b593bbda, + limb1: 0xa5c800e32c21a922cd06a5cd, + limb2: 0xb34c3032d7e8cfd5, limb3: 0x0 }, u384 { - limb0: 0x2312bf35ca9aece4382be539, - limb1: 0xc1bfc06359bf62224789906e, - limb2: 0xd7e949008ed21f37, + limb0: 0x3027a1d2ccd7cd219994fdb0, + limb1: 0x9377c75287e7bf2c2dd16d63, + limb2: 0x4bcf5f9a37e2f720, limb3: 0x0 }, u384 { - limb0: 0xe4119a6522106622b0bed586, - limb1: 0x1b15d0ec15c4d9f90043ae32, - limb2: 0x24eac6de45460311, + limb0: 0x175940e0a514f74c74e3cc67, + limb1: 0xce92b71530f336376b77cce0, + limb2: 0xe298d746bbd53883, limb3: 0x0 }, u384 { - limb0: 0xed6f991a94232af5c06cd162, - limb1: 0xb242bf8e96f06a9a4c4be58e, - limb2: 0x631fe51cab98df5b, + limb0: 0xbd1ff91cbe89d73428180c67, + limb1: 0xee6f3a644af1d4ebd23e2dd4, + limb2: 0x1f966f3046ce6b22, limb3: 0x0 }, u384 { - limb0: 0x232f8c94ad29b4f3fd471e24, - limb1: 0x805c7d19faf826dd38b4750f, - limb2: 0xfcd1b2050117024e, + limb0: 0x44067abc9cac0bc6b850152e, + limb1: 0xfa051c27e814027364181970, + limb2: 0xf1bbb5a262bff87f, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -30234,126 +30203,126 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x8bb13aa1d25f38c2a19f92fe, - limb1: 0xb2be66dc6f7f2f4b96b43165, - limb2: 0xf4c79eb1233446f5, + limb0: 0x792c3d1c05fd51590384ef69, + limb1: 0x5e30a47163dbc82e0ffda4bb, + limb2: 0x76ed333a36475a44, limb3: 0x0 }, u384 { - limb0: 0xa418ba4cc4faab109344da73, - limb1: 0xa91521bf40661826b30b5649, - limb2: 0x52b738ad6b58e3ef, + limb0: 0x966fb15e524605475580b99f, + limb1: 0x230635be33cb69c24ec71020, + limb2: 0xbd77fa77f8bd3801, limb3: 0x0 }, u384 { - limb0: 0x79b7beef20f480944c0bf763, - limb1: 0x74d1eabbb9398487495179c, - limb2: 0xe5bb14b9a222bf2a, + limb0: 0x224a252e25545a61803babd8, + limb1: 0x94949405f24672a009c1eab1, + limb2: 0x3d0284cb95897c3b, limb3: 0x0 }, u384 { - limb0: 0x5e4874ea030cdcab370a9e32, - limb1: 0x18551e06a55fcad452ec3006, - limb2: 0x6decd7c835400398, + limb0: 0x5e280b251d86fa1181ec5618, + limb1: 0x279cc75f64f44c88397485c7, + limb2: 0x7f6d5e44de1190b1, limb3: 0x0 }, u384 { - limb0: 0x3438b3134bd8507e9ad04e88, - limb1: 0xb958fc8a5c7a47ef6df3afcc, - limb2: 0xa97c75ea4a55dcdb, + limb0: 0x57e79d09a7a12e4082cce323, + limb1: 0xa9d68e44e1a1963c41119564, + limb2: 0x13a512d7d3aa73e5, limb3: 0x0 }, u384 { - limb0: 0x1f1559dfa35204a1821b587f, - limb1: 0x1a1ef25e63a3c0813ea58659, - limb2: 0xeb436e5326152e5a, + limb0: 0x6956c2a61ddf7e583d193d23, + limb1: 0x68047a0cf3d0fafdd4950620, + limb2: 0x3afa3da8484671df, limb3: 0x0 }, u384 { - limb0: 0xca35285b59dba05d0cb40712, - limb1: 0x29c74d726755dbda424af49e, - limb2: 0x9c2323ed08e982ca, + limb0: 0xc6ec6e001f79f50cb1c7875b, + limb1: 0xd5dd015473cdecc06bfb666b, + limb2: 0xb39aed21cea198da, limb3: 0x0 }, u384 { - limb0: 0x4376b6422219abcfd14a5fdc, - limb1: 0xa95102385bc78ec37748eb7a, - limb2: 0xf35b8f51112a4579, + limb0: 0xba12d5357ac0147e7b0ab5c6, + limb1: 0x42b76e01c6cb985ed1c92b74, + limb2: 0x27de3d4432b353f8, limb3: 0x0 }, u384 { - limb0: 0xcfdee48788c958360ef42ef6, - limb1: 0x97dff7599143424242fff147, - limb2: 0x598f8a0c82fd570c, + limb0: 0x89a1394b649960e748e74cd9, + limb1: 0xa6b219e6d93054c0eb9326b8, + limb2: 0x9f714d4bab0dbcd5, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x64c0483f10687dc8ed5f82d1, - limb1: 0x775bf7c39ece058e7574cfe4, - limb2: 0x4817f4fcae3b7416, + limb0: 0x8433d7da1433e032adb0131c, + limb1: 0x1d8032b38b8200a218657e16, + limb2: 0x3c0e8c61665543ed, limb3: 0x0 }, u384 { - limb0: 0x4026ab5266dd462802892afd, - limb1: 0x19930fae1c20489bd37cfe19, - limb2: 0xc0d4d4e3eaf69669, + limb0: 0x2f69ba0a1da6e283d07c26fb, + limb1: 0x53ff154d52c6d4764cedc7c2, + limb2: 0x9c400a6c1a0adda7, limb3: 0x0 }, u384 { - limb0: 0x25f8a69bf69931964fa3f068, - limb1: 0x80ba0a4d7c2af7a4fbcd0992, - limb2: 0x9ec5bbcac04ebf26, + limb0: 0x9881464d91e56aecf7bc1d9e, + limb1: 0xedada25814783942949463a7, + limb2: 0x45c9c0315302a733, limb3: 0x0 }, u384 { - limb0: 0x308d23a32956859a7a0a476d, - limb1: 0xe619dc3745e4b4db4d8318b0, - limb2: 0x1a6329ce3bf50980, + limb0: 0x8ab498f1954f22010a8fc25c, + limb1: 0x17799fe876aca90572bcee95, + limb2: 0x8e46a9ee0063fa61, limb3: 0x0 }, u384 { - limb0: 0xd0580e541f149507c840d0ee, - limb1: 0x6ac4eea28c9b50aa93c62e06, - limb2: 0x9e19e70673243fc7, + limb0: 0xd16ab8d72ae2ea49306453ad, + limb1: 0xc3a6a4f06ef0de979890f422, + limb2: 0x163074c19aa380e8, limb3: 0x0 }, u384 { - limb0: 0xb8959a37cc1a6e1a1e75f102, - limb1: 0x3308a376a4f9e463c54cfe39, - limb2: 0x2c3cc15ceb53bd85, + limb0: 0x56d52a5c2c3caec8a848754d, + limb1: 0xc7ae5869c0433ed1ab467483, + limb2: 0x38f74b12eddb3da9, limb3: 0x0 }, u384 { - limb0: 0xe63f7ca69547fec7037a1aed, - limb1: 0x1511021a4d6b0a05cf100fb, - limb2: 0x2c807c26c06aafbd, + limb0: 0x17d6fd325bb479ab1dffb430, + limb1: 0x82e8c9f8baa9e173ca11311b, + limb2: 0x14b948cd4f39008e, limb3: 0x0 }, u384 { - limb0: 0xfb24e5dc1bf118d9ef95d478, - limb1: 0x1a18dbeaef6e79e48f59abc7, - limb2: 0xcf5b08c53100e2a2, + limb0: 0x57d66f03047cc0ca636b8106, + limb1: 0x644d8324dbc8db2204c5fc5f, + limb2: 0xbed7196cfe3ea95d, limb3: 0x0 }, u384 { - limb0: 0x46d6a59d56618384e0bbdb62, - limb1: 0x4dec16f39b74ec1dbb4355b9, - limb2: 0x893be6a4ec3b9010, + limb0: 0x179981a10adf103673c5ed26, + limb1: 0x946f1ff2ef4fb599a44c8742, + limb2: 0x682bec363dcfe2ed, limb3: 0x0 }, u384 { - limb0: 0xed6f991a94232af5c06cd15f, - limb1: 0xb242bf8e96f06a9a4c4be58e, - limb2: 0x631fe51cab98df5b, + limb0: 0xbd1ff91cbe89d73428180c64, + limb1: 0xee6f3a644af1d4ebd23e2dd4, + limb2: 0x1f966f3046ce6b22, limb3: 0x0 }, u384 { - limb0: 0x232f8c94ad29b4f3fd471e24, - limb1: 0x805c7d19faf826dd38b4750f, - limb2: 0xfcd1b2050117024e, + limb0: 0x44067abc9cac0bc6b850152e, + limb1: 0xfa051c27e814027364181970, + limb2: 0xf1bbb5a262bff87f, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -30363,9 +30332,9 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0x9b6d8cf383c1ad3fc22c0497, - limb1: 0x312aa1cff1e5cda81d4f8bea, - limb2: 0x9163bedef3b25084, + limb0: 0xfa50c6a08e754a2d4551a8d, + limb1: 0x1b780fa1bb8243f218d4f5ed, + limb2: 0xc2dede582165e57e, limb3: 0x0 }, u384 { @@ -30378,15 +30347,15 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0x41afe82d10eea1ab214b3c03, - limb1: 0xac0d7efc9a49fb57ca21302b, - limb2: 0x6ec28075a80ddc0d, + limb0: 0xbcfcdb678484a689c07c5f02, + limb1: 0x272139e7f3cece767da2093b, + limb2: 0x9b5add11a1312377, limb3: 0x0 }, u384 { - limb0: 0x604ea13aa355840cd64bcea5, - limb1: 0x6a9e666c154e836a14c9ee9a, - limb2: 0x4dea39ad69120c21, + limb0: 0x34db3df1de675c7fad8f8900, + limb1: 0x5633f0d16f0af9b6947aa7b7, + limb2: 0x1f9ba0318be17c36, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -30394,54 +30363,54 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x21e7006b5d0153f8d94c949f, - limb1: 0x35335f288fdfbebc6334a2c5, - limb2: 0x234f248bc9e74a8e, + limb0: 0x1e56b4aea79abe64824200ff, + limb1: 0xae3323a65e97bb2501e95b80, + limb2: 0x78de8206a0e07640, limb3: 0x0 }, u384 { - limb0: 0xa60f2e9729d0d5a2a3efe442, - limb1: 0x5e24cd3c2ea29736b3bbf8ed, - limb2: 0x4472028ac4a3c448, + limb0: 0x77559ed62e8d1545a8361024, + limb1: 0x32d4ca8be360ac29eb6df1ca, + limb2: 0x7a34bdcc75b475fb, limb3: 0x0 }, u384 { - limb0: 0xd370621549d944ebc3f6fd3a, - limb1: 0xef003c58f1d42d6c031df2d3, - limb2: 0x45c5ab40561b9a68, + limb0: 0x289a10e53354b90a496272b9, + limb1: 0x4eb5c75effce5b96128f57ef, + limb2: 0x8ed735807d2990f5, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x64e11887f7f0f847e384fd7b, - limb1: 0xa4bb008eee7e625fba3223be, - limb2: 0x80a2df3049350885, + limb0: 0x996c9f3732f12dfbd968b791, + limb1: 0x2dd42a7a0ecf492a23fb60cd, + limb2: 0xc210d4433b4d4055, limb3: 0x0 }, u384 { - limb0: 0xd24649fce333b905f2d9612e, - limb1: 0x20956e5876d3f83cdb678cc7, - limb2: 0x10092989577eb21e, + limb0: 0xd2318f1c1dfddcfc16a2f39, + limb1: 0x5360b9fb16fdd0764d837c24, + limb2: 0x5cfb577a3d7f183d, limb3: 0x0 }, u384 { - limb0: 0xab67cd4651cdb017a4eef45b, - limb1: 0x74108a1136acfc7e26bf3ae2, - limb2: 0x710788cf6f046f84, + limb0: 0x2dc1f720a09826bf1f23c54a, + limb1: 0xb14feae129779998a7ad0f8c, + limb2: 0xfbf3554306961f45, limb3: 0x0 }, u384 { - limb0: 0x41afe82d10eea1ab214b3c00, - limb1: 0xac0d7efc9a49fb57ca21302b, - limb2: 0x6ec28075a80ddc0d, + limb0: 0xbcfcdb678484a689c07c5eff, + limb1: 0x272139e7f3cece767da2093b, + limb2: 0x9b5add11a1312377, limb3: 0x0 }, u384 { - limb0: 0x604ea13aa355840cd64bcea5, - limb1: 0x6a9e666c154e836a14c9ee9a, - limb2: 0x4dea39ad69120c21, + limb0: 0x34db3df1de675c7fad8f8900, + limb1: 0x5633f0d16f0af9b6947aa7b7, + limb2: 0x1f9ba0318be17c36, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -30451,16 +30420,16 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0x1bdfe4e97e0e97544e615f58, - limb1: 0x29253b9be7788feef939a700, - limb2: 0x17e05cd43695f415, + limb0: 0xe7690776a2cf9939cfc8f972, + limb1: 0xa4667db1b46eedfea37fa0f, + limb2: 0x6d207440d4c41d6d, limb3: 0x0 }, g_rhs_sqrt: array![ u384 { - limb0: 0x61cfd3d94aef7fc27ad88a6f, - limb1: 0xec69789b77cee933dd8fe37b, - limb2: 0x1f06ea0a786087e5, + limb0: 0x4181cc6876b01e06178c2a6a, + limb1: 0x411b2a9c08b89992d85ec9e4, + limb2: 0x39ec2681311eadf0, limb3: 0x0 } ], @@ -30471,15 +30440,15 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0x82177d65f1c5ceb519d6463b, - limb1: 0x872fe0f43b38a86025b400b0, - limb2: 0x5d3270afba73007c, + limb0: 0xd167b9b0a71fbbbc45734785, + limb1: 0x749035c432a1cfb56178f52c, + limb2: 0x77207a31e6c9cd5a, limb3: 0x0 }, y: u384 { - limb0: 0xffd12e343f114700a1c1bc17, - limb1: 0x389f956482fea36365f6661f, - limb2: 0xad978c73209d4234, + limb0: 0xf75c0717afc8e51476a3365e, + limb1: 0x9dbeff97cc0810aab5203301, + limb2: 0x2930b500d289b2d9, limb3: 0x0 } } @@ -30492,113 +30461,113 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0x426140ff1bc9578fe3bf2087, - limb1: 0x3627d900dd42c2b83c3f8a22, - limb2: 0x12d52f20dd6752cc, + limb0: 0x113c8d620e3745e45e4389b8, + limb1: 0x85b8ff52d905fd02fe191c3f, + limb2: 0xf5d132d685201517, limb3: 0x0 }, y: u384 { - limb0: 0x2f6940ed46d679eacb68b095, - limb1: 0xefccb7e0a5ccfc91f7b46bc2, - limb2: 0xf239982104aee064, + limb0: 0x60c0ba1b358f375b2362662e, + limb1: 0x6abfc829d93e09aa5174ec04, + limb2: 0x7bc4637aca93cb5a, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xfbc1dce2cefd1b215f00e6bc, - limb1: 0xfaceb25c6763d2a863dbe0b5, - limb2: 0xf01cbf83d40abb76, + limb0: 0xd3ff147ff0ee4213f51f677d, + limb1: 0x431366a7732a6e4a6b942255, + limb2: 0x9fe743b25d39a591, limb3: 0x0 }, y: u384 { - limb0: 0xf1676fa4786e709c5ea98f5c, - limb1: 0x8ebc6304d425e2ff7c69b995, - limb2: 0x5961e86044c88e4c, + limb0: 0x7f8bb562ff60a902ef14bcb0, + limb1: 0xeb9420089fa531db62e806a6, + limb2: 0xfd028df433dfd5cc, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x78aab643ef8cbb788c3700d2, - limb1: 0x89a85fa748bf6c086d482d3f, - limb2: 0x4401de1d8b9443d9, + limb0: 0x46ae31f6fc294ad0814552b6, + limb1: 0x2d54cc811efaf988efb3de23, + limb2: 0x2a2cc02b8f0c419f, limb3: 0x0 }, y: u384 { - limb0: 0xf085f2afd09dd51ccb3caeb2, - limb1: 0x734297fc86163e8af554db5, - limb2: 0x962a694eeb8049ae, + limb0: 0xaec889b9d8ce51c4a2c3586f, + limb1: 0xa2b07874c333bfee9f78e13e, + limb2: 0xc445de21be8d8709, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x76a645e2f0c2e5af8fc562e4, - limb1: 0x6e0d5fb376c1fa2fbb786644, - limb2: 0xfd1e6101ffe24e5, + limb0: 0x7e47d1c2d19c21b2f6870259, + limb1: 0xe701b40af42001c38bca00db, + limb2: 0xd87ea1720d4dd3d6, limb3: 0x0 }, y: u384 { - limb0: 0x2742a9ee4385873d4e5cfd15, - limb1: 0x2c3199512785c6be9990c906, - limb2: 0x9663a828fe487576, + limb0: 0x5b1d6cc74985ce49a1f737fe, + limb1: 0xb9127c572c3f091c031c249c, + limb2: 0x1392711e1576aa6f, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x46bec8961149d45c0750c894, - limb1: 0x56d78278bad7c6b734c8a80d, - limb2: 0xfb50d9c98bc9643b, + limb0: 0xb71f95ea692ed186e06e4c37, + limb1: 0x807276cd9cc59718bb11dbe9, + limb2: 0x10756a25836d67ca, limb3: 0x0 }, y: u384 { - limb0: 0xf581e7364be2773f611f4a44, - limb1: 0x3aefc6bb64dea532bac05c7a, - limb2: 0xeea99b6ca43951fa, + limb0: 0xd34211b3520c83c5f9be99af, + limb1: 0x8f19a28ceef67bbda102ffe7, + limb2: 0x7ac2b92030d351cc, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x8d3a4fb3a176be18c1c3a511, - limb1: 0xa568d41cbe54fa84fb960f34, - limb2: 0x4f1641d38fe24400, + limb0: 0x411bb5d0fbe844f025c7178c, + limb1: 0xcf603787227b7ac499d6d1c4, + limb2: 0x5f6b2479862eb2f8, limb3: 0x0 }, y: u384 { - limb0: 0xe7004e3e6bd1b47e4dfb3e2b, - limb1: 0x169c857e99ee62f296f50489, - limb2: 0x704f801c672a0670, + limb0: 0xce60303cfcb98726ff64a1e5, + limb1: 0xa64534c614754b3527588d25, + limb2: 0x44f75e245622181, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x4a5b9889db4066a03c656aaf, - limb1: 0x842003de68a0b826da4ca999, - limb2: 0x79b668fc77275ee7, + limb0: 0x8a703177da18d4ede707c057, + limb1: 0x7d6c11e754ab6fbe73deea43, + limb2: 0xdf9787168190a047, limb3: 0x0 }, y: u384 { - limb0: 0xd43c5897e153d6ef410b990e, - limb1: 0xfff38978c2df44bbc210ac47, - limb2: 0xbc19462a00e51bea, + limb0: 0x2e6585ab5f125a34fef37875, + limb1: 0xb70e9f02ce7744197172a117, + limb2: 0x60e305f9fe6f2298, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x5016fcc0d636f98e940ccc1b, - limb1: 0xafc25f42feab2f4af880e475, - limb2: 0x1298eca447bd9983, + limb0: 0x712f72f3929408ff68af059d, + limb1: 0x4f72cea12cd115dc1c8639f5, + limb2: 0xc6d5ae1b897ffe77, limb3: 0x0 }, y: u384 { - limb0: 0x624bc8c898ee991b442994db, - limb1: 0x76535bd78b5c48e880ea02b4, - limb2: 0xb8d260ff2b04b802, + limb0: 0xfcf91f56bad0659142668837, + limb1: 0xa15458b49bcdad6c870e3889, + limb2: 0x81a1342e70b1b765, limb3: 0x0 } }, @@ -30606,28 +30575,28 @@ mod msm_tests { .span(); let scalars = array![ u256 { - low: 0x802f9492f37ab4d5b472435cac0b128e, high: 0xf20585bb89c3e1890030b342338950b7 + low: 0xeb2083e6ce164dba0ff18e0242af9fc3, high: 0x17e0aa3c03983ca8ea7e9d498c778ea6 }, u256 { - low: 0x7105c7b312b0014e8681bd047ccffd3a, high: 0x3e631d753f50a840828886254ed2924 + low: 0xb5d32b1666194cb1d71037d1b83e90ec, high: 0xa0116be5ab0c1681c8f8e3d0d3290a4c }, u256 { - low: 0x8a1ff6fb82576427e33b38a369d4eef3, high: 0xb2b687b177c12c9643a2b0f802369365 + low: 0xd3fbf47a7e5b1e7f9ca5499d004ae545, high: 0xbaf3897a3e70f16a55485822de1b372a }, u256 { - low: 0xcdafd586debbea182914e3655bd5f9f2, high: 0x7010552f190e358453b3f2895edacdfd + low: 0x101fbcccded733e8b421eaeb534097ca, high: 0x38c1962e9148624feac1c14f30e9c5cc }, u256 { - low: 0xdaa45d87e9cdc10e0f4e73e4dddcb30b, high: 0x6c83f2ca002ceaa5cbf918d18ba49abe + low: 0x247a8333f7b0b7d2cda8056c3d15eef7, high: 0x1759edc372ae22448b0163c1cd9d2b7d }, u256 { - low: 0x8b2fc414592eaa92287101421c8551c6, high: 0xb07554659df86006ad010e8344e89f0f + low: 0xe005b86051ef1922fe43c49e149818d1, high: 0x7d41e602eece328bff7b118e820865d6 }, u256 { - low: 0x842b58d0d68b8c85c45f174c735bfab6, high: 0x325a81c9640cc91eb9b607e7b0b4b297 + low: 0x4a84eb038d1fd9b74d2b9deb1beb3711, high: 0x552f233a8c25166a1ff39849b4e1357d }, u256 { - low: 0x67209a4b1a97593b41c8a9dbb064014c, high: 0xfb10895a282791593fb0d4360e653f1d + low: 0x3405095c8a5006c1ec188efbd080e66e, high: 0x8c1745a79a6a5f92cca74147f6be1f72 }, ] .span(); @@ -30635,170 +30604,169 @@ mod msm_tests { array![ ( array![ - 0x1, - 0x1, - 0x1, - 0x1, - 0x0, -0x1, 0x1, -0x1, - 0x0, - -0x1, 0x1, - 0x0, -0x1, 0x0, - 0x1, - -0x1, - 0x1, - 0x0, - 0x0, 0x0, -0x1, -0x1, -0x1, + 0x1, + 0x0, 0x0, -0x1, -0x1, 0x1, - -0x1, - -0x1, + 0x1, + 0x1, -0x1, 0x1, -0x1, 0x1, - 0x0, 0x1, - 0x0, - 0x0, -0x1, 0x0, 0x1, 0x0, 0x0, - 0x1, -0x1, 0x0, - 0x0, - 0x1, -0x1, -0x1, 0x1, 0x0, - -0x1, 0x1, 0x1, + -0x1, 0x1, + 0x0, -0x1, + -0x1, + -0x1, + -0x1, + -0x1, + -0x1, + 0x0, + 0x0, + 0x0, + 0x0, 0x0, 0x1, + -0x1, 0x1, 0x0, + -0x1, + 0x0, + 0x0, 0x1, 0x0, - -0x1, + 0x0, + 0x1, 0x1, -0x1, + -0x1, 0x1, 0x1, + 0x0, -0x1, 0x0, -0x1, + 0x0, + 0x0, + 0x1, -0x1, -0x1, - 0x0, -0x1, 0x0, - -0x1, 0x0, - -0x1, 0x1, 0x0, - 0x1, + -0x1, + -0x1, ] .span(), array![ 0x1, -0x1, - -0x1, + 0x1, -0x1, 0x0, + -0x1, 0x0, - 0x1, -0x1, + 0x0, -0x1, + 0x0, -0x1, 0x1, 0x0, - 0x1, - -0x1, 0x0, - 0x1, - 0x1, - 0x1, 0x0, 0x1, 0x0, - 0x0, 0x1, - -0x1, - -0x1, 0x1, 0x0, -0x1, 0x1, - 0x1, -0x1, 0x0, - -0x1, 0x1, -0x1, 0x0, + 0x0, 0x1, + -0x1, 0x0, 0x1, + -0x1, + -0x1, 0x1, 0x0, 0x0, + -0x1, 0x0, - 0x1, - 0x1, - 0x1, - 0x1, + -0x1, 0x0, -0x1, -0x1, + 0x1, + 0x0, + 0x1, -0x1, -0x1, 0x0, - -0x1, 0x0, + 0x1, -0x1, + -0x1, + 0x0, 0x0, 0x1, 0x1, -0x1, 0x1, - 0x1, - 0x1, -0x1, - 0x0, -0x1, 0x0, 0x1, -0x1, + 0x0, + -0x1, 0x1, -0x1, - 0x0, - 0x0, 0x1, - 0x0, -0x1, + 0x0, -0x1, 0x1, + 0x1, -0x1, -0x1, + 0x0, -0x1, -0x1, ] @@ -30806,6 +30774,10 @@ mod msm_tests { ), ( array![ + -0x1, + -0x1, + 0x0, + -0x1, 0x1, 0x0, 0x0, @@ -30813,117 +30785,116 @@ mod msm_tests { 0x1, 0x1, 0x1, - -0x1, - 0x1, - -0x1, - 0x1, - 0x0, 0x0, 0x1, 0x0, + 0x1, 0x0, - 0x0, - -0x1, + 0x1, -0x1, + 0x1, -0x1, + 0x0, -0x1, 0x1, 0x1, - 0x0, - -0x1, 0x1, 0x0, - 0x0, + 0x1, + -0x1, -0x1, 0x0, 0x1, 0x1, - 0x0, - -0x1, - 0x1, - 0x0, - 0x0, 0x1, -0x1, -0x1, 0x0, + 0x0, + 0x1, 0x1, -0x1, - 0x0, -0x1, + -0x1, + 0x1, 0x0, -0x1, -0x1, - 0x0, - 0x1, 0x1, 0x0, - 0x0, -0x1, 0x1, 0x1, - 0x1, - 0x1, - -0x1, - -0x1, -0x1, 0x1, 0x0, + -0x1, + 0x0, 0x1, -0x1, 0x0, -0x1, + 0x0, -0x1, 0x0, + 0x1, -0x1, -0x1, + 0x0, + -0x1, + 0x1, + 0x1, 0x1, 0x0, 0x0, 0x0, - -0x1, 0x1, + -0x1, 0x0, - 0x0, + 0x1, 0x0, 0x1, + -0x1, + -0x1, ] .span(), array![ - 0x0, - -0x1, 0x1, 0x1, -0x1, - 0x0, + 0x1, 0x0, 0x1, -0x1, - -0x1, + 0x1, 0x0, -0x1, + -0x1, 0x0, 0x1, - -0x1, + 0x1, 0x0, + 0x1, 0x0, 0x0, 0x1, + 0x1, + -0x1, 0x0, - 0x0, + -0x1, + -0x1, 0x1, 0x0, 0x0, -0x1, 0x0, + -0x1, 0x0, - 0x1, - 0x1, - 0x0, + -0x1, 0x0, 0x1, 0x0, - 0x1, + 0x0, -0x1, 0x0, 0x1, @@ -30931,73 +30902,80 @@ mod msm_tests { 0x0, -0x1, -0x1, - -0x1, 0x1, -0x1, 0x0, - 0x0, - -0x1, + 0x1, + 0x1, 0x0, 0x0, - 0x1, 0x0, - 0x1, - -0x1, -0x1, 0x1, -0x1, - 0x1, - 0x1, - 0x1, - 0x1, 0x0, + 0x0, + -0x1, 0x1, -0x1, -0x1, 0x0, 0x0, - 0x0, + -0x1, 0x0, -0x1, 0x1, 0x1, - 0x0, -0x1, 0x1, -0x1, 0x0, + -0x1, + 0x0, + -0x1, + -0x1, + 0x1, + 0x0, 0x0, + 0x1, -0x1, + 0x1, ] .span() ), ( array![ - 0x0, - 0x1, - 0x0, 0x1, -0x1, -0x1, - 0x0, -0x1, - 0x1, + -0x1, 0x0, 0x0, -0x1, 0x0, + 0x1, + 0x1, + 0x1, -0x1, 0x1, + 0x1, + 0x1, + 0x0, + 0x1, -0x1, 0x1, + -0x1, + -0x1, 0x0, -0x1, + 0x1, 0x0, -0x1, 0x1, 0x1, - 0x0, - 0x0, + 0x1, + -0x1, 0x0, -0x1, -0x1, @@ -31005,138 +30983,133 @@ mod msm_tests { 0x0, 0x1, -0x1, - 0x1, + -0x1, 0x0, - 0x1, -0x1, 0x0, - 0x1, - 0x1, 0x0, 0x0, -0x1, 0x1, -0x1, 0x1, + 0x0, 0x1, - -0x1, 0x0, 0x0, 0x1, - -0x1, - 0x1, - -0x1, - 0x1, - -0x1, + 0x0, 0x1, + 0x0, + 0x0, + 0x0, 0x1, 0x1, + 0x0, + -0x1, -0x1, 0x0, 0x0, 0x0, + 0x1, -0x1, 0x0, + 0x0, + -0x1, 0x1, 0x1, 0x1, 0x1, -0x1, - -0x1, - 0x0, - 0x1, - -0x1, 0x1, 0x0, - 0x1, - -0x1, -0x1, + 0x0, -0x1, -0x1, - 0x1, ] .span(), array![ - -0x1, 0x1, -0x1, - 0x1, 0x0, - 0x1, -0x1, + 0x1, + 0x1, + 0x1, + 0x0, 0x0, 0x0, + 0x1, -0x1, 0x1, - 0x0, -0x1, 0x1, - 0x0, - 0x0, - 0x0, 0x1, 0x0, - -0x1, 0x0, - -0x1, - -0x1, + 0x1, 0x0, - -0x1, + 0x1, + 0x1, -0x1, 0x0, 0x1, -0x1, - -0x1, - -0x1, 0x0, + 0x1, + 0x1, + 0x1, -0x1, - -0x1, - 0x0, - 0x0, 0x1, 0x0, 0x0, - 0x0, - -0x1, - -0x1, -0x1, 0x0, -0x1, 0x1, 0x0, - 0x0, - 0x0, - -0x1, -0x1, 0x0, -0x1, + 0x1, 0x0, 0x1, 0x1, + -0x1, + -0x1, 0x0, 0x1, 0x0, - 0x1, -0x1, -0x1, - 0x1, + 0x0, 0x0, 0x0, -0x1, - 0x1, + -0x1, + -0x1, + -0x1, + -0x1, 0x0, + -0x1, 0x0, -0x1, - 0x1, -0x1, -0x1, 0x1, - -0x1, + 0x1, + 0x0, -0x1, 0x1, + 0x0, + 0x1, -0x1, -0x1, 0x1, + 0x0, + 0x0, + 0x1, -0x1, -0x1, ] @@ -31146,60 +31119,67 @@ mod msm_tests { array![ 0x1, 0x0, - 0x1, -0x1, - 0x0, + -0x1, -0x1, -0x1, 0x1, + -0x1, + -0x1, + -0x1, + -0x1, 0x1, 0x0, -0x1, + 0x0, + 0x1, -0x1, + 0x0, 0x1, 0x0, + 0x0, 0x1, -0x1, 0x1, - -0x1, - 0x0, 0x0, + 0x1, -0x1, -0x1, - 0x1, -0x1, -0x1, + 0x0, + 0x1, -0x1, + 0x0, -0x1, -0x1, -0x1, -0x1, -0x1, - 0x0, - 0x0, - 0x0, + 0x1, -0x1, + 0x0, 0x1, 0x1, -0x1, 0x0, - 0x1, 0x0, -0x1, - 0x0, + 0x1, + -0x1, + 0x1, -0x1, -0x1, 0x1, -0x1, + -0x1, 0x0, + -0x1, + -0x1, 0x0, - 0x1, - 0x1, - 0x1, + -0x1, 0x1, 0x0, - -0x1, - -0x1, 0x1, 0x0, 0x1, @@ -31208,75 +31188,70 @@ mod msm_tests { -0x1, -0x1, 0x0, - 0x1, - 0x0, -0x1, - -0x1, - 0x0, - 0x0, - 0x0, 0x0, 0x1, - -0x1, 0x1, 0x1, + 0x0, + -0x1, + 0x1, + ] + .span(), + array![ 0x0, 0x1, + 0x0, + -0x1, -0x1, 0x0, -0x1, -0x1, - ] - .span(), - array![ + -0x1, -0x1, -0x1, 0x0, 0x0, 0x1, - -0x1, - 0x1, - 0x1, 0x1, 0x0, 0x1, 0x1, + 0x1, -0x1, - -0x1, - 0x0, + 0x1, 0x0, 0x0, - -0x1, - -0x1, 0x0, - -0x1, - 0x1, 0x1, -0x1, - 0x0, - 0x0, -0x1, - 0x0, 0x1, + -0x1, 0x1, 0x0, -0x1, - 0x0, - 0x1, -0x1, + 0x1, 0x0, -0x1, 0x1, - 0x0, + 0x1, + 0x1, -0x1, 0x0, - -0x1, + 0x0, + 0x1, 0x0, 0x0, 0x0, -0x1, + 0x1, 0x0, 0x1, + 0x1, + -0x1, + 0x1, 0x0, -0x1, -0x1, @@ -31285,275 +31260,264 @@ mod msm_tests { 0x1, 0x1, 0x1, + -0x1, + -0x1, + 0x0, + 0x1, 0x0, + -0x1, 0x1, 0x1, 0x1, - 0x0, 0x1, 0x1, 0x1, - -0x1, - -0x1, 0x0, 0x0, -0x1, -0x1, - 0x0, - 0x0, - 0x0, - 0x1, - 0x0, 0x1, + -0x1, 0x1, - 0x0, - 0x0, - 0x0, 0x1, ] .span() ), ( array![ - 0x0, - -0x1, - 0x0, - -0x1, - -0x1, + 0x1, 0x1, -0x1, -0x1, 0x0, + 0x0, 0x1, 0x0, -0x1, - 0x0, - 0x0, - 0x0, -0x1, 0x1, 0x1, 0x0, 0x1, - 0x0, - -0x1, 0x1, + -0x1, 0x1, 0x0, -0x1, + -0x1, + -0x1, 0x1, + -0x1, 0x1, - 0x0, - 0x1, + -0x1, 0x1, 0x0, - -0x1, 0x0, -0x1, - -0x1, 0x0, - -0x1, + 0x0, 0x0, 0x1, -0x1, - 0x1, 0x0, - -0x1, - -0x1, 0x0, -0x1, + 0x1, 0x0, 0x1, 0x1, - 0x0, 0x1, -0x1, - -0x1, + 0x0, 0x1, - -0x1, 0x1, -0x1, -0x1, - 0x1, -0x1, -0x1, - 0x1, - 0x1, -0x1, -0x1, + 0x0, + 0x0, -0x1, 0x1, -0x1, 0x1, - 0x1, -0x1, 0x0, -0x1, + 0x0, + 0x1, + 0x1, + 0x1, -0x1, -0x1, 0x0, - 0x1, + -0x1, 0x0, 0x0, -0x1, - -0x1, - ] - .span(), - array![ - 0x1, - 0x1, - 0x1, - 0x0, 0x1, 0x0, -0x1, 0x1, 0x0, 0x0, - -0x1, - -0x1, 0x0, -0x1, + ] + .span(), + array![ + 0x0, 0x0, 0x0, 0x0, 0x0, -0x1, 0x1, - -0x1, - -0x1, 0x0, 0x1, - 0x1, + 0x0, 0x0, 0x1, 0x1, 0x1, - 0x0, + 0x1, -0x1, 0x0, + 0x0, -0x1, -0x1, - -0x1, + 0x0, 0x0, 0x1, 0x1, + 0x0, -0x1, + 0x0, 0x1, 0x1, - 0x1, + -0x1, -0x1, 0x1, - 0x0, -0x1, - 0x0, -0x1, + 0x1, 0x0, 0x1, 0x1, - 0x0, 0x1, + -0x1, 0x0, 0x1, 0x0, 0x0, 0x1, + -0x1, + 0x1, 0x0, + -0x1, 0x1, -0x1, + -0x1, 0x1, + -0x1, + -0x1, 0x0, 0x1, + -0x1, + -0x1, 0x0, - 0x0, - 0x0, + -0x1, 0x1, 0x0, - 0x0, + -0x1, 0x0, 0x1, - 0x1, + -0x1, -0x1, 0x0, 0x0, 0x1, 0x1, + 0x1, 0x0, 0x0, - 0x1, + 0x0, + -0x1, + 0x0, + -0x1, + -0x1, ] .span() ), ( array![ + 0x0, + 0x0, 0x1, -0x1, + 0x0, 0x1, -0x1, 0x0, - 0x1, - 0x1, 0x0, - -0x1, + 0x0, 0x1, 0x0, -0x1, + -0x1, 0x1, 0x1, - -0x1, - -0x1, - 0x0, - -0x1, 0x0, 0x1, - -0x1, 0x1, + 0x0, 0x1, -0x1, - 0x0, -0x1, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, -0x1, - 0x1, -0x1, - 0x1, -0x1, - 0x1, + 0x0, + 0x0, 0x0, -0x1, - -0x1, + 0x0, 0x1, 0x0, 0x0, 0x0, -0x1, - -0x1, 0x1, 0x1, - -0x1, - -0x1, - 0x0, 0x0, 0x1, - -0x1, - -0x1, - 0x1, 0x1, + -0x1, + 0x0, 0x1, 0x0, -0x1, 0x0, - 0x0, 0x1, -0x1, - 0x1, - 0x1, + -0x1, 0x0, - 0x1, 0x0, 0x0, - -0x1, + 0x1, + 0x1, -0x1, 0x0, + 0x1, + 0x1, + 0x1, 0x0, 0x0, 0x0, @@ -31561,128 +31525,127 @@ mod msm_tests { 0x1, -0x1, 0x0, + 0x0, + 0x1, -0x1, -0x1, + 0x1, + 0x0, + 0x0, + 0x0, -0x1, -0x1, - -0x1, - 0x1, ] .span(), array![ - -0x1, -0x1, 0x0, - 0x1, + 0x0, + -0x1, -0x1, - 0x1, - 0x1, 0x1, 0x0, - 0x0, - 0x1, + -0x1, 0x0, 0x0, 0x0, -0x1, - 0x0, - 0x1, -0x1, 0x1, 0x0, - -0x1, - 0x0, 0x0, 0x1, 0x1, 0x0, - -0x1, - 0x1, - 0x1, 0x1, + -0x1, + -0x1, + 0x0, + -0x1, + -0x1, 0x1, + 0x0, + -0x1, 0x1, + -0x1, + -0x1, 0x1, - 0x0, + -0x1, -0x1, 0x1, - 0x0, 0x1, 0x1, 0x0, 0x0, + -0x1, + -0x1, 0x0, + -0x1, + -0x1, + -0x1, 0x0, - 0x1, -0x1, -0x1, 0x1, 0x0, + -0x1, 0x1, 0x1, 0x1, + -0x1, + -0x1, 0x1, 0x1, 0x0, - 0x1, - 0x0, - -0x1, - -0x1, -0x1, 0x0, + 0x0, 0x1, 0x1, -0x1, - 0x0, - 0x1, - 0x0, -0x1, 0x1, 0x1, 0x0, - 0x1, -0x1, 0x1, - 0x1, -0x1, 0x1, 0x0, -0x1, -0x1, 0x1, - -0x1, - -0x1, + 0x0, + 0x1, + 0x0, + 0x1, ] .span() ), ( array![ - 0x1, - 0x1, -0x1, - 0x1, - 0x1, -0x1, 0x0, - 0x1, - 0x1, - 0x1, - -0x1, - -0x1, - -0x1, -0x1, 0x0, + -0x1, 0x1, 0x0, - 0x1, - -0x1, + 0x0, -0x1, 0x1, -0x1, 0x1, + 0x1, + 0x1, + 0x0, 0x0, -0x1, + 0x1, 0x0, + 0x1, + 0x1, 0x0, -0x1, 0x1, @@ -31690,308 +31653,311 @@ mod msm_tests { -0x1, -0x1, 0x1, - -0x1, 0x0, 0x1, 0x1, - 0x1, 0x0, - -0x1, 0x0, -0x1, 0x1, - 0x1, - 0x1, 0x0, - 0x1, - -0x1, 0x0, - 0x1, - 0x1, - 0x1, -0x1, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, 0x1, 0x0, + 0x0, + 0x0, 0x1, 0x1, 0x1, 0x0, -0x1, - -0x1, - 0x0, 0x0, + 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, + -0x1, 0x0, 0x1, - 0x0, - -0x1, 0x1, -0x1, -0x1, - -0x1, 0x0, - 0x1, + -0x1, -0x1, -0x1, 0x1, - ] - .span(), - array![ + 0x1, + -0x1, + 0x1, 0x0, + -0x1, 0x0, 0x0, 0x0, 0x1, 0x1, + ] + .span(), + array![ + 0x1, 0x0, + 0x0, + -0x1, 0x1, 0x1, -0x1, + 0x1, + 0x1, -0x1, 0x0, - 0x0, 0x1, 0x1, 0x1, + -0x1, 0x1, - 0x0, 0x1, 0x1, 0x0, + 0x1, + -0x1, 0x0, 0x0, 0x1, + 0x0, + 0x0, + -0x1, 0x1, + -0x1, + -0x1, + -0x1, + -0x1, 0x0, -0x1, 0x1, + -0x1, 0x1, 0x0, -0x1, - -0x1, + 0x1, 0x0, 0x1, + 0x0, 0x1, 0x1, - 0x0, - -0x1, - -0x1, -0x1, -0x1, -0x1, 0x0, - 0x1, 0x0, -0x1, - 0x1, - 0x1, - 0x1, 0x0, 0x0, 0x1, - 0x1, - 0x1, 0x0, - -0x1, - 0x1, + 0x0, 0x1, -0x1, + 0x1, -0x1, 0x0, + 0x0, + -0x1, 0x1, -0x1, + -0x1, 0x0, 0x0, + -0x1, 0x1, 0x1, 0x0, 0x1, - 0x1, - 0x0, + -0x1, 0x0, - 0x1, 0x0, + -0x1, 0x0, 0x1, 0x1, - 0x0, 0x1, - -0x1, ] .span() ), ( array![ - 0x0, -0x1, - 0x1, - 0x1, - 0x1, - 0x1, - 0x1, - 0x0, -0x1, -0x1, -0x1, -0x1, + 0x1, + -0x1, + -0x1, -0x1, -0x1, - 0x0, - 0x0, - 0x1, -0x1, - 0x1, 0x1, 0x1, -0x1, 0x0, - 0x0, + -0x1, + 0x1, -0x1, 0x1, 0x0, + 0x1, 0x0, + 0x1, -0x1, -0x1, - 0x1, + 0x0, -0x1, 0x0, -0x1, - 0x1, 0x0, - 0x1, + -0x1, 0x0, 0x1, -0x1, 0x1, - -0x1, - 0x0, 0x1, -0x1, - 0x0, - -0x1, -0x1, + 0x1, + 0x0, 0x0, 0x0, 0x0, 0x1, + 0x1, + 0x0, + 0x1, 0x0, 0x1, + 0x0, 0x1, 0x0, 0x0, - -0x1, - -0x1, 0x0, 0x1, 0x1, + 0x1, -0x1, -0x1, -0x1, 0x1, - 0x1, + 0x0, + 0x0, 0x0, 0x1, + -0x1, 0x1, 0x1, - 0x1, + -0x1, 0x1, 0x0, - 0x1, + -0x1, 0x0, 0x0, -0x1, - -0x1, 0x0, + -0x1, + -0x1, 0x1, + -0x1, ] .span(), array![ - 0x1, + -0x1, 0x1, -0x1, - 0x0, -0x1, 0x0, -0x1, - -0x1, 0x0, + 0x1, 0x0, + -0x1, + 0x1, + 0x1, + -0x1, + -0x1, 0x0, + 0x1, 0x0, 0x0, 0x1, 0x1, 0x0, 0x1, - 0x1, - -0x1, - 0x1, -0x1, 0x0, - 0x0, - 0x1, -0x1, -0x1, 0x1, - 0x0, 0x1, - -0x1, + 0x0, 0x1, 0x0, + 0x0, + 0x0, 0x1, - -0x1, 0x1, + 0x0, -0x1, 0x0, 0x0, 0x1, - 0x0, 0x1, - -0x1, - -0x1, + 0x1, + 0x0, 0x1, 0x1, -0x1, 0x0, -0x1, 0x1, - 0x0, + -0x1, + 0x1, + -0x1, 0x1, 0x1, -0x1, 0x1, 0x0, 0x1, + -0x1, + -0x1, + 0x1, 0x1, 0x0, 0x1, 0x0, - -0x1, + 0x1, -0x1, 0x0, - 0x0, -0x1, -0x1, 0x0, - 0x0, - -0x1, 0x1, 0x1, -0x1, - -0x1, 0x0, - -0x1, 0x0, 0x0, -0x1, -0x1, -0x1, - -0x1, - -0x1, + 0x1, ] .span() ), @@ -32001,157 +31967,157 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0xb5acc53a4c7db0f4b5bdcfe8, - limb1: 0x55ab0dd0834e6c796ffde31a, - limb2: 0x6576e863caf9070c, + limb0: 0xbe7efcf3b220ff38f75b89eb, + limb1: 0x2b36130f9fe94958dbf50588, + limb2: 0x9bfdf21d24cd5ba7, limb3: 0x0 }, y: u384 { - limb0: 0xc2e2195da0c81a2d59ffab14, - limb1: 0x4f29c69bdfd64eefe560aab0, - limb2: 0xc87272bc5a423e9c, + limb0: 0x604c621d4de6006a6f86d478, + limb1: 0x4bccdeb70501acd9ae965f87, + limb2: 0x333335a30809fe6f, limb3: 0x0 } }, Q_high: G1Point { x: u384 { - limb0: 0x6539f2f2677ad54f41715ae3, - limb1: 0xe93cee0fff318cf02d31e97f, - limb2: 0xa602971380365377, + limb0: 0xabbb71c2837b6d9b398d1f3f, + limb1: 0x1b942cae84c589b159eae63b, + limb2: 0xa801fc1de28e5438, limb3: 0x0 }, y: u384 { - limb0: 0x4be9eda0e62e98c5d7754005, - limb1: 0xf907b0fa7e475bfa97c19f, - limb2: 0x4fbd99791b3f45d6, + limb0: 0x1e931af64f6facb0f77db2cf, + limb1: 0x36c7f496fd30cc826b6e5061, + limb2: 0xdf06d0a4fb5900e3, limb3: 0x0 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0x47240c7b1dc987a85b1092a7, - limb1: 0xf4e701570aeb2974755f56fe, - limb2: 0x18aef6a854d8971d, + limb0: 0x593201b1d0629f101b800a68, + limb1: 0x15e2548622f8b5d2ef5d790c, + limb2: 0x7d671113aed9d503, limb3: 0x0 }, y: u384 { - limb0: 0x1ac418df23d039e9607c7e7d, - limb1: 0xa0834b37a1b368b0dfc9beb6, - limb2: 0xc3a4cf199e534531, + limb0: 0x3aab7f3b260bbcab6bf3a8fc, + limb1: 0xf264bf9993b241aefff5774f, + limb2: 0xc8b3d349b540dd0c, limb3: 0x0 } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0x66cc0e5e591436115817f7ff, - limb1: 0x864b7233f02f295510714a8f, - limb2: 0x1a01467983e66fad, + limb0: 0xbb752b003d242a1b1bfd0668, + limb1: 0xd1509dea6e0bc238f73d3ded, + limb2: 0x84853f3a88849d0, limb3: 0x0 }, u384 { - limb0: 0x5ccea312721e7ada31159fd, - limb1: 0x1b1dcea533fc1dae72f5648b, - limb2: 0x4c01bf4c1169fef5, + limb0: 0x103a4958eac55e8637337d53, + limb1: 0x1000242643eeb0ab6200746, + limb2: 0x92845f212f8581b2, limb3: 0x0 }, u384 { - limb0: 0x2131e4f8272180a55f73840b, - limb1: 0x42ea64bf1dd3062e6859475b, - limb2: 0xa1c29d34d22cdd7d, + limb0: 0x76ef30351cceb1f36a808b14, + limb1: 0x6faf86709ff8510d42658f78, + limb2: 0x993c3313059f46aa, limb3: 0x0 }, u384 { - limb0: 0xdf36590cdd8ae65ac163d3d0, - limb1: 0xa5125218546bf0a9b25e690d, - limb2: 0x236d14ad84d950b, + limb0: 0xf514b10cacaa8d20d9ecdb49, + limb1: 0x425e0e9aed59d7c63477d0a8, + limb2: 0xc539ca713ea1bbb3, limb3: 0x0 }, u384 { - limb0: 0x3a1e7c7702a663887968c3b2, - limb1: 0x653da622f6d1ee4ca7fb0374, - limb2: 0xf70c63919371526f, + limb0: 0xb83744a8fef9a11ef5b86c0d, + limb1: 0xd85d1563cae676155344321, + limb2: 0x9d310706c341d3a7, limb3: 0x0 }, u384 { - limb0: 0x98037008aaad4153bc544fc1, - limb1: 0x53f6b214a271efb11d9c1514, - limb2: 0x2fd710b147c5b1c1, + limb0: 0xb6ec64069d15c3b9b7a2c585, + limb1: 0xdbcf38aef4f4f67dad8210d5, + limb2: 0x73fa5983699ceac9, limb3: 0x0 }, u384 { - limb0: 0x6244884ac525068309f03118, - limb1: 0x1c87bb58b6463de564b3becc, - limb2: 0x1f4455d12ad8d312, + limb0: 0xa5844ab179b1d3a8a1368e1d, + limb1: 0x8afa31f3b393b3c00065a176, + limb2: 0xa8f51c04e5a1ce24, limb3: 0x0 }, u384 { - limb0: 0x5a746af0ed4d3922e214e565, - limb1: 0x6fd9111c47acffabbababaf9, - limb2: 0x9eeedaa880ece36c, + limb0: 0x25f9083a4d7c3c8146f59ae7, + limb1: 0x3f986253104968ae867b8c90, + limb2: 0x215bfcdf33b0047f, limb3: 0x0 }, u384 { - limb0: 0xa98b84995b7216f4a98390a5, - limb1: 0x80000000000000004ee2d0bc, - limb2: 0x7fffffff80000000, + limb0: 0x10908dc873d96f07cd0b5601, + limb1: 0xfffffffffffffffe44172864, + limb2: 0xffffffff00000000, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0xd0bc25880f32722798f82783, - limb1: 0xf050b0b07cf49431a7ed99db, - limb2: 0x674c68d1a5bb9e18, + limb0: 0xaadfb7920443912731d99b85, + limb1: 0xc5bbc8c6166b6f77fa6da9a, + limb2: 0x11cd22f799bd0efb, limb3: 0x0 }, u384 { - limb0: 0x6f8e26165b9af887bcf6bd2b, - limb1: 0x415e4605dd35de56e7d16c4d, - limb2: 0x3b8f564cb8ab0dfc, + limb0: 0x174b08e3ef6959b7e739202c, + limb1: 0x89b6ce6e24c8a826de0bedc5, + limb2: 0x77616a44b00d2ea0, limb3: 0x0 }, u384 { - limb0: 0x31943316c2be60fc5195d2d4, - limb1: 0x7b9de73025ac2892b993bde7, - limb2: 0xf226e1348ff63c59, + limb0: 0x54e564adba828e12b982799f, + limb1: 0xb2dc104575069a2a85fa3d80, + limb2: 0x19a763926bc80aca, limb3: 0x0 }, u384 { - limb0: 0x32c558244e2910f684cdf461, - limb1: 0x672e576c27a3ade2bd068c1b, - limb2: 0xb39de479d6aa4ae3, + limb0: 0x49ce8986eafc553948f3be79, + limb1: 0xd6647edc77646eb8df6946c8, + limb2: 0x19760d6826ab7933, limb3: 0x0 }, u384 { - limb0: 0x1a769cdf06603aa52c6546d1, - limb1: 0x6bbe0ec7ac4396b04ac61638, - limb2: 0x8e1151079280f013, + limb0: 0x26b97fbf5eddcfbfdaf8b6c8, + limb1: 0xbb1634d1751dd790fd74d597, + limb2: 0x2e0938714c24af9c, limb3: 0x0 }, u384 { - limb0: 0xc0e6f0db779448180491e0d5, - limb1: 0xd8770a78253a895c6f4c0180, - limb2: 0x7f870f3f4ab52fd7, + limb0: 0x5cdb8fcc6d3650763870509a, + limb1: 0xd106dca40ebd08c7f94268f4, + limb2: 0x1a4b959e4bf3d2b3, limb3: 0x0 }, u384 { - limb0: 0x2f65c2fe4662d88b40500fac, - limb1: 0xd4146013ebc4fecbc2700699, - limb2: 0x5cf34e68e93db678, + limb0: 0x276535d48ffc517f82b5a72d, + limb1: 0x5d7088046f59cf08618bf122, + limb2: 0x17b6a927ab76ebd1, limb3: 0x0 }, u384 { - limb0: 0xf9f42aac511c42c79ffb7edd, - limb1: 0xae465a7ff884fa16c5cc6890, - limb2: 0xf8044f7bf1993b55, + limb0: 0x4e47ef5fcdcd84627b79cc64, + limb1: 0xf1c7acafd13b4214daf3b46b, + limb2: 0x3d7e9cb2e5cc6c7, limb3: 0x0 }, u384 { - limb0: 0xae7373288434488e51ff20ac, - limb1: 0x5185edc09810ef3fc3f9d93c, - limb2: 0x6d0cf387fd71e14e, + limb0: 0xa3746d49af3017e6e7890614, + limb1: 0xdaf5778cc00db89559920b02, + limb2: 0xb55071e547d21abd, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -32159,138 +32125,138 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xf6b9fdafeccee0d02bb47664, - limb1: 0xd9c937788cf4352745354bfd, - limb2: 0x4ee17c35f14db982, + limb0: 0x96c54787fbfa3390daccf2, + limb1: 0xa3f82862902abd4545d935fb, + limb2: 0x4dba334bbab5e34a, limb3: 0x0 }, u384 { - limb0: 0xff04b82e8afc841f329ddf56, - limb1: 0x494599bfff4134f4b0ee4b1a, - limb2: 0xe410ccbabed7e25b, + limb0: 0xc6b2635da2ff160c9552066d, + limb1: 0xa389748a31e5b1f0c288e91a, + limb2: 0x19f16516ad30cb9a, limb3: 0x0 }, u384 { - limb0: 0xa1d2c4c429e5428acffaecdd, - limb1: 0x4afc2f127ded2b048e3d6bee, - limb2: 0x98125f7180f48f92, + limb0: 0xafeae6104189ee4a0068b330, + limb1: 0x722ac9692cbde0d31dfd19ad, + limb2: 0x8e786a46c2f91bfa, limb3: 0x0 }, u384 { - limb0: 0xb73f86433543a9f0701b7d49, - limb1: 0x6d868469c55dd303ce35a315, - limb2: 0xabb3f38a9a85a1ba, + limb0: 0xeaf056a006ea1782a69ca043, + limb1: 0x6e39cc6ddfe087e5d4d99721, + limb2: 0xf96d9c2ec7e98d98, limb3: 0x0 }, u384 { - limb0: 0xbb31c33323c66fab173a40d9, - limb1: 0xcd12849159adaa03567c480e, - limb2: 0x9417a53f1d082c58, + limb0: 0xdae9256f824312bd1a1c75fc, + limb1: 0xa30f16a7735b90a00fef93c7, + limb2: 0xa689773d7675efb7, limb3: 0x0 }, u384 { - limb0: 0x4d5910225548f7fc4f5c709d, - limb1: 0xdfb0ca60efd08e437c33ca30, - limb2: 0x23377e480641847, + limb0: 0x614548884dc004d426d77a4c, + limb1: 0xeab40e2ce56586194e3c48e8, + limb2: 0x6c6b3cc5850ffbab, limb3: 0x0 }, u384 { - limb0: 0x3e30033f8fbba7fc4738939b, - limb1: 0xad1eb780c65077ad3423512b, - limb2: 0x15a482f6d9ce5fb4, + limb0: 0x3b39d14e0d72f376f6ed8733, + limb1: 0x80a34503a1b0742a090922cb, + limb2: 0x92347505078da528, limb3: 0x0 }, u384 { - limb0: 0xd22fb0b3b52cc12374e5e9ec, - limb1: 0x34fafc42357dd31178b9775c, - limb2: 0x7d66072454e448, + limb0: 0x3b5aea6b9c5c46810c716660, + limb1: 0x690f07b4cc63a21f3c9ffb10, + limb2: 0x44b9e38ddc4cc0a4, limb3: 0x0 }, u384 { - limb0: 0x9642f893fadf649e52410563, - limb1: 0x9f6661d3a9263d45e90b8981, - limb2: 0x45d4a92d46aef6cb, + limb0: 0x5a96fa5e8659580f686253ab, + limb1: 0x1725edfde1ce5209d888e4e0, + limb2: 0xd60b4aba84a5af84, limb3: 0x0 }, u384 { - limb0: 0xfca744f842f3461e05dd1a57, - limb1: 0x8c7f510d0a0d5a5ce167ebea, - limb2: 0x10d6f607a3889cc3, + limb0: 0xb0ecf273ea8ad1a86c8e9fd8, + limb1: 0xabf28b21c5ada0235d370885, + limb2: 0xf4cbfc5557689f07, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xb3348115e05f7cf2e3943818, - limb1: 0xbecba524e373f5e27aff8cca, - limb2: 0x34f0065f9e6a7f1, + limb0: 0x7da77ac2994412c752f7d524, + limb1: 0xd8a2bcde52d0382a0bc4a8df, + limb2: 0xc0429486fabbb038, limb3: 0x0 }, u384 { - limb0: 0x7439fa7b3e9549d73b6cea1e, - limb1: 0x9acc23c4080ac3aed84b920e, - limb2: 0xea6ed8127e9e7af2, + limb0: 0x951369ed83ed7f6c2a7bc6fa, + limb1: 0x5a653a5f342995b4e931be24, + limb2: 0x9f6e90dab203827e, limb3: 0x0 }, u384 { - limb0: 0x429b2dfda6e722e4b0e76891, - limb1: 0xe053861b9306b1696852d3b8, - limb2: 0x44867538e3203938, + limb0: 0x1eb687b231123ccfcd316d9d, + limb1: 0xb5a1d73541f259b476721113, + limb2: 0x700620291fdf6f99, limb3: 0x0 }, u384 { - limb0: 0xedb8a1c5b0641e4c4fabfef1, - limb1: 0x98386382f3ff25c54d544946, - limb2: 0xb969c6c445b71a29, + limb0: 0x3ecf609475df522b8aa8cdb1, + limb1: 0x34c21b932e8cdb6c6a3afcbc, + limb2: 0x90504e9e81bb3b21, limb3: 0x0 }, u384 { - limb0: 0xfc62f852a11cc6e35267d0a4, - limb1: 0x25ebe8d8bac1957b0ce73f9, - limb2: 0xd90c02faf911058d, + limb0: 0xbd19ca54cfc47a3f11e7c22a, + limb1: 0x85e19a6c9f66e93c4a5d806b, + limb2: 0x60f4341b19a5c07a, limb3: 0x0 }, u384 { - limb0: 0x900674da833713a9f05fa696, - limb1: 0xa45031dea7cd39ee395bb778, - limb2: 0xd6831b4cc9377f0, + limb0: 0x315efee79510dd0d867d1e2c, + limb1: 0x770bb297a87b396fb3735392, + limb2: 0x562d707cf7ff628d, limb3: 0x0 }, u384 { - limb0: 0xb4752f024126d7ba6c2813fa, - limb1: 0xa0e049afb171b6cdaf38064, - limb2: 0xeab7d1969ec3161e, + limb0: 0xfacb1e2acef2bdf599bb8032, + limb1: 0xafaf798d4b4592cbd53f356a, + limb2: 0x7c4886e67d2df1a6, limb3: 0x0 }, u384 { - limb0: 0x80e43aec2c062d334f62eafe, - limb1: 0xdbf8b0f62f978198d2386350, - limb2: 0xcebf3552730151e1, + limb0: 0xedce66de9c077f5c244fa9b, + limb1: 0xe1aa8aa9347bb57b988eb9e6, + limb2: 0x968f4cab1f9ac002, limb3: 0x0 }, u384 { - limb0: 0xeaa58d80b286bb4afc994c5d, - limb1: 0xcd4a492f584443fdc84abac, - limb2: 0xab9992e926592fc, + limb0: 0x1c19943ff7276f0ac1b80e76, + limb1: 0x55d380933515ee5239993afd, + limb2: 0x2fed017c163ed59d, limb3: 0x0 }, u384 { - limb0: 0xf05f1a7af5943b1e72250df2, - limb1: 0x936e54279a2ab7c8db9f8194, - limb2: 0x7092a9a89b22a676, + limb0: 0x95b9eedbe3a4608f3ecf53a, + limb1: 0x807bdeb3a5c92c04b9f2d6cd, + limb2: 0x528b894e7e3b2f81, limb3: 0x0 }, u384 { - limb0: 0xf9f42aac511c42c79ffb7eda, - limb1: 0xae465a7ff884fa16c5cc6890, - limb2: 0xf8044f7bf1993b55, + limb0: 0x4e47ef5fcdcd84627b79cc61, + limb1: 0xf1c7acafd13b4214daf3b46b, + limb2: 0x3d7e9cb2e5cc6c7, limb3: 0x0 }, u384 { - limb0: 0xae7373288434488e51ff20ac, - limb1: 0x5185edc09810ef3fc3f9d93c, - limb2: 0x6d0cf387fd71e14e, + limb0: 0xa3746d49af3017e6e7890614, + limb1: 0xdaf5778cc00db89559920b02, + limb2: 0xb55071e547d21abd, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -32300,56 +32266,56 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0xdd68ef363a2b19104f4421c9, - limb1: 0xc9de5745ada0931d7d86447, - limb2: 0x6cb7b598d897d1ae, + limb0: 0x9dabf1a7923d6018a280c172, + limb1: 0x4104acb5124845f544d6a077, + limb2: 0xdb85673721ac43e4, limb3: 0x0 }, u384 { - limb0: 0x8abb3f8043857855e7acd641, - limb1: 0x299f257bdcee758977d23964, - limb2: 0x69fb16ad61ce52e7, + limb0: 0x2b1380d5f68fb9d31f995e79, + limb1: 0x53b28e7099b9ec66d6691e0, + limb2: 0xb048591ac4b8eedd, limb3: 0x0 }, u384 { - limb0: 0x633a56852fa261ae95ec6326, - limb1: 0xa62b120e3a8d6300135c0f94, - limb2: 0x2b53c8997d32c1cc, + limb0: 0x98b26bb78e2ccfbb1459fffb, + limb1: 0xcae44157a460c8e089da45fb, + limb2: 0x7a3bd5ffa8e8505d, limb3: 0x0 }, u384 { - limb0: 0xdd9a63bf02a11264130d1cd3, - limb1: 0x200a7d63aa8096dae8f616e8, - limb2: 0x3eab77edb60f5f13, + limb0: 0xa734beba8236924ea630485, + limb1: 0x147c7bee4eda39edf253ed84, + limb2: 0xe9ca2574fac92762, limb3: 0x0 }, u384 { - limb0: 0x8f80b861624fca776e2bcb89, - limb1: 0x145a38f878b0b2411740b6c0, - limb2: 0xb4638fbc26a6e857, + limb0: 0x3a2c352473a2676a44ab01f8, + limb1: 0x1f210565074846040774abd0, + limb2: 0xfd720a049ab242fc, limb3: 0x0 }, u384 { - limb0: 0x3245a91ee2ed799eeb103a22, - limb1: 0xf88170db80fd630cad6eaae7, - limb2: 0xa99d57f5d815d2d2, + limb0: 0x7e0f6095fa0fd363a1686c5a, + limb1: 0x25155396be8667625a10404a, + limb2: 0x4fcf2489ad16ff22, limb3: 0x0 }, u384 { - limb0: 0xadf128a1d035ec8ed2119efc, - limb1: 0x4e0e4ae21039178f5016162d, - limb2: 0x70918260a67af206, + limb0: 0x70085a7c745a301a4dfe19c4, + limb1: 0xeaca66579f3cc7513cd57e25, + limb2: 0x3f5db6b412a7d7f, limb3: 0x0 }, u384 { - limb0: 0x49067f6bb62d973623dcaeaf, - limb1: 0x2de834357b0b70714d7e8c93, - limb2: 0xdb35f83566fba50d, + limb0: 0x1cc7efd3c2029f1e89a14ac6, + limb1: 0x1aba3d7b91d017caf2f3243f, + limb2: 0x8236c654d2b9282e, limb3: 0x0 }, u384 { - limb0: 0xe9020edeb339c3a378b8650f, - limb1: 0x7ffffffffffffffe6ac0f9d8, + limb0: 0x8fc29bd7e5528d8dacdf9266, + limb1: 0x80000000000000004f61e9d7, limb2: 0x7fffffff80000000, limb3: 0x0 } @@ -32357,57 +32323,57 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0xeb0183b1df53e8f7df415a7a, - limb1: 0xbb20fff9492faa5984776dde, - limb2: 0x3440e67f93e81a2d, + limb0: 0x6c62b8bc155e52a91986b483, + limb1: 0xb1d6a80ccb1192b58e54fa5e, + limb2: 0x8d75abcf5d904599, limb3: 0x0 }, u384 { - limb0: 0x6862063bf4a3191cb1dbe80e, - limb1: 0x7993ad4c85e4285b55b14eac, - limb2: 0x48d95c63e44a7e2f, + limb0: 0xfef4bf04d4e1412babfb574d, + limb1: 0x94bae3b6300157d8c349f94f, + limb2: 0xbcc67d4f7c5c1b4, limb3: 0x0 }, u384 { - limb0: 0x25527bdd9cb497055da5c48b, - limb1: 0x82896157963a6c6eebb1b802, - limb2: 0x51d59a4a542cc077, + limb0: 0xab8e9d3ab8d6b79efa4e0662, + limb1: 0xa2fdce876e45b17d0702d89a, + limb2: 0x69954d7d5d1e2e19, limb3: 0x0 }, u384 { - limb0: 0x11e652db5b4979ff1a3e2e1, - limb1: 0x93ec4be43275a8c7d30ad434, - limb2: 0xa1b7353d7fb7fa0a, + limb0: 0x7695475b73bc0d2ecdce9744, + limb1: 0xfd20b038b4cd557152080d0, + limb2: 0xb85a67f2545c2fe6, limb3: 0x0 }, u384 { - limb0: 0xf5162c9654a71b28b543f390, - limb1: 0x107797d2abddf5fac4451fba, - limb2: 0x6e669b85ca64a3c7, + limb0: 0x1dfd8ac67eeb6ab4e0598874, + limb1: 0x4cd2f3a63d41d6c56fe2b65, + limb2: 0x72cdef098e6fb473, limb3: 0x0 }, u384 { - limb0: 0x87428ef62fd4883237e74070, - limb1: 0xa4460986aa4b542ae2e0758a, - limb2: 0x5bfeb6d11d93b1e7, + limb0: 0xd38d8f406bac1b82c9d7a4c1, + limb1: 0x4a079a3f9a6f898e5bc8a3ca, + limb2: 0xa7201e1f29df5f74, limb3: 0x0 }, u384 { - limb0: 0x29caf614a56aa18a35242d2e, - limb1: 0x1117c61d31e5492bf0674253, - limb2: 0x6df678c93a9e11a2, + limb0: 0xc16dccd252ce614189edeb27, + limb1: 0x516d68b16b65f08386bf2b49, + limb2: 0x7401afefd8207567, limb3: 0x0 }, u384 { - limb0: 0x9c5fcadbb656ec63510ed39d, - limb1: 0xba042567595ef7794015ecc3, - limb2: 0x6d06d1d07f68462a, + limb0: 0x430a4b7a4b05520fda17fe7b, + limb1: 0xcd59e4f7a401d625870de9b1, + limb2: 0xf96d0967015eb305, limb3: 0x0 }, u384 { - limb0: 0xfee6457069372433c64b95b1, - limb1: 0xbdf40d811c2dcec906c5d2d7, - limb2: 0x2c8144d8483494e2, + limb0: 0xb637f87addd5a984a55770c0, + limb1: 0xea975deddb31783cdb9c2a4f, + limb2: 0xa94c67e48a11222c, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -32415,138 +32381,138 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xa93b252a1dab96c24d9f46ea, - limb1: 0x36c30eea2249f060d7f3c464, - limb2: 0xe2d01cd338c8fbd2, + limb0: 0x81d6076d43511a132e3a0abc, + limb1: 0x86237d45cdc86496560ca681, + limb2: 0xbe21658a548ae796, limb3: 0x0 }, u384 { - limb0: 0xe0092e187ea3c1182e0f2ab7, - limb1: 0xdd885ea26f26da540086f246, - limb2: 0x8c4083ec4077dcd, + limb0: 0xac673b5978020c91f88b09cd, + limb1: 0x3b8ca4936eccdfdfdca43b88, + limb2: 0xfc95d2386ba35854, limb3: 0x0 }, u384 { - limb0: 0xa003798c6c355e2c71b647ca, - limb1: 0xe2e8cdb42d6d7265311a5ea, - limb2: 0xf8843567843ff272, + limb0: 0xbfafe7585292b8959e822c52, + limb1: 0x45e871f6b5f3ab49d2f2b95c, + limb2: 0x16fb9aeec66ab77c, limb3: 0x0 }, u384 { - limb0: 0x757426f9b0fb79298c82ecfa, - limb1: 0x6405360b77b62498e5851f84, - limb2: 0x600c29c7e3d9ea99, + limb0: 0x495d183301c89e79d41129d9, + limb1: 0xbaab75f1bf891bdb8070eac0, + limb2: 0x44e3e0959418de4d, limb3: 0x0 }, u384 { - limb0: 0x605740224136e4d07bddd365, - limb1: 0x2663b20cf7b7ce772299a3c0, - limb2: 0xfb1be0ecdfc7a8fe, + limb0: 0x7cd7a364d96a4dd22b81df7, + limb1: 0x241c5c6a42abbfd9a1774dd0, + limb2: 0xa1da1aadb5923dd5, limb3: 0x0 }, u384 { - limb0: 0x84bf00ef0c11355ea13c6361, - limb1: 0x4a1cb69d25ea0212d0d4b020, - limb2: 0xbcf738211914c4a3, + limb0: 0x74c6197fcdbe47c99a946565, + limb1: 0xc7173b04f967433cdf99e5c0, + limb2: 0x270102892564c3c6, limb3: 0x0 }, u384 { - limb0: 0x7a0bb0d7b40c7d9517bae361, - limb1: 0xa4ee687c1c277c76bcca8975, - limb2: 0xc0c7958d91ad2815, + limb0: 0x41d11b0b0a6ef134d26768cc, + limb1: 0x12e7cf0bc83e218fc388e5e8, + limb2: 0xad42e49eedb2c3e6, limb3: 0x0 }, u384 { - limb0: 0x24cf4e7792a49acffaa27ad8, - limb1: 0x2e1e18a81d28ef7c01ba564d, - limb2: 0x30a6c92b381daed8, + limb0: 0x32f9ecfffaf37d9520aed428, + limb1: 0x68acec8d94cc13cb876be3b3, + limb2: 0xbe990465aa965fbe, limb3: 0x0 }, u384 { - limb0: 0x1c1580d90d68db055d6340e5, - limb1: 0x7af8a0fe2f65d186aa55c017, - limb2: 0x708c5baca34902c6, + limb0: 0x1c1ceed82b864c47a6386cea, + limb1: 0xc09e165b069288251492f2fe, + limb2: 0x62910621b9592e80, limb3: 0x0 }, u384 { - limb0: 0xeb198976f182f1d545bf99f9, - limb1: 0xcbc35d94e980daba7770ec1b, - limb2: 0x8057cb7e56cf9e79, + limb0: 0x55a5e6cd57aa34ec343a54cd, + limb1: 0x1a546b2b03d1c3f5e5bbccba, + limb2: 0x4d37714f16221d4, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xf970c563547d3481a11bdac0, - limb1: 0xc27edcc38bfdaf532e6723c2, - limb2: 0xd105aa8414d8e0d6, + limb0: 0x22ce11066811cc628b7da49c, + limb1: 0xecc3e8bde2d2691a95981387, + limb2: 0x3ef05d293560470e, limb3: 0x0 }, u384 { - limb0: 0xf9f1514486582fa7ce2503d1, - limb1: 0x34778b7cd6d83f9f5bee5ca6, - limb2: 0xc30549f0b4c85dfb, + limb0: 0x7bd02cba9ae73320d204685b, + limb1: 0x9980c35abd66d23844e16fe9, + limb2: 0xb1c444e8fb93d4c, limb3: 0x0 }, u384 { - limb0: 0x54a484463eb51b9ae759396e, - limb1: 0xac1ce488445000e807682cd9, - limb2: 0xcb2a33d1306b7719, + limb0: 0xcc5b462bb13e29947399b59b, + limb1: 0x728941edaa1fdb7591c50b3f, + limb2: 0x565fde702ec0d3, limb3: 0x0 }, u384 { - limb0: 0xbdb7d4d7cc5ed75861200c2c, - limb1: 0x390ee04eda138cff0117af3d, - limb2: 0x5804943e0b44c51a, + limb0: 0x162a53a014a771832e09459b, + limb1: 0xdd2b55f044362a8500031495, + limb2: 0x5b8f015471021d4d, limb3: 0x0 }, u384 { - limb0: 0x25bc618baae050472d6e8c90, - limb1: 0xe66bac99b6fd1f4fcd00b888, - limb2: 0xdcff7cd60c2d35aa, + limb0: 0xcdae1c6802c11ba2019128bf, + limb1: 0xa9a61692291f49908c7d74cb, + limb2: 0xb6d2f8495d48e149, limb3: 0x0 }, u384 { - limb0: 0xe96e70caad050414f85c60e1, - limb1: 0x6b049609a3fa2d0f02048061, - limb2: 0xf3c3fd5ca003e85b, + limb0: 0xe2c329d5ba7bdd94072a56a6, + limb1: 0xa6ba41f8198efbc0504df127, + limb2: 0x18734cbd6b00a599, limb3: 0x0 }, u384 { - limb0: 0x23e7a7ce207dd0e754d1b634, - limb1: 0x71d455dedcf0867e6fb6316d, - limb2: 0x3ab448132c82c795, + limb0: 0x3aebe47ef724e1c91b88e1f2, + limb1: 0xad918f876164cf36ba1382c2, + limb2: 0x3663b61ac35681bb, limb3: 0x0 }, u384 { - limb0: 0x4fc32a761c33a5ee26fa2c2a, - limb1: 0xea3ada02fd1f70babef94b28, - limb2: 0x4b9ce7c4ed533e98, + limb0: 0x8af83742e39cf5c87dc4782e, + limb1: 0x1fc1e7188490bcbc11fdc80b, + limb2: 0x41731b15f3ac6892, limb3: 0x0 }, u384 { - limb0: 0x6e0ec095bb4251ea81b249ae, - limb1: 0xe43ac32ba7281023f1ecdc03, - limb2: 0x35090de522282a0c, + limb0: 0x4a42afbfcd83f8b6b9303796, + limb1: 0x31fa04a102067b266103d15c, + limb2: 0xbba75eb8af606e, limb3: 0x0 }, u384 { - limb0: 0xf96bd6b9a593712d0a13cc66, - limb1: 0x8b275aef53f4638d4132d07b, - limb2: 0x4338e0190c3ae6e1, + limb0: 0x6b199457f51ba0f1c1b9f930, + limb1: 0x45930c3d506a0e895907b30d, + limb2: 0xd2e2ae18e427a2ca, limb3: 0x0 }, u384 { - limb0: 0x9c5fcadbb656ec63510ed39a, - limb1: 0xba042567595ef7794015ecc3, - limb2: 0x6d06d1d07f68462a, + limb0: 0x430a4b7a4b05520fda17fe78, + limb1: 0xcd59e4f7a401d625870de9b1, + limb2: 0xf96d0967015eb305, limb3: 0x0 }, u384 { - limb0: 0xfee6457069372433c64b95b1, - limb1: 0xbdf40d811c2dcec906c5d2d7, - limb2: 0x2c8144d8483494e2, + limb0: 0xb637f87addd5a984a55770c0, + limb1: 0xea975deddb31783cdb9c2a4f, + limb2: 0xa94c67e48a11222c, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -32556,9 +32522,9 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0xc9c9dea9ceab36f4f84360c3, - limb1: 0x3f8faf4290191974f6a9e7d6, - limb2: 0xe7e87b77988bcba7, + limb0: 0x3d084d28fbb80a4fbb119d7b, + limb1: 0xb23e42e67dcd9d49631c6401, + limb2: 0xe27bb2998d789c07, limb3: 0x0 }, u384 { @@ -32571,15 +32537,15 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0xe3664f2d3832c26d89168c55, - limb1: 0x24ccee82ca177782fc847d7, - limb2: 0x672b9962556a0cce, + limb0: 0x9419e3d57c426d353cf89e71, + limb1: 0x8ab4a940247ceede73b9a668, + limb2: 0xc8bb4733a1839396, limb3: 0x0 }, u384 { - limb0: 0x53a200927abba308637e1275, - limb1: 0x21dc1098f5e3499b5d6ebf83, - limb2: 0x414e72432af1156b, + limb0: 0xfb128c8bac21f354aaf2d657, + limb1: 0xce897ecb5841c07bb6b7a0b9, + limb2: 0xda96f2cc6e97d6c6, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -32587,54 +32553,54 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xe6cafda3cdea6deea11c319, - limb1: 0x470b7fcfcfb8a6e607cf8287, - limb2: 0x3f20d2964192632f, + limb0: 0x274ce9f820569ebb5d2cb4bd, + limb1: 0xd642ef79d6329849c28377b2, + limb2: 0x86e3d1e766c0d8ad, limb3: 0x0 }, u384 { - limb0: 0x64bfc648b58dcfeef57653b7, - limb1: 0xc74563dfc383b69b6fcbbc1a, - limb2: 0x95b3ee7d56259077, + limb0: 0x8cf70c09849b9ae678c570a9, + limb1: 0xe5dff9ecf15549214cb4e41, + limb2: 0xe43691d5cfd80a04, limb3: 0x0 }, u384 { - limb0: 0x8f1d66292b0d5e3d753fd201, - limb1: 0x2effd6843646ee3e74c1081, - limb2: 0x4e491f437659b9c3, + limb0: 0x25a2a1be786a5c24d7d28cc1, + limb1: 0xd7439ae5f6da55ff43d202ca, + limb2: 0x8d1c37c51b1ae577, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xaa3cfdbb95d423c41e4d4f6d, - limb1: 0xeeed115dbec935f95a6dc5a5, - limb2: 0xb4421c6a02f8b706, + limb0: 0x50d6d5ea3d1c59ddbbc7cb4a, + limb1: 0xe564692516ebc0c21dbd12ef, + limb2: 0x43482f037ff5fdaf, limb3: 0x0 }, u384 { - limb0: 0x8f40b4833b5329d8c442aa35, - limb1: 0x8b4e41db3c43b875f8247d5a, - limb2: 0x6936a85360f8d0d5, + limb0: 0x174bab0641e9fb16e20f12a2, + limb1: 0x5ddb9ddd0d5f38f7f91d6362, + limb2: 0x636621a065c0d5eb, limb3: 0x0 }, u384 { - limb0: 0xd16daf3ecb9b5324fd5828eb, - limb1: 0x4e578b8a94eea9ea4cd0c827, - limb2: 0x96dadf0e296753a7, + limb0: 0xdb1c0b533768624026f9dd43, + limb1: 0x484f40f36dd3454940f62485, + limb2: 0xcb015d705e730f96, limb3: 0x0 }, u384 { - limb0: 0xe3664f2d3832c26d89168c52, - limb1: 0x24ccee82ca177782fc847d7, - limb2: 0x672b9962556a0cce, + limb0: 0x9419e3d57c426d353cf89e6e, + limb1: 0x8ab4a940247ceede73b9a668, + limb2: 0xc8bb4733a1839396, limb3: 0x0 }, u384 { - limb0: 0x53a200927abba308637e1275, - limb1: 0x21dc1098f5e3499b5d6ebf83, - limb2: 0x414e72432af1156b, + limb0: 0xfb128c8bac21f354aaf2d657, + limb1: 0xce897ecb5841c07bb6b7a0b9, + limb2: 0xda96f2cc6e97d6c6, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -32644,9 +32610,9 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0x5088516138a647fd64d3611b, - limb1: 0x6f5e1d10d405b142fd724956, - limb2: 0x6942867bf8d0fd46, + limb0: 0x95c984c55b011cf7778d6878, + limb1: 0x73f4d8539ec2b12450c6538e, + limb2: 0x3e8ad1734489ea40, limb3: 0x0 }, g_rhs_sqrt: array![], @@ -32657,15 +32623,15 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0xecd1fea76d95f765968a1f56, - limb1: 0x270c61ba411d8f944af1bf6a, - limb2: 0x865708bee0efbd97, + limb0: 0xeb89eb4709c10c38d82d9ecc, + limb1: 0x4508570747f7197c3b2c8960, + limb2: 0x42c003131de3b9a8, limb3: 0x0 }, y: u384 { - limb0: 0xb96f639fc3b939b23a19efb0, - limb1: 0xb5caacc2f1866cf6d21c9624, - limb2: 0xb7dfb826c9022cc, + limb0: 0xf25b653bdcec95f74c3ce52b, + limb1: 0xa18143b14b9c2b8b11f95f8d, + limb2: 0x40eb9d3e3242b196, limb3: 0x0 } } @@ -32678,15 +32644,15 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0x3ad455e264c303a2cb5f3645, - limb1: 0xd2a2a0a7cd290becd261baa7, - limb2: 0x99c7e979d743abfd, + limb0: 0x393dead57bc85a6e9bb44a70, + limb1: 0x64d4b065b3ede27cf9fb9e5c, + limb2: 0xda670c8c69a8ce0a, limb3: 0x0 }, y: u384 { - limb0: 0xe5214314b09ba51440236152, - limb1: 0xd7e77444525365c078db828e, - limb2: 0x93ad41142dc8a545, + limb0: 0x789872895ad7121175bd78f8, + limb1: 0xc0deb0b56fb251e8fb5d0a8d, + limb2: 0x3f10d670dc3297c2, limb3: 0x0 } }, @@ -32694,7 +32660,7 @@ mod msm_tests { .span(); let scalars = array![ u256 { - low: 0x263e187614c90a5302b13bbc444634e4, high: 0x49b9f919eef272261e4129f8f3659c3a + low: 0xeb1167b367a9c3787c65c1e582e2e662, high: 0xf7c1bd874da5e709d4713d60c8a70639 }, ] .span(); @@ -32702,38 +32668,33 @@ mod msm_tests { array![ ( array![ - -0x1, - -0x1, - -0x1, 0x1, - -0x1, - -0x1, - -0x1, 0x1, -0x1, -0x1, - -0x1, - 0x1, 0x1, 0x0, - 0x1, 0x0, 0x0, - -0x1, 0x0, - -0x1, - -0x1, + 0x1, + 0x0, -0x1, -0x1, 0x1, 0x0, 0x0, 0x0, - -0x1, 0x1, + -0x1, + 0x0, 0x0, -0x1, + 0x1, + 0x0, -0x1, + 0x0, + 0x0, -0x1, 0x1, -0x1, @@ -32743,60 +32704,65 @@ mod msm_tests { 0x1, -0x1, 0x0, - -0x1, - -0x1, - 0x0, 0x0, + -0x1, 0x0, 0x0, -0x1, + -0x1, + -0x1, 0x1, + 0x1, + -0x1, + -0x1, -0x1, 0x1, 0x0, 0x0, - -0x1, - 0x0, 0x1, + 0x0, -0x1, + 0x1, + 0x1, + 0x1, 0x0, + 0x1, -0x1, -0x1, -0x1, + 0x1, 0x0, - -0x1, 0x0, 0x0, - 0x1, - 0x1, -0x1, -0x1, + 0x0, + 0x0, + -0x1, 0x1, 0x1, - -0x1, 0x0, - 0x1, + -0x1, -0x1, 0x0, - 0x1, 0x0, + 0x1, 0x0, -0x1, + -0x1, ] .span(), array![ - 0x0, - -0x1, + 0x1, -0x1, 0x0, + -0x1, 0x1, - 0x1, - 0x0, -0x1, - 0x0, -0x1, - 0x0, + -0x1, 0x1, + -0x1, 0x0, 0x1, 0x0, @@ -32806,66 +32772,69 @@ mod msm_tests { -0x1, 0x1, 0x1, - 0x0, + -0x1, 0x1, 0x0, - 0x0, 0x1, -0x1, - -0x1, 0x0, 0x0, 0x0, 0x0, -0x1, 0x1, - -0x1, - 0x0, - -0x1, 0x1, - -0x1, + 0x1, + 0x1, + 0x0, 0x0, - -0x1, 0x0, -0x1, 0x1, - 0x1, -0x1, -0x1, - 0x1, 0x0, - -0x1, 0x0, 0x0, 0x1, 0x0, - 0x0, + -0x1, -0x1, 0x0, - 0x1, -0x1, + 0x0, 0x1, -0x1, -0x1, - 0x1, -0x1, 0x0, - 0x1, 0x0, 0x1, 0x0, -0x1, 0x0, + 0x1, + -0x1, 0x0, - 0x0, + -0x1, -0x1, 0x0, 0x1, + -0x1, 0x0, 0x0, - 0x0, - 0x1, + -0x1, + -0x1, + -0x1, + -0x1, 0x1, + -0x1, + 0x0, + 0x0, + -0x1, + -0x1, + -0x1, + -0x1, ] .span() ), @@ -32875,57 +32844,57 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0xb4c419a08aaf3917719164b3, - limb1: 0xf5f6d9fc25da26d857bf1e31, - limb2: 0xed8472c644847e35, + limb0: 0x2168cdd68c04b38b0d0ed9c9, + limb1: 0xcd052d9299a13087b5800a4a, + limb2: 0xa573b87cf8304f8f, limb3: 0x0 }, y: u384 { - limb0: 0xfaf0de425977d9d05aa37bcd, - limb1: 0xd1593827aeea60c9de92e7ba, - limb2: 0x9cc5e481e0e19a51, + limb0: 0x5454918fa80a564339004e92, + limb1: 0x5655a19d0ec5d16fdf81f011, + limb2: 0x29b63cc0a6044502, limb3: 0x0 } }, Q_high: G1Point { x: u384 { - limb0: 0x47a2549fd9d37cb22bb11a03, - limb1: 0xf41017644ffed253eff8d973, - limb2: 0x5a7854563918b733, + limb0: 0xd5359262839ab420badf7cd9, + limb1: 0x5a87f64c35e57e5df4e4fc77, + limb2: 0x289923177889088d, limb3: 0x0 }, y: u384 { - limb0: 0xa399c84de30ad909a43e71df, - limb1: 0xdd0a563a10c57f494ecc918d, - limb2: 0x692b5d4f4b93a427, + limb0: 0x8d67744978428f50a1ac82a1, + limb1: 0xade19daa5e55192df1fe1999, + limb2: 0x79185c440324025, limb3: 0x0 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0x377227aed4677ca6a0510f6e, - limb1: 0x671e171b9b3ddc6491dbdad, - limb2: 0xbedb538d5a3a1d5c, + limb0: 0x8fcbf3f99fce5df95ce84d2b, + limb1: 0xb9b461dafa9f3a09816ff4db, + limb2: 0x110c2b06832eaa00, limb3: 0x0 }, y: u384 { - limb0: 0xc2d6603f440fb428393703a4, - limb1: 0xba114670becbd3a5d99ef321, - limb2: 0xd3a535624b405fa, + limb0: 0x2b4ac042652d0760141dd90, + limb1: 0xb384b06a9e5cb660236efa3f, + limb2: 0x5e0b156fdadea8f3, limb3: 0x0 } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0xdfbb608364f9e38191097757, - limb1: 0x1a518a280ae849b1ef6ebcc6, - limb2: 0x25907e0b3aca74a6, + limb0: 0xb4fcf8a5b0cad11304329c97, + limb1: 0xa80ec424aadb0c55a24c15c7, + limb2: 0x31deb0177d213676, limb3: 0x0 }, u384 { - limb0: 0x5c502ba58d5d363eaf7f5be4, - limb1: 0xffffffffffffffffee33b475, + limb0: 0xb666e21a57418f0189b24940, + limb1: 0xffffffffffffffff96d52f18, limb2: 0x7fffffffffffffff, limb3: 0x0 } @@ -32933,15 +32902,15 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0xca48deb295f658f4be108d84, - limb1: 0x48dcf47ee27dc0cebc0b60ff, - limb2: 0xfddcdb2b67d74f6c, + limb0: 0x7c08ccef0577c1e5e174df10, + limb1: 0xb5ee58ee34e93193f49ea180, + limb2: 0x4047fb70f7e77047, limb3: 0x0 }, u384 { - limb0: 0x1067907d108dc343c30f5d66, - limb1: 0x3766855c0cfccd3ad5df2727, - limb2: 0x78b3a3bfe437d5cc, + limb0: 0xa5594753f832f204573cd425, + limb1: 0xce262207b270ecfb50845759, + limb2: 0x80253af69e26e265, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -32949,49 +32918,49 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xac4c8e7e69df0f7cd50e2b7c, - limb1: 0xf6b11baa4140df7c7a7ca987, - limb2: 0x21a60dd3bc64447c, + limb0: 0xfd83e5dcb8f442536dab5cd4, + limb1: 0xe01888c58f83437f6a5222b6, + limb2: 0x13cf21fd6255ff64, limb3: 0x0 }, u384 { - limb0: 0x220735fbb6a0d22683ddcbdc, - limb1: 0xcc24cf3384a037d552baa622, - limb2: 0x4e15b25275d02fab, + limb0: 0xa248a903c30641607b6577ad, + limb1: 0x9c21a3a74fe303f3a82298c6, + limb2: 0x430c0ca30ff24689, limb3: 0x0 }, u384 { - limb0: 0x608b8e63d00140cfcb42f439, - limb1: 0xce759cd69c261571cf2eeb7e, - limb2: 0x27106d423470870b, + limb0: 0xd15958ee9d1ee6db09220631, + limb1: 0x4e46d3493fe72964f69067f9, + limb2: 0xec0a0c1aaad56f0e, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x87fe16e219bc6eb73273f582, - limb1: 0xfe0aaf78317045a7244fa6fe, - limb2: 0xf109fe2fd6e32bf5, + limb0: 0x643d9a8926464d4a2a321d41, + limb1: 0xf9846e8372605b0bb0566a83, + limb2: 0xc1f7e016c75411f5, limb3: 0x0 }, u384 { - limb0: 0x72d4f36b73e056dd556b993d, - limb1: 0x83cda5845ae99c9bd91a1211, - limb2: 0x4ce97a3f3d86d895, + limb0: 0x8570f34bc9649e2162a9d876, + limb1: 0xa30aee35e1167adf339e6373, + limb2: 0x81049cbe531030c8, limb3: 0x0 }, u384 { limb0: 0x7, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xca48deb295f658f4be108d84, - limb1: 0x48dcf47ee27dc0cebc0b60ff, - limb2: 0xfddcdb2b67d74f6c, + limb0: 0x7c08ccef0577c1e5e174df10, + limb1: 0xb5ee58ee34e93193f49ea180, + limb2: 0x4047fb70f7e77047, limb3: 0x0 }, u384 { - limb0: 0x1067907d108dc343c30f5d66, - limb1: 0x3766855c0cfccd3ad5df2727, - limb2: 0x78b3a3bfe437d5cc, + limb0: 0xa5594753f832f204573cd425, + limb1: 0xce262207b270ecfb50845759, + limb2: 0x80253af69e26e265, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -33001,30 +32970,30 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0xcc131d31813080b6dc50d1fc, - limb1: 0x47ab37840029d07ebab66793, - limb2: 0xf510e0884fa731dc, + limb0: 0xe11598bc11cc303f55df6836, + limb1: 0x49305a3d49e3b23025d98839, + limb2: 0xe70c7570de51b2dc, limb3: 0x0 }, u384 { - limb0: 0xf34ec2ba6447089bb6aef375, - limb1: 0x24cfcf24, - limb2: 0x8000000000000000, + limb0: 0x5974a92ec437e565b696cf56, + limb1: 0xffffffffffffffff84462f62, + limb2: 0xffffffffffffffff, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0xf13cbbb9618198281495c24e, - limb1: 0x29b678da1fc3da339aca9060, - limb2: 0x247725ef71215d75, + limb0: 0x3129858457cf3014c235235, + limb1: 0xb0fe57b67b7c50547d7e41aa, + limb2: 0xac11d74ab9f96d2d, limb3: 0x0 }, u384 { - limb0: 0x7d89557dc1697faa08efabe7, - limb1: 0x394d47f3e2d821bf3da56be5, - limb2: 0xbbfc22fefa39cce, + limb0: 0xf18c82c8009cf16ea96c3115, + limb1: 0x40a3594e162c9f25111f652b, + limb2: 0xfcffd05c1dce2968, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -33032,49 +33001,49 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x684ba78f8a902cab83c8ed69, - limb1: 0x3f804dc5f89d150673e30c7f, - limb2: 0x1094a3ef1a1a42df, + limb0: 0xb4f1c6d1ca8490d5fa889fd7, + limb1: 0x922025384f7c4954e6b3bffd, + limb2: 0xeb0a51fc509f5105, limb3: 0x0 }, u384 { - limb0: 0x60c9a37f673299e07a0bbc09, - limb1: 0xf4809e740ce4adfa0f7709bd, - limb2: 0x76b49d0256877ca6, + limb0: 0xd679a5804ddc1fe332c54b63, + limb1: 0x9d5877897a936bf52ccc039f, + limb2: 0xfd4d9dba47497699, limb3: 0x0 }, u384 { - limb0: 0x88bc6f7848990f881ccbc3af, - limb1: 0x8fb8984dae18a501976de65, - limb2: 0xb81a0d8e3b7b1f55, + limb0: 0xc3a15c6f5c22f16b9976878b, + limb1: 0x8c010073f76b26401720fff9, + limb2: 0x5d01ff79dea1eebb, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x98a92211aa8b291890185022, - limb1: 0x23fd4df6de5af7693b89f2a6, - limb2: 0xff42098c17e98e34, + limb0: 0x15822a69e66aa50d14f74eb7, + limb1: 0xd6f465fd6066324f6e73cba6, + limb2: 0xb47ce30b15d1fc3f, limb3: 0x0 }, u384 { - limb0: 0x6ec1567049e27da63e8db351, - limb1: 0x911cf7ab33e8ec3aaf85f346, - limb2: 0x523e4f4f8d7949a3, + limb0: 0x9ad79378044a9a0ca1f56e79, + limb1: 0xc47771229b385a0377dbc433, + limb2: 0xeafeb284d0a321d9, limb3: 0x0 }, u384 { limb0: 0x7, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xf13cbbb9618198281495c24e, - limb1: 0x29b678da1fc3da339aca9060, - limb2: 0x247725ef71215d75, + limb0: 0x3129858457cf3014c235235, + limb1: 0xb0fe57b67b7c50547d7e41aa, + limb2: 0xac11d74ab9f96d2d, limb3: 0x0 }, u384 { - limb0: 0x7d89557dc1697faa08efabe7, - limb1: 0x394d47f3e2d821bf3da56be5, - limb2: 0xbbfc22fefa39cce, + limb0: 0xf18c82c8009cf16ea96c3115, + limb1: 0x40a3594e162c9f25111f652b, + limb2: 0xfcffd05c1dce2968, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -33084,9 +33053,9 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0xb24f43284777863dfec845c5, - limb1: 0xb5952cca886f16f0f58d8fb7, - limb2: 0x5619f0d22ef4762a, + limb0: 0xec57a2b635380ad1cfc4170c, + limb1: 0x36129c4e760736a733db195d, + limb2: 0xfc4ba9103abc0ab8, limb3: 0x0 }, u384 { @@ -33099,15 +33068,15 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0xf40966733351d780f40e3462, - limb1: 0x74c527c374902beb222b7f00, - limb2: 0x45a9e37e3c954d42, + limb0: 0x999bc36b8bb4fb9943bdb239, + limb1: 0xdee2969638a54ae7cbdb78da, + limb2: 0x634a8c80727a977c, limb3: 0x0 }, u384 { - limb0: 0x80eb83b151c506a533fdceed, - limb1: 0x57e0729f64d4fe5c6e968df, - limb2: 0xe6ac581c6cad2b70, + limb0: 0x9afe79a3dc96ede4e838322b, + limb1: 0xebc3a7d8cf7b479889ab0eac, + limb2: 0xc65ab1e204484d71, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -33115,49 +33084,49 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x938a50f50d78b7151d15748d, - limb1: 0xd1dfff9f3b97bae90ca76601, - limb2: 0x2167659c59fd59f3, + limb0: 0x8005351180c0c3d98483c223, + limb1: 0x76450fc8267571115cb3c9d5, + limb2: 0x765647d09247c421, limb3: 0x0 }, u384 { - limb0: 0x16b7b40f4e40d3a10431e922, - limb1: 0x3958d60dda2edcf550e51bde, - limb2: 0x7ef2883d6fb2f9a9, + limb0: 0x5450eb807777b0ad3646a97d, + limb1: 0xff02af12cea9dca83244abee, + limb2: 0x472da77e360e30e3, limb3: 0x0 }, u384 { - limb0: 0x806b0f3009cbfaeb44dd7fa0, - limb1: 0x6f97176399ed1a18e0fa2c46, - limb2: 0xcd63393a9760a920, + limb0: 0xdf7c7de55484f3ca3454d813, + limb1: 0xbf915d2aaec2a33257c4a2fb, + limb2: 0x95c7f288ea2c25d4, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xac41cd26673ce487ac63727f, - limb1: 0x316416582ff1336def307906, - limb2: 0xe7a53873a8151cd1, + limb0: 0x334257f0d1f2e132da2fe731, + limb1: 0x18321e1b8c850c5693004dfa, + limb2: 0xb709d783215a246a, limb3: 0x0 }, u384 { - limb0: 0x867099d93c632e8a6bf0bf61, - limb1: 0x26723225bc1d2f487061de1c, - limb2: 0x4eb668c6f8bc3010, + limb0: 0x3cf5537b0820814759897242, + limb1: 0x725996edac5ef52bc3ad66b8, + limb2: 0x6c7add2e1dfa1e1d, limb3: 0x0 }, u384 { limb0: 0x7, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xf40966733351d780f40e3462, - limb1: 0x74c527c374902beb222b7f00, - limb2: 0x45a9e37e3c954d42, + limb0: 0x999bc36b8bb4fb9943bdb239, + limb1: 0xdee2969638a54ae7cbdb78da, + limb2: 0x634a8c80727a977c, limb3: 0x0 }, u384 { - limb0: 0x80eb83b151c506a533fdceed, - limb1: 0x57e0729f64d4fe5c6e968df, - limb2: 0xe6ac581c6cad2b70, + limb0: 0x9afe79a3dc96ede4e838322b, + limb1: 0xebc3a7d8cf7b479889ab0eac, + limb2: 0xc65ab1e204484d71, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -33167,9 +33136,9 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0xc5e42910d217d7a73b6a4e85, - limb1: 0x1e352a6c1b9134bd9ea93ff4, - limb2: 0x616119081974e181, + limb0: 0x648194b273c90f9db5984708, + limb1: 0xb53ad2ceaccb8cb32af8ba80, + limb2: 0x15e2a529b829cedf, limb3: 0x0 }, g_rhs_sqrt: array![], @@ -33180,15 +33149,15 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0xe725211b1e874b985a7512e9, - limb1: 0x102f59df7abffac2d0b46728, - limb2: 0x2ebb56e5ce17fd34, + limb0: 0xc20f5aa13afc3a2097ce088b, + limb1: 0x50220928f8ca04bf313c1d7, + limb2: 0x70743ffac9bb07f9, limb3: 0x0 }, y: u384 { - limb0: 0x5838a970689eb2e221a46f41, - limb1: 0xc1251fdb659637fb0cc3b78b, - limb2: 0x64f70c023b743cb0, + limb0: 0xfa42792834ae5445fcaca832, + limb1: 0x6796f84b7340adf44ed49d33, + limb2: 0x62fd8a76eedcb778, limb3: 0x0 } } @@ -33201,29 +33170,29 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0x7da2517f7b0a6ca33fa4e194, - limb1: 0x88b69399e6af4c9700b122d1, - limb2: 0xd91e324361cafa7e, + limb0: 0x393dead57bc85a6e9bb44a70, + limb1: 0x64d4b065b3ede27cf9fb9e5c, + limb2: 0xda670c8c69a8ce0a, limb3: 0x0 }, y: u384 { - limb0: 0x2153ab8d10e9d865118d4edf, - limb1: 0x1701f7793bb215fc2bb1cedf, - limb2: 0xf9ab0e89c9eaf969, + limb0: 0x789872895ad7121175bd78f8, + limb1: 0xc0deb0b56fb251e8fb5d0a8d, + limb2: 0x3f10d670dc3297c2, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x933a684ec643b3fba24ab095, - limb1: 0xb48dc0f3872a6b7c7f807ce6, - limb2: 0xfb004765e3d930f2, + limb0: 0xfdfdc509f368ba4395773d3a, + limb1: 0x8de2b60b577a13d0f83b578e, + limb2: 0xc2dd970269530ba2, limb3: 0x0 }, y: u384 { - limb0: 0x6e9a5a0d4290f58fbc43561a, - limb1: 0x6a6d93096c2144440d652452, - limb2: 0xc8e509cbda6be4b3, + limb0: 0x589fa250d638e35400c12ddf, + limb1: 0xb3aac19fcb5095808402aa7f, + limb2: 0xed6de6590d0195d1, limb3: 0x0 } }, @@ -33231,10 +33200,10 @@ mod msm_tests { .span(); let scalars = array![ u256 { - low: 0x199e9c836d350dc8eecfa0148f0eb1d1, high: 0x52a1d08764be2c694ac1b5ebdf49a5d1 + low: 0xe443df789558867f5ba91faf7a024204, high: 0x23a7711a8133287637ebdcd9e87a1613 }, u256 { - low: 0x5b998aa4b8728bd62314871efa626e59, high: 0xbce6de07d7de7b2de364905da08f46c3 + low: 0x1846d424c17c627923c6612f48268673, high: 0xfcbd04c340212ef7cca5a5a19e4d6e3c }, ] .span(); @@ -33242,78 +33211,68 @@ mod msm_tests { array![ ( array![ - 0x0, + -0x1, 0x1, 0x0, - 0x0, - 0x1, + -0x1, + -0x1, 0x0, 0x1, 0x1, 0x1, - 0x1, + -0x1, 0x0, + -0x1, 0x0, 0x1, - 0x0, - -0x1, - -0x1, 0x1, 0x1, + 0x0, 0x1, -0x1, -0x1, + 0x1, 0x0, 0x0, - 0x0, - -0x1, - 0x0, - 0x0, - -0x1, - 0x1, 0x1, 0x1, - 0x0, -0x1, -0x1, -0x1, - 0x1, 0x0, - -0x1, 0x1, 0x1, 0x0, - 0x1, - 0x0, 0x0, -0x1, 0x1, - 0x1, - 0x1, 0x0, - 0x1, + 0x0, -0x1, -0x1, + 0x1, 0x0, -0x1, - -0x1, 0x1, -0x1, 0x0, + 0x1, + 0x0, -0x1, + 0x1, -0x1, + -0x1, + 0x0, 0x1, -0x1, -0x1, -0x1, - 0x0, - 0x0, + -0x1, 0x1, 0x1, - -0x1, 0x1, 0x0, - 0x1, + 0x0, 0x0, 0x0, 0x0, @@ -33321,260 +33280,270 @@ mod msm_tests { 0x1, 0x0, -0x1, + 0x1, -0x1, - ] - .span(), - array![ -0x1, + 0x1, + -0x1, + -0x1, + -0x1, + 0x1, -0x1, 0x0, 0x0, - 0x0, - 0x1, -0x1, + -0x1, + ] + .span(), + array![ 0x1, 0x1, - 0x1, + -0x1, 0x0, - 0x1, -0x1, -0x1, 0x0, 0x0, + 0x0, + 0x1, -0x1, + 0x0, + 0x0, -0x1, -0x1, - -0x1, - -0x1, - -0x1, + 0x1, -0x1, -0x1, 0x0, - 0x1, - 0x1, - 0x1, 0x0, 0x0, - 0x1, + -0x1, -0x1, 0x1, - 0x1, + 0x0, 0x0, -0x1, 0x1, - 0x0, 0x1, - -0x1, 0x1, 0x1, + -0x1, 0x0, 0x0, -0x1, -0x1, - -0x1, 0x0, - -0x1, - -0x1, 0x0, - -0x1, - -0x1, + 0x0, 0x1, 0x1, -0x1, -0x1, - 0x0, 0x1, + -0x1, 0x0, -0x1, -0x1, -0x1, + 0x1, -0x1, -0x1, 0x0, - 0x0, + 0x1, -0x1, - 0x0, -0x1, 0x1, -0x1, + 0x1, 0x0, 0x1, - -0x1, - -0x1, 0x0, + 0x0, + 0x0, + 0x0, + 0x1, + -0x1, 0x1, 0x1, + 0x0, + 0x0, + 0x1, 0x1, 0x1, + 0x0, + 0x0, + -0x1, + 0x0, + 0x0, + -0x1, ] .span() ), ( array![ - -0x1, - -0x1, + 0x0, -0x1, 0x1, 0x0, 0x0, + -0x1, 0x1, -0x1, 0x0, - 0x1, - 0x1, + -0x1, 0x0, - 0x1, - 0x1, 0x0, -0x1, - 0x1, - 0x1, 0x0, - 0x1, - 0x1, 0x0, -0x1, + 0x1, 0x0, 0x1, - -0x1, - -0x1, 0x0, -0x1, 0x1, 0x0, + 0x1, + 0x0, 0x0, 0x1, 0x1, + 0x0, + -0x1, 0x1, + 0x0, + 0x0, + 0x0, + 0x0, 0x1, -0x1, 0x1, - 0x1, -0x1, 0x0, 0x1, 0x0, 0x0, + -0x1, 0x1, -0x1, 0x0, -0x1, - 0x1, - 0x1, - 0x1, -0x1, 0x1, + 0x0, -0x1, 0x1, - -0x1, 0x0, - -0x1, - -0x1, 0x1, + -0x1, 0x1, 0x1, - -0x1, 0x1, -0x1, - -0x1, - -0x1, + 0x0, 0x1, 0x1, + 0x0, -0x1, -0x1, 0x1, - -0x1, - 0x1, - 0x1, 0x1, 0x1, -0x1, + 0x0, + -0x1, 0x1, + 0x0, + 0x0, 0x1, - 0x1, + 0x0, + 0x0, + -0x1, + -0x1, ] .span(), array![ - -0x1, 0x0, - 0x1, 0x0, -0x1, -0x1, - -0x1, - -0x1, - 0x1, - 0x1, 0x0, 0x1, 0x0, - 0x0, + 0x1, + 0x1, + -0x1, -0x1, - 0x0, 0x1, 0x0, - 0x1, 0x0, - 0x1, - -0x1, -0x1, -0x1, + 0x1, + 0x1, -0x1, + 0x1, -0x1, 0x0, 0x1, - -0x1, - -0x1, + 0x1, 0x0, -0x1, -0x1, + -0x1, 0x1, -0x1, 0x0, -0x1, - -0x1, - 0x1, + 0x0, -0x1, 0x0, - 0x1, -0x1, 0x0, 0x0, 0x0, 0x0, + 0x0, -0x1, -0x1, 0x1, - -0x1, - -0x1, 0x0, - 0x1, 0x0, - -0x1, - 0x1, - -0x1, - 0x1, 0x1, 0x1, -0x1, 0x0, - 0x1, -0x1, 0x0, + -0x1, + -0x1, + -0x1, + -0x1, 0x1, -0x1, 0x1, 0x1, 0x0, + 0x0, + 0x0, 0x1, 0x1, + 0x0, + -0x1, -0x1, + 0x0, -0x1, 0x1, 0x0, -0x1, 0x0, 0x1, + 0x0, + 0x1, + -0x1, + -0x1, + -0x1, -0x1, -0x1, ] @@ -33586,85 +33555,85 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0xc8b56ffa1209d6cc36b8b50, - limb1: 0x1ee0adff23bad471a52c1f5d, - limb2: 0xef259cb2b98da110, + limb0: 0x593dad981eecdd1e64154a93, + limb1: 0x15e93605b52029cfc36d4a3c, + limb2: 0x6752eff42a090d7a, limb3: 0x0 }, y: u384 { - limb0: 0x2eec5c561ee4d0c5cd2256ad, - limb1: 0xd75a69a3c9950813e5c21763, - limb2: 0x15a944620e3847fb, + limb0: 0x8a334258e86c3e198e5be102, + limb1: 0xa818d7193e41547664a42d16, + limb2: 0x6a1950344af5391a, limb3: 0x0 } }, Q_high: G1Point { x: u384 { - limb0: 0x8bafb198fb6765b23e27c436, - limb1: 0x6e059029b1b0c7276778df16, - limb2: 0x4e08c4afe4f4b527, + limb0: 0xc1705689b8b946103efb871, + limb1: 0xe6144915870a8c2e8f420c9c, + limb2: 0x8260943f6ebaa864, limb3: 0x0 }, y: u384 { - limb0: 0x57a44cb79b2e9554ea0c58c5, - limb1: 0xd3069f409eff0df73174ae4b, - limb2: 0x737911fec846e358, + limb0: 0x3e6fa653f652e9b0a83da27d, + limb1: 0x1082c053d8c4ef5e9d3997de, + limb2: 0x429004bba8391403, limb3: 0x0 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0x2b32f4a26e6a7a9ab0e69573, - limb1: 0x6ed9472f778f0a5447fbaab4, - limb2: 0x7320ba087c444134, + limb0: 0xbf84ddf1ac17a33685c6a551, + limb1: 0x93a8a3e6f9ba5d56241249f9, + limb2: 0xcc92887cb910b675, limb3: 0x0 }, y: u384 { - limb0: 0x5d3beacb8f0de0919d58e495, - limb1: 0xbda7fc62cff2a59c56944ea1, - limb2: 0x26697513ddf48b40, + limb0: 0x37da4db3236ebe8025df6a29, + limb1: 0x2497b4be77c8de2ca943ecf8, + limb2: 0x5eea5df3798ab809, limb3: 0x0 } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0xf9e08e97e636cbb5d1e49d10, - limb1: 0x97ee896e21eb3872f40c47a3, - limb2: 0x446e609a41315491, + limb0: 0xcc5fa02625aac6c57b193763, + limb1: 0xfb69d73924be3fcf4b4b6f2, + limb2: 0x67680e6d31d6f768, limb3: 0x0 }, u384 { - limb0: 0xa7ffe41de5595ebf448d7df4, - limb1: 0x3bd5b4fa4d1e800621c6272b, - limb2: 0x7f6d48cd01e33943, + limb0: 0x9834bbf00778c3f098b2419c, + limb1: 0x9f28c563c8c2eeb7f920f3ce, + limb2: 0xbd79ba59cf645daa, limb3: 0x0 }, u384 { - limb0: 0xc420e21770c32d6d3587ebe3, - limb1: 0x1dcc79c6, - limb2: 0x8000000000000000, + limb0: 0xa10abcd1222644918f5fa96d, + limb1: 0xffffffffffffffff82ad81f4, + limb2: 0xffffffffffffffff, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0xe44d10e30484370e8b29c58e, - limb1: 0xee3accc3a999f469a885da82, - limb2: 0x6d9594489d0773ea, + limb0: 0x8b6f29c77b6fc9e480fbe0bf, + limb1: 0x38e7acd7f98fb0c61ffcbd71, + limb2: 0x7d97ece3da4a85ab, limb3: 0x0 }, u384 { - limb0: 0x60b77336d30cfafde36be3e2, - limb1: 0xc0ffabed72ec1c20b9b6da16, - limb2: 0x4d98690e1687c811, + limb0: 0x54882fc0482ddb192b9e9631, + limb1: 0xbbb5c39410ef698a77855386, + limb2: 0xaed08c22b2a21522, limb3: 0x0 }, u384 { - limb0: 0xe297ef321d9141f15aa4d714, - limb1: 0xa3dafd736e6b737adaa240ea, - limb2: 0x3cbbe9a400ce337e, + limb0: 0x6f86a28871e20e2c6abf2250, + limb1: 0xf75f63893f77dfe24a5bbfd8, + limb2: 0xfb686c7d02fb18d8, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -33672,66 +33641,66 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x60e81a6cfda715126059da61, - limb1: 0x9c0d62012338f55f8a573a7a, - limb2: 0xe57f66cf8e74cafd, + limb0: 0x50ba474d9aa08255b479da92, + limb1: 0x5def5a7739db390dcd64c85c, + limb2: 0x4de956edc6daa3d3, limb3: 0x0 }, u384 { - limb0: 0x3d59bb6cdc8b3c5f2cb0ca7a, - limb1: 0xd1a54f6aa8510e1ce8b2471c, - limb2: 0x2f9a4ee3871fa665, + limb0: 0x60b8a782940201beca160430, + limb1: 0xb496cdbd3e1c6cd49459d13e, + limb2: 0x193d1c78f2ea812a, limb3: 0x0 }, u384 { - limb0: 0xbf906ce7ddc3a7e3cbc676b8, - limb1: 0xe35473444e4d08c4b8fc063f, - limb2: 0x71a8f1eb264281f6, + limb0: 0xa7e6e70a7a1eba9a8012e529, + limb1: 0x13daaf8aebdfea9e0dc724f2, + limb2: 0x8d9a9f7904757a38, limb3: 0x0 }, u384 { - limb0: 0x827534df270dea89b3dbc181, - limb1: 0xed3be094cdd24aaca77a5df1, - limb2: 0x481cdc3629a70e6d, + limb0: 0xc16f08f96e0bcd1cd1265ad8, + limb1: 0xec83f5d5df8e08cd305686d2, + limb2: 0x2f73c23e8db6060d, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x3e1b76351f9d8167ce246e84, - limb1: 0x839b9959a335aee39ba8f994, - limb2: 0xff170dfc4b342b6c, + limb0: 0xd00a2474600e854286e330ac, + limb1: 0x8e55b9e7d2edd56adfe92e1a, + limb2: 0x6f277a3af809a7ae, limb3: 0x0 }, u384 { - limb0: 0xa504267fc55adcf337f342d0, - limb1: 0x46fdb37e2474c4e513fff69c, - limb2: 0x1f2adf629db6787c, + limb0: 0x4fb94e41f940fdb431562a9b, + limb1: 0x21f8590c768be2c944a548ac, + limb2: 0xc7b3d4f2e26e93f3, limb3: 0x0 }, u384 { - limb0: 0x32278a5ecef8cd9a7a81e55d, - limb1: 0x7afcee2804f0285bfa6fc66c, - limb2: 0xa923637c05a36876, + limb0: 0xcae71bb1d2e633ceb3a0716, + limb1: 0xc39bb8c0bc471f3008823eeb, + limb2: 0xdfdaf76b14ddadee, limb3: 0x0 }, u384 { - limb0: 0xe44d10e30484370e8b29c595, - limb1: 0xee3accc3a999f469a885da82, - limb2: 0x6d9594489d0773ea, + limb0: 0x8b6f29c77b6fc9e480fbe0c6, + limb1: 0x38e7acd7f98fb0c61ffcbd71, + limb2: 0x7d97ece3da4a85ab, limb3: 0x0 }, u384 { - limb0: 0x60b77336d30cfafde36be3e2, - limb1: 0xc0ffabed72ec1c20b9b6da16, - limb2: 0x4d98690e1687c811, + limb0: 0x54882fc0482ddb192b9e9631, + limb1: 0xbbb5c39410ef698a77855386, + limb2: 0xaed08c22b2a21522, limb3: 0x0 }, u384 { - limb0: 0xe297ef321d9141f15aa4d714, - limb1: 0xa3dafd736e6b737adaa240ea, - limb2: 0x3cbbe9a400ce337e, + limb0: 0x6f86a28871e20e2c6abf2250, + limb1: 0xf75f63893f77dfe24a5bbfd8, + limb2: 0xfb686c7d02fb18d8, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -33741,42 +33710,42 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0xf1a47fa3b9419173893395df, - limb1: 0x1b2b275ffbcf6b69372e2287, - limb2: 0xe006411cc268cf2, + limb0: 0x68695d580ae21fa5ecd7bbc2, + limb1: 0x1b5a4cc1c78d680b013478f2, + limb2: 0xfc8bb1b90d4bd21b, limb3: 0x0 }, u384 { - limb0: 0xd10db07752966aae9710ff9e, - limb1: 0x799c86656120ca892db60cb6, - limb2: 0xc8b874995f6c1778, + limb0: 0xe3f06e964d1eca3576911325, + limb1: 0xa8794f02f4e610ccb3ae40c0, + limb2: 0x5aa55924341cff0d, limb3: 0x0 }, u384 { - limb0: 0xd4a7dd61b9fdfd33d8f70a53, - limb1: 0xffffffffffffffffa50a6987, - limb2: 0x7fffffffffffffff, + limb0: 0x9592729a2f751ba35e430fc4, + limb1: 0xffffffffffffffff714aa7bd, + limb2: 0xffffffffffffffff, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0x11de3c2a4553c91e32908986, - limb1: 0x9db84ccfda2a6190fc29d38c, - limb2: 0xa2beca753abafe22, + limb0: 0x546656444b12b4970a7335f0, + limb1: 0xa74888992eb4dbc0eaf39ead, + limb2: 0x93a30bd281782cb6, limb3: 0x0 }, u384 { - limb0: 0xe47a5140d9786f66034f31f8, - limb1: 0x16d1bed55d7630a456deaab6, - limb2: 0xa11c93016c99639f, + limb0: 0x6595c9b37280a23d4f5e1874, + limb1: 0x60519f4527eee025ed56289, + limb2: 0x91556af380a66504, limb3: 0x0 }, u384 { - limb0: 0x63739498c34a79abdfe89e2e, - limb1: 0x54b61b48e07580c518558131, - limb2: 0xddd8c1a6d5671f67, + limb0: 0xbcad4ab7f54356e9cae4b472, + limb1: 0x273450796d8d7d837e86fd78, + limb2: 0xe05ac831be497dee, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -33784,66 +33753,66 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xaa2602e891de32ddf4f54b8, - limb1: 0xdcce1c93709917feacfd1874, - limb2: 0x9415ccce17e0d4e1, + limb0: 0x3bc5a8c0b5c7d612303c443, + limb1: 0x7022e05f699f13a0e01e2c6c, + limb2: 0x52e0586f467bfee2, limb3: 0x0 }, u384 { - limb0: 0x26b6c2672d664334acc99242, - limb1: 0x600de4679d5c5792a78e7489, - limb2: 0x702efd3145f6357d, + limb0: 0x393968cd1c1fc962ff8602b4, + limb1: 0xc9625cd2f2d551be74a7795e, + limb2: 0x947ea045b103cf4e, limb3: 0x0 }, u384 { - limb0: 0x52f0f7fef80396bb3b129e78, - limb1: 0x9727891c6604a12bbb0d519, - limb2: 0xd62f5b45cb323375, + limb0: 0xadea786e5a96a01989091783, + limb1: 0xbea36880e5d3ccc0f3b38486, + limb2: 0x10ce150b2d6ef7e0, limb3: 0x0 }, u384 { - limb0: 0xaee8a38d76871445f204d584, - limb1: 0x55c89639a8926808581164e1, - limb2: 0xf472ba32e8c663a7, + limb0: 0xf037f138cad3d10107bfeca5, + limb1: 0xf9b8d7c34108c42e9743e01b, + limb2: 0x7983df76b2a9b596, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x7d13a527e54a7fd761f3d1ee, - limb1: 0x500a19aef728aaf6e524c8d4, - limb2: 0x733789349b1cf2f2, + limb0: 0x4ecc5bde0d82f025492688d4, + limb1: 0x92fbbc3046f202466ca956bd, + limb2: 0x97552c18a4938fe, limb3: 0x0 }, u384 { - limb0: 0x3f5838c5f24b0bce172a6d0c, - limb1: 0x9fbc37d58e3b547e6016ab00, - limb2: 0x67c80509f831b959, + limb0: 0xc71883e821846fb02b92b69f, + limb1: 0x2a23b5ae4178821097d5b1c1, + limb2: 0xf955eca8848cc31c, limb3: 0x0 }, u384 { - limb0: 0xb829102d570953b91f5c6a28, - limb1: 0x50fabefe23368563aa568859, - limb2: 0x10ed4b8fd5d1dbd3, + limb0: 0x28bd0b07b4d7606a8c410604, + limb1: 0x126e3351fede6e9875b0ee4d, + limb2: 0x227b795c34027183, limb3: 0x0 }, u384 { - limb0: 0x11de3c2a4553c91e3290898d, - limb1: 0x9db84ccfda2a6190fc29d38c, - limb2: 0xa2beca753abafe22, + limb0: 0x546656444b12b4970a7335f7, + limb1: 0xa74888992eb4dbc0eaf39ead, + limb2: 0x93a30bd281782cb6, limb3: 0x0 }, u384 { - limb0: 0xe47a5140d9786f66034f31f8, - limb1: 0x16d1bed55d7630a456deaab6, - limb2: 0xa11c93016c99639f, + limb0: 0x6595c9b37280a23d4f5e1874, + limb1: 0x60519f4527eee025ed56289, + limb2: 0x91556af380a66504, limb3: 0x0 }, u384 { - limb0: 0x63739498c34a79abdfe89e2e, - limb1: 0x54b61b48e07580c518558131, - limb2: 0xddd8c1a6d5671f67, + limb0: 0xbcad4ab7f54356e9cae4b472, + limb1: 0x273450796d8d7d837e86fd78, + limb2: 0xe05ac831be497dee, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -33853,9 +33822,9 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0xa71a6dd82afbbdb2166925ee, - limb1: 0x657b4d915d0a6ab70c365f6c, - limb2: 0xfced3a071777d812, + limb0: 0xfefc690d206c7ecce7f4eae, + limb1: 0x41718a3058985574cec1ce0b, + limb2: 0xa5d7d29571066af6, limb3: 0x0 }, u384 { @@ -33868,15 +33837,15 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0x784de462ee673cf2a5ec2914, - limb1: 0x3450434453c4309de3a6f67e, - limb2: 0xe6e581a7fdc0084c, + limb0: 0x5b2b419bb75e6200a376cf76, + limb1: 0x1772db236e2ab0d0c699156c, + limb2: 0xcb2fb60849587126, limb3: 0x0 }, u384 { - limb0: 0x491d59c4962e1fb210f1a286, - limb1: 0x232128a6d6c02e84508b7635, - limb2: 0x3ed681479ec709a4, + limb0: 0x34641ca5b85cc86676499a9c, + limb1: 0x864313037f3b167b4caba96a, + limb2: 0xb10ce343d834a125, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -33884,49 +33853,49 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xb5fa32315c81ddb89f49ca43, - limb1: 0x12935edccb965832594b2d59, - limb2: 0xdaabf17d7b04eca5, + limb0: 0x1422834a9c2194663a9f2036, + limb1: 0x712d0057e7dd9f4f8eeceab3, + limb2: 0xe81d55b68d3f31b5, limb3: 0x0 }, u384 { - limb0: 0x64c9fc9409447539e0ded2e9, - limb1: 0xa80f1f45b434e5f80ccbda6c, - limb2: 0x9daea3eb0082e1e8, + limb0: 0x4fa3d534f17ae20930d4720c, + limb1: 0x2cd3081217a1316a9ba5a42c, + limb2: 0x5288b6d7f22d51c, limb3: 0x0 }, u384 { - limb0: 0x6d3b9de16b313bd6c2a7123c, - limb1: 0x118fb2f42705af9152ce6bdf, - limb2: 0xbb684f97d3ee6d1c, + limb0: 0x690e06da792f5d49e138afeb, + limb1: 0x5e1a04b4a847090626467e1f, + limb2: 0x4616075f485aa96f, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x4a213eb484d2aaa889753672, - limb1: 0x6e31d6de4a5d54513990bd75, - limb2: 0x50468b97f0403a15, + limb0: 0x7e2ecb420394ae09783fbf4f, + limb1: 0xa423fdf8032ad5b56e2f95f6, + limb2: 0x8e4dfa3a016b180a, limb3: 0x0 }, u384 { - limb0: 0xffcd74601b42dddf769b757b, - limb1: 0xf5e81c8fdf41459e33d03b74, - limb2: 0xb7dd88f55771437c, + limb0: 0x6ebcc8880a897ad13c034988, + limb1: 0xabd585187a9d9d5f18b1a1e7, + limb2: 0xd75a36dae9706806, limb3: 0x0 }, u384 { limb0: 0x7, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x784de462ee673cf2a5ec2914, - limb1: 0x3450434453c4309de3a6f67e, - limb2: 0xe6e581a7fdc0084c, + limb0: 0x5b2b419bb75e6200a376cf76, + limb1: 0x1772db236e2ab0d0c699156c, + limb2: 0xcb2fb60849587126, limb3: 0x0 }, u384 { - limb0: 0x491d59c4962e1fb210f1a286, - limb1: 0x232128a6d6c02e84508b7635, - limb2: 0x3ed681479ec709a4, + limb0: 0x34641ca5b85cc86676499a9c, + limb1: 0x864313037f3b167b4caba96a, + limb2: 0xb10ce343d834a125, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -33936,12 +33905,43 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0xe72f62b0b95306a3d6a56c5c, - limb1: 0x8d409930412de0bdd15e0638, - limb2: 0x616c377923e326fd, + limb0: 0x22bc676daa3cd5747105263c, + limb1: 0xcd08e0b80e8196375e13332d, + limb2: 0x27bc8956da88ccdb, limb3: 0x0 }, - g_rhs_sqrt: array![], + g_rhs_sqrt: array![ + u384 { + limb0: 0xf3913f0c4dc3bd7d7821e1b4, + limb1: 0xbc6f10832ff893d8b6caa1f8, + limb2: 0x4096cb72524039c0, + limb3: 0x0 + }, + u384 { + limb0: 0xcac231fe564d5f405fe753c1, + limb1: 0x15d4734c6b3ee9936726f95a, + limb2: 0x7eaca1673067282d, + limb3: 0x0 + }, + u384 { + limb0: 0x10ffaf3edda9b309fcdc66, + limb1: 0xc670eb7efd1afeab6ae771d4, + limb2: 0x7b41bbb026e3f9ca, + limb3: 0x0 + }, + u384 { + limb0: 0xe77a9d1eaef21f0407a846e2, + limb1: 0xe3b10fd8559e273f69d37402, + limb2: 0x7de4750739ce9b58, + limb3: 0x0 + }, + u384 { + limb0: 0xd747f33f1f0cfdfd036fd3f8, + limb1: 0x70c60c517fdd152be68f367c, + limb2: 0x667037e0727a077, + limb3: 0x0 + } + ], }; let res = msm_g1( points, scalars, scalars_digits_decompositions, msm_hint, derive_point_from_x_hint, 2 @@ -33949,15 +33949,15 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0x90bac1f714b8894dc966ca, - limb1: 0xade569e4ac4f6c156fb3c6d8, - limb2: 0xb729bd0bfad8faa8, + limb0: 0x97ad9ae598203a75c13a895, + limb1: 0xed9fb4bee5b2f54ca5cffb42, + limb2: 0x284782b62d08871c, limb3: 0x0 }, y: u384 { - limb0: 0xaceeacb3c059a1e89422f3a2, - limb1: 0xd02b294e858d61cc272ed88b, - limb2: 0x79523b253f20a956, + limb0: 0xfb082c65dab4069694f90f18, + limb1: 0xb12d25f5fb5e746c12686571, + limb2: 0x7d0eb16046d10c7e, limb3: 0x0 } } @@ -33970,43 +33970,43 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0xcb2533ce4b16b0b8c66382c2, - limb1: 0x44b11c24b445bc54c37f6d8, - limb2: 0x8e5056c2a1b78502, + limb0: 0x393dead57bc85a6e9bb44a70, + limb1: 0x64d4b065b3ede27cf9fb9e5c, + limb2: 0xda670c8c69a8ce0a, limb3: 0x0 }, y: u384 { - limb0: 0xc1603fb4c54a6517b49c1035, - limb1: 0x62b283d0ee5cf96d64358b13, - limb2: 0x6296a690967fbcfe, + limb0: 0x789872895ad7121175bd78f8, + limb1: 0xc0deb0b56fb251e8fb5d0a8d, + limb2: 0x3f10d670dc3297c2, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xad2949f2b273aab61207341b, - limb1: 0xa63c8a8be10392b04820681e, - limb2: 0xe121986b7689d45c, + limb0: 0xfdfdc509f368ba4395773d3a, + limb1: 0x8de2b60b577a13d0f83b578e, + limb2: 0xc2dd970269530ba2, limb3: 0x0 }, y: u384 { - limb0: 0x827665be590762d6130d5a09, - limb1: 0x887198d84fa72d8c938b389a, - limb2: 0x183ffef5c0d406a7, + limb0: 0x589fa250d638e35400c12ddf, + limb1: 0xb3aac19fcb5095808402aa7f, + limb2: 0xed6de6590d0195d1, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x699f4262c96c71c71e96703e, - limb1: 0xbc25f4d11b73fba0981caed4, - limb2: 0x4047c52e4c14b521, + limb0: 0x2965eeb3ec1fe786a6abe874, + limb1: 0x33e2545f82bb6add02788b8e, + limb2: 0xf586bc0db335d7b8, limb3: 0x0 }, y: u384 { - limb0: 0xac659dbd9bc8071f145ad66, - limb1: 0x1194266849e8f4bc00125eca, - limb2: 0x1a28316c7007d48, + limb0: 0x155b35991489db2fdf4de620, + limb1: 0xf24ce461346a182d67eeccf0, + limb2: 0xb4122bb4b37cc7d5, limb3: 0x0 } }, @@ -34014,13 +34014,13 @@ mod msm_tests { .span(); let scalars = array![ u256 { - low: 0xa18ebf04a03bdcbcf55d58eef27688df, high: 0x4ceb8a7ab302ea5e9a7c20e58aa1bd9f + low: 0x1846d424c17c627923c6612f48268673, high: 0xfcbd04c340212ef7cca5a5a19e4d6e3c }, u256 { - low: 0x1aae18f87f8a49bbff791c6649ae99db, high: 0xa0cde993cabcd1b0ce670d697a7a540 + low: 0xb4862b21fb97d43588561712e8e5216a, high: 0x259f4329e6f4590b9a164106cf6a659e }, u256 { - low: 0x1c49481f043a945e872e38d7479ae730, high: 0xb41b98e82e70f5e5305d59a2eb3786be + low: 0x12e0c8b2bad640fb19488dec4f65d4d9, high: 0x5487ce1eaf19922ad9b8a714e61a441c }, ] .span(); @@ -34032,88 +34032,87 @@ mod msm_tests { -0x1, 0x1, 0x0, - -0x1, - -0x1, - -0x1, - 0x0, - -0x1, 0x0, -0x1, - -0x1, - 0x0, - 0x1, - 0x1, 0x1, -0x1, 0x0, + -0x1, 0x0, 0x0, -0x1, 0x0, + 0x0, -0x1, + 0x1, 0x0, + 0x1, 0x0, -0x1, + 0x1, 0x0, 0x1, 0x0, + 0x0, 0x1, 0x1, + 0x0, -0x1, 0x1, + 0x0, + 0x0, + 0x0, + 0x0, 0x1, -0x1, - -0x1, - -0x1, 0x1, -0x1, - 0x1, - 0x1, + 0x0, 0x1, 0x0, + 0x0, -0x1, + 0x1, -0x1, + 0x0, -0x1, -0x1, 0x1, - 0x1, - 0x0, 0x0, + -0x1, 0x1, 0x0, - 0x0, - 0x0, 0x1, -0x1, - 0x0, + 0x1, + 0x1, 0x1, -0x1, 0x0, - 0x0, - 0x1, 0x1, 0x1, 0x0, -0x1, -0x1, 0x1, + 0x1, + 0x1, -0x1, - -0x1, + 0x0, -0x1, 0x1, 0x0, 0x0, 0x1, - 0x1, 0x0, - 0x1, + 0x0, + -0x1, -0x1, - 0x1, ] .span(), array![ - 0x1, - -0x1, + 0x0, + 0x0, -0x1, -0x1, 0x0, @@ -34123,405 +34122,398 @@ mod msm_tests { 0x1, -0x1, -0x1, - 0x0, - 0x1, - 0x1, - 0x0, - 0x1, 0x1, 0x0, 0x0, -0x1, -0x1, - -0x1, - -0x1, + 0x1, 0x1, -0x1, + 0x1, -0x1, + 0x0, 0x1, 0x1, + 0x0, -0x1, -0x1, - 0x1, -0x1, + 0x1, -0x1, 0x0, - 0x0, -0x1, 0x0, - 0x0, + -0x1, 0x0, -0x1, - 0x1, - 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x1, - 0x1, - 0x1, -0x1, - 0x1, -0x1, 0x1, 0x0, 0x0, 0x1, 0x1, - 0x1, + -0x1, 0x0, + -0x1, + 0x0, + -0x1, + -0x1, + -0x1, + -0x1, 0x1, + -0x1, 0x1, 0x1, 0x0, - 0x1, 0x0, - -0x1, + 0x0, 0x1, - -0x1, - -0x1, 0x1, - -0x1, + 0x0, -0x1, -0x1, 0x0, - 0x0, -0x1, + 0x1, + 0x0, -0x1, 0x0, 0x1, + 0x0, 0x1, + -0x1, + -0x1, + -0x1, + -0x1, + -0x1, ] .span() ), ( array![ - 0x1, - 0x1, + 0x0, -0x1, 0x0, + 0x0, + 0x1, + 0x1, 0x1, - -0x1, - -0x1, 0x1, 0x1, - -0x1, 0x0, + 0x0, + 0x1, -0x1, + 0x0, + 0x0, 0x1, 0x1, - -0x1, 0x1, - -0x1, - -0x1, 0x0, 0x1, 0x1, + 0x0, + -0x1, 0x1, 0x1, + 0x0, -0x1, 0x0, 0x0, -0x1, 0x1, - -0x1, - -0x1, - 0x0, 0x1, - -0x1, 0x1, - -0x1, 0x0, -0x1, - -0x1, - 0x1, 0x1, - -0x1, 0x0, 0x1, + 0x0, + -0x1, -0x1, 0x1, 0x1, 0x1, + 0x0, -0x1, + 0x1, + 0x1, + 0x0, -0x1, + 0x0, -0x1, -0x1, + 0x0, -0x1, 0x1, + 0x0, 0x1, 0x0, 0x1, 0x0, 0x0, - 0x1, 0x0, - -0x1, + 0x0, 0x1, - -0x1, - -0x1, + 0x0, 0x0, 0x1, 0x1, 0x0, 0x0, - 0x1, - -0x1, -0x1, + 0x1, -0x1, - 0x0, 0x1, -0x1, + -0x1, 0x1, 0x0, + 0x1, -0x1, -0x1, ] .span(), array![ - 0x1, - 0x1, + -0x1, + 0x0, + 0x0, -0x1, -0x1, 0x1, 0x1, + 0x1, 0x0, 0x0, 0x0, - 0x0, - 0x0, - 0x0, - 0x1, - 0x1, - 0x1, - 0x1, + -0x1, 0x1, 0x1, -0x1, - -0x1, - 0x0, - -0x1, 0x1, - -0x1, - -0x1, + 0x1, 0x0, 0x0, 0x0, - 0x1, 0x0, -0x1, 0x0, - 0x0, - 0x0, + -0x1, 0x1, 0x0, -0x1, 0x1, 0x1, 0x1, - 0x0, 0x1, 0x0, - 0x1, 0x0, -0x1, - -0x1, 0x1, -0x1, -0x1, - 0x1, -0x1, -0x1, 0x1, - -0x1, 0x0, 0x0, + 0x0, + 0x1, + -0x1, + -0x1, + 0x1, 0x1, 0x1, 0x0, 0x0, - 0x1, + 0x0, + -0x1, + 0x0, -0x1, 0x1, 0x0, -0x1, 0x1, 0x0, + 0x1, + 0x1, -0x1, 0x0, + 0x1, + 0x1, + -0x1, + -0x1, + 0x1, 0x0, + 0x1, + 0x1, 0x0, + 0x1, + 0x1, -0x1, 0x0, 0x0, + 0x0, -0x1, - 0x1, - 0x1, - 0x1, ] .span() ), ( array![ 0x0, - 0x1, -0x1, - 0x1, 0x0, -0x1, -0x1, 0x1, -0x1, -0x1, - 0x0, - -0x1, - 0x0, -0x1, 0x1, - 0x1, -0x1, 0x0, - 0x0, - 0x0, -0x1, - 0x0, + -0x1, + -0x1, 0x0, 0x1, - 0x0, -0x1, 0x1, -0x1, - -0x1, - 0x0, 0x1, - -0x1, 0x0, -0x1, - 0x0, + -0x1, 0x1, 0x1, + 0x1, + -0x1, 0x0, 0x0, -0x1, + 0x1, + 0x1, -0x1, - 0x0, - 0x0, -0x1, -0x1, -0x1, - 0x0, 0x1, - -0x1, + 0x1, 0x1, 0x0, - -0x1, 0x0, -0x1, 0x0, 0x1, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, 0x1, - 0x1, - -0x1, - -0x1, -0x1, 0x0, -0x1, + 0x0, 0x1, - -0x1, - -0x1, 0x0, - -0x1, - -0x1, 0x1, 0x0, 0x0, + 0x0, 0x1, + 0x0, -0x1, + 0x0, -0x1, 0x1, + 0x1, 0x0, + 0x1, + -0x1, + 0x0, + 0x1, + 0x1, + 0x1, + 0x1, -0x1, + 0x1, -0x1, -0x1, ] .span(), array![ + 0x1, 0x0, 0x1, - -0x1, - -0x1, - -0x1, - -0x1, + 0x1, + 0x1, + 0x1, + 0x1, -0x1, 0x1, 0x0, + 0x1, + 0x0, 0x0, - -0x1, 0x0, - 0x1, -0x1, -0x1, - 0x1, -0x1, - 0x1, - 0x1, - 0x0, - 0x1, - 0x1, - 0x1, -0x1, -0x1, - 0x0, 0x1, 0x1, - 0x0, + 0x1, + -0x1, 0x0, -0x1, 0x0, - 0x1, -0x1, 0x1, 0x0, 0x0, + -0x1, 0x0, 0x0, - -0x1, - 0x1, 0x1, - 0x0, + -0x1, -0x1, -0x1, 0x0, + -0x1, + -0x1, 0x1, + -0x1, 0x0, 0x1, - 0x1, - 0x0, 0x0, + -0x1, 0x1, - 0x0, + -0x1, 0x0, -0x1, - 0x1, -0x1, + 0x1, 0x0, 0x0, 0x1, - 0x1, - 0x1, - 0x1, - -0x1, -0x1, 0x1, + -0x1, 0x0, 0x0, 0x0, - 0x1, - 0x1, - 0x1, - 0x1, + -0x1, + -0x1, -0x1, -0x1, -0x1, @@ -34529,7 +34521,17 @@ mod msm_tests { 0x0, 0x1, -0x1, + 0x1, -0x1, + 0x1, + 0x0, + -0x1, + 0x1, + -0x1, + 0x0, + 0x1, + 0x1, + 0x1, ] .span() ), @@ -34539,97 +34541,97 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0x866d484edccd5a92f1f76e27, - limb1: 0xb30f23de58ba3f91ed9c278c, - limb2: 0xc1a4deb078c8b816, + limb0: 0xc70c3dce1f1516bc6fe9cc57, + limb1: 0x961b8d8e4079445e2fdb44f2, + limb2: 0xbd3e32617e9cd43e, limb3: 0x0 }, y: u384 { - limb0: 0x1167a5dfb26056985beee72f, - limb1: 0x2c58bf508fe25882ef2d646d, - limb2: 0xf9d4ad6d3d8d1fe4, + limb0: 0xc6ee68b642c640141beedb1f, + limb1: 0xdfa5e5cec2363eb7d34ca369, + limb2: 0x344c56f93228c496, limb3: 0x0 } }, Q_high: G1Point { x: u384 { - limb0: 0x9a74a49a62d922192f9e92df, - limb1: 0xe7009f915587c698f2e31d4d, - limb2: 0x810a16e5ffc2bba, + limb0: 0xe3eadee4a545684ef8c91ea3, + limb1: 0xae6e03c897fc6f35808bd04c, + limb2: 0x3e0be2e76d46e55a, limb3: 0x0 }, y: u384 { - limb0: 0xcbf8d8e152934b47bb246b2e, - limb1: 0x260b59ba895278d6530d23a8, - limb2: 0xbe1493cbc2cbb587, + limb0: 0x8a94996bbac047c61ee89db8, + limb1: 0x3f7151793fbe5bac01281400, + limb2: 0xc90d1f1205475796, limb3: 0x0 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0x1bd3cb23c0f9d4fe57354e06, - limb1: 0xebd33767fdc9768aa6e4cc8, - limb2: 0x179bd3a02ff75b2, + limb0: 0x416af352b429f9ce1aa23fb7, + limb1: 0xd7565dd48ab5717e46a80c1e, + limb2: 0x1bb781366e2b85fe, limb3: 0x0 }, y: u384 { - limb0: 0x3a8ab45b60a7ba6c74925d15, - limb1: 0x4741cd48718d48332931ed7d, - limb2: 0x7704953a1a9b9d1e, + limb0: 0x4eda1e9e90b6fd9d83bfc57b, + limb1: 0x2e836370c3c132c8e8468a2c, + limb2: 0x4d7409d1e32bc0db, limb3: 0x0 } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0x25978e1a2a89a80725b363fc, - limb1: 0x309d8310b4a2a5647cc4640a, - limb2: 0x27004bccc86430aa, + limb0: 0xca66e082758e43d627254e1e, + limb1: 0x9d465ff72b8458a4956cab65, + limb2: 0x18227f1009af607b, limb3: 0x0 }, u384 { - limb0: 0xf2bbb164cf0216783ba1f88a, - limb1: 0x47b07e21874e9d010c90b963, - limb2: 0x6614d5c5d82e4fda, + limb0: 0x64e6bf72d9673e95120fa3e0, + limb1: 0xf249089273d97effd036f2b9, + limb2: 0x65896bacc84ab5c1, limb3: 0x0 }, u384 { - limb0: 0x2a31ae4f28602e3609e9ca7d, - limb1: 0xd8ad1f05a9c6174b892d059a, - limb2: 0xa584a43f6f3f5f88, + limb0: 0x6f2110499c7a5d17c644fac4, + limb1: 0xcd0746b166edb2fa896be21c, + limb2: 0x88e863030a3e1fb9, limb3: 0x0 }, u384 { - limb0: 0xe39f47c37bead7b8c0bfdf08, - limb1: 0x114eee67, - limb2: 0x8000000000000000, + limb0: 0xc05b4feaad1297745262343e, + limb1: 0xffffffffffffffff623f2c61, + limb2: 0x7fffffffffffffff, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0x8171132d0bb16c5ca7c4f217, - limb1: 0x4ed86c7826707bf020d050fa, - limb2: 0xd973c8372424c8ce, + limb0: 0x6f125c38d2d889229d1c6def, + limb1: 0x92c80c0cd1a043f8b2b18605, + limb2: 0x9b33a9dc9de3bb4b, limb3: 0x0 }, u384 { - limb0: 0xbd69963209e1a8079125ce62, - limb1: 0x56e0bd0a7c225dbec01595fe, - limb2: 0xf5f14083d0a53004, + limb0: 0x448f5f321491ba21806c2eb2, + limb1: 0x7987b948160df6a003f511b3, + limb2: 0xc5bda97329d152df, limb3: 0x0 }, u384 { - limb0: 0xe256ba6219711724b7f7a09c, - limb1: 0xd4d38e16a712918ee42e929b, - limb2: 0xfc809f5b78e1731f, + limb0: 0xca5a1157bd525fd76a1f8054, + limb1: 0x6f2d995d40ff0bc14af3cd00, + limb2: 0x95ad393af6a25416, limb3: 0x0 }, u384 { - limb0: 0x97a4f78d5c3bd83417075f4b, - limb1: 0xe6434b025f89d657e5eecaa7, - limb2: 0x8ea16cf322e13968, + limb0: 0xd852239e8599ed06b83eb447, + limb1: 0x434ab7a131635a76db753993, + limb2: 0xaff66e01fb317a5c, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -34637,78 +34639,78 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xaa122a8b81559281e931318e, - limb1: 0x7e0fa42de3df0384988bf134, - limb2: 0xda3369832314d381, + limb0: 0xcea461b6e16123e9b3263ca7, + limb1: 0x14bbfb0c20ebbe9cee8cced2, + limb2: 0x6db9098a4bcd800b, limb3: 0x0 }, u384 { - limb0: 0x2cdac923eb720290d97716f1, - limb1: 0xcb31e33614d1ecdee5368986, - limb2: 0xb1e7179542b7bbad, + limb0: 0xa402af2b5ead86b897d406a7, + limb1: 0xb7f9882f54de11f615ae0a99, + limb2: 0xf13399be992e83b4, limb3: 0x0 }, u384 { - limb0: 0x473a649d8be8643dba6a0977, - limb1: 0xe3626dc4e2cb9524e740c7c6, - limb2: 0x5860f47b34d794d3, + limb0: 0x2bd479959d80b1a6ec1bdc84, + limb1: 0xde001e62385336a8065f6ee2, + limb2: 0x1258557b117e4e24, limb3: 0x0 }, u384 { - limb0: 0x6d2635a26df8f9713e14970a, - limb1: 0x70505529ef907667e274eabd, - limb2: 0x622ffa8f6bc91403, + limb0: 0x3db913668b81d993c5238b09, + limb1: 0x1e7fca502ed2507fbf69a090, + limb2: 0xc23cdb2525731de5, limb3: 0x0 }, u384 { - limb0: 0xc1fc54c29ea861e6474f4b12, - limb1: 0x914593f0b68fba7592ae4bdb, - limb2: 0xfb604e134cab04c1, + limb0: 0x25a0efe97fdce88b1f112b35, + limb1: 0xc9b0f213cf1760f9bb4accbe, + limb2: 0x2f7b6ad872fe0687, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x8a17863b51d9f68d9662b1b6, - limb1: 0x27eaf7490d136390e5b236d9, - limb2: 0xf22a7981fd017da4, + limb0: 0x980858dc3ebbff64bc710cd, + limb1: 0x3785459bb61dbcce2daaa26, + limb2: 0x3e69a508513a1f11, limb3: 0x0 }, u384 { - limb0: 0x2de31b5e452b983af808bb94, - limb1: 0x60252b4964f09037409719f7, - limb2: 0xb998c39ab484501e, + limb0: 0xdfeb9a5e8ffc16ef82f559f3, + limb1: 0x52b610f89a61be601bb37be6, + limb2: 0x682fa22624b9441c, limb3: 0x0 }, u384 { - limb0: 0x305f18aeb217a20707c57b2a, - limb1: 0xd1c8e29e9181fae83d460243, - limb2: 0xe7845b804e2a25de, + limb0: 0x887679662d409ee7e6dc9190, + limb1: 0xa3f318cc6f952490caa9b05, + limb2: 0x17bc909cbe704c9d, limb3: 0x0 }, u384 { - limb0: 0xa6f3d80a915455cd48f89c68, - limb1: 0x9aaf7988c33558576a57db8f, - limb2: 0xbfddc2dd184d5aac, + limb0: 0x5951558e7a0e0456a6d36ef5, + limb1: 0x69d311752b57bd38b2e61910, + limb2: 0x6af0abea7c3e13d1, limb3: 0x0 }, u384 { - limb0: 0xbd69963209e1a8079125ce69, - limb1: 0x56e0bd0a7c225dbec01595fe, - limb2: 0xf5f14083d0a53004, + limb0: 0x448f5f321491ba21806c2eb9, + limb1: 0x7987b948160df6a003f511b3, + limb2: 0xc5bda97329d152df, limb3: 0x0 }, u384 { - limb0: 0xe256ba6219711724b7f7a09c, - limb1: 0xd4d38e16a712918ee42e929b, - limb2: 0xfc809f5b78e1731f, + limb0: 0xca5a1157bd525fd76a1f8054, + limb1: 0x6f2d995d40ff0bc14af3cd00, + limb2: 0x95ad393af6a25416, limb3: 0x0 }, u384 { - limb0: 0x97a4f78d5c3bd83417075f4b, - limb1: 0xe6434b025f89d657e5eecaa7, - limb2: 0x8ea16cf322e13968, + limb0: 0xd852239e8599ed06b83eb447, + limb1: 0x434ab7a131635a76db753993, + limb2: 0xaff66e01fb317a5c, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -34718,54 +34720,54 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0x328bb3d3afe253047d16aa50, - limb1: 0x3593d3b593ee60decb39b4b5, - limb2: 0x1faa9849386f156e, + limb0: 0x3d95d250c95e6314962086c8, + limb1: 0xe74a41856ca7b3cc0e4dc3ab, + limb2: 0x4844b9351b9fca7d, limb3: 0x0 }, u384 { - limb0: 0xb232e143567f707c4ed340d6, - limb1: 0x93d9e76b71b2c934b3b4090e, - limb2: 0xef987a4a834acff5, + limb0: 0x5a167e6184686779b2969896, + limb1: 0x4f716a0b314816c6a7d27009, + limb2: 0x1aed862e6a20c1c9, limb3: 0x0 }, u384 { - limb0: 0x2f166a7fabe8c5d4e7a77f1f, - limb1: 0x52b90a83d45814a7f4f10f4, - limb2: 0xbebc96e07327bdcb, + limb0: 0xe7f93179d39198640a8fc7ae, + limb1: 0xa0e5cb06b47139cc23f93967, + limb2: 0x73d7026c9d50ced1, limb3: 0x0 }, u384 { - limb0: 0xc8781b538062b02ea952ffeb, - limb1: 0xffffffffffffffffa4fb9667, - limb2: 0xffffffffffffffff, + limb0: 0x520e4c77c71723cd9c3271aa, + limb1: 0xffffffffffffffff9c3abe44, + limb2: 0x7fffffffffffffff, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0xd0c77767c7d81ebab3b45293, - limb1: 0x9209a4048ce91bf8e3cfd1e4, - limb2: 0x6ed79cdbd7c3a050, + limb0: 0x600d13994d8ba801ef3140ae, + limb1: 0x787bd199eb11734892c7f1dd, + limb2: 0x2a2d6c490cae2d03, limb3: 0x0 }, u384 { - limb0: 0x881e8777ba40f115fdbea762, - limb1: 0xfb0708a8a4b6afa3c8ec8979, - limb2: 0x61e834aa28912108, + limb0: 0x611745bda9cb002df2faeed5, + limb1: 0x35474c26b9b85daae4752285, + limb2: 0xc66c0e607e0213ff, limb3: 0x0 }, u384 { - limb0: 0x80b70e8153025d1f53365325, - limb1: 0x4d0393116d5e6e5e43553c54, - limb2: 0x47fae37b4091e83e, + limb0: 0x21ea6d74f11368295d39572f, + limb1: 0xd855f66fb0721f141990ead2, + limb2: 0x85394f1364767f54, limb3: 0x0 }, u384 { - limb0: 0x839d9b41d63010aed9603e64, - limb1: 0xb251cf4f62bc4f50e0a7d4e6, - limb2: 0x4835aa353badc5c4, + limb0: 0xbb738287ff699b752f5f65cc, + limb1: 0x2af84166d9e02f9f8ac4ae39, + limb2: 0x2f28bd7c0c876940, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -34773,78 +34775,78 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xea245810de0a6546a789addd, - limb1: 0x2304aef2ca4b4b8d8ff9a1c9, - limb2: 0xcda2ac2187d47d3d, + limb0: 0x384217b4971818c36bf8139a, + limb1: 0x80e3e9ee21607d4ffc4c0a10, + limb2: 0x6add60666957cabe, limb3: 0x0 }, u384 { - limb0: 0x4219a6f292110a2460db1e5a, - limb1: 0x1c9bd6be9a11a8f92d59c2cf, - limb2: 0x6e480b37c5f5bff3, + limb0: 0x4dba6b456794b5586ae30979, + limb1: 0xe52e26cb76a95a1e31ba355c, + limb2: 0x3eafbd1c5a9fff65, limb3: 0x0 }, u384 { - limb0: 0x8e7787007023788151034cf4, - limb1: 0xf6c27a318dfed085bd5ff39, - limb2: 0x99b7277dba7427a3, + limb0: 0xb99d17936e0d78ed3d809ed0, + limb1: 0xbb2309c6f0ba65d6a9c9c9eb, + limb2: 0xfff7782bd516ff5f, limb3: 0x0 }, u384 { - limb0: 0xd22612d9d63ec4d7d58f8c04, - limb1: 0x24fa4436c2dc3dd74cfb923b, - limb2: 0xd69cc4a513c11701, + limb0: 0x4ac7a51e2cd3e8fe1d6c4959, + limb1: 0xabf3a8d1a62d686110527fe6, + limb2: 0xbbee1005114b22ff, limb3: 0x0 }, u384 { - limb0: 0x4a4e0eebfbbd9a9c0416db23, - limb1: 0x2670188b80355c6f0c8e36f0, - limb2: 0x232461af4a99cdad, + limb0: 0xa8a5f16f106d846c85461f6b, + limb1: 0x1b43492eb002d2b6cafa79c4, + limb2: 0x4a74d4ee7bd2f700, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xb57443d676e8d71de9ee4d78, - limb1: 0xfe437c1fda5fc3ce3aaebd41, - limb2: 0x7e54a02e6596233, + limb0: 0xa05b89311ed1980e8a58c893, + limb1: 0x4b62bb356d7a26fc03779d0d, + limb2: 0x273df5ff58c33b18, limb3: 0x0 }, u384 { - limb0: 0xb8d5b44617c6979bf0369b50, - limb1: 0xdd313c9c80fecd7a7e77c252, - limb2: 0xad5970a71bf7e73e, + limb0: 0xa7a2e82fa48d0146a4dc9ae8, + limb1: 0x74f3150f140a8fac3f33f1a5, + limb2: 0x6cf464a3720e8bfa, limb3: 0x0 }, u384 { - limb0: 0x8501658945108bdc467c49d4, - limb1: 0x1b190579fd950493d754a64f, - limb2: 0xf7dc385ec3fd59b4, + limb0: 0xed68fe329787d9248c916dbc, + limb1: 0xea59bd0dd31ed98cb2f66bbe, + limb2: 0xa4912987bf3d7b51, limb3: 0x0 }, u384 { - limb0: 0x6a16b634a3289384a5560ef1, - limb1: 0x72464f30400f472f0866a432, - limb2: 0x684f4450798408b1, + limb0: 0x8035a551496ee8373acd0d13, + limb1: 0xa5459b69e032c0a55e28b571, + limb2: 0x744a9aad64620dc4, limb3: 0x0 }, u384 { - limb0: 0x881e8777ba40f115fdbea769, - limb1: 0xfb0708a8a4b6afa3c8ec8979, - limb2: 0x61e834aa28912108, + limb0: 0x611745bda9cb002df2faeedc, + limb1: 0x35474c26b9b85daae4752285, + limb2: 0xc66c0e607e0213ff, limb3: 0x0 }, u384 { - limb0: 0x80b70e8153025d1f53365325, - limb1: 0x4d0393116d5e6e5e43553c54, - limb2: 0x47fae37b4091e83e, + limb0: 0x21ea6d74f11368295d39572f, + limb1: 0xd855f66fb0721f141990ead2, + limb2: 0x85394f1364767f54, limb3: 0x0 }, u384 { - limb0: 0x839d9b41d63010aed9603e64, - limb1: 0xb251cf4f62bc4f50e0a7d4e6, - limb2: 0x4835aa353badc5c4, + limb0: 0xbb738287ff699b752f5f65cc, + limb1: 0x2af84166d9e02f9f8ac4ae39, + limb2: 0x2f28bd7c0c876940, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -34854,9 +34856,9 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0xcdc949f5e13905d9afc32cf4, - limb1: 0xc011a38edadd458bd6d7c753, - limb2: 0x8a705066548c32c8, + limb0: 0xcc962258d81a685abc6a72b9, + limb1: 0x2d6c094cb820ab0df6594dbc, + limb2: 0x9e7ead8659fb210b, limb3: 0x0 }, u384 { @@ -34869,15 +34871,15 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0xa25f9d75c82e962e19fe73fa, - limb1: 0x452cb72bf959ef46739166f8, - limb2: 0xed91956ccb22ac15, + limb0: 0xa8297b51d51d3a85dc25b399, + limb1: 0x96e061418ed1fb34282e1751, + limb2: 0x5316c2717d875b5b, limb3: 0x0 }, u384 { - limb0: 0x49b79041dc2d08e7792c1b4a, - limb1: 0xa422cf82a9ba1fe62ae95ea, - limb2: 0xf675a1579d045e93, + limb0: 0xdaaa2dc8a6909de1ec949dd5, + limb1: 0x7a3b9e62dd4e1f4c38cc2394, + limb2: 0xa63c9be2248d94a6, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -34885,49 +34887,49 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x5c4957cec2b336694bd84d7, - limb1: 0x2e1d4fde140016229d563496, - limb2: 0x2f8766b6ace95595, + limb0: 0x183e1a7f16daaeab319501e, + limb1: 0xc12667bcb4c6049aa74de82b, + limb2: 0x28cde1f32a4db7d0, limb3: 0x0 }, u384 { - limb0: 0xea79d9d191b9a0dd3494d5a5, - limb1: 0x43e288d03324201b46f68e3a, - limb2: 0x220f5a2925c83b4d, + limb0: 0x270e9bf653b41858ce71ad91, + limb1: 0x52682d3082463c5deaa2df0, + limb2: 0xfea6fd912e3a2f11, limb3: 0x0 }, u384 { - limb0: 0x57cd7bc0d20b1981b20e5261, - limb1: 0x89a24472f51d79aa7dac77c3, - limb2: 0x3cf1c2282d934a7f, + limb0: 0xe7dc823aecb18214a14b81dc, + limb1: 0xead4f32c7e23a9a53be5740b, + limb2: 0x4c83f88ada8b8e4f, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x709d4e3879461b48b5f542bc, - limb1: 0xe4390233d1758aed28f9d0cc, - limb2: 0x7efb15f98df2b494, + limb0: 0x99225f3cd3cc99ab0507f0d1, + limb1: 0x2022a8cae7bdde6d1942a33b, + limb2: 0x459f511a6eb37f81, limb3: 0x0 }, u384 { - limb0: 0x404f1cd053b3e5a5034d5ec, - limb1: 0x47cf3ac92a416df4b2c61968, - limb2: 0xbd3769654b1e9605, + limb0: 0xfaa7407c8df4513178106017, + limb1: 0x57a154b40d22db158d94f911, + limb2: 0x8ba8432effdf108d, limb3: 0x0 }, u384 { limb0: 0x7, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xa25f9d75c82e962e19fe73fa, - limb1: 0x452cb72bf959ef46739166f8, - limb2: 0xed91956ccb22ac15, + limb0: 0xa8297b51d51d3a85dc25b399, + limb1: 0x96e061418ed1fb34282e1751, + limb2: 0x5316c2717d875b5b, limb3: 0x0 }, u384 { - limb0: 0x49b79041dc2d08e7792c1b4a, - limb1: 0xa422cf82a9ba1fe62ae95ea, - limb2: 0xf675a1579d045e93, + limb0: 0xdaaa2dc8a6909de1ec949dd5, + limb1: 0x7a3b9e62dd4e1f4c38cc2394, + limb2: 0xa63c9be2248d94a6, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -34937,16 +34939,16 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0xd9d3fa9f5f9ab33b0aea1507, - limb1: 0xba7187e355a08a83dd44751b, - limb2: 0x6fb53076fe034213, + limb0: 0x2f60d20f28e23802f965eea, + limb1: 0x54c7e4c2d66ae3384b388505, + limb2: 0x3e0803cd00ad9d71, limb3: 0x0 }, g_rhs_sqrt: array![ u384 { - limb0: 0x1f805aadf8e0d59e509070e7, - limb1: 0x6ee4f3e30f771138a4be10b5, - limb2: 0x2c658768510d272f, + limb0: 0x90717ae25b20c406d1ab5dbd, + limb1: 0x48792027741863f6a6809aa6, + limb2: 0x69712eecb87f079c, limb3: 0x0 } ], @@ -34957,15 +34959,15 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0xcc5457251ac194ae7c6467b5, - limb1: 0x32cffbb0297a50f92e356991, - limb2: 0xfd6c8bdc581f4dad, + limb0: 0x793f03cb81255db0817da454, + limb1: 0x5ed27cf7207443f37bfeee3c, + limb2: 0x42943c6416752a12, limb3: 0x0 }, y: u384 { - limb0: 0x5eea6d6c40e5755a07720861, - limb1: 0x16523f6e7bc794502eb36768, - limb2: 0xc1b221e6732e0742, + limb0: 0xf2d25838b8b95a3caaef5ce4, + limb1: 0xce58bfff9d25e997305603f3, + limb2: 0x5d776495b03d0b6c, limb3: 0x0 } } @@ -34978,57 +34980,57 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0x9db4f484854f45c914f584aa, - limb1: 0x6f486474b535a1785f1a2fa4, - limb2: 0x675cc7d0b4fc7784, + limb0: 0x393dead57bc85a6e9bb44a70, + limb1: 0x64d4b065b3ede27cf9fb9e5c, + limb2: 0xda670c8c69a8ce0a, limb3: 0x0 }, y: u384 { - limb0: 0x1398becbff6fe4da49773ca7, - limb1: 0xa27452254963d04bb2a1dcd2, - limb2: 0x684285f626ab2df7, + limb0: 0x789872895ad7121175bd78f8, + limb1: 0xc0deb0b56fb251e8fb5d0a8d, + limb2: 0x3f10d670dc3297c2, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x6e965c8ef5297aa31792e94c, - limb1: 0x8ddd2f527ce9e919fb5be4ef, - limb2: 0xac016840a0552a0d, + limb0: 0xfdfdc509f368ba4395773d3a, + limb1: 0x8de2b60b577a13d0f83b578e, + limb2: 0xc2dd970269530ba2, limb3: 0x0 }, y: u384 { - limb0: 0x92f601db3bb3059750b49021, - limb1: 0xe7655195f4c05deb481945e2, - limb2: 0xc1205940b468e7b, + limb0: 0x589fa250d638e35400c12ddf, + limb1: 0xb3aac19fcb5095808402aa7f, + limb2: 0xed6de6590d0195d1, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xe475cbb8bc29d34beb241249, - limb1: 0x34e4408e725e44fcad6c2ca6, - limb2: 0xc4857ecee324178e, + limb0: 0x2965eeb3ec1fe786a6abe874, + limb1: 0x33e2545f82bb6add02788b8e, + limb2: 0xf586bc0db335d7b8, limb3: 0x0 }, y: u384 { - limb0: 0x7c8da49401a3575e98ec7af7, - limb1: 0xb7328160463c698d66d9c1d9, - limb2: 0xf4faa17e9cce28c4, + limb0: 0x155b35991489db2fdf4de620, + limb1: 0xf24ce461346a182d67eeccf0, + limb2: 0xb4122bb4b37cc7d5, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x198102475f672fb15128d6fa, - limb1: 0x980ea43fa5de414613f1f4f8, - limb2: 0x937ea1f52baf5f32, + limb0: 0x12815740835b12f70b96c66f, + limb1: 0xbfa76a8b80aec9f2e31c40cc, + limb2: 0xcd8a26d17d33c7c1, limb3: 0x0 }, y: u384 { - limb0: 0x266c5b406217aa67fcfd2d40, - limb1: 0x84b6d6516165655501d56a09, - limb2: 0x3b9e70fc5fc40825, + limb0: 0x9a8f496f09402b8fd6beb89b, + limb1: 0x28e48918dad2123d7f202bef, + limb2: 0xcdd11b6ffb3f8614, limb3: 0x0 } }, @@ -35036,16 +35038,16 @@ mod msm_tests { .span(); let scalars = array![ u256 { - low: 0x9f09304fb382e25fc370e643ce430e91, high: 0x3c8d5ec3a6c5616acc29404f8edd5b72 + low: 0xb4862b21fb97d43588561712e8e5216a, high: 0x259f4329e6f4590b9a164106cf6a659e }, u256 { - low: 0xeba71f554ef608a6e28e0dc078dc1ef9, high: 0xd43bcfc33479d19380445ac49c153e62 + low: 0x12e0c8b2bad640fb19488dec4f65d4d9, high: 0x5487ce1eaf19922ad9b8a714e61a441c }, u256 { - low: 0x50c47c2cbc00d3decc8912c1b039ebee, high: 0x58657f3769e933b18224bd9112a1e47c + low: 0x5a92118719c78df48f4ff31e78de5857, high: 0xa3f2c9bf9c6316b950f244556f25e2a2 }, u256 { - low: 0xbedc37d18f325f312e2cd85fcef7750, high: 0x78b65d0bd8886ebab1e312441b687dc1 + low: 0x8d723104f77383c13458a748e9bb17bc, high: 0x85776e9add84f39e71545a137a1d5006 }, ] .span(); @@ -35053,171 +35055,171 @@ mod msm_tests { array![ ( array![ + 0x0, -0x1, 0x0, - 0x1, 0x0, 0x1, - -0x1, - -0x1, + 0x1, + 0x1, + 0x1, + 0x1, 0x0, - -0x1, - -0x1, - -0x1, 0x0, 0x1, -0x1, 0x0, - 0x1, - -0x1, 0x0, 0x1, 0x1, + 0x1, 0x0, 0x1, + 0x1, 0x0, + -0x1, + 0x1, + 0x1, 0x0, + -0x1, 0x0, 0x0, + -0x1, + 0x1, + 0x1, 0x1, 0x0, -0x1, 0x1, - -0x1, + 0x0, 0x1, + 0x0, -0x1, -0x1, - 0x0, - 0x1, 0x1, - 0x0, 0x1, 0x1, 0x0, + -0x1, + 0x1, 0x1, 0x0, -0x1, 0x0, -0x1, - 0x1, -0x1, + 0x0, -0x1, 0x1, - 0x1, - 0x0, 0x0, 0x1, - -0x1, 0x0, - -0x1, + 0x1, 0x0, - -0x1, - -0x1, 0x0, 0x0, 0x0, - -0x1, - -0x1, 0x1, - -0x1, + 0x0, + 0x0, 0x1, 0x1, + 0x0, + 0x0, -0x1, 0x1, -0x1, - -0x1, 0x1, -0x1, - 0x0, -0x1, + 0x1, 0x0, 0x1, -0x1, - 0x1, + -0x1, ] .span(), array![ -0x1, - 0x1, - -0x1, - -0x1, - -0x1, - 0x1, - -0x1, + 0x0, + 0x0, -0x1, -0x1, 0x1, - -0x1, - -0x1, - -0x1, - -0x1, 0x1, - 0x0, - -0x1, - 0x0, - 0x0, 0x1, - -0x1, 0x0, 0x0, 0x0, -0x1, - -0x1, - 0x0, 0x1, - 0x0, - -0x1, - -0x1, 0x1, -0x1, 0x1, + 0x1, 0x0, - -0x1, 0x0, 0x0, 0x0, + -0x1, 0x0, -0x1, 0x1, 0x0, + -0x1, 0x1, 0x1, 0x1, 0x1, 0x0, 0x0, + -0x1, + 0x1, + -0x1, + -0x1, + -0x1, + -0x1, + 0x1, + 0x0, 0x0, 0x0, 0x1, -0x1, + -0x1, + 0x1, + 0x1, 0x1, 0x0, 0x0, 0x0, + -0x1, 0x0, -0x1, + 0x1, 0x0, + -0x1, + 0x1, 0x0, 0x1, 0x1, - 0x0, -0x1, + 0x0, 0x1, - -0x1, 0x1, -0x1, + -0x1, 0x1, + 0x0, 0x1, 0x1, 0x0, - 0x0, 0x1, - 0x0, + 0x1, -0x1, 0x0, + 0x0, + 0x0, -0x1, - 0x1, - 0x1, ] .span() ), @@ -35225,301 +35227,302 @@ mod msm_tests { array![ 0x0, -0x1, - 0x1, + 0x0, -0x1, -0x1, 0x1, - 0x1, - 0x1, -0x1, - 0x1, -0x1, - 0x0, - 0x0, + -0x1, 0x1, -0x1, 0x0, + -0x1, + -0x1, + -0x1, 0x0, 0x1, - 0x0, - -0x1, -0x1, 0x1, - 0x0, + -0x1, 0x1, 0x0, -0x1, -0x1, 0x1, - 0x0, - 0x0, + 0x1, 0x1, -0x1, 0x0, 0x0, -0x1, 0x1, + 0x1, + -0x1, + -0x1, + -0x1, -0x1, 0x1, 0x1, - 0x0, 0x1, - -0x1, - -0x1, 0x0, 0x0, - 0x1, -0x1, - 0x1, 0x0, 0x1, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, 0x1, - 0x1, - 0x1, - 0x1, - 0x1, + -0x1, 0x0, -0x1, + 0x0, 0x1, 0x0, 0x1, 0x0, 0x0, + 0x0, 0x1, + 0x0, -0x1, - -0x1, - -0x1, - -0x1, - -0x1, + 0x0, -0x1, 0x1, 0x1, 0x0, + 0x1, -0x1, 0x0, - 0x0, 0x1, 0x1, - 0x0, 0x1, - 0x0, + 0x1, + -0x1, + 0x1, -0x1, -0x1, ] .span(), array![ - -0x1, - 0x1, 0x1, - -0x1, 0x0, - -0x1, 0x1, - -0x1, 0x1, 0x1, 0x1, - 0x0, - 0x1, - -0x1, - 0x0, 0x1, -0x1, 0x1, + 0x0, 0x1, - -0x1, + 0x0, + 0x0, 0x0, -0x1, -0x1, - 0x0, -0x1, - 0x1, + -0x1, -0x1, 0x1, 0x1, 0x1, - 0x1, - 0x0, -0x1, - 0x1, - 0x1, - 0x0, 0x0, -0x1, 0x0, + -0x1, 0x1, 0x0, 0x0, + -0x1, 0x0, 0x0, 0x1, - 0x1, + -0x1, + -0x1, + -0x1, 0x0, + -0x1, + -0x1, 0x1, - 0x0, - 0x0, -0x1, 0x0, + 0x1, 0x0, - 0x0, + -0x1, + 0x1, + -0x1, 0x0, -0x1, -0x1, 0x1, 0x0, + 0x0, 0x1, -0x1, 0x1, + -0x1, + 0x0, 0x0, - 0x1, - 0x1, 0x0, -0x1, - 0x1, -0x1, - 0x1, - 0x0, -0x1, - 0x0, -0x1, -0x1, 0x1, + 0x0, + 0x1, -0x1, + 0x1, -0x1, - -0x1, + 0x1, 0x0, -0x1, + 0x1, -0x1, + 0x0, + 0x1, + 0x1, + 0x1, ] .span() ), ( array![ - 0x1, + -0x1, 0x0, - 0x1, - 0x1, 0x0, 0x1, - 0x1, 0x0, 0x0, - 0x0, - 0x1, - -0x1, -0x1, -0x1, + 0x1, -0x1, -0x1, - 0x0, - 0x0, 0x1, -0x1, - 0x0, -0x1, 0x0, - 0x0, - 0x1, - 0x0, - 0x1, - 0x0, + -0x1, + -0x1, + -0x1, 0x1, -0x1, 0x1, 0x0, 0x0, - 0x0, - 0x0, -0x1, 0x0, 0x0, 0x0, 0x0, 0x1, + 0x0, + -0x1, -0x1, 0x1, - 0x1, - 0x0, -0x1, 0x0, 0x0, 0x1, - -0x1, 0x1, -0x1, 0x1, + 0x0, + 0x0, + -0x1, + 0x0, + -0x1, 0x1, -0x1, + 0x0, + -0x1, 0x1, -0x1, 0x1, + 0x1, + -0x1, 0x0, 0x0, - 0x0, - 0x0, - -0x1, -0x1, 0x1, + -0x1, 0x1, -0x1, -0x1, + 0x0, + 0x1, -0x1, + 0x0, -0x1, - 0x1, + 0x0, -0x1, - 0x1, + 0x0, -0x1, + 0x0, 0x1, 0x1, + 0x0, + 0x0, + 0x0, -0x1, 0x1, 0x1, 0x1, - 0x1, ] .span(), array![ + -0x1, + -0x1, 0x0, 0x0, 0x1, - 0x1, 0x0, + -0x1, 0x1, + -0x1, + -0x1, + -0x1, + 0x0, 0x0, 0x1, 0x1, + -0x1, 0x1, 0x1, 0x1, - 0x0, 0x1, - -0x1, - 0x0, - -0x1, 0x0, 0x1, - -0x1, 0x1, 0x1, - -0x1, 0x0, 0x0, - -0x1, 0x0, 0x1, - -0x1, 0x0, 0x0, + -0x1, + 0x1, + 0x1, 0x0, 0x1, + 0x0, + -0x1, 0x1, -0x1, -0x1, - 0x0, - 0x0, -0x1, - 0x0, -0x1, + 0x1, + -0x1, + 0x1, 0x0, -0x1, 0x0, @@ -35527,206 +35530,204 @@ mod msm_tests { -0x1, 0x0, -0x1, + 0x0, + 0x0, 0x1, 0x0, - -0x1, - -0x1, + 0x1, + 0x0, + 0x1, 0x0, -0x1, 0x0, + -0x1, + -0x1, 0x0, -0x1, -0x1, -0x1, 0x0, - 0x1, - 0x1, 0x0, - 0x1, 0x0, + -0x1, + 0x1, 0x1, 0x1, - -0x1, - 0x0, -0x1, -0x1, - 0x1, -0x1, 0x1, - 0x1, -0x1, 0x1, - 0x0, - 0x1, - 0x1, - 0x1, ] .span() ), ( array![ - -0x1, - -0x1, 0x0, - -0x1, 0x1, - -0x1, + 0x1, 0x0, -0x1, 0x1, 0x0, 0x1, - 0x1, -0x1, 0x1, + 0x1, -0x1, - 0x0, - 0x0, + 0x1, -0x1, 0x1, + -0x1, + -0x1, 0x1, 0x0, + 0x0, -0x1, 0x1, 0x0, 0x0, + 0x0, + 0x0, + 0x1, + -0x1, + 0x1, + 0x1, -0x1, 0x1, 0x0, 0x1, + 0x0, + 0x0, + 0x0, + 0x0, + 0x1, -0x1, -0x1, 0x0, + 0x1, -0x1, 0x0, -0x1, 0x1, + 0x1, + -0x1, + 0x0, 0x0, 0x0, -0x1, -0x1, - -0x1, - 0x1, - 0x1, 0x0, -0x1, 0x1, - 0x1, - 0x1, + 0x0, + 0x0, 0x1, 0x1, -0x1, - 0x1, - 0x1, + 0x0, + 0x0, 0x1, -0x1, 0x0, -0x1, - -0x1, 0x1, 0x1, - -0x1, - -0x1, - 0x1, + 0x0, 0x1, 0x0, -0x1, - 0x1, - 0x1, + 0x0, + 0x0, 0x1, -0x1, - 0x1, - 0x1, -0x1, -0x1, - 0x0, - 0x1, - 0x0, - 0x0, 0x1, ] .span(), array![ 0x1, - 0x1, - 0x1, 0x0, 0x0, + 0x0, + 0x1, + -0x1, 0x1, 0x0, 0x1, 0x1, -0x1, 0x1, - -0x1, 0x0, -0x1, 0x0, - -0x1, - -0x1, - -0x1, 0x1, -0x1, - 0x1, - 0x0, 0x0, + -0x1, 0x1, 0x1, -0x1, + 0x0, 0x1, - -0x1, 0x1, -0x1, -0x1, - -0x1, 0x1, + 0x1, + 0x0, -0x1, 0x0, + 0x0, -0x1, -0x1, 0x1, - 0x1, + 0x0, + -0x1, 0x0, 0x1, 0x0, 0x1, + 0x1, 0x0, 0x1, 0x0, -0x1, -0x1, -0x1, - 0x0, - -0x1, 0x1, 0x1, - -0x1, 0x0, + -0x1, 0x1, 0x0, + 0x1, 0x0, 0x0, - 0x1, -0x1, 0x1, + 0x0, 0x1, + -0x1, 0x1, - 0x0, - 0x0, 0x1, + -0x1, 0x0, 0x1, + -0x1, 0x1, - 0x0, -0x1, 0x0, + 0x0, + 0x0, -0x1, -0x1, - 0x0, 0x1, 0x1, - 0x1, - 0x0, + -0x1, + -0x1, 0x1, ] .span() @@ -35737,75 +35738,75 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0x251201724f9c63d8468c62d9, - limb1: 0x7ae56dc9ba89288926b6911c, - limb2: 0xa99cc6b880d24c1d, + limb0: 0x43727141d8d74b6cfa956f03, + limb1: 0xd9c9f11e6d95f9244b7bfc7e, + limb2: 0x66e1a866f3d127b0, limb3: 0x0 }, y: u384 { - limb0: 0x510f46e46c85f3a0797c3e43, - limb1: 0xbdb01baebfeb8b5974877c, - limb2: 0xab762f8d1333eb97, + limb0: 0xcdedfc606a1da4dcb83cbb4, + limb1: 0xe4445a1bde3b10dc332dffd0, + limb2: 0xf0f6c7f6bf4ac76, limb3: 0x0 } }, Q_high: G1Point { x: u384 { - limb0: 0xbfc5a09c56a03eb5e4e8a0fb, - limb1: 0x90e4ab3e6b9a878477b731d4, - limb2: 0x72af3a49c9c2a046, + limb0: 0xc90fdf7e26e6dc27b7ea24e, + limb1: 0x9dae6114b5ad635e065cdcd9, + limb2: 0x630ffa57a644d7b5, limb3: 0x0 }, y: u384 { - limb0: 0x502daa51aa1a362b732bb33e, - limb1: 0x3fb44c457f6c4694b0ccb0be, - limb2: 0x2ca3352a4c369c36, + limb0: 0xdaf2701e59c0ff7ea6b011e1, + limb1: 0xf01d8b9db4860649bf7b043f, + limb2: 0x18e959d0a4f8689d, limb3: 0x0 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0xa05224f640de072853359222, - limb1: 0x1077ad6566f0066b5f882585, - limb2: 0x29242531da11ac14, + limb0: 0x6e0587c0898c42148e2ae987, + limb1: 0x8b65c20c560dcfd22f7c3e64, + limb2: 0x63627e7e519a12e7, limb3: 0x0 }, y: u384 { - limb0: 0xbe5f00161c8bccda2e2aab9b, - limb1: 0x319e57416415c434ac879299, - limb2: 0x81f1179be56dd4cb, + limb0: 0x2ce8217d2ef6cdee1a7aa64, + limb1: 0xe9f6f9936885aada422a4d95, + limb2: 0xf3ad9d14a2a6361d, limb3: 0x0 } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0xa2eb2d208822e5ff9ab9ec7a, - limb1: 0xb29a2d409e91a41c4a6fa783, - limb2: 0x795042c0ef58ae08, + limb0: 0x25ad1ec0168aa524260cd7ae, + limb1: 0x1649457a2f581b60f0b889bd, + limb2: 0x4932be163bf4a86, limb3: 0x0 }, u384 { - limb0: 0xe268d4864cad30345196e1f7, - limb1: 0x2f10730b385be07f08060865, - limb2: 0x2a11347723a0d0fc, + limb0: 0x43d2d8f5a4092358695baaad, + limb1: 0xc8ab1b4e593d369b951b8e1d, + limb2: 0x759a14d48ec169cf, limb3: 0x0 }, u384 { - limb0: 0x2a8a468336733a1939fd9b0e, - limb1: 0x5d58fc38f55f7b0856ca568, - limb2: 0x1daa5fba9dc1f21f, + limb0: 0x81911bc3d1544f67193de3d9, + limb1: 0x51b98e774b8979beae4f287a, + limb2: 0xbec7f5562bef0e42, limb3: 0x0 }, u384 { - limb0: 0xa904e7580aed584c6e485dd9, - limb1: 0x962d89308ef83bbe8bb24343, - limb2: 0x559cf6971acfba0, + limb0: 0x273d103c51ca50e70d67cc69, + limb1: 0x7db70db6bb5ae233ebe8ddcf, + limb2: 0x83c4998ef97dfafc, limb3: 0x0 }, u384 { - limb0: 0xf5651ad751fc8d6b9958ef37, - limb1: 0xfffffffffffffffff3100a35, + limb0: 0xb8a2430fcf7ce5e0720d6292, + limb1: 0xffffffffffffffffc1d65734, limb2: 0x7fffffffffffffff, limb3: 0x0 } @@ -35813,33 +35814,33 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0xaf72f871795067908b3cff03, - limb1: 0x1e80e991812b34a3b76b9fe0, - limb2: 0x4948b2a587168c4, + limb0: 0x65951db4c0eecd9794b993ed, + limb1: 0xf2ed9fd8f428c0821c2a4447, + limb2: 0x253a864d09c395bf, limb3: 0x0 }, u384 { - limb0: 0x90eea671a29de5462d6f18dc, - limb1: 0xbf206cfa5289df3ff17c046f, - limb2: 0x1c83f1164f7d4949, + limb0: 0xe83023c241159f5f5d320717, + limb1: 0x106fc2e61c6e4d271393af12, + limb2: 0x2334a7dc42a28057, limb3: 0x0 }, u384 { - limb0: 0x3a6c5a6ae7664337d1ff7c68, - limb1: 0x6caa1054d29b0e5609b9450e, - limb2: 0xe0e0e5c06c8d0355, + limb0: 0x53e8902b28bbeb977243ddce, + limb1: 0x78f911c7ec469510c414e382, + limb2: 0x52869098f949de86, limb3: 0x0 }, u384 { - limb0: 0xdefb601777887ad92c384921, - limb1: 0xffea816cc059a14103fd398c, - limb2: 0x33a54fed8946fa92, + limb0: 0x3cfd67aa347a5130ae3c1ab4, + limb1: 0xd8476cf26cc5ed863f865f67, + limb2: 0xfe833700306ce03c, limb3: 0x0 }, u384 { - limb0: 0xd0abdf7a1a59d8ba509e36aa, - limb1: 0xbb0219a0fb1ac6a1bd7538b0, - limb2: 0xeb00e8721b089b8f, + limb0: 0x496a98ea487ca55f21fc4b2c, + limb1: 0x3ff4e9858397dbbddcb8413c, + limb2: 0x38c8d12b08c95f28, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -35847,90 +35848,90 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x8b69b1ef35a5c40926075aba, - limb1: 0x87e2de88fb6b86bcc607a3ba, - limb2: 0xa4b0be5132721ec8, + limb0: 0xd67caa793a62dbcd0bb97ca3, + limb1: 0x8e6329cb25c7f1b4e39d0a84, + limb2: 0xa094ce3de40a7b82, limb3: 0x0 }, u384 { - limb0: 0x310f0eed2da31426ac747e80, - limb1: 0xf7d82c29e2d5bc340dd966fa, - limb2: 0x5bf69e0be0c4e161, + limb0: 0xfe72832d11afe808dc62c064, + limb1: 0x537cfb6f3a325061ee919372, + limb2: 0x27c3acee86051f82, limb3: 0x0 }, u384 { - limb0: 0x4f5903f73e194d6cfe5b9f27, - limb1: 0x803071d7cf07302682f8dc1d, - limb2: 0x5aaa88db244cc125, + limb0: 0x2d1163092f0aef8b9bc8cf21, + limb1: 0x6f96f3432b32f983ee001fa, + limb2: 0x8a4b76e61d9d6581, limb3: 0x0 }, u384 { - limb0: 0x329415e9409fe727d685e11b, - limb1: 0x70f2246e80ff304d350b02ac, - limb2: 0x66e449172199af4f, + limb0: 0xe7ddbabe04a5b68053a0cad7, + limb1: 0x9938811b6915e25fc4ee3a11, + limb2: 0x8bd667ef9ccc0149, limb3: 0x0 }, u384 { - limb0: 0xff3ca5c8e925d6a2c087d7d8, - limb1: 0x2d6bbfe784db9a1f04226880, - limb2: 0xa5a330f3242ab5d4, + limb0: 0x6a8618f53dc6a26460119666, + limb1: 0xd645cc21cbda23e7ce73d22d, + limb2: 0x57a70681011c3b0e, limb3: 0x0 }, u384 { - limb0: 0x703e8b0ab124b8e1a03ad440, - limb1: 0xe97f5b258e5e8605dc482484, - limb2: 0xeffe5a15e474c022, + limb0: 0xe0f4def0644742c9971fe113, + limb1: 0x9ecf024da0939d345f8788e3, + limb2: 0xde38a2c41643adb3, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xcc24cb1a5132d4f3ceaaf915, - limb1: 0xd58662fa882e707a03f15f24, - limb2: 0x200fce286b19dd5c, + limb0: 0xc713cff146879f2611130f4c, + limb1: 0xa47f5eeead1d438ec527ddf3, + limb2: 0x499ac1b4459183f, limb3: 0x0 }, u384 { - limb0: 0xf6868d1b725144eb3e09ae04, - limb1: 0x39e2fad841c51abf9a641f0c, - limb2: 0xc79b979c2c6d0104, + limb0: 0x5950fa4fc7975b9b8c5e31a1, + limb1: 0x730e544ac7041c118909c984, + limb2: 0xf6709705d2718261, limb3: 0x0 }, u384 { - limb0: 0x98f678ec53cbd68cbdfc7dbe, - limb1: 0xf8a67251c23d645a4410e363, - limb2: 0x26264842f7db1755, + limb0: 0x4b5bf12e1d2371261fdb1844, + limb1: 0x4ecf7c7775ee13755c923890, + limb2: 0x41adf42ed10515ad, limb3: 0x0 }, u384 { - limb0: 0xc8529915be0bc381c0c702bb, - limb1: 0x1dea738ac39e9d6ad35832ba, - limb2: 0x6e19baa9196242c9, + limb0: 0x1082f35c304705f3585e6990, + limb1: 0xdce19a79ed923f2dd8d6e01a, + limb2: 0x1ad1074e5cbdb769, limb3: 0x0 }, u384 { - limb0: 0x45a1c2c85b12d26461c2ae68, - limb1: 0xdc2f206130454dac1fb09145, - limb2: 0x898a4c350cb98a37, + limb0: 0xea1a522a3c7e24fa4b18191c, + limb1: 0xd022258cb5954f581c9d77b8, + limb2: 0xb0b2600980241a70, limb3: 0x0 }, u384 { - limb0: 0x3a6c5a6ae7664337d1ff7c6f, - limb1: 0x6caa1054d29b0e5609b9450e, - limb2: 0xe0e0e5c06c8d0355, + limb0: 0x53e8902b28bbeb977243ddd5, + limb1: 0x78f911c7ec469510c414e382, + limb2: 0x52869098f949de86, limb3: 0x0 }, u384 { - limb0: 0xdefb601777887ad92c384921, - limb1: 0xffea816cc059a14103fd398c, - limb2: 0x33a54fed8946fa92, + limb0: 0x3cfd67aa347a5130ae3c1ab4, + limb1: 0xd8476cf26cc5ed863f865f67, + limb2: 0xfe833700306ce03c, limb3: 0x0 }, u384 { - limb0: 0xd0abdf7a1a59d8ba509e36aa, - limb1: 0xbb0219a0fb1ac6a1bd7538b0, - limb2: 0xeb00e8721b089b8f, + limb0: 0x496a98ea487ca55f21fc4b2c, + limb1: 0x3ff4e9858397dbbddcb8413c, + limb2: 0x38c8d12b08c95f28, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -35940,63 +35941,66 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0x2c4f3fa400c5c4d6d9fc823, - limb1: 0xc9f54f02ed505b5f73b9446a, - limb2: 0xc0e226061e954538, + limb0: 0x233d7ca7f4047894aaacf38e, + limb1: 0xfe10f358d5d9f10925d98930, + limb2: 0x8f7c955352cfd100, limb3: 0x0 }, u384 { - limb0: 0x96452936b489ad253644ae51, - limb1: 0x429f7020be78deafaaf90428, - limb2: 0x5da233c012eb2d6f, + limb0: 0xe436788cb5e510deaa5c0328, + limb1: 0x402f84cf4da4df32bd05db37, + limb2: 0xe9543a2f0e792e5b, limb3: 0x0 }, u384 { - limb0: 0xffad816f9546695787c3c1bc, - limb1: 0x71fd45cfb577d1e3838312c0, - limb2: 0x2337906979a37232, + limb0: 0x3009042d5cd9d7eb66a0d59c, + limb1: 0x7695e2466060836b54fef2f4, + limb2: 0xd17fce5923e11c3f, limb3: 0x0 }, u384 { - limb0: 0x66b092e87951fdc30597cf5b, - limb1: 0x5044d3abbb37d88b62a243bd, - limb2: 0xc2c76fbbb651599c, + limb0: 0xcc05cfce0247205dc6b159ef, + limb1: 0x7f79a9426e906631a4625d79, + limb2: 0xb2732b1e97448bb0, limb3: 0x0 }, u384 { - limb0: 0x94997264a96056bddefa19c7, limb1: 0x29a3f65a, limb2: 0x0, limb3: 0x0 + limb0: 0x8d901aa06c75e60ef17b34b8, + limb1: 0x6c7d5b5d, + limb2: 0x8000000000000000, + limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0x95362f6743b5b8f9345c09af, - limb1: 0x491f6355f5a759943ed9c47, - limb2: 0x5253db38c2e518d4, + limb0: 0x29894fdf65a57393f351e2ae, + limb1: 0x38ab63fee24cc9ad5c5e4c80, + limb2: 0xa3ebfa09219da969, limb3: 0x0 }, u384 { - limb0: 0x2c1abdfd7121d94d56f96fcf, - limb1: 0x11f9720cba8034d764fc8009, - limb2: 0xd03969c9d72fa6b4, + limb0: 0xe3672237873382ee9185317e, + limb1: 0x84439b552e7a57c592ea4e89, + limb2: 0xd3fd7de99c2057d7, limb3: 0x0 }, u384 { - limb0: 0x44b83d6b41450bb109b8e153, - limb1: 0xf55b41e88428ee836cfca515, - limb2: 0x486ab63548154f18, + limb0: 0xb355da9c3cfabc0f5e2c50da, + limb1: 0xc2faa6023dcc6bba98bcffb3, + limb2: 0xc0b3518c58f9f4b9, limb3: 0x0 }, u384 { - limb0: 0xd36898ece2791499d655c052, - limb1: 0xf49b43e903feab3cde15ff23, - limb2: 0x145af2781f78e2c5, + limb0: 0xef0fbba5a8535939fbc39a48, + limb1: 0xbdf02d7fe5f14562fd60186e, + limb2: 0x9a7f0fff8f40f361, limb3: 0x0 }, u384 { - limb0: 0x35f840501355fdddb241fc59, - limb1: 0xa502dc2c4a0967a66c7497f8, - limb2: 0x21ee74e0d2184766, + limb0: 0x804c0c343ee58309a11317e1, + limb1: 0x7c10798f3b80718421d760e1, + limb2: 0x3c9a7f3a5655af23, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -36004,90 +36008,90 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x268ebe8cd1875f73ab3f35e, - limb1: 0x1a16884e95eee4e79bc6c69b, - limb2: 0x5f70cc8aa950f76c, + limb0: 0xf97bbd76d3ad22935e7b68c, + limb1: 0x3c19b14051560a845e829622, + limb2: 0x7bfe71e8d683dc5b, limb3: 0x0 }, u384 { - limb0: 0xf18f1326c56ae4fedaa01772, - limb1: 0xe33d2c2173f112a835799c51, - limb2: 0xb2ece587d71ef147, + limb0: 0xb2c0efd66a03fd4b33b06dfb, + limb1: 0x4580cba4218abdd150381092, + limb2: 0xbae65a62ecda0145, limb3: 0x0 }, u384 { - limb0: 0x3d107f6a462fb6c851b68b5a, - limb1: 0xe45d545ae3a9e873d081a369, - limb2: 0xbdf8194e31be945e, + limb0: 0xe15a4ab47512732ae906ad05, + limb1: 0x1b8211c8081bdab36bbc4af8, + limb2: 0x5d8247b7a138f581, limb3: 0x0 }, u384 { - limb0: 0xf0166141ea134545ec3e8ae0, - limb1: 0xc9f3bc424787b5ceb8d0a7ca, - limb2: 0xad6177fb2e27ca4d, + limb0: 0xe556c90332ef82b1b4aa1f7e, + limb1: 0x1de17e58f1c8c3721626bc22, + limb2: 0xa742123c583ae074, limb3: 0x0 }, u384 { - limb0: 0x3c0e60061274a2c44ecea3cf, - limb1: 0x96e3ff75196666b4aa9ba920, - limb2: 0x381543e1f8664237, + limb0: 0x380ef815b3e7dc0b9f27432c, + limb1: 0xc706e93ca69b6f6c3f7749cf, + limb2: 0x1d8f59cb78080622, limb3: 0x0 }, u384 { - limb0: 0x801d68b97c95a048fc24b0f2, - limb1: 0x8dbfa3fd8457b421d1157c7f, - limb2: 0x3411c2f0fe547c40, + limb0: 0xf1821d1c38ed2c9b06d2d360, + limb1: 0x70e27ac6de4671097586b8a0, + limb2: 0xac1e45be98551e2e, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x147b4bd2d9f80ed26e844b6b, - limb1: 0x1ffdbb759b793730db7f45f5, - limb2: 0x404afe8d5443adcc, + limb0: 0x22c12f1bc786290fa73d4206, + limb1: 0x8cafbbf8301983bd86941781, + limb2: 0x7b73d63feb4fa1e0, limb3: 0x0 }, u384 { - limb0: 0x34bb31ee17ecf12260d221be, - limb1: 0x7dd21e59198171e3c2e78040, - limb2: 0xb191e484e24d8eec, + limb0: 0x37d1ef84b268948afaa46d87, + limb1: 0x9dd93f5445586667046825c5, + limb2: 0xcbee716344e266e4, limb3: 0x0 }, u384 { - limb0: 0xe109adeec8e351d8440e2d16, - limb1: 0xb57ecd5b9d1e8597fae88394, - limb2: 0xfaeafb74f89529ae, + limb0: 0xe758fa45aadb24709336490b, + limb1: 0x54da8a0fb096f21a2d2afde9, + limb2: 0x44e73ad66ed5b114, limb3: 0x0 }, u384 { - limb0: 0x5d125de17505492e10b44bed, - limb1: 0xb4d0d1947b51244356879642, - limb2: 0xe0d07c819f334c3d, + limb0: 0xb2f77166ffece42dd5ab29ea, + limb1: 0x6a3ca27e2be5af6249fef788, + limb2: 0xdd656a060c645115, limb3: 0x0 }, u384 { - limb0: 0xa5e4802df87bca5e36c75a0f, - limb1: 0x950d7742c0c20a645c2ca7d2, - limb2: 0xbdbe9bef95d99a82, + limb0: 0x657b77a53f7a1833f90ae047, + limb1: 0xe8b6ee3fcefd72627fcdf4b4, + limb2: 0x7c36f881f87821cf, limb3: 0x0 }, u384 { - limb0: 0x44b83d6b41450bb109b8e15a, - limb1: 0xf55b41e88428ee836cfca515, - limb2: 0x486ab63548154f18, + limb0: 0xb355da9c3cfabc0f5e2c50e1, + limb1: 0xc2faa6023dcc6bba98bcffb3, + limb2: 0xc0b3518c58f9f4b9, limb3: 0x0 }, u384 { - limb0: 0xd36898ece2791499d655c052, - limb1: 0xf49b43e903feab3cde15ff23, - limb2: 0x145af2781f78e2c5, + limb0: 0xef0fbba5a8535939fbc39a48, + limb1: 0xbdf02d7fe5f14562fd60186e, + limb2: 0x9a7f0fff8f40f361, limb3: 0x0 }, u384 { - limb0: 0x35f840501355fdddb241fc59, - limb1: 0xa502dc2c4a0967a66c7497f8, - limb2: 0x21ee74e0d2184766, + limb0: 0x804c0c343ee58309a11317e1, + limb1: 0x7c10798f3b80718421d760e1, + limb2: 0x3c9a7f3a5655af23, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -36097,9 +36101,9 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0xf479166423d01ba574139e74, - limb1: 0xea9d3be1b6cd75c81171eb79, - limb2: 0x8ff30dac654598f8, + limb0: 0x17728f4de0a54a8370ac085d, + limb1: 0x875987cdfccb0689fce6f0c2, + limb2: 0x18bd2104fa9314ea, limb3: 0x0 }, u384 { @@ -36112,15 +36116,15 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0xaaa34310b7ca2c3f0d5b0fbb, - limb1: 0x88056c4e5b97e6ff0120532d, - limb2: 0x833924b248cc4d8d, + limb0: 0xa6bb557a376a1cf9fcc1224, + limb1: 0xd1454d128f92e6741b90cd4a, + limb2: 0xbb2d75cea2253758, limb3: 0x0 }, u384 { - limb0: 0x9fe83a6d6881ba20c7e1c912, - limb1: 0x5ea3a75c2d75721028c0a8a5, - limb2: 0x642ca0845c2bb3a5, + limb0: 0x85697a4794055027f656705a, + limb1: 0xd6ebdcdef444cccfca26e4c2, + limb2: 0x398d872a08211562, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -36128,49 +36132,49 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xbf17757789febac2971274c7, - limb1: 0x8bb9fb65fdae919c8bfa3998, - limb2: 0xf53cb0c668995b4e, + limb0: 0xb24a950f32bca123f03548e, + limb1: 0xfe282c062583c3256513f222, + limb2: 0xed287b7f2898e100, limb3: 0x0 }, u384 { - limb0: 0xc2a0cf777abad311e8b413b1, - limb1: 0xbeda2143efbf2e485b80ecdb, - limb2: 0xddec96ba1c6aeec5, + limb0: 0xdb67488ee549c2199971e894, + limb1: 0x830e9341f684d254044acd9a, + limb2: 0xc52bb85e21bcaf, limb3: 0x0 }, u384 { - limb0: 0xb4da47d5bf8cab2ab3650760, - limb1: 0x690c4135393309f5e82db69e, - limb2: 0xdad838629f8cef8d, + limb0: 0x520e701742eaab20a40c16ee, + limb1: 0x72f04accce6832eafd2b3da8, + limb2: 0xc2864367f1031417, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xaa76d575068735bc5d7d7990, - limb1: 0xb825f624812750f907e2463f, - limb2: 0x969000dffd961ede, + limb0: 0x48f1f565783e6cb25e949211, + limb1: 0xb8e51b81ed044d2cc0f59d06, + limb2: 0x1e3e38a66f04836d, limb3: 0x0 }, u384 { - limb0: 0x5f5998fddb8c16e7772c8720, - limb1: 0x967993853e361e711d449c87, - limb2: 0xbd38639e8531e985, + limb0: 0xa5e257f50c253118bc5d1647, + limb1: 0xe0730a18ade199ae87104151, + limb2: 0x92deb22638e795b3, limb3: 0x0 }, u384 { limb0: 0x7, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xaaa34310b7ca2c3f0d5b0fbb, - limb1: 0x88056c4e5b97e6ff0120532d, - limb2: 0x833924b248cc4d8d, + limb0: 0xa6bb557a376a1cf9fcc1224, + limb1: 0xd1454d128f92e6741b90cd4a, + limb2: 0xbb2d75cea2253758, limb3: 0x0 }, u384 { - limb0: 0x9fe83a6d6881ba20c7e1c912, - limb1: 0x5ea3a75c2d75721028c0a8a5, - limb2: 0x642ca0845c2bb3a5, + limb0: 0x85697a4794055027f656705a, + limb1: 0xd6ebdcdef444cccfca26e4c2, + limb2: 0x398d872a08211562, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -36180,12 +36184,31 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0xdbee1990fef2fa5020cd217b, - limb1: 0x3bcdd068d5621f3c69360831, - limb2: 0x4771333e1264222c, + limb0: 0x2b40e357a06ff2c6ff96c955, + limb1: 0x60744569ade2b3e5616e3749, + limb2: 0x6104696e7a9bd76, limb3: 0x0 }, - g_rhs_sqrt: array![], + g_rhs_sqrt: array![ + u384 { + limb0: 0x5106854084a1f9fb7fdc65ec, + limb1: 0x93bc9aabaff9005ad274ce07, + limb2: 0x25ed46e374c0605c, + limb3: 0x0 + }, + u384 { + limb0: 0xc7b4da00a4f53e786ebf8fa1, + limb1: 0xc7620c2006e447c6f1c6997c, + limb2: 0x496fd94a14462e3c, + limb3: 0x0 + }, + u384 { + limb0: 0xdba665546e71de0a45363e43, + limb1: 0x44622b11578a73a1ca9446aa, + limb2: 0x1f0914f8a6120525, + limb3: 0x0 + } + ], }; let res = msm_g1( points, scalars, scalars_digits_decompositions, msm_hint, derive_point_from_x_hint, 2 @@ -36193,15 +36216,15 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0xf841447057af913918e8e380, - limb1: 0xb0bc776fb1c5e8a376ac7a89, - limb2: 0xc8d8606896b3c334, + limb0: 0xafc19dabd2b0bef1f47a78e4, + limb1: 0x64c8cfa2f6ce21bd45380a70, + limb2: 0xd6ec71e82872d984, limb3: 0x0 }, y: u384 { - limb0: 0xf4cace09b95d963f65e26441, - limb1: 0x99c1238889e5a1f7cf29ad30, - limb2: 0x51971df514f9bc8f, + limb0: 0x1afed7037f7e7362dceb03ec, + limb1: 0x149013c6ed7333d6e4ded96a, + limb2: 0xaf1489c5a6180b55, limb3: 0x0 } } @@ -36214,71 +36237,71 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0x72aeb8fe52a2bf6323f8b931, - limb1: 0x9abefa14145221258a07a583, - limb2: 0x17cfbbf6813c410c, + limb0: 0x393dead57bc85a6e9bb44a70, + limb1: 0x64d4b065b3ede27cf9fb9e5c, + limb2: 0xda670c8c69a8ce0a, limb3: 0x0 }, y: u384 { - limb0: 0x9e06c5fabd2b7727d77f5bbc, - limb1: 0x15ed5e33e4ea522a3f8dde6a, - limb2: 0xa84b9bbdb115593a, + limb0: 0x789872895ad7121175bd78f8, + limb1: 0xc0deb0b56fb251e8fb5d0a8d, + limb2: 0x3f10d670dc3297c2, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x1d749e6c404ac941e1954794, - limb1: 0x1c067369189e68923c306079, - limb2: 0x9041f63654c73c04, + limb0: 0xfdfdc509f368ba4395773d3a, + limb1: 0x8de2b60b577a13d0f83b578e, + limb2: 0xc2dd970269530ba2, limb3: 0x0 }, y: u384 { - limb0: 0xc2e5def402fbc8b7314407d9, - limb1: 0x5f466d6a48477ebd1e472ae9, - limb2: 0x10cc592d86dfb99a, + limb0: 0x589fa250d638e35400c12ddf, + limb1: 0xb3aac19fcb5095808402aa7f, + limb2: 0xed6de6590d0195d1, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x732d286f534bacd4ee87ade3, - limb1: 0xb8b0312ab1019978d688313d, - limb2: 0x3b1813e65c72d71f, + limb0: 0x2965eeb3ec1fe786a6abe874, + limb1: 0x33e2545f82bb6add02788b8e, + limb2: 0xf586bc0db335d7b8, limb3: 0x0 }, y: u384 { - limb0: 0x11c257aab7dadeabcc98fd78, - limb1: 0x20479eb12a3b757b33933f5d, - limb2: 0xdea85e2bb995821d, + limb0: 0x155b35991489db2fdf4de620, + limb1: 0xf24ce461346a182d67eeccf0, + limb2: 0xb4122bb4b37cc7d5, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x135c007f857fd4738145e10, - limb1: 0x8c0d9ac6e72c0afea4dba53c, - limb2: 0x8245de0a12e2f9e9, + limb0: 0x12815740835b12f70b96c66f, + limb1: 0xbfa76a8b80aec9f2e31c40cc, + limb2: 0xcd8a26d17d33c7c1, limb3: 0x0 }, y: u384 { - limb0: 0xf2d4ea39576e7883dd50d9f6, - limb1: 0xd3dbbf92ca81784b8d6ed720, - limb2: 0x1fd2a24d39659ccb, + limb0: 0x9a8f496f09402b8fd6beb89b, + limb1: 0x28e48918dad2123d7f202bef, + limb2: 0xcdd11b6ffb3f8614, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xf215b20b57c03baff6e9f719, - limb1: 0xeca39ef156a937bd0a3fc6d, - limb2: 0x1863bfc0dc949047, + limb0: 0xb5076be8537cff2a42c6db68, + limb1: 0x1066d40cbd01a3752e4e069c, + limb2: 0x123ec2fd302cb0f9, limb3: 0x0 }, y: u384 { - limb0: 0x2775716d76f24c9534bdb122, - limb1: 0x88524d69a31060dcfbfe4225, - limb2: 0x7839eae9e92bbf3, + limb0: 0xc85f5e5efdf415f8081bf53f, + limb1: 0xadc5010e9d9ac6c64000d33d, + limb2: 0xf81314011d8852e4, limb3: 0x0 } }, @@ -36286,19 +36309,19 @@ mod msm_tests { .span(); let scalars = array![ u256 { - low: 0x507e350773ade7a16ff90a45562b2d3f, high: 0x21a26d176a9b1779bc00a926aec3e7bc + low: 0x12e0c8b2bad640fb19488dec4f65d4d9, high: 0x5487ce1eaf19922ad9b8a714e61a441c }, u256 { - low: 0xdfc180c75acb33628f7570d9022cb597, high: 0x92fbe9317be2d2633b3b8ed646043108 + low: 0x5a92118719c78df48f4ff31e78de5857, high: 0xa3f2c9bf9c6316b950f244556f25e2a2 }, u256 { - low: 0x21df4d7e137a343839377d2fd84e201e, high: 0xba89fbfadd346683aecb3ad8ed223609 + low: 0x8d723104f77383c13458a748e9bb17bc, high: 0x85776e9add84f39e71545a137a1d5006 }, u256 { - low: 0xf4aa4202c8302c2305427289a637e64a, high: 0xb1bc921ee571ba117dd391d98ec75fe9 + low: 0xeb2083e6ce164dba0ff18e0242af9fc3, high: 0x17e0aa3c03983ca8ea7e9d498c778ea6 }, u256 { - low: 0x3d8f08d1d4dc033da7093b22a63652e8, high: 0x8567f5bc07578c84a3581a03d2290fc6 + low: 0xb5d32b1666194cb1d71037d1b83e90ec, high: 0xa0116be5ab0c1681c8f8e3d0d3290a4c }, ] .span(); @@ -36306,16 +36329,21 @@ mod msm_tests { array![ ( array![ + 0x0, + -0x1, + 0x0, + -0x1, -0x1, - 0x0, - 0x1, - 0x1, 0x1, -0x1, -0x1, + -0x1, 0x1, - 0x1, - 0x1, + -0x1, + 0x0, + -0x1, + -0x1, + -0x1, 0x0, 0x1, -0x1, @@ -36323,139 +36351,132 @@ mod msm_tests { -0x1, 0x1, 0x0, - 0x0, - 0x1, -0x1, - 0x0, + -0x1, 0x1, - 0x0, 0x1, 0x1, - 0x0, + -0x1, 0x0, 0x0, -0x1, 0x1, 0x1, + -0x1, + -0x1, + -0x1, + -0x1, 0x1, 0x1, - 0x0, 0x1, 0x0, - 0x1, 0x0, -0x1, 0x0, + 0x1, + 0x0, + 0x0, + 0x0, 0x0, 0x0, 0x1, -0x1, + 0x0, -0x1, - -0x1, - -0x1, + 0x0, + 0x1, + 0x0, + 0x1, 0x0, 0x0, - -0x1, 0x0, 0x1, 0x0, -0x1, 0x0, -0x1, + 0x1, + 0x1, 0x0, - 0x0, + 0x1, -0x1, + 0x0, 0x1, 0x1, 0x1, 0x1, -0x1, 0x1, - 0x1, -0x1, -0x1, + ] + .span(), + array![ 0x1, - -0x1, - -0x1, - -0x1, 0x0, 0x1, - 0x0, 0x1, - -0x1, 0x1, 0x1, 0x1, + -0x1, 0x1, - ] - .span(), - array![ + 0x0, 0x1, 0x0, + 0x0, + 0x0, -0x1, -0x1, -0x1, - 0x1, - 0x0, - -0x1, -0x1, -0x1, - 0x0, 0x1, 0x1, - -0x1, - 0x0, - 0x0, 0x1, + -0x1, 0x0, -0x1, 0x0, + -0x1, 0x1, 0x0, 0x0, -0x1, 0x0, - 0x1, - 0x1, - -0x1, - 0x0, - 0x0, 0x0, 0x1, -0x1, -0x1, -0x1, - 0x1, - 0x1, + 0x0, -0x1, -0x1, - 0x0, + 0x1, -0x1, + 0x0, 0x1, 0x0, -0x1, + 0x1, -0x1, 0x0, - 0x0, + -0x1, + -0x1, 0x1, 0x0, + 0x0, 0x1, -0x1, 0x1, - 0x1, - 0x0, + -0x1, 0x0, 0x0, 0x0, - 0x1, - 0x1, -0x1, -0x1, - 0x1, - 0x0, - 0x0, -0x1, - 0x1, + -0x1, -0x1, 0x1, 0x0, @@ -36464,181 +36485,182 @@ mod msm_tests { 0x1, -0x1, 0x1, + 0x0, -0x1, 0x1, + -0x1, + 0x0, + 0x1, 0x1, 0x1, - 0x0, - -0x1, ] .span() ), ( array![ - 0x1, - 0x1, -0x1, 0x0, 0x0, - -0x1, + 0x1, + 0x0, 0x0, - -0x1, -0x1, -0x1, 0x1, -0x1, - 0x1, + -0x1, 0x1, -0x1, + -0x1, 0x0, - 0x1, - 0x1, - 0x1, -0x1, -0x1, -0x1, 0x1, - 0x1, -0x1, - 0x0, 0x1, - -0x1, 0x0, - -0x1, - 0x1, + 0x0, -0x1, 0x0, - 0x1, - 0x1, 0x0, 0x0, - -0x1, - -0x1, - -0x1, + 0x0, + 0x1, 0x0, -0x1, -0x1, + 0x1, -0x1, 0x0, + 0x0, 0x1, - -0x1, - -0x1, 0x1, + -0x1, 0x1, 0x0, 0x0, -0x1, - -0x1, + 0x0, -0x1, 0x1, - 0x1, -0x1, + 0x0, -0x1, + 0x1, -0x1, 0x1, - 0x0, 0x1, + -0x1, 0x0, 0x0, -0x1, 0x1, -0x1, - 0x0, + 0x1, + -0x1, + -0x1, 0x0, 0x1, + -0x1, 0x0, -0x1, 0x0, + -0x1, 0x0, + -0x1, 0x0, 0x1, + 0x1, 0x0, 0x0, 0x0, -0x1, - -0x1, - ] - .span(), - array![ - 0x1, 0x1, 0x1, 0x1, + ] + .span(), + array![ + -0x1, + -0x1, + 0x0, + 0x0, 0x1, 0x0, -0x1, + 0x1, -0x1, -0x1, -0x1, - 0x1, 0x0, - -0x1, - 0x1, + 0x0, 0x1, 0x1, -0x1, 0x1, - 0x0, - 0x0, - -0x1, - 0x0, - 0x0, 0x1, 0x1, 0x1, - -0x1, - -0x1, 0x0, - -0x1, 0x1, - -0x1, + 0x1, + 0x1, 0x0, 0x0, 0x0, 0x1, - 0x1, - -0x1, 0x0, 0x0, + -0x1, 0x1, 0x1, + 0x0, + 0x1, + 0x0, + -0x1, 0x1, + -0x1, + -0x1, + -0x1, + -0x1, 0x1, + -0x1, 0x1, 0x0, + -0x1, 0x0, 0x0, - 0x0, - 0x0, - -0x1, - -0x1, - -0x1, -0x1, 0x0, -0x1, 0x0, + 0x0, 0x1, 0x0, 0x1, + 0x0, 0x1, 0x0, -0x1, 0x0, - 0x0, + -0x1, -0x1, 0x0, -0x1, -0x1, - 0x1, - 0x1, -0x1, + 0x0, + 0x0, + 0x0, -0x1, 0x1, 0x1, - 0x0, + 0x1, -0x1, - 0x0, - 0x0, + -0x1, + -0x1, + 0x1, -0x1, 0x1, ] @@ -36646,60 +36668,49 @@ mod msm_tests { ), ( array![ + 0x0, 0x1, + 0x1, + 0x0, -0x1, 0x1, + 0x0, 0x1, -0x1, - -0x1, - -0x1, - 0x0, - 0x0, - 0x0, + 0x1, 0x1, -0x1, + 0x1, -0x1, 0x1, -0x1, -0x1, + 0x1, 0x0, 0x0, -0x1, - -0x1, - 0x0, - -0x1, - -0x1, - -0x1, - -0x1, - -0x1, - -0x1, - -0x1, 0x1, 0x0, 0x0, - -0x1, - -0x1, - 0x1, - 0x1, 0x0, + 0x0, + 0x1, -0x1, 0x1, 0x1, -0x1, 0x1, - 0x1, 0x0, 0x1, 0x0, - 0x1, - 0x1, + 0x0, + 0x0, 0x0, 0x1, -0x1, - 0x1, + -0x1, 0x0, 0x1, - 0x0, -0x1, 0x0, -0x1, @@ -36707,162 +36718,166 @@ mod msm_tests { 0x1, -0x1, 0x0, - -0x1, + 0x0, 0x0, -0x1, -0x1, 0x0, - 0x0, - 0x0, -0x1, + 0x1, + 0x0, 0x0, - -0x1, 0x1, 0x1, + -0x1, 0x0, 0x0, 0x1, + -0x1, + 0x0, + -0x1, 0x1, 0x1, 0x0, - -0x1, - ] - .span(), - array![ - -0x1, 0x1, - -0x1, + 0x0, -0x1, 0x0, 0x0, + 0x1, -0x1, -0x1, -0x1, - -0x1, - -0x1, - -0x1, - 0x1, - 0x1, - 0x1, - -0x1, 0x1, + ] + .span(), + array![ 0x1, 0x0, 0x0, - -0x1, - -0x1, + 0x0, 0x1, -0x1, - 0x0, + 0x1, 0x0, 0x1, 0x1, - 0x0, -0x1, + 0x1, + 0x0, -0x1, 0x0, 0x1, -0x1, - 0x1, - 0x1, - 0x1, + 0x0, -0x1, 0x1, - 0x0, 0x1, -0x1, 0x0, 0x1, + 0x1, -0x1, -0x1, 0x1, 0x1, + 0x0, -0x1, + 0x0, + 0x0, -0x1, -0x1, + 0x1, + 0x0, -0x1, 0x0, + 0x1, 0x0, 0x1, - -0x1, + 0x1, 0x0, 0x1, 0x0, -0x1, -0x1, + -0x1, 0x1, 0x1, + 0x0, + -0x1, 0x1, + 0x0, 0x1, - -0x1, 0x0, 0x0, + -0x1, 0x1, 0x0, + 0x1, -0x1, - -0x1, + 0x1, + 0x1, -0x1, 0x0, + 0x1, -0x1, - 0x0, 0x1, + -0x1, 0x0, 0x0, + 0x0, + -0x1, + -0x1, + 0x1, 0x1, -0x1, -0x1, + 0x1, ] .span() ), ( array![ - 0x0, - 0x1, -0x1, 0x1, -0x1, - -0x1, - -0x1, - 0x0, - -0x1, + 0x1, -0x1, 0x0, 0x0, -0x1, - 0x0, -0x1, -0x1, 0x1, 0x0, - -0x1, - 0x1, - -0x1, 0x0, -0x1, + -0x1, 0x1, 0x1, - -0x1, 0x1, -0x1, - 0x0, + 0x1, -0x1, 0x1, 0x1, + -0x1, 0x0, - 0x0, + 0x1, 0x0, 0x0, -0x1, - 0x1, 0x0, -0x1, -0x1, 0x1, + 0x0, 0x1, 0x1, + -0x1, 0x1, - 0x1, - 0x1, + 0x0, + -0x1, -0x1, -0x1, -0x1, @@ -36871,76 +36886,78 @@ mod msm_tests { 0x0, 0x0, 0x0, - -0x1, + 0x0, + 0x0, 0x1, + -0x1, 0x1, 0x0, -0x1, - -0x1, + 0x0, + 0x0, 0x1, - -0x1, - -0x1, 0x0, - -0x1, + 0x0, + 0x1, 0x1, - -0x1, -0x1, -0x1, 0x1, 0x1, 0x0, - 0x0, -0x1, + 0x0, -0x1, - 0x1, + 0x0, + 0x0, 0x1, -0x1, -0x1, -0x1, + 0x0, + 0x0, + 0x1, + 0x0, + -0x1, -0x1, ] .span(), array![ - -0x1, - -0x1, - -0x1, 0x1, -0x1, 0x1, - 0x0, -0x1, 0x0, - 0x0, -0x1, 0x0, -0x1, - -0x1, - -0x1, - -0x1, 0x0, + -0x1, 0x0, - 0x1, + -0x1, 0x1, 0x0, 0x0, - -0x1, 0x0, + 0x1, 0x0, - -0x1, - -0x1, 0x1, - -0x1, + 0x1, + 0x0, -0x1, 0x1, + -0x1, 0x0, + 0x1, + -0x1, 0x0, 0x0, - -0x1, 0x1, -0x1, 0x0, 0x1, -0x1, + -0x1, 0x1, 0x0, 0x0, @@ -36948,39 +36965,42 @@ mod msm_tests { 0x0, -0x1, 0x0, - 0x0, + -0x1, + -0x1, 0x1, 0x0, 0x1, - 0x1, - 0x0, - 0x0, -0x1, - 0x0, - 0x0, - 0x0, - 0x0, -0x1, 0x0, 0x0, 0x1, -0x1, -0x1, + 0x0, + 0x0, 0x1, 0x1, + -0x1, 0x1, -0x1, + -0x1, 0x0, + 0x1, -0x1, 0x0, -0x1, + 0x1, -0x1, 0x1, -0x1, 0x0, -0x1, - -0x1, 0x1, + 0x1, + -0x1, + -0x1, + 0x0, -0x1, -0x1, ] @@ -36988,170 +37008,171 @@ mod msm_tests { ), ( array![ + -0x1, + -0x1, + 0x0, + -0x1, 0x1, 0x0, + 0x0, 0x1, 0x1, 0x1, 0x1, 0x0, 0x1, - 0x1, - -0x1, - -0x1, - 0x1, 0x0, 0x1, 0x0, - -0x1, - -0x1, 0x1, - 0x1, - 0x1, - 0x1, - -0x1, -0x1, 0x1, + -0x1, 0x0, - 0x0, - 0x0, - 0x1, -0x1, 0x1, 0x1, 0x1, - 0x1, + 0x0, 0x1, -0x1, + -0x1, + 0x0, 0x1, 0x1, 0x1, - 0x1, + -0x1, + -0x1, 0x0, 0x0, 0x1, - 0x0, - 0x0, - 0x0, 0x1, -0x1, - 0x0, -0x1, + -0x1, + 0x1, 0x0, -0x1, -0x1, 0x1, - 0x1, + 0x0, -0x1, + 0x1, + 0x1, -0x1, 0x1, 0x0, - 0x0, -0x1, 0x0, - 0x0, - 0x0, - 0x0, + 0x1, -0x1, 0x0, - 0x1, - 0x1, + -0x1, 0x0, + -0x1, 0x0, 0x1, - 0x0, -0x1, - 0x1, -0x1, 0x0, - 0x0, - 0x0, -0x1, 0x1, 0x1, - ] - .span(), - array![ - 0x0, 0x1, 0x0, 0x0, 0x0, + 0x1, + -0x1, 0x0, + 0x1, 0x0, - 0x0, + 0x1, -0x1, -0x1, + ] + .span(), + array![ + 0x1, + 0x1, -0x1, + 0x1, 0x0, + 0x1, -0x1, - -0x1, + 0x1, 0x0, -0x1, + -0x1, 0x0, 0x1, 0x1, - -0x1, 0x0, + 0x1, 0x0, - -0x1, 0x0, 0x1, 0x1, - 0x1, + -0x1, + 0x0, + -0x1, -0x1, 0x1, 0x0, 0x0, + -0x1, 0x0, + -0x1, 0x0, + -0x1, 0x0, 0x1, + 0x0, + 0x0, -0x1, 0x0, 0x1, -0x1, + 0x0, + -0x1, -0x1, 0x1, -0x1, 0x0, - -0x1, 0x1, 0x1, - 0x1, - 0x0, - 0x0, - 0x0, 0x0, 0x0, - -0x1, 0x0, -0x1, 0x1, - 0x1, + -0x1, + 0x0, 0x0, + -0x1, 0x1, -0x1, -0x1, - 0x1, - 0x1, 0x0, - 0x1, - 0x1, + 0x0, -0x1, 0x0, - 0x1, -0x1, + 0x1, + 0x1, -0x1, + 0x1, -0x1, + 0x0, -0x1, - 0x1, + 0x0, -0x1, -0x1, 0x1, + 0x0, + 0x0, 0x1, -0x1, - -0x1, 0x1, ] .span() @@ -37162,121 +37183,121 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0xd9882acfd56aeed7cdfdc329, - limb1: 0x850c407d5f82280cde77bb0f, - limb2: 0xb26669fa7d6d7565, + limb0: 0x506b489b0040c290a68206a1, + limb1: 0x6c9b2af40893809761de8931, + limb2: 0xfc5a658cadff812a, limb3: 0x0 }, y: u384 { - limb0: 0xe7c5659050c9613c9c9d07d2, - limb1: 0x8cafd638020a63d86c25e336, - limb2: 0x21ae6f34bd9d585d, + limb0: 0x65a19bd75c7f6d9d542dc4d6, + limb1: 0x47b01f083321c490e4e444cb, + limb2: 0xda8e670bab63aa99, limb3: 0x0 } }, Q_high: G1Point { x: u384 { - limb0: 0xa5ee5234b53b46e782c5d94a, - limb1: 0x2f4cd9f92707f20f0e3f9511, - limb2: 0xf297df7faee70120, + limb0: 0x3cc21f84e15ebc8a18b38476, + limb1: 0x3dad45359b574ef21dde40dd, + limb2: 0x473c7d709caaf21f, limb3: 0x0 }, y: u384 { - limb0: 0x5ae37acf1488303523d53327, - limb1: 0x2b111e0d1bcd452ed12c3e9e, - limb2: 0xd8a01df8a2fe7250, + limb0: 0x31587fb9a0dde201d26a170b, + limb1: 0xbb6dffdddfb99f88d66e20d7, + limb2: 0xc98d64f85b04cb56, limb3: 0x0 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0x73d97ff6b4b380bd041d8191, - limb1: 0xf04d31753ad931038095c30f, - limb2: 0xc30185e3ced219e3, + limb0: 0xac34510d6cf12c0e2c5cb3f1, + limb1: 0x39ba36c7d5f8995394a3de1d, + limb2: 0xf24f4f8ed4a3f017, limb3: 0x0 }, y: u384 { - limb0: 0x939e37b0fbe526c7e4e909f2, - limb1: 0xa24279f6ad2e877eef39711b, - limb2: 0x30335c51c2da0f30, + limb0: 0x40b8ba00a118c64493c98fe, + limb1: 0xdf00108d2358bcc0f3cc13c6, + limb2: 0xd2ee3e28306cb9c6, limb3: 0x0 } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0xb1484412b02a807a81a877d0, - limb1: 0x9690b867d41e6f6115eb9641, - limb2: 0x2755f4bde996e779, + limb0: 0x91c054f2eec6428bb5b1a978, + limb1: 0x58fe6ecb770ff32a50d39c93, + limb2: 0x845584012507ca64, limb3: 0x0 }, u384 { - limb0: 0xc3e947d9517d4ee6c8e06205, - limb1: 0xb2129d3a64a9803a0244f70f, - limb2: 0x2f96e09ef5c656d0, + limb0: 0x353d36c0c14e4df59178e156, + limb1: 0x81ec7276622d1933810b7ac9, + limb2: 0xab810e1e5c12080c, limb3: 0x0 }, u384 { - limb0: 0x5b2e27804ae267b30959046f, - limb1: 0xf343bc6fb3c8eae5c4ffe2b3, - limb2: 0x90032f19efd5059f, + limb0: 0x6ce7f2f6653dc0a3c598a8bd, + limb1: 0x1711521fff0f7be218ff2f41, + limb2: 0x56c30df78739df57, limb3: 0x0 }, u384 { - limb0: 0x48fd54c5440338d90b79611b, - limb1: 0x85258f38f0b97de36fb2ecbc, - limb2: 0x6f97df2bcd0618f4, + limb0: 0x30b49097f44e0426b4cbad73, + limb1: 0x8147414642baa12bb141b5cf, + limb2: 0xfd9abfd6efeef4cd, limb3: 0x0 }, u384 { - limb0: 0x4f835aed49e64ebe4c34ccf1, - limb1: 0x5bd601ca9efeb0cebdc81da7, - limb2: 0x17f72df439ddda9d, + limb0: 0x4cbaffa1b19c1bfa674f212e, + limb1: 0xca1a5eed622548a03e678728, + limb2: 0x8ffad3f7adbc4129, limb3: 0x0 }, u384 { - limb0: 0xa5274e2e5acdfc9879036103, - limb1: 0xffffffffffffffff5534b8bc, - limb2: 0x7fffffffffffffff, + limb0: 0xb6caf6cd2e1bee1c3bd87690, + limb1: 0xffffffffffffffff57fae9fe, + limb2: 0xffffffffffffffff, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0xeb467dcc7902638e2e871d0c, - limb1: 0x8be5213ead41caa4ed15d5dd, - limb2: 0x82e54aa88621636c, + limb0: 0x526b53f79fbb0fdfa4ef7444, + limb1: 0x1b66e07053464e40496959f2, + limb2: 0xf56757430efe0f15, limb3: 0x0 }, u384 { - limb0: 0x38483a4235919a55a265114d, - limb1: 0x6f3d28bc1fbe0471e09a6e34, - limb2: 0xfa58b37eb877032, + limb0: 0xd40753aefb8b2a4582b638b1, + limb1: 0xfec68eb8a4ca1c1f0947566a, + limb2: 0x5884eb212a6216b9, limb3: 0x0 }, u384 { - limb0: 0xfc82552d538b9b7ff2b30545, - limb1: 0x976864d15e6cf3aa68023eb5, - limb2: 0xafcb819ca0026a3b, + limb0: 0xd32eeb1b6b5a7c0b077446cf, + limb1: 0x630ae94018f1854d9bf4cc78, + limb2: 0xc6582fd0b54e4ba3, limb3: 0x0 }, u384 { - limb0: 0x818c867f4de5c04aa8462b4d, - limb1: 0xa6c226a62c273806b0f60ee, - limb2: 0xd37f558fb812189e, + limb0: 0x591dec93f0ff0e55105690d2, + limb1: 0x215805a2f0200a7282b385c7, + limb2: 0xd0da4f2638fdf3c, limb3: 0x0 }, u384 { - limb0: 0xbac6c0c7167ef576e057ddbf, - limb1: 0x48836a0f2d46b8f234b3aed8, - limb2: 0x58624c39c6849659, + limb0: 0xbc47d8124bba51abb10a8ac3, + limb1: 0x9d95ca90570df60afbe6f3d5, + limb2: 0x9dfa1fe9752fa511, limb3: 0x0 }, u384 { - limb0: 0x2fdbe342f443a2b40eee2d93, - limb1: 0x70a64c24c5f516480f486c0c, - limb2: 0xcfc6322760a4ac39, + limb0: 0x876a55a8cd962f103348d455, + limb1: 0x9cbcdba32b98b0d59807adec, + limb2: 0x911151081e6e54b5, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -37284,102 +37305,102 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x8ba40bf8678c474739a41899, - limb1: 0x9f19bcd8fd4bc885edb49ee6, - limb2: 0xd551ab8eb808130a, + limb0: 0xac890e80fe9490f56ecd72a3, + limb1: 0x47eaec05204c9f539d6d8a72, + limb2: 0x1c1119d036f7ab1f, limb3: 0x0 }, u384 { - limb0: 0xfb973c08fb6af9e712f935e2, - limb1: 0x93b9acdd6efbd1002e24a840, - limb2: 0x94d361264cc74a79, + limb0: 0x638b3fd3095763dd6836f798, + limb1: 0x2a7f9bb5608ff8eff40b1568, + limb2: 0xb86d8ac5b4c2b36b, limb3: 0x0 }, u384 { - limb0: 0xfc42a42e3dc91274aaba0ef8, - limb1: 0xb0a98126f91792c79460715b, - limb2: 0xf9cc6c15a5fbef1f, + limb0: 0xaa4333839f65f9a48bd646c7, + limb1: 0x68ee95e506a1086e98a9d40c, + limb2: 0xfabafb46b9582b37, limb3: 0x0 }, u384 { - limb0: 0xebd74d8091d15d545dc48885, - limb1: 0xbc26b31874a152010cb61e49, - limb2: 0x43152811de4727cb, + limb0: 0xf1910e2e5eb57141cf091112, + limb1: 0x65115bf651633a97f50712cc, + limb2: 0xf9c51f6c335dd332, limb3: 0x0 }, u384 { - limb0: 0x2c200e8b4690bfdf95aa29f0, - limb1: 0x1b3c238253510f8514d9a2e4, - limb2: 0xbf555d4d897b469d, + limb0: 0x98bde5b3f752e20843bf8165, + limb1: 0xc92a88f6599a5af2130e3463, + limb2: 0xcf0b17b4aeb18493, limb3: 0x0 }, u384 { - limb0: 0x8fbfc4ce29b3b962be0216b0, - limb1: 0x6f6d4a0bae64b778ef5d733f, - limb2: 0x14598bb8297d1b6a, + limb0: 0x9240c1a4ede5818448cad309, + limb1: 0x3d4bf17d9988d3b71f4c1a55, + limb2: 0x9fc04cc400f1d02, limb3: 0x0 }, u384 { - limb0: 0xbc4fae3a911f56ca26262e1, - limb1: 0x9e5e2ed30ab944e0d78affe7, - limb2: 0x23f4d840c4805442, + limb0: 0x1dc8e5c5a0382e7829b4e766, + limb1: 0x99a6f29400157fdbf62793da, + limb2: 0xc1609b8c90a57073, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x6eed70974f10b8e645b1d6c7, - limb1: 0xd343e8b6bccc8a827b98d911, - limb2: 0x94450a9baae9b7f7, + limb0: 0x40ef4bc55e1d6f23828c44c2, + limb1: 0xbfd0231246ec23c201e175a0, + limb2: 0xb5d362d568f26993, limb3: 0x0 }, u384 { - limb0: 0x89f997cf76fb385770c3791b, - limb1: 0xaac1d24de321f1d2439036d, - limb2: 0x6d86ce8770b41161, + limb0: 0xcc3349c8e0ce27e892fb9479, + limb1: 0xf76de70c8186c4d940f35ceb, + limb2: 0x6ba26de828ae9f15, limb3: 0x0 }, u384 { - limb0: 0xe790543d48d14083a2e53427, - limb1: 0x23dac1b994faa9a8d80fb6f9, - limb2: 0xce908b486010e7a1, + limb0: 0xc6486dbfef796452342e02be, + limb1: 0xb54c60c0ae9aa51f43b1974d, + limb2: 0x6c694eb4f5241177, limb3: 0x0 }, u384 { - limb0: 0x761e2b479a4aa59ec872630d, - limb1: 0xd4da12276092f327da817c63, - limb2: 0x4b60a1968ea00fbe, + limb0: 0xc23ccc0336b47434174d6dd3, + limb1: 0x4cf07e4e4269761dc520265, + limb2: 0x50c6d9e3c7ed29ba, limb3: 0x0 }, u384 { - limb0: 0x53b77fb3d30a5097c4cc2928, - limb1: 0x6ad50f265cad131151843621, - limb2: 0x7a55a0cc59278ca3, + limb0: 0xf9fe3c2f0da365fb5a00134a, + limb1: 0x4ddf18ab062bd66bec980142, + limb2: 0xaa5bca835eaf9a35, limb3: 0x0 }, u384 { - limb0: 0x4b858c0201650e725b365b30, - limb1: 0xabf479d2c8208fa2d2fd330b, - limb2: 0x5e36e0b044831fcd, + limb0: 0x871742b90a75c5806e722466, + limb1: 0xac34eab64a1e5b24c42a8df0, + limb2: 0xbdd167098a529c9a, limb3: 0x0 }, u384 { - limb0: 0x818c867f4de5c04aa8462b54, - limb1: 0xa6c226a62c273806b0f60ee, - limb2: 0xd37f558fb812189e, + limb0: 0x591dec93f0ff0e55105690d9, + limb1: 0x215805a2f0200a7282b385c7, + limb2: 0xd0da4f2638fdf3c, limb3: 0x0 }, u384 { - limb0: 0xbac6c0c7167ef576e057ddbf, - limb1: 0x48836a0f2d46b8f234b3aed8, - limb2: 0x58624c39c6849659, + limb0: 0xbc47d8124bba51abb10a8ac3, + limb1: 0x9d95ca90570df60afbe6f3d5, + limb2: 0x9dfa1fe9752fa511, limb3: 0x0 }, u384 { - limb0: 0x2fdbe342f443a2b40eee2d93, - limb1: 0x70a64c24c5f516480f486c0c, - limb2: 0xcfc6322760a4ac39, + limb0: 0x876a55a8cd962f103348d455, + limb1: 0x9cbcdba32b98b0d59807adec, + limb2: 0x911151081e6e54b5, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -37389,78 +37410,78 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0xf6cda9ba98acbe5c13396fb9, - limb1: 0x3d8e1d8a4cbff3768cd2494d, - limb2: 0x70165ffcaa589b67, + limb0: 0x48d6bbd8ddcbb216e69f73a9, + limb1: 0x2dcfa7af574aab1df546219d, + limb2: 0xa43a10027eab8122, limb3: 0x0 }, u384 { - limb0: 0x57a07248651ddc16e912b2e2, - limb1: 0x37da0d0f9a66dfd64e90a71d, - limb2: 0x12e5824f8ce73529, + limb0: 0x3ae4812160d18e764d63f82a, + limb1: 0xccd2fd0bac884c8ac29fc3c3, + limb2: 0xa672cda426b024, limb3: 0x0 }, u384 { - limb0: 0x2f145a6d2d725472e7c36eee, - limb1: 0x32f19bfe5135b4f9cb5c33b6, - limb2: 0x496dc81554fbe28b, + limb0: 0x683dd36d32b9160e484b329d, + limb1: 0x5ccec0a786247c2e4e00dd2a, + limb2: 0x1a25ab5b807fb050, limb3: 0x0 }, u384 { - limb0: 0x74fddc202592b186f96bc1ff, - limb1: 0xe5b4c8acfe7ed4a9db1b9517, - limb2: 0x8b6b1b8b8ee5dc54, + limb0: 0x2e78d4e7ce28888d1efb8c4e, + limb1: 0x5535c383ecea5bff75048d9e, + limb2: 0x9f11dca32a81630d, limb3: 0x0 }, u384 { - limb0: 0x2c7a314b0a5e8620606401a0, - limb1: 0xeb1794ac01d90a821a2346d6, - limb2: 0x575330a0f8db9b1b, + limb0: 0xa40bbad0f170a8f0c3194a40, + limb1: 0x6d9e2752acfa8ba2bd3c5921, + limb2: 0xb23e0e21735d320d, limb3: 0x0 }, u384 { - limb0: 0xcb59a7e61dce7bd82a9e29b0, - limb1: 0xffffffffffffffff3cafdba0, - limb2: 0x7fffffffffffffff, + limb0: 0xf3f97689b3e0d5cbec731937, + limb1: 0x9e6d86ce, + limb2: 0x8000000000000000, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0x6ff3fe545f1c71ea51def07e, - limb1: 0x57c2b7682ea7be32b595dc4a, - limb2: 0xb491fb652c98b72e, + limb0: 0x57407e251ba3cc2bcd7bdcbc, + limb1: 0xe94b27951aec30582c81039e, + limb2: 0xa91e6856ed83aac0, limb3: 0x0 }, u384 { - limb0: 0x3064cc442401c87647940d38, - limb1: 0x1745a9720d60af61ba995f3f, - limb2: 0x838b05dc157752f3, + limb0: 0x5224c0f094dd6596f552d29b, + limb1: 0x412f9c060e56c42dae93f53c, + limb2: 0xf21b79dbc750b27d, limb3: 0x0 }, u384 { - limb0: 0x61310e30995713ea31efbaa2, - limb1: 0xd35997f185c57db48a79fc13, - limb2: 0xc383a34e555ae650, + limb0: 0xa9aa8bf37df7f0071159cfb6, + limb1: 0x869755ca54ecb4b71ecb5ccb, + limb2: 0xd447d0e01c79df02, limb3: 0x0 }, u384 { - limb0: 0xc11fd54a60738383f6aa44fb, - limb1: 0x2c80a5e7c6e512c98e1ef90f, - limb2: 0xdec81d38a0487155, + limb0: 0x3454edf0e376b8a6300237ac, + limb1: 0x8cc5d64fcad6a7a439ff9d8e, + limb2: 0x298241d9a48c5a00, limb3: 0x0 }, u384 { - limb0: 0xd5a39625a69140b310b9a3a5, - limb1: 0x72be2322fd5bc9d112d81936, - limb2: 0x10d32b687fd2b791, + limb0: 0x976ecf6238bc7c859205cabe, + limb1: 0x505e0c26cc03f97920462d88, + limb2: 0x7d30ebcfbb6e1173, limb3: 0x0 }, u384 { - limb0: 0x6375bbde14734aa45a261772, - limb1: 0xc665b2a8fe6f4c45df80920a, - limb2: 0x8f94bca22f2b207e, + limb0: 0x9b137ebeec783517c1175a51, + limb1: 0xcbaac16198d4e27adc07f640, + limb2: 0x462f39242fc2e3c0, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -37468,102 +37489,102 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x15c2822aef831bab6a384d20, - limb1: 0x60964794842c2f5f62799267, - limb2: 0xdc0246ffa9b0c92c, + limb0: 0x79d2ed9ce3bffe3fda81c8ad, + limb1: 0x2db529582a1c175ea7736eff, + limb2: 0xd1b9721cc5a9b216, limb3: 0x0 }, u384 { - limb0: 0x995e9fcf06d6ff44742e1b9e, - limb1: 0x3f7097f4263ec0d9bc2207e0, - limb2: 0x3d1ba14821f6de74, + limb0: 0x2b1c7fd33407b920ffecb686, + limb1: 0x876fab380f973d2237c62f37, + limb2: 0xd3de60a6eff05eba, limb3: 0x0 }, u384 { - limb0: 0xa3cbeb4d822f2e2bf129c133, - limb1: 0x3e3927934f910ce6710a9d7e, - limb2: 0x8bc18e1abf97c487, + limb0: 0xc54797a103a10c685380fd75, + limb1: 0xdd5225f3fe969972eb8b4f98, + limb2: 0xa79cc7cbe4f5d398, limb3: 0x0 }, u384 { - limb0: 0x1b3b4f44a2179e8a9d325921, - limb1: 0xb6f6256cfd644ccd69884a28, - limb2: 0x16e7309850f8c277, + limb0: 0xc438c0e7c49c4a4a56bb2cbc, + limb1: 0x922e178e809bc1feba3b148, + limb2: 0xc2635308971a2fbe, limb3: 0x0 }, u384 { - limb0: 0xa3756dd1ab03ec8263b439d9, - limb1: 0x672e6827bc28dbc2f59e3df5, - limb2: 0xd7c3627aa66dbb1c, + limb0: 0x2c019f5a09ec57ee6ac0a50, + limb1: 0xa3d3e63c50f914899796242e, + limb2: 0x9126fb50ccc4de30, limb3: 0x0 }, u384 { - limb0: 0x668318d97b5a018436e19310, - limb1: 0x42118b267237b89786f1f6a, - limb2: 0x3e47866cb2f2541d, + limb0: 0x95ec8401052f6ed9ad1bc7dc, + limb1: 0xa1938e53a1ca79e061671e93, + limb2: 0xada51785813a6f57, limb3: 0x0 }, u384 { - limb0: 0x80998450fb4015b7a8dc67c5, - limb1: 0x1674aa490f95db4feaa03101, - limb2: 0x64855cf806d666d5, + limb0: 0x21ea07f8342c6c3a0ea8f8b8, + limb1: 0xcd1bedb7c413c3955fd7d981, + limb2: 0x6dc93459ee609a9b, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xfabf44e99c71d6c3d18a2b6, - limb1: 0x665303d946963362f7190609, - limb2: 0xeffddfc4382d0244, + limb0: 0x62c37303c17a95369e631868, + limb1: 0x610e1513bc75526937871954, + limb2: 0x9fd4da607e99ab46, limb3: 0x0 }, u384 { - limb0: 0x52c195dcfc0c7b3ef50c67fb, - limb1: 0xa2e7a21e5da4cbac1a319aba, - limb2: 0x98cd2904964344a5, + limb0: 0x3f014694120dc726b543d923, + limb1: 0xc84d442a645f5d3fc60bb4a6, + limb2: 0x9ec055027334e16c, limb3: 0x0 }, u384 { - limb0: 0xa857635431618b6c5d8e2d83, - limb1: 0xc773279aa8666fefc955e487, - limb2: 0x58997724557c4c35, + limb0: 0xa3a9d3a871c790367974c10f, + limb1: 0xae2358885278f101d78f8991, + limb2: 0xcdf6b620c7551911, limb3: 0x0 }, u384 { - limb0: 0xb7d2d35d02450a8c1086ea41, - limb1: 0x8f4740be9eeb41b5986eabb8, - limb2: 0xcc0ac7f18e93d082, + limb0: 0xc592ffbb53e2d8b81d8b6641, + limb1: 0xc2b403c3a6cac5d5c27e5281, + limb2: 0xcbae354a6d5a20c4, limb3: 0x0 }, u384 { - limb0: 0x7dde74bb1fa8d5bbca786bb, - limb1: 0x3a789f66fae334193e820fbf, - limb2: 0xf95135b7943a57ed, + limb0: 0x762c6ca02204cd41f37b6d11, + limb1: 0x73c1f115a272967d907f33f8, + limb2: 0x5e71ec89e7532ca4, limb3: 0x0 }, u384 { - limb0: 0x19693143287e1e6ca8fa6e04, - limb1: 0x40217a907ad0939da6fdfa5c, - limb2: 0xb094cbbd9f88c9c8, + limb0: 0xe733032bf54163af58fd4f8f, + limb1: 0x18429f7582bee6132303188f, + limb2: 0xbf9260dd6ace1948, limb3: 0x0 }, u384 { - limb0: 0xc11fd54a60738383f6aa4502, - limb1: 0x2c80a5e7c6e512c98e1ef90f, - limb2: 0xdec81d38a0487155, + limb0: 0x3454edf0e376b8a6300237b3, + limb1: 0x8cc5d64fcad6a7a439ff9d8e, + limb2: 0x298241d9a48c5a00, limb3: 0x0 }, u384 { - limb0: 0xd5a39625a69140b310b9a3a5, - limb1: 0x72be2322fd5bc9d112d81936, - limb2: 0x10d32b687fd2b791, + limb0: 0x976ecf6238bc7c859205cabe, + limb1: 0x505e0c26cc03f97920462d88, + limb2: 0x7d30ebcfbb6e1173, limb3: 0x0 }, u384 { - limb0: 0x6375bbde14734aa45a261772, - limb1: 0xc665b2a8fe6f4c45df80920a, - limb2: 0x8f94bca22f2b207e, + limb0: 0x9b137ebeec783517c1175a51, + limb1: 0xcbaac16198d4e27adc07f640, + limb2: 0x462f39242fc2e3c0, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -37573,9 +37594,9 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0xaf5f4c83c0e6353db6026e5d, - limb1: 0x8a3e5b8234ad1c2e3375ba75, - limb2: 0x289da9dc053cfb98, + limb0: 0x74a4c39a25068eea80ed601c, + limb1: 0x20d67c4197ba80011aee93c6, + limb2: 0x3b8bf113c706c2a7, limb3: 0x0 }, u384 { @@ -37588,15 +37609,15 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0x2a6dbd15f13ed3f371c91beb, - limb1: 0xda95d8c9a999b729ced9fcd8, - limb2: 0xac5cc0f7c0d43199, + limb0: 0x15275add5bf9b6048bdb41f0, + limb1: 0x12b8c3af681e46ec625fefbe, + limb2: 0x6de8c70e76c94568, limb3: 0x0 }, u384 { - limb0: 0xe6382dd496113859791c9d83, - limb1: 0xe065f4919e1edced712aa7de, - limb2: 0x4a669a9c8246e4fb, + limb0: 0x17098f6db1b01765baefbff7, + limb1: 0x889884028eb017ba4d7de105, + limb2: 0xc67433008eb11dc9, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -37604,49 +37625,49 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xe19510c349ba2e407b690e91, - limb1: 0xc04265c436bac51828848cff, - limb2: 0xcce7ce227ef21b45, + limb0: 0x4015b5cf31d609f72af3953e, + limb1: 0x8b99473294daa2a313a09f9b, + limb2: 0xa6483a9667ea256f, limb3: 0x0 }, u384 { - limb0: 0x22e0642c0d51662ff0d6bf63, - limb1: 0x3e20c827d2690f48e0b66940, - limb2: 0x17a7b295464879d4, + limb0: 0x916a984edf462f1d98c4ba73, + limb1: 0xa832fad6a974cc143a06b0a4, + limb2: 0xacb8a04083c73eaa, limb3: 0x0 }, u384 { - limb0: 0x494823c26e150084571b7291, - limb1: 0xc9d648b30503332482c131be, - limb2: 0xe9566dd167584e43, + limb0: 0xbdcad006929c81e4406f3cc6, + limb1: 0x5046084faa83d4256cdbbc74, + limb2: 0x59d4760c7bd0808d, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x29002b9998b7cbac1c7fd2b1, - limb1: 0xfa18ed83a3340224a7f5e9e9, - limb2: 0xb68946c645cd5b34, + limb0: 0x94137c0d83d3fa22d2fed903, + limb1: 0x830d59cbd8d3f076b09f8e32, + limb2: 0x15d71653f80e5d8, limb3: 0x0 }, u384 { - limb0: 0x4b8940d01a788a744fc85637, - limb1: 0x22c9affb52d80a7e182a9718, - limb2: 0x8ce3a478ff042e3, + limb0: 0xa142ebffdbd0a3cd1c8e52d6, + limb1: 0xbc2b9c11e6d0a6181e712723, + limb2: 0x6d2d6503e6d7d082, limb3: 0x0 }, u384 { limb0: 0x7, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x2a6dbd15f13ed3f371c91beb, - limb1: 0xda95d8c9a999b729ced9fcd8, - limb2: 0xac5cc0f7c0d43199, + limb0: 0x15275add5bf9b6048bdb41f0, + limb1: 0x12b8c3af681e46ec625fefbe, + limb2: 0x6de8c70e76c94568, limb3: 0x0 }, u384 { - limb0: 0xe6382dd496113859791c9d83, - limb1: 0xe065f4919e1edced712aa7de, - limb2: 0x4a669a9c8246e4fb, + limb0: 0x17098f6db1b01765baefbff7, + limb1: 0x889884028eb017ba4d7de105, + limb2: 0xc67433008eb11dc9, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -37656,31 +37677,12 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0x2c92c27486445866812fd023, - limb1: 0x66fec3ab2bb3a8768b81d99d, - limb2: 0x20287174f5a62922, + limb0: 0xf230ad9f586d87d8059c6685, + limb1: 0x4c144298eb133123fe33b61, + limb2: 0x64d5e8f8e1a899ac, limb3: 0x0 }, - g_rhs_sqrt: array![ - u384 { - limb0: 0xdd637102166908ea61e16c9e, - limb1: 0xd1f31c58950517a8b17ab7f1, - limb2: 0x6cf8e0374c1a5593, - limb3: 0x0 - }, - u384 { - limb0: 0x2c91975ba05b2121855e73bf, - limb1: 0x2c8826bb99fe40aed11dd6a6, - limb2: 0x274fa3c15bad6958, - limb3: 0x0 - }, - u384 { - limb0: 0x4e5ea59494f6f76bcd10e701, - limb1: 0x27e0cded8345096f972d96c4, - limb2: 0x255f9b680ae8af35, - limb3: 0x0 - } - ], + g_rhs_sqrt: array![], }; let res = msm_g1( points, scalars, scalars_digits_decompositions, msm_hint, derive_point_from_x_hint, 2 @@ -37688,15 +37690,15 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0x3709c2630342cdefc41c6b5d, - limb1: 0x37c9fbbc01ac58f3bb8b78b2, - limb2: 0x374c27cf6cd6d0fe, + limb0: 0x45feb84cf07ee0a521172232, + limb1: 0x84e4fb08b8b373751aa1bd2, + limb2: 0x997ce40e351722f1, limb3: 0x0 }, y: u384 { - limb0: 0x47ecf54ceca42f797077850b, - limb1: 0x3ea1f24bdb4c1e7cfb969e1d, - limb2: 0x62208454529c1d43, + limb0: 0x8b69970c6bcd4ccaade89344, + limb1: 0x4da768a84a519c8ed26cd9b9, + limb2: 0xa16b1c1838989e61, limb3: 0x0 } } @@ -37709,85 +37711,85 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0xb575842777b722ec140fcd08, - limb1: 0xdea6ca1b31fcc4658c034a43, - limb2: 0x5d47318fddbedda3, + limb0: 0x393dead57bc85a6e9bb44a70, + limb1: 0x64d4b065b3ede27cf9fb9e5c, + limb2: 0xda670c8c69a8ce0a, limb3: 0x0 }, y: u384 { - limb0: 0x6c4470fe45628ac8390ea39a, - limb1: 0xa30462911a27592658d0bf88, - limb2: 0x31aba54f4b759934, + limb0: 0x789872895ad7121175bd78f8, + limb1: 0xc0deb0b56fb251e8fb5d0a8d, + limb2: 0x3f10d670dc3297c2, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x5995a7642d82cfdff800fb14, - limb1: 0xa9a4b76a1849962e4f2381d4, - limb2: 0x8cca18106919dba5, + limb0: 0xfdfdc509f368ba4395773d3a, + limb1: 0x8de2b60b577a13d0f83b578e, + limb2: 0xc2dd970269530ba2, limb3: 0x0 }, y: u384 { - limb0: 0x83b5431928e6b6e7a9c6ca7d, - limb1: 0xbaa240039b0f3f55c45bed0e, - limb2: 0x2f197f01769d33c1, + limb0: 0x589fa250d638e35400c12ddf, + limb1: 0xb3aac19fcb5095808402aa7f, + limb2: 0xed6de6590d0195d1, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xf85430d674e8e809cca9ecfd, - limb1: 0x7251a846ae1df459f8e96d63, - limb2: 0x5a0a46c463cef1f5, + limb0: 0x2965eeb3ec1fe786a6abe874, + limb1: 0x33e2545f82bb6add02788b8e, + limb2: 0xf586bc0db335d7b8, limb3: 0x0 }, y: u384 { - limb0: 0xf926aa0e58fc65991c7e9a87, - limb1: 0xbee758b2731995bcd8ad63b1, - limb2: 0x272f83408a9139fa, + limb0: 0x155b35991489db2fdf4de620, + limb1: 0xf24ce461346a182d67eeccf0, + limb2: 0xb4122bb4b37cc7d5, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x114b124aafb2954bffafef10, - limb1: 0xe0becfbfc0acb56cb1f38707, - limb2: 0x20ad94ab1493ade9, + limb0: 0x12815740835b12f70b96c66f, + limb1: 0xbfa76a8b80aec9f2e31c40cc, + limb2: 0xcd8a26d17d33c7c1, limb3: 0x0 }, y: u384 { - limb0: 0xbfe9b6daac2d301413fadc8d, - limb1: 0x2789e876e2afcbe5f0cbbcd6, - limb2: 0xe9d4b1043d28948f, + limb0: 0x9a8f496f09402b8fd6beb89b, + limb1: 0x28e48918dad2123d7f202bef, + limb2: 0xcdd11b6ffb3f8614, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x544ea182f1e0c6b8346c3301, - limb1: 0x34d2fa5c3b76c5ee1d643950, - limb2: 0x77a5c1159ec9d589, + limb0: 0xb5076be8537cff2a42c6db68, + limb1: 0x1066d40cbd01a3752e4e069c, + limb2: 0x123ec2fd302cb0f9, limb3: 0x0 }, y: u384 { - limb0: 0x9dbf4c8a3053ce111066670a, - limb1: 0x3ce9b934fab88eaed277e427, - limb2: 0xf5551dde6353adae, + limb0: 0xc85f5e5efdf415f8081bf53f, + limb1: 0xadc5010e9d9ac6c64000d33d, + limb2: 0xf81314011d8852e4, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x10c2c1e7354726c5502a334c, - limb1: 0xb0f934e74f95e567c14df0c8, - limb2: 0x4cfe471d5e520b9c, + limb0: 0xd5915098d3d2001310b0b935, + limb1: 0x88bb4507ebf1be82cfba2397, + limb2: 0x8a463f1c00ce885f, limb3: 0x0 }, y: u384 { - limb0: 0xd7ac7fb8231a9c9d61792d52, - limb1: 0xcbfddf666c6fe014025854f5, - limb2: 0x1b15094a3e9a161d, + limb0: 0x414858f8a83f9d4498890137, + limb1: 0xa09c4658c47ace74c42cdb60, + limb2: 0x8aaf300ff3ab7d98, limb3: 0x0 } }, @@ -37795,22 +37797,22 @@ mod msm_tests { .span(); let scalars = array![ u256 { - low: 0x8bc905fbc784165cc3dcc66af5c5405, high: 0x66b648dc147a8a97268636377a591a5b + low: 0x5a92118719c78df48f4ff31e78de5857, high: 0xa3f2c9bf9c6316b950f244556f25e2a2 }, u256 { - low: 0xdda92196c972ce00e7017a277e20a6e8, high: 0xc509578d331dd08ab2770d0649b91997 + low: 0x8d723104f77383c13458a748e9bb17bc, high: 0x85776e9add84f39e71545a137a1d5006 }, u256 { - low: 0xc5080707bf3bc785bb8f9fdeca8931d9, high: 0x1bc3130d1dd6497e8cc7a936ce1cb416 + low: 0xeb2083e6ce164dba0ff18e0242af9fc3, high: 0x17e0aa3c03983ca8ea7e9d498c778ea6 }, u256 { - low: 0x35d545e4d92e5f447e1e235de8439cd2, high: 0x9e19b99677e492b406230f693c63d79c + low: 0xb5d32b1666194cb1d71037d1b83e90ec, high: 0xa0116be5ab0c1681c8f8e3d0d3290a4c }, u256 { - low: 0x415746498ef46b6301bee0340ec0e66f, high: 0x3f495ca63862abd9a690ec3295b15eee + low: 0xd3fbf47a7e5b1e7f9ca5499d004ae545, high: 0xbaf3897a3e70f16a55485822de1b372a }, u256 { - low: 0x32692a7070fe872c1a0463c64819ae70, high: 0x67939cdf1e7e4dd0bf0df024c913b078 + low: 0x101fbcccded733e8b421eaeb534097ca, high: 0x38c1962e9148624feac1c14f30e9c5cc }, ] .span(); @@ -37818,73 +37820,94 @@ mod msm_tests { array![ ( array![ - 0x0, -0x1, - 0x1, + 0x0, 0x0, 0x1, - 0x1, + 0x0, + 0x0, + -0x1, -0x1, 0x1, -0x1, + -0x1, 0x1, -0x1, -0x1, 0x0, - 0x0, + -0x1, + -0x1, + -0x1, 0x1, + -0x1, 0x1, 0x0, + 0x0, -0x1, - 0x1, + 0x0, + 0x0, + 0x0, + 0x0, 0x1, 0x0, + -0x1, + -0x1, 0x1, + -0x1, + 0x0, + 0x0, 0x1, 0x1, + -0x1, 0x1, 0x0, 0x0, -0x1, - 0x1, + 0x0, -0x1, 0x1, -0x1, 0x0, + -0x1, 0x1, - 0x0, -0x1, + 0x1, + 0x1, -0x1, 0x0, + 0x0, -0x1, 0x1, - 0x0, -0x1, + 0x1, -0x1, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, -0x1, 0x0, 0x1, + -0x1, 0x0, + -0x1, 0x0, - 0x1, - 0x1, -0x1, - 0x1, - 0x1, 0x0, -0x1, + 0x0, 0x1, 0x1, 0x0, 0x0, + 0x0, + -0x1, 0x1, 0x1, 0x1, + ] + .span(), + array![ + -0x1, + -0x1, + 0x0, + 0x0, 0x1, 0x0, -0x1, @@ -37893,93 +37916,74 @@ mod msm_tests { -0x1, -0x1, 0x0, - -0x1, 0x0, 0x1, 0x1, - ] - .span(), - array![ -0x1, 0x1, - -0x1, 0x1, - -0x1, 0x1, - 0x0, 0x1, 0x0, 0x1, - 0x0, - 0x0, 0x1, - 0x0, - 0x0, - -0x1, - -0x1, + 0x1, 0x0, 0x0, 0x0, 0x1, - -0x1, 0x0, - -0x1, - -0x1, + 0x0, -0x1, 0x1, 0x1, - 0x1, - -0x1, 0x0, 0x1, + 0x0, + -0x1, 0x1, -0x1, -0x1, -0x1, - 0x1, -0x1, 0x1, - 0x1, - 0x1, - 0x1, -0x1, 0x1, 0x0, - 0x1, - 0x1, -0x1, - 0x1, 0x0, - -0x1, - 0x1, - -0x1, - 0x1, 0x0, - 0x1, -0x1, + 0x0, -0x1, 0x0, - 0x1, + 0x0, 0x1, 0x0, + 0x1, 0x0, 0x1, + 0x0, -0x1, + 0x0, -0x1, -0x1, - -0x1, - -0x1, + 0x0, -0x1, -0x1, -0x1, 0x0, + 0x0, + 0x0, -0x1, 0x1, 0x1, - 0x0, + 0x1, -0x1, -0x1, - 0x0, + -0x1, + 0x1, + -0x1, 0x1, ] .span() @@ -37989,170 +37993,168 @@ mod msm_tests { 0x0, 0x1, 0x1, - 0x1, - 0x0, - -0x1, - -0x1, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, 0x0, -0x1, 0x1, 0x0, 0x1, - 0x0, -0x1, 0x1, - 0x0, - -0x1, 0x1, - 0x0, -0x1, - 0x0, 0x1, - 0x0, - -0x1, - 0x0, -0x1, 0x1, -0x1, -0x1, - 0x0, - -0x1, - 0x0, 0x1, 0x0, 0x0, -0x1, - 0x0, 0x1, 0x0, 0x0, - 0x1, 0x0, 0x0, 0x1, + -0x1, + 0x1, 0x1, -0x1, 0x1, 0x0, + 0x1, + 0x0, 0x0, - -0x1, 0x0, - -0x1, - -0x1, 0x0, 0x1, -0x1, -0x1, 0x0, - -0x1, - 0x0, - 0x0, - 0x1, - 0x0, 0x1, -0x1, - 0x1, + 0x0, -0x1, 0x1, - 0x0, 0x1, -0x1, - -0x1, 0x0, 0x0, 0x0, -0x1, -0x1, - ] - .span(), - array![ - -0x1, - -0x1, 0x0, -0x1, - -0x1, - 0x1, 0x1, 0x0, - -0x1, 0x0, 0x1, 0x1, - 0x0, -0x1, 0x0, + 0x0, 0x1, + -0x1, + 0x0, + -0x1, 0x1, 0x1, + 0x0, 0x1, 0x0, + -0x1, + 0x0, 0x0, 0x1, -0x1, -0x1, -0x1, 0x1, - -0x1, + ] + .span(), + array![ + 0x1, 0x0, - -0x1, - -0x1, 0x0, - 0x1, 0x0, 0x1, -0x1, - -0x1, + 0x1, + 0x0, + 0x1, + 0x1, -0x1, 0x1, + 0x0, -0x1, 0x0, + 0x1, + -0x1, 0x0, + -0x1, 0x1, 0x1, + -0x1, + 0x0, 0x1, 0x1, -0x1, - 0x0, + -0x1, + 0x1, 0x1, - 0x0, 0x0, -0x1, 0x0, 0x0, + -0x1, + -0x1, 0x1, + 0x0, -0x1, + 0x0, + 0x1, + 0x0, 0x1, 0x1, - -0x1, 0x0, - -0x1, 0x1, + 0x0, -0x1, -0x1, -0x1, 0x1, 0x1, + 0x0, -0x1, 0x1, + 0x0, + 0x1, + 0x0, + 0x0, -0x1, 0x1, 0x0, 0x1, + -0x1, + 0x1, 0x1, + -0x1, + 0x0, 0x1, -0x1, 0x1, + -0x1, + 0x0, 0x0, 0x0, + -0x1, + -0x1, 0x1, 0x1, -0x1, -0x1, + 0x1, ] .span() ), @@ -38162,674 +38164,677 @@ mod msm_tests { 0x1, -0x1, 0x1, - 0x1, - 0x1, -0x1, 0x0, 0x0, - 0x0, - 0x1, + -0x1, + -0x1, + -0x1, 0x1, 0x0, - 0x1, - -0x1, 0x0, - 0x1, -0x1, -0x1, + 0x1, + 0x1, + 0x1, -0x1, - 0x0, + 0x1, -0x1, + 0x1, + 0x1, -0x1, 0x0, + 0x1, 0x0, 0x0, - 0x0, - 0x0, + -0x1, 0x0, -0x1, - 0x1, + -0x1, 0x1, 0x0, - -0x1, 0x1, 0x1, + -0x1, 0x1, 0x0, - 0x1, + -0x1, + -0x1, + -0x1, + -0x1, -0x1, -0x1, 0x0, - 0x1, - 0x1, 0x0, 0x0, 0x0, 0x0, - -0x1, - -0x1, - 0x1, - -0x1, - 0x1, 0x1, -0x1, - -0x1, 0x1, 0x0, -0x1, 0x0, 0x0, - -0x1, 0x1, - -0x1, - -0x1, - 0x0, 0x0, 0x0, 0x1, 0x1, + -0x1, + -0x1, + 0x1, + 0x1, 0x0, -0x1, 0x0, - 0x1, -0x1, - 0x1, 0x0, 0x0, 0x1, + -0x1, + -0x1, + -0x1, + 0x0, + 0x0, 0x1, + 0x0, -0x1, -0x1, ] .span(), array![ + 0x1, -0x1, + 0x1, -0x1, + 0x0, -0x1, 0x0, + -0x1, 0x0, + -0x1, + 0x0, + -0x1, + 0x1, 0x0, 0x0, 0x0, - 0x1, 0x1, 0x0, - -0x1, 0x1, 0x1, + 0x0, -0x1, 0x1, - 0x1, + -0x1, 0x0, 0x1, - 0x1, -0x1, 0x0, - -0x1, + 0x0, 0x1, -0x1, - 0x1, + 0x0, 0x1, -0x1, -0x1, 0x1, - 0x1, 0x0, 0x0, - 0x1, -0x1, 0x0, + -0x1, + 0x0, + -0x1, + -0x1, 0x1, 0x0, 0x1, -0x1, + -0x1, + 0x0, + 0x0, 0x1, - 0x1, + -0x1, -0x1, 0x0, + 0x0, 0x1, 0x1, -0x1, + 0x1, -0x1, -0x1, + 0x0, 0x1, -0x1, - 0x1, - 0x1, 0x0, -0x1, 0x1, + -0x1, 0x1, -0x1, 0x0, -0x1, 0x1, + 0x1, -0x1, -0x1, 0x0, -0x1, - 0x0, -0x1, - 0x0, + ] + .span() + ), + ( + array![ + -0x1, -0x1, + 0x0, -0x1, + 0x1, + 0x0, 0x0, + 0x1, + 0x1, + 0x1, + 0x1, 0x0, + 0x1, 0x0, + 0x1, 0x0, + 0x1, -0x1, + 0x1, -0x1, + 0x0, -0x1, - -0x1, - -0x1, - -0x1, - ] - .span() - ), - ( - array![ + 0x1, + 0x1, + 0x1, 0x0, 0x1, -0x1, -0x1, - -0x1, 0x0, 0x1, 0x1, - -0x1, - 0x0, 0x1, -0x1, - 0x0, - -0x1, - -0x1, -0x1, 0x0, - 0x1, - -0x1, + 0x0, 0x1, 0x1, -0x1, - 0x1, -0x1, -0x1, + 0x1, 0x0, -0x1, -0x1, 0x1, + 0x0, -0x1, - -0x1, - -0x1, - -0x1, - -0x1, 0x1, 0x1, + -0x1, + 0x1, 0x0, -0x1, + 0x0, + 0x1, -0x1, + 0x0, -0x1, 0x0, + -0x1, 0x0, 0x1, - 0x1, -0x1, -0x1, - -0x1, - 0x0, 0x0, -0x1, 0x1, - 0x0, 0x1, - -0x1, - -0x1, 0x1, 0x0, 0x0, + 0x0, + 0x1, -0x1, 0x0, + 0x1, 0x0, 0x1, -0x1, -0x1, - 0x0, + ] + .span(), + array![ 0x1, - -0x1, 0x1, -0x1, 0x1, 0x0, + 0x1, -0x1, - -0x1, + 0x1, 0x0, -0x1, -0x1, 0x0, - -0x1, 0x1, - -0x1, - ] - .span(), - array![ 0x1, - -0x1, 0x0, 0x1, - -0x1, 0x0, 0x0, 0x1, 0x1, - 0x1, + -0x1, + 0x0, -0x1, -0x1, + 0x1, + 0x0, + 0x0, -0x1, + 0x0, -0x1, 0x0, -0x1, + 0x0, 0x1, + 0x0, + 0x0, + -0x1, + 0x0, 0x1, -0x1, 0x0, -0x1, -0x1, 0x1, + -0x1, + 0x0, 0x1, 0x1, + 0x0, + 0x0, + 0x0, -0x1, - -0x1, + 0x1, -0x1, 0x0, + 0x0, + -0x1, + 0x1, -0x1, -0x1, 0x0, + 0x0, -0x1, + 0x0, -0x1, 0x1, 0x1, -0x1, 0x1, -0x1, + 0x0, + -0x1, + 0x0, -0x1, - 0x1, - 0x1, -0x1, 0x1, - 0x1, - 0x1, - 0x1, + 0x0, + 0x0, 0x1, -0x1, 0x1, + ] + .span() + ), + ( + array![ 0x1, - 0x1, - -0x1, -0x1, -0x1, -0x1, -0x1, - 0x1, - 0x0, - 0x1, 0x0, - -0x1, - -0x1, - 0x1, 0x0, -0x1, 0x0, - 0x0, - 0x0, 0x1, - 0x0, - -0x1, + 0x1, 0x1, -0x1, 0x1, - 0x0, 0x1, 0x1, + 0x0, 0x1, -0x1, 0x1, - ] - .span() - ), - ( - array![ -0x1, -0x1, 0x0, - 0x0, - -0x1, - -0x1, -0x1, 0x1, 0x0, + -0x1, + 0x1, + 0x1, 0x1, -0x1, 0x0, -0x1, - 0x0, - 0x0, - 0x0, - 0x1, + -0x1, 0x1, 0x0, 0x1, -0x1, -0x1, 0x0, + -0x1, 0x0, - 0x1, - 0x1, 0x0, 0x0, -0x1, 0x1, + -0x1, + 0x1, 0x0, + 0x1, 0x0, 0x0, 0x1, 0x0, + 0x1, 0x0, 0x0, 0x0, 0x1, - 0x0, - 0x1, - 0x0, - -0x1, 0x1, 0x0, -0x1, -0x1, - 0x1, - 0x1, 0x0, - 0x1, - 0x1, 0x0, - -0x1, 0x0, 0x1, -0x1, - 0x1, - 0x1, - 0x1, - -0x1, - -0x1, - -0x1, - 0x0, 0x0, 0x0, -0x1, 0x1, 0x1, + 0x1, + 0x1, -0x1, - -0x1, - -0x1, + 0x1, 0x0, -0x1, - -0x1, - 0x1, 0x0, -0x1, -0x1, - 0x1, - 0x1, ] .span(), array![ - 0x0, + 0x1, + -0x1, 0x0, -0x1, 0x1, 0x1, - -0x1, 0x1, 0x0, - -0x1, - -0x1, 0x0, - -0x1, - -0x1, - -0x1, 0x0, - -0x1, - 0x1, 0x1, - 0x0, -0x1, + 0x1, -0x1, 0x1, 0x1, 0x0, - -0x1, + 0x0, 0x1, + 0x0, 0x1, 0x1, -0x1, - -0x1, - -0x1, - 0x1, - 0x1, 0x0, 0x1, - 0x1, - 0x0, -0x1, - 0x1, 0x0, - 0x0, - 0x1, - 0x1, 0x1, 0x1, 0x1, + -0x1, 0x1, 0x0, 0x0, -0x1, + 0x0, -0x1, 0x1, + 0x0, -0x1, 0x0, + -0x1, 0x1, 0x0, - 0x0, - -0x1, + 0x1, 0x1, -0x1, - 0x0, -0x1, + 0x0, 0x1, 0x0, + -0x1, + -0x1, + 0x0, 0x0, 0x0, - 0x1, -0x1, - 0x1, -0x1, - 0x0, + -0x1, + -0x1, + -0x1, 0x0, -0x1, 0x0, + -0x1, + -0x1, + -0x1, + 0x1, 0x1, 0x0, + -0x1, 0x1, 0x0, + 0x1, + -0x1, -0x1, 0x1, + 0x0, + 0x0, 0x1, + -0x1, + -0x1, ] .span() ), ( array![ 0x1, - 0x1, - 0x0, 0x0, -0x1, -0x1, + -0x1, + -0x1, 0x1, - 0x1, - 0x1, - 0x0, -0x1, -0x1, -0x1, - 0x1, - 0x1, -0x1, + 0x1, 0x0, + -0x1, 0x0, - 0x0, + 0x1, -0x1, + 0x0, 0x1, 0x0, 0x0, 0x1, - 0x0, + -0x1, 0x1, + 0x0, 0x1, -0x1, -0x1, -0x1, - 0x1, -0x1, - 0x1, - 0x0, 0x0, + 0x1, + -0x1, 0x0, -0x1, -0x1, -0x1, - 0x0, + -0x1, + -0x1, 0x1, -0x1, + 0x0, 0x1, + 0x1, + -0x1, 0x0, 0x0, -0x1, 0x1, - 0x1, -0x1, 0x1, -0x1, - 0x0, -0x1, - 0x0, 0x1, -0x1, - 0x0, - 0x0, - 0x0, - 0x1, - 0x1, -0x1, 0x0, -0x1, -0x1, + 0x0, + -0x1, 0x1, + 0x0, 0x1, + 0x0, 0x1, -0x1, + 0x1, -0x1, - 0x0, -0x1, - 0x1, + 0x0, -0x1, 0x0, 0x1, 0x1, - 0x0, 0x1, + 0x0, -0x1, + 0x1, ] .span(), array![ + 0x0, + 0x1, + 0x0, -0x1, -0x1, - -0x1, - 0x1, 0x0, -0x1, - 0x1, + -0x1, + -0x1, + -0x1, + -0x1, 0x0, 0x0, 0x1, 0x1, 0x0, - 0x0, - -0x1, - 0x0, 0x1, - 0x0, - 0x0, - -0x1, - -0x1, 0x1, - 0x0, 0x1, -0x1, - -0x1, 0x1, 0x0, - -0x1, 0x0, - -0x1, 0x0, + 0x1, -0x1, -0x1, - -0x1, - -0x1, - 0x0, 0x1, -0x1, 0x1, - -0x1, 0x0, -0x1, -0x1, 0x1, 0x0, - 0x0, -0x1, 0x1, - -0x1, 0x1, - 0x0, 0x1, -0x1, - -0x1, 0x0, 0x0, + 0x1, + 0x0, 0x0, 0x0, - 0x1, -0x1, + 0x1, 0x0, 0x1, 0x1, -0x1, + 0x1, 0x0, -0x1, + -0x1, 0x1, 0x0, - 0x0, - -0x1, + 0x1, + 0x1, + 0x1, -0x1, -0x1, 0x0, - 0x0, 0x1, + 0x0, -0x1, + 0x1, + 0x1, + 0x1, + 0x1, + 0x1, + 0x1, + 0x0, 0x0, -0x1, -0x1, - 0x0, + 0x1, + -0x1, + 0x1, 0x1, ] .span() @@ -38840,87 +38845,87 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0x84780d8839a06385ab8652f0, - limb1: 0x3cc83725325027560fd6de0b, - limb2: 0xcc00bc81c8fa055e, + limb0: 0xfe483b63c64e0c5e5137470f, + limb1: 0x10055569d687f446dd85652c, + limb2: 0xbc591b56ab87206a, limb3: 0x0 }, y: u384 { - limb0: 0x3a369d542c2d5ff5effb8823, - limb1: 0x20cea7cd72e7b31b4b752804, - limb2: 0xeba0db216904d8ff, + limb0: 0xe3634156d6c346aa4db9beff, + limb1: 0x60c907f71a24f60dbbe13396, + limb2: 0x22153ba56d2084eb, limb3: 0x0 } }, Q_high: G1Point { x: u384 { - limb0: 0xa280a98da37c1e57e8430ca8, - limb1: 0xdb5a65817cca54481332a567, - limb2: 0x7b9a6ffc3c2d2d94, + limb0: 0xb51f1621accd10acceb418da, + limb1: 0x46de8f6e24d37df616a8e986, + limb2: 0x89d36c81032e04ef, limb3: 0x0 }, y: u384 { - limb0: 0x5698aeb993aa85bb3d8bacab, - limb1: 0xc63c6a807abdc9bb6e68b873, - limb2: 0x689753f4fd4ca2b2, + limb0: 0xa57f55233592f11c8fc3c920, + limb1: 0xa127c4875f56445e637b138d, + limb2: 0xc0d0003295c139f1, limb3: 0x0 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0xf858964073ed8ca11252b5b8, - limb1: 0x5731038fb756fa2d4c8cd081, - limb2: 0x16793e26973324b6, + limb0: 0xde30db380346080a526f9f66, + limb1: 0x32e1027f0c2dcaaee909856b, + limb2: 0xdf75b061dc32ef4, limb3: 0x0 }, y: u384 { - limb0: 0x925c2501dd02459ce57b6e34, - limb1: 0xb8dd6502abaab2e42ea713eb, - limb2: 0x96dab4e8705133e2, + limb0: 0xadd7fd48df2e260a6d328c08, + limb1: 0x5649845ac8f7677dffffaa6e, + limb2: 0x464395058ce6d5fe, limb3: 0x0 } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0x5ba8badc222b955a9b0d3b1, - limb1: 0x178272a535ee0e367820ffd2, - limb2: 0x183bfe199dffdea4, + limb0: 0x429705767dbe200c08cbeab7, + limb1: 0xb2ac4c95fded6182ad0b55c8, + limb2: 0x5e7004dbf0a1292c, limb3: 0x0 }, u384 { - limb0: 0xb463e5f76394465bb69e8b12, - limb1: 0x9430183a24ac04fbcafccae0, - limb2: 0x1b32265da4cf18c5, + limb0: 0x66b0fe5b0b89ea676ec55fcb, + limb1: 0xa5bc2bc006babac1abd40827, + limb2: 0xe624b44da6b78e34, limb3: 0x0 }, u384 { - limb0: 0xe82e79ca3edfacc936a9371b, - limb1: 0x6f2428f5a7482ee9cac7e8fd, - limb2: 0xfbeb5b8b2696a6bb, + limb0: 0x8e2be7de352aa98b55573ccc, + limb1: 0xa3d730ebfcc49d229138f579, + limb2: 0x6a89ae34adcd7215, limb3: 0x0 }, u384 { - limb0: 0x5f4f1b16a97f12302243f549, - limb1: 0x5e4c7cdb8d7c6cf4ebbd3b33, - limb2: 0x809901d0f8b59bc0, + limb0: 0x20af37b56d838010fc7b965e, + limb1: 0xb82a25dfbf41b2cb10823e2f, + limb2: 0x566468cf1e7272d5, limb3: 0x0 }, u384 { - limb0: 0xf333fd620ecb248a5cc8dd75, - limb1: 0xe1f19576df82d526eb0696a7, - limb2: 0xcc823a51d5ad2e2a, + limb0: 0x1c777368bb79f5734099976d, + limb1: 0xbf3fe39ee6692fc5d51a3b3a, + limb2: 0x4ebc199bd26cb233, limb3: 0x0 }, u384 { - limb0: 0x44b061c4bf232dfca4df7540, - limb1: 0xecefb9a65969c785f0aaa47f, - limb2: 0x707c7ff31ea31b1d, + limb0: 0xf14f79d46eb5c48e2183528, + limb1: 0xe97a0a0a455c8e0678df8931, + limb2: 0xe8d1ee4e3c3ec4f6, limb3: 0x0 }, u384 { - limb0: 0x387ce494725233a7363255b9, - limb1: 0xffffffffffffffff28005cf6, + limb0: 0x546ede0777b519f3b1904e12, + limb1: 0xffffffffffffffff014ef94d, limb2: 0xffffffffffffffff, limb3: 0x0 } @@ -38928,45 +38933,45 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0xe93f55db3a5dca0bd49694ac, - limb1: 0xb6fb7edc959f3777b6e60b77, - limb2: 0xd87e332a1f5447ae, + limb0: 0xbc13ef55fff1505233c53251, + limb1: 0xd152cd994a3c6a9f24984fe8, + limb2: 0xb2d24b66edd72af8, limb3: 0x0 }, u384 { - limb0: 0x7087a059700e7dd46adf399, - limb1: 0x8ee33f247f350d6dfa4d180b, - limb2: 0x7acba627f8a55390, + limb0: 0x4ddc667ec46e5e02f419334a, + limb1: 0x8b888d50f4072c7567e03143, + limb2: 0xa0fda844bdfd185b, limb3: 0x0 }, u384 { - limb0: 0xadfc2afedc792fa5d2884be5, - limb1: 0x9f16b6a2c304211d24674870, - limb2: 0x5150e18fed2c1d4e, + limb0: 0x1b6f7742c50b49ed4eb9efc9, + limb1: 0xa7b5481f3795b34f1655999, + limb2: 0xfafc77365b3c9c5b, limb3: 0x0 }, u384 { - limb0: 0xff3f29c8c0af963fe6d4882f, - limb1: 0xa855d6de7938c498356f1ff3, - limb2: 0xc11ebf261b11ea91, + limb0: 0x9635dc1b39c413dd0fead221, + limb1: 0xe7b8219fb2396c731ac65104, + limb2: 0x1e29292a9aacf10d, limb3: 0x0 }, u384 { - limb0: 0xb2e6f8c0d74bee7d6c559ac1, - limb1: 0x2f599f0a7bd3a58992656d34, - limb2: 0xbceb12adacdbdeaf, + limb0: 0x91ea930d314c4ae20d29824d, + limb1: 0x9f1705e245992d41dc090c2b, + limb2: 0xc776a1076be0d27a, limb3: 0x0 }, u384 { - limb0: 0x6c079df37358044514c639c4, - limb1: 0xa350cdca0a6ed35566755cd, - limb2: 0x594d36cebbfd8762, + limb0: 0xa60f2aaafac3a0e53894f7e9, + limb1: 0xd4dc96a768bbbac8242181ab, + limb2: 0xbb202e524cd5da1b, limb3: 0x0 }, u384 { - limb0: 0xfdcc2060d5623ed7f7789727, - limb1: 0x20fa00b899228f98b733758, - limb2: 0xa92163b7aaec053, + limb0: 0x3fc124733b6e52f77e2dab2, + limb1: 0x70976c2571b27ea34ca6ae59, + limb2: 0x46cc5c2220182d16, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -38974,114 +38979,114 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x29a6c76ee04c340e8191a9a6, - limb1: 0x4c17701515f0329aa71a9a5d, - limb2: 0xdc4043da38735513, + limb0: 0xcb3b301269c1b8364e4301e4, + limb1: 0xe797a24c0a982642e476d14d, + limb2: 0xeacff21c476cdfb9, limb3: 0x0 }, u384 { - limb0: 0xcedfd3cff6e498e7c9bc859e, - limb1: 0xad8dacaa31856c2f336e113d, - limb2: 0x7e0db67c9ba545b9, + limb0: 0xc316564f8899278c4e4e0e41, + limb1: 0x3a8c155a2e375b946fa96aa6, + limb2: 0x199ec49293843d01, limb3: 0x0 }, u384 { - limb0: 0xa9c16bfe6f99089c9534e89b, - limb1: 0xa7762176953cb5c666278b61, - limb2: 0xb6f47920fcfaef52, + limb0: 0x934b9768948364c06b285ebf, + limb1: 0x855a9d1aee8720cdcd498641, + limb2: 0x21027cad71969d95, limb3: 0x0 }, u384 { - limb0: 0x9cf846e27d94c80d1affda67, - limb1: 0x5d904c782ff44740904097bf, - limb2: 0x23afbbb55f788401, + limb0: 0xfe46ce2b928639e2dae7d965, + limb1: 0x689e21573145198b2774873f, + limb2: 0x7f86b89ddfa938e1, limb3: 0x0 }, u384 { - limb0: 0x2d59408f9af795bbd7227b7, - limb1: 0xed67ad4a7263cf3a2d9179fd, - limb2: 0x810a838d4366ca00, + limb0: 0x15954b67384f6a6ff846fa73, + limb1: 0x15bc22ec190029969df85b02, + limb2: 0xa883009049bdef1d, limb3: 0x0 }, u384 { - limb0: 0xd2115bc33996c1c4abb603d8, - limb1: 0x2cfe2063db993491b02223a8, - limb2: 0x9c4ff810b7f8dfea, + limb0: 0x9e170f02fbc514e128d4e22a, + limb1: 0xe48dd4c22f24f7bec5b6a3aa, + limb2: 0x65f0968d76f2e3f6, limb3: 0x0 }, u384 { - limb0: 0x491a1f85346f97b1afb43f0f, - limb1: 0xb0ecfa55564d4f41f42a21f6, - limb2: 0xf542ee8839d1048b, + limb0: 0x2eb9e09dbd08e6bda04d1e21, + limb1: 0x9ba3cc000f34c45ccd6f5500, + limb2: 0x8285a55f082df4fe, limb3: 0x0 }, u384 { - limb0: 0xd569410210cda8166fc57e1e, - limb1: 0xa2081c989980e6d7e9368778, - limb2: 0x65ab5dd74c6c8d8c, + limb0: 0x170b84a0e7451d7933365b1d, + limb1: 0x5f90b5dae9cb0ee64cb402f3, + limb2: 0xc6af86156fa99b85, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x60bb58fe98908657d01e23c9, - limb1: 0xe07808175a8446004a5047, - limb2: 0xeb736626db4df5c7, + limb0: 0x248b8b59ff9932436a646f7b, + limb1: 0xb9439f3107a6ea5a002a2f5d, + limb2: 0xe3c00fd080e22ccd, limb3: 0x0 }, u384 { - limb0: 0x313b56272106570feec1b4a2, - limb1: 0xe836b9ff7a735e01d81ba84d, - limb2: 0x5b918b17cc8548f3, + limb0: 0x2106cd775f049218acb0764a, + limb1: 0xd0bbdd36ac323735d72158d7, + limb2: 0x66ef99e131ebaa80, limb3: 0x0 }, u384 { - limb0: 0xc1e52cf807504d8ac1ba1ae5, - limb1: 0x599efe73551ce7cbfed2fb14, - limb2: 0x39362aef7c34cd26, + limb0: 0xc00c42d3634f05832715a565, + limb1: 0x495f4f8da8517e7299c5732f, + limb2: 0xdce7427c7ea8467d, limb3: 0x0 }, u384 { - limb0: 0xe3f97a587f2ae5d1246664db, - limb1: 0x51545ef1e62c97a12cefeb23, - limb2: 0x20556d34dcd1b1aa, + limb0: 0xd78cf414944ddb5ea330f509, + limb1: 0x275bb8f729ce61c4e0048708, + limb2: 0x85f26b912891c25a, limb3: 0x0 }, u384 { - limb0: 0xeb59474b7a146d503d0541f5, - limb1: 0xda56986de1fe9430fb13147b, - limb2: 0xa53928e7b2a86a5a, + limb0: 0x4b466bdb1d846a37503bda4b, + limb1: 0xe529b680db3769426c1f8674, + limb2: 0x153c0f78b122d9b5, limb3: 0x0 }, u384 { - limb0: 0xa2317ca703e14d8b63f3e7e3, - limb1: 0xe68a10ab27949d92813aa10e, - limb2: 0xc26d6137111ad0fc, + limb0: 0xa5d9a1efa064b037daccce0e, + limb1: 0xdc837315d09b76adee4fe54a, + limb2: 0x18ddbb767515931d, limb3: 0x0 }, u384 { - limb0: 0xefd40c6e965f4e28ab20ae11, - limb1: 0xb6c3372f3c37e36b0595a362, - limb2: 0xb1d5ac675d92cd6, + limb0: 0xb21a5c0da3c4582b571ed4a1, + limb1: 0xfbdc16a5ce1ae2ea33551573, + limb2: 0xdbfae197b562caa, limb3: 0x0 }, u384 { - limb0: 0xb2e6f8c0d74bee7d6c559ac8, - limb1: 0x2f599f0a7bd3a58992656d34, - limb2: 0xbceb12adacdbdeaf, + limb0: 0x91ea930d314c4ae20d298254, + limb1: 0x9f1705e245992d41dc090c2b, + limb2: 0xc776a1076be0d27a, limb3: 0x0 }, u384 { - limb0: 0x6c079df37358044514c639c4, - limb1: 0xa350cdca0a6ed35566755cd, - limb2: 0x594d36cebbfd8762, + limb0: 0xa60f2aaafac3a0e53894f7e9, + limb1: 0xd4dc96a768bbbac8242181ab, + limb2: 0xbb202e524cd5da1b, limb3: 0x0 }, u384 { - limb0: 0xfdcc2060d5623ed7f7789727, - limb1: 0x20fa00b899228f98b733758, - limb2: 0xa92163b7aaec053, + limb0: 0x3fc124733b6e52f77e2dab2, + limb1: 0x70976c2571b27ea34ca6ae59, + limb2: 0x46cc5c2220182d16, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -39091,44 +39096,44 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0xd23a90e6e887f7af2e0c14bf, - limb1: 0x6b84a9e37e92ca0133ab07f1, - limb2: 0xcb0354b628e54b38, + limb0: 0x993ee7e014578be39457461, + limb1: 0x91380144982af9de269e1b67, + limb2: 0x778142239efc8e77, limb3: 0x0 }, u384 { - limb0: 0x8daa017290f5cf2b190dba1f, - limb1: 0xb42a4691bdfd4459a4203104, - limb2: 0xcdaee98c2a799201, + limb0: 0xa3c1ec53f63557aaacf6e606, + limb1: 0x8e173e9757fbda57cc993c57, + limb2: 0x804310912355458f, limb3: 0x0 }, u384 { - limb0: 0x5a7dc5eaa54847b0becda2f0, - limb1: 0xc531ce0302e6039ff37786a4, - limb2: 0x480a766f4a4fb008, + limb0: 0x63835c0627f1ecd6db931f50, + limb1: 0x68edb874c2edd8e840c1f75f, + limb2: 0xa94a5b9d14c29a2a, limb3: 0x0 }, u384 { - limb0: 0x483b8695ebd64b43ed32a4e8, - limb1: 0xa2c9740740333f9f68f312bf, - limb2: 0xb6613f1e540f40a7, + limb0: 0x28b0008df36feda9eeb81e3b, + limb1: 0xbf1e90bee39fa26aca893ecb, + limb2: 0x744040a48251610f, limb3: 0x0 }, u384 { - limb0: 0x118a2fdf43d1c423d59e216c, - limb1: 0x87e6ec9e8ec989849932d538, - limb2: 0x6ecb7756dc1ce681, + limb0: 0xcb84939ddcc6f5a5dd6c3151, + limb1: 0x7a869c68d085e6035a70b90e, + limb2: 0xac0f12302c947743, limb3: 0x0 }, u384 { - limb0: 0xfe581bd037d8f7251f051d24, - limb1: 0xe13f5798ccb1246e4b95d6dd, - limb2: 0x14e508216558c92a, + limb0: 0x4548f566b054636b899c13a9, + limb1: 0xd1967377f293e889f47eb01a, + limb2: 0xf9ee1b9e8c3c74c, limb3: 0x0 }, u384 { - limb0: 0x4032ae0d25399f83d6783f7, - limb1: 0x436f8060, + limb0: 0xb5353be1e9f0fb5816d04bbb, + limb1: 0x1b111854, limb2: 0x8000000000000000, limb3: 0x0 } @@ -39136,45 +39141,45 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0xae4c58c5d5e99815a7308e24, - limb1: 0x60ab4b590b92ff3f2590d7a2, - limb2: 0x81030f5805cb40f7, + limb0: 0x655a343e13a9b4fdcf39fdb3, + limb1: 0x45634c8a07947f252f3785e4, + limb2: 0x15b1ed790d721f15, limb3: 0x0 }, u384 { - limb0: 0xef5f65c8acd897048356a8fd, - limb1: 0xed0284bca335d0cef635f8aa, - limb2: 0xe8cf5132c6766d1b, + limb0: 0xeb370fc8a2d16be5e1be3fc6, + limb1: 0x30449e986e00dc7b4aacc7e9, + limb2: 0x3c9c3430c121c5b0, limb3: 0x0 }, u384 { - limb0: 0xb0ff87267f8283bbe878bcb6, - limb1: 0x8aaf0cee095c8f4851fadead, - limb2: 0x431592a885bd41f9, + limb0: 0x4478b0694731bbe58f99ef09, + limb1: 0xa3794b02f75460090bd73e42, + limb2: 0xa4956d55bffe4fbd, limb3: 0x0 }, u384 { - limb0: 0xf937127cf230f3524620c02a, - limb1: 0x7d6cff28ff90ef732ade4913, - limb2: 0x9f331e80610ea42b, + limb0: 0x59d7ebc030f7471422053a39, + limb1: 0x88f9dc0195f01e489874cb9, + limb2: 0xf6851c7a9d2e54f9, limb3: 0x0 }, u384 { - limb0: 0x518ee24b429eaccf0471f876, - limb1: 0xbbc19fad97e5083f14e8ac9a, - limb2: 0x320915dac75a4f45, + limb0: 0x1d9cabb26c6ca75e365c1fd4, + limb1: 0xd3f2f64ab13b29a0986e5784, + limb2: 0x2e4df6ae4633836a, limb3: 0x0 }, u384 { - limb0: 0x580c10d71188973339b1d137, - limb1: 0x479d3316db3be7cd8fc958e1, - limb2: 0x431ae8366be7228b, + limb0: 0xce1611739d8f365f1a54bc6e, + limb1: 0x5074dbcbd85363a82f966fc8, + limb2: 0x5d9cfd2fc345f87c, limb3: 0x0 }, u384 { - limb0: 0xdfc3845b6b868405babbdd6f, - limb1: 0x637d71af3f17fc0788176ffc, - limb2: 0x5af862c1077b981c, + limb0: 0x4d2537894d37e0e0fa6608e7, + limb1: 0x39be32212366f4f4138329ff, + limb2: 0x79520af7c8714891, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -39182,114 +39187,114 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xe3df2d932683fa168b16976f, - limb1: 0x1d7cd8642fddf31d486dbbcc, - limb2: 0xa2f58a0eaff8cb75, + limb0: 0x8ce9a30cf3b34f61efadcdf5, + limb1: 0xf9719f29f45a4a333d6ba035, + limb2: 0x99be0e06aed40557, limb3: 0x0 }, u384 { - limb0: 0x1249b7531e52e3b2fbbf161e, - limb1: 0x8cb54aac4ad7eb8ef85f734, - limb2: 0xfda8836423fceb2, + limb0: 0xf345756875f93b993dc7f97b, + limb1: 0x6ee9cae471d1a20a52916a29, + limb2: 0xd70d6cc8adae7b56, limb3: 0x0 }, u384 { - limb0: 0xbf2063a0c546bfdc3e46ac26, - limb1: 0x47a0ae923f59eb0d2cdc0d22, - limb2: 0x66a7f320a4dcdaf8, + limb0: 0x58c7e5e81da33e7af2b9685c, + limb1: 0x9f01e90f7309fbf0d5d27a45, + limb2: 0x76f3f39ac2bcee78, limb3: 0x0 }, u384 { - limb0: 0xb63f8751e3b423c9a93c0cfc, - limb1: 0xad9926bfdbe9f603b51b0c3c, - limb2: 0xcf808580384415d5, + limb0: 0xc11913635683038a96f51ee1, + limb1: 0x6c473df0a0e3903aa2f76dbd, + limb2: 0xa0b22e671debf012, limb3: 0x0 }, u384 { - limb0: 0xa8a9e350824937bf49954d3b, - limb1: 0x2a8639bc636d585f61a43ab6, - limb2: 0x89c9b4780845991a, + limb0: 0x2c82ecca47499638f86cab97, + limb1: 0xd48237097bfca43dd8701005, + limb2: 0xc59af1b173e67ccc, limb3: 0x0 }, u384 { - limb0: 0xdd3734527b5b0383cd374a73, - limb1: 0xcd68e405fb66687ce64399c4, - limb2: 0x33f1bd0e68efeea5, + limb0: 0xdedcbdf3ba019b4276e85dde, + limb1: 0x4e5d14f819b387c1ed9f9a52, + limb2: 0x4abefe6c26c5f16a, limb3: 0x0 }, u384 { - limb0: 0x216d15d73a9317fda5bb2836, - limb1: 0x26c7cbc9ef48ef085d50fd15, - limb2: 0xa35f189f756d9f3d, + limb0: 0x24f1f3e93e50c1662f25ccf6, + limb1: 0x4af93b85a24e57dba6211e9d, + limb2: 0x47ef0d9f11b858e9, limb3: 0x0 }, u384 { - limb0: 0x1b04feed906aad8fa4bdcd99, - limb1: 0xeac23b273f07a2a170612629, - limb2: 0xc1be7e0de5eda737, + limb0: 0xf7bf974fe340af72703c59b3, + limb1: 0x3f60b9e885b8c0886e7727ad, + limb2: 0x2a69014643112d59, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xc4166d68d963289a9253ee6f, - limb1: 0xa4af0f6f5104faba06f5e572, - limb2: 0x87156b68288ec6c3, + limb0: 0xc5776db289a3f2f0aa95efe5, + limb1: 0xe5b717c6350f7a044a84a93e, + limb2: 0x97dd7e4f5e1ed994, limb3: 0x0 }, u384 { - limb0: 0x8b9bc87cb9ec2125975eb5d1, - limb1: 0x7b11a1287678b5a8bb79ccac, - limb2: 0x5dab38636d3cfbc3, + limb0: 0x6e816e7c73b9f34a2c33c23b, + limb1: 0x51e0562b0206075f0ab97765, + limb2: 0xa8456d5547ec67d1, limb3: 0x0 }, u384 { - limb0: 0xd6fcb20d7c919a245b4d2ccb, - limb1: 0xcac95a824187eafa3ddc16bf, - limb2: 0xd597029ba82ccdd2, + limb0: 0xdf4cd2e0f25c234aed359883, + limb1: 0x78510d14c34ea03f52e2b3cf, + limb2: 0x8015fd583ff42e2f, limb3: 0x0 }, u384 { - limb0: 0x7ecdda3075403f599215de8e, - limb1: 0xcea6457808898b6551a4d72e, - limb2: 0xdb68e4daad31be27, + limb0: 0xda41a67f6a6ca690bd5eac28, + limb1: 0x81509ccab92d8c64f1ea9ef5, + limb2: 0xd355b4d359b671e4, limb3: 0x0 }, u384 { - limb0: 0x2a4795d77f2f50afa2747bd9, - limb1: 0xf4de27bca790a888892b0e3, - limb2: 0x470eea2e39ee9804, + limb0: 0xba7fc1a999c9ff7a5e432263, + limb1: 0xfbe95aa3469effdf75b12c86, + limb2: 0x80bdf2f4ac8a5d9b, limb3: 0x0 }, u384 { - limb0: 0x1953fd07fa3ea6247c557cd9, - limb1: 0x7ffb728e07ffe5e7407c4cd7, - limb2: 0x18d1ec25790f33c8, + limb0: 0xe7132a92961c388247eb217e, + limb1: 0xd6ab4d95e19c19a258f44cbf, + limb2: 0x33e059a416e81b23, limb3: 0x0 }, u384 { - limb0: 0x178fb0fce2de8f7d6143d9a6, - limb1: 0x35db1af3b938d3a7e38258fe, - limb2: 0x1bfdd1c7956fccf2, + limb0: 0x75dc70814d7e6d3efacf87ce, + limb1: 0x9cc2fca8112fb491121d72b4, + limb2: 0x47c36941184750f1, limb3: 0x0 }, u384 { - limb0: 0x518ee24b429eaccf0471f87d, - limb1: 0xbbc19fad97e5083f14e8ac9a, - limb2: 0x320915dac75a4f45, + limb0: 0x1d9cabb26c6ca75e365c1fdb, + limb1: 0xd3f2f64ab13b29a0986e5784, + limb2: 0x2e4df6ae4633836a, limb3: 0x0 }, u384 { - limb0: 0x580c10d71188973339b1d137, - limb1: 0x479d3316db3be7cd8fc958e1, - limb2: 0x431ae8366be7228b, + limb0: 0xce1611739d8f365f1a54bc6e, + limb1: 0x5074dbcbd85363a82f966fc8, + limb2: 0x5d9cfd2fc345f87c, limb3: 0x0 }, u384 { - limb0: 0xdfc3845b6b868405babbdd6f, - limb1: 0x637d71af3f17fc0788176ffc, - limb2: 0x5af862c1077b981c, + limb0: 0x4d2537894d37e0e0fa6608e7, + limb1: 0x39be32212366f4f4138329ff, + limb2: 0x79520af7c8714891, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -39299,9 +39304,9 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0xc5461b6c128e2b3d863e803, - limb1: 0xdbcb64a636d07073d0a7ef9c, - limb2: 0x5120f175beba2f4, + limb0: 0xab2dfe836328d60ef6216667, + limb1: 0xcb9bef686200c47593a418fd, + limb2: 0x58c36f4bd27d84f4, limb3: 0x0 }, u384 { @@ -39314,15 +39319,15 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0xfad18c4659f88540364ef6e6, - limb1: 0x55897590c988c444d7637e3e, - limb2: 0x46fdf90e0e32a604, + limb0: 0xfa4d2a6a64c7d4613020cfaa, + limb1: 0xce0ef18d8e62b5d0f2076dfa, + limb2: 0x975f9c7438b5d5b2, limb3: 0x0 }, u384 { - limb0: 0x6526c031e8965506056a39cf, - limb1: 0xcd7496eecbdeb18aa0408a16, - limb2: 0x6dec51dd2c9fadb4, + limb0: 0x6cb00ea64fece747dedc43ef, + limb1: 0x86406e12cefeb75b004d910d, + limb2: 0x68353878df0ecc1c, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -39330,49 +39335,49 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x21a6a5832f9f6b397550b7cb, - limb1: 0xf7680e64ecef6096c5e349b7, - limb2: 0x203def586d40ebe3, + limb0: 0x84225030b8b801651c70bd3d, + limb1: 0x3e5c31c60e0ccffdc1c19251, + limb2: 0x25d24b95e25b4639, limb3: 0x0 }, u384 { - limb0: 0x51c90b57b4580c89ea089500, - limb1: 0x6502b03e75d94b4858d88168, - limb2: 0x5376ddae9115ba68, + limb0: 0x689fe389a3a795e4634a9495, + limb1: 0x25cee9ee4928d16945557028, + limb2: 0xc964d613c4d47d, limb3: 0x0 }, u384 { - limb0: 0xe2e032f18f6db7d88d97515d, - limb1: 0xe76a18e37c93aea063e0da9a, - limb2: 0xa6a66e1b9a9a14f6, + limb0: 0xd1bf197153e2d08caed099, + limb1: 0xcc52d086a972028b1e5c3788, + limb2: 0xaf05254d6b1d5c5b, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xdbbad5ec75cba4c27c28c41b, - limb1: 0x56c236f582bd5de1e3b873b8, - limb2: 0xf0f1cf6263628a1e, + limb0: 0xd81c28e8c176ceac50e5bcea, + limb1: 0xa2689adee4b2f8b69e3401dc, + limb2: 0x239d472d8cf8d7e3, limb3: 0x0 }, u384 { - limb0: 0xc40f415d5c1c532d25e7a01c, - limb1: 0x9e3020879316daca61c3c69c, - limb2: 0x1763d0c385dbff1, + limb0: 0xf8d0668c2f7a52f91805e32b, + limb1: 0xabc30283a8f7037d021ef75d, + limb2: 0xd9748b4e196794c7, limb3: 0x0 }, u384 { limb0: 0x7, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xfad18c4659f88540364ef6e6, - limb1: 0x55897590c988c444d7637e3e, - limb2: 0x46fdf90e0e32a604, + limb0: 0xfa4d2a6a64c7d4613020cfaa, + limb1: 0xce0ef18d8e62b5d0f2076dfa, + limb2: 0x975f9c7438b5d5b2, limb3: 0x0 }, u384 { - limb0: 0x6526c031e8965506056a39cf, - limb1: 0xcd7496eecbdeb18aa0408a16, - limb2: 0x6dec51dd2c9fadb4, + limb0: 0x6cb00ea64fece747dedc43ef, + limb1: 0x86406e12cefeb75b004d910d, + limb2: 0x68353878df0ecc1c, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -39382,12 +39387,19 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0x193e221f31ab5ac88f37eb19, - limb1: 0x9c443c70526af0371f009a1f, - limb2: 0x6e672901877d81f6, + limb0: 0xe191008236298527fea810fd, + limb1: 0x2c593d7fd5ad504b6f491e68, + limb2: 0x13f4d89b36b961e2, limb3: 0x0 }, - g_rhs_sqrt: array![], + g_rhs_sqrt: array![ + u384 { + limb0: 0x8556e3a3aba0aed182b3a39d, + limb1: 0xdccba73df32f3d8e0c9c7402, + limb2: 0x1787d6b9dd635f31, + limb3: 0x0 + } + ], }; let res = msm_g1( points, scalars, scalars_digits_decompositions, msm_hint, derive_point_from_x_hint, 2 @@ -39395,15 +39407,15 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0xc4e6a9b999e0fb6bf26d72cc, - limb1: 0x21e9bc26a99c09a29c600c21, - limb2: 0xcc219fd193117e75, + limb0: 0x3885e9bd06d220c6869b40ec, + limb1: 0x2407200ee9d34f254619f742, + limb2: 0x496922b5ec600ca3, limb3: 0x0 }, y: u384 { - limb0: 0xf4ba026fd78fe5c5cf119d70, - limb1: 0xe5edd1bbf84a114435472345, - limb2: 0x18b2a12dedb2998f, + limb0: 0x6facd11d602caef7f1dc7d60, + limb1: 0x24b0a4a893c6e60bc3a7c51e, + limb2: 0xe175b8500a1c77b2, limb3: 0x0 } } @@ -39416,99 +39428,99 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0x75fd32740eb551c1ebafff49, - limb1: 0x1d5d9d4aed11d6d71f80a148, - limb2: 0x6737f72ed95dd4c5, + limb0: 0x393dead57bc85a6e9bb44a70, + limb1: 0x64d4b065b3ede27cf9fb9e5c, + limb2: 0xda670c8c69a8ce0a, limb3: 0x0 }, y: u384 { - limb0: 0x9fece126f0373352a2ab88da, - limb1: 0xac8927156e2205d9133e7a01, - limb2: 0x4c764e5ed22429bb, + limb0: 0x789872895ad7121175bd78f8, + limb1: 0xc0deb0b56fb251e8fb5d0a8d, + limb2: 0x3f10d670dc3297c2, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xb08af7f3919d790db4d6acd3, - limb1: 0x6c0d8289bb717701d704c6fd, - limb2: 0xa959f6200dc5c1de, + limb0: 0xfdfdc509f368ba4395773d3a, + limb1: 0x8de2b60b577a13d0f83b578e, + limb2: 0xc2dd970269530ba2, limb3: 0x0 }, y: u384 { - limb0: 0x2d7da845cd242f4b399bbf0, - limb1: 0xf799ad3cafea9ac3f6445df5, - limb2: 0x5f4f77a954bc5429, + limb0: 0x589fa250d638e35400c12ddf, + limb1: 0xb3aac19fcb5095808402aa7f, + limb2: 0xed6de6590d0195d1, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x8293fd4b82414950c9a43c69, - limb1: 0x69957f085f7452ccb1f172d0, - limb2: 0xdff75ea860f96b80, + limb0: 0x2965eeb3ec1fe786a6abe874, + limb1: 0x33e2545f82bb6add02788b8e, + limb2: 0xf586bc0db335d7b8, limb3: 0x0 }, y: u384 { - limb0: 0xd244e5910e84fde9dbb7ca85, - limb1: 0xba10ed8be1a86755f5aa24a8, - limb2: 0x92a1e7c3235a634c, + limb0: 0x155b35991489db2fdf4de620, + limb1: 0xf24ce461346a182d67eeccf0, + limb2: 0xb4122bb4b37cc7d5, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xf805a70de46cd1b054f26724, - limb1: 0x9edd2b35ff22b1aeb2ae83e5, - limb2: 0xe1eedb57af623cba, + limb0: 0x12815740835b12f70b96c66f, + limb1: 0xbfa76a8b80aec9f2e31c40cc, + limb2: 0xcd8a26d17d33c7c1, limb3: 0x0 }, y: u384 { - limb0: 0x8a8cc8184d0330e47ecb952a, - limb1: 0x746cca33687189706595d1ab, - limb2: 0x61d91ed466c2f6b, + limb0: 0x9a8f496f09402b8fd6beb89b, + limb1: 0x28e48918dad2123d7f202bef, + limb2: 0xcdd11b6ffb3f8614, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x1e342c3d60646d739ed920ff, - limb1: 0x25677e7c7394ad37569563b6, - limb2: 0x5ef51a202607df3a, + limb0: 0xb5076be8537cff2a42c6db68, + limb1: 0x1066d40cbd01a3752e4e069c, + limb2: 0x123ec2fd302cb0f9, limb3: 0x0 }, y: u384 { - limb0: 0xfe5bc8a7c74944961d4ac8fa, - limb1: 0x9ff996f52345aea7d1d82644, - limb2: 0xc7bd06c702b4e0ba, + limb0: 0xc85f5e5efdf415f8081bf53f, + limb1: 0xadc5010e9d9ac6c64000d33d, + limb2: 0xf81314011d8852e4, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x664e78716e29c53204ad690a, - limb1: 0xa84f987bf8823e122c451f0e, - limb2: 0x3f298add09b81927, + limb0: 0xd5915098d3d2001310b0b935, + limb1: 0x88bb4507ebf1be82cfba2397, + limb2: 0x8a463f1c00ce885f, limb3: 0x0 }, y: u384 { - limb0: 0xdd9eb53e26f65b9eb84d45bf, - limb1: 0x46d06c576ca910024f8c3166, - limb2: 0x25881dd4ed1ae0c, + limb0: 0x414858f8a83f9d4498890137, + limb1: 0xa09c4658c47ace74c42cdb60, + limb2: 0x8aaf300ff3ab7d98, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xa2c24a6961a76504a248fdbd, - limb1: 0x20c2ec5becf416179dd297b6, - limb2: 0x21b97e002fcf7b3c, + limb0: 0x1772eb803ddc8a82e23b1c05, + limb1: 0xc26baeb89b03fd69eb64b337, + limb2: 0x4ea7131b2d873a45, limb3: 0x0 }, y: u384 { - limb0: 0x58f876fb1153bb9e60371f65, - limb1: 0xd4dc8f3b33e3c91f232fab6e, - limb2: 0xc3e4bc6b6da931a, + limb0: 0xc9d16330db15efd90235eed9, + limb1: 0x1b586ef360673d36baa16189, + limb2: 0xee652d2b848ad111, limb3: 0x0 } }, @@ -39516,25 +39528,25 @@ mod msm_tests { .span(); let scalars = array![ u256 { - low: 0x70a10c9f4c97a070d1f704c89ae683ef, high: 0xb5947b5884ac7c79587ab6a118332869 + low: 0x8d723104f77383c13458a748e9bb17bc, high: 0x85776e9add84f39e71545a137a1d5006 }, u256 { - low: 0x91d527c813c4a3f978ac03412a6723b0, high: 0xcf78efb5ab2914e255fdcf41a0bbdaaa + low: 0xeb2083e6ce164dba0ff18e0242af9fc3, high: 0x17e0aa3c03983ca8ea7e9d498c778ea6 }, u256 { - low: 0xe607d8878f48985e2273a62ca65a54e9, high: 0x6fa9395429e98f092d1f885bcf9bee1 + low: 0xb5d32b1666194cb1d71037d1b83e90ec, high: 0xa0116be5ab0c1681c8f8e3d0d3290a4c }, u256 { - low: 0x756d92ae26df0cbde82e0ed8367802cb, high: 0x7cc4a930796322ea14651d827c73a1a5 + low: 0xd3fbf47a7e5b1e7f9ca5499d004ae545, high: 0xbaf3897a3e70f16a55485822de1b372a }, u256 { - low: 0x73202d9b0f88069b2c8c2266b6661ec6, high: 0xb023865e51166bb796f14fb60e3bf5af + low: 0x101fbcccded733e8b421eaeb534097ca, high: 0x38c1962e9148624feac1c14f30e9c5cc }, u256 { - low: 0xa99697bc6b9237d30c9205cafbefeccb, high: 0x967b4a3efd2558d82b970625a4567509 + low: 0x247a8333f7b0b7d2cda8056c3d15eef7, high: 0x1759edc372ae22448b0163c1cd9d2b7d }, u256 { - low: 0x4e1411705e103d982c1ce228724a3de6, high: 0x1ad398c4b466d94e989dbb5365dcd4bd + low: 0xe005b86051ef1922fe43c49e149818d1, high: 0x7d41e602eece328bff7b118e820865d6 }, ] .span(); @@ -39542,47 +39554,29 @@ mod msm_tests { array![ ( array![ - -0x1, 0x0, - -0x1, - 0x1, 0x1, 0x1, - -0x1, - -0x1, - -0x1, 0x0, -0x1, - -0x1, - -0x1, - 0x1, 0x1, 0x0, - 0x0, - 0x1, 0x1, -0x1, 0x1, - -0x1, 0x1, - 0x0, - 0x0, -0x1, 0x1, -0x1, - 0x0, 0x1, - 0x1, - 0x0, - 0x0, -0x1, -0x1, 0x1, - -0x1, - -0x1, 0x0, 0x0, -0x1, + 0x1, + 0x0, 0x0, 0x0, 0x0, @@ -39591,123 +39585,140 @@ mod msm_tests { 0x1, 0x1, -0x1, - -0x1, - -0x1, - -0x1, 0x1, + 0x0, 0x1, + 0x0, + 0x0, + 0x0, + 0x0, 0x1, -0x1, -0x1, - -0x1, + 0x0, 0x1, + -0x1, 0x0, -0x1, 0x1, 0x1, + -0x1, + 0x0, 0x0, + 0x0, + -0x1, -0x1, + 0x0, -0x1, + 0x1, + 0x0, 0x0, 0x1, 0x1, -0x1, 0x0, - -0x1, 0x0, + 0x1, -0x1, 0x0, + -0x1, + 0x1, + 0x1, 0x0, 0x1, 0x0, + -0x1, 0x0, 0x0, 0x1, - ] - .span(), - array![ -0x1, -0x1, -0x1, - -0x1, - 0x1, 0x1, + ] + .span(), + array![ 0x1, 0x0, - -0x1, 0x0, - -0x1, 0x0, - -0x1, - -0x1, + 0x1, -0x1, 0x1, 0x0, - -0x1, + 0x1, 0x1, -0x1, 0x1, 0x0, -0x1, + 0x0, 0x1, -0x1, + 0x0, -0x1, + 0x1, + 0x1, -0x1, 0x0, 0x1, - 0x0, - 0x0, 0x1, -0x1, - 0x0, - 0x0, -0x1, 0x1, 0x1, - 0x1, 0x0, + -0x1, 0x0, 0x0, - 0x1, -0x1, + -0x1, + 0x1, 0x0, + -0x1, 0x0, - 0x0, + 0x1, 0x0, 0x1, 0x1, + 0x0, + 0x1, + 0x0, -0x1, -0x1, -0x1, - 0x0, + 0x1, 0x1, 0x0, -0x1, - 0x0, 0x1, 0x0, 0x1, - -0x1, 0x0, - -0x1, 0x0, - 0x1, + -0x1, 0x1, 0x0, 0x1, + -0x1, + 0x1, 0x1, + -0x1, 0x0, 0x1, + -0x1, 0x1, -0x1, + 0x0, + 0x0, + 0x0, -0x1, -0x1, - 0x0, 0x1, - 0x0, 0x1, -0x1, -0x1, + 0x1, ] .span() ), @@ -39715,167 +39726,166 @@ mod msm_tests { array![ -0x1, 0x1, - 0x1, -0x1, 0x1, - 0x1, - 0x0, - -0x1, - -0x1, -0x1, 0x0, + 0x0, -0x1, -0x1, -0x1, 0x1, + 0x0, + 0x0, -0x1, -0x1, 0x1, - -0x1, - -0x1, - -0x1, - -0x1, - -0x1, - -0x1, - -0x1, - 0x0, - -0x1, 0x1, - 0x0, - -0x1, - 0x0, 0x1, -0x1, 0x1, - 0x0, - -0x1, -0x1, - -0x1, - 0x0, 0x1, 0x1, -0x1, 0x0, + 0x1, 0x0, 0x0, -0x1, 0x0, -0x1, + -0x1, 0x1, 0x0, 0x1, 0x1, - 0x1, -0x1, - 0x0, - 0x1, - 0x1, 0x1, 0x0, -0x1, - 0x0, - 0x0, + -0x1, + -0x1, + -0x1, + -0x1, -0x1, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x1, -0x1, - -0x1, 0x1, + 0x0, -0x1, 0x0, 0x0, + 0x1, + 0x0, + 0x0, + 0x1, + 0x1, -0x1, -0x1, 0x1, 0x1, 0x0, -0x1, - 0x1, - ] - .span(), - array![ 0x0, - 0x1, + -0x1, 0x0, 0x0, 0x1, - 0x1, -0x1, - 0x0, -0x1, -0x1, 0x0, + 0x0, + 0x1, + 0x0, -0x1, -0x1, + ] + .span(), + array![ 0x1, -0x1, 0x1, + -0x1, 0x0, -0x1, 0x0, -0x1, 0x0, + -0x1, 0x0, -0x1, + 0x1, + 0x0, 0x0, 0x0, + 0x1, 0x0, 0x1, 0x1, + 0x0, -0x1, + 0x1, -0x1, 0x0, 0x1, - 0x0, -0x1, 0x0, - 0x1, + 0x0, 0x1, -0x1, + 0x0, 0x1, -0x1, -0x1, - -0x1, 0x1, - -0x1, - -0x1, 0x0, 0x0, - 0x0, - -0x1, -0x1, 0x0, -0x1, - 0x1, + 0x0, -0x1, -0x1, + 0x1, 0x0, + 0x1, -0x1, -0x1, - -0x1, + 0x0, + 0x0, 0x1, -0x1, - 0x1, - 0x1, + -0x1, 0x0, 0x0, 0x1, 0x1, + -0x1, 0x1, -0x1, -0x1, 0x0, - -0x1, 0x1, + -0x1, 0x0, + -0x1, + 0x1, + -0x1, 0x1, + -0x1, 0x0, + -0x1, 0x1, 0x1, -0x1, + -0x1, 0x0, -0x1, -0x1, @@ -39884,851 +39894,851 @@ mod msm_tests { ), ( array![ - 0x1, + -0x1, + -0x1, + 0x0, -0x1, 0x1, 0x0, 0x0, + 0x1, + 0x1, + 0x1, + 0x1, 0x0, + 0x1, 0x0, 0x1, 0x0, + 0x1, + -0x1, + 0x1, -0x1, + 0x0, -0x1, 0x1, - 0x0, 0x1, - -0x1, 0x1, + 0x0, 0x1, -0x1, -0x1, - -0x1, + 0x0, 0x1, 0x1, 0x1, -0x1, -0x1, - 0x1, + 0x0, 0x0, 0x1, 0x1, - 0x1, - 0x1, - 0x0, -0x1, - 0x0, -0x1, -0x1, + 0x1, 0x0, - 0x0, + -0x1, -0x1, 0x1, 0x0, + -0x1, 0x1, 0x1, -0x1, - 0x0, - 0x0, - 0x1, 0x1, + 0x0, -0x1, 0x0, 0x1, - 0x1, -0x1, 0x0, + -0x1, 0x0, - 0x1, - 0x1, -0x1, 0x0, + 0x1, -0x1, -0x1, - 0x1, 0x0, - 0x1, - 0x1, -0x1, 0x1, 0x1, 0x1, 0x0, 0x0, - -0x1, - 0x0, 0x0, - -0x1, 0x1, + -0x1, 0x0, 0x1, - 0x1, 0x0, + 0x1, -0x1, -0x1, ] .span(), array![ - -0x1, + 0x1, + 0x1, -0x1, 0x1, 0x0, + 0x1, -0x1, + 0x1, 0x0, -0x1, + -0x1, 0x0, + 0x1, + 0x1, 0x0, + 0x1, 0x0, 0x0, + 0x1, + 0x1, -0x1, - -0x1, - 0x0, - 0x0, 0x0, + -0x1, + -0x1, 0x1, 0x0, + 0x0, -0x1, 0x0, -0x1, - 0x1, 0x0, -0x1, + 0x0, 0x1, 0x0, 0x0, -0x1, + 0x0, + 0x1, -0x1, 0x0, -0x1, + -0x1, 0x1, + -0x1, 0x0, 0x1, - 0x0, - -0x1, 0x1, 0x0, 0x0, 0x0, -0x1, + 0x1, -0x1, 0x0, + 0x0, -0x1, - -0x1, - -0x1, + 0x1, -0x1, -0x1, 0x0, - -0x1, 0x0, -0x1, 0x0, - 0x1, - 0x1, - 0x0, - 0x1, - -0x1, -0x1, 0x1, 0x1, + -0x1, 0x1, + -0x1, 0x0, - 0x1, + -0x1, 0x0, - 0x1, + -0x1, + -0x1, 0x1, 0x0, - -0x1, 0x0, 0x1, - 0x1, - 0x1, - 0x1, - 0x1, - 0x0, -0x1, 0x1, - 0x1, ] .span() ), ( array![ + 0x1, + -0x1, + -0x1, -0x1, - 0x0, -0x1, 0x0, 0x0, - 0x1, -0x1, + 0x0, + 0x1, 0x1, 0x1, -0x1, - 0x0, + 0x1, + 0x1, 0x1, 0x0, 0x1, -0x1, - 0x0, + 0x1, -0x1, -0x1, + 0x0, -0x1, + 0x1, + 0x0, -0x1, + 0x1, + 0x1, + 0x1, -0x1, + 0x0, -0x1, -0x1, - 0x0, - 0x0, - 0x0, - 0x1, 0x1, 0x0, - 0x0, - 0x0, + 0x1, -0x1, - 0x0, -0x1, 0x0, -0x1, - -0x1, + 0x0, + 0x0, 0x0, -0x1, 0x1, -0x1, 0x1, 0x0, + 0x1, 0x0, 0x0, - -0x1, 0x1, 0x0, - -0x1, 0x1, - -0x1, + 0x0, 0x0, 0x0, 0x1, + 0x1, 0x0, -0x1, + -0x1, 0x0, 0x0, - 0x1, 0x0, 0x1, + -0x1, 0x0, 0x0, + -0x1, 0x1, 0x1, 0x1, - 0x0, - 0x1, - 0x1, 0x1, -0x1, 0x1, + 0x0, -0x1, 0x0, -0x1, - 0x1, -0x1, - 0x1, - 0x1, - 0x0, - 0x1, ] .span(), array![ 0x1, + -0x1, 0x0, + -0x1, + 0x1, 0x1, 0x1, 0x0, - -0x1, - -0x1, + 0x0, 0x0, 0x1, -0x1, - -0x1, - -0x1, - -0x1, 0x1, - 0x0, -0x1, 0x1, 0x1, + 0x0, + 0x0, 0x1, 0x0, 0x1, + 0x1, + -0x1, 0x0, + 0x1, + -0x1, 0x0, 0x1, 0x1, + 0x1, -0x1, 0x1, 0x0, 0x0, -0x1, - -0x1, - -0x1, - -0x1, 0x0, + -0x1, 0x1, 0x0, - 0x0, -0x1, 0x0, + -0x1, + 0x1, 0x0, 0x1, - -0x1, 0x1, + -0x1, + -0x1, 0x0, + 0x1, 0x0, + -0x1, + -0x1, 0x0, - 0x1, 0x0, - 0x1, - 0x1, 0x0, - 0x1, -0x1, - 0x1, -0x1, - 0x1, -0x1, - 0x0, - 0x1, - 0x1, -0x1, - 0x0, -0x1, 0x0, + -0x1, 0x0, - 0x0, + -0x1, + -0x1, + -0x1, 0x1, 0x1, + 0x0, -0x1, 0x1, 0x0, 0x1, - 0x0, - 0x0, -0x1, - 0x0, + -0x1, 0x1, 0x0, - 0x1, 0x0, 0x1, + -0x1, + -0x1, ] .span() ), ( array![ - 0x0, - 0x0, - 0x0, - -0x1, - 0x1, 0x1, 0x0, - 0x1, - 0x1, -0x1, - 0x0, - 0x1, -0x1, -0x1, - 0x1, - 0x0, - 0x0, - 0x1, - 0x0, -0x1, 0x1, - 0x1, -0x1, - 0x1, - 0x1, -0x1, -0x1, - 0x0, + -0x1, + 0x1, 0x0, -0x1, 0x0, + 0x1, + -0x1, 0x0, + 0x1, 0x0, 0x0, 0x1, - 0x0, + -0x1, + 0x1, 0x0, 0x1, -0x1, -0x1, - 0x0, - 0x0, + -0x1, -0x1, 0x0, - 0x0, + 0x1, + -0x1, 0x0, -0x1, -0x1, - 0x1, -0x1, -0x1, -0x1, - 0x0, 0x1, - 0x0, -0x1, 0x0, 0x1, 0x1, + -0x1, + 0x0, 0x0, -0x1, 0x1, + -0x1, 0x1, -0x1, -0x1, 0x1, - 0x1, -0x1, - 0x1, + -0x1, 0x0, + -0x1, + -0x1, 0x0, + -0x1, 0x1, + 0x0, 0x1, + 0x0, 0x1, -0x1, - 0x0, + 0x1, + -0x1, + -0x1, 0x0, -0x1, 0x0, + 0x1, + 0x1, + 0x1, 0x0, + -0x1, 0x1, ] .span(), array![ 0x0, - -0x1, 0x1, + 0x0, -0x1, -0x1, 0x0, - 0x1, - 0x1, + -0x1, + -0x1, + -0x1, + -0x1, + -0x1, 0x0, 0x0, 0x1, - 0x0, - -0x1, - 0x0, 0x1, 0x0, - 0x0, 0x1, 0x1, 0x1, + -0x1, 0x1, 0x0, 0x0, 0x0, - 0x0, - 0x0, + 0x1, + -0x1, + -0x1, + 0x1, + -0x1, 0x1, 0x0, + -0x1, + -0x1, 0x1, 0x0, -0x1, 0x1, + 0x1, + 0x1, + -0x1, 0x0, 0x0, 0x1, + 0x0, + 0x0, + 0x0, -0x1, 0x1, - -0x1, 0x0, 0x1, 0x1, -0x1, - -0x1, - -0x1, - 0x1, 0x1, 0x0, -0x1, - 0x1, - -0x1, -0x1, 0x1, 0x0, 0x1, 0x1, + 0x1, -0x1, - 0x0, - 0x0, -0x1, + 0x0, 0x1, + 0x0, -0x1, 0x1, - -0x1, 0x1, 0x1, - -0x1, - 0x0, - -0x1, - 0x0, - -0x1, - -0x1, 0x1, 0x1, 0x1, 0x0, - -0x1, - -0x1, + 0x0, -0x1, -0x1, 0x1, -0x1, - -0x1, + 0x1, + 0x1, ] .span() ), ( array![ + 0x1, + 0x1, -0x1, -0x1, 0x0, 0x0, - 0x0, - 0x0, - 0x0, 0x1, - -0x1, - 0x0, 0x0, + -0x1, + -0x1, 0x1, 0x1, - -0x1, 0x0, 0x1, 0x1, - 0x0, - 0x0, - -0x1, - -0x1, -0x1, + 0x1, 0x0, -0x1, -0x1, - 0x0, -0x1, 0x1, -0x1, 0x1, - 0x0, - 0x1, - -0x1, - -0x1, -0x1, + 0x1, 0x0, 0x0, - 0x1, - 0x1, -0x1, 0x0, - -0x1, - -0x1, 0x0, 0x0, 0x1, -0x1, 0x0, - -0x1, - -0x1, - -0x1, - -0x1, - 0x0, 0x0, -0x1, 0x1, + 0x0, + 0x1, + 0x1, 0x1, -0x1, 0x0, 0x1, + 0x1, -0x1, - 0x0, -0x1, -0x1, - 0x0, - 0x0, -0x1, -0x1, -0x1, 0x0, - 0x1, 0x0, - 0x1, + -0x1, 0x1, -0x1, 0x1, + -0x1, + 0x0, + -0x1, + 0x0, 0x1, 0x1, - -0x1, 0x1, -0x1, -0x1, - ] - .span(), - array![ + 0x0, -0x1, + 0x0, + 0x0, -0x1, 0x1, + 0x0, -0x1, 0x1, 0x0, 0x0, + 0x0, -0x1, - -0x1, + ] + .span(), + array![ + 0x0, + 0x0, + 0x0, + 0x0, 0x0, -0x1, 0x1, + 0x0, 0x1, 0x0, 0x0, 0x1, + 0x1, + 0x1, + 0x1, + -0x1, 0x0, 0x0, -0x1, -0x1, - -0x1, - -0x1, + 0x0, 0x0, 0x1, 0x1, - -0x1, 0x0, -0x1, - 0x1, 0x0, 0x1, 0x1, -0x1, -0x1, + 0x1, -0x1, -0x1, + 0x1, 0x0, + 0x1, + 0x1, + 0x1, -0x1, 0x0, + 0x1, 0x0, 0x0, - -0x1, - -0x1, - -0x1, - 0x0, - -0x1, + 0x1, -0x1, 0x1, 0x0, -0x1, 0x1, + -0x1, + -0x1, 0x1, - 0x1, - 0x1, - 0x1, + -0x1, + -0x1, 0x0, 0x1, -0x1, + -0x1, 0x0, - 0x1, -0x1, 0x1, 0x0, + -0x1, 0x0, 0x1, -0x1, -0x1, 0x0, - -0x1, 0x0, 0x1, 0x1, - -0x1, 0x1, 0x0, - 0x1, - -0x1, + 0x0, + 0x0, -0x1, 0x0, -0x1, - 0x1, + -0x1, ] .span() ), ( array![ - -0x1, - 0x1, - 0x1, - 0x1, - 0x1, - 0x1, + 0x0, + 0x0, 0x1, -0x1, 0x0, - -0x1, 0x1, -0x1, - 0x1, - 0x1, 0x0, - 0x1, - 0x1, - 0x1, + 0x0, + 0x0, 0x1, 0x0, -0x1, -0x1, - -0x1, - -0x1, + 0x1, 0x1, 0x0, + 0x1, + 0x1, 0x0, 0x1, + -0x1, + -0x1, 0x0, 0x0, - 0x1, 0x0, - 0x1, - 0x1, - 0x1, 0x0, - 0x1, 0x0, -0x1, -0x1, + -0x1, 0x0, 0x0, 0x0, -0x1, - -0x1, - 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, + -0x1, 0x1, 0x1, 0x0, 0x1, 0x1, + -0x1, + 0x0, + 0x1, 0x0, -0x1, + 0x0, + 0x1, -0x1, -0x1, 0x0, - -0x1, + 0x0, + 0x0, + 0x1, 0x1, + -0x1, 0x0, 0x1, + 0x1, + 0x1, + 0x0, 0x0, 0x0, - -0x1, - -0x1, -0x1, 0x1, - 0x1, -0x1, 0x0, + 0x0, + 0x1, + -0x1, -0x1, + 0x1, 0x0, 0x0, - -0x1, 0x0, - 0x1, - 0x1, + -0x1, + -0x1, ] .span(), array![ - 0x0, -0x1, + 0x0, + 0x0, -0x1, - 0x1, -0x1, 0x1, + 0x0, -0x1, 0x0, - 0x1, - 0x1, + 0x0, + 0x0, -0x1, -0x1, 0x1, - -0x1, + 0x0, + 0x0, 0x1, 0x1, 0x0, - -0x1, 0x1, -0x1, + -0x1, + 0x0, + -0x1, + -0x1, 0x1, 0x0, + -0x1, 0x1, -0x1, - 0x0, -0x1, - 0x0, 0x1, -0x1, + -0x1, 0x1, 0x1, 0x1, - -0x1, 0x0, 0x0, -0x1, - 0x1, -0x1, 0x0, -0x1, + -0x1, + -0x1, 0x0, + -0x1, + -0x1, + 0x1, 0x0, + -0x1, 0x1, 0x1, 0x1, - 0x0, -0x1, + -0x1, + 0x1, 0x1, 0x0, -0x1, + 0x0, + 0x0, + 0x1, 0x1, -0x1, -0x1, 0x1, 0x1, 0x0, - 0x0, -0x1, 0x1, - 0x1, -0x1, 0x1, - -0x1, - -0x1, + 0x0, -0x1, -0x1, 0x1, 0x0, 0x1, - -0x1, - 0x1, - 0x1, - -0x1, 0x0, - -0x1, 0x1, - -0x1, - -0x1, - -0x1, - -0x1, ] .span() ), @@ -40738,145 +40748,145 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0xedc4df8e49aecc17b1c34f28, - limb1: 0x8daab5f4a51c0d4ff6a48009, - limb2: 0xaef09ae21e2fc5ea, + limb0: 0x9d40c88d163da95cb64e203e, + limb1: 0x913852622f2cd9c9e9f12b38, + limb2: 0x1899639440f22703, limb3: 0x0 }, y: u384 { - limb0: 0x4b248e7ba097838440ce5cf6, - limb1: 0xcfafa3c6b026a41928d25daf, - limb2: 0x88fd67c556aab72b, + limb0: 0x884b9da98d397291224ab242, + limb1: 0x659d9e76784cbb955e536474, + limb2: 0x36b628fe5e2f910e, limb3: 0x0 } }, Q_high: G1Point { x: u384 { - limb0: 0x2f61089d109f736109ab67ea, - limb1: 0x455fa345cc7b3137025cd8fd, - limb2: 0x31a8dc7ffd9330bc, + limb0: 0xf122c89870a7087ccb7e0bfd, + limb1: 0xd4d519ac9fb72c74896e380, + limb2: 0xde9c45a93860bc72, limb3: 0x0 }, y: u384 { - limb0: 0x3d2a210cb3ef6fce0dff6645, - limb1: 0x5034b9ef431a632c4e88443, - limb2: 0x8b1ebc91a2caa889, + limb0: 0xfc7aa74cb387a2cbae105bfe, + limb1: 0x6c7648b4a635eb4d41ba69ff, + limb2: 0x51f6a39c042f2b45, limb3: 0x0 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0x759cb6a47c677f9d868330f1, - limb1: 0x50b105e1f6db6625a89e122a, - limb2: 0xfea63fd038c7985a, + limb0: 0x7cae745289d3776133fdbf72, + limb1: 0x6bed1fa8bc36a2d975a6e86c, + limb2: 0xe9f11c0bc9cf159c, limb3: 0x0 }, y: u384 { - limb0: 0xe5d081b8da2f50157db6e4e9, - limb1: 0xd69a1d6e4715c01db89e52e6, - limb2: 0x63b7d142bd5b1c90, + limb0: 0x2e9f02f237744033240669d1, + limb1: 0xf7898a3a9de99186710dac00, + limb2: 0x4d136e852b483683, limb3: 0x0 } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0x7261bc41da3f043b48589003, - limb1: 0x295904fc98be4ae02fb7d3f7, - limb2: 0xaee11b45ffd2e34f, + limb0: 0x2d6acc7b469e3a6797e7c3fc, + limb1: 0xfcbc89c157063511cc810c4, + limb2: 0x7a85d83700fe05f0, limb3: 0x0 }, u384 { - limb0: 0x2c704d569736961dd14fee0a, - limb1: 0xdda4957837e72f71964c6b33, - limb2: 0x2313085b86444404, + limb0: 0x9a3ae1a8683e975ee2bfee40, + limb1: 0xf84c94e4112b97aa143e2c6c, + limb2: 0xbb798e96d8503ba3, limb3: 0x0 }, u384 { - limb0: 0x64c29f690693030b0440077e, - limb1: 0xe6a2eb99578f95fe06291f8b, - limb2: 0x5aad8c3d64e27b2e, + limb0: 0xa0fcae86cf0be6233ab26f69, + limb1: 0xb4dade77522a25ea265c98a4, + limb2: 0x11c16c401e1253e4, limb3: 0x0 }, u384 { - limb0: 0xb0d088ab0b561d378187a5b3, - limb1: 0x2e4338df097ca445cad7ad9e, - limb2: 0xcbadad55daeae7aa, + limb0: 0xfcd0635ebc6b82c1a956ad69, + limb1: 0x6d8cbb1683d04d1280756997, + limb2: 0xf3f7f3edbc1b0f24, limb3: 0x0 }, u384 { - limb0: 0xbd3866d3c757f5f77f8ebdad, - limb1: 0xc8a97f75cb1c37d7a7c81d58, - limb2: 0xa66e18430b2cd392, + limb0: 0xfcb943117771cf5efc909372, + limb1: 0xe131958256ce9075e57fa7e, + limb2: 0x7698bb607f7ab9e5, limb3: 0x0 }, u384 { - limb0: 0xdc3d3f47b573d5b39fae1b17, - limb1: 0x5782b5ed5885376720893a81, - limb2: 0x9160468a80121759, + limb0: 0x28905b4199160deaaff84f7e, + limb1: 0xecbc6b93102cde6b2fe1f920, + limb2: 0x1fd7752b9627b34f, limb3: 0x0 }, u384 { - limb0: 0x6282052ef7313b07be3e0eaf, - limb1: 0x80ec4425feeeb45115aa33fe, - limb2: 0x1d5ef9b69f3e35e7, + limb0: 0x443318c4f9b575a67f7b3920, + limb1: 0x2412cd3fc05a2f6d5b380f25, + limb2: 0xa78b03be767d907b, limb3: 0x0 }, u384 { - limb0: 0xeaaf77e493652df259a97881, - limb1: 0x868d326, - limb2: 0x8000000000000000, + limb0: 0x7eeab5b475b337bc359e7e8, + limb1: 0xfffffffffffffffe56c51222, + limb2: 0x7fffffffffffffff, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0xa1e2bf03948261ebf6dbac2d, - limb1: 0x4e440e2b44d355c0d53aa0ca, - limb2: 0xe8ba086ba7bf04c5, + limb0: 0x616b43ae5eb8b13f2711e84a, + limb1: 0x2a6c9e3884d1a15dab65e964, + limb2: 0xe0396043e549a267, limb3: 0x0 }, u384 { - limb0: 0xd41804001a9539610062cbaf, - limb1: 0x61e78a17d85769f82328b04, - limb2: 0x4f5ab12a3fd5564b, + limb0: 0xf8b5376df31f8edb9099ec65, + limb1: 0xb459998c88b2ae0a8972dfda, + limb2: 0x895ef9e82f3bd718, limb3: 0x0 }, u384 { - limb0: 0x6e21e74dcfd4a7bbe5f78297, - limb1: 0xd8c48a16314ef5d24090abc0, - limb2: 0x410189a6adcf3b78, + limb0: 0x8615b31a424096fd0f6a089, + limb1: 0x6b240df274ddc6826a6aa294, + limb2: 0x17c91beab593d79d, limb3: 0x0 }, u384 { - limb0: 0x777a3909414f7ddf967ce95a, - limb1: 0x314a215ce74e043dbb8344ea, - limb2: 0xf526d7cbf7ff5fdd, + limb0: 0x1669b4fbf50b15806d41434a, + limb1: 0xb06ba207ae4d8e54d1c06ae1, + limb2: 0x1dcda0dc813cc77b, limb3: 0x0 }, u384 { - limb0: 0x9f55e8446a43515794dbffa5, - limb1: 0x15768040cd2d1b30f2665563, - limb2: 0x1e855bf12867e77e, + limb0: 0x240ca5960df842c1616e1e97, + limb1: 0x45cec322e07574414b497fa0, + limb2: 0x91dc6af60ea3d841, limb3: 0x0 }, u384 { - limb0: 0x9af3d320e6f01e4dd8a03517, - limb1: 0xad1b0d0ebd843014cd4988d8, - limb2: 0x41d6ba74a3e092ed, + limb0: 0x10ee4a8fbeb4e433b0fb7a81, + limb1: 0x74571b9331f105219834962a, + limb2: 0xba0c86068c53e3ce, limb3: 0x0 }, u384 { - limb0: 0x44e817d2b0bddafecce5f306, - limb1: 0xe18ea1048c102d6116061dbb, - limb2: 0xd1929ebb7148990d, + limb0: 0x279742cce1c2e9a93e981d03, + limb1: 0x223057130d02f0f2b8e72c93, + limb2: 0xbee3cf0d53eceab5, limb3: 0x0 }, u384 { - limb0: 0x49d462987f1ab668494fc654, - limb1: 0xf1fd7ca3fabe9efa8d89067e, - limb2: 0xbebf1ad18ac18798, + limb0: 0x4d90999da5eabdae3090e57e, + limb1: 0x2cf8c0747e099bb654d63516, + limb2: 0x9be500c95d25ec37, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -40884,126 +40894,126 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xdbc4eb3a6c21e0bc525db739, - limb1: 0x2f279de322fdaac1de4b2532, - limb2: 0xa8ca1f26c5afea89, + limb0: 0xfd357593a8a4ed67e05f71a9, + limb1: 0xa9833401e8ab9b0685ca869a, + limb2: 0x4eb521b4987b7ba9, limb3: 0x0 }, u384 { - limb0: 0x1ce05d60a330e6bd4655750, - limb1: 0xef1e81e14444c88a0ca2e7b, - limb2: 0x863391c1f7806c18, + limb0: 0xabceec98b9c8d586004a2717, + limb1: 0x291caf7d757fa4b05416fe2c, + limb2: 0x70fba561d27e1fbb, limb3: 0x0 }, u384 { - limb0: 0x40c2988c0ea9bd9b38657650, - limb1: 0x22a78103e0531bd9c8a80751, - limb2: 0x7645ca7b431f53b7, + limb0: 0x74b61640cb44e6808b850370, + limb1: 0x2959d378bfb47cfc3bcf7c42, + limb2: 0xd3d0e6027f5a23fb, limb3: 0x0 }, u384 { - limb0: 0xf91816c4445e6442aeab8819, - limb1: 0xdf5a62c2e76c8021ba97ed5b, - limb2: 0x9170dcd6282b5d3d, + limb0: 0x95c96a0683334c6f337c18ac, + limb1: 0x8dd21677fdc0189c02b074ff, + limb2: 0xa103ae5d411a9a40, limb3: 0x0 }, u384 { - limb0: 0xe68b06f48e307675b3ad6f76, - limb1: 0xb261e8024ea8457b66ef811e, - limb2: 0x95e5cb903d52d38c, + limb0: 0x85a3dc2a31e325a7ee046724, + limb1: 0xf2206ae6156b2cfdac1c9fb7, + limb2: 0xfd9daa119d1d106f, limb3: 0x0 }, u384 { - limb0: 0x4fa325066d67fc7033daae4e, - limb1: 0xae5b17ae46547d1339627b1a, - limb2: 0x13db0309031ba77, + limb0: 0x529a48b8e15cb95154681d66, + limb1: 0x196222fe057df66f64a97292, + limb2: 0x57e76f86b82314f7, limb3: 0x0 }, u384 { - limb0: 0xcc39023d7c3bad0b4c1415b4, - limb1: 0xb3122ec8ce2cc66e5cbff5a1, - limb2: 0x2981e7985cff39b, + limb0: 0xdb5e18db96c9106f1da0dc4d, + limb1: 0xe9cf86501dbf7d0c3bcf1743, + limb2: 0x89c0e8cec83fb75f, limb3: 0x0 }, u384 { - limb0: 0x97608f90bc702fb82bf0775, - limb1: 0xc51e1e86cf6b1a87c03e5be4, - limb2: 0xcdc128077e6815bb, + limb0: 0xd3356be4641c57a239c4cce5, + limb1: 0x594523d753c53b964b4e983, + limb2: 0x70580193e44512b9, limb3: 0x0 }, u384 { - limb0: 0x1292d96933591112a9ead730, - limb1: 0x5a3210cc42fe43f233eaf94a, - limb2: 0xa92847a9fd400ffb, + limb0: 0x56198f38237f8f46f75d30c0, + limb1: 0x495d383a87f682b69ea4644d, + limb2: 0x72fc3b657e2295a, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x6d3339190f90ad79c001cc21, - limb1: 0x23dc632ee1c75845d49a658a, - limb2: 0x5d163af196392165, + limb0: 0xa9eed9c4970cd8c0117d70ec, + limb1: 0x28f8538ba1bb698fafc961be, + limb2: 0x2191a1db450370d2, limb3: 0x0 }, u384 { - limb0: 0xcca81c00ba1491a902b3996b, - limb1: 0x2ad54c6a6ea63e5c8f61cd21, - limb2: 0x2b7ad827bed55c0d, + limb0: 0xccf48401a5dce803f4358236, + limb1: 0xee7332d7bce2c249c2241efc, + limb2: 0xc198d5594aa2e1ac, limb3: 0x0 }, u384 { - limb0: 0x2ed5320aed0962449c495f2, - limb1: 0xed5fc69b5928b8bfc3f4b243, - limb2: 0xc70ac38ec0aaa04d, + limb0: 0x3aa97e5b7cfc420eb6be63bf, + limb1: 0xedfc61a132106d90e8ea720c, + limb2: 0xa67fc36af70ae54d, limb3: 0x0 }, u384 { - limb0: 0xe63a4e445daed3101446285a, - limb1: 0xa74af7b597f57370f5d18333, - limb2: 0x9cc9eeff6fbaa3d1, + limb0: 0xfe4f3692120647c323dac321, + limb1: 0xfd5e0c6e48f085af67a8d58b, + limb2: 0xb0d8c64b6df316c8, limb3: 0x0 }, u384 { - limb0: 0x2f715ddf026c72c71266cd03, - limb1: 0x9c5bfa6719c134f622fee0be, - limb2: 0x250034c25aacaabd, + limb0: 0xf50dbe8854e962293a9cd1ca, + limb1: 0x9d00ef80abe8dbd398755d3b, + limb2: 0x8665e6a295b6c0e1, limb3: 0x0 }, u384 { - limb0: 0xaaccad3420657bded258fdda, - limb1: 0x9481e57d5fec4663dd9369ac, - limb2: 0xde0a2d728f33ff8, + limb0: 0x7ee5651fdb1646dea7d70d25, + limb1: 0x9985cef8d274ea6d93dabdba, + limb2: 0x2e20c6188bdf1242, limb3: 0x0 }, u384 { - limb0: 0x59d2dfcc16807add30c6a56a, - limb1: 0x5c30887cbbbf41e555ae1509, - limb2: 0xb0292eec10fb8f3e, + limb0: 0x2b8c8896215f7926236a2174, + limb1: 0x9fbe038d096224f7e012a2e7, + limb2: 0x56084a39ccb7326f, limb3: 0x0 }, u384 { - limb0: 0xa4249a6fe3fe4e36960a7f06, - limb1: 0xb364e8bca863740ad12582d7, - limb2: 0x55bf17abf3b29cac, + limb0: 0x4300d8e597637288b564744d, + limb1: 0x809c065252b8b63d9d24f33c, + limb2: 0xd51f70779aad4dc3, limb3: 0x0 }, u384 { - limb0: 0x9af3d320e6f01e4dd8a0351e, - limb1: 0xad1b0d0ebd843014cd4988d8, - limb2: 0x41d6ba74a3e092ed, + limb0: 0x10ee4a8fbeb4e433b0fb7a88, + limb1: 0x74571b9331f105219834962a, + limb2: 0xba0c86068c53e3ce, limb3: 0x0 }, u384 { - limb0: 0x44e817d2b0bddafecce5f306, - limb1: 0xe18ea1048c102d6116061dbb, - limb2: 0xd1929ebb7148990d, + limb0: 0x279742cce1c2e9a93e981d03, + limb1: 0x223057130d02f0f2b8e72c93, + limb2: 0xbee3cf0d53eceab5, limb3: 0x0 }, u384 { - limb0: 0x49d462987f1ab668494fc654, - limb1: 0xf1fd7ca3fabe9efa8d89067e, - limb2: 0xbebf1ad18ac18798, + limb0: 0x4d90999da5eabdae3090e57e, + limb1: 0x2cf8c0747e099bb654d63516, + limb2: 0x9be500c95d25ec37, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -41013,102 +41023,99 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0xa5c7db8fa12cdf0c8a5100c9, - limb1: 0x88b05052bd2d668caca42751, - limb2: 0x295d5b34feb9ef39, + limb0: 0x6c2d53cb69c0ba1e5424dff3, + limb1: 0x58ecc83f6f69d99830056ca5, + limb2: 0x270cb0a0701a79a0, limb3: 0x0 }, u384 { - limb0: 0xe8ee43d95d21c4c618ac3c50, - limb1: 0xd6dc51ebfd494d08dd1d5841, - limb2: 0x58f73b8c795031d1, + limb0: 0x36cac9154bbabbd3138773c8, + limb1: 0x6b74670c6781c5a612a570f0, + limb2: 0x1499adfa545eb727, limb3: 0x0 }, u384 { - limb0: 0xb6986de548d1c3da2d4fb285, - limb1: 0xe270bbb9e7bab3054cd7fe81, - limb2: 0xa4f2a7560b1e4968, + limb0: 0x627b3f9c27533cdee585c12e, + limb1: 0x248ad1db56fec5fdf59e3ee5, + limb2: 0x8b9165fc672def77, limb3: 0x0 }, u384 { - limb0: 0xdbe9245d1bdeeaee8183117e, - limb1: 0xd2a804c948b2f430d1703e0d, - limb2: 0xddabd6be45a7ab19, + limb0: 0xafa9f205176c0d3de40889b2, + limb1: 0x42760e9c8ad7db83173931d6, + limb2: 0x257e7b40299cf457, limb3: 0x0 }, u384 { - limb0: 0xc4ddb5538cca863a9b986794, - limb1: 0x9f98cacba85e627b76b14c73, - limb2: 0xa6bbd60373462d7f, + limb0: 0xac2daf072c757894871f0fa8, + limb1: 0x4afec052100cda57ad8048cd, + limb2: 0xed59dfb32e1d0d4f, limb3: 0x0 }, u384 { - limb0: 0x79cd5dac18965bd1dc4fc56b, - limb1: 0xe7e4d64672a1b46e30763192, - limb2: 0x187cd81459af56da, + limb0: 0x52b0e3342c1bedf4f90812a2, + limb1: 0x2ad696c88f4e901b9440707a, + limb2: 0x468d3555feeb691c, limb3: 0x0 }, u384 { - limb0: 0xa33ed9a70251745a49fc88a9, - limb1: 0xaa5b9088c387dd5265096781, - limb2: 0x790ec92017a5efbf, + limb0: 0xe52f76f70c0c7b0d4c03322d, + limb1: 0xa5b248cc7778022c19039d43, + limb2: 0x5bd732a73e1d412b, limb3: 0x0 }, u384 { - limb0: 0xfab45cdaca4a15a1e858a454, - limb1: 0xfffffffffffffffeed84ed34, - limb2: 0x7fffffffffffffff, - limb3: 0x0 + limb0: 0x65010b3bc18d642e62bfdfa9, limb1: 0x2405d43a, limb2: 0x0, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0x58a72306d36b8d7a1c32759f, - limb1: 0x8074e2756b74f4f0b74c5fcb, - limb2: 0x4f014dc95e44ad57, + limb0: 0x602608e21d251ae828eb07ae, + limb1: 0x2fb0705189449ca271748abe, + limb2: 0xb86584b106131e47, limb3: 0x0 }, u384 { - limb0: 0x95f50daf89450e38c24a8029, - limb1: 0x202e87c55da2191a4458c567, - limb2: 0xbea0af64557c9a42, + limb0: 0x3f506b36607c2afc13ba2862, + limb1: 0xfb480eaac8fcfa63794f28bb, + limb2: 0xe7ad0c53aa3f8acd, limb3: 0x0 }, u384 { - limb0: 0x243d56cd95eef1e0f5b74dbf, - limb1: 0xd21fefbfc678b2c91517e72f, - limb2: 0x45b96d4e9af99a55, + limb0: 0x7508dfb6e297d4e6194c5af3, + limb1: 0x564382f8ed91e39bd07656aa, + limb2: 0x3f3e0ce94160728b, limb3: 0x0 }, u384 { - limb0: 0xcc1786b51458f7afcac6c6b7, - limb1: 0xe78108ed96aa61b16d897a66, - limb2: 0x411650777fc0c73f, + limb0: 0x33b85916622e650af168769b, + limb1: 0xa2fae29b2a0ed74c58b54e23, + limb2: 0xe8d5f9c3dfb6408, limb3: 0x0 }, u384 { - limb0: 0x64e4a65ba927c345fbe39849, - limb1: 0x80b8d4db2b281079c6663976, - limb2: 0x78b32584d70b0602, + limb0: 0x4f54df986c29f04e7dad1959, + limb1: 0xbdba8aee571b32f483d7c6a5, + limb2: 0x6286a5a936ee4f71, limb3: 0x0 }, u384 { - limb0: 0x1d4013e2a5bcfb9980e9abb, - limb1: 0xa2a50bf8982c5ac3e703400, - limb2: 0x267248f142004942, + limb0: 0x3179b4dcd865d14c7ccd30db, + limb1: 0xa03ca05aed2ddaffeecf60c, + limb2: 0x2adb01a2c3180730, limb3: 0x0 }, u384 { - limb0: 0xfc4ce7c54b610b8b0b0c6f7f, - limb1: 0x93ee9dc750636f1417a8c9cb, - limb2: 0x56e1d2b9117720c5, + limb0: 0xf2ebb0b2d9db338a4d0101a6, + limb1: 0xa10097e6395d4fa884325432, + limb2: 0xaa957097e57b3fc, limb3: 0x0 }, u384 { - limb0: 0x8383989b82a0f1ff167b163, - limb1: 0x3a488f52d35f7b1381d0ad8b, - limb2: 0x3c06d933ab5e1cc7, + limb0: 0xf9ae99924b815e8d1b60f5ee, + limb1: 0xb0e3c13be33b02b8f6307ccd, + limb2: 0xd5e21eb465b756c8, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -41116,126 +41123,126 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xeca8d5a224e05eb62079cce5, - limb1: 0x4a6e47f621515305ae734489, - limb2: 0x87ce5b14373aadd8, + limb0: 0xe5cc96cd81798b5fb22e4873, + limb1: 0x12a3da380e4182c7e420175b, + limb2: 0x31e7818b9f4f4944, limb3: 0x0 }, u384 { - limb0: 0x1ee7484908bcdd3779a5663d, - limb1: 0x75b7fc31b7488a94b850dea0, - limb2: 0x2102e2d3eeae5e9e, + limb0: 0xc7c329ed40ec14b280d4f155, + limb1: 0xf2e84cc28aa8260a6480df1c, + limb2: 0xb44a8331b74fa550, limb3: 0x0 }, u384 { - limb0: 0x417f8c102820e0173de2f81d, - limb1: 0x2d717b232dd676ba6e4bc1fa, - limb2: 0x4f0b31ba45ce3068, + limb0: 0xfd9ef04bfd89b6d6d8451f8c, + limb1: 0x12a261a025bdd44eb6630b6a, + limb2: 0xb7a0d297d8e0b6c0, limb3: 0x0 }, u384 { - limb0: 0x72d2da8b78cca45b71caea32, - limb1: 0xb8811069b1c51eeba2a1674, - limb2: 0x73f582757d08b90b, + limb0: 0x85c826988a3b3e1d5830cb43, + limb1: 0x2232ca76471284e99fdba6c8, + limb2: 0xc8cbe0f8d6f77393, limb3: 0x0 }, u384 { - limb0: 0x635218d7381ce34283f345b3, - limb1: 0xfdbd1930262d25065548e605, - limb2: 0x6273f078e99f1eee, + limb0: 0x5c0ea4ee762eb6ff7f6108bb, + limb1: 0x9c28d11b165fcbb919de88bf, + limb2: 0xd7cf4424c43b0f9, limb3: 0x0 }, u384 { - limb0: 0x35ec4e729a8bac7fa5c65765, - limb1: 0xf19347de395ba849e550828e, - limb2: 0xa5b40bae1204da3f, + limb0: 0x3747dbc63d70daee0a8effd2, + limb1: 0x44dc4a0a73b0dcd8f7215681, + limb2: 0x1105cddf6a85e969, limb3: 0x0 }, u384 { - limb0: 0xe425084827d20fa9f59f4765, - limb1: 0xc709648a26bd8983f03c2e10, - limb2: 0xb9c09c84814c0ffd, + limb0: 0x52f40953118284d8608b94a2, + limb1: 0xd1d33c11cb917d8b02aa834b, + limb2: 0x9a8c14bffa4b8fb4, limb3: 0x0 }, u384 { - limb0: 0xb954cd3484289680a6040ba9, - limb1: 0xeb00c9dbf0627989dbd42729, - limb2: 0x91e40599f23659fc, + limb0: 0xfbe656b28f1b005ad4ea5247, + limb1: 0x28babc775dc297092cd3df0d, + limb2: 0x89459167e6bfa312, limb3: 0x0 }, u384 { - limb0: 0xd8579c95b90365a32d884d66, - limb1: 0x30d08b2f8631b443bba5d2d4, - limb2: 0xdb16d1370e16d059, + limb0: 0x773016663e4a35bf3d7283, + limb1: 0xcfe93874edbe060cd99ffe2a, + limb2: 0x55cc0de295cc3ba4, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x6c91f52fc7f0de58c5613efb, - limb1: 0x83323135f032b29503169e8f, - limb2: 0x2909208193e0bd64, + limb0: 0xa10a3e2ecc03bc5e1e6d48d7, + limb1: 0x4dd3123ac0e048711a2fcb34, + limb2: 0xac6a0d72a85d3f2, limb3: 0x0 }, u384 { - limb0: 0x19b35fccc0e3639250099434, - limb1: 0xe145b6658f6eafb7de6d65d5, - limb2: 0x3664cbbe566837ce, + limb0: 0xbb32ee7ca3652cea8a173194, + limb1: 0xdef866ab7eead8b8512a1d1e, + limb2: 0x55bb5649a7bccba1, limb3: 0x0 }, u384 { - limb0: 0xfdad5f9f19889d27b803240a, - limb1: 0xbedf8e3e6d4ce37f93a75249, - limb2: 0xe811fd263cd33858, + limb0: 0x333e1e003226d24bb1168076, + limb1: 0x5bd894ce7efd3942b33c5ea9, + limb2: 0xbab25a60c9a321cf, limb3: 0x0 }, u384 { - limb0: 0xed4bd1fa61da534aa7a1ec42, - limb1: 0xd4fc20f48a1da0cab60eb89a, - limb2: 0x169d810ddc8a2016, + limb0: 0xca30787ecc69de35c2c649bc, + limb1: 0xa48ca28fafac7fb8de69adb4, + limb2: 0x1e4321f6b7f2da83, limb3: 0x0 }, u384 { - limb0: 0x58359a31295b6526a583b96c, - limb1: 0xa53c59c38bba8c6eb12457a4, - limb2: 0xb86b60636c9c453, + limb0: 0x6aa2886155a1bd248375e544, + limb1: 0x2b61db2f2abb5f1314359740, + limb2: 0x995b93f42ac3b6ea, limb3: 0x0 }, u384 { - limb0: 0x31095f80be719ff51e1d8cad, - limb1: 0x194824fc890c1a7eca29532f, - limb2: 0x52d96be768fb9b24, + limb0: 0xcf5cd1c0cd608dfe82e8b4c1, + limb1: 0x9c5e0920b555f36bc8f110ff, + limb2: 0x6b3b185c9708a4db, limb3: 0x0 }, u384 { - limb0: 0xb231dd1a2400487f181ddad2, - limb1: 0xf3075960c9626b3e1326fefa, - limb2: 0xa1431386fa02aca6, + limb0: 0xd82a2dfa572ccdd30c6f8225, + limb1: 0x9ff09e6bb9c04e7f6159b87, + limb2: 0x592ec0deb2614ff1, limb3: 0x0 }, u384 { - limb0: 0x9e6e391fb24e2d2795b979a0, - limb1: 0x18b4c01ef2c46e02531af843, - limb2: 0x1ce315ee869dcf75, + limb0: 0x231b12987cb386303d53e9c1, + limb1: 0x93f4d3918db846033f2b3047, + limb2: 0x3bb57c97fef1aeee, limb3: 0x0 }, u384 { - limb0: 0x1d4013e2a5bcfb9980e9ac2, - limb1: 0xa2a50bf8982c5ac3e703400, - limb2: 0x267248f142004942, + limb0: 0x3179b4dcd865d14c7ccd30e2, + limb1: 0xa03ca05aed2ddaffeecf60c, + limb2: 0x2adb01a2c3180730, limb3: 0x0 }, u384 { - limb0: 0xfc4ce7c54b610b8b0b0c6f7f, - limb1: 0x93ee9dc750636f1417a8c9cb, - limb2: 0x56e1d2b9117720c5, + limb0: 0xf2ebb0b2d9db338a4d0101a6, + limb1: 0xa10097e6395d4fa884325432, + limb2: 0xaa957097e57b3fc, limb3: 0x0 }, u384 { - limb0: 0x8383989b82a0f1ff167b163, - limb1: 0x3a488f52d35f7b1381d0ad8b, - limb2: 0x3c06d933ab5e1cc7, + limb0: 0xf9ae99924b815e8d1b60f5ee, + limb1: 0xb0e3c13be33b02b8f6307ccd, + limb2: 0xd5e21eb465b756c8, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -41245,9 +41252,9 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0x791890b4208961e9539b359b, - limb1: 0x888c537e4c73afb17ff852b2, - limb2: 0xc785d2baf9623557, + limb0: 0xaa7abb835ace31ba296bf483, + limb1: 0x3f51b54b1fa606b5ee4b48c3, + limb2: 0xf0b0d373ccfdfeef, limb3: 0x0 }, u384 { @@ -41260,15 +41267,15 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0x1639d8f47288332cb4e121bb, - limb1: 0xe82b26f067ad125097a12b78, - limb2: 0x634eba82b416b502, + limb0: 0xf1ad25f511cdfa107ddd87d8, + limb1: 0xaff87b9fedae7b9f278461c4, + limb2: 0x76139708b1bb9a72, limb3: 0x0 }, u384 { - limb0: 0x5b0240be72f90cff6fd15f83, - limb1: 0x69ef56d83ca968a3550514d8, - limb2: 0xcfb0e3afc9a536e9, + limb0: 0x922ec3150585802000842cef, + limb1: 0x86c58ebc79cdea5f41c23412, + limb2: 0x37729e4afdd02df1, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -41276,49 +41283,49 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xf2edfb7f3686b243f6d6507b, - limb1: 0xa4cee0ab385028f2eaedd715, - limb2: 0xe2a6e75cd67c99f3, + limb0: 0xe05a0d4046d2d2c39828c579, + limb1: 0xb0533a8e26c1af01c494f384, + limb2: 0xfef5eb48d52bf4b0, limb3: 0x0 }, u384 { - limb0: 0x21066bffa3b8a1cf7fc379f6, - limb1: 0xed57edc96ba1bc2ca6fbe83f, - limb2: 0x511a11bbe8b3c1b2, + limb0: 0x7af6ddd27f07c27fab3920f8, + limb1: 0x8d44fce7c1306b96fae778eb, + limb2: 0x8737696085e8bc6e, limb3: 0x0 }, u384 { - limb0: 0x53fd90378b85a234b28eadd8, - limb1: 0x2896705a76690da6c24205c0, - limb2: 0xf59859f344645b24, + limb0: 0x186a75d0d6bc7b836b07c687, + limb1: 0x1e353cc085d55c944c2ed3f0, + limb2: 0xe0718bbe374cda1, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x9b94eeaf21b9663af227f3bf, - limb1: 0x592e1092d5bb803425683048, - limb2: 0xb7271992ec9ef314, + limb0: 0x9bbc09b37ca1d676710ec25b, + limb1: 0xcfcb615f7fc5615a149eac62, + limb2: 0x3a89213cdc213922, limb3: 0x0 }, u384 { - limb0: 0x7d0fc53524cf5b010eb9afaa, - limb1: 0xe58b5fe9a8a1dc77532391ea, - limb2: 0xadd639ce83848061, + limb0: 0xff47559326a680e1039d3e5a, + limb1: 0xaf66e72754a1689acc4f6c81, + limb2: 0x8422540cf0b1419a, limb3: 0x0 }, u384 { limb0: 0x7, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x1639d8f47288332cb4e121bb, - limb1: 0xe82b26f067ad125097a12b78, - limb2: 0x634eba82b416b502, + limb0: 0xf1ad25f511cdfa107ddd87d8, + limb1: 0xaff87b9fedae7b9f278461c4, + limb2: 0x76139708b1bb9a72, limb3: 0x0 }, u384 { - limb0: 0x5b0240be72f90cff6fd15f83, - limb1: 0x69ef56d83ca968a3550514d8, - limb2: 0xcfb0e3afc9a536e9, + limb0: 0x922ec3150585802000842cef, + limb1: 0x86c58ebc79cdea5f41c23412, + limb2: 0x37729e4afdd02df1, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -41328,12 +41335,25 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0xe632a075f19f2d30b7da1807, - limb1: 0x4d440de1765b0061038dd238, - limb2: 0x523243aeacc8872b, + limb0: 0xbb24501b88950ae5ea79da96, + limb1: 0xde20d90c680119b23f012ebc, + limb2: 0x55a698c3e81499cb, limb3: 0x0 }, - g_rhs_sqrt: array![], + g_rhs_sqrt: array![ + u384 { + limb0: 0x665834755939a5a44dffd4c2, + limb1: 0xba0e19be9a68ed31d5bbe330, + limb2: 0x7604d6a263d64315, + limb3: 0x0 + }, + u384 { + limb0: 0xaa4022bb54683715b42a68cb, + limb1: 0x11f11e2cb5da027d7e422c52, + limb2: 0x6ba15f89dcde6967, + limb3: 0x0 + } + ], }; let res = msm_g1( points, scalars, scalars_digits_decompositions, msm_hint, derive_point_from_x_hint, 2 @@ -41341,15 +41361,15 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0xea92a285c27409d6fc71a4d2, - limb1: 0x3bbf44bc3215ffdbe2126a7f, - limb2: 0x77984b49fd514044, + limb0: 0xf2102909ac391be97c4c464c, + limb1: 0x530e9cdd3631d55afc2e60f0, + limb2: 0xae015199520d9173, limb3: 0x0 }, y: u384 { - limb0: 0x6e27a7a7194b453eb9c397b0, - limb1: 0x59a1c6b03e1215d8c2225407, - limb2: 0x42101575a6adc201, + limb0: 0x616f53d108bc196ab5d26964, + limb1: 0x99866644d55b413e0d4dc00a, + limb2: 0xc6828a7ca3ee054a, limb3: 0x0 } } @@ -41362,113 +41382,113 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0x960be0114f329ce0dae4906, - limb1: 0x2f4331e6256eeeee60a3d450, - limb2: 0xe48b73ba9e980db6, + limb0: 0x393dead57bc85a6e9bb44a70, + limb1: 0x64d4b065b3ede27cf9fb9e5c, + limb2: 0xda670c8c69a8ce0a, limb3: 0x0 }, y: u384 { - limb0: 0xe99824eea7d7b9a24cbba8a2, - limb1: 0x7e64511a05c18a73f40d7455, - limb2: 0x431fb6411e6af274, + limb0: 0x789872895ad7121175bd78f8, + limb1: 0xc0deb0b56fb251e8fb5d0a8d, + limb2: 0x3f10d670dc3297c2, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x4da771219bf9cc54a53ee383, - limb1: 0x13d3dccd39669fdb121fb969, - limb2: 0x92a30b1506429dd3, + limb0: 0xfdfdc509f368ba4395773d3a, + limb1: 0x8de2b60b577a13d0f83b578e, + limb2: 0xc2dd970269530ba2, limb3: 0x0 }, y: u384 { - limb0: 0x2736857fa15f338af50b1566, - limb1: 0xcea3b19a64dfdcd0bb12d9d2, - limb2: 0x580f21dafccb0d3d, + limb0: 0x589fa250d638e35400c12ddf, + limb1: 0xb3aac19fcb5095808402aa7f, + limb2: 0xed6de6590d0195d1, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x989a0e15f9bab11898690976, - limb1: 0xb3f51c29f2ca7187482dd86f, - limb2: 0x63748554575a8ed9, + limb0: 0x2965eeb3ec1fe786a6abe874, + limb1: 0x33e2545f82bb6add02788b8e, + limb2: 0xf586bc0db335d7b8, limb3: 0x0 }, y: u384 { - limb0: 0x4c4c12ad3c94d86f243239a9, - limb1: 0xc8edeaf7a8bd2126242a0c1, - limb2: 0xd76809fe462e8b8f, + limb0: 0x155b35991489db2fdf4de620, + limb1: 0xf24ce461346a182d67eeccf0, + limb2: 0xb4122bb4b37cc7d5, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xcc6eba76c9bfb879cc144646, - limb1: 0xdc2a515281193448dad25283, - limb2: 0xac73a0c2393b1f7d, + limb0: 0x12815740835b12f70b96c66f, + limb1: 0xbfa76a8b80aec9f2e31c40cc, + limb2: 0xcd8a26d17d33c7c1, limb3: 0x0 }, y: u384 { - limb0: 0xefd0f113ac799b991fd2fb9f, - limb1: 0x89976e77aab979028f390392, - limb2: 0xd1a0a9841d7fe980, + limb0: 0x9a8f496f09402b8fd6beb89b, + limb1: 0x28e48918dad2123d7f202bef, + limb2: 0xcdd11b6ffb3f8614, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x5fd97afe7cb64bed817dc8a7, - limb1: 0x34e60f12d9ce26b6459d1f13, - limb2: 0x5f2161d23ad920ab, + limb0: 0xb5076be8537cff2a42c6db68, + limb1: 0x1066d40cbd01a3752e4e069c, + limb2: 0x123ec2fd302cb0f9, limb3: 0x0 }, y: u384 { - limb0: 0xf6ac8163ae2813db07850a3a, - limb1: 0x3434a8fc352c88f416560877, - limb2: 0x6c2d4a5918ac9128, + limb0: 0xc85f5e5efdf415f8081bf53f, + limb1: 0xadc5010e9d9ac6c64000d33d, + limb2: 0xf81314011d8852e4, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x5c0ebb551aa7a58b18206e6b, - limb1: 0x20779cc65ae0eca2b0a99985, - limb2: 0x25683416a9678f50, + limb0: 0xd5915098d3d2001310b0b935, + limb1: 0x88bb4507ebf1be82cfba2397, + limb2: 0x8a463f1c00ce885f, limb3: 0x0 }, y: u384 { - limb0: 0xd2778f92fb18b8a7fca4920b, - limb1: 0xf32975805a4d42070c49bd34, - limb2: 0x241870038da58526, + limb0: 0x414858f8a83f9d4498890137, + limb1: 0xa09c4658c47ace74c42cdb60, + limb2: 0x8aaf300ff3ab7d98, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xff08ed6172e97143996a4e2f, - limb1: 0x1758cf8c6052b290ed10d67d, - limb2: 0x34c63713119cacde, + limb0: 0x1772eb803ddc8a82e23b1c05, + limb1: 0xc26baeb89b03fd69eb64b337, + limb2: 0x4ea7131b2d873a45, limb3: 0x0 }, y: u384 { - limb0: 0x42e86e0b0f2767fc644abf43, - limb1: 0xa3abc3c5e8306b256ecdc16d, - limb2: 0x5d7863b8985efe93, + limb0: 0xc9d16330db15efd90235eed9, + limb1: 0x1b586ef360673d36baa16189, + limb2: 0xee652d2b848ad111, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x3ce85971b20a244fb51188ac, - limb1: 0xd4bd900f3c5f12974e56e283, - limb2: 0x8c6884ecf2c94ef, + limb0: 0x68f9e7942638253f3b596f1f, + limb1: 0xb37e6153d9accd97a344f384, + limb2: 0xda48eae9ff614551, limb3: 0x0 }, y: u384 { - limb0: 0x9277691c493d5095597aa38a, - limb1: 0xc766c9f23ad614ebb76f7c17, - limb2: 0xd8e5ce33c491cca5, + limb0: 0xc58be8ed857035b34f51c620, + limb1: 0x3b14ed53116cb7c1db000006, + limb2: 0x7dfa292fe99b77dd, limb3: 0x0 } }, @@ -41476,28 +41496,28 @@ mod msm_tests { .span(); let scalars = array![ u256 { - low: 0x759966c1a3c6a5cf870e52f7e56a05a9, high: 0xc2bef2d84451122542663bd544d7a17b + low: 0xeb2083e6ce164dba0ff18e0242af9fc3, high: 0x17e0aa3c03983ca8ea7e9d498c778ea6 }, u256 { - low: 0x6c74c3e9234aeef46d994c18564763bb, high: 0x94f2e014268814232d35671879729c1e + low: 0xb5d32b1666194cb1d71037d1b83e90ec, high: 0xa0116be5ab0c1681c8f8e3d0d3290a4c }, u256 { - low: 0xc6d824f89bd62c6963241a33fdd377fa, high: 0x20c7ba446634f8478523aca96f534062 + low: 0xd3fbf47a7e5b1e7f9ca5499d004ae545, high: 0xbaf3897a3e70f16a55485822de1b372a }, u256 { - low: 0x41d9d487aaa6868cbc0e1f684bdd9225, high: 0x4a295bd7873538b656489bcba89cfc3a + low: 0x101fbcccded733e8b421eaeb534097ca, high: 0x38c1962e9148624feac1c14f30e9c5cc }, u256 { - low: 0x38a5b16884c8674ba08250cc1913c9c4, high: 0x13c54355477206f32c36458acc760806 + low: 0x247a8333f7b0b7d2cda8056c3d15eef7, high: 0x1759edc372ae22448b0163c1cd9d2b7d }, u256 { - low: 0x3c4b60ee31b73971a35adbcf2a403062, high: 0xf89164e40359ef9ee5298ed100bfc38f + low: 0xe005b86051ef1922fe43c49e149818d1, high: 0x7d41e602eece328bff7b118e820865d6 }, u256 { - low: 0xc3dff9c6830df8e2a728eebcf7624fd3, high: 0x37034cd2cbc69cd77ae8058f5b0e03e2 + low: 0x4a84eb038d1fd9b74d2b9deb1beb3711, high: 0x552f233a8c25166a1ff39849b4e1357d }, u256 { - low: 0x85c1a4d389dc09d4a9794661a4caaf63, high: 0x43657246b4b1565f96b33de13800877c + low: 0x3405095c8a5006c1ec188efbd080e66e, high: 0x8c1745a79a6a5f92cca74147f6be1f72 }, ] .span(); @@ -41506,145 +41526,139 @@ mod msm_tests { ( array![ -0x1, - 0x0, + 0x1, -0x1, + 0x1, -0x1, 0x0, - 0x1, 0x0, - 0x1, -0x1, -0x1, -0x1, - 0x0, - -0x1, - 0x0, 0x1, 0x0, + 0x0, -0x1, - 0x1, -0x1, 0x1, + 0x1, + 0x1, -0x1, + 0x1, -0x1, + 0x1, + 0x1, -0x1, 0x0, + 0x1, + 0x0, 0x0, + -0x1, 0x0, -0x1, -0x1, 0x1, - 0x1, - 0x0, 0x0, 0x1, 0x1, -0x1, + 0x1, 0x0, -0x1, -0x1, - 0x0, -0x1, -0x1, -0x1, - 0x0, - 0x0, - -0x1, - -0x1, -0x1, 0x0, 0x0, 0x0, - -0x1, - -0x1, - -0x1, - 0x1, 0x0, 0x0, - -0x1, - -0x1, - 0x1, - 0x1, 0x1, -0x1, 0x1, - -0x1, 0x0, - 0x1, -0x1, 0x0, 0x0, 0x1, 0x0, - 0x1, - 0x0, - 0x0, 0x0, 0x1, + 0x1, + -0x1, -0x1, 0x1, 0x1, 0x0, - 0x1, - ] - .span(), - array![ - 0x1, - 0x1, + -0x1, 0x0, -0x1, 0x0, 0x0, + 0x1, + -0x1, -0x1, - 0x0, -0x1, - 0x1, + 0x0, 0x0, 0x1, 0x0, + -0x1, + -0x1, + ] + .span(), + array![ 0x1, + -0x1, 0x1, -0x1, 0x0, + -0x1, 0x0, -0x1, 0x0, -0x1, 0x0, - 0x1, -0x1, 0x1, - 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, - 0x0, 0x1, - -0x1, 0x1, 0x0, -0x1, 0x1, + -0x1, 0x0, 0x1, -0x1, + 0x0, + 0x0, 0x1, -0x1, + 0x0, 0x1, + -0x1, + -0x1, 0x1, - 0x1, + 0x0, 0x0, -0x1, 0x0, -0x1, + 0x0, -0x1, -0x1, 0x1, 0x0, - 0x0, 0x1, + -0x1, + -0x1, 0x0, 0x0, 0x1, @@ -41653,192 +41667,198 @@ mod msm_tests { 0x0, 0x0, 0x1, - 0x0, - 0x0, - 0x0, - -0x1, 0x1, - 0x0, + -0x1, 0x1, -0x1, + -0x1, 0x0, 0x1, -0x1, 0x0, + -0x1, 0x1, + -0x1, 0x1, + -0x1, + 0x0, + -0x1, 0x1, 0x1, -0x1, -0x1, + 0x0, + -0x1, + -0x1, ] .span() ), ( array![ - -0x1, - 0x0, - -0x1, -0x1, -0x1, + 0x0, -0x1, + 0x1, 0x0, + 0x0, + 0x1, + 0x1, + 0x1, 0x1, 0x0, - -0x1, 0x1, 0x0, + 0x1, 0x0, + 0x1, -0x1, - 0x0, 0x1, -0x1, 0x0, -0x1, - -0x1, - -0x1, 0x1, - 0x0, - 0x0, - 0x0, - -0x1, - 0x0, 0x1, - 0x0, 0x1, 0x0, - 0x0, - 0x0, + 0x1, + -0x1, -0x1, 0x0, 0x1, 0x1, + 0x1, -0x1, -0x1, + 0x0, + 0x0, + 0x1, 0x1, - -0x1, -0x1, -0x1, -0x1, 0x1, + 0x0, -0x1, -0x1, - 0x0, + 0x1, 0x0, -0x1, - 0x0, 0x1, - -0x1, 0x1, -0x1, 0x1, - 0x1, 0x0, + -0x1, 0x0, 0x1, - 0x1, - 0x0, -0x1, + 0x0, -0x1, + 0x0, -0x1, 0x0, + 0x1, -0x1, -0x1, - 0x1, + 0x0, -0x1, 0x1, + 0x1, + 0x1, 0x0, 0x0, 0x0, - 0x0, - 0x0, - 0x1, 0x1, + -0x1, 0x0, + 0x1, 0x0, 0x1, + -0x1, + -0x1, ] .span(), array![ - 0x0, + 0x1, + 0x1, -0x1, + 0x1, 0x0, - 0x0, + 0x1, -0x1, + 0x1, 0x0, -0x1, - 0x0, - 0x0, + -0x1, 0x0, 0x1, + 0x1, 0x0, - 0x0, + 0x1, 0x0, 0x0, 0x1, + 0x1, + -0x1, 0x0, -0x1, -0x1, - 0x0, - 0x1, 0x1, 0x0, 0x0, -0x1, 0x0, - 0x0, - 0x1, - 0x0, - -0x1, - 0x1, -0x1, 0x0, - 0x1, -0x1, 0x0, 0x1, 0x0, 0x0, - 0x1, - 0x1, - 0x1, - 0x1, -0x1, + 0x0, 0x1, + -0x1, 0x0, + -0x1, + -0x1, + 0x1, + -0x1, 0x0, 0x1, 0x1, 0x0, 0x0, 0x0, - 0x1, + -0x1, 0x1, -0x1, 0x0, + 0x0, + -0x1, 0x1, -0x1, -0x1, - 0x1, 0x0, 0x0, - 0x1, + -0x1, 0x0, -0x1, 0x1, 0x1, - 0x0, + -0x1, + 0x1, -0x1, 0x0, + -0x1, 0x0, -0x1, - 0x1, -0x1, 0x1, - -0x1, - 0x0, 0x0, 0x0, + 0x1, -0x1, 0x1, ] @@ -41846,181 +41866,163 @@ mod msm_tests { ), ( array![ - -0x1, 0x1, -0x1, - 0x0, - 0x1, + -0x1, + -0x1, -0x1, 0x0, 0x0, + -0x1, 0x0, 0x1, - 0x0, - -0x1, + 0x1, 0x1, -0x1, + 0x1, + 0x1, + 0x1, 0x0, - -0x1, - -0x1, + 0x1, -0x1, 0x1, -0x1, -0x1, 0x0, + -0x1, + 0x1, 0x0, + -0x1, + 0x1, 0x1, 0x1, -0x1, 0x0, -0x1, + -0x1, + 0x1, 0x0, 0x1, -0x1, + -0x1, + 0x0, + -0x1, + 0x0, 0x0, 0x0, -0x1, + 0x1, -0x1, - 0x0, 0x1, 0x0, + 0x1, 0x0, 0x0, + 0x1, 0x0, 0x1, 0x0, 0x0, + 0x0, 0x1, 0x1, 0x0, - 0x1, -0x1, - 0x1, + -0x1, 0x0, 0x0, 0x0, 0x1, -0x1, 0x0, - 0x1, - -0x1, 0x0, - 0x1, -0x1, 0x1, - 0x0, - 0x0, 0x1, - 0x0, 0x1, - -0x1, 0x1, -0x1, - -0x1, - -0x1, - -0x1, 0x1, - -0x1, 0x0, - 0x1, + -0x1, 0x0, - 0x1, - 0x1, -0x1, -0x1, ] .span(), array![ - -0x1, - 0x0, - -0x1, - 0x0, 0x1, -0x1, 0x0, -0x1, - 0x0, 0x1, 0x1, 0x1, 0x0, - 0x1, 0x0, - -0x1, + 0x0, + 0x1, -0x1, 0x1, -0x1, 0x1, 0x1, 0x0, - -0x1, + 0x0, 0x1, - -0x1, + 0x0, 0x1, 0x1, + -0x1, 0x0, 0x1, - 0x0, - 0x0, - -0x1, -0x1, 0x0, 0x1, 0x1, - 0x0, 0x1, - 0x0, - -0x1, -0x1, + 0x1, + 0x0, + 0x0, -0x1, 0x0, -0x1, 0x1, + 0x0, -0x1, - 0x1, + 0x0, -0x1, 0x1, - -0x1, 0x0, 0x1, - -0x1, - 0x0, + 0x1, -0x1, -0x1, 0x0, 0x1, 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x1, -0x1, -0x1, 0x0, - 0x1, - 0x0, 0x0, - 0x1, 0x0, -0x1, - 0x0, -0x1, - 0x0, - 0x0, - 0x1, + -0x1, + -0x1, + -0x1, 0x0, -0x1, - ] - .span() - ), - ( - array![ 0x0, + -0x1, + -0x1, + -0x1, 0x1, 0x1, + 0x0, -0x1, - -0x1, + 0x1, 0x0, 0x1, -0x1, @@ -42030,155 +42032,173 @@ mod msm_tests { 0x0, 0x1, -0x1, - 0x1, -0x1, + ] + .span() + ), + ( + array![ 0x1, - -0x1, 0x0, -0x1, - 0x1, - 0x1, - 0x0, -0x1, -0x1, -0x1, + 0x1, -0x1, -0x1, -0x1, -0x1, - 0x0, - 0x0, - 0x0, - 0x0, 0x1, 0x0, - 0x0, - 0x0, + -0x1, 0x0, 0x1, - 0x0, -0x1, 0x0, + 0x1, 0x0, 0x0, + 0x1, + -0x1, + 0x1, 0x0, + 0x1, + -0x1, -0x1, -0x1, -0x1, + 0x0, 0x1, + -0x1, 0x0, -0x1, -0x1, + -0x1, + -0x1, + -0x1, 0x1, + -0x1, 0x0, 0x1, + 0x1, + -0x1, + 0x0, 0x0, -0x1, 0x1, -0x1, + 0x1, -0x1, -0x1, - -0x1, - 0x1, - 0x1, 0x1, -0x1, + -0x1, 0x0, -0x1, -0x1, 0x0, -0x1, - 0x0, 0x1, 0x0, + 0x1, 0x0, - 0x0, - -0x1, - -0x1, 0x1, + -0x1, 0x1, - ] - .span(), - array![ -0x1, -0x1, 0x0, - 0x0, - 0x1, -0x1, 0x0, 0x1, - 0x0, - -0x1, + 0x1, 0x1, 0x0, -0x1, + 0x1, + ] + .span(), + array![ 0x0, - 0x0, + 0x1, 0x0, -0x1, + -0x1, 0x0, + -0x1, + -0x1, + -0x1, + -0x1, + -0x1, 0x0, 0x0, 0x1, 0x1, + 0x0, 0x1, 0x1, 0x1, - 0x0, + -0x1, 0x1, 0x0, - -0x1, + 0x0, + 0x0, 0x1, -0x1, -0x1, 0x1, + -0x1, 0x1, 0x0, + -0x1, + -0x1, 0x1, + 0x0, -0x1, 0x1, 0x1, 0x1, -0x1, 0x0, + 0x0, 0x1, 0x0, 0x0, + 0x0, -0x1, 0x1, + 0x0, + 0x1, + 0x1, -0x1, + 0x1, + 0x0, -0x1, -0x1, 0x1, + 0x0, 0x1, 0x1, 0x1, - 0x1, - 0x0, - 0x1, - -0x1, -0x1, -0x1, 0x0, - -0x1, - 0x0, + 0x1, 0x0, -0x1, 0x1, 0x1, + 0x1, + 0x1, + 0x1, + 0x1, 0x0, 0x0, -0x1, - 0x0, - 0x1, -0x1, + 0x1, -0x1, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, 0x1, 0x1, ] @@ -42186,168 +42206,167 @@ mod msm_tests { ), ( array![ + 0x1, + 0x1, -0x1, -0x1, - -0x1, - -0x1, - 0x0, - -0x1, - 0x0, 0x0, 0x0, 0x1, - 0x1, - -0x1, + 0x0, -0x1, -0x1, 0x1, 0x1, + 0x0, + 0x1, 0x1, + -0x1, 0x1, + 0x0, + -0x1, + -0x1, -0x1, 0x1, + -0x1, 0x1, -0x1, - 0x0, 0x1, 0x0, 0x0, - 0x1, - 0x1, - 0x1, -0x1, - -0x1, - 0x1, + 0x0, 0x0, 0x0, 0x1, - 0x1, + -0x1, 0x0, 0x0, -0x1, + 0x1, 0x0, 0x1, - -0x1, 0x1, - -0x1, 0x1, -0x1, 0x0, - 0x0, 0x1, 0x1, -0x1, - 0x1, - 0x1, -0x1, - 0x0, - 0x1, -0x1, -0x1, - 0x0, - 0x0, -0x1, -0x1, - 0x1, 0x0, - 0x1, + 0x0, -0x1, 0x1, + -0x1, 0x1, -0x1, 0x0, - 0x0, -0x1, 0x0, + 0x1, + 0x1, + 0x1, -0x1, -0x1, + 0x0, -0x1, + 0x0, + 0x0, -0x1, 0x1, + 0x0, -0x1, 0x1, - 0x1, + 0x0, + 0x0, + 0x0, + -0x1, ] .span(), array![ 0x0, - -0x1, - -0x1, - -0x1, - 0x0, - 0x0, - 0x1, 0x0, 0x0, 0x0, - 0x1, 0x0, -0x1, - 0x0, 0x1, 0x0, 0x1, 0x0, + 0x0, 0x1, 0x1, - -0x1, 0x1, 0x1, -0x1, - -0x1, - 0x0, - -0x1, 0x0, 0x0, -0x1, -0x1, - 0x1, 0x0, - -0x1, 0x0, - -0x1, - -0x1, 0x1, - 0x0, 0x1, + 0x0, -0x1, - 0x1, 0x0, 0x1, 0x1, -0x1, -0x1, 0x1, + -0x1, + -0x1, + 0x1, + 0x0, 0x1, 0x1, - -0x1, 0x1, -0x1, 0x0, + 0x1, 0x0, 0x0, + 0x1, -0x1, + 0x1, 0x0, -0x1, - 0x0, - 0x0, - 0x0, - 0x0, + 0x1, -0x1, - 0x0, - 0x0, -0x1, + 0x1, -0x1, -0x1, + 0x0, 0x1, -0x1, - 0x1, + -0x1, 0x0, + -0x1, 0x1, + 0x0, + -0x1, + 0x0, 0x1, -0x1, -0x1, + 0x0, + 0x0, + 0x1, 0x1, + 0x1, + 0x0, + 0x0, + 0x0, + -0x1, + 0x0, -0x1, -0x1, ] @@ -42355,511 +42374,510 @@ mod msm_tests { ), ( array![ - -0x1, - -0x1, - 0x1, + 0x0, 0x0, 0x1, -0x1, - -0x1, + 0x0, 0x1, -0x1, - 0x1, + 0x0, + 0x0, 0x0, 0x1, + 0x0, -0x1, - 0x1, -0x1, 0x1, 0x1, - -0x1, - 0x0, 0x0, + 0x1, + 0x1, 0x0, 0x1, + -0x1, + -0x1, 0x0, 0x0, - 0x1, - 0x1, - 0x1, 0x0, 0x0, + 0x0, + -0x1, -0x1, + -0x1, + 0x0, 0x0, 0x0, -0x1, + 0x0, 0x1, 0x0, + 0x0, + 0x0, -0x1, 0x1, 0x1, 0x0, - -0x1, - -0x1, + 0x1, 0x1, -0x1, + 0x0, 0x1, 0x0, -0x1, - -0x1, + 0x0, 0x1, -0x1, -0x1, - 0x1, - 0x1, + 0x0, + 0x0, 0x0, 0x1, 0x1, -0x1, - -0x1, - 0x0, 0x0, 0x1, 0x1, 0x1, 0x0, 0x0, - 0x1, - 0x1, + 0x0, -0x1, 0x1, + -0x1, + 0x0, 0x0, 0x1, -0x1, + -0x1, 0x1, 0x0, - -0x1, - -0x1, 0x0, - -0x1, 0x0, -0x1, - 0x1, - 0x1, + -0x1, ] .span(), array![ - -0x1, -0x1, 0x0, - -0x1, - 0x1, + 0x0, -0x1, -0x1, - 0x0, 0x1, - -0x1, 0x0, - 0x1, -0x1, 0x0, + 0x0, + 0x0, -0x1, + -0x1, + 0x1, + 0x0, + 0x0, + 0x1, 0x1, 0x0, 0x1, -0x1, -0x1, + 0x0, -0x1, -0x1, 0x1, 0x0, -0x1, - 0x0, 0x1, -0x1, + -0x1, 0x1, - 0x1, - 0x1, - 0x0, -0x1, -0x1, 0x1, + 0x1, + 0x1, 0x0, 0x0, + -0x1, + -0x1, 0x0, - 0x1, - 0x1, -0x1, -0x1, -0x1, + 0x0, + -0x1, -0x1, 0x1, - 0x1, - 0x0, - 0x0, 0x0, + -0x1, 0x1, 0x1, 0x1, -0x1, - 0x0, - -0x1, -0x1, - 0x0, 0x1, 0x1, 0x0, - 0x0, -0x1, - 0x1, 0x0, + 0x0, + 0x1, + 0x1, + -0x1, -0x1, 0x1, 0x1, 0x0, + -0x1, 0x1, - 0x1, + -0x1, 0x1, 0x0, -0x1, - 0x1, + -0x1, 0x1, 0x0, 0x1, 0x0, - -0x1, - -0x1, - -0x1, - -0x1, + 0x1, ] .span() ), ( array![ - 0x0, -0x1, - 0x0, -0x1, 0x0, - 0x0, - 0x0, - -0x1, -0x1, 0x0, -0x1, 0x1, 0x0, 0x0, + -0x1, + 0x1, + -0x1, 0x1, 0x1, - 0x0, - 0x0, 0x1, - -0x1, - -0x1, 0x0, 0x0, + -0x1, 0x1, 0x0, 0x1, - 0x0, - 0x0, + 0x1, 0x0, -0x1, - -0x1, 0x1, - -0x1, 0x0, + -0x1, + -0x1, 0x1, 0x0, 0x1, 0x1, - -0x1, - -0x1, 0x0, 0x0, - 0x1, - 0x1, -0x1, + 0x1, + 0x0, 0x0, -0x1, 0x0, 0x0, 0x0, 0x0, - -0x1, 0x0, 0x1, 0x0, - -0x1, - -0x1, + 0x0, 0x0, 0x1, - -0x1, 0x1, 0x1, 0x0, -0x1, - 0x1, - 0x1, + 0x0, 0x1, 0x0, 0x0, - 0x1, - 0x1, 0x0, 0x1, 0x0, + -0x1, 0x0, 0x1, + 0x1, + -0x1, -0x1, 0x0, + -0x1, + -0x1, + -0x1, 0x1, 0x1, -0x1, + 0x1, + 0x0, -0x1, + 0x0, + 0x0, + 0x0, + 0x1, + 0x1, ] .span(), array![ - -0x1, - 0x0, + 0x1, 0x0, 0x0, -0x1, 0x1, - 0x0, - -0x1, - -0x1, - -0x1, 0x1, - 0x0, + -0x1, 0x1, 0x1, - 0x0, - -0x1, -0x1, 0x0, 0x1, 0x1, 0x1, -0x1, - -0x1, + 0x1, + 0x1, + 0x1, 0x0, 0x1, -0x1, + 0x0, + 0x0, 0x1, 0x0, 0x0, -0x1, + 0x1, + -0x1, -0x1, -0x1, -0x1, 0x0, + -0x1, + 0x1, + -0x1, + 0x1, 0x0, + -0x1, 0x1, + 0x0, 0x1, 0x0, 0x1, + 0x1, + -0x1, -0x1, -0x1, - 0x1, 0x0, 0x0, + -0x1, 0x0, 0x0, 0x1, - 0x1, 0x0, + 0x0, + 0x1, -0x1, 0x1, + -0x1, 0x0, 0x0, -0x1, - -0x1, - 0x1, - 0x0, 0x1, -0x1, -0x1, - 0x1, - 0x1, 0x0, 0x0, + -0x1, 0x1, 0x1, 0x0, - 0x0, + 0x1, + -0x1, 0x0, 0x0, -0x1, 0x0, - 0x0, 0x1, 0x1, - 0x0, - 0x1, - -0x1, 0x1, - -0x1, ] .span() ), ( array![ - 0x0, - 0x1, -0x1, -0x1, -0x1, - 0x0, - 0x1, -0x1, - 0x1, - 0x1, -0x1, 0x1, - 0x1, -0x1, - 0x1, -0x1, -0x1, -0x1, - 0x0, + -0x1, 0x1, - 0x0, 0x1, -0x1, 0x0, -0x1, 0x1, + -0x1, + 0x1, + 0x0, 0x1, + 0x0, 0x1, + -0x1, + -0x1, + 0x0, + -0x1, 0x0, + -0x1, 0x0, -0x1, + 0x0, 0x1, + -0x1, 0x1, 0x1, -0x1, + -0x1, 0x1, 0x0, 0x0, 0x0, 0x0, - 0x0, - 0x0, - 0x0, - 0x1, - 0x1, 0x1, 0x1, - 0x1, - -0x1, + 0x0, 0x1, 0x0, 0x1, 0x0, + 0x1, 0x0, 0x0, 0x0, + 0x1, + 0x1, + 0x1, + -0x1, -0x1, - 0x0, -0x1, - 0x0, 0x1, 0x0, 0x0, 0x0, - 0x0, + 0x1, -0x1, 0x1, - 0x0, 0x1, -0x1, - -0x1, + 0x1, 0x0, -0x1, 0x0, - 0x1, + 0x0, -0x1, - 0x1, - 0x1, + 0x0, -0x1, -0x1, 0x1, + -0x1, ] .span(), array![ -0x1, 0x1, + -0x1, + -0x1, 0x0, + -0x1, 0x0, 0x1, 0x0, + -0x1, 0x1, - 0x0, - 0x1, - 0x0, 0x1, -0x1, + -0x1, 0x0, 0x1, 0x0, 0x0, 0x1, - -0x1, - 0x0, - 0x1, 0x1, - 0x1, - 0x0, 0x0, + 0x1, -0x1, 0x0, - 0x0, - 0x0, - 0x1, + -0x1, -0x1, 0x1, 0x1, + 0x0, 0x1, + 0x0, + 0x0, + 0x0, 0x1, 0x1, + 0x0, -0x1, + 0x0, + 0x0, 0x1, 0x1, 0x1, 0x0, - 0x0, + 0x1, 0x1, -0x1, - -0x1, + 0x0, -0x1, 0x1, -0x1, - 0x0, 0x1, + -0x1, 0x1, 0x1, -0x1, + 0x1, 0x0, + 0x1, -0x1, - 0x0, -0x1, - 0x0, 0x1, 0x1, 0x0, + 0x1, 0x0, - -0x1, - -0x1, 0x1, -0x1, - 0x1, + 0x0, -0x1, - 0x1, -0x1, 0x0, - -0x1, + 0x1, 0x1, -0x1, 0x0, - 0x1, 0x0, - 0x1, + 0x0, + -0x1, -0x1, -0x1, - 0x1, 0x1, ] .span() @@ -42870,154 +42888,157 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0x95dba705d2197069b856eb30, - limb1: 0x262212a1ebca53e406765807, - limb2: 0xd26864dac91828e5, + limb0: 0x1a1ddfdc54902f1bb4e3a602, + limb1: 0xb059fb827a49025197845050, + limb2: 0xfb700f95ef84a6dc, limb3: 0x0 }, y: u384 { - limb0: 0x790c4736de939e517d80fd28, - limb1: 0x7fb9ae39e35d5271c99c25de, - limb2: 0x6bd0f49ba159c5eb, + limb0: 0xd2ee5abbfe3df8cec476704a, + limb1: 0x3dbe30b1fd4fca089c8d1877, + limb2: 0xbef7c440f5cfb23d, limb3: 0x0 } }, Q_high: G1Point { x: u384 { - limb0: 0x619d145c64a4f4001f37404b, - limb1: 0x63899d929e2401194ad2434, - limb2: 0x28d87f31e4d9f08, + limb0: 0xc6964f180cbe6456dcf03e52, + limb1: 0xb317281239bd8fa7f3effe55, + limb2: 0x6877c611440f7c11, limb3: 0x0 }, y: u384 { - limb0: 0x5ea4533409c85d15a14659b9, - limb1: 0x5c1f24cc1beaa43f3a13d5f5, - limb2: 0xf7f90f089642f66e, + limb0: 0x191b070e19e79bfc2aebeb10, + limb1: 0xa2690641c372e095aea03924, + limb2: 0xec5903d3a83026d, limb3: 0x0 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0xe783cd6cbe770365efd5d9aa, - limb1: 0x1759418e70d5b133391bb084, - limb2: 0xd44aeb46a45d3fbf, + limb0: 0x14e06a26511bca34c8e7ae1b, + limb1: 0xe9e0a0a0e87629381ede3139, + limb2: 0x1c8f5bf69522aab9, limb3: 0x0 }, y: u384 { - limb0: 0x3d148594ed7ad310f6291d20, - limb1: 0xec9db487f40d6ffbe1c730d8, - limb2: 0xa3a524d76aa18131, + limb0: 0xe73b98d0b3801a6032c648b7, + limb1: 0x2bafe6f41143fb2cdcc3e8f0, + limb2: 0xba5ee3d95c3debf6, limb3: 0x0 } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0x13793c7270df5dad183e4c51, - limb1: 0x4603e502e9f6f0595c799aad, - limb2: 0x7332075f61d65267, + limb0: 0xb993ae989e2609ba9fd4dc34, + limb1: 0x2b8c4ea9611f70c440a28dce, + limb2: 0x13d2c74b1891229d, limb3: 0x0 }, u384 { - limb0: 0x1a955cfc8b2b8cf8e29eb20a, - limb1: 0x6f3cf7a2efd48dd965190ee7, - limb2: 0x1d82e5a263ae8470, + limb0: 0xd2ee6b68105e9e3456e99296, + limb1: 0xb759f1191c50e3ab5f7ee6c4, + limb2: 0xa9d9eea01b0b6b1c, limb3: 0x0 }, u384 { - limb0: 0x50a6708df7501a9e7a76db8, - limb1: 0xe3134bbd1c28d2f930cddbc4, - limb2: 0x8f4fe980aeef0d4f, + limb0: 0x63b810e04aeb372bb0c461e3, + limb1: 0x4fe3a76800e36ddfbd254ff7, + limb2: 0xe60549d0533df908, limb3: 0x0 }, u384 { - limb0: 0xb4baa4e82e580487fa1a2cb8, - limb1: 0x732c32a1548ac81961e0f4de, - limb2: 0x2b9a218851aec6ae, + limb0: 0xccf21ebd108b0a76b5220e8f, + limb1: 0xda1e3de47149b5dbfa30f69b, + limb2: 0x886896698af640ca, limb3: 0x0 }, u384 { - limb0: 0x1b735caafd427762bba6bda0, - limb1: 0xfac9ff7c628df817a83b8d33, - limb2: 0xb638ceaa5b31973d, + limb0: 0xcc9586900d206202714529c9, + limb1: 0xfab4b14ca222cbf445a5c3d7, + limb2: 0xe9e49e53d4352fc4, limb3: 0x0 }, u384 { - limb0: 0x5876f86564517f5ed8207194, - limb1: 0xed5762977be3e877de19886e, - limb2: 0x5f74c3b5fa924b50, + limb0: 0x65a90991f07e447939ced62f, + limb1: 0x1cd6c565fbf6ae7b1accbc09, + limb2: 0x8fa464113a9eb468, limb3: 0x0 }, u384 { - limb0: 0xd7c16e9bccacc53823fd49e, - limb1: 0x7e7a3b8433f8be92210c1002, - limb2: 0x946bebbac835ce1c, + limb0: 0xd602cf5e9b124a83876e18c0, + limb1: 0x124b5b48fe216edefa482c0e, + limb2: 0x25ae8b5bdd237086, limb3: 0x0 }, u384 { - limb0: 0x5fe013eddd3d06c4d8bed5f, - limb1: 0x6dbe04bb432d729281533ee0, - limb2: 0xbbe7de44ead3c865, + limb0: 0xbf97403d572fcc121adb653d, + limb1: 0xe2618d6c1232dff4a7346c12, + limb2: 0x6b3683edd2baf133, limb3: 0x0 }, u384 { - limb0: 0x3875cb15531fa3c18d240fc2, limb1: 0x250e2062, limb2: 0x0, limb3: 0x0 + limb0: 0x10908dc873d96f06cd0b5231, + limb1: 0xfffffffffffffffe44172863, + limb2: 0xffffffffffffffff, + limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0x9e8480214c1c53c75bacde5, - limb1: 0x840881e5ba16ef37390a32b3, - limb2: 0xd2b9a316d9280100, + limb0: 0x890bc1fc575b061e336fe547, + limb1: 0x2363a20039c0bf67bb2a50c9, + limb2: 0xf06c280cbe6c192f, limb3: 0x0 }, u384 { - limb0: 0xcdf35c51bbb7deee4cddbf8, - limb1: 0x8a7e630531019f7727069cbd, - limb2: 0xfe2e399666c58801, + limb0: 0x7cd49162b22f665f16914342, + limb1: 0x85ac0186c64c4f8f6ff9f272, + limb2: 0xa9a5910233b1ca26, limb3: 0x0 }, u384 { - limb0: 0x216a1a10264955df4a333e07, - limb1: 0x8792fecde41e0a4af71a91dd, - limb2: 0xe13ea3dcf92e089b, + limb0: 0x34e0518744a5432a8eecf4c8, + limb1: 0x39e2e998603a776755f4383c, + limb2: 0x368f692b7eeaf44e, limb3: 0x0 }, u384 { - limb0: 0x693f6bf1037a0cc7c1972f0b, - limb1: 0xecdaad93cd9b0974a09070f8, - limb2: 0xcf27b7460daa003c, + limb0: 0xdee439c92ed8f81468dd8b11, + limb1: 0xb3749af40c42469150d7ea9e, + limb2: 0xa6bf496cb599dfeb, limb3: 0x0 }, u384 { - limb0: 0x66a7ce118ddc8847ef886333, - limb1: 0x2a157af33626fcbcbecc966c, - limb2: 0x176179ec06d583cc, + limb0: 0x90c97d670a47fb43807ffaf2, + limb1: 0xf05c79fcb4dd5ea568cac1f9, + limb2: 0xa948da24185c5a51, limb3: 0x0 }, u384 { - limb0: 0xda5452a6f9edd65efb203aec, - limb1: 0xa6cda436bbb04503720813bd, - limb2: 0xd1988c49be90b578, + limb0: 0x32d4487cf051f6a9b85141eb, + limb1: 0x34b9632ce7463ab96ed57471, + limb2: 0xc72b1ec0988a4c8a, limb3: 0x0 }, u384 { - limb0: 0x77fbb43b7de548490026d72f, - limb1: 0x4d842ea22b176abf143a65ba, - limb2: 0xac8f14c4d4fc618f, + limb0: 0x5f29f0a24e4f4da6bcfd41e5, + limb1: 0x776e168601b2dcfbb5fb3a66, + limb2: 0xabe7100fa1e4e3aa, limb3: 0x0 }, u384 { - limb0: 0x5b9a6ae5b2c0aea2bf0d7f72, - limb1: 0xa5ce9f505676e849fedcd666, - limb2: 0x17cc1637efe2307d, + limb0: 0x2e359e3b1ae61a99674683e1, + limb1: 0x7b763f09558a686da3d3b26a, + limb2: 0x87f9384a8f94643, limb3: 0x0 }, u384 { - limb0: 0xb639e423fd2da8d048247789, - limb1: 0xc53365b9701b9f0132177db1, - limb2: 0xe46aa0f43c6d8b70, + limb0: 0x67b99aba416012adf6a1e8f9, + limb1: 0x5a58b6005940a59703fe1c7a, + limb2: 0xdec569ddaf32270c, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -43025,138 +43046,138 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x5a4457a51cdd7d727da37902, - limb1: 0xd47d2cce669b7b30bd424cec, - limb2: 0x4d37f58d96033f37, + limb0: 0xd75470c450f4f005bf21eeee, + limb1: 0x5a767397e1015afae19f2cbc, + limb2: 0xead27f972734910f, limb3: 0x0 }, u384 { - limb0: 0x249c4dd0b57c18061779c905, - limb1: 0x16514e62c983bdba588753d, - limb2: 0x96f5c50702557aec, + limb0: 0xc3767cc43617f6edb3c0f054, + limb1: 0x78ae633bac65ce1e01d8516c, + limb2: 0xe5b1262f5f9b1df7, limb3: 0x0 }, u384 { - limb0: 0x8ba11eb79977630decdf88a8, - limb1: 0x9a47f1feccd7e478d99eac36, - limb2: 0x51b61c148fcafdc9, + limb0: 0xd003644822a3f576725d516c, + limb1: 0x751d6f8263e8ce772f50d725, + limb2: 0x955c0e579699e9dc, limb3: 0x0 }, u384 { - limb0: 0x4df6639fb127bfd182d353ef, - limb1: 0x4b06dcd2eab7f6c55d8f088, - limb2: 0xbf24496bac6de390, + limb0: 0x9dab8a3002f2ce9a47975cea, + limb1: 0x15600cc50d8a69b67c95e402, + limb2: 0xf423f8d0e8f31cb6, limb3: 0x0 }, u384 { - limb0: 0x41a83b5452affaa5db47f92, - limb1: 0x84ca989c0ccc6203d291a0b2, - limb2: 0x6eab1bb45fb9d2f7, + limb0: 0xf300cb531a7d86a3cae4e468, + limb1: 0x11b07932bd5336328bb447c, + limb2: 0x31d7409eeca1d7e6, limb3: 0x0 }, u384 { - limb0: 0xf34efb3fbae2fbadf2b66511, - limb1: 0x4b7eddc39c0622c664e56656, - limb2: 0x4baa46c800a2672, + limb0: 0xbac8deb3e8a76ea76536e1d1, + limb1: 0x5b54db363309f77ff858a640, + limb2: 0x793a9c4d5eddd47d, limb3: 0x0 }, u384 { - limb0: 0x121fa638bce6ab155823d72b, - limb1: 0x69fdab855c9cfee17294c4a4, - limb2: 0x812258a4309bbd8e, + limb0: 0xf69bea7c9a58b5e129d632f2, + limb1: 0x515c1575c69d35d78bb20c36, + limb2: 0x1ce25b857bc34592, limb3: 0x0 }, u384 { - limb0: 0x9c97c3830cae9ddd02176787, - limb1: 0x9c375f777cc7c142024c47e6, - limb2: 0xca0e39a362acd42b, + limb0: 0x3f5c859a75bc0faee14fdcfe, + limb1: 0xdfadd99fa2a195b9210dc516, + limb2: 0x44320bb286fe6518, limb3: 0x0 }, u384 { - limb0: 0x1f446482f6693e68873640b7, - limb1: 0x7a3de3848b07587f3cf70c01, - limb2: 0xafc231426d4cfa4b, + limb0: 0x74de6151ed12ace81c65aa65, + limb1: 0x1d5b9753fc78a7c4eccd258d, + limb2: 0x90b7fd2dda7f48b6, limb3: 0x0 }, u384 { - limb0: 0x3f951b8048ad8e1c2407b4a0, - limb1: 0x5a3dc83c38127eb17790429b, - limb2: 0x39b6a23570298105, + limb0: 0x90bedb1da1536686c932ee2a, + limb1: 0x805784cdc4a87616d9c74e3f, + limb2: 0x7846d4c73cb00420, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x4559f80e914c64ac381bb458, - limb1: 0x9c3b8d4816a08a828f4762e5, - limb2: 0xc313759ff0180703, + limb0: 0xbf524de6637d2ad9680f5bd7, + limb1: 0xf7b96e0194453bd61e283582, + limb2: 0x92f5185934f4b049, limb3: 0x0 }, u384 { - limb0: 0x5a1a7863c220718e41a11aae, - limb1: 0xc974b524570b5c42112e492b, - limb2: 0xf343931ccf66b80a, + limb0: 0x69cff9b2df4bcc9d9df8e612, + limb1: 0xa7b40aaf6c162cec0fd5a121, + limb2: 0xa386f70f69dc870d, limb3: 0x0 }, u384 { - limb0: 0xe9e6b6710c0159210766c917, - limb1: 0xb504f7a13cd2480cc1b9fd0b, - limb2: 0x28b67b0ad0423c40, + limb0: 0x72223ab2e084d62ae87ab549, + limb1: 0x9534632aa19943d359ad89a5, + limb2: 0x7debe030786cae23, limb3: 0x0 }, u384 { - limb0: 0xeaa43b992d181eb8c0dd2e18, - limb1: 0xfe0340f0595431679cfd497d, - limb2: 0x7ccfa60138ce02aa, + limb0: 0xa149567c9f49ceb2117ec5d3, + limb1: 0xb93deac8f90ad60f111bb21, + limb2: 0x7fa72a05b5a138a1, limb3: 0x0 }, u384 { - limb0: 0xdb75d83ffcc337e77188962e, - limb1: 0xb114bfabac1288a05e9eb9b3, - limb2: 0xa1d88f0a969c2296, + limb0: 0x7256ff33fa27453c9a1132f5, + limb1: 0x1833576fb859e6154d854045, + limb2: 0x4aa387fede384264, limb3: 0x0 }, u384 { - limb0: 0x19b85ca0fbca327e2814f161, - limb1: 0x17327c4d05efed6315531c0e, - limb2: 0x9c6a79e12f22fee8, + limb0: 0x98ae4cf1d6e301d39925d54a, + limb1: 0xaaf49fd2b32612795dca6754, + limb2: 0xa8bd406faab30c15, limb3: 0x0 }, u384 { - limb0: 0xb121599174bf06cbc2a72469, - limb1: 0xb77f402fb3ef4ae2e293911, - limb2: 0x871148a7e090ab28, + limb0: 0x7909ce39530417a893ca6b69, + limb1: 0xf777389e182651734ab6836b, + limb2: 0x5a10b9da22dc1994, limb3: 0x0 }, u384 { - limb0: 0xe7e0ba5971214ebb28e6df51, - limb1: 0xb2bbd625936756c2b6d67338, - limb2: 0xbdf615739604d73b, + limb0: 0xd440d104c692b575536d9619, + limb1: 0x5098333e0ba639a4e394a2e0, + limb2: 0xe4c5e2c4b72d462a, limb3: 0x0 }, u384 { - limb0: 0xd5e98fa2e62d7417f41f9a62, - limb1: 0xb356c48cc719e0bd0ac8399, - limb2: 0x1082f2f7658f858e, + limb0: 0x8e78394b9f2797176beb7a0, + limb1: 0xad265d2f580ac1da8ac83bca, + limb2: 0xde9103d062e95de0, limb3: 0x0 }, u384 { - limb0: 0x77fbb43b7de548490026d736, - limb1: 0x4d842ea22b176abf143a65ba, - limb2: 0xac8f14c4d4fc618f, + limb0: 0x5f29f0a24e4f4da6bcfd41ec, + limb1: 0x776e168601b2dcfbb5fb3a66, + limb2: 0xabe7100fa1e4e3aa, limb3: 0x0 }, u384 { - limb0: 0x5b9a6ae5b2c0aea2bf0d7f72, - limb1: 0xa5ce9f505676e849fedcd666, - limb2: 0x17cc1637efe2307d, + limb0: 0x2e359e3b1ae61a99674683e1, + limb1: 0x7b763f09558a686da3d3b26a, + limb2: 0x87f9384a8f94643, limb3: 0x0 }, u384 { - limb0: 0xb639e423fd2da8d048247789, - limb1: 0xc53365b9701b9f0132177db1, - limb2: 0xe46aa0f43c6d8b70, + limb0: 0x67b99aba416012adf6a1e8f9, + limb1: 0x5a58b6005940a59703fe1c7a, + limb2: 0xdec569ddaf32270c, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -43166,114 +43187,114 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0x8cdf7a653d227cf2aafc37a2, - limb1: 0xa72648f1ba082c3485e8b1de, - limb2: 0x8d94e2d1011172f5, + limb0: 0xba8cd6ddfd50afe62c18878a, + limb1: 0x364778a5e02a68dfd28d6982, + limb2: 0xd811a1992b681e8, limb3: 0x0 }, u384 { - limb0: 0xfe3a485d0fb9af4575f87b01, - limb1: 0xa4afe7b657596ce60a715702, - limb2: 0xb8b6d5ed207dc3ef, + limb0: 0x453dc5bbd2d78b9041a63e40, + limb1: 0xca6ef095ae19b2cddff6777, + limb2: 0x7c26c5d9c7a90cf1, limb3: 0x0 }, u384 { - limb0: 0xcd042ab7e938d42a9c91c987, - limb1: 0xbe86cc0e397baf5c8887c4a, - limb2: 0x16f224101c17b2e4, + limb0: 0xace856f10df6111112c81a80, + limb1: 0x47b3bcfc95bad5dd9ab426c6, + limb2: 0x75a30d89df5dfd03, limb3: 0x0 }, u384 { - limb0: 0x9ce6d20b8a2eda0a2e344a3f, - limb1: 0xa0eda20cb165ecf525163ca9, - limb2: 0xb46cbce841d56f17, + limb0: 0x9114fc45a7634530ccda1dfa, + limb1: 0x77086d67e0a042d32f4bf02b, + limb2: 0x4bc1e45a8c691656, limb3: 0x0 }, u384 { - limb0: 0x8f8d1228c85298505f2cfb60, - limb1: 0x5a14180a10f79b7b01855904, - limb2: 0x8d085c76c5be053f, + limb0: 0x6fa4a523239c674be45707e4, + limb1: 0x34ec579dca1ddb68c4247c4f, + limb2: 0x68a70ed99220d698, limb3: 0x0 }, u384 { - limb0: 0x6db5acc954c417374022a027, - limb1: 0x5b16ca9885f309ff3ec557b, - limb2: 0x54fb31a873304d1b, + limb0: 0xa980cd007077ccab6d972acb, + limb1: 0x2d333a7d559b3b76d373750e, + limb2: 0x14888bb63ab5cbc7, limb3: 0x0 }, u384 { - limb0: 0xaaf749c8ae74ff6752950125, - limb1: 0xfa5d641ba001c89a3c2f3876, - limb2: 0x556b97e86f5d6403, + limb0: 0x2d7a25d987629557baa9e4fc, + limb1: 0x2ca06c7de361eb0f693e7bab, + limb2: 0xb5963c593aa3264, limb3: 0x0 }, u384 { - limb0: 0xeaafb6b51c68709f65109026, - limb1: 0xeaffa93e48a99eddedaffd29, - limb2: 0xcfc322caaaac9c8c, + limb0: 0x102f215105b6e649d1b10d02, + limb1: 0x9299a92e2a4f38a6f3a0d966, + limb2: 0x7b434c84ea00f7ad, limb3: 0x0 }, u384 { - limb0: 0xbeb2827e41161af6f5883a6f, - limb1: 0xffffffffffffffff4c1de325, - limb2: 0x7fffffffffffffff, + limb0: 0xfc29bd7e5528d8d2cdf907e, + limb1: 0x4f61e9d7, + limb2: 0x8000000000000000, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0xdae921b479de8e3fc086f85c, - limb1: 0x55e012375d0977ad932f1e46, - limb2: 0xb018d5e8cafa3601, + limb0: 0xa42836ed9261bb3c9211cd2a, + limb1: 0xed5788e56e59ebdd6efe2f5e, + limb2: 0x911d97639267729a, limb3: 0x0 }, u384 { - limb0: 0x390b56410dec06a6c10437da, - limb1: 0xb977a61152768fe450264413, - limb2: 0xb3bdc44e0856320, + limb0: 0x774cb0825df055d79c3a8d9, + limb1: 0x3eb393b5175e44a47179a23b, + limb2: 0x8987c0e5c16489eb, limb3: 0x0 }, u384 { - limb0: 0xa1a8387ddcd1a3ecb31b16ad, - limb1: 0x4701e08170a3f0f1a364a289, - limb2: 0xd9a94544baf879b2, + limb0: 0x7ad25ae3d3c22b400df74d90, + limb1: 0x7d73ba72625265c14dadd01, + limb2: 0xc45953c95d23c6c6, limb3: 0x0 }, u384 { - limb0: 0xb75380fc4af9e18154ed459e, - limb1: 0x5a7849b2c3b77c8bffafd917, - limb2: 0xdcf5a273cf7633a, + limb0: 0x80e9a529ed69a39ee7be947, + limb1: 0xcba147ec23908069081f509a, + limb2: 0x1b508a4c34fa40d8, limb3: 0x0 }, u384 { - limb0: 0xf6ee43a32233f06402d8be01, - limb1: 0xf4462420bf8a79c8cc7872bf, - limb2: 0x6ff95c016445dc47, + limb0: 0xc489734e667c3cb10b2aed5c, + limb1: 0xe1c92769d56e4284c6f7a698, + limb2: 0xbb860a224054a8b6, limb3: 0x0 }, u384 { - limb0: 0xfd381255f45016145225b761, - limb1: 0xd772772c8c97d82856f6088f, - limb2: 0xcf498a3c03801d48, + limb0: 0x4d46995ccdd8abe5371c33aa, + limb1: 0xcc4fc913c9fd6b876e339ef8, + limb2: 0xd9f4586d804f6ab, limb3: 0x0 }, u384 { - limb0: 0xbfa3d4ec0ab4f928a60dcdb, - limb1: 0xd3d24e51798a377069a81ce8, - limb2: 0x41a582819c676a3a, + limb0: 0x303d9015cbd88bbe55290c60, + limb1: 0xbf9354c43ed1186fa112ce5, + limb2: 0x3e850902ff448f2a, limb3: 0x0 }, u384 { - limb0: 0xe26211f0d6b534002bda1fbb, - limb1: 0x1cf5f2e7014c7abf1334ee39, - limb2: 0x746b74fbd366a831, + limb0: 0xeda081dee0046907ba22682c, + limb1: 0x1b4da803ba28757468232c42, + limb2: 0xcd998194bb6c6f7, limb3: 0x0 }, u384 { - limb0: 0xea7876cd6aa2253ae144263f, - limb1: 0xe51cde823203b2d3a3e0b184, - limb2: 0xb4457ddbe738154d, + limb0: 0xbb412b7e8931dd73ce95547a, + limb1: 0x579b897099cc1840a7926e74, + limb2: 0x71bdb3625aa751d7, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -43281,138 +43302,138 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x94bfa15738fbfd28a05ffd2c, - limb1: 0xe17180426ffea8e3e4533da9, - limb2: 0x40c023da9acbdfdc, + limb0: 0xd024842ab45aa734d43d3e58, + limb1: 0x1c6786079d525453d2a4dffb, + limb2: 0x9c4d68845eac74b, limb3: 0x0 }, u384 { - limb0: 0x54fc5bec20b4e139936e034d, - limb1: 0xd586879edb4981b0988ed2b7, - limb2: 0x235895c4cd76fdd7, + limb0: 0x7b9942b846a1adf5f9e177e3, + limb1: 0xfae4e36cdb9f5ce0435c0eb5, + limb2: 0x690010b108f390a, limb3: 0x0 }, u384 { - limb0: 0x551b273f5385ccb3dd17d472, - limb1: 0xaabf49d0188360678bebe339, - limb2: 0xb81e4fe53343eff5, + limb0: 0xdcb9896f41f4b19f05a386dd, + limb1: 0xd4a60956aea53f6ce3ecd7c4, + limb2: 0x999d1d9b7fadd6f, limb3: 0x0 }, u384 { - limb0: 0x29d6e0a53156d91cdf531d2f, - limb1: 0x79a480360a5df9afcb32a629, - limb2: 0x15e5675516aa785, + limb0: 0x600f6d0cde1c61ea8e1b2324, + limb1: 0xeb942cf80607c1af90565c52, + limb2: 0xe2f2c1c3f9dfcd70, limb3: 0x0 }, u384 { - limb0: 0x554e59d4dc4f73f474d3804, - limb1: 0xd55b9b0eae80c68768a69b47, - limb2: 0xd6cb3efb2d41536b, + limb0: 0xe4f54dd61c54c768d5a596d9, + limb1: 0x601d31c64296735744a68ca6, + limb2: 0xf3175f61b5a3c78a, limb3: 0x0 }, u384 { - limb0: 0xb74b74038489942c839b931a, - limb1: 0x4c21bb04b0f837153b814910, - limb2: 0x3ed16228757d1fbc, + limb0: 0xacd496bed1c57ba935c62e8, + limb1: 0x3574a8c50504d43139172ec6, + limb2: 0x60d2c64ac52b942e, limb3: 0x0 }, u384 { - limb0: 0xdfe1d67d06dbd7f374963e0e, - limb1: 0x6679fde34c5b7a6138b02df9, - limb2: 0xed7f6e338719a291, + limb0: 0x43383b5e209cddd6fd9ae0e9, + limb1: 0x3ffa2042ca7246989367220d, + limb2: 0x1b905605753e46f, limb3: 0x0 }, u384 { - limb0: 0x926639629dbf8d0471cc91ef, - limb1: 0x938c8cb485f492dd73cc41cc, - limb2: 0x3cd1c88fb6ccbad0, + limb0: 0x8140e002e94c4fdd32a1be9b, + limb1: 0xb1a45ec6d91f492d09eb5c77, + limb2: 0x9430a17bbfd54f70, limb3: 0x0 }, u384 { - limb0: 0xc21e9920c57e514f311dd8ed, - limb1: 0x3477a13e9570b700353866d2, - limb2: 0xbf4df8d2034d66b6, + limb0: 0xc994c1711a3209ecc245b641, + limb1: 0x9b4c674514ddfd96b07cb41d, + limb2: 0x18423147198fae0e, limb3: 0x0 }, u384 { - limb0: 0xc876111a612e240115551e37, - limb1: 0x41a646b719a910250233d426, - limb2: 0x8f52011edacc552, + limb0: 0x1745cacc491e088e6fb8dfab, + limb1: 0x8972787278d399b0f0db3d1f, + limb2: 0xb266c7000a28bbe3, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xfc5febef5515e3c243b0d9c8, - limb1: 0x59207f838b4245bf0649d3ef, - limb2: 0xd0add95d8cd77a09, + limb0: 0x7d19807f00ac1eaafe7ca799, + limb1: 0x7d64be460475730e08f34b96, + limb2: 0xf7cf23b900d4223c, limb3: 0x0 }, u384 { - limb0: 0x8f4f5bc761742e8f471d86f6, - limb1: 0x12458a79413def3e310bdc86, - limb2: 0x4ea305e223a5b5e5, + limb0: 0x34318d39091925915459a962, + limb1: 0xb6e909f3a393e07f1a536f9d, + limb2: 0xc2b6464849bfc56e, limb3: 0x0 }, u384 { - limb0: 0x6b998b7109bb7b7de5bdb1d0, - limb1: 0xf10d238a147b969b77c071c3, - limb2: 0xf3a0e4e11ccb53df, + limb0: 0x5bc07c3aca4f2ec561c33205, + limb1: 0x36e2a1920b040c8491fc0b0a, + limb2: 0x5e714a818bfa6f6a, limb3: 0x0 }, u384 { - limb0: 0xde31a89a86b3b8ca1303e37f, - limb1: 0xcf2a161ab70ddf8190fe0dec, - limb2: 0x10c44cfb75bdec99, + limb0: 0xdc8e6f2fea3ff2d3177531ec, + limb1: 0x7ec0805a674d6ebca7d96394, + limb2: 0x50515f79053f3888, limb3: 0x0 }, u384 { - limb0: 0xf98f2fb6fd579965d4f17554, - limb1: 0x6762a2f68f3fe461e7716752, - limb2: 0x1b0d604e9e6e6918, + limb0: 0x6736f22cf344ae39c7f03972, + limb1: 0x6b33a799ed621645e23f3068, + limb2: 0xaa3207d583b526eb, limb3: 0x0 }, u384 { - limb0: 0x8e30b8d78b023e80f223313a, - limb1: 0x2b2322b948cada0c041ede79, - limb2: 0x84ac0ce8d37946b0, + limb0: 0x97c08c6d74aede858fbcbb07, + limb1: 0x9e05bb31ac131710184435cb, + limb2: 0x23b43a7945468578, limb3: 0x0 }, u384 { - limb0: 0xb2b2e238fa90e841d93536c, - limb1: 0x25386ded167f009ee348a370, - limb2: 0xd955ebb283cb4ad6, + limb0: 0x59bd8aeb31c26c6f429b43b8, + limb1: 0x1f71bd01ff0bfb19de978ade, + limb2: 0xd0f3c9612fda2aff, limb3: 0x0 }, u384 { - limb0: 0x279cc13901285c6835cfa791, - limb1: 0xbeffc871c8a1d50252eaf655, - limb2: 0x9ee98ee42c14759f, + limb0: 0x43ed0066869b1be8221bca61, + limb1: 0xa0e8bf83ec8978b39feddc6d, + limb2: 0x157932d352541978, limb3: 0x0 }, u384 { - limb0: 0x668351f3debf1ab57b02d62f, - limb1: 0x1b3c8cbbeab1bbf1d21ae332, - limb2: 0xbd2ffb3f5608b26a, + limb0: 0x6c0ec9d28e35ba12dd318e73, + limb1: 0x31908b27fe92154c0334a429, + limb2: 0x29cf2d375298338f, limb3: 0x0 }, u384 { - limb0: 0xbfa3d4ec0ab4f928a60dce2, - limb1: 0xd3d24e51798a377069a81ce8, - limb2: 0x41a582819c676a3a, + limb0: 0x303d9015cbd88bbe55290c67, + limb1: 0xbf9354c43ed1186fa112ce5, + limb2: 0x3e850902ff448f2a, limb3: 0x0 }, u384 { - limb0: 0xe26211f0d6b534002bda1fbb, - limb1: 0x1cf5f2e7014c7abf1334ee39, - limb2: 0x746b74fbd366a831, + limb0: 0xeda081dee0046907ba22682c, + limb1: 0x1b4da803ba28757468232c42, + limb2: 0xcd998194bb6c6f7, limb3: 0x0 }, u384 { - limb0: 0xea7876cd6aa2253ae144263f, - limb1: 0xe51cde823203b2d3a3e0b184, - limb2: 0xb4457ddbe738154d, + limb0: 0xbb412b7e8931dd73ce95547a, + limb1: 0x579b897099cc1840a7926e74, + limb2: 0x71bdb3625aa751d7, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -43422,9 +43443,9 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0xc1e568104884a064a689978c, - limb1: 0x24c08a2fb4172cb54b81fb73, - limb2: 0xdd3d4ad55ad85fb5, + limb0: 0x5932dc18e45c64f097ea0222, + limb1: 0x980760beac239f57985decf8, + limb2: 0x8e6263dd32fb225d, limb3: 0x0 }, u384 { @@ -43437,15 +43458,15 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0xd0c8e1822a6dc053d0e93168, - limb1: 0x4cded343cab54c993fe9b094, - limb2: 0x695b477c7efaf0e2, + limb0: 0x678914f457547baa2733a1b8, + limb1: 0xf7eb711588c3154d9d9ecbe6, + limb2: 0x9104b4df1f906e34, limb3: 0x0 }, u384 { - limb0: 0xb6df1e36dce40898f0f2e23a, - limb1: 0xe26e249865480ebb32372b46, - limb2: 0x29278cc63d552138, + limb0: 0x248946c1a225d1735a280fc2, + limb1: 0x6308374cddcc471fed31d071, + limb2: 0x7af8ddf826cdd934, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -43453,49 +43474,49 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xb2e46871101fa110f766e4ba, - limb1: 0x4e4bc5ff58c873fba78d67e9, - limb2: 0x51fec88bad13d3b5, + limb0: 0xf0531aff4416d14d7b322332, + limb1: 0xe19984036c7e006b8a54720c, + limb2: 0x5bf307a0334f1057, limb3: 0x0 }, u384 { - limb0: 0x3bac5cdcf73015db93da8ac1, - limb1: 0x9592f6e36dfbdace0b84a5ff, - limb2: 0x394b5c31acfab339, + limb0: 0x8d3c26f6b9398fbd850ab9d4, + limb1: 0x99f0913c2ae769d0d9277d62, + limb2: 0xf0cd384c468160ae, limb3: 0x0 }, u384 { - limb0: 0x2fe484c65bcd0ef99275414c, - limb1: 0x6b10a59dc6e3be98154c62d4, - limb2: 0x51d7c3155b13c092, + limb0: 0xf2caa2926a01bbf3ae015678, + limb1: 0x763ae045a690a75b5d7943c8, + limb2: 0x30177e22a572197a, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xb57e2a8f2900424cb660617a, - limb1: 0x1a17c6da8af51830bf63d411, - limb2: 0xe17ef46778dc9630, + limb0: 0xd4bf92ae634f61aa1269777b, + limb1: 0xc7701796bd55951f4f57934c, + limb2: 0xf720f219dcf30372, limb3: 0x0 }, u384 { - limb0: 0x19d3800a3c3c2f96a43367, - limb1: 0x3103002ac4f8671e5f822eef, - limb2: 0x2014d96bad53e88e, + limb0: 0xffc0ef4b6f08ba2a771879c1, + limb1: 0xb539831a1095f1df7c5cb317, + limb2: 0x5cce11c90fa0f06e, limb3: 0x0 }, u384 { limb0: 0x7, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xd0c8e1822a6dc053d0e93168, - limb1: 0x4cded343cab54c993fe9b094, - limb2: 0x695b477c7efaf0e2, + limb0: 0x678914f457547baa2733a1b8, + limb1: 0xf7eb711588c3154d9d9ecbe6, + limb2: 0x9104b4df1f906e34, limb3: 0x0 }, u384 { - limb0: 0xb6df1e36dce40898f0f2e23a, - limb1: 0xe26e249865480ebb32372b46, - limb2: 0x29278cc63d552138, + limb0: 0x248946c1a225d1735a280fc2, + limb1: 0x6308374cddcc471fed31d071, + limb2: 0x7af8ddf826cdd934, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -43505,22 +43526,16 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0x40d27b596e5fa8fc65828086, - limb1: 0xb078e3d886968096624ec39a, - limb2: 0x1a6a61c72317877d, + limb0: 0xe2661d3502db82ff2e661806, + limb1: 0x7243cf3c0c123371c0cfb88b, + limb2: 0x5f233a24277e59d7, limb3: 0x0 }, g_rhs_sqrt: array![ u384 { - limb0: 0x4d33ce96b0a4ce4c33443ea0, - limb1: 0xfb5bce2b1c42b92ceb33427b, - limb2: 0x417270a34f3edb0a, - limb3: 0x0 - }, - u384 { - limb0: 0x47389be96a7f0d03fcf5861, - limb1: 0xcb55b427adc4258d197578b3, - limb2: 0x511213c6cb0b2833, + limb0: 0x7d0e9ca49934770c29aab160, + limb1: 0x747574494eb36d2d8b5fbb5b, + limb2: 0x361822f24f77bbbf, limb3: 0x0 } ], @@ -43531,15 +43546,15 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0xa2592b3434339b6cbd71529, - limb1: 0xa37a95c24aea5b171f50092c, - limb2: 0xf9b87a648979478, + limb0: 0xc41c46535ddf682b81f7ed96, + limb1: 0x7a2b60eda451df95195b2c08, + limb2: 0x89187d4ecec67667, limb3: 0x0 }, y: u384 { - limb0: 0x51364f0e90af9dc0bd579a, - limb1: 0x62f8a7470dca544409d30d0d, - limb2: 0xea7aedc47b5375db, + limb0: 0x694ca36c1387ccc7bd19966b, + limb1: 0xc4e899c30831a836f4cb556e, + limb2: 0x2dc471ccb76731d4, limb3: 0x0 } } @@ -43552,15 +43567,15 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0x3a95d9e2b97b58e244525426, - limb1: 0x9313f8c963b79e4645a6959b, - limb2: 0x5028a7433599d9b1, + limb0: 0x7238f02b9f20e09c2181a557, + limb1: 0x2cedcc5b0be371c337fd7e9e, + limb2: 0x41f3bbeb280fe8a2, limb3: 0x0 }, y: u384 { - limb0: 0xc6953f4e0cbc7ecc13e09a79, - limb1: 0x9bd28b08bd5bb73c03ed7080, - limb2: 0x3d04a9d421885451, + limb0: 0xf046f8cd6e5a75fca71dd19b, + limb1: 0x892b4613ef5c58df4ef692a4, + limb2: 0x7527fa36f5738847, limb3: 0x0 } }, @@ -43568,7 +43583,7 @@ mod msm_tests { .span(); let scalars = array![ u256 { - low: 0xd96ee437106dfa14543bb7631a14383c, high: 0x3f7d0adf3546b6674b36dcb1d2e33dc + low: 0xb4862b21fb97d43588561712e8e5216a, high: 0x4b3e865e6f4590b9a164106cf6a659e }, ] .span(); @@ -43576,168 +43591,168 @@ mod msm_tests { array![ ( array![ + 0x0, -0x1, - 0x1, - -0x1, - 0x1, + 0x0, 0x0, 0x1, 0x1, - 0x0, 0x1, 0x1, - -0x1, - -0x1, - 0x0, 0x1, 0x0, + 0x0, 0x1, -0x1, 0x0, 0x0, - 0x0, 0x1, 0x1, 0x1, - -0x1, - -0x1, - 0x1, - -0x1, 0x0, - 0x0, - 0x1, 0x1, 0x1, - -0x1, 0x0, -0x1, + 0x1, + 0x1, 0x0, + -0x1, 0x0, 0x0, + -0x1, + 0x1, + 0x1, 0x1, - 0x0, 0x0, -0x1, + 0x1, 0x0, + 0x1, 0x0, -0x1, -0x1, + 0x1, + 0x1, + 0x1, 0x0, + -0x1, 0x1, 0x1, 0x0, -0x1, + 0x0, + -0x1, -0x1, 0x0, - 0x1, -0x1, 0x1, 0x0, - -0x1, - -0x1, 0x1, 0x0, 0x1, - -0x1, - -0x1, - -0x1, + 0x0, + 0x0, + 0x0, 0x0, 0x1, 0x0, - -0x1, + 0x0, 0x1, 0x1, 0x0, + 0x0, + -0x1, 0x1, -0x1, - 0x0, + 0x1, -0x1, -0x1, 0x1, 0x0, - 0x0, + 0x1, -0x1, -0x1, ] .span(), array![ - -0x1, - -0x1, 0x1, 0x1, 0x1, 0x1, 0x0, - -0x1, - -0x1, - -0x1, 0x0, 0x1, 0x1, -0x1, + -0x1, + 0x1, + 0x1, 0x0, + -0x1, + -0x1, 0x0, + -0x1, + 0x1, 0x1, - 0x0, 0x1, + -0x1, + -0x1, + -0x1, 0x1, 0x1, -0x1, + 0x0, 0x1, 0x0, 0x0, - 0x1, - 0x1, + -0x1, 0x0, + 0x0, + 0x1, 0x1, -0x1, 0x0, + -0x1, 0x1, - 0x0, - 0x0, 0x1, 0x1, - 0x0, -0x1, + 0x1, 0x0, 0x0, - 0x0, - 0x0, - 0x1, -0x1, 0x0, 0x1, - 0x0, - -0x1, 0x1, + -0x1, + -0x1, 0x0, -0x1, + -0x1, 0x0, - 0x1, 0x0, - 0x1, - 0x1, - 0x1, 0x0, + -0x1, + -0x1, + -0x1, + 0x0, + -0x1, 0x0, + -0x1, + -0x1, 0x1, 0x1, - 0x0, -0x1, -0x1, -0x1, 0x1, - 0x0, - 0x0, + -0x1, + 0x1, 0x1, - 0x0, 0x1, - 0x0, - 0x0, - 0x0, -0x1, 0x0, - 0x0, -0x1, ] .span() @@ -43748,57 +43763,57 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0x6bf00e943f3add27112513d0, - limb1: 0x121e741080747c254893663e, - limb2: 0xc3e49aaf03b95cc, + limb0: 0xed54fd36c0f93ccf4d6a30b3, + limb1: 0x6eafafb1e71bee846a3b1813, + limb2: 0x29b44c4747a67a39, limb3: 0x0 }, y: u384 { - limb0: 0xf103ad828d82b0ecdfb4cfa9, - limb1: 0x77597c854eea57e6234920ab, - limb2: 0xa821c00f62e62d8, + limb0: 0x6589e76cd63ba451cc0e48dd, + limb1: 0x1149d78c68779402516e0e6, + limb2: 0x408a34b791a63729, limb3: 0x0 } }, Q_high: G1Point { x: u384 { - limb0: 0xaa284d5c53f9106d1d746fd4, - limb1: 0x264ab04da34d9776a2bcd9a, - limb2: 0x2dfb14cf12397553, + limb0: 0x4bab4cd06d72ec2ae5779c53, + limb1: 0x6917274b2e403eaafa2dc973, + limb2: 0x1ae7bef91471b1cb, limb3: 0x0 }, y: u384 { - limb0: 0xec162d6a431d51f3c58116c6, - limb1: 0xedea2c9557e2b704488728cc, - limb2: 0x6413d50d8b657871, + limb0: 0x4b792b778619b6b114598727, + limb1: 0x96cc798870f6db14e00e8283, + limb2: 0x7db3f78a00beff4e, limb3: 0x0 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0x58abcb83d31b56c01b4cf05, - limb1: 0xc75f68ad18b796ab2383ad29, - limb2: 0xd8e513ad88fc967, + limb0: 0x823e8e165750ba17e480997f, + limb1: 0xbb32cc0e2bc05ae557dcd32a, + limb2: 0x2fd96b567f8ba250, limb3: 0x0 }, y: u384 { - limb0: 0x46a4f6553b2a514134dd58d0, - limb1: 0xa2292378e8aff3833615112e, - limb2: 0x37a1df22922f3834, + limb0: 0xe5a30d3059100da5bb4be48a, + limb1: 0xa71bb7e1fc820afa256f3948, + limb2: 0x5c0d0cfb29d4bb30, limb3: 0x0 } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0x61309b12a353dd0912882ddf, - limb1: 0x92ca8dbd6aae23e0e83e5c4, - limb2: 0x784e7f13092aa942, + limb0: 0x9e6cd62f31342144ade83500, + limb1: 0x23da92a699fedb2895db73ab, + limb2: 0x25da37d0496146a5, limb3: 0x0 }, u384 { - limb0: 0xf9103665621168edc8803f10, - limb1: 0xffffffffffffffff8f2ee39b, + limb0: 0x6af0d3de586ecc0c91590c67, + limb1: 0xffffffffffffffff7cb906fa, limb2: 0x3fffffffffffffff, limb3: 0x0 } @@ -43806,15 +43821,15 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0xdc6e2be886ed81838e5d5ec0, - limb1: 0x79f38d2ed28816544f4e3957, - limb2: 0x43459117e10208d2, + limb0: 0x622bcc23485551cfa66969a0, + limb1: 0x6915818f15976bcd7d087646, + limb2: 0x44f432370a2fe40c, limb3: 0x0 }, u384 { - limb0: 0x597a17890749c9f6aa8897f7, - limb1: 0x5acd93261bd3e59471c60426, - limb2: 0x23990f11da2a9082, + limb0: 0xa072129d9fe5e294911429e3, + limb1: 0x646283f30d009fb85dc7694d, + limb2: 0x1457f7cd90499d24, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -43822,54 +43837,54 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x297f23918a9b74b6f7524cf1, - limb1: 0x986ea6883a98a92c0dc38da0, - limb2: 0x94f96d5f1711da5, + limb0: 0x9b2451aa7915a694ede8521e, + limb1: 0xbb823c0f401b4ff70501d452, + limb2: 0x321f2579bc28e707, limb3: 0x0 }, u384 { - limb0: 0xf0ad70803fd7165ef78a4a51, - limb1: 0xefa4d7f9c0cb8b98060090dc, - limb2: 0x40bc3585566f8762, + limb0: 0x87c1c9dc91d2e1271e22080f, + limb1: 0x9dc4ec2fffd5a8e8d38f608b, + limb2: 0x37fc01b10ada924e, limb3: 0x0 }, u384 { - limb0: 0x289ae991109941dfa16d270, - limb1: 0xeeec15451ae6db3de38c96b1, - limb2: 0x7841411f66ea6c74, + limb0: 0x1b322843f1ef3102eea7b856, + limb1: 0x8693ec933c49a829f5ccde7a, + limb2: 0x7316859148338713, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x2fe9983418fdf62d2a86ef6d, - limb1: 0xc0e34d6f7dc20b23cf3ee4de, - limb2: 0x6e52daa481a12d0b, + limb0: 0x19d3bb8529e2cf036b28205d, + limb1: 0x1db7721c7cf483077e8670c7, + limb2: 0x2f2ca0236c443fa2, limb3: 0x0 }, u384 { - limb0: 0xfb20b5ef0490282976c93bb8, - limb1: 0x21118c3cbfe2f8518d14bdeb, - limb2: 0x61b92450eaf54054, + limb0: 0x1b545d4ecadeb4906c695253, + limb1: 0x4d1c784e850551388a2df4ef, + limb2: 0x15c60bbb5b1faa5f, limb3: 0x0 }, u384 { - limb0: 0x7b4af9648412afef2a210993, - limb1: 0x18a384f495674b309c3a6e1e, - limb2: 0x5e0c792e0433fdce, + limb0: 0xee7c91b53edbf7fb2b61a655, + limb1: 0x9a3a4833b8cbb3a0d82d8d68, + limb2: 0x7151639e767ec64e, limb3: 0x0 }, u384 { - limb0: 0xe91356e0335f631287197600, - limb1: 0xab8b6e3c3403542abb06efb4, - limb2: 0x20943deb86bbc7b8, + limb0: 0x6ed0f71af4c7335e9f2580e0, + limb1: 0x9aad629c7712a9a3e8c12ca3, + limb2: 0x2242df0aafe9a2f2, limb3: 0x0 }, u384 { - limb0: 0x597a17890749c9f6aa8897f7, - limb1: 0x5acd93261bd3e59471c60426, - limb2: 0x23990f11da2a9082, + limb0: 0xa072129d9fe5e294911429e3, + limb1: 0x646283f30d009fb85dc7694d, + limb2: 0x1457f7cd90499d24, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -43879,14 +43894,14 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0xf0364ffa42db6824430b89e3, - limb1: 0xd53c5b85e3482a96948d5885, - limb2: 0x607ce7bfd31cf3dc, + limb0: 0x75b341f180ff92cfef05898c, + limb1: 0xcbcf65d0dafb8a4e49e786c3, + limb2: 0x39066e2d51cc2ac0, limb3: 0x0 }, u384 { - limb0: 0x1b7217247c6f3ac0a6f5c352, - limb1: 0xfffffffffffffffffe04a048, + limb0: 0xff7de0283482a56bd200b850, + limb1: 0xfffffffffffffffffdc4e761, limb2: 0x3fffffffffffffff, limb3: 0x0 } @@ -43894,15 +43909,15 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0x7e34befeffcc186e6eb98517, - limb1: 0xddca6e1482939ea293484b9e, - limb2: 0x1aa48c7c0732923d, + limb0: 0x609a08c81a6ad00032f88446, + limb1: 0x2ae9c751a9d28c6d6f740dd2, + limb2: 0x45fa3a0ebfc5c2e0, limb3: 0x0 }, u384 { - limb0: 0x1b41d8c0f28b96b09e393bf3, - limb1: 0x6a875c31c2138842502d9cca, - limb2: 0x1dc43edb82cb0fb, + limb0: 0x421bc303f36c3338f906be43, + limb1: 0x69fb0c59c5dc4f91cdd4b7ee, + limb2: 0x2324851bc37e6592, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -43910,54 +43925,54 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x838f863405d775fcafc1cf77, - limb1: 0x26f9c37095e09eb56f42549f, - limb2: 0x1621766db057e0df, + limb0: 0xabaee1552945c65aba5bb6df, + limb1: 0x9128fddcb08b42c549d9a8e1, + limb2: 0x5f0d7e5009235fd1, limb3: 0x0 }, u384 { - limb0: 0xeadb8df2f92f4dc8e9379e13, - limb1: 0x2f62953ad4ea9ca2fdda03ac, - limb2: 0xb3139493cb5f4bb, + limb0: 0xb65742cc7a279d96601b0944, + limb1: 0xb37495bc6cc9b3f2d799d8a3, + limb2: 0x38077172272e260f, limb3: 0x0 }, u384 { - limb0: 0x28c0731ede1abd71391d7557, - limb1: 0x6cb9330b427dc7950f5ce40e, - limb2: 0x35ffe8abe9127c4c, + limb0: 0x153b2463d9e29612e1fce321, + limb1: 0x5424291841e21ac2fb1a562f, + limb2: 0x6591a78874708955, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x37bd9d782a35f1c02a51e3d, - limb1: 0x2e979fa9c76ab10a783139cd, - limb2: 0x44c747cc534ed050, + limb0: 0x4964dd477dd6834ee7b85472, + limb1: 0x90d458ac8b3316c323f4e8, + limb2: 0x7ab618c20ff63cd3, limb3: 0x0 }, u384 { - limb0: 0xa31ce1a5415104a56880e25e, - limb1: 0xe087549d28e68076ce4cb157, - limb2: 0x360f11ba5f4a7fe4, + limb0: 0x6070503a780d3103522f193c, + limb1: 0xbd0197e3d031f4b1817dffbd, + limb2: 0x56deb49d30381805, limb3: 0x0 }, u384 { - limb0: 0xe866f1eceaf062b84b0d8967, - limb1: 0x6245d3aa93437514008afeda, - limb2: 0x45f18cb43fbf8e8f, + limb0: 0x2e1f4fc388868f950f298366, + limb1: 0x26e5ee59f9b4e62326019f48, + limb2: 0x619a782f0f647e4c, limb3: 0x0 }, u384 { - limb0: 0x8ad9e9f6ac3df9fd67759c44, - limb1: 0xf624f21e40edc78ff0101fb, - limb2: 0x77f3394facec5124, + limb0: 0x6d3f33bfc6dcb18f2bb49b86, + limb1: 0x5c81a85f0b4dca43db2cc42f, + limb2: 0x2348e6e2657f81c6, limb3: 0x0 }, u384 { - limb0: 0x1b41d8c0f28b96b09e393bf3, - limb1: 0x6a875c31c2138842502d9cca, - limb2: 0x1dc43edb82cb0fb, + limb0: 0x421bc303f36c3338f906be43, + limb1: 0x69fb0c59c5dc4f91cdd4b7ee, + limb2: 0x2324851bc37e6592, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -43967,9 +43982,9 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0xa356e3b8c813e7c20162bc51, - limb1: 0x4b849a092333ef89fc8c11a2, - limb2: 0x32d056e659de1c0a, + limb0: 0x1db607a1ac5a7977ff218817, + limb1: 0x38666ae211779e5f22fcbf4c, + limb2: 0xf1c93991d80821, limb3: 0x0 }, u384 { @@ -43982,15 +43997,15 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0x68faa2cbfed91e80887a3c4e, - limb1: 0x22ab3d331a197e3eb3350a8a, - limb2: 0x4427b05d4385900f, + limb0: 0xc3aa3d7311cfc5d134aaaf3a, + limb1: 0x4b22d2c335b475bf70468d44, + limb2: 0x20d14c37535bf1e1, limb3: 0x0 }, u384 { - limb0: 0x504cf5eb6ed53a26e0d6c114, - limb1: 0x363bec4e0d138fdd7250853c, - limb2: 0x447699f61536c145, + limb0: 0x321625193b3c59bd3607ca1b, + limb1: 0xdbb60ca6a5ff666fadf56362, + limb2: 0x353ed5b06c02abe3, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -43998,54 +44013,54 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x497fa31acb60b1fa6f5cd00a, - limb1: 0x2db836b4e00a6f138e66106b, - limb2: 0x241f636d64b24340, + limb0: 0x3519544b9c4a019112377196, + limb1: 0x7de5b60e3e3e46dc0e3357a2, + limb2: 0x7dbcf6d6c56e0674, limb3: 0x0 }, u384 { - limb0: 0x32d9080cf280168b6fcbf2de, - limb1: 0x137706e70cab917867bea4cb, - limb2: 0xf50d118af60c7d8, + limb0: 0xb6eafbf2c0441d2064b8b51b, + limb1: 0xda155287d2394eae8805793e, + limb2: 0x155731c291a3abd2, limb3: 0x0 }, u384 { - limb0: 0x79d8bcdcb64b9a7b5031c26b, - limb1: 0x81f1159d4f070d529ed418ee, - limb2: 0x57043af107998b57, + limb0: 0xf26d8ffdc5b2466d83cfecf6, + limb1: 0x7f894e21a6cf99b20cc9add2, + limb2: 0x72c52858c8eac8b9, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x6bf2a922c5c6073cffa1494f, - limb1: 0x2ac344717382146fa33338e9, - limb2: 0xcee6ca0b5493e, + limb0: 0x1fe82767ae756b0c4c1bdadf, + limb1: 0x2f65f9a58a9d60cac50adde5, + limb2: 0x31228bab7076a2c, limb3: 0x0 }, u384 { - limb0: 0x9bd43e7a59b07444051e1f9f, - limb1: 0x99f3b5c3948621ca8b391763, - limb2: 0x72a1e68f56e2b2d0, + limb0: 0xb502fdc866583c616069111f, + limb1: 0xdb62027f6f7a6ffaaf70bd9f, + limb2: 0x7b45cfe38ad7e5fe, limb3: 0x0 }, u384 { - limb0: 0xa90b8fbac6039c6be53e2674, - limb1: 0x3e7fcb5eb3b6bd597af539e6, - limb2: 0x7979d966a01cdc3e, + limb0: 0x652208d49d00909664bbf9b6, + limb1: 0xcae7bb6d7ab65709be0ce7af, + limb2: 0x18f83334fd5b2339, limb3: 0x0 }, u384 { - limb0: 0x759fcdc3ab4b000f8136538e, - limb1: 0x54431e407b94bc151eedc0e7, - limb2: 0x21765d30e93f4ef5, + limb0: 0xd04f686abe41a7602d66c667, + limb1: 0x7cbab3d0972fb395dbff43a1, + limb2: 0x7e1ff90af915b0c7, limb3: 0x0 }, u384 { - limb0: 0x504cf5eb6ed53a26e0d6c114, - limb1: 0x363bec4e0d138fdd7250853c, - limb2: 0x447699f61536c145, + limb0: 0x321625193b3c59bd3607ca1b, + limb1: 0xdbb60ca6a5ff666fadf56362, + limb2: 0x353ed5b06c02abe3, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -44055,12 +44070,25 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0x1146ab74653d2938f0fa3019, - limb1: 0x7a2831156f47c5e68eff26e8, - limb2: 0x262f1376d7449f59, + limb0: 0xbc35c846ba2b1fe9092510ce, + limb1: 0x6835b9c083ec9a5499008c68, + limb2: 0x3130a1bb2c4fff0e, limb3: 0x0 }, - g_rhs_sqrt: array![], + g_rhs_sqrt: array![ + u384 { + limb0: 0xc127529471dfdd86e6abe59b, + limb1: 0xd86ff0f515a9f5be2b2abdcd, + limb2: 0x248c30b99ded43d2, + limb3: 0x0 + }, + u384 { + limb0: 0x1e8e591787ad382a30e9d02b, + limb1: 0xb361c3f40fcea04eb3822013, + limb2: 0x3679e35df0e6f5d7, + limb3: 0x0 + } + ], }; let res = msm_g1( points, scalars, scalars_digits_decompositions, msm_hint, derive_point_from_x_hint, 4 @@ -44068,15 +44096,15 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0x7377b6db3a85cefd56fab74e, - limb1: 0xeee7bf849a0232d4e20d7599, - limb2: 0x5e39ec516279aa9b, + limb0: 0x62c2b89a3152e22243cf864d, + limb1: 0xaf83913cf31609fd7b4f9a32, + limb2: 0x6da9a48b077c3954, limb3: 0x0 }, y: u384 { - limb0: 0x541ac5b1eabaf89370934303, - limb1: 0x6dc79cac482597b8d3113c2, - limb2: 0x5094e8dfab8ab06f, + limb0: 0xa54703c64365ab4373eae904, + limb1: 0x87e47f46101c003371e14338, + limb2: 0x462e50d88b5b5c17, limb3: 0x0 } } @@ -44089,29 +44117,29 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0x293b0686026c054494218408, - limb1: 0x67556c5424fa65130a62e84b, - limb2: 0x7747e9e924cfef6e, + limb0: 0x7238f02b9f20e09c2181a557, + limb1: 0x2cedcc5b0be371c337fd7e9e, + limb2: 0x41f3bbeb280fe8a2, limb3: 0x0 }, y: u384 { - limb0: 0x8bd42ed649defc1143649d7f, - limb1: 0xa863f8de4df3173157ec9c37, - limb2: 0x6a25f946da1d09e0, + limb0: 0xf046f8cd6e5a75fca71dd19b, + limb1: 0x892b4613ef5c58df4ef692a4, + limb2: 0x7527fa36f5738847, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x9ad6d6847c675db29cb9f845, - limb1: 0xca8251cb8ef2b16b901b6306, - limb2: 0x78f4c9540bbc8e9d, + limb0: 0x82e4a33f8e4e5881e791d86b, + limb1: 0xbcb062435ae8ec5fdaeac4bf, + limb2: 0x179e1bae9e0f9f34, limb3: 0x0 }, y: u384 { - limb0: 0x74d7d5dcd42d3d8398f01d55, - limb1: 0xbf1d55e9c456148683694844, - limb2: 0x297374471749207b, + limb0: 0x19657783ba5660e255c21849, + limb1: 0x7ed7474bcea7551fc71e46bc, + limb2: 0x596c0a76b75f4756, limb3: 0x0 } }, @@ -44119,10 +44147,10 @@ mod msm_tests { .span(); let scalars = array![ u256 { - low: 0xbe35ea23d80cd80e72098a2e69bf0c1c, high: 0xa8cf26f3d23a37bdc17e854b15b1d2a + low: 0x12e0c8b2bad640fb19488dec4f65d4d9, high: 0xa90f9c3af19922ad9b8a714e61a441c }, u256 { - low: 0xace5b79c0e4f4d3994f437c093fef669, high: 0x88771dc89f7c06c62324ed5381dd360 + low: 0xeb2083e6ce164dba0ff18e0242af9fc3, high: 0x2fc154703983ca8ea7e9d498c778ea6 }, ] .span(); @@ -44130,163 +44158,161 @@ mod msm_tests { array![ ( array![ + 0x0, + -0x1, + 0x0, + -0x1, -0x1, 0x1, - 0x1, - 0x1, - 0x1, + -0x1, + -0x1, -0x1, 0x1, - 0x0, -0x1, 0x0, - 0x0, - 0x0, - 0x1, + -0x1, + -0x1, + -0x1, 0x0, 0x1, -0x1, - 0x0, 0x1, -0x1, - 0x0, 0x1, 0x0, -0x1, + -0x1, + 0x1, 0x1, - 0x0, - 0x0, 0x1, -0x1, 0x0, - 0x1, + 0x0, -0x1, 0x1, + 0x1, -0x1, -0x1, - 0x1, - 0x0, -0x1, - 0x1, -0x1, 0x1, 0x1, - -0x1, + 0x1, 0x0, - -0x1, 0x0, + -0x1, 0x0, 0x1, 0x0, - 0x1, - 0x1, - -0x1, - -0x1, + 0x0, + 0x0, 0x0, 0x0, 0x1, -0x1, 0x0, -0x1, + 0x0, 0x1, + 0x0, 0x1, 0x0, 0x0, - -0x1, - 0x1, 0x0, + 0x1, 0x0, + -0x1, 0x0, -0x1, 0x1, 0x1, - -0x1, - 0x0, - 0x0, 0x0, + 0x1, -0x1, + 0x0, + 0x1, + 0x1, 0x1, 0x1, -0x1, - 0x0, 0x1, -0x1, -0x1, ] .span(), array![ + 0x0, + -0x1, + -0x1, + -0x1, 0x1, 0x1, - 0x1, + -0x1, 0x1, 0x1, 0x0, - -0x1, + 0x0, + 0x1, 0x0, 0x0, 0x0, + 0x1, 0x0, 0x1, 0x1, + 0x1, -0x1, + 0x1, -0x1, 0x1, + -0x1, + 0x0, 0x0, -0x1, -0x1, - 0x1, - 0x1, - 0x0, - 0x1, 0x0, - 0x1, 0x0, 0x1, 0x0, - 0x1, - 0x1, -0x1, -0x1, - 0x0, - 0x1, - 0x0, 0x1, + -0x1, 0x1, + -0x1, 0x0, 0x0, - 0x1, -0x1, -0x1, 0x1, - -0x1, 0x0, -0x1, 0x0, + 0x1, 0x0, - 0x0, + 0x1, + 0x1, -0x1, + -0x1, + 0x0, 0x0, 0x0, -0x1, - 0x1, - 0x1, 0x0, 0x1, 0x0, - -0x1, + 0x0, + 0x0, 0x1, 0x1, -0x1, 0x1, 0x1, - 0x0, - 0x1, - -0x1, -0x1, -0x1, + 0x0, 0x1, -0x1, - 0x1, -0x1, -0x1, 0x0, @@ -44299,106 +44325,103 @@ mod msm_tests { ), ( array![ - 0x0, + -0x1, 0x1, + -0x1, 0x1, + -0x1, 0x0, - 0x1, 0x0, - 0x1, - 0x1, -0x1, -0x1, + -0x1, + 0x1, + 0x0, 0x0, -0x1, + -0x1, 0x1, 0x1, 0x1, - 0x0, + -0x1, 0x1, + -0x1, 0x1, - 0x0, 0x1, -0x1, 0x0, - -0x1, + 0x1, 0x0, 0x0, + -0x1, 0x0, + -0x1, + -0x1, 0x1, + 0x0, 0x1, - -0x1, 0x1, + -0x1, 0x1, + 0x0, -0x1, -0x1, -0x1, -0x1, - 0x0, -0x1, - 0x1, -0x1, 0x0, - 0x1, - 0x1, - 0x1, - 0x1, 0x0, 0x0, - -0x1, 0x0, 0x0, 0x1, - 0x0, -0x1, - -0x1, - 0x0, - 0x1, 0x1, 0x0, + -0x1, 0x0, 0x0, - -0x1, - -0x1, + 0x1, 0x0, 0x0, - -0x1, + 0x1, 0x1, -0x1, -0x1, - 0x0, + 0x1, 0x1, 0x0, + -0x1, 0x0, -0x1, + 0x0, + 0x0, 0x1, -0x1, -0x1, + -0x1, 0x0, 0x0, - 0x0, - -0x1, 0x1, + 0x0, -0x1, -0x1, ] .span(), array![ - -0x1, - 0x0, - -0x1, - -0x1, - -0x1, - -0x1, -0x1, 0x0, 0x0, + -0x1, 0x1, + 0x1, + 0x0, 0x0, -0x1, 0x1, 0x1, - -0x1, + 0x0, -0x1, 0x0, -0x1, @@ -44409,60 +44432,62 @@ mod msm_tests { -0x1, 0x1, 0x0, - 0x0, + 0x1, 0x1, 0x1, -0x1, - 0x0, + -0x1, + -0x1, 0x1, -0x1, 0x1, - 0x0, + 0x1, 0x1, -0x1, 0x1, - 0x0, 0x1, 0x0, 0x1, + -0x1, 0x1, - 0x1, + -0x1, + -0x1, + -0x1, 0x1, 0x1, -0x1, 0x1, - 0x0, -0x1, 0x1, 0x0, - -0x1, + 0x0, 0x1, -0x1, 0x1, - 0x1, + -0x1, + -0x1, 0x0, 0x0, + 0x1, + 0x1, + 0x1, -0x1, 0x1, + 0x1, 0x0, 0x0, - 0x0, - 0x0, - 0x1, - 0x1, 0x1, + -0x1, + -0x1, 0x0, 0x1, 0x0, -0x1, + 0x1, -0x1, -0x1, - 0x0, -0x1, -0x1, - 0x0, - 0x1, - 0x1, ] .span() ), @@ -44472,85 +44497,85 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0x6c55ca9a84faeb058d791bea, - limb1: 0x7e0681e146599445661f7ae4, - limb2: 0x6c9b7f62f6b5733e, + limb0: 0xc914e71aaa7e1791530dd4e1, + limb1: 0xa8feb3644ad6c325d1287925, + limb2: 0x7eda4e00093fed5f, limb3: 0x0 }, y: u384 { - limb0: 0xf7121d152ec0ccbd44a548cd, - limb1: 0x65202c3b661a0ae43cef1d85, - limb2: 0x6fac0fb118251c62, + limb0: 0x6cce1abfd8d5791234bdfe9a, + limb1: 0xfbb3da398a17b93c5ae0bb9f, + limb2: 0x411a047603851187, limb3: 0x0 } }, Q_high: G1Point { x: u384 { - limb0: 0xc4282216ba00cd5696407ef6, - limb1: 0xfc5da2daf972296b64e9b972, - limb2: 0x7a6044ad704536a9, + limb0: 0x776498c0ca91f61125748d46, + limb1: 0xe527d9848968f6f8dc9b69a1, + limb2: 0x54af272900e297bb, limb3: 0x0 }, y: u384 { - limb0: 0x799d628b403f65b287f4223e, - limb1: 0x8c3fab5d799eea0c3c7240e3, - limb2: 0x274c8b28601af776, + limb0: 0x9365fb38c1394904031a496d, + limb1: 0x763fba7bed5c8893196fb464, + limb2: 0x2f87558ff89ca03c, limb3: 0x0 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0xed8a5a1e453d6413ab207404, - limb1: 0x594b2d34869d6fada61bf157, - limb2: 0x4472895b754f0189, + limb0: 0x6e1cec2ac2ac763632072d5c, + limb1: 0xf56487f529497eb89fce3e5e, + limb2: 0x2cd0c5cefee9e438, limb3: 0x0 }, y: u384 { - limb0: 0xe764b45eab24ad1ca59c8aeb, - limb1: 0xd581f1b282184215947f6c7e, - limb2: 0x260ca44e3749f25, + limb0: 0x720a6f90ebfe4fd0886ca9b8, + limb1: 0x44f957be94195d5ed04b5251, + limb2: 0xa3c14fc7d58777b, limb3: 0x0 } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0x952e2cdf26b31e757a403f15, - limb1: 0x5d32df4e693790af0cfe7166, - limb2: 0x58cd9f2efba8dee1, + limb0: 0xeb00c8bf96ae4f3e4dea19e8, + limb1: 0x3f71072e83e502a53f61e468, + limb2: 0x5f3fc84056ec37c0, limb3: 0x0 }, u384 { - limb0: 0x4ebfa01561bd0dd5c214d1e7, - limb1: 0x113885fa00b60c5cfc5443d0, - limb2: 0x4fadf507e5343d57, + limb0: 0xc5abce661ef6b2342649b840, + limb1: 0x38f96bd3395e7b3cd69893fc, + limb2: 0x7f610750cf0f2d07, limb3: 0x0 }, u384 { - limb0: 0x791b491d1400ce3dc58a4ebf, - limb1: 0xffffffffffffffff013ecd5f, - limb2: 0x7fffffffffffffff, + limb0: 0x15a697293db0eb3c8beba802, + limb1: 0xffffffffffffffff88e966cf, + limb2: 0x3fffffffffffffff, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0x42a34e961c6b1db347aff3a6, - limb1: 0x779a355c572d6f6f102bd2bf, - limb2: 0x146af3c2415206b2, + limb0: 0xd0ffdeb6c157bf13ca68123d, + limb1: 0xe361bbf4815bca62b9bbd7e7, + limb2: 0x3c65d76817547892, limb3: 0x0 }, u384 { - limb0: 0xae42c556bf60a09fa1dcc879, - limb1: 0x67dcb6d0bccae7109998726e, - limb2: 0x2e8f520fc28891e7, + limb0: 0xa5262d1adfae1845efd86ce4, + limb1: 0xc8bb91fc7247960861766eb9, + limb2: 0x6b6af5aa7dea0daa, limb3: 0x0 }, u384 { - limb0: 0xcf98585afc31b20341ab6790, - limb1: 0x5021bfff05b9553bff6239c9, - limb2: 0x2327cd5fd8be0eb5, + limb0: 0x41cd857a2812af50a3dead37, + limb1: 0x6d631dfd4e5cdeb71bef437c, + limb2: 0x2793da6630a08ac9, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -44558,66 +44583,66 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xee977d10fc3811f074b12f7c, - limb1: 0xe2c2acb6661070026aa6abd1, - limb2: 0x24f182986bc58517, + limb0: 0xcd685532afeecdb7f1721577, + limb1: 0x7fc2b022ded8577b07891106, + limb2: 0x7a12e505da65578, limb3: 0x0 }, u384 { - limb0: 0xa32dc5e2326c85a7f0c6a892, - limb1: 0x6d92086c29deb641ba83ef12, - limb2: 0x38f6cb32cf1f2a00, + limb0: 0xf8e7ad222674e75951721ed, + limb1: 0xea25e33e42017b44654e2148, + limb2: 0x479869e85814a424, limb3: 0x0 }, u384 { - limb0: 0x2a903a8835f6c3bc8d28a85a, - limb1: 0xa548d75d9e5ab0caf5bccb47, - limb2: 0x156cd83415f56221, + limb0: 0x20bb322c6769278c57155d88, + limb1: 0x443c8b1cc8971905966bb78f, + limb2: 0x1246603ad11e9ef8, limb3: 0x0 }, u384 { - limb0: 0xe4faf1ec15e75b0889da2d24, - limb1: 0xf8ef4df5adc4d83582c06939, - limb2: 0x4ffdc0007f490cca, + limb0: 0x1d99e5f2ad62238de2f011e5, + limb1: 0x203b5565a8e26c1286a2d6cd, + limb2: 0x37b278ad467ead67, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xa39c337c34faa0f876df42e8, - limb1: 0x7cfedadee809d4d5220e9376, - limb2: 0x282fdf7b8fdde23e, + limb0: 0xb296495a626e65849aa05b4c, + limb1: 0xe9d32e7507e88d71ffc3aecc, + limb2: 0x6a676e1dc22ce7a1, limb3: 0x0 }, u384 { - limb0: 0xdbed9559e60659680d5278a8, - limb1: 0x725adb0c97706fbfb578f732, - limb2: 0x268a9902fbc61b9b, + limb0: 0x7ab9fc22321671873a9429ec, + limb1: 0x799b2dab9a7e62f7580bf04, + limb2: 0x53624b3105d8dabd, limb3: 0x0 }, u384 { - limb0: 0xc2579453b581325e6b7f7f8, - limb1: 0x1579c87ad95e3039d13c7a4d, - limb2: 0xe81e3697b7c311e, + limb0: 0x3e2fbdd2c87dd8e0c53bb8e8, + limb1: 0xe505f740f1dc0a3c7001434, + limb2: 0x277f6ee28613e29f, limb3: 0x0 }, u384 { - limb0: 0xd4c52c5be87fa73f12b5c04e, - limb1: 0xab95f4d2bccc4ca625bba75f, - limb2: 0x49ede5467251253f, + limb0: 0xedd3f7acf5374c07cc1b69f3, + limb1: 0x2780e84db1eca6f02b5c8825, + limb2: 0x5258ec883d631145, limb3: 0x0 }, u384 { - limb0: 0xbae7f04e6bd2822e9a98dfb9, - limb1: 0x997497de1e4624e7055128cb, - limb2: 0xbddfee3684250cd, + limb0: 0xb1cb58128c1ff9d4e8948424, + limb1: 0xfa537309d3c2d3decd2f2516, + limb2: 0x48b9a27e23a3cc90, limb3: 0x0 }, u384 { - limb0: 0xcf98585afc31b20341ab6790, - limb1: 0x5021bfff05b9553bff6239c9, - limb2: 0x2327cd5fd8be0eb5, + limb0: 0x41cd857a2812af50a3dead37, + limb1: 0x6d631dfd4e5cdeb71bef437c, + limb2: 0x2793da6630a08ac9, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -44627,20 +44652,20 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0x423b136dd684791d38cb40c7, - limb1: 0x28099c9176e21440f44c82e8, - limb2: 0x4d68afcffade8b4e, + limb0: 0x3be6e7a6d92d70090f10fd56, + limb1: 0xaef3de51c9e676a0d09e7c6, + limb2: 0x58dbbc0981d9fbb5, limb3: 0x0 }, u384 { - limb0: 0x2e452af5a92584fe5cd54f11, - limb1: 0x63d93e5f0572bece3130e1d5, - limb2: 0xb96a9cad83b18bb, + limb0: 0x307a66ebf3fa500ef640f8f9, + limb1: 0x3a9a7463d249d387f93ba162, + limb2: 0x5ff442fc293797cb, limb3: 0x0 }, u384 { - limb0: 0xf9c15998c825fd9a64b7588a, - limb1: 0xa96c303, + limb0: 0x12f7c897adc6657412f5882e, + limb1: 0x5134623, limb2: 0x4000000000000000, limb3: 0x0 } @@ -44648,21 +44673,21 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0x2132de2b46aaeb038c1e9935, - limb1: 0x112583335b708b90522e3e38, - limb2: 0x5d863fbbc7d2c665, + limb0: 0xcbf3e91c218caec697ff8ec3, + limb1: 0x38e20de4e95c19fddba7733a, + limb2: 0x416754dd02c6f7b8, limb3: 0x0 }, u384 { - limb0: 0x5f6895bd9a6a6af964192ab0, - limb1: 0xd947ddef26b70114441da700, - limb2: 0x474bdf2d325abea0, + limb0: 0x699b0549b517410381cf3473, + limb1: 0x14fb39cd033b29d173f4f4d6, + limb2: 0x6e4025d1a6357dec, limb3: 0x0 }, u384 { - limb0: 0x77c600dec72bcfb238e40484, - limb1: 0xd1ca9f0552a0c0160097fb3b, - limb2: 0x156308155f2e4b49, + limb0: 0x937dd3d407fed0d0d177f4d2, + limb1: 0x3139f7dd0fcaaae4107c5300, + limb2: 0x51bf013d38fde06d, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -44670,66 +44695,66 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xf16b7b1570a1dd81dfc35242, - limb1: 0x1b15a2dbbd5f2b30815e1eae, - limb2: 0x50792a16cd586be7, + limb0: 0x6b67e3e490ecf95af834cfea, + limb1: 0x93dab4a460bdd11740a35e8d, + limb2: 0x2e7a5b5b73cac1c9, limb3: 0x0 }, u384 { - limb0: 0x85b14726f310a48caa693d94, - limb1: 0x48c8f5f6dd433baf189448b1, - limb2: 0x28b293f0b18abe8d, + limb0: 0xbcc235582be1dc9e2fcfb737, + limb1: 0x8a63b81c7f23f3622f43a2db, + limb2: 0x3aa79f46c00a7b18, limb3: 0x0 }, u384 { - limb0: 0x3a9cb35e0f0914f64073e3f3, - limb1: 0x622919b3556b5623d17c9d6d, - limb2: 0x66b9a1931f5d9e13, + limb0: 0x850eb599362a7174d40a591f, + limb1: 0xc62b121f2c9999258813a0a4, + limb2: 0x7741eabcc1c0024b, limb3: 0x0 }, u384 { - limb0: 0x8cbe02a24423b7e9ee8c0e4, - limb1: 0xfd7bdd18e31832d66e4fa041, - limb2: 0x4828c21b75e5134d, + limb0: 0xc082f0387e59fa72d7b032d5, + limb1: 0xcb1061765c7d8d6c6e6e712b, + limb2: 0x3d68c9e283ce5f4e, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x5036f32b1d5fb7962899d754, - limb1: 0x6c5b864c1a3351de7c488eed, - limb2: 0x4e8f7f4345e770b8, + limb0: 0x9bb3aa4f78b6b061b544cfad, + limb1: 0x5e6eebf64956798357dd4976, + limb2: 0x58675463e1055ff, limb3: 0x0 }, u384 { - limb0: 0x94ac0874464e5ab2be9d5bb2, - limb1: 0xa698c745a6b05c073e3576c5, - limb2: 0x7289be33cc622a77, + limb0: 0x68f211e0d86c50dad3c169d4, + limb1: 0x5fd5c46a496317f94a2149a9, + limb2: 0xa39183b14242952, limb3: 0x0 }, u384 { - limb0: 0x4a3fea57fd63847a60e0e74a, - limb1: 0x617d5e4d3b0e3bbfb6c80f3, - limb2: 0x3e6332149c6e4241, + limb0: 0x4537e8f46b7ee4983772d37f, + limb1: 0xc3e9c23b99594002a5744dde, + limb2: 0x21dbee272f326fc5, limb3: 0x0 }, u384 { - limb0: 0xdf951b09866e6433b1eac745, - limb1: 0xd107fc17be1c4fc46b43c1d3, - limb2: 0x438493841da782c4, + limb0: 0xa168e3c6db8eb10664f3d3b0, + limb1: 0xa4e92135b4e97de20e4ed783, + limb2: 0x58d50d0cb011f940, limb3: 0x0 }, u384 { - limb0: 0x6c0dc0b546dc4c885cd541f0, - limb1: 0xadfbefc88323eeaafd65d5d, - limb2: 0x249a8c00d8147d87, + limb0: 0x76403041618922927a8b4bb3, + limb1: 0x46931ada64b667a7dfadab33, + limb2: 0x4b8ed2a54bef3cd2, limb3: 0x0 }, u384 { - limb0: 0x77c600dec72bcfb238e40484, - limb1: 0xd1ca9f0552a0c0160097fb3b, - limb2: 0x156308155f2e4b49, + limb0: 0x937dd3d407fed0d0d177f4d2, + limb1: 0x3139f7dd0fcaaae4107c5300, + limb2: 0x51bf013d38fde06d, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -44739,9 +44764,9 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0x8e1f31ecd156084a3461bdbf, - limb1: 0x1b866d9b164c9b978d53e7bc, - limb2: 0x57cf134458793c67, + limb0: 0xbebd7b9fc2d30969f469c28d, + limb1: 0xdddbd3f136fe7ad4bb727184, + limb2: 0x2cfaa89b2390e1bf, limb3: 0x0 }, u384 { @@ -44754,15 +44779,15 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0x7ffc402f604e35e3ad790cab, - limb1: 0x6440cf33ae26eeec12ee8ced, - limb2: 0x365893771f43dc63, + limb0: 0x7df9487a1e7df27e91ec69b2, + limb1: 0x759c79a8fcc679f8e94ef873, + limb2: 0x2b6c3fb65b802859, limb3: 0x0 }, u384 { - limb0: 0x4e4d83cb00c1ce95be9f0ce0, - limb1: 0xaa572ff07ff066e6f4fa5535, - limb2: 0x412d31f71a6bc7cc, + limb0: 0x1a7e7b1472c193b8a8844538, + limb1: 0x25739e864d4d8a4e83965800, + limb2: 0x7e8013080033840b, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -44770,54 +44795,54 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xb0cf65d046d3c4df8966ffe8, - limb1: 0x102695502b4b7cc0d897cce5, - limb2: 0x4213eb71b65631e6, + limb0: 0x3f16cc3f3b0dc4111d55c0e3, + limb1: 0x1451f0912dc6e3161a76025, + limb2: 0x2181d969a21ace07, limb3: 0x0 }, u384 { - limb0: 0xbc58f633f1ca94eba9f83f02, - limb1: 0x167944315e7e414f28a43c0f, - limb2: 0x49c9bd347e846bec, + limb0: 0xb80b3bbe562098e63584a508, + limb1: 0x283adcf332474f64babb94b5, + limb2: 0x6c8f2d66a39dd2a5, limb3: 0x0 }, u384 { - limb0: 0x421b4356466d85798a8a83a6, - limb1: 0x6600cdb1b8d612978d72ce16, - limb2: 0x2f955e29db488f56, + limb0: 0x3b7eed2b556e49ba7b613879, + limb1: 0xa0c06425ea5acbef3d2c86da, + limb2: 0x77756ba873e3d2c, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xd1ca10e116a563d9e3c9a543, - limb1: 0x3a295584fceddfca98b6656f, - limb2: 0x4702e5a182dfab30, + limb0: 0xf8dcffa03b6aa579033b6f65, + limb1: 0xc6486c2aa5104b72f9b5f89d, + limb2: 0x49cd9b643d138f75, limb3: 0x0 }, u384 { - limb0: 0x6e7b3a42400f52592e1f374b, - limb1: 0xd4bf23e6270e1f96dbcac207, - limb2: 0x49d33330f469629e, + limb0: 0x5aee50b228a74eaf1b24f04b, + limb1: 0xcaab32f650ba2ba1febb8741, + limb2: 0x25e76802f3fc2b38, limb3: 0x0 }, u384 { - limb0: 0xd799416e8571590327c63299, - limb1: 0xb0df02ad6d5e776513ce3fe6, - limb2: 0x665a75a4c137b897, + limb0: 0x78ba20cd8dadf2cbf37a046d, + limb1: 0x46cd60cf0c38d0335334d52a, + limb2: 0x61035e20e4b918, limb3: 0x0 }, u384 { - limb0: 0x8ca16b270cc01772a63523eb, - limb1: 0x95d8b0410fa22cc27ea7434a, - limb2: 0x13a7404ac4fd9b49, + limb0: 0x8a9e7371caefd40d8aa880f2, + limb1: 0xa7345ab65e41b7cf5507aed0, + limb2: 0x8baec8a0139e73f, limb3: 0x0 }, u384 { - limb0: 0x4e4d83cb00c1ce95be9f0ce0, - limb1: 0xaa572ff07ff066e6f4fa5535, - limb2: 0x412d31f71a6bc7cc, + limb0: 0x1a7e7b1472c193b8a8844538, + limb1: 0x25739e864d4d8a4e83965800, + limb2: 0x7e8013080033840b, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -44827,25 +44852,12 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0x6a739b2c3a5780ddc290cbe0, - limb1: 0xbf1ea121748f0fd9886c7c05, - limb2: 0x2cac820e931fa8a0, + limb0: 0x9b7aab1c74662568e1914888, + limb1: 0xcef24059aaf547c0863441c9, + limb2: 0x3b929dadf37605f3, limb3: 0x0 }, - g_rhs_sqrt: array![ - u384 { - limb0: 0xb88206f0c03a3bc9f5275bff, - limb1: 0x7476b98af8c9a769c6001318, - limb2: 0x3e46b52bee86fe8f, - limb3: 0x0 - }, - u384 { - limb0: 0x41e46fd8b061692d39f48613, - limb1: 0xbfd7a98dd618788d0b964e18, - limb2: 0x2bee1bac978429af, - limb3: 0x0 - } - ], + g_rhs_sqrt: array![], }; let res = msm_g1( points, scalars, scalars_digits_decompositions, msm_hint, derive_point_from_x_hint, 4 @@ -44853,15 +44865,15 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0xb2d22e6de03a9c74634f6d17, - limb1: 0xa3349bd27b1fed9f14153fe5, - limb2: 0x14354b473884ea79, + limb0: 0x78cd6990a813b6a2588ccb19, + limb1: 0xcb57433fd1eaa5787491656f, + limb2: 0x70e4c58e64e4a9f3, limb3: 0x0 }, y: u384 { - limb0: 0x8c254e6393d33f75db535123, - limb1: 0x9bad676c259030f6a875a0c6, - limb2: 0x76967783965f34bf, + limb0: 0x428873cad69986b7befbd0f0, + limb1: 0x5dde16f78dd45ec0c5a51f9d, + limb2: 0x67295fe953f1c748, limb3: 0x0 } } @@ -44874,43 +44886,43 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0xbd72f27742dc976549bfcad2, - limb1: 0x8c63bda87350022c53b9169e, - limb2: 0x2383c6b5d780e426, + limb0: 0x7238f02b9f20e09c2181a557, + limb1: 0x2cedcc5b0be371c337fd7e9e, + limb2: 0x41f3bbeb280fe8a2, limb3: 0x0 }, y: u384 { - limb0: 0xf2ccd6414f178d53b92410d6, - limb1: 0x78c060bd941bfa477144a384, - limb2: 0x125bd9d2a5cc3723, + limb0: 0xf046f8cd6e5a75fca71dd19b, + limb1: 0x892b4613ef5c58df4ef692a4, + limb2: 0x7527fa36f5738847, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xc1dc15c93430d3bf43a36717, - limb1: 0x2d31c2ff44437290e6ff8ae3, - limb2: 0x6c05db3079892dbd, + limb0: 0x82e4a33f8e4e5881e791d86b, + limb1: 0xbcb062435ae8ec5fdaeac4bf, + limb2: 0x179e1bae9e0f9f34, limb3: 0x0 }, y: u384 { - limb0: 0x14fb1448390e1827cb981d23, - limb1: 0xad6a28a6df4a041922b3a0aa, - limb2: 0x5967d47f08cc5cbe, + limb0: 0x19657783ba5660e255c21849, + limb1: 0x7ed7474bcea7551fc71e46bc, + limb2: 0x596c0a76b75f4756, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xeee1072cf8ca24dfaae24bc, - limb1: 0xea972877e1fc0ce16e49bfaf, - limb2: 0x72932e9854c9e0fc, + limb0: 0xa6832ef7fe97f77de7cd9a62, + limb1: 0xf18a70dbf1dc5a76c685da4a, + limb2: 0x6ac1b7bfc409119f, limb3: 0x0 }, y: u384 { - limb0: 0x203501449aae83782b87b0f3, - limb1: 0xace3709d66e3e5dbc1131439, - limb2: 0xd7752e210e76738, + limb0: 0x7751161b1a9ef600b865a5af, + limb1: 0xed28aad4835a39a9e8318ceb, + limb2: 0x572e95c429f0e07a, limb3: 0x0 } }, @@ -44918,13 +44930,13 @@ mod msm_tests { .span(); let scalars = array![ u256 { - low: 0x9b78d294ed9e2414c0f8d1229dba894f, high: 0x86b18a47b1369c3d476c48495e060dd + low: 0xeb2083e6ce164dba0ff18e0242af9fc3, high: 0x2fc154703983ca8ea7e9d498c778ea6 }, u256 { - low: 0x82888a7ac73f75c85fb5a57e7308c4bb, high: 0xc4fd9c561eae8a4bc6ceda510917a88 + low: 0x101fbcccded733e8b421eaeb534097ca, high: 0x71832c59148624feac1c14f30e9c5cc }, u256 { - low: 0xb9ffbf715755b5c04190e2f02777aef3, high: 0x72e7b071eb0c97f48257f66c018e04a + low: 0x247a8333f7b0b7d2cda8056c3d15eef7, high: 0x2eb3db872ae22448b0163c1cd9d2b7d }, ] .span(); @@ -44932,336 +44944,334 @@ mod msm_tests { array![ ( array![ - 0x1, - 0x1, + -0x1, 0x1, -0x1, 0x1, - 0x0, - 0x0, -0x1, 0x0, - 0x1, 0x0, -0x1, + -0x1, + -0x1, 0x1, 0x0, 0x0, - 0x0, - -0x1, -0x1, - 0x0, -0x1, - 0x0, + 0x1, + 0x1, + 0x1, -0x1, + 0x1, -0x1, 0x1, 0x1, + -0x1, 0x0, 0x1, 0x0, 0x0, -0x1, - -0x1, 0x0, -0x1, -0x1, - -0x1, 0x1, 0x0, - 0x0, - 0x0, 0x1, - 0x0, - -0x1, - -0x1, - 0x0, 0x1, -0x1, 0x1, - 0x1, - 0x1, - 0x1, - 0x1, 0x0, -0x1, + -0x1, + -0x1, + -0x1, + -0x1, + -0x1, + 0x0, 0x0, 0x0, - 0x1, 0x0, 0x0, 0x1, + -0x1, 0x1, 0x0, + -0x1, + 0x0, 0x0, 0x1, 0x0, 0x0, - -0x1, 0x1, 0x1, -0x1, - 0x0, - -0x1, -0x1, + 0x1, + 0x1, + 0x0, -0x1, + 0x0, -0x1, + 0x0, + 0x0, + 0x1, -0x1, -0x1, -0x1, + 0x0, + 0x0, 0x1, - 0x1, + 0x0, + -0x1, -0x1, - 0x1, ] .span(), array![ -0x1, 0x0, + 0x0, -0x1, + 0x1, + 0x1, 0x0, 0x0, -0x1, - -0x1, - 0x0, + 0x1, 0x1, 0x0, -0x1, 0x0, -0x1, - -0x1, + 0x0, + 0x0, + 0x0, + 0x0, -0x1, 0x1, - -0x1, + 0x0, + 0x1, 0x1, - -0x1, 0x1, -0x1, -0x1, - 0x0, -0x1, 0x1, - 0x0, - 0x0, - -0x1, - -0x1, -0x1, 0x1, 0x1, 0x1, + -0x1, 0x1, 0x1, 0x0, + 0x1, -0x1, - 0x0, - 0x0, + 0x1, -0x1, -0x1, -0x1, - 0x0, - 0x0, + 0x1, + 0x1, -0x1, - 0x0, - 0x0, + 0x1, -0x1, + 0x1, 0x0, - -0x1, 0x0, 0x1, -0x1, + 0x1, + -0x1, + -0x1, + 0x0, 0x0, 0x1, 0x1, - 0x0, 0x1, -0x1, 0x1, + 0x1, 0x0, - -0x1, - 0x0, - -0x1, 0x0, 0x1, -0x1, + -0x1, 0x0, + 0x1, 0x0, -0x1, - 0x0, 0x1, -0x1, -0x1, - 0x1, - 0x0, - 0x0, - 0x1, - 0x1, + -0x1, + -0x1, ] .span() ), ( array![ - 0x0, - 0x0, - 0x0, - 0x0, + 0x1, 0x0, -0x1, - 0x1, -0x1, - 0x1, - 0x0, -0x1, - 0x0, -0x1, 0x1, - 0x1, -0x1, - 0x1, -0x1, -0x1, - 0x1, -0x1, 0x1, 0x0, -0x1, - -0x1, 0x0, - -0x1, - -0x1, + 0x1, -0x1, 0x0, 0x1, - 0x1, - 0x1, + 0x0, 0x0, 0x1, + -0x1, 0x1, 0x0, - 0x0, + 0x1, + -0x1, -0x1, - 0x0, -0x1, - 0x0, -0x1, 0x0, + 0x1, -0x1, 0x0, + -0x1, + -0x1, + -0x1, + -0x1, + -0x1, 0x1, + -0x1, 0x0, 0x1, 0x1, - 0x0, - 0x0, -0x1, 0x0, 0x0, + -0x1, 0x1, - 0x0, + -0x1, 0x1, -0x1, - 0x0, -0x1, 0x1, -0x1, -0x1, + 0x0, + -0x1, -0x1, 0x0, -0x1, 0x1, 0x0, + 0x1, 0x0, 0x1, + -0x1, 0x1, + -0x1, + -0x1, + 0x0, + -0x1, + 0x0, 0x1, 0x1, 0x1, 0x0, -0x1, 0x1, - -0x1, - -0x1, - 0x1, ] .span(), array![ - 0x0, - 0x0, - 0x1, 0x1, 0x0, + -0x1, + -0x1, 0x1, 0x1, + -0x1, + 0x1, + -0x1, 0x1, -0x1, - 0x0, 0x0, 0x1, + -0x1, 0x1, 0x0, 0x0, 0x0, - -0x1, 0x1, 0x1, + 0x0, -0x1, 0x1, 0x0, - -0x1, - -0x1, 0x0, - 0x1, -0x1, 0x0, + 0x1, -0x1, 0x1, - 0x0, + 0x1, + -0x1, 0x1, 0x0, 0x1, 0x1, + 0x0, + -0x1, -0x1, 0x1, 0x1, - 0x0, + -0x1, -0x1, 0x0, 0x1, 0x1, + -0x1, 0x1, + -0x1, + -0x1, 0x1, 0x1, 0x0, - -0x1, 0x0, - -0x1, 0x0, - 0x0, - 0x1, 0x1, - -0x1, + 0x0, 0x1, + 0x0, 0x1, - -0x1, - -0x1, + 0x0, 0x1, 0x1, - -0x1, - -0x1, 0x1, + 0x0, 0x1, 0x1, 0x0, 0x0, -0x1, - 0x0, + -0x1, 0x1, -0x1, - 0x0, 0x1, - 0x0, - 0x0, - 0x0, - 0x0, + -0x1, + -0x1, + -0x1, + 0x1, 0x1, ] .span() @@ -45270,168 +45280,165 @@ mod msm_tests { array![ 0x1, 0x1, - 0x1, - 0x0, - 0x0, -0x1, -0x1, 0x0, - -0x1, - -0x1, - -0x1, + 0x0, 0x1, + 0x0, -0x1, -0x1, 0x1, 0x1, - -0x1, + 0x0, 0x1, 0x1, + -0x1, 0x1, + 0x0, + -0x1, + -0x1, -0x1, 0x1, -0x1, + 0x1, -0x1, + 0x1, 0x0, - -0x1, 0x0, -0x1, 0x0, 0x0, + 0x0, 0x1, -0x1, - -0x1, + 0x0, 0x0, -0x1, 0x1, - -0x1, + 0x0, 0x1, 0x1, 0x1, + -0x1, + 0x0, + 0x1, 0x1, -0x1, -0x1, -0x1, - 0x0, -0x1, -0x1, -0x1, - -0x1, - 0x1, 0x0, 0x0, + -0x1, 0x1, - 0x0, -0x1, - 0x0, + 0x1, -0x1, 0x0, -0x1, - -0x1, - -0x1, - -0x1, 0x0, - -0x1, 0x1, - 0x0, - 0x0, + 0x1, + 0x1, -0x1, - 0x0, -0x1, 0x0, -0x1, 0x0, + 0x0, -0x1, 0x1, + 0x0, -0x1, + 0x1, 0x0, 0x0, 0x0, - 0x1, - -0x1, -0x1, ] .span(), array![ - 0x0, 0x1, - -0x1, 0x1, - -0x1, - 0x1, - -0x1, 0x1, 0x1, + 0x0, 0x1, + 0x0, 0x1, 0x1, - -0x1, 0x0, 0x1, - -0x1, - 0x0, - 0x0, - -0x1, - 0x0, 0x1, + 0x0, 0x1, -0x1, - 0x0, -0x1, 0x0, -0x1, - 0x0, - 0x0, -0x1, 0x0, 0x0, - 0x1, 0x0, 0x0, -0x1, + -0x1, + 0x0, 0x1, 0x1, 0x1, -0x1, 0x0, - -0x1, - 0x1, 0x1, + 0x0, -0x1, 0x1, 0x0, 0x1, + -0x1, 0x0, 0x0, - 0x1, + -0x1, 0x0, + -0x1, 0x1, 0x0, - 0x1, 0x0, + 0x1, 0x0, -0x1, 0x0, - -0x1, - -0x1, + 0x0, 0x1, -0x1, -0x1, + 0x0, 0x1, - -0x1, 0x0, 0x0, - -0x1, - 0x1, - 0x1, 0x1, 0x1, + -0x1, + -0x1, + -0x1, 0x0, -0x1, -0x1, + 0x0, + 0x0, + 0x0, + 0x0, + -0x1, -0x1, 0x1, + 0x0, 0x1, + 0x0, + -0x1, + -0x1, ] .span() ), @@ -45441,97 +45448,97 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0x4014a49afb631f8e1836b690, - limb1: 0x74df4a76f49519e4c3e0e6f9, - limb2: 0x7c8279fc7a089f59, + limb0: 0xad5eb29cdff35353ac85be4, + limb1: 0xd9c76fe6eedd44aa382baff2, + limb2: 0x5b900a5d85049374, limb3: 0x0 }, y: u384 { - limb0: 0xa46a399605fe9363792bb4f6, - limb1: 0x9895e623adabb56a63a8f6e2, - limb2: 0x14ca3170c1cc6aed, + limb0: 0x739a87e1c170fe7eb5e118ac, + limb1: 0x2e3c8b78903ae605b25858f3, + limb2: 0x382406c5d4bb72bc, limb3: 0x0 } }, Q_high: G1Point { x: u384 { - limb0: 0x4a10ce592a5c2a981b6844c1, - limb1: 0x8f53ada37cef2b6b98b562af, - limb2: 0x21686ec46a068d7c, + limb0: 0x156a6eb38a2318d731ccd4d5, + limb1: 0xa04336d6b4775a6c5505cb9, + limb2: 0x40106a70bb7c59ae, limb3: 0x0 }, y: u384 { - limb0: 0x4f9172c7aef1a21131359aff, - limb1: 0x32768c07d82704d159cedbfa, - limb2: 0x6e215538e93fb16f, + limb0: 0xff9a6170bef2e5781271ffbb, + limb1: 0xb31161ee0922a8f69369bb98, + limb2: 0x365179b0763537ce, limb3: 0x0 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0x497eed719c2eb94bac06d4b4, - limb1: 0x79c287fa544aa1d1aa1afec7, - limb2: 0x76b9810e5d21f010, + limb0: 0x89537905bb8da89d87c7310c, + limb1: 0xd7c7cb642b0be94d360279ab, + limb2: 0x34d3c12f5c2aa2bc, limb3: 0x0 }, y: u384 { - limb0: 0xf14e3bf5aa4fc7c3cea2fc74, - limb1: 0xfc0cb3ad5809766613cbd49c, - limb2: 0x58babf6763d5d3d8, + limb0: 0x75fe0b539841f026231a5f20, + limb1: 0x7ecf364d7a3b2c1c2fa28c6d, + limb2: 0xab06199450d0294, limb3: 0x0 } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0xa22b1e11e908dcea4d21e1a6, - limb1: 0xf5bce7a49d851cf5fc7991b9, - limb2: 0x53e56d9d0730e395, + limb0: 0xe2aeb376cee11c5f71b0a8ca, + limb1: 0x9a7ee1052d9d123091972f4b, + limb2: 0x45325fc910310833, limb3: 0x0 }, u384 { - limb0: 0xe7148291e087494e09f4d91a, - limb1: 0x610589893799fc5bd4f1059a, - limb2: 0x22589aaef98fbe21, + limb0: 0x534e4e782f8c473edbeea3c3, + limb1: 0xf4ff5d0ab6eb79a2559b0e97, + limb2: 0x5c3716c0eaed8d7e, limb3: 0x0 }, u384 { - limb0: 0x48b15c6d8983c33f08586c40, - limb1: 0x95ed215de9b759b03c8d8f1a, - limb2: 0x715172dcb3593b61, + limb0: 0x20529697ccab50cbf88de922, + limb1: 0x89cb656d3f5b06be3265fd1a, + limb2: 0x48045ae34baf01f9, limb3: 0x0 }, u384 { - limb0: 0x5e8c761fea977cf2be85246c, - limb1: 0xffffffffffffffffd1b71ca0, - limb2: 0x7fffffffffffffff, + limb0: 0x5af750ac662300e9809d22e8, + limb1: 0xffffffffffffffff8810ffb8, + limb2: 0x3fffffffffffffff, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0x4841a1ccc5c73433c9bf36f2, - limb1: 0xe1307fc896abd3f44cc2a866, - limb2: 0x7c66a08aaa6389cb, + limb0: 0x28570284be6affb539827615, + limb1: 0x6c75668f49765f0c22408a24, + limb2: 0x53b75aedceb2fef7, limb3: 0x0 }, u384 { - limb0: 0xcbb45633bc1ed5086b96eb4b, - limb1: 0xfede8ba62ca70809f5fc9ffd, - limb2: 0x634869c1b8905813, + limb0: 0x35f1ec72ceccca4941990ce5, + limb1: 0x921d81fbf8b9c4f926c7f9b5, + limb2: 0x5ede48572e6bebed, limb3: 0x0 }, u384 { - limb0: 0x516aab493921d15f178a506a, - limb1: 0xefd439181aed2f4b466e4ee4, - limb2: 0x62bfc00935e3ef9a, + limb0: 0xc2a5cd87534e359f67da438e, + limb1: 0x418897d0829dbb9985c2618f, + limb2: 0xca87d4565e8e135, limb3: 0x0 }, u384 { - limb0: 0x31ae42b1be02d2ff5fb7f292, - limb1: 0xe6f40c6971db647c931cb7d5, - limb2: 0x160b584e0236dc5, + limb0: 0x5989527305f99a2ed4568bbf, + limb1: 0x4b0ff09eb87a02bbee663265, + limb2: 0x601c6648f0d2d314, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -45539,78 +45546,78 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x971bac6590bec339b46c1b39, - limb1: 0x74f91ca5883ff45a21ef360f, - limb2: 0xb18092dfd4a28b9, + limb0: 0x8438c8cb81dccdfa1f624cd, + limb1: 0x679dcba4621894cc63fac76a, + limb2: 0x51da58e0f55785fd, limb3: 0x0 }, u384 { - limb0: 0x44b0e5d9ec05c9d10475a1b5, - limb1: 0xc05c95376eabe60079e843f, - limb2: 0x40e80ea0a74a439a, + limb0: 0x3e0cfd5e9d3a3e6b5212e3ad, + limb1: 0xe94fc31f272174d6b3dade59, + limb2: 0x268f8d0fd83c48aa, limb3: 0x0 }, u384 { - limb0: 0x3946c3ecbd31ef0ee52b7a33, - limb1: 0xfaa87c2bac5c2fc35f0b95b, - limb2: 0x5072b233ffa9c5d8, + limb0: 0x6ddc974bfc6126da27fa874d, + limb1: 0x2b5cc41ca49885c539e97bc3, + limb2: 0x5de6b01098ee8a8, limb3: 0x0 }, u384 { - limb0: 0x30b00284d82e87bc947d56bf, - limb1: 0xa9f3946eb3b2003577dd9b09, - limb2: 0x7b78b11c04b56f85, + limb0: 0xb91a2df29bc21286113a4b31, + limb1: 0x8046b8439248dc782978d42a, + limb2: 0x627ed5ce37c997f9, limb3: 0x0 }, u384 { - limb0: 0x2ea8bdcbc5ab6e5eb0cf6720, - limb1: 0x96286e97d09717c0025aa7a, - limb2: 0x36a71840da052f14, + limb0: 0xe49dc9a619b39ee7fedf691d, + limb1: 0x11df096470fd69aad9bb2326, + limb2: 0x683166d86a69cd24, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xfa5c939ae1d96a5580ec4097, - limb1: 0x40630c87471f1df1b1a0a729, - limb2: 0x4bef12ddf85ed03c, + limb0: 0xb2a922f15d253ae0fd80165e, + limb1: 0x5452af89136019bb9be2e508, + limb2: 0x726e6fca3f417f29, limb3: 0x0 }, u384 { - limb0: 0x81e9e6d19c3db62045459c18, - limb1: 0xfe7abdb3b5c9f929f01bd462, - limb2: 0x1e8152b4d3fb6826, + limb0: 0x70529822ef616a5038f4ca02, + limb1: 0xfe8b9d1fb686b0e12fca8c4a, + limb2: 0x7bae08d68c980816, limb3: 0x0 }, u384 { - limb0: 0x30f2e8e1f80ab452bb8c9a55, - limb1: 0xad2613be4d7276a2de25b761, - limb2: 0x20a5147c607bc3ab, + limb0: 0xcb4940bf6cadc44c11e539f7, + limb1: 0xd564cd43a2db0401894880b4, + limb2: 0x7b99fae0e1d4386e, limb3: 0x0 }, u384 { - limb0: 0xf01f35262f3158f2b812bf45, - limb1: 0xc80f236b0970d7c35c7555e1, - limb2: 0x2a4fc088fe34ae51, + limb0: 0xf6bf38e3115d1d825c88127f, + limb1: 0x98ebb97592aab325ce8097a8, + limb2: 0x29ef79fd1aabd7d6, limb3: 0x0 }, u384 { - limb0: 0x950d4851b5f85d0f853fa0f1, - limb1: 0xe4e9ddc80bc7ea207b1dfde4, - limb2: 0x2548f4fd1983ebbe, + limb0: 0x6658f640178237bcbe007ac5, + limb1: 0x51e86b1abbb908c3759216a8, + limb2: 0x6c153e5d0a196cd3, limb3: 0x0 }, u384 { - limb0: 0x5e0fd640e593b2ee104667aa, - limb1: 0x216c1a257c686d21b2270541, - limb2: 0x400e6cdcdb9dae81, + limb0: 0xcf4af87effc0172e60965abb, + limb1: 0x732078dde418f96ff17b17ec, + limb2: 0x69f72a190ba2a01b, limb3: 0x0 }, u384 { - limb0: 0x31ae42b1be02d2ff5fb7f292, - limb1: 0xe6f40c6971db647c931cb7d5, - limb2: 0x160b584e0236dc5, + limb0: 0x5989527305f99a2ed4568bbf, + limb1: 0x4b0ff09eb87a02bbee663265, + limb2: 0x601c6648f0d2d314, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -45620,51 +45627,51 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0xbeb8fee42072bb5a8144cde, - limb1: 0xfe87ea9093935f5004c69b3f, - limb2: 0x6fdab37f64a50120, + limb0: 0x683a915c183328980b2dcbe, + limb1: 0x5ca4ed3933fd5966c6039e86, + limb2: 0x3c589fce5646396f, limb3: 0x0 }, u384 { - limb0: 0x651e425832ff2db865ea96d6, - limb1: 0x9e1c934f2569be1a6fd676d6, - limb2: 0x2ee6541a86c26e93, + limb0: 0xc13d43ac41393b2888cd373d, + limb1: 0x3ac560fd86f5b4714d04c5c2, + limb2: 0x63d299e0f94a0f86, limb3: 0x0 }, u384 { - limb0: 0x17d9a3f2e73a81324ca52570, - limb1: 0xa920071b0767ae603be4943a, - limb2: 0x674c29703e811c2c, + limb0: 0xb411d838a6ae8e4924ea7bc7, + limb1: 0xca2f1245f55da62a24d2ec41, + limb2: 0x5323094381a27c4a, limb3: 0x0 }, u384 { - limb0: 0x50a59c264e4a932e1d45e1cd, limb1: 0xefbe294, limb2: 0x0, limb3: 0x0 + limb0: 0xc08779737001c5973d7777f6, limb1: 0x1cd4d4f, limb2: 0x0, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0x4c56c075f1ec4600eeeefc4, - limb1: 0xb7953d72f77690017c23f7f9, - limb2: 0x1f975e03f9b50185, + limb0: 0x36892a8391f3c334575d955a, + limb1: 0xb860920ca625389b1926a9be, + limb2: 0x1c0055f8e6c601e8, limb3: 0x0 }, u384 { - limb0: 0x98f0052108d90ba47ab80805, - limb1: 0xdec49657710643abecbff75a, - limb2: 0x459193765a097929, + limb0: 0x9f1695d7b16a815d659f0493, + limb1: 0x8958e17ecd07cfbb6c0be6c7, + limb2: 0x5b429fb8cf61620, limb3: 0x0 }, u384 { - limb0: 0xa285e16cce7b6c7b0ea37dd9, - limb1: 0x19554a176e2f8764e28c2e98, - limb2: 0x5a5b7806f68e9d15, + limb0: 0xcc43956fbe1198e252a55c87, + limb1: 0xc6b3ca37ceb9be20eb4e693e, + limb2: 0x31e56e1a512d529b, limb3: 0x0 }, u384 { - limb0: 0x27b218f38f09c7f55c866461, - limb1: 0xcc7fa93ce98152f5be483c1f, - limb2: 0x5c7ac0bcf0257fa2, + limb0: 0x4ef4cee949d5b68cdd5212ce, + limb1: 0x1ad32d183c0fd1bf6141859e, + limb2: 0x7b9c0635ba5b0cdb, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -45672,78 +45679,78 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x258da7ad969f73c3afeb9afb, - limb1: 0x69626bc69cb95ab6806cd6e3, - limb2: 0x468187fc66c723f6, + limb0: 0xcc4c21b496c466af7ad7399f, + limb1: 0x2c68d208abaf42bfc7ce7c45, + limb2: 0xa435d94c502dd17, limb3: 0x0 }, u384 { - limb0: 0xaf26a607b07cb1aeb1165b75, - limb1: 0x5eafed736d0b4e1aed69bef, - limb2: 0x5b8ba711295a39f0, + limb0: 0xdb3b53ab99c2ae5447e251be, + limb1: 0xc8fa47fc01773b672dd552a0, + limb2: 0x3800f6e2814a44b9, limb3: 0x0 }, u384 { - limb0: 0x546e0d02102a4b1dbe10db41, - limb1: 0x7b69cd8ec4ef2b1646592b1c, - limb2: 0x541dbcd18681156a, + limb0: 0x4db7f5e4f2e79180fffcf3a6, + limb1: 0x1fb2c3cf7c39ca2a43dd6e0b, + limb2: 0x1be738e0afba5457, limb3: 0x0 }, u384 { - limb0: 0x9aff0bd3232bf348697ee36b, - limb1: 0x5f4d04fb0008a93f30dc4eaa, - limb2: 0x79eb0ae45e32a16f, + limb0: 0xd64e387fe582fb0ccdb35d27, + limb1: 0xb238d35e6665cc60894b8ef5, + limb2: 0x6738f9e5a5a05f4c, limb3: 0x0 }, u384 { - limb0: 0x1348ccaed512bdd01a76920, - limb1: 0x40fe194f3f1e8b4069423406, - limb2: 0x7d3783e3df228154, + limb0: 0xf4c92d79695c35051901e2b2, + limb1: 0x9bece9153f13d7848f018a61, + limb2: 0x26d9514751e51850, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x20e805c9e21aeeeff211bc89, - limb1: 0xf84c100582479b96fbd69dd1, - limb2: 0x3cde57c51fd2eeb5, + limb0: 0x9dcb7e322ca6f592d1e75efc, + limb1: 0x7588da7e4081fca11b2d2a99, + limb2: 0x7a1a2bdc1dd47f4, limb3: 0x0 }, u384 { - limb0: 0x87909e76645d93f06bd3bc96, - limb1: 0x24f1431e15280d869919e60, - limb2: 0xe97dccd29db6f80, + limb0: 0x703901a21b6384fd86f9be37, + limb1: 0x366c047f0f9b20dbe023c732, + limb2: 0x74e050862512d4a4, limb3: 0x0 }, u384 { - limb0: 0xa10da749bf9fadd1995737cb, - limb1: 0x2ad550c65dab0a5eca6730bb, - limb2: 0x36b2201ab223ac88, + limb0: 0x7fc7a0af465b2de14eb9685c, + limb1: 0x6a6fa01f7c797b951bd38689, + limb2: 0x4a7aff0ea95a606, limb3: 0x0 }, u384 { - limb0: 0xdf22f14f73cbd112caea6f07, - limb1: 0xf057782eb36e073b86c2db1b, - limb2: 0x271b3d19d4ca212b, + limb0: 0x9e51e61f84551ff5fe09579e, + limb1: 0x821c220ce211179071dd1e11, + limb2: 0x5c3b638c2d436e96, limb3: 0x0 }, u384 { - limb0: 0xe84973e31669b436b7d4bb08, - limb1: 0xfe6366833cd53c4eb634ece, - limb2: 0x12efe8ff72d040d2, + limb0: 0xa3912c023570035ad0ee89b2, + limb1: 0x9473e8f0c28a812925c22091, + limb2: 0x419196d06fd791e8, limb3: 0x0 }, u384 { - limb0: 0xaf2b0c647aed4e0a075f9519, - limb1: 0x4aed2b24cfaac53b4e44e4f5, - limb2: 0x37aa24da9c485bfb, + limb0: 0xd8e8c0676a837a714b6173c7, + limb1: 0xf84bab453034fbf757071f9b, + limb2: 0xf341aedf6e71181, limb3: 0x0 }, u384 { - limb0: 0x27b218f38f09c7f55c866461, - limb1: 0xcc7fa93ce98152f5be483c1f, - limb2: 0x5c7ac0bcf0257fa2, + limb0: 0x4ef4cee949d5b68cdd5212ce, + limb1: 0x1ad32d183c0fd1bf6141859e, + limb2: 0x7b9c0635ba5b0cdb, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -45753,9 +45760,9 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0xbd5db36655ba5f14dc6006ab, - limb1: 0x810693570e520accfc32ff00, - limb2: 0x5e3fa24cbf8e315c, + limb0: 0x71b7ecd907bc85c718446e95, + limb1: 0xd042b5cd6b9aa6836e664482, + limb2: 0x24b5d91deca20116, limb3: 0x0 }, u384 { @@ -45768,15 +45775,15 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0x98f9f423e72d450bf3cb900e, - limb1: 0xfcecc11930633fea1d752a8d, - limb2: 0xac587da8e17079c, + limb0: 0xcb516a89741732140c2dbc6b, + limb1: 0xba70a00a4eacaf517ee476b2, + limb2: 0x553331da5035c0c9, limb3: 0x0 }, u384 { - limb0: 0x6c70443539751c1c3890e665, - limb1: 0xf6e9ca622ec632c2bd2f9e89, - limb2: 0x67de102d38d78272, + limb0: 0x61421846ba4f3e8b466bfa0c, + limb1: 0x1e34012e69aca10c04ad299b, + limb2: 0xb1bd45fe8590395, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -45784,54 +45791,54 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x76ffea2caa1e3771a7f62af3, - limb1: 0x6bab271d6793059551a46d6d, - limb2: 0x7fc6eeea326451e6, + limb0: 0xcedc04e82d8445047ca7cd8, + limb1: 0xbf09e1689ba005a2f5a50d01, + limb2: 0x56327f48afda55e0, limb3: 0x0 }, u384 { - limb0: 0x3d2d79150217c1cf3e72b158, - limb1: 0xf3b8b21e6d16192ca7bca69e, - limb2: 0x2f0e912370a3319a, + limb0: 0x3f29c51a73ad89349370a331, + limb1: 0xea92ed7d4998fd70a11de7af, + limb2: 0xc6ac02f80cf5c56, limb3: 0x0 }, u384 { - limb0: 0x1ba4fd159a3059b4ba78a182, - limb1: 0x3ed580f1f61ff96a8f8a7949, - limb2: 0x3d787df797b52f28, + limb0: 0x8f7a6ed5856bef5da4e55d9a, + limb1: 0x461450aaac283de37223caf6, + limb2: 0x305ed115e2ae6611, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xe9f30d9c762e83a795ad244e, - limb1: 0x8479eb87fc6092d46cad89ff, - limb2: 0x12590c8e66a04087, + limb0: 0xc103f3d0c8fcfaa91bb92f0a, + limb1: 0xa02ec1df4cd06619509bde76, + limb2: 0x7f5a813d719150ce, limb3: 0x0 }, u384 { - limb0: 0x5831c0291546e9cf03509003, - limb1: 0x1fac3b37a83e876321c322, - limb2: 0x39ff73cacaf19d55, + limb0: 0xdb841a832a6157cd5e6cade7, + limb1: 0xe63695a9d36c0b3a3b3e9cd7, + limb2: 0x554ac759d0571823, limb3: 0x0 }, u384 { - limb0: 0xf2a214d340a83a64fa71673d, - limb1: 0x9ec7898c85c05d89bfccfff0, - limb2: 0xd505f79eca55c24, + limb0: 0x4aa4a44ad28a8d07fd9d85bf, + limb1: 0x2f85ae4b06f09524aec5008, + limb2: 0x27a5b82d9d332380, limb3: 0x0 }, u384 { - limb0: 0xa59f1f1b939f269aec87a73b, - limb1: 0x2e84a22691de7dc0892de0ea, - limb2: 0x681434ae33d0c683, + limb0: 0xd7f69581208913a304e9d3ab, + limb1: 0xec088117b027ed27ea9d2d0f, + limb2: 0x3281deadf5ef7faf, limb3: 0x0 }, u384 { - limb0: 0x6c70443539751c1c3890e665, - limb1: 0xf6e9ca622ec632c2bd2f9e89, - limb2: 0x67de102d38d78272, + limb0: 0x61421846ba4f3e8b466bfa0c, + limb1: 0x1e34012e69aca10c04ad299b, + limb2: 0xb1bd45fe8590395, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -45841,12 +45848,19 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0xe65f83c0cbab29c59e85c56e, - limb1: 0x182a730628a00d0cbc44d423, - limb2: 0x25b6ceed856e6fc8, + limb0: 0xf2b5f14cd0666322b8fd7272, + limb1: 0x229192bde2b5bbf79cfc6b5b, + limb2: 0xa902baf6f51468e, limb3: 0x0 }, - g_rhs_sqrt: array![], + g_rhs_sqrt: array![ + u384 { + limb0: 0x5c58459553f8e159c187d5d9, + limb1: 0xda9bb55150b76f6d8fda2707, + limb2: 0x19f294b8d0a40960, + limb3: 0x0 + } + ], }; let res = msm_g1( points, scalars, scalars_digits_decompositions, msm_hint, derive_point_from_x_hint, 4 @@ -45854,15 +45868,15 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0x69934d68ef28902dc998f60f, - limb1: 0x3ae1a5350e16ae2e9ac4e818, - limb2: 0x255e3b92db938e51, + limb0: 0x9292b7770106624b91a73738, + limb1: 0x2c9a7c1a0496485effe3922e, + limb2: 0x7cc025fefaaec43f, limb3: 0x0 }, y: u384 { - limb0: 0x8b874350635a4ff4102e58ed, - limb1: 0x5ca409676f9000321968b095, - limb2: 0xfca30b1402312fc, + limb0: 0x44e571d5378b2d6e5b1d7114, + limb1: 0x5d34cb1a17260d862ef07e73, + limb2: 0x3d6ee7ee0c8df451, limb3: 0x0 } } @@ -45875,57 +45889,57 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0xd4551d97c2b65ea42648f266, - limb1: 0x9dd929c783a8e2656f87e29f, - limb2: 0x36bdf687a4819b7c, + limb0: 0x7238f02b9f20e09c2181a557, + limb1: 0x2cedcc5b0be371c337fd7e9e, + limb2: 0x41f3bbeb280fe8a2, limb3: 0x0 }, y: u384 { - limb0: 0xe06e405030e9e9942bde8c6b, - limb1: 0xca04f2ba88420f46b6abe1d4, - limb2: 0x4afccb8ab6f51ace, + limb0: 0xf046f8cd6e5a75fca71dd19b, + limb1: 0x892b4613ef5c58df4ef692a4, + limb2: 0x7527fa36f5738847, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x77c3f62aa9e39bb023abb55c, - limb1: 0xfb9bb556f8bfb40b0f6e1099, - limb2: 0x4c8e2d52e7281e76, + limb0: 0x82e4a33f8e4e5881e791d86b, + limb1: 0xbcb062435ae8ec5fdaeac4bf, + limb2: 0x179e1bae9e0f9f34, limb3: 0x0 }, y: u384 { - limb0: 0x565d70466fb2f7ebde85ea2e, - limb1: 0x5d670677e1afe55d59b654c9, - limb2: 0x316d664f1ff8a80d, + limb0: 0x19657783ba5660e255c21849, + limb1: 0x7ed7474bcea7551fc71e46bc, + limb2: 0x596c0a76b75f4756, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xbc60148b32a2c58eebcf38d2, - limb1: 0x921a7ea00a9e61ddd2937435, - limb2: 0x62a86290bd144f02, + limb0: 0xa6832ef7fe97f77de7cd9a62, + limb1: 0xf18a70dbf1dc5a76c685da4a, + limb2: 0x6ac1b7bfc409119f, limb3: 0x0 }, y: u384 { - limb0: 0xde111cfba93ca807efeb6c8a, - limb1: 0x6fdd271c2b6f62e9707cfa, - limb2: 0x689186d8d8ac93e8, + limb0: 0x7751161b1a9ef600b865a5af, + limb1: 0xed28aad4835a39a9e8318ceb, + limb2: 0x572e95c429f0e07a, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x1bf6bca42f0e80de69ba54ff, - limb1: 0x55242c2046ca7b5c987e568a, - limb2: 0x64faf764fa28aae2, + limb0: 0x5e71d0fc5d1c016834779173, + limb1: 0xadd002dfc0ebf1b25c23c252, + limb2: 0x40a868d928ae5233, limb3: 0x0 }, y: u384 { - limb0: 0xea624a100c7ab8acb2a7b617, - limb1: 0x4da0aacf9d39e18adb79c5d0, - limb2: 0x53b15d05a00c4e8e, + limb0: 0x423fa293418d6e3f59c2e830, + limb1: 0x7a4bcf26f93e71ffd903e68e, + limb2: 0x7837b851ad8da6e3, limb3: 0x0 } }, @@ -45933,16 +45947,16 @@ mod msm_tests { .span(); let scalars = array![ u256 { - low: 0x99d60177dee770e4bdb61068f9f64795, high: 0x7f9b21e0f62319eab3b0d3dbc5ed083 + low: 0x101fbcccded733e8b421eaeb534097ca, high: 0x71832c59148624feac1c14f30e9c5cc }, u256 { - low: 0x8ead69a92d8d779a0824266a5ae00f12, high: 0x89407fe117e6a12288dbaab72dc5d1f + low: 0x247a8333f7b0b7d2cda8056c3d15eef7, high: 0x2eb3db872ae22448b0163c1cd9d2b7d }, u256 { - low: 0xd92f61fdc3b3a3dc266d09a7a06a5786, high: 0x1f4ab4d150ac785de0a77613e35a237 + low: 0xe005b86051ef1922fe43c49e149818d1, high: 0xfa83cc0eece328bff7b118e820865d6 }, u256 { - low: 0xcbe743637528a9d8cf9e9b3557d25e09, high: 0x399647a023595f493ce64a4549e9b33 + low: 0x4a84eb038d1fd9b74d2b9deb1beb3711, high: 0xaa5e4678c25166a1ff39849b4e1357d }, ] .span(); @@ -45950,49 +45964,41 @@ mod msm_tests { array![ ( array![ + 0x1, + 0x0, + -0x1, + -0x1, -0x1, -0x1, 0x1, + -0x1, + -0x1, + -0x1, + -0x1, 0x1, - 0x1, - 0x1, + 0x0, -0x1, 0x0, 0x1, - 0x1, -0x1, - 0x1, - 0x1, - 0x1, + 0x0, 0x1, 0x0, 0x0, - -0x1, - 0x1, - 0x1, 0x1, -0x1, 0x1, - 0x1, - 0x1, - 0x1, - 0x0, 0x0, + 0x1, -0x1, - 0x0, -0x1, - 0x1, - 0x0, -0x1, -0x1, 0x0, 0x1, -0x1, - 0x1, - 0x1, - 0x1, + 0x0, -0x1, - 0x1, -0x1, -0x1, -0x1, @@ -46002,115 +46008,121 @@ mod msm_tests { 0x0, 0x1, 0x1, - 0x0, -0x1, 0x0, - 0x1, 0x0, -0x1, 0x1, -0x1, + 0x1, -0x1, - 0x0, -0x1, - 0x0, 0x1, -0x1, + -0x1, 0x0, + -0x1, + -0x1, 0x0, + -0x1, 0x1, 0x0, + 0x1, 0x0, 0x1, -0x1, 0x1, - 0x1, + -0x1, + -0x1, 0x0, - 0x1, -0x1, 0x0, + 0x1, + 0x1, + 0x1, + 0x0, -0x1, 0x1, ] .span(), array![ - -0x1, - -0x1, - 0x0, 0x1, 0x0, -0x1, - 0x1, - 0x0, - 0x0, - 0x0, - 0x1, - 0x0, - 0x1, + -0x1, 0x1, 0x1, + -0x1, 0x1, -0x1, + 0x1, -0x1, + 0x0, + 0x1, -0x1, + 0x1, 0x0, 0x0, 0x0, 0x1, + 0x1, + 0x0, -0x1, + 0x1, + 0x0, + 0x0, -0x1, 0x0, + 0x1, -0x1, + 0x1, + 0x1, -0x1, + 0x1, 0x0, 0x1, 0x1, 0x0, - 0x0, -0x1, -0x1, 0x1, 0x1, - 0x0, -0x1, -0x1, 0x0, - -0x1, - -0x1, 0x1, - -0x1, 0x1, -0x1, - -0x1, - -0x1, - -0x1, - 0x0, - 0x0, 0x1, -0x1, -0x1, 0x1, 0x1, - 0x1, 0x0, - -0x1, - -0x1, + 0x0, + 0x0, + 0x1, 0x0, 0x1, 0x0, + 0x1, 0x0, - -0x1, 0x1, 0x1, 0x1, 0x0, - -0x1, 0x1, + 0x1, + 0x0, 0x0, -0x1, + -0x1, 0x1, + -0x1, 0x1, - 0x0, + -0x1, + -0x1, + -0x1, 0x1, 0x1, ] @@ -46118,226 +46130,221 @@ mod msm_tests { ), ( array![ - -0x1, - 0x1, - 0x0, - 0x0, - 0x0, 0x1, 0x1, -0x1, -0x1, 0x0, - -0x1, 0x0, - -0x1, 0x1, 0x0, -0x1, -0x1, 0x1, 0x1, - 0x1, - -0x1, + 0x0, 0x1, 0x1, - 0x0, + -0x1, 0x1, 0x0, + -0x1, + -0x1, + -0x1, 0x1, + -0x1, 0x1, - 0x1, + -0x1, 0x1, 0x0, - 0x1, - 0x1, + 0x0, + -0x1, + 0x0, + 0x0, 0x0, 0x1, -0x1, 0x0, + 0x0, -0x1, 0x1, - -0x1, + 0x0, 0x1, 0x1, 0x1, -0x1, + 0x0, + 0x1, 0x1, -0x1, -0x1, - 0x1, -0x1, -0x1, - 0x0, + -0x1, -0x1, 0x0, 0x0, -0x1, - 0x0, + 0x1, -0x1, 0x1, + -0x1, 0x0, - 0x0, + -0x1, 0x0, 0x1, - 0x0, 0x1, 0x1, -0x1, - 0x1, - 0x0, - 0x0, - 0x1, - 0x0, -0x1, 0x0, -0x1, - -0x1, + 0x0, 0x0, -0x1, 0x1, 0x0, -0x1, 0x1, - ] - .span(), - array![ + 0x0, 0x0, 0x0, -0x1, + ] + .span(), + array![ + 0x1, + 0x1, + 0x1, 0x1, 0x0, 0x1, 0x0, + 0x1, + 0x1, 0x0, - -0x1, 0x1, - -0x1, - -0x1, - -0x1, 0x1, + 0x0, 0x1, -0x1, - 0x1, -0x1, - 0x1, 0x0, -0x1, - 0x1, + -0x1, + 0x0, + 0x0, + 0x0, + 0x0, -0x1, -0x1, 0x0, 0x1, 0x1, - -0x1, - 0x1, 0x1, -0x1, 0x0, - 0x0, - 0x1, 0x1, 0x0, -0x1, 0x1, + 0x0, 0x1, -0x1, 0x0, 0x0, - 0x0, - -0x1, - -0x1, -0x1, 0x0, - 0x1, -0x1, - 0x0, - 0x0, 0x1, 0x0, 0x0, - -0x1, 0x1, 0x0, -0x1, + 0x0, + 0x0, 0x1, -0x1, + -0x1, + 0x0, + 0x1, 0x0, 0x0, 0x1, 0x1, -0x1, - 0x1, - 0x1, - 0x0, -0x1, -0x1, - 0x1, 0x0, -0x1, -0x1, + 0x0, + 0x0, + 0x0, + 0x0, -0x1, -0x1, - 0x0, 0x1, + 0x0, 0x1, + 0x0, + -0x1, + -0x1, ] .span() ), ( array![ 0x0, - -0x1, 0x0, 0x1, -0x1, 0x0, + 0x1, + -0x1, 0x0, 0x0, 0x0, + 0x1, 0x0, -0x1, -0x1, 0x1, 0x1, - -0x1, - -0x1, 0x0, 0x1, - 0x0, - 0x0, - 0x0, 0x1, + 0x0, 0x1, -0x1, -0x1, - 0x1, - 0x1, - -0x1, - 0x1, 0x0, 0x0, - 0x1, - 0x1, - -0x1, 0x0, - 0x1, + 0x0, 0x0, -0x1, -0x1, -0x1, - 0x1, + 0x0, + 0x0, + 0x0, -0x1, 0x0, 0x1, 0x0, + 0x0, + 0x0, + -0x1, 0x1, 0x1, 0x0, 0x1, + 0x1, -0x1, 0x0, - 0x0, + 0x1, 0x0, -0x1, 0x0, @@ -46345,130 +46352,126 @@ mod msm_tests { -0x1, -0x1, 0x0, - -0x1, 0x0, 0x0, - -0x1, 0x1, - 0x0, - -0x1, 0x1, -0x1, + 0x0, 0x1, 0x1, 0x1, + 0x0, + 0x0, + 0x0, -0x1, 0x1, - 0x1, -0x1, + 0x0, + 0x0, + 0x1, -0x1, -0x1, 0x1, 0x0, 0x0, + 0x0, -0x1, -0x1, ] .span(), array![ + 0x0, + -0x1, 0x1, -0x1, 0x0, - 0x0, -0x1, 0x0, - 0x1, - 0x1, - 0x1, + -0x1, -0x1, 0x1, -0x1, - 0x0, -0x1, 0x0, - 0x0, -0x1, - 0x0, -0x1, + -0x1, + 0x1, + -0x1, + 0x1, 0x0, 0x0, + 0x1, + 0x1, + 0x1, 0x0, 0x0, 0x1, -0x1, -0x1, - -0x1, - 0x0, 0x1, 0x0, + -0x1, 0x1, - 0x0, 0x1, 0x1, - -0x1, - -0x1, 0x1, 0x0, - 0x1, -0x1, - 0x1, + 0x0, + -0x1, -0x1, 0x0, 0x0, + 0x1, + 0x1, + -0x1, 0x0, 0x1, -0x1, + 0x0, 0x1, 0x1, - 0x0, -0x1, - 0x0, - 0x0, -0x1, - 0x1, -0x1, - 0x0, -0x1, -0x1, -0x1, - 0x0, 0x1, + -0x1, 0x1, -0x1, -0x1, 0x1, + 0x1, -0x1, - 0x0, -0x1, 0x1, - 0x1, + 0x0, -0x1, 0x1, 0x1, + 0x0, + 0x1, 0x1, -0x1, + -0x1, + -0x1, 0x1, ] .span() ), ( array![ - 0x0, - 0x0, - 0x0, -0x1, - 0x1, - 0x1, - 0x1, -0x1, - 0x1, - -0x1, - 0x1, 0x0, -0x1, 0x0, - 0x0, - 0x0, + -0x1, + 0x1, 0x0, 0x0, -0x1, @@ -46476,146 +46479,155 @@ mod msm_tests { -0x1, 0x1, 0x1, - 0x0, 0x1, - 0x1, - -0x1, 0x0, - -0x1, + 0x0, -0x1, 0x1, 0x0, 0x1, - 0x0, 0x1, + 0x0, -0x1, 0x1, + 0x0, -0x1, -0x1, 0x1, + 0x0, 0x1, 0x1, 0x0, - -0x1, - -0x1, 0x0, - 0x1, - 0x1, - -0x1, -0x1, 0x1, + 0x0, + 0x0, -0x1, 0x0, - 0x1, 0x0, 0x0, - 0x1, + 0x0, + 0x0, 0x1, 0x0, 0x0, - -0x1, 0x0, 0x1, - -0x1, 0x1, 0x1, 0x0, + -0x1, + 0x0, 0x1, 0x0, 0x0, + 0x0, 0x1, - 0x1, - 0x1, - 0x1, + 0x0, -0x1, + 0x0, 0x1, - -0x1, 0x1, -0x1, + -0x1, 0x0, -0x1, -0x1, - ] - .span(), - array![ - 0x1, -0x1, - 0x0, + 0x1, + 0x1, -0x1, 0x1, 0x0, + -0x1, 0x0, 0x0, 0x0, + 0x1, + 0x1, + ] + .span(), + array![ 0x0, -0x1, - -0x1, 0x0, - -0x1, + 0x1, -0x1, 0x0, -0x1, -0x1, + 0x1, + -0x1, 0x0, + 0x1, -0x1, + 0x0, -0x1, - 0x1, - 0x1, + 0x0, 0x1, 0x1, 0x0, - 0x1, + -0x1, 0x1, 0x0, + -0x1, + 0x1, 0x1, -0x1, - 0x0, + 0x1, 0x0, -0x1, -0x1, - 0x1, -0x1, 0x1, -0x1, -0x1, 0x0, - -0x1, 0x0, + 0x1, 0x0, + -0x1, + 0x1, 0x0, 0x0, 0x0, 0x0, -0x1, + 0x0, -0x1, 0x1, 0x1, - 0x1, 0x0, + 0x1, + -0x1, + -0x1, + 0x1, 0x0, + -0x1, 0x0, 0x0, 0x1, 0x0, 0x0, 0x1, - 0x0, - -0x1, 0x1, - -0x1, 0x0, -0x1, + 0x0, -0x1, - -0x1, - -0x1, + 0x0, 0x0, -0x1, -0x1, + -0x1, + 0x1, + 0x1, 0x1, - 0x0, 0x1, - 0x0, -0x1, + 0x0, + 0x1, ] .span() ), @@ -46625,109 +46637,109 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0xf95437a10ed73f191376b9b4, - limb1: 0x43a612070db777c1409ab968, - limb2: 0xba85f1f61de1d65, + limb0: 0xb508219ad33e57b735144a92, + limb1: 0x424a372a8c25fe54507ef31, + limb2: 0x5a5ebc30cac52de6, limb3: 0x0 }, y: u384 { - limb0: 0xcdfbdab941984632529056e4, - limb1: 0x55152ce6d4acdca9b90d2f18, - limb2: 0x660907bc945c04da, + limb0: 0xce3478f3e28488c38417b91, + limb1: 0x507f04f833e93555e91863ef, + limb2: 0x7c9132816a9b006, limb3: 0x0 } }, Q_high: G1Point { x: u384 { - limb0: 0xe2a4ad264670d8a7fada0319, - limb1: 0xf0a85b9217d3b87925ecae68, - limb2: 0x615190405e896617, + limb0: 0x75c05afc1c559f694e848928, + limb1: 0xd3c32e4d45e9ddc88305fee4, + limb2: 0x5e0e420206ed2ae1, limb3: 0x0 }, y: u384 { - limb0: 0x2907ce72c120dac5ddc3519c, - limb1: 0xbad3cd0b5ae30abc759fdeca, - limb2: 0x33e6f5cc41ca904f, + limb0: 0xb84b5f20c7d127e3de935043, + limb1: 0x553ba5d028a3567920c0f971, + limb2: 0x329bc50aca4fd96e, limb3: 0x0 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0xc96b5ed16d70a71ac13ccc9c, - limb1: 0x50021b5b51d8d3e8564f31e7, - limb2: 0x54bc1715fb3e2a82, + limb0: 0x140a01b2de0f4cda3b9af7e4, + limb1: 0x773b3cfc367be9f085eb99e9, + limb2: 0x3932c84c5850fc83, limb3: 0x0 }, y: u384 { - limb0: 0x73aa1a7b496ce010ca8ca39e, - limb1: 0xdfb67ad4fd2c42f77d57f756, - limb2: 0x77246d6fa0d3912d, + limb0: 0x998b8d0795cf666aa9dc1034, + limb1: 0x116c3372ab163da3fd9aa2a3, + limb2: 0x25cd618104f2b420, limb3: 0x0 } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0x1fb83974e1d7a792fa3ebec5, - limb1: 0x2a81643cfedb26070ba28697, - limb2: 0x59a47c9a4a9e2131, + limb0: 0x2cceba9d4173d730d5298dbd, + limb1: 0x7f8431ee0c4259f889b43938, + limb2: 0x707cd19ee956563, limb3: 0x0 }, u384 { - limb0: 0x742cb12fb6f627b98fe187c7, - limb1: 0x655503ae9f113ebc2ce8430b, - limb2: 0x17fef99b8ed1f8f5, + limb0: 0x6e997fe373c5b964fc17c65f, + limb1: 0xc1f00f10195f632722bdb137, + limb2: 0x10558ceff31d391f, limb3: 0x0 }, u384 { - limb0: 0xe678699f3cf4ff0a9eef566, - limb1: 0xa2debf999aaa267c6f5ae15, - limb2: 0x7271e9442135de5a, + limb0: 0x9d6c264340c94a48a1c9f2de, + limb1: 0xa1c553f139839e422ba2122e, + limb2: 0x170e6e48d81236f4, limb3: 0x0 }, u384 { - limb0: 0x9051d0938c08ccc3f3edcf0d, - limb1: 0x81699f3f07105717fbf35e6e, - limb2: 0x4c65d19d508f1569, + limb0: 0x66a3005040aab1247fb765fa, + limb1: 0xa444c12aceb67db3f28cab1e, + limb2: 0x7ca3ca71ebf36bea, limb3: 0x0 }, u384 { - limb0: 0x88b8ee01f57fd23cf586de29, - limb1: 0xffffffffffffffff6c2eb040, - limb2: 0x3fffffffffffffff, + limb0: 0x6aad2b056f32fc26a682d5f1, + limb1: 0xffffffffffffffffa762db15, + limb2: 0x7fffffffffffffff, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0xd4e4deb84ce4ee5f9e046b0f, - limb1: 0xe99f882a96db54be40bcc34a, - limb2: 0x2fa3cbd6a7a72673, + limb0: 0x67974c5e3fe4497b5939bc86, + limb1: 0xbd082a05ef0ffbfdd1639b37, + limb2: 0x4bfda9338a649584, limb3: 0x0 }, u384 { - limb0: 0x87c98d06bb48cb5e2e07985a, - limb1: 0xb12d93d7d6a4940f562ab04, - limb2: 0x6cd348cd14000185, + limb0: 0x3eea9a80834f2cc78377c19e, + limb1: 0xccbcb96acb55b33822ebf4dd, + limb2: 0x2663c31b4f70d0c1, limb3: 0x0 }, u384 { - limb0: 0xfd784503eba384c9db5d319a, - limb1: 0xb2a8a35690d9226a665b704d, - limb2: 0x6607163d39f43111, + limb0: 0x82e3d21eaa30a961c87377ef, + limb1: 0x1ab33478076425d0cbb385fc, + limb2: 0x7cfb028e38b4e418, limb3: 0x0 }, u384 { - limb0: 0x18d1f53b4d6e7e6bfd2820b7, - limb1: 0xebb1af809c6b18ebd0af944, - limb2: 0x1ad1dc4654551a96, + limb0: 0xca973b9ddef2cc855042baa8, + limb1: 0x577ec83c140e162d95342458, + limb2: 0x4c9117f293c59ea5, limb3: 0x0 }, u384 { - limb0: 0xe23be36d22dd80254d0b1080, - limb1: 0x3ba6641a24771493d55d889d, - limb2: 0x296823105b3b2ec2, + limb0: 0x50e54b05a39e7644a5930b9e, + limb1: 0x72e2ba333da8f5ce856630d3, + limb2: 0x20a54b9c8263e66f, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -46735,90 +46747,90 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xbb727afec6cd7c39e94eeb79, - limb1: 0x5ca6f8e52e7fd299b531e175, - limb2: 0x6b38859483e65d91, + limb0: 0x25638f3e774768630d6cba90, + limb1: 0xd891cf29ee0f13e41391c006, + limb2: 0x78b27f2c927ab43, limb3: 0x0 }, u384 { - limb0: 0x503d7c7c24b2313ad733930e, - limb1: 0x5142cc1db00d0adcd2197f2f, - limb2: 0x453d6b7b7a3f791f, + limb0: 0x3f0c2bb9b33018b76870c0a5, + limb1: 0x8d5b368acde2394894197dbb, + limb2: 0x30f3c216cff1458b, limb3: 0x0 }, u384 { - limb0: 0x4f2e9ef9f89d27d2d16ceadd, - limb1: 0xdc577d93ced4ed4ba1c5a27a, - limb2: 0x398bd26e3c30c0ee, + limb0: 0x8e78cb1192da86b18a8eea55, + limb1: 0x891b3246246fe44351a76d2e, + limb2: 0x3282f10e4286ed33, limb3: 0x0 }, u384 { - limb0: 0xb2849a26eef47e03c5cab88c, - limb1: 0x6a9c5dd34a4b4f56a2fb9832, - limb2: 0x791c4bce2b2bbf90, + limb0: 0xc3fa20257c30038e86daa5fe, + limb1: 0xa863b210fa2406b78d9b2d2e, + limb2: 0x61047531e7bace12, limb3: 0x0 }, u384 { - limb0: 0x6a24f16f4fd6471e4d6baa62, - limb1: 0x153a8cccfb59218bac8a2495, - limb2: 0x5db71e5e08c9d665, + limb0: 0x911799d38eca32d1a404ead, + limb1: 0xe80a793fc90fa8b339e4bcf1, + limb2: 0x612a23746d0e18e0, limb3: 0x0 }, u384 { - limb0: 0x49dfb51af71e9b6ee79cf124, - limb1: 0x183721d136b314f64928260c, - limb2: 0x58964019f27ac684, + limb0: 0x78897816b049b0bcea5e1032, + limb1: 0x7cee955ee5280228b9bb1d20, + limb2: 0x2535fb768f964b60, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x7e780bcc8a99b635a30845fd, - limb1: 0x8d110e83cac3a344df36aa07, - limb2: 0x3d4184a9a685f0f6, + limb0: 0x96681bb5aa838bc3a30de99e, + limb1: 0xcd8ee36717cb59420a469374, + limb2: 0x79a29e08fba463dd, limb3: 0x0 }, u384 { - limb0: 0xcf04bd3128a89f6fbcbbe40d, - limb1: 0x964902bbcf6f3ef3f2097c47, - limb2: 0x623d475c9a0041ba, + limb0: 0x7e50a8978803dbc97f8160b1, + limb1: 0x9fc1648b19d2e7c936e04208, + limb2: 0x7b3a73e73eaed69, limb3: 0x0 }, u384 { - limb0: 0x6d5f4deba28e8c161a01cc1d, - limb1: 0x5abc24c4ce1d031826398420, - limb2: 0x58d6e455a87372dd, + limb0: 0xf368e2c5ebdd4d7fe487fc85, + limb1: 0xe6e33e258abd73efa02e90f2, + limb2: 0x7eb05e5755d2f2de, limb3: 0x0 }, u384 { - limb0: 0x3862a014b62e52605c15a21f, - limb1: 0x85d9da247fae7e1a69bfd1df, - limb2: 0x764a858d7332345f, + limb0: 0xefcfc4db496f66ef69548e2f, + limb1: 0xe1be4bf008b06f9b24b116c5, + limb2: 0x59cc0b8aa2c3491, limb3: 0x0 }, u384 { - limb0: 0xf4fd9c3f56415650faa65277, - limb1: 0x21043f030b419402021cf639, - limb2: 0xf246a321aa247f0, + limb0: 0x2bd545db5b3246809099d87e, + limb1: 0xf94df82f942ff4ef3fedc859, + limb2: 0x213d59cadcd8dfa2, limb3: 0x0 }, u384 { - limb0: 0x10c10e6c205714ebc418d627, - limb1: 0x673f3c19ed99b94b957f8fe, - limb2: 0x6c4083387c3f750e, + limb0: 0xabe16e4a8b734478a6c73914, + limb1: 0xe33764bf5fd2fa1df17e680d, + limb2: 0x2e42d50271b0de3c, limb3: 0x0 }, u384 { - limb0: 0x25772032f9e05ffaf5e437e4, - limb1: 0x4052fc056b41ef6528c3afa1, - limb2: 0x78208919fa0ed97c, + limb0: 0xd73c66958b64ae1448fed1e8, + limb1: 0x8916a9497589540400ecdab5, + limb2: 0x29dfc4c6397f5d8b, limb3: 0x0 }, u384 { - limb0: 0xe23be36d22dd80254d0b1080, - limb1: 0x3ba6641a24771493d55d889d, - limb2: 0x296823105b3b2ec2, + limb0: 0x50e54b05a39e7644a5930b9e, + limb1: 0x72e2ba333da8f5ce856630d3, + limb2: 0x20a54b9c8263e66f, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -46828,32 +46840,32 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0xdd4140bc116dd65463a63aaf, - limb1: 0xee4c3168f8256f791df8b963, - limb2: 0x17161ee21e88888d, + limb0: 0xcaad9772c920294901aa45f2, + limb1: 0xa0b3143f50dc0dc7b52e9a5f, + limb2: 0x13292a7a0ce1fbf0, limb3: 0x0 }, u384 { - limb0: 0x4b7ee50329e5ba40ea49b44a, - limb1: 0xa6be52424049651261697cb8, - limb2: 0x62ccc5744ef496cc, + limb0: 0x5031d98b4d1fc580d4ee5bf, + limb1: 0xf8dfa43f0464913c3ef8c7c3, + limb2: 0x22bef0646f6c152b, limb3: 0x0 }, u384 { - limb0: 0x2e0479f0e1d52839ebd7ed88, - limb1: 0x37c493a095882d0c9512e713, - limb2: 0x44a182646d9651cb, + limb0: 0xa1d372981075d38c99266426, + limb1: 0x9cc8998829062f3e2683c3e9, + limb2: 0x59cd7d717a5c7997, limb3: 0x0 }, u384 { - limb0: 0x6bb5bc0152a7a79ed844b859, - limb1: 0x9a7b45692844ec60cfc0c41d, - limb2: 0x180e0c2f9d14aaa8, + limb0: 0xe1476610dcf70dc09058943e, + limb1: 0x736acfe8e52dab32f633d119, + limb2: 0x638dfc51a0a136a5, limb3: 0x0 }, u384 { - limb0: 0xabb30f1dd95af0d5de674794, - limb1: 0x618624c, + limb0: 0xb8d82f0e08cab8ac819529f0, + limb1: 0xea911f9, limb2: 0x4000000000000000, limb3: 0x0 } @@ -46861,33 +46873,33 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0xed77124d9afb82e639436961, - limb1: 0x835c5e8665a404e1fc7771a5, - limb2: 0x643a344223d955f0, + limb0: 0xab59f0eea6bb255c8c1d0252, + limb1: 0x2352951a94035fcee7c6519f, + limb2: 0x5fea6ba2f099f26c, limb3: 0x0 }, u384 { - limb0: 0xed087a338669127b32c13c0, - limb1: 0xe45d791c553c5c3cfa0b7fda, - limb2: 0x5820a11757610313, + limb0: 0xd08b273f551c2b7d8f8c1eee, + limb1: 0x7aabaf3e6d205b217a076ceb, + limb2: 0x652d8fcef5f79780, limb3: 0x0 }, u384 { - limb0: 0xd49ff6aa22e06fb98cda2af8, - limb1: 0xa47cd11c488ebe4b912a4b16, - limb2: 0x208bb8de09116aa1, + limb0: 0x6b5526658b4dba2ef972acd8, + limb1: 0x15884121d6c6b771576a087a, + limb2: 0xb821b2563d9bb46, limb3: 0x0 }, u384 { - limb0: 0x50a374de76ddc553f65f94a4, - limb1: 0x4f5d99239bde61d47fb15990, - limb2: 0x3f0f4c9998aa0643, + limb0: 0xab815c7fc61f4b0969b551a8, + limb1: 0xa2fe89fe1b33a8f17cd440aa, + limb2: 0x2337ce68da0ee6c0, limb3: 0x0 }, u384 { - limb0: 0xf8eb6de7eb43e69665a7c708, - limb1: 0x8ea41a8f1a5ad3dbf00b939d, - limb2: 0x53bef1ef5e8fe60f, + limb0: 0x902d11a45a872e928c22cd08, + limb1: 0xa3442f58a08177eb47682120, + limb2: 0x1cf5c5cb463be973, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -46895,90 +46907,90 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xfc7c4d4d4aafe2a5bffe96bb, - limb1: 0xdd58a8c29f0c2cfdf94d7dc5, - limb2: 0x4e2ec97092d4421, + limb0: 0x85ed10c431e0ce37c5a01850, + limb1: 0xf1f08f765ef02febaf9e67c6, + limb2: 0x5d56b8ae679f3888, limb3: 0x0 }, u384 { - limb0: 0xb4eee224491a86ea16daca53, - limb1: 0x47ae79f1d6ab8011627c9e2e, - limb2: 0x1a284db4ac589278, + limb0: 0x5400456894ce51e6973db228, + limb1: 0x11845725306daa791fecac79, + limb2: 0x4f51672c32b4977c, limb3: 0x0 }, u384 { - limb0: 0x27c98037a7507c6395921496, - limb1: 0x350b0fc6040dfeb3cdb56676, - limb2: 0xfe68e1a1cd6ae91, + limb0: 0xa8ab9963351165b5e24422d4, + limb1: 0xfe682a38dd4d74058b8e195d, + limb2: 0x4fb5da3db6b417b4, limb3: 0x0 }, u384 { - limb0: 0xa79708c5b9afc9f573193f7c, - limb1: 0x5db62a2d2a6b76c686d0cae1, - limb2: 0xc42af9d848d38e1, + limb0: 0x88ccbf65ce67165f2a403ee5, + limb1: 0xd2bdec2c45e5f79a362685e7, + limb2: 0x2ec8491417ddb15, limb3: 0x0 }, u384 { - limb0: 0x1d29026be64df471286c87b3, - limb1: 0xa605472e2cf96d0a3e3a8ae7, - limb2: 0x225a94506b2e31db, + limb0: 0xcc1afcf2f494a8680d8f5595, + limb1: 0x8d4d196a0d12a24ab2734b09, + limb2: 0x1c01138cd845f233, limb3: 0x0 }, u384 { - limb0: 0x2c2d9d4c69f5822a132fb5fc, - limb1: 0x4839db8df1718e3072d344ee, - limb2: 0x53a888132aac726f, + limb0: 0xc0160eae8f76e7881fe55eac, + limb1: 0x56f1ce8404b89fb9c6e5d197, + limb2: 0x609df02219f4bb41, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x2279f408b399e8a4db4b1693, - limb1: 0xcf02856802664e1373b840b7, - limb2: 0x26528631431014b, + limb0: 0xa76a607cb14b4ad5d3c7a2c5, + limb1: 0x677e672a6b6f541f6ba1b36, + limb2: 0x4de3b0844cc95036, limb3: 0x0 }, u384 { - limb0: 0x42a32b2b11eb97510b0ed8a1, - limb1: 0xbf51d145c593be8041caa785, - limb2: 0x268f27d1dfb459cf, + limb0: 0x43b6e56ee1d3d5a045dad69, + limb1: 0xd1fec517e550e10dcccfdae3, + limb2: 0x391cf4b904617b06, limb3: 0x0 }, u384 { - limb0: 0x573f42d1eb1ecdc5992a0beb, - limb1: 0x76e568c5d6be960c77c20362, - limb2: 0x7ed834ed2e90da8a, + limb0: 0x7a259441baa03128c8b02e71, + limb1: 0x1f9b835e452d10a7db7c2f63, + limb2: 0x3983f38176ae9217, limb3: 0x0 }, u384 { - limb0: 0xf3dd2ee894a0609071a805fb, - limb1: 0x4665bad9f5688ba57071688a, - limb2: 0x535020519426919e, + limb0: 0x403a04b7da14f59e5ccd74cc, + limb1: 0x87b9aa3ea91c3c776cc9a6cd, + limb2: 0x6053dd5f23e1ce4b, limb3: 0x0 }, u384 { - limb0: 0x14edca7892261118da8849b9, - limb1: 0x9ccd5210a59c461954342b54, - limb2: 0x3e2e17993b91f1c4, + limb0: 0xfe8b329aa83d94dc9c23defb, + limb1: 0xbdeb68f5b1c5a90ab3324c3a, + limb2: 0x2ab212646c75ea10, limb3: 0x0 }, u384 { - limb0: 0xdbd6a503b42d29773f21f2d0, - limb1: 0xeba1ce6e199d6cbd244f6599, - limb2: 0x3d5fa2ea27455b6e, + limb0: 0x498c5535494aa1bf9e44b6e8, + limb1: 0x507a8e11119485c6f0038706, + limb2: 0x49f7fe6311d1f801, limb3: 0x0 }, u384 { - limb0: 0x5d489fd6234fa6e2ef1babe4, - limb1: 0x80f57a30fd599faaeb6a0fed, - limb2: 0x1c5df96d3e63c529, + limb0: 0xb826877772912c98627168e8, + limb1: 0xd4966b0b7caee6c7e88cf707, + limb2: 0x867b3c7fc8a5a6, limb3: 0x0 }, u384 { - limb0: 0xf8eb6de7eb43e69665a7c708, - limb1: 0x8ea41a8f1a5ad3dbf00b939d, - limb2: 0x53bef1ef5e8fe60f, + limb0: 0x902d11a45a872e928c22cd08, + limb1: 0xa3442f58a08177eb47682120, + limb2: 0x1cf5c5cb463be973, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -46988,9 +47000,9 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0x4c470c91c904b356d41e180b, - limb1: 0xcbcf9ad776b9dd411a867e4c, - limb2: 0x3f507ab4db851ba7, + limb0: 0xf3286a548581c8a8d0d11b9b, + limb1: 0x66f8bc5855d97d4719ec190c, + limb2: 0x4c53d67762132d51, limb3: 0x0 }, u384 { @@ -47003,15 +47015,15 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0x94d7d257edadef7480694859, - limb1: 0x9544060a9018c020207feb02, - limb2: 0x1174472b9a211109, + limb0: 0x612f069d6170923c0662462b, + limb1: 0xf8a0ba00acb4aba355189c6b, + limb2: 0x715c55fbaeb9fb9e, limb3: 0x0 }, u384 { - limb0: 0x53eff4084c1e803d43e93025, - limb1: 0xbf5589129653739e83c41faf, - limb2: 0x49f258a9a6386f65, + limb0: 0x7635a351059b13bc75e07ece, + limb1: 0xb50194b6839a3846f70e6732, + limb2: 0x68bef5b1a0c1d89a, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -47019,54 +47031,54 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x7b3db5e4a6419e18208ecd28, - limb1: 0xac7f93998122eb95dc2349fd, - limb2: 0x36fa3f8a9173f8f6, + limb0: 0xc0367edb6f1ac544993e7e8e, + limb1: 0xad71a4de7b16194a69db1603, + limb2: 0x4f4d573eb6f0d7f1, limb3: 0x0 }, u384 { - limb0: 0xf35a3be69b634d09b430efd4, - limb1: 0xe016d2e0d16a4746b8c5b039, - limb2: 0x64bc1796e504cc76, + limb0: 0xac87e6ff23d4af85b4a56e39, + limb1: 0xa006506f1c3b2a4be1273c1e, + limb2: 0x1558f488c78cc7fb, limb3: 0x0 }, u384 { - limb0: 0xa6b559f516ef6a1d641a73f8, - limb1: 0x192b0028d14617e757edef98, - limb2: 0x265bbbd8fd477049, + limb0: 0xb7cae6b54dea2aaa3c430805, + limb1: 0xc63e72ed96acd847569a3e9e, + limb2: 0x12c72c3a2533e4a9, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x3657fbfc176f5b2a9e2ba91, - limb1: 0x24f35c4755dc43565477443d, - limb2: 0x38e6f47eb63c6bf4, + limb0: 0x14eda314ecec3e8449d69d3, + limb1: 0xfe78a13b1b06586ddb1d8b3c, + limb2: 0x185b8a6e0c9f9b35, limb3: 0x0 }, u384 { - limb0: 0xde11c003bd6b929e1b81b074, - limb1: 0xe4b8af682c80baf896e3223d, - limb2: 0x5e53e2e823276565, + limb0: 0xae7643ce2bbe388d95ea67b7, + limb1: 0x6ff339327e62bc281663c635, + limb2: 0x16e154fc05c35ef5, limb3: 0x0 }, u384 { - limb0: 0xe3e63129fd31675d3bdf811, - limb1: 0xdfbeb964235e2726d7df65dc, - limb2: 0xc983055c893c69, + limb0: 0x71576f4084a601d96a854129, + limb1: 0x43fea63eceb7be284f6e2403, + limb2: 0x4a6a714c91432488, limb3: 0x0 }, u384 { - limb0: 0xa17cfd4f9a1fd10379255f86, - limb1: 0xc6dbe717f193fdf68c38a15f, - limb2: 0x6ec2f3ff3fdacfef, + limb0: 0x6dd431950de273caff1e5d6b, + limb1: 0x2a389b0e0e2fe979c0d152c8, + limb2: 0x4eab02cf5473ba85, limb3: 0x0 }, u384 { - limb0: 0x53eff4084c1e803d43e93025, - limb1: 0xbf5589129653739e83c41faf, - limb2: 0x49f258a9a6386f65, + limb0: 0x7635a351059b13bc75e07ece, + limb1: 0xb50194b6839a3846f70e6732, + limb2: 0x68bef5b1a0c1d89a, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -47076,12 +47088,19 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0xd266ad5aeeadfd2f2214bab4, - limb1: 0x90ff459ec628281a57378b43, - limb2: 0x2b082a995a5da0bd, + limb0: 0xd5107189f1b0529f213fac2a, + limb1: 0x94debc165b55831fe94bbe0b, + limb2: 0x374c0dd3949a8490, limb3: 0x0 }, - g_rhs_sqrt: array![], + g_rhs_sqrt: array![ + u384 { + limb0: 0xf6dc9c53c062e1ba131c33bf, + limb1: 0xa1328b5e0cd78a0fcfd34b49, + limb2: 0x3f1500aa7bf43525, + limb3: 0x0 + } + ], }; let res = msm_g1( points, scalars, scalars_digits_decompositions, msm_hint, derive_point_from_x_hint, 4 @@ -47089,15 +47108,15 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0x5405f041540879ef69fa2424, - limb1: 0xb9589766c656419908138f56, - limb2: 0x4355d09f368a70c, + limb0: 0x54e30b1dbc54acd91542088c, + limb1: 0x702b532dab377f0636d9f465, + limb2: 0x25ee2efd1d7ca3f6, limb3: 0x0 }, y: u384 { - limb0: 0xa4cac2a39c6ce2e87b678f84, - limb1: 0xcb12a33b751c2ff61daf4d6b, - limb2: 0x7669568e2cf23d7b, + limb0: 0xd25f547d7c2f7258cbdb9c6b, + limb1: 0xcae4d4cae9a1aba26935de1e, + limb2: 0x277ff10c5815321e, limb3: 0x0 } } @@ -47110,71 +47129,71 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0xab061939c1f45a67b558df54, - limb1: 0x1f8591a6209e421bbc94a5b6, - limb2: 0x763c2ce275c96ad, + limb0: 0x7238f02b9f20e09c2181a557, + limb1: 0x2cedcc5b0be371c337fd7e9e, + limb2: 0x41f3bbeb280fe8a2, limb3: 0x0 }, y: u384 { - limb0: 0xc871042ae5ff981f5bd44dc5, - limb1: 0x77c89c2f0ecf54d28254161, - limb2: 0x38b60e159ecdb06f, + limb0: 0xf046f8cd6e5a75fca71dd19b, + limb1: 0x892b4613ef5c58df4ef692a4, + limb2: 0x7527fa36f5738847, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x6d53b8b79b9f008c1600a143, - limb1: 0x38915bf156897722cdef4240, - limb2: 0x2a498be3e93546de, + limb0: 0x82e4a33f8e4e5881e791d86b, + limb1: 0xbcb062435ae8ec5fdaeac4bf, + limb2: 0x179e1bae9e0f9f34, limb3: 0x0 }, y: u384 { - limb0: 0x6c82e4bab26b22b6d127ba0f, - limb1: 0x25cfeae863c8a8a30e3eb82c, - limb2: 0x7b91ab07a8ab672e, + limb0: 0x19657783ba5660e255c21849, + limb1: 0x7ed7474bcea7551fc71e46bc, + limb2: 0x596c0a76b75f4756, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x651f7aec451a73fea9bbe466, - limb1: 0x61cd98b1068391aa057660f5, - limb2: 0x702158e060c58632, + limb0: 0xa6832ef7fe97f77de7cd9a62, + limb1: 0xf18a70dbf1dc5a76c685da4a, + limb2: 0x6ac1b7bfc409119f, limb3: 0x0 }, y: u384 { - limb0: 0x669a6c1c0e581ec45c4ce0c4, - limb1: 0xc222a7d9e4561d0d06fe4ffe, - limb2: 0x463894c4fc5e0430, + limb0: 0x7751161b1a9ef600b865a5af, + limb1: 0xed28aad4835a39a9e8318ceb, + limb2: 0x572e95c429f0e07a, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x935293bca354f8fd1de8c0b4, - limb1: 0xa93dd052857f4b78a531f975, - limb2: 0x3717e031af1aa04e, + limb0: 0x5e71d0fc5d1c016834779173, + limb1: 0xadd002dfc0ebf1b25c23c252, + limb2: 0x40a868d928ae5233, limb3: 0x0 }, y: u384 { - limb0: 0xe4412e9b914e0e47982a1f24, - limb1: 0x1ef46aee16abfa16ff1517bc, - limb2: 0x73b64fce397c1d8c, + limb0: 0x423fa293418d6e3f59c2e830, + limb1: 0x7a4bcf26f93e71ffd903e68e, + limb2: 0x7837b851ad8da6e3, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x63aff84ce085a3a104b7abd, - limb1: 0xaac616fd1c14663ef8d81b45, - limb2: 0x2e7ac7013c73a90e, + limb0: 0x5907087f8e8e4dacdd039371, + limb1: 0xc390e2073b4e64b9ede0570d, + limb2: 0x6b039a85962f1594, limb3: 0x0 }, y: u384 { - limb0: 0x41c96c1e942cb1d8439190da, - limb1: 0xebfd9238370219a8ae2e3041, - limb2: 0x714e1f701cfdc8cc, + limb0: 0xc45eefa03155b8f7eb780b42, + limb1: 0x3db57eb22f9b0394a4d7b78e, + limb2: 0x6cf45b6d90883f60, limb3: 0x0 } }, @@ -47182,19 +47201,19 @@ mod msm_tests { .span(); let scalars = array![ u256 { - low: 0x4e821f665a27759f33eb63153d496b89, high: 0x61c7cd99c78c83ba328321c4da6f2d9 + low: 0x247a8333f7b0b7d2cda8056c3d15eef7, high: 0x2eb3db872ae22448b0163c1cd9d2b7d }, u256 { - low: 0x7de1bdb659726a503b837c84cc9f0b3f, high: 0x386c342a15bf3e1e38641282b88a8c3 + low: 0xe005b86051ef1922fe43c49e149818d1, high: 0xfa83cc0eece328bff7b118e820865d6 }, u256 { - low: 0x43125b7202166979476f723b88b9ea4d, high: 0x875839940d41bda5d89a2d951db5bc1 + low: 0x4a84eb038d1fd9b74d2b9deb1beb3711, high: 0xaa5e4678c25166a1ff39849b4e1357d }, u256 { - low: 0xe32ffbb37690dd468480bd358968e07d, high: 0x9ba0ee0dd95206d06e6162659b6c44b + low: 0x1775336d71eacd0549a3e80e966e1277, high: 0xa253f6f6288e1a5cc45782198a6416d }, u256 { - low: 0x70e38028a7fd5a8333df9da30086bbf7, high: 0x4b1633a47577572ddd651bb5a137b91 + low: 0x2f1205544a5308cc3dfabc08935ddd72, high: 0x10e1c2b2fcd81b5d24bace4307bf326 }, ] .span(); @@ -47202,131 +47221,124 @@ mod msm_tests { array![ ( array![ - 0x0, - -0x1, - 0x1, 0x1, 0x1, -0x1, - 0x0, - 0x0, -0x1, 0x0, 0x0, - 0x0, 0x1, + 0x0, + -0x1, -0x1, 0x1, 0x1, 0x0, 0x1, - 0x0, 0x1, - 0x0, -0x1, - 0x0, 0x1, + 0x0, -0x1, -0x1, - 0x0, -0x1, + 0x1, -0x1, - 0x0, 0x1, -0x1, + 0x1, 0x0, 0x0, -0x1, - -0x1, - 0x1, - 0x1, + 0x0, + 0x0, 0x0, 0x1, -0x1, - -0x1, 0x0, - -0x1, 0x0, -0x1, 0x1, - 0x1, 0x0, + 0x1, + 0x1, + 0x1, -0x1, 0x0, - -0x1, + 0x1, 0x1, -0x1, -0x1, -0x1, - 0x1, -0x1, - 0x0, - 0x0, - 0x0, - 0x0, - 0x1, - 0x1, - 0x0, -0x1, -0x1, 0x0, + 0x0, + -0x1, + 0x1, -0x1, 0x1, -0x1, + 0x0, -0x1, 0x0, 0x1, + 0x1, + 0x1, -0x1, -0x1, 0x0, -0x1, 0x0, + 0x0, + -0x1, 0x1, + 0x0, + -0x1, 0x1, - ] - .span(), - array![ 0x0, 0x0, - 0x1, 0x0, -0x1, + ] + .span(), + array![ 0x1, 0x1, 0x1, 0x1, - 0x1, - -0x1, - 0x0, 0x0, - -0x1, + 0x1, 0x0, 0x1, 0x1, + 0x0, + 0x1, 0x1, 0x0, + 0x1, -0x1, -0x1, - 0x1, - 0x1, 0x0, -0x1, + -0x1, + 0x0, 0x0, - 0x1, 0x0, - 0x1, 0x0, -0x1, -0x1, + 0x0, + 0x1, 0x1, 0x1, -0x1, + 0x0, 0x1, 0x0, -0x1, 0x1, - -0x1, - 0x0, 0x0, 0x1, -0x1, @@ -47335,153 +47347,133 @@ mod msm_tests { -0x1, 0x0, -0x1, - -0x1, 0x1, + 0x0, + 0x0, + 0x1, + 0x0, -0x1, + 0x0, + 0x0, + 0x1, -0x1, -0x1, 0x0, - -0x1, + 0x1, + 0x0, + 0x0, 0x1, 0x1, -0x1, + -0x1, + -0x1, 0x0, - 0x0, + -0x1, -0x1, 0x0, - 0x1, 0x0, - 0x1, 0x0, 0x0, -0x1, -0x1, - -0x1, - 0x1, 0x1, 0x0, 0x1, + 0x0, -0x1, - 0x1, -0x1, ] .span() ), ( array![ - 0x1, 0x0, 0x0, 0x1, - 0x1, - 0x0, - -0x1, - -0x1, -0x1, 0x0, - -0x1, + 0x1, -0x1, 0x0, 0x0, - 0x1, - 0x1, 0x0, 0x1, + 0x0, -0x1, -0x1, 0x1, 0x1, - -0x1, - -0x1, - 0x0, 0x0, 0x1, 0x1, 0x0, - -0x1, - -0x1, - 0x0, 0x1, -0x1, -0x1, 0x0, 0x0, - -0x1, - 0x1, - 0x1, 0x0, - -0x1, 0x0, - 0x1, - -0x1, - -0x1, - -0x1, 0x0, -0x1, -0x1, -0x1, 0x0, 0x0, + 0x0, + -0x1, + 0x0, 0x1, - 0x1, - 0x1, + 0x0, + 0x0, + 0x0, -0x1, 0x1, + 0x1, 0x0, 0x1, 0x1, -0x1, + 0x0, 0x1, 0x0, + -0x1, 0x0, 0x1, -0x1, - 0x0, -0x1, 0x0, 0x0, - -0x1, - -0x1, - -0x1, 0x0, 0x1, - -0x1, - -0x1, - 0x1, - 0x0, 0x1, - ] - .span(), - array![ - -0x1, -0x1, 0x0, 0x1, - -0x1, 0x1, - -0x1, - -0x1, 0x1, 0x0, - -0x1, - -0x1, + 0x0, 0x0, -0x1, 0x1, - 0x1, -0x1, 0x0, 0x0, - -0x1, - 0x0, - -0x1, - 0x0, + 0x1, -0x1, -0x1, + 0x1, 0x0, 0x0, 0x0, + -0x1, + -0x1, + ] + .span(), + array![ 0x0, + -0x1, 0x1, -0x1, 0x0, @@ -47493,163 +47485,179 @@ mod msm_tests { -0x1, -0x1, 0x0, + -0x1, + -0x1, + -0x1, + 0x1, + -0x1, 0x1, - 0x0, 0x0, 0x0, 0x1, 0x1, - 0x0, - 0x0, - 0x0, 0x1, - -0x1, - -0x1, 0x0, 0x0, - -0x1, 0x1, - 0x0, -0x1, -0x1, - 0x0, - 0x1, 0x1, 0x0, -0x1, - 0x0, 0x1, 0x1, - -0x1, - -0x1, 0x1, 0x1, 0x0, - 0x1, - 0x0, -0x1, - 0x1, 0x0, -0x1, - ] - .span() - ), - ( - array![ + -0x1, 0x0, 0x0, 0x1, 0x1, + -0x1, 0x0, 0x1, - 0x1, + -0x1, + 0x0, 0x1, 0x1, -0x1, - 0x1, -0x1, -0x1, - 0x1, - 0x1, -0x1, -0x1, -0x1, + 0x1, -0x1, + 0x1, -0x1, -0x1, + 0x1, + 0x1, -0x1, -0x1, 0x1, + 0x0, -0x1, 0x1, + 0x1, + 0x0, + 0x1, + 0x1, + -0x1, -0x1, -0x1, - 0x0, 0x1, + ] + .span() + ), + ( + array![ -0x1, -0x1, 0x0, + -0x1, + 0x0, + -0x1, 0x1, + 0x0, + 0x0, -0x1, + 0x1, -0x1, 0x1, 0x1, 0x1, 0x0, 0x0, - 0x0, - 0x1, - 0x1, + -0x1, 0x1, 0x0, 0x1, 0x1, - -0x1, - -0x1, - -0x1, 0x0, + -0x1, 0x1, + 0x0, -0x1, -0x1, - 0x0, 0x1, 0x0, 0x1, + 0x1, + 0x0, + 0x0, -0x1, - -0x1, + 0x1, + 0x0, + 0x0, -0x1, 0x0, 0x0, 0x0, 0x0, 0x0, - -0x1, 0x1, - -0x1, 0x0, - -0x1, 0x0, + 0x0, + 0x1, 0x1, + 0x1, + 0x0, -0x1, 0x0, 0x1, + 0x0, + 0x0, + 0x0, + 0x1, + 0x0, -0x1, - -0x1, + 0x0, 0x1, 0x1, - ] - .span(), - array![ + -0x1, -0x1, 0x0, -0x1, -0x1, -0x1, + 0x1, + 0x1, -0x1, + 0x1, 0x0, + -0x1, 0x0, 0x0, 0x0, + 0x1, + 0x1, + ] + .span(), + array![ 0x0, -0x1, 0x0, - 0x0, + 0x1, -0x1, 0x0, -0x1, + -0x1, 0x1, -0x1, 0x0, 0x1, - 0x0, - -0x1, - -0x1, -0x1, + 0x0, -0x1, + 0x0, 0x1, 0x1, - 0x1, - 0x0, 0x0, -0x1, 0x1, @@ -47657,180 +47665,175 @@ mod msm_tests { -0x1, 0x1, 0x1, + -0x1, + 0x1, 0x0, -0x1, + -0x1, + -0x1, 0x1, -0x1, -0x1, 0x0, 0x0, 0x1, + 0x0, -0x1, + 0x1, + 0x0, + 0x0, + 0x0, + 0x0, -0x1, + 0x0, -0x1, 0x1, 0x1, - 0x1, 0x0, - 0x0, - 0x1, 0x1, -0x1, -0x1, - 0x0, + 0x1, 0x0, -0x1, - 0x1, + 0x0, 0x0, 0x1, + 0x0, + 0x0, 0x1, 0x1, 0x0, - 0x0, -0x1, + 0x0, -0x1, 0x0, - 0x1, 0x0, - 0x1, + -0x1, + -0x1, -0x1, 0x1, - 0x0, - 0x0, 0x1, 0x1, + 0x1, + -0x1, + 0x0, + 0x1, ] .span() ), ( array![ + -0x1, + 0x1, + 0x1, 0x0, + 0x1, 0x0, 0x1, 0x1, - -0x1, - -0x1, 0x1, 0x0, 0x0, - 0x0, - 0x0, -0x1, - 0x0, -0x1, 0x0, 0x1, + 0x0, + 0x1, + 0x0, + 0x1, + 0x1, + 0x0, -0x1, -0x1, - -0x1, + 0x1, 0x0, -0x1, 0x0, 0x0, 0x1, - 0x0, 0x1, - -0x1, - -0x1, + 0x0, 0x0, 0x0, -0x1, -0x1, - 0x0, + 0x1, -0x1, -0x1, + 0x1, + 0x1, + 0x1, -0x1, - 0x0, 0x1, 0x0, -0x1, 0x1, 0x0, + 0x0, + -0x1, 0x1, -0x1, - 0x0, 0x1, 0x0, 0x0, - 0x0, - 0x1, - 0x1, -0x1, - 0x1, - 0x1, 0x0, 0x1, -0x1, - 0x1, + 0x0, -0x1, 0x1, 0x0, - 0x1, -0x1, -0x1, - 0x1, - 0x0, -0x1, - 0x1, + 0x0, 0x0, -0x1, -0x1, 0x1, 0x1, - -0x1, + 0x0, + 0x1, + 0x1, 0x1, - -0x1, 0x0, -0x1, 0x0, - 0x0, -0x1, -0x1, ] .span(), array![ - 0x0, -0x1, - 0x0, - 0x0, - 0x0, - 0x1, - 0x1, 0x1, - 0x1, - 0x0, 0x0, - 0x0, - 0x1, 0x1, 0x0, + 0x1, 0x0, 0x0, - 0x1, - -0x1, -0x1, 0x0, + -0x1, 0x1, 0x0, -0x1, - -0x1, 0x0, + -0x1, + -0x1, 0x0, + -0x1, 0x1, 0x1, 0x0, - -0x1, 0x1, - -0x1, - -0x1, 0x1, - -0x1, 0x0, 0x0, - -0x1, - -0x1, 0x1, - 0x0, 0x1, -0x1, -0x1, @@ -47839,32 +47842,47 @@ mod msm_tests { -0x1, 0x1, -0x1, + -0x1, 0x1, 0x1, + 0x0, + -0x1, + 0x0, + 0x0, + 0x0, 0x1, 0x1, 0x1, - -0x1, + 0x0, 0x1, + 0x0, -0x1, -0x1, 0x0, - 0x0, - 0x0, - 0x0, - 0x0, 0x1, -0x1, + -0x1, 0x1, 0x0, 0x1, 0x0, -0x1, 0x0, + -0x1, + 0x1, + -0x1, + -0x1, + -0x1, + -0x1, + -0x1, 0x1, + -0x1, + -0x1, 0x1, + -0x1, 0x1, - 0x0, + 0x1, + -0x1, 0x1, 0x1, 0x1, @@ -47874,167 +47892,165 @@ mod msm_tests { ( array![ 0x0, - -0x1, + 0x0, 0x1, + 0x0, 0x1, + -0x1, + -0x1, + -0x1, + -0x1, 0x1, 0x0, + 0x1, + -0x1, + -0x1, + -0x1, + -0x1, 0x0, + -0x1, + -0x1, 0x0, + -0x1, 0x0, + 0x1, 0x0, 0x1, + 0x0, -0x1, 0x0, 0x1, 0x1, - -0x1, - -0x1, + 0x1, 0x0, 0x0, - 0x1, - 0x1, -0x1, 0x0, 0x1, - -0x1, 0x0, - -0x1, - -0x1, + 0x1, 0x0, + 0x1, 0x0, -0x1, -0x1, 0x1, 0x0, 0x0, - 0x1, - 0x0, -0x1, - 0x0, - 0x1, + -0x1, -0x1, 0x0, 0x1, + 0x0, + 0x0, 0x1, -0x1, -0x1, - -0x1, - 0x0, 0x0, 0x0, 0x0, 0x1, - -0x1, 0x1, 0x0, - 0x1, - -0x1, - -0x1, - -0x1, + 0x0, + 0x0, -0x1, 0x1, - 0x1, - 0x1, - -0x1, - -0x1, + 0x0, -0x1, + 0x0, -0x1, -0x1, -0x1, -0x1, - 0x0, - 0x1, 0x1, 0x0, -0x1, - -0x1, 0x1, - 0x0, - 0x0, - 0x0, 0x1, + 0x1, + -0x1, ] .span(), array![ - 0x1, - 0x1, + 0x0, + 0x0, -0x1, 0x1, 0x1, - 0x1, - -0x1, -0x1, 0x0, 0x1, - 0x1, 0x0, - 0x0, - -0x1, - 0x1, -0x1, -0x1, 0x1, 0x0, + -0x1, 0x1, -0x1, 0x0, - 0x0, 0x1, 0x1, + -0x1, 0x1, -0x1, -0x1, + 0x1, + 0x1, + 0x1, + 0x1, + 0x0, + 0x1, -0x1, + 0x1, -0x1, 0x0, 0x0, + -0x1, 0x0, + -0x1, 0x0, 0x1, + -0x1, 0x0, 0x1, 0x0, 0x0, - 0x0, - 0x0, - 0x0, - 0x0, + -0x1, 0x1, 0x1, 0x0, - -0x1, 0x0, 0x0, -0x1, - 0x1, - -0x1, -0x1, - -0x1, - 0x1, - 0x0, - 0x0, 0x0, 0x0, 0x0, + -0x1, 0x1, 0x1, 0x1, -0x1, + 0x0, 0x1, 0x0, 0x0, + 0x1, -0x1, - 0x0, + -0x1, + 0x1, 0x0, -0x1, + -0x1, + -0x1, + -0x1, 0x0, 0x1, 0x1, 0x1, - -0x1, - 0x0, - -0x1, ] .span() ), @@ -48044,118 +48060,121 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0xad277877082194771563f01b, - limb1: 0x4473ab98f651c00136ae15fe, - limb2: 0x25ea1c56b064ef52, + limb0: 0x9494bb2a655f9e240ca4c259, + limb1: 0xb6b0fca6b71260566a470551, + limb2: 0x17ec20868fdedafb, limb3: 0x0 }, y: u384 { - limb0: 0xb48e8f44e6e63603aa358fb3, - limb1: 0x5e81083f79f7927cfe945390, - limb2: 0x5258a827ec4fbc1, + limb0: 0x46e7c8902926c64b03dd9725, + limb1: 0xeab0f2b27bda0b23f16b8c80, + limb2: 0x6bfcefca15dfa73f, limb3: 0x0 } }, Q_high: G1Point { x: u384 { - limb0: 0x6dd625801b229cebeba46b68, - limb1: 0x9d5e9c5158481e272e41581f, - limb2: 0x4c9aae040e141251, + limb0: 0x358e258920ca51d11c7a39a1, + limb1: 0xde61a875151b6c7f550094d6, + limb2: 0x1045daa8b8517d50, limb3: 0x0 }, y: u384 { - limb0: 0xfa568fbb2c8035529f53f2ba, - limb1: 0x4cb9a3c548cd76eefaf299de, - limb2: 0x23d72c510c253c83, + limb0: 0x9c088aca5e1f392fa7a486cf, + limb1: 0xa05d450cc94c493f4ce624f2, + limb2: 0x1bd8d7ed43b86070, limb3: 0x0 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0xf6ca254e1fac67b5fb5a3263, - limb1: 0xdfe867afb0e2b4e72474d42c, - limb2: 0x4272b77cddb6cad6, + limb0: 0x87fa936503ca0fd1833cae51, + limb1: 0xda6a8ff3b356e0916aa19928, + limb2: 0x2be69b4a0c1b18c0, limb3: 0x0 }, y: u384 { - limb0: 0xb9ea953d3799c5c9a8e5feac, - limb1: 0xa6c2f8503612871985d1c1e9, - limb2: 0x63478539c4fcabe2, + limb0: 0xd94b4538b92fac3cbfe09da7, + limb1: 0xe5c02e2e76926469d36d56e9, + limb2: 0x25daaa07a7aa69fb, limb3: 0x0 } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0x5295b5c4df930714513489b, - limb1: 0x423f1263de7904e44f85a677, - limb2: 0x57282b1156afaa5f, + limb0: 0x6e29ab846a8caaeaad0baa52, + limb1: 0x2250a4c76f4ae4403ac230be, + limb2: 0x2987b6b6ed869153, limb3: 0x0 }, u384 { - limb0: 0x4ee0ae6a7f0ba55d3cac8c97, - limb1: 0xea0de8f817107bb3aa6ddff9, - limb2: 0x43b4a42ec12fa801, + limb0: 0x8c2a0d3677cae3214be5460f, + limb1: 0x6a83537d34886ce9bb3cf530, + limb2: 0x7b8292234cb9b556, limb3: 0x0 }, u384 { - limb0: 0x7a2ff359702b229807c4b775, - limb1: 0xcc5a8256736e61d5068c4640, - limb2: 0x7c7c445fcf4db061, + limb0: 0x33277f6dc82d9df098047d75, + limb1: 0x929fbf6e2b5c612d7bdcba0e, + limb2: 0x45205dccc5f138d, limb3: 0x0 }, u384 { - limb0: 0xa1b105d19876d81fa4c76e00, - limb1: 0x3dd38786d868347250e6e8a7, - limb2: 0x79d5de31a14dc02f, + limb0: 0x89ddbc1dd88fc9061d33e4a9, + limb1: 0x3366176f36d5ad322ac70ebe, + limb2: 0x7326b4b29be2b8d4, limb3: 0x0 }, u384 { - limb0: 0x215b4d7021a6b558b4b9026c, - limb1: 0xacdcf86fa4ffeb91767b70fa, - limb2: 0x3d2240105c9f359e, + limb0: 0x95fff1e2bc8eacccf7a5b107, + limb1: 0xca1d88609d01d0ebebc92cdf, + limb2: 0x2bc4d455217261b4, limb3: 0x0 }, u384 { - limb0: 0x2ac2fdfdf48b4e3cb69108a0, limb1: 0x4f9c5f88, limb2: 0x0, limb3: 0x0 + limb0: 0x137fea8a55d4d42ea2541dba, + limb1: 0xffffffffffffffff89dd0935, + limb2: 0x3fffffffffffffff, + limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0x12658f2693a45d8077099b81, - limb1: 0xe3e64fa199a29037884cd99e, - limb2: 0x10711c62a373ba07, + limb0: 0x29baa871cd778bef0970d7e1, + limb1: 0xe5509dce5454a4daa6ce3915, + limb2: 0x34410944ef0c718e, limb3: 0x0 }, u384 { - limb0: 0xda8b3216527472623eb30286, - limb1: 0xe7755380cbaa9b885bde8c9, - limb2: 0xfa852bee74216b2, + limb0: 0xb4b5c583552d04d7449f4af2, + limb1: 0x3c8095424e286544aa52288a, + limb2: 0x116467910bf824d5, limb3: 0x0 }, u384 { - limb0: 0x16509959e12576cc4dfab018, - limb1: 0x5b64d0d04b12f6751ccb64c5, - limb2: 0x3866e224c69c65dc, + limb0: 0x7805d4de54030c1fbdd2c60b, + limb1: 0x32462f972dc7473d63d8d6c9, + limb2: 0x48c4016301e55fc1, limb3: 0x0 }, u384 { - limb0: 0x16e498eb939e564327510644, - limb1: 0x9fad4422a53bd2501cfc6881, - limb2: 0xbc9b7d5eafd21a, + limb0: 0x497d5ff81d95aa75144b7ac2, + limb1: 0x40c361f75c1fafd2c6ec8a5e, + limb2: 0x61822eb582e714e6, limb3: 0x0 }, u384 { - limb0: 0x1eca7bcdba5d7a984019bf9d, - limb1: 0x37b8c5920de4ab4a7045e536, - limb2: 0x5ad58c5cffac4a76, + limb0: 0xa1671bd3addcce29d61779b0, + limb1: 0x7afe17873feae3d416fc863, + limb2: 0x3000db801d612c34, limb3: 0x0 }, u384 { - limb0: 0x3bd1a769e3d3495f47526f3e, - limb1: 0xada3e6ceea6f435e9b4d8c5a, - limb2: 0x52b494e3f2b56392, + limb0: 0x1851a8f682eee22af0ff0053, + limb1: 0xfcc57ef7f40a90a37246c3a6, + limb2: 0x78144cc1271b23c4, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -48163,102 +48182,102 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xa8c58f2840c7ecc23843de2a, - limb1: 0xc33431107af25f5a68c2b296, - limb2: 0x71cdc8e12b37af1c, + limb0: 0xa76f283476685916fa2aa74, + limb1: 0x1de95c69552717ac94be8f9f, + limb2: 0x691047075a5b6c46, limb3: 0x0 }, u384 { - limb0: 0x49ceb59b29584eae03237dc8, - limb1: 0xebd157052280223731f673b6, - limb2: 0x430a81cc01a41506, + limb0: 0x1d8b6535fea636cff6172776, + limb1: 0xe7a159a315eb4efc69d40597, + limb2: 0x4fd0056a6fbb691a, limb3: 0x0 }, u384 { - limb0: 0x25b5a1811fa64b9f2642db3c, - limb1: 0xb355b7d168a311d01abaa164, - limb2: 0x1891f12948bcf22b, + limb0: 0xee58d8274b25a3690fb56660, + limb1: 0xfbb73447b484619116d9358d, + limb2: 0x60d09667304ec43c, limb3: 0x0 }, u384 { - limb0: 0x30d692d33ce6e02bb5631fbc, - limb1: 0xd763559a37e639ac66fe569b, - limb2: 0x7df5dc746327b000, + limb0: 0xdd0d81692af91673dabdc46d, + limb1: 0x61b8849e866601907030a65, + limb2: 0xf04467f284008e4, limb3: 0x0 }, u384 { - limb0: 0x5dd14c977151e2e7e4fc7b4, - limb1: 0x5f43a7d48bb3136c8c3b4988, - limb2: 0x1add9354ac911f86, + limb0: 0x7eb2727d1e15516970478934, + limb1: 0x5236aae025eeaec34137ec2a, + limb2: 0x7370c534a6f1e4f9, limb3: 0x0 }, u384 { - limb0: 0x27727af2d8cddf5c969a4aeb, - limb1: 0x16bbb160cb6772b5d938fc7c, - limb2: 0x19416c7683ed589b, + limb0: 0x78b60c681651a06ddb1ed322, + limb1: 0x6baf7631929071b2a8a74adb, + limb2: 0x16bde8544c345623, limb3: 0x0 }, u384 { - limb0: 0xc23f99526b856d646cf032d3, - limb1: 0x3ab7d8dbec70cdec848f16af, - limb2: 0x2df0aac55c3fda7e, + limb0: 0xe7cdbd691cbbd06b2903e68d, + limb1: 0x96e5da5d7b8886f97307fc70, + limb2: 0xcc6b79f65c2994e, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xa7268559ad8aca86b211484b, - limb1: 0x69422f9e193bf2d0c925f1e2, - limb2: 0x48897221bc20747d, + limb0: 0x1b1b010e6dcd5f32f69bb1f0, + limb1: 0xb08cf7451efeb0fdecac3022, + limb2: 0x34fa798b4cc200bc, limb3: 0x0 }, u384 { - limb0: 0xfd5f88e7518bc28b76c40935, - limb1: 0x78bd4c058c26f2f5a7fe058e, - limb2: 0x1b7bbd51b6f27c2b, + limb0: 0x75b91cf3f5ec61c984e6fedb, + limb1: 0xa64f02c054b754673cf0212b, + limb2: 0x58ed1eb96c8a02a4, limb3: 0x0 }, u384 { - limb0: 0xcb99a5c7fe151b767c361f2a, - limb1: 0xa8c7bd8df0dd77e81b63c1e8, - limb2: 0x53548b5c720dc708, + limb0: 0xb02b6a4b18d538757debcbcb, + limb1: 0x256581fa3ffb835dfb9a0f00, + limb2: 0x36a52456262a2929, limb3: 0x0 }, u384 { - limb0: 0x485241c633c6e464bdba6d01, - limb1: 0x711d828b606e0f53361cb219, - limb2: 0x5ce96aa0cf411a67, + limb0: 0xfc8ca060e735f892a7ec134b, + limb1: 0x4bd0022f90899d358c795376, + limb2: 0x504d5775c6a45ce2, limb3: 0x0 }, u384 { - limb0: 0x56b6649f2fd4a8d9ecd383fb, - limb1: 0x7201aed631fc888f3d32d111, - limb2: 0x73f54d6d63f3c686, + limb0: 0x971102128d50ffe9e5949a2a, + limb1: 0xe4e019e101a1b9c733ab07a7, + limb2: 0xa0292a2c3fef294, limb3: 0x0 }, u384 { - limb0: 0xd717a1fc861a4b9275f9434c, - limb1: 0xefa93b5723dce8b8312342df, - limb2: 0x5f3b739ed8ebfdf0, + limb0: 0x5840b8b27c115eff27795638, + limb1: 0x3cc6e4e6ba6d5ac0299670f1, + limb2: 0x17bbd6c49b24851e, limb3: 0x0 }, u384 { - limb0: 0xdc230203e6fb395270a10c4b, - limb1: 0xb3231c4ade19aa441806b41b, - limb2: 0x75e4582366b3ff08, + limb0: 0x58f7539ebaae7d1a58aa7cbc, + limb1: 0xa574eaf7c8826d2c67138116, + limb2: 0x3828878b0c994bfc, limb3: 0x0 }, u384 { - limb0: 0x2b6fa6c566cf5c2738d5d6dd, - limb1: 0x6950a69f6f5fe920dbfe9b93, - limb2: 0x38243930a566095c, + limb0: 0xae0c46cb5a4eafb8ced390f0, + limb1: 0x3947c285d579ec13ad287ec0, + limb2: 0xd4f8853c31aeb1a, limb3: 0x0 }, u384 { - limb0: 0x3bd1a769e3d3495f47526f3e, - limb1: 0xada3e6ceea6f435e9b4d8c5a, - limb2: 0x52b494e3f2b56392, + limb0: 0x1851a8f682eee22af0ff0053, + limb1: 0xfcc57ef7f40a90a37246c3a6, + limb2: 0x78144cc1271b23c4, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -48268,75 +48287,75 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0xe4943358b7c88e1151aabeec, - limb1: 0xbf2e0a46319281e402de4c30, - limb2: 0xb4cb6cdd21a7f8f, + limb0: 0x768d70dceca75911808cc831, + limb1: 0xe054c5a8a7975f318f6852a2, + limb2: 0x5c8ac607edbc1694, limb3: 0x0 }, u384 { - limb0: 0xc3aa143c1da37dcec479c6aa, - limb1: 0x6fb164bdeb926f596c563489, - limb2: 0x487831e868909c77, + limb0: 0xd6d83a1ddb803be01a366f9e, + limb1: 0x3ff20c50b7b7e43bc62285e5, + limb2: 0x18aaa5ce591dd918, limb3: 0x0 }, u384 { - limb0: 0x33bd8689608d6d7643af8aed, - limb1: 0xf394c849c60c5f9459bbda4f, - limb2: 0x43c183e5c361a78f, + limb0: 0x1f41a9baeebc141c57e0b91b, + limb1: 0x5ee79715d46fdf9980f677cf, + limb2: 0x4b787d1e81c98269, limb3: 0x0 }, u384 { - limb0: 0xc0c345a0eae11fb2eb10aef1, - limb1: 0x3561671889e7784c8235f308, - limb2: 0x233c9da91f73a6e1, + limb0: 0x2a8196984305aa62462d681a, + limb1: 0xc9d1e59ae653f59154b098fc, + limb2: 0x732a29c4692de53d, limb3: 0x0 }, u384 { - limb0: 0xdad2fbf668f149c3c15a8c04, - limb1: 0x414f8401f4a828a60c1ebfd5, - limb2: 0x5e179da869fb1297, + limb0: 0xf076b395ef9e12e495c866d0, + limb1: 0xee867a55d099b13d520c0e8a, + limb2: 0x3f0b4890aa223858, limb3: 0x0 }, u384 { - limb0: 0xf708b1d18dde41d17c8380dc, limb1: 0x3183d0d, limb2: 0x0, limb3: 0x0 + limb0: 0x6d2281a9510dd666ce3186bf, limb1: 0xf335c7f, limb2: 0x0, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0x8fe02bb2ce9794f87e8bd581, - limb1: 0xc9b9753d3bdc30b923e10f3f, - limb2: 0x7e34cd8db9562e43, + limb0: 0xdafb9fbffb3045afe4cbc557, + limb1: 0x6445c6f0796eda47db68fd5, + limb2: 0x36cee7e67c020375, limb3: 0x0 }, u384 { - limb0: 0x9136388978a40e46de1207be, - limb1: 0x6907f3ab5772001fbefc54d8, - limb2: 0x10a6bc9e9b7130ba, + limb0: 0xe4ae13d111eb1f77d470e20c, + limb1: 0xefa408f6fa95af88eaef452a, + limb2: 0x51a4983f04e2784f, limb3: 0x0 }, u384 { - limb0: 0xba16244ed90c583621790c5d, - limb1: 0x5c6857f8c61a3d59bf8e44c6, - limb2: 0x99679452582ad02, + limb0: 0x58830835a66c5041fa525680, + limb1: 0xc80f7b5313b6b1ad45f4b5b2, + limb2: 0x168cfa4b10bbe0c4, limb3: 0x0 }, u384 { - limb0: 0xc40acca0ecd3784b74b09349, - limb1: 0xeaf712e2f4011960cbd54f55, - limb2: 0x261f7a7376035281, + limb0: 0xcce2063c9c9d4171de6304fe, + limb1: 0x43ade6bd66d88e5b4bee611a, + limb2: 0x4fb1b1c9b9f232be, limb3: 0x0 }, u384 { - limb0: 0x325c51a22dd5301d09768d85, - limb1: 0xaf50a209214d6d712c90a78a, - limb2: 0x75ec16cfa4f01024, + limb0: 0x6dda60bd19e45235bf3ea2db, + limb1: 0x76646d2a15ae0d982f991ea, + limb2: 0x417a6def2bc5ced2, limb3: 0x0 }, u384 { - limb0: 0x7b22fa60d0d240ea7111f3f1, - limb1: 0x54b8f6168878e538a3ba4a39, - limb2: 0x2c04033695064093, + limb0: 0x77583e97c7842e7de129890b, + limb1: 0xd514d3299601847a878d3421, + limb2: 0x7fba929efea8816f, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -48344,102 +48363,102 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x216e828db0466d235399555c, - limb1: 0x8c2916536b2a109e51cf09fe, - limb2: 0x5be1fbc9ac1c50d0, + limb0: 0x485384e5c6aa80696b46e3cb, + limb1: 0xaf398e41338e1d4a07f42c16, + limb2: 0x4d8b2e8a94d939a2, limb3: 0x0 }, u384 { - limb0: 0x148f747f0023968d2d27fa07, - limb1: 0xb35f1780660e102886b32720, - limb2: 0x7072006178580519, + limb0: 0x5109f8b4a7f3c9701c35654, + limb1: 0x68f6b33a0728be12d4e5b307, + limb2: 0x21b7bcd49dc98dad, limb3: 0x0 }, u384 { - limb0: 0xcd224e70281d7aaff6914c1e, - limb1: 0x4fc57e6ba73951d2a987b3b2, - limb2: 0x1141772bbde5480b, + limb0: 0x9165e707a5faa3e342fd5d24, + limb1: 0x354e8699208b9e0fda28db5f, + limb2: 0x71cdc7c7593e4b6a, limb3: 0x0 }, u384 { - limb0: 0xcdbcc348f4dc0b9332897152, - limb1: 0xdafc62d6d182ccecd678c9d6, - limb2: 0xb154da2b1143e1e, + limb0: 0x6f6737d776dacfa4b747adc3, + limb1: 0x47934f018de137f397990a96, + limb2: 0x7ad6b8600577b3a7, limb3: 0x0 }, u384 { - limb0: 0x5e20b7556c8c338f1f559ece, - limb1: 0xa7678f6f1d299627cf1c4c74, - limb2: 0xa78910e7340656c, + limb0: 0x41d57a1ffe2561d48718301c, + limb1: 0x1d4477960edd6b42d2f72876, + limb2: 0x5aa1dad0df4ee1e6, limb3: 0x0 }, u384 { - limb0: 0xa5c985c363c40419eab14ba6, - limb1: 0xdbf090c92e4a42a169d542f8, - limb2: 0x78d8e401a83a4d39, + limb0: 0x5e13ccbb66dfb0e345be982d, + limb1: 0xc056f4d6716d166c9a8bccae, + limb2: 0x450516b0bd97ed02, limb3: 0x0 }, u384 { - limb0: 0xba52f75d9a20fa3244f3dd82, - limb1: 0xf25565883f43d01b0035261b, - limb2: 0x5e4f5f7f5d6886f4, + limb0: 0x844274b94b35e24263a33a8, + limb1: 0x8ee96116aec7ddf732092e98, + limb2: 0x48b2e038849d8c9c, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x845c29679261669a59daf236, - limb1: 0x67836c603a1e93b755e3b44a, - limb2: 0x300eb890a2243c1d, + limb0: 0x758946acd86f10215aabf90c, + limb1: 0xa8b8562d9c107b12ca5ea086, + limb2: 0x49a9a2732300dc9e, limb3: 0x0 }, u384 { - limb0: 0x374c0ea4b25b2739329363ab, - limb1: 0x421046414cc274cbe8767b4c, - limb2: 0x11159138b90c40a7, + limb0: 0xbc6323b971ba8f75ac4615df, + limb1: 0x8854792f570d21672bd75288, + limb2: 0x59884da3cb0e1b22, limb3: 0x0 }, u384 { - limb0: 0x75257cf62da575b0da58ae88, - limb1: 0xa61e22a512fdee101432e87a, - limb2: 0x3b2d39707d7cb72f, + limb0: 0xb1289d4f236135d5f2c12f7e, + limb1: 0x9ad8787db3da553bd59103a1, + limb2: 0x685a8eeace335a1e, limb3: 0x0 }, u384 { - limb0: 0xae6a60a909e4979e82897a6b, - limb1: 0x6c14a6dde05395b0bb74c022, - limb2: 0x748977358b7c0b97, + limb0: 0xeaea8510bc9cb350d785426c, + limb1: 0x77bbd03438cf569240efe5b7, + limb2: 0xaf2f5971d79746b, limb3: 0x0 }, u384 { - limb0: 0x467f626184ddde18148e4c3f, - limb1: 0x5b2ba53bee22d1f244d8b819, - limb2: 0x3e91451d501f79ea, + limb0: 0x8d83ea07e6a3f6ea857933d6, + limb1: 0xdd12a2e260ed2ff518c4db69, + limb2: 0x7a3f13dd4eeb2b1f, limb3: 0x0 }, u384 { - limb0: 0x100c117350761753d7083be2, - limb1: 0x7f4bf78c3c25f2184cd865ba, - limb2: 0x3016de13e003f3e1, + limb0: 0x7ebd89b50692969de2fcf8b1, + limb1: 0x9235d2a5b830fd9134e3c1da, + limb2: 0x690604422a9f631, limb3: 0x0 }, u384 { - limb0: 0x4c6dbaa94575209815b60248, - limb1: 0xaec3940b3cffc05377bee90b, - limb2: 0xe535a64fe681de4, + limb0: 0x796d61d7629106da335d13fe, + limb1: 0xde2d2df5a6cd278dc11c77fb, + limb2: 0xc0cfedecf288112, limb3: 0x0 }, u384 { - limb0: 0x3f017c99da4711ac0232a4c5, - limb1: 0xe0e8831682c8ab4798495de7, - limb2: 0x533ac3a34aa9cf0a, + limb0: 0x7a7f8bb4c65633c4b7faba1b, + limb1: 0x38fe27e002d61eafeeb24847, + limb2: 0x1ec91ac2d17f8db8, limb3: 0x0 }, u384 { - limb0: 0x7b22fa60d0d240ea7111f3f1, - limb1: 0x54b8f6168878e538a3ba4a39, - limb2: 0x2c04033695064093, + limb0: 0x77583e97c7842e7de129890b, + limb1: 0xd514d3299601847a878d3421, + limb2: 0x7fba929efea8816f, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -48449,9 +48468,9 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0x505aa0ca5d912a540795d45c, - limb1: 0x42772814b4e13e4653e12fcb, - limb2: 0x6f32c68e8fac38cb, + limb0: 0xc474b1eae8be456168d13b, + limb1: 0xa317d626088d2426def81259, + limb2: 0x547bf81334493e88, limb3: 0x0 }, u384 { @@ -48464,15 +48483,15 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0x7a10216e0d85c781a19016f7, - limb1: 0x1649716a17482232daeb0311, - limb2: 0x4f2887241a16d428, + limb0: 0xc5ba1dfedad0d3cdbc0e9695, + limb1: 0x284269a381053ec4e7ba3e47, + limb2: 0x7449e458fd3efcb5, limb3: 0x0 }, u384 { - limb0: 0x9b5fb531c530fb5e1901620f, - limb1: 0x82b8fbfef6d52cf1ad49d3b3, - limb2: 0x70f29a7f143522d7, + limb0: 0x42774711db6b9e5d604917fb, + limb1: 0x4733c797378db2ef405dd201, + limb2: 0x43d38a0d3b9369ee, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -48480,54 +48499,54 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x713955e7d936a1a993628ede, - limb1: 0x9a4d5e02239a79eb702492af, - limb2: 0x2140c87f6153e0f3, + limb0: 0x2c27a4d475d24b600547b985, + limb1: 0xc7d3691d9310095669f27d78, + limb2: 0x78172922cf4e1e80, limb3: 0x0 }, u384 { - limb0: 0xdf5e3c289d13ae642d6fde09, - limb1: 0x8fecbdaa7762a02ccb1e9d80, - limb2: 0x5fe552ee7e405cc5, + limb0: 0xb1829b0896d84703e7784b1e, + limb1: 0x17542c5c0efe1f96f405cfd8, + limb2: 0x4b71428f4bbf6179, limb3: 0x0 }, u384 { - limb0: 0x94b5da75d27ffa490b061d51, - limb1: 0x588f5dd1ba01a8234ea0f4ea, - limb2: 0x705e019f251c6835, + limb0: 0x61321e1417617b14aae2c8a, + limb1: 0xe791b7bcda03fe3c35e4c41e, + limb2: 0x5b497d541a4b443b, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xe7f93f36e92a40e1bf5f3d68, - limb1: 0xc7a4d7428acaf226a556dd65, - limb2: 0x2979dda03e0b3c11, + limb0: 0xb24dacbd3e2518ecf075dde4, + limb1: 0x823f8c0740c717d72d914aa5, + limb2: 0x4533a8dbd84c788f, limb3: 0x0 }, u384 { - limb0: 0xe11b73fafaa53b2075bb0882, - limb1: 0xadde691a6811c03823fa4a08, - limb2: 0x6c35d9b4c86e3875, + limb0: 0x21572ec5b5ad7f1f4b61c859, + limb1: 0xa903ff5d5d571343a45b5c18, + limb2: 0x37b1095dae1d5cfa, limb3: 0x0 }, u384 { - limb0: 0x82463911628fcebaae866275, - limb1: 0xe571dc754ee9be1de9f5d3d5, - limb2: 0x3afbe103a40b1e92, + limb0: 0xd55cac7c89a21ac26c034e7e, + limb1: 0x1c9890b39a5c386e3544ac61, + limb2: 0x29fd6ad586e4d36, limb3: 0x0 }, u384 { - limb0: 0x86b54c65b9f7a9109a4c2e37, - limb1: 0x47e1527778c3600946a3b96e, - limb2: 0x2c7733f7bfd0930e, + limb0: 0xd25f48f68742b55cb4caadd5, + limb1: 0x59da4ab0e2807c9b5372f4a4, + limb2: 0x5198912ca2f8bb9b, limb3: 0x0 }, u384 { - limb0: 0x9b5fb531c530fb5e1901620f, - limb1: 0x82b8fbfef6d52cf1ad49d3b3, - limb2: 0x70f29a7f143522d7, + limb0: 0x42774711db6b9e5d604917fb, + limb1: 0x4733c797378db2ef405dd201, + limb2: 0x43d38a0d3b9369ee, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -48537,12 +48556,25 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0xf828629efb105f046daec9f7, - limb1: 0xc864842ad7dd5426b6ed77b2, - limb2: 0x381c3a29d77d895a, + limb0: 0x3c1f69fe71aab9e542b1c939, + limb1: 0xa0fdd32a56a9dbf8c7f8481c, + limb2: 0x16859dcaa6263efd, limb3: 0x0 }, - g_rhs_sqrt: array![], + g_rhs_sqrt: array![ + u384 { + limb0: 0x335988e084f60af290bdac12, + limb1: 0x6ed545fc350a2ad3f9b73c00, + limb2: 0x28ced104ffdda71, + limb3: 0x0 + }, + u384 { + limb0: 0xda48db74674ab72c82d1d39a, + limb1: 0x5f7f6164ddbaac7ada9c656f, + limb2: 0x169c9dc4be5dc1bb, + limb3: 0x0 + } + ], }; let res = msm_g1( points, scalars, scalars_digits_decompositions, msm_hint, derive_point_from_x_hint, 4 @@ -48550,15 +48582,15 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0x28749bac2fb3eb290568c661, - limb1: 0xd1b0c6de60748afc285a347, - limb2: 0x2d6a97f07838f9f5, + limb0: 0x42f86cc85f497245dd35ee7e, + limb1: 0xa58371a4e47c81f8bd294181, + limb2: 0x579939ea7423ec45, limb3: 0x0 }, y: u384 { - limb0: 0xfbe2d8b646343f81672e7c10, - limb1: 0x6586a24348978cc34af4f4c9, - limb2: 0x6eeeeae696b21da3, + limb0: 0xd5aea7a03f0f30e9cc21e80f, + limb1: 0x3234c62d1e0bef2e9a727e93, + limb2: 0x58bcc6960cae9154, limb3: 0x0 } } @@ -48571,85 +48603,85 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0xcf413204540418c72b59a2b9, - limb1: 0xa22462c1a3cbda587dfdde06, - limb2: 0x15538be425a478b2, + limb0: 0x7238f02b9f20e09c2181a557, + limb1: 0x2cedcc5b0be371c337fd7e9e, + limb2: 0x41f3bbeb280fe8a2, limb3: 0x0 }, y: u384 { - limb0: 0xcf5f55ba0f03d7db461bbdb6, - limb1: 0x713dfd0a171be156d76a2bdf, - limb2: 0x5f96509c68453669, + limb0: 0xf046f8cd6e5a75fca71dd19b, + limb1: 0x892b4613ef5c58df4ef692a4, + limb2: 0x7527fa36f5738847, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x35e296b576d91605b5b95549, - limb1: 0xad3f71e16899c610d6bced29, - limb2: 0x14858777ec28884f, + limb0: 0x82e4a33f8e4e5881e791d86b, + limb1: 0xbcb062435ae8ec5fdaeac4bf, + limb2: 0x179e1bae9e0f9f34, limb3: 0x0 }, y: u384 { - limb0: 0xd75f8737ddcc57c3deda20dc, - limb1: 0x98e771a5529f3a134dad0e3c, - limb2: 0x6aa2c158ec527111, + limb0: 0x19657783ba5660e255c21849, + limb1: 0x7ed7474bcea7551fc71e46bc, + limb2: 0x596c0a76b75f4756, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x688e963a9aecd709b5004bd4, - limb1: 0xc16253a7449ed4119d50f1b1, - limb2: 0x79ffc418c72b9d35, + limb0: 0xa6832ef7fe97f77de7cd9a62, + limb1: 0xf18a70dbf1dc5a76c685da4a, + limb2: 0x6ac1b7bfc409119f, limb3: 0x0 }, y: u384 { - limb0: 0x302424853859e4d9a535c94f, - limb1: 0xa4aff54d535ca2a10578d0bb, - limb2: 0x9c8e0a9fa8772fa, + limb0: 0x7751161b1a9ef600b865a5af, + limb1: 0xed28aad4835a39a9e8318ceb, + limb2: 0x572e95c429f0e07a, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x2d25174cb0b73c991e1cb79b, - limb1: 0xc0f82624511e895f9f49bd2d, - limb2: 0x2044097b9adac74, + limb0: 0x5e71d0fc5d1c016834779173, + limb1: 0xadd002dfc0ebf1b25c23c252, + limb2: 0x40a868d928ae5233, limb3: 0x0 }, y: u384 { - limb0: 0x7be92dcd2106d9882433e49, - limb1: 0x3a469cdbb0f5ba39aef608ba, - limb2: 0x6b857561c98f7258, + limb0: 0x423fa293418d6e3f59c2e830, + limb1: 0x7a4bcf26f93e71ffd903e68e, + limb2: 0x7837b851ad8da6e3, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xba889d404f7b899333e7e7b3, - limb1: 0x71d267b339a693efdef1a754, - limb2: 0x2ca83976112e196a, + limb0: 0x5907087f8e8e4dacdd039371, + limb1: 0xc390e2073b4e64b9ede0570d, + limb2: 0x6b039a85962f1594, limb3: 0x0 }, y: u384 { - limb0: 0x3a0c28386347237be5361697, - limb1: 0x1ad56f6397306158a025e715, - limb2: 0x9cc3bbf51cb2c36, + limb0: 0xc45eefa03155b8f7eb780b42, + limb1: 0x3db57eb22f9b0394a4d7b78e, + limb2: 0x6cf45b6d90883f60, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x1fa5d1ba88b1c3612d55241f, - limb1: 0xc69070d63b1287f3c34c9d5a, - limb2: 0x5592629ea8c5cf95, + limb0: 0x60dd8ed0a614b596fb37eb1f, + limb1: 0xabb99f371be41e26ec2d8e4b, + limb2: 0x187ecd72c40f159d, limb3: 0x0 }, y: u384 { - limb0: 0xb39150f025ef3a367a7af1a0, - limb1: 0xca26745ae9943d3eb1962a37, - limb2: 0x2dbbe1dafecf309, + limb0: 0x7b66c9263de5e1663622985d, + limb1: 0x118b032cc27a1d6dd192eca6, + limb2: 0x312fb405788616e8, limb3: 0x0 } }, @@ -48657,22 +48689,22 @@ mod msm_tests { .span(); let scalars = array![ u256 { - low: 0xf4f9e2524b5912211668aa7a9d1ac76f, high: 0x131a5d787d62405a22f57c0da002073 + low: 0xe005b86051ef1922fe43c49e149818d1, high: 0xfa83cc0eece328bff7b118e820865d6 }, u256 { - low: 0x72e1e01b9de650ea1382b120ee382f02, high: 0x5ded65f4b30d45164c2fafdd1d250c2 + low: 0x4a84eb038d1fd9b74d2b9deb1beb3711, high: 0xaa5e4678c25166a1ff39849b4e1357d }, u256 { - low: 0xb50f28ed98547c4727558610b6ea0526, high: 0xf07d859c7be626d1dd88096a60f1c66 + low: 0x1775336d71eacd0549a3e80e966e1277, high: 0xa253f6f6288e1a5cc45782198a6416d }, u256 { - low: 0x99c6e37b8857d51e4a7d698c5fba5a8f, high: 0xb94fef020c6c4fddb8de8d8fb35be3f + low: 0x2f1205544a5308cc3dfabc08935ddd72, high: 0x10e1c2b2fcd81b5d24bace4307bf326 }, u256 { - low: 0x62190d180a20417d449e50914c53682f, high: 0xed2e366fc234337d19ba66d726b0989 + low: 0x2648ee38e07405eb215663abc1f254b8, high: 0x29164ebd7ab792809e469e6ec62b2c8 }, u256 { - low: 0x8d668f6b2a6cb93b2e5ccf6ab4e76101, high: 0xf9a35d1b65f9cf0709dc50e5642a51 + low: 0x85940927468ff53d864a7a50b48d73f1, high: 0x6e2edd0d977e9933c49d76fcfc6e625 }, ] .span(); @@ -48680,6 +48712,16 @@ mod msm_tests { array![ ( array![ + 0x0, + 0x0, + 0x1, + -0x1, + 0x0, + 0x1, + -0x1, + 0x0, + 0x0, + 0x0, 0x1, 0x0, -0x1, @@ -48687,398 +48729,385 @@ mod msm_tests { 0x1, 0x1, 0x0, - -0x1, 0x1, 0x1, + 0x0, + 0x1, -0x1, -0x1, 0x0, 0x0, 0x0, - 0x1, 0x0, 0x0, - 0x0, - 0x1, - 0x1, - 0x1, - 0x1, -0x1, - 0x0, - 0x1, + -0x1, -0x1, 0x0, 0x0, 0x0, + -0x1, 0x0, 0x1, 0x0, 0x0, + 0x0, -0x1, 0x1, + 0x1, 0x0, 0x1, 0x1, -0x1, - -0x1, - 0x1, - 0x1, + 0x0, 0x1, + 0x0, -0x1, + 0x0, 0x1, - 0x1, - 0x1, - 0x1, - 0x1, - -0x1, -0x1, -0x1, + 0x0, + 0x0, + 0x0, 0x1, - -0x1, - -0x1, 0x1, + -0x1, 0x0, 0x1, 0x1, 0x1, - -0x1, - 0x1, 0x0, 0x0, 0x0, + -0x1, + 0x1, + -0x1, 0x0, 0x0, 0x1, -0x1, + -0x1, 0x1, 0x0, 0x0, 0x0, - 0x1, - -0x1, - 0x1, - 0x1, - -0x1, - -0x1, -0x1, -0x1, ] .span(), array![ - -0x1, - 0x0, - 0x1, - 0x0, - 0x0, 0x0, + -0x1, 0x1, + -0x1, 0x0, - 0x1, + -0x1, 0x0, -0x1, -0x1, 0x1, - 0x1, - 0x1, - 0x0, - 0x1, -0x1, - 0x1, - 0x1, - 0x0, - 0x1, - 0x0, -0x1, 0x0, -0x1, -0x1, -0x1, - 0x0, 0x1, -0x1, - -0x1, - -0x1, 0x1, 0x0, 0x0, 0x1, 0x1, 0x1, - -0x1, - -0x1, 0x0, + 0x0, + 0x1, -0x1, -0x1, 0x1, 0x0, -0x1, + 0x1, + 0x1, + 0x1, + 0x1, 0x0, -0x1, 0x0, - 0x0, - 0x1, -0x1, -0x1, 0x0, 0x0, 0x1, 0x1, - 0x1, -0x1, 0x0, 0x1, + -0x1, 0x0, - 0x0, + 0x1, 0x1, -0x1, - 0x0, - 0x0, - 0x0, - 0x0, + -0x1, + -0x1, + -0x1, + -0x1, + -0x1, 0x1, -0x1, 0x1, + -0x1, + -0x1, + 0x1, 0x1, -0x1, + -0x1, + 0x1, 0x0, + -0x1, + 0x1, + 0x1, + 0x0, + 0x1, + 0x1, + -0x1, + -0x1, + -0x1, 0x1, ] .span() ), ( array![ - 0x0, -0x1, -0x1, - 0x1, + 0x0, + -0x1, + 0x0, -0x1, - 0x1, 0x1, 0x0, 0x0, + -0x1, 0x1, - 0x1, - 0x0, + -0x1, 0x1, 0x1, 0x1, 0x0, 0x0, - 0x1, -0x1, 0x1, - -0x1, + 0x0, 0x1, 0x1, 0x0, - 0x0, - 0x1, -0x1, - 0x0, - 0x0, 0x1, 0x0, -0x1, + -0x1, 0x1, - 0x1, + 0x0, 0x1, 0x1, 0x0, + 0x0, -0x1, 0x1, - 0x1, 0x0, - 0x1, + 0x0, -0x1, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x0, - -0x1, 0x1, 0x0, 0x0, 0x0, 0x1, - 0x0, - 0x1, 0x1, 0x1, + 0x0, -0x1, + 0x0, 0x1, + 0x0, + 0x0, + 0x0, + 0x1, + 0x0, -0x1, 0x0, + 0x1, + 0x1, -0x1, -0x1, - 0x1, 0x0, -0x1, -0x1, - 0x0, - 0x0, -0x1, 0x1, - 0x0, - 0x0, + 0x1, + -0x1, 0x1, 0x0, -0x1, 0x0, 0x0, + 0x0, + 0x1, 0x1, ] .span(), array![ 0x0, - 0x1, - 0x1, - 0x0, + -0x1, 0x0, 0x1, -0x1, - -0x1, - 0x0, 0x0, -0x1, + -0x1, 0x1, -0x1, + 0x0, + 0x1, -0x1, 0x0, + -0x1, 0x0, 0x1, 0x1, 0x0, - 0x0, - -0x1, - -0x1, -0x1, - 0x0, 0x1, 0x0, -0x1, - 0x0, 0x1, 0x1, -0x1, + 0x1, + 0x0, -0x1, -0x1, -0x1, - -0x1, - 0x1, - 0x0, - 0x0, - 0x1, - 0x1, 0x1, -0x1, + -0x1, + 0x0, 0x0, - 0x1, 0x1, 0x0, -0x1, 0x1, - 0x1, - 0x1, 0x0, 0x0, - -0x1, - -0x1, - -0x1, - -0x1, - -0x1, - -0x1, 0x0, - -0x1, 0x0, -0x1, + 0x0, -0x1, + 0x1, + 0x1, + 0x0, + 0x1, -0x1, -0x1, + 0x1, + 0x0, -0x1, 0x0, 0x0, + 0x1, + 0x0, + 0x0, + 0x1, + 0x1, 0x0, -0x1, 0x0, -0x1, - 0x1, + 0x0, + 0x0, -0x1, -0x1, -0x1, 0x1, + 0x1, + 0x1, + 0x1, -0x1, + 0x0, + 0x1, ] .span() ), ( array![ - -0x1, - -0x1, -0x1, 0x1, - -0x1, 0x1, - -0x1, - -0x1, + 0x0, + 0x1, + 0x0, + 0x1, + 0x1, 0x1, 0x0, - -0x1, - -0x1, - -0x1, - -0x1, 0x0, -0x1, -0x1, 0x0, - 0x0, - 0x1, - 0x1, - -0x1, - 0x1, 0x1, 0x0, 0x1, + 0x0, 0x1, 0x1, - -0x1, - 0x1, - -0x1, + 0x0, -0x1, -0x1, - 0x0, - 0x0, - 0x0, - 0x0, 0x1, 0x0, -0x1, - -0x1, 0x0, 0x0, 0x1, - 0x0, + 0x1, 0x0, 0x0, 0x0, -0x1, - 0x0, - -0x1, -0x1, 0x1, - 0x0, -0x1, -0x1, 0x1, 0x1, + 0x1, + -0x1, + 0x1, 0x0, + -0x1, + 0x1, 0x0, 0x0, -0x1, + 0x1, -0x1, 0x1, + 0x0, + 0x0, -0x1, + 0x0, + 0x1, + -0x1, + 0x0, -0x1, 0x1, 0x0, @@ -49087,56 +49116,54 @@ mod msm_tests { -0x1, 0x0, 0x0, - 0x0, -0x1, - 0x0, - 0x0, + -0x1, + 0x1, 0x1, 0x0, 0x1, + 0x1, + 0x1, + 0x0, + -0x1, + 0x0, -0x1, -0x1, ] .span(), array![ -0x1, + 0x1, 0x0, 0x1, - -0x1, + 0x0, 0x1, 0x0, 0x0, -0x1, - 0x1, + 0x0, -0x1, 0x1, - -0x1, - -0x1, 0x0, - 0x1, -0x1, + 0x0, -0x1, - 0x1, -0x1, + 0x0, -0x1, 0x1, 0x1, 0x0, 0x1, + 0x1, + 0x0, 0x0, 0x1, - -0x1, - -0x1, 0x1, - 0x0, -0x1, -0x1, 0x1, - 0x1, 0x0, - 0x1, - -0x1, - 0x1, -0x1, 0x1, -0x1, @@ -49144,321 +49171,287 @@ mod msm_tests { 0x1, 0x1, 0x0, - 0x0, - 0x0, - 0x0, - 0x1, - 0x1, - 0x0, -0x1, 0x0, 0x0, 0x0, 0x1, - -0x1, - 0x1, - 0x1, - 0x0, 0x1, - 0x0, 0x1, 0x0, - -0x1, 0x1, 0x0, -0x1, -0x1, - 0x1, - -0x1, 0x0, - -0x1, 0x1, - 0x0, - 0x0, -0x1, -0x1, 0x1, - ] - .span() - ), - ( - array![ - 0x1, - 0x1, - -0x1, - 0x1, 0x0, + 0x1, 0x0, -0x1, 0x0, - 0x1, - 0x1, - 0x1, - -0x1, -0x1, 0x1, - 0x0, -0x1, -0x1, - 0x0, - 0x0, - 0x1, - 0x1, - -0x1, - 0x1, -0x1, -0x1, -0x1, 0x1, -0x1, - 0x0, - 0x0, - -0x1, -0x1, 0x1, - 0x1, -0x1, 0x1, 0x1, - 0x1, -0x1, 0x1, 0x1, 0x1, - 0x0, - 0x0, - 0x0, - 0x1, - 0x1, - 0x1, - 0x1, - 0x1, - 0x1, - 0x1, - 0x1, - 0x0, - 0x0, + ] + .span() + ), + ( + array![ 0x0, 0x0, 0x1, 0x0, - 0x0, - -0x1, 0x1, - 0x0, -0x1, - 0x1, + -0x1, + -0x1, -0x1, 0x1, - 0x1, - 0x1, + 0x0, 0x1, -0x1, -0x1, - 0x1, + -0x1, + -0x1, 0x0, + -0x1, + -0x1, 0x0, + -0x1, 0x0, 0x1, - -0x1, 0x0, - -0x1, 0x1, - ] - .span(), - array![ 0x0, -0x1, 0x0, 0x1, - -0x1, 0x1, - 0x0, 0x1, - -0x1, + 0x0, + 0x0, -0x1, 0x0, 0x1, - 0x1, 0x0, 0x1, + 0x0, 0x1, 0x0, -0x1, + -0x1, 0x1, 0x0, + 0x0, -0x1, -0x1, -0x1, 0x0, - 0x0, - -0x1, - 0x1, 0x1, 0x0, + 0x0, 0x1, -0x1, - 0x0, -0x1, 0x0, + 0x0, + 0x0, 0x1, 0x1, 0x0, 0x0, + 0x0, -0x1, 0x1, + 0x0, -0x1, + 0x0, -0x1, -0x1, - 0x0, -0x1, - 0x1, -0x1, 0x1, + 0x0, -0x1, 0x1, 0x1, - 0x0, - 0x0, - 0x0, + 0x1, -0x1, + ] + .span(), + array![ 0x0, 0x0, -0x1, - -0x1, 0x1, 0x1, -0x1, - -0x1, - -0x1, - 0x0, - 0x1, 0x0, 0x1, 0x0, -0x1, + -0x1, + 0x1, 0x0, -0x1, + 0x1, -0x1, 0x0, 0x1, + 0x1, + -0x1, + 0x1, -0x1, -0x1, - 0x0, 0x1, - ] - .span() - ), - ( - array![ + 0x1, + 0x1, 0x1, 0x0, + 0x1, -0x1, 0x1, - 0x0, - 0x0, + -0x1, 0x0, 0x0, -0x1, 0x0, -0x1, - -0x1, - -0x1, - -0x1, 0x0, - -0x1, - -0x1, 0x1, + -0x1, 0x0, + 0x1, 0x0, 0x0, -0x1, - -0x1, - -0x1, 0x1, 0x1, - -0x1, - 0x0, 0x0, 0x0, 0x0, + -0x1, + -0x1, 0x0, - 0x1, 0x0, 0x0, -0x1, 0x1, 0x1, 0x1, + -0x1, + 0x0, 0x1, + 0x0, + 0x0, 0x1, -0x1, + -0x1, 0x1, + 0x0, -0x1, + -0x1, + -0x1, + -0x1, + 0x0, 0x1, 0x1, - 0x0, 0x1, + ] + .span() + ), + ( + array![ 0x0, 0x0, + -0x1, 0x0, -0x1, 0x1, -0x1, + -0x1, + 0x1, 0x1, 0x1, - -0x1, - -0x1, 0x0, 0x0, -0x1, 0x0, 0x0, 0x1, - 0x0, + 0x1, -0x1, 0x1, + 0x1, + -0x1, 0x0, 0x0, 0x0, + -0x1, + 0x1, + -0x1, 0x0, - 0x0, + 0x1, 0x1, 0x0, 0x1, -0x1, -0x1, - 0x0, -0x1, - 0x0, 0x1, - ] - .span(), - array![ + 0x1, 0x0, + -0x1, 0x1, 0x1, - 0x0, 0x1, 0x1, + 0x0, + 0x1, -0x1, 0x0, + -0x1, 0x1, 0x0, + -0x1, + 0x0, 0x0, - 0x1, + -0x1, + -0x1, 0x0, 0x0, - 0x1, 0x0, 0x1, + 0x1, + 0x1, + -0x1, -0x1, 0x1, + 0x0, + 0x0, 0x1, 0x1, 0x0, -0x1, - -0x1, 0x0, 0x0, 0x0, @@ -49468,38 +49461,63 @@ mod msm_tests { 0x0, 0x0, -0x1, + ] + .span(), + array![ + 0x0, + -0x1, -0x1, 0x1, + 0x1, -0x1, - 0x0, -0x1, 0x1, - 0x0, + 0x1, 0x1, 0x0, + 0x1, + 0x1, + 0x1, -0x1, - 0x0, 0x1, -0x1, 0x1, -0x1, 0x0, + 0x0, + 0x0, + 0x0, -0x1, -0x1, 0x1, + 0x1, + 0x1, -0x1, -0x1, 0x0, + 0x0, -0x1, 0x1, + -0x1, + -0x1, 0x1, + -0x1, 0x0, 0x0, + 0x1, -0x1, + 0x1, + -0x1, + 0x1, 0x0, - 0x0, 0x1, -0x1, + 0x1, + -0x1, + 0x1, + 0x1, + 0x1, + 0x0, 0x0, 0x0, 0x1, @@ -49510,174 +49528,186 @@ mod msm_tests { -0x1, -0x1, 0x1, - 0x1, + 0x0, -0x1, + 0x0, + 0x1, + 0x0, + 0x1, -0x1, 0x1, + -0x1, + 0x0, + -0x1, + 0x0, + -0x1, + -0x1, ] .span() ), ( array![ - -0x1, - -0x1, 0x0, 0x1, -0x1, - -0x1, - 0x1, 0x1, 0x0, 0x1, - 0x1, -0x1, - 0x0, - 0x0, -0x1, - 0x0, - 0x0, - 0x0, - 0x0, 0x1, - -0x1, - -0x1, - 0x0, - -0x1, 0x1, - 0x0, - 0x0, - 0x0, - 0x0, + 0x1, 0x1, -0x1, 0x0, -0x1, -0x1, - 0x0, + 0x1, 0x1, 0x0, -0x1, 0x0, - 0x0, - -0x1, -0x1, + 0x0, -0x1, 0x0, 0x1, 0x1, 0x1, + 0x0, + -0x1, 0x1, + 0x0, 0x1, + -0x1, 0x1, -0x1, + -0x1, + -0x1, 0x0, 0x0, -0x1, 0x1, 0x1, + 0x0, + 0x0, + -0x1, 0x1, 0x1, 0x0, - -0x1, + 0x1, 0x0, 0x0, 0x0, - 0x1, - -0x1, -0x1, + 0x1, -0x1, + 0x0, -0x1, 0x0, - 0x1, + 0x0, + 0x0, + -0x1, 0x0, 0x0, 0x0, + -0x1, 0x0, + 0x1, + -0x1, 0x0, + 0x1, + -0x1, 0x0, 0x1, + 0x0, -0x1, + 0x1, + 0x1, -0x1, -0x1, 0x1, ] .span(), array![ - 0x0, - 0x1, 0x1, -0x1, -0x1, + -0x1, 0x0, - 0x0, - 0x0, + -0x1, + -0x1, 0x1, - 0x0, - 0x0, 0x1, - 0x0, 0x1, + 0x1, + 0x0, 0x0, -0x1, + -0x1, + 0x0, + 0x0, + 0x0, 0x0, -0x1, 0x0, -0x1, 0x1, - -0x1, + 0x1, 0x0, 0x1, 0x0, 0x0, + 0x0, 0x1, 0x0, + 0x1, + -0x1, + -0x1, + -0x1, -0x1, 0x1, 0x1, 0x0, - 0x0, -0x1, 0x0, - -0x1, 0x1, 0x1, 0x1, - 0x0, 0x1, -0x1, -0x1, - 0x1, - 0x0, 0x0, 0x0, -0x1, 0x1, + 0x1, 0x0, -0x1, - 0x0, - 0x0, - 0x1, - 0x1, + -0x1, + -0x1, 0x1, + -0x1, + -0x1, + -0x1, 0x0, 0x0, - 0x1, - 0x1, - 0x1, - 0x1, - 0x1, 0x0, 0x1, 0x1, - 0x1, -0x1, - 0x1, - 0x1, -0x1, 0x1, - 0x1, -0x1, 0x0, + 0x0, + -0x1, + 0x1, + 0x0, + 0x0, + 0x0, + -0x1, 0x1, 0x1, ] @@ -49689,87 +49719,87 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0x51e4bee6afd64c0c9d45f63, - limb1: 0xd34cbbc5ba365d242eed686a, - limb2: 0x1367a914d993cc9, + limb0: 0x83c6cbfc374eb6a8caa72279, + limb1: 0x73d08ae8358331620ec202a2, + limb2: 0x71473b9471c8352, limb3: 0x0 }, y: u384 { - limb0: 0x4fd22b270acd9cefcd1a178b, - limb1: 0x2eae03b893b149cc2fd88e9, - limb2: 0x7d531a8af355de18, + limb0: 0x867646647f1d48b7690a87d1, + limb1: 0x4fa1d7b04bb8dd4b8cdd276a, + limb2: 0x10257c3b869526c6, limb3: 0x0 } }, Q_high: G1Point { x: u384 { - limb0: 0x4f39cc8da276736a3524b43e, - limb1: 0x2c003365f086db2e1de7b142, - limb2: 0x28c27f41b56fe05, + limb0: 0x902994266f48a8ed0c0695f, + limb1: 0xfa73edf5699bfe18bcd48839, + limb2: 0x6fd3e3ad28bae7a, limb3: 0x0 }, y: u384 { - limb0: 0x5cae1c3e5df067879eacba92, - limb1: 0x1ca174ce3d26a1f9b2f6451f, - limb2: 0x77d2654f31f06bb6, + limb0: 0xe77795eff5b1842171ec8bb8, + limb1: 0xa101d637265134b4abbecc3b, + limb2: 0x34cb8b556e158f58, limb3: 0x0 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0x43cae66c61e014e1c81c8d69, - limb1: 0x766b49bd0cfa0c6586c15a57, - limb2: 0x4e7cdc5239bd30db, + limb0: 0x3edfeafdf3d65ba99377c530, + limb1: 0x5e1e4792692f0cb4ab70e437, + limb2: 0x6bdab169fea03ae4, limb3: 0x0 }, y: u384 { - limb0: 0x3629c515423333c008951574, - limb1: 0xb96ecb682cea88041858983a, - limb2: 0x15c28d0e41697fd1, + limb0: 0x25669db8ee71ce4b6d3cf8bb, + limb1: 0x3c465f6441d8334bd6a57e70, + limb2: 0x3b5d0b956b41d39c, limb3: 0x0 } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0xfd25afe25cc5a7bd85494535, - limb1: 0xcae4ef44ce93f334158fb9f6, - limb2: 0x4226d3713f0ba191, + limb0: 0xae7b1784eca9d4178d017eed, + limb1: 0x9675fcc670dcc2eb2cb5587c, + limb2: 0x1e36c7852698ebac, limb3: 0x0 }, u384 { - limb0: 0x7ce778769b3f082a35468cf4, - limb1: 0x7580f9ae1a4055b315937fc3, - limb2: 0x6744a74edd7ac120, + limb0: 0x153d420f9ff2d5b0e87150c0, + limb1: 0xc63db1a954477e51fd7290da, + limb2: 0x613aebfa9e8aef4c, limb3: 0x0 }, u384 { - limb0: 0xf622f564e2db2755232f90d7, - limb1: 0xc67ac20dc5f03f2446ad441a, - limb2: 0x10a39c8de8e58965, + limb0: 0x275675a772d6e72338362c1, + limb1: 0xa097ff72280dc34c6b7ec000, + limb2: 0x64be4f0d89005972, limb3: 0x0 }, u384 { - limb0: 0xb7d12a5bbba29a7f43c9dbeb, - limb1: 0x3ad4cca6b1a1a9802488856e, - limb2: 0x60aaf52c3c7d27bb, + limb0: 0xfb727b0373dbf15a591a5eda, + limb1: 0xb07f77f692f953e4a8fc25e8, + limb2: 0x540710914fbf2b32, limb3: 0x0 }, u384 { - limb0: 0x3d77a8bc8e2fd2335685a6ec, - limb1: 0x5710f4662c512cfa343fd4e0, - limb2: 0x56c0078e29edbe93, + limb0: 0x349e281d56fe75ade88e81a0, + limb1: 0x56de16b64742975cacbec2c4, + limb2: 0x5621370da3fc3921, limb3: 0x0 }, u384 { - limb0: 0xba7fa3a97aaa8d9ae352f81b, - limb1: 0xc75c9279d484453ef9cbdbb, - limb2: 0x715bfc329a48414e, + limb0: 0xf6a44b5c2ce410cf9ee981d2, + limb1: 0xf48db8a6162926b52ba214ab, + limb2: 0x55ef1ed7d364899c, limb3: 0x0 }, u384 { - limb0: 0x7779fa28289816e415c3d159, - limb1: 0xffffffffffffffffc069fd99, + limb0: 0x665383a021fbf16a44240372, + limb1: 0xffffffffffffffffb4639a65, limb2: 0x3fffffffffffffff, limb3: 0x0 } @@ -49777,45 +49807,45 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0xde297440170eb34256ae89ff, - limb1: 0xe25a369e484c6ad2ade1d6f8, - limb2: 0x235bee7aec4f4c43, + limb0: 0x21a3189332037278d313684, + limb1: 0x64b1d46d5c51a78f92112ae2, + limb2: 0x51abd5c736b64d8, limb3: 0x0 }, u384 { - limb0: 0x7de7bb52dba0dc9cd599c9d2, - limb1: 0x5e875d9b546db7364be82802, - limb2: 0x30de65624e1ddd0e, + limb0: 0x696d7a50adab7d93acb8436, + limb1: 0x72a9a93defba049e44c902fe, + limb2: 0x349287a1bd02749a, limb3: 0x0 }, u384 { - limb0: 0x7b4054935ecb2487a03a6b8e, - limb1: 0xa7a7037fbaeeb02ad9fdeea4, - limb2: 0x7d6af361b3838dc2, + limb0: 0x140858bb415b9d9f2f7abb98, + limb1: 0xf84ecdb3f4869fb9c3e4455f, + limb2: 0x2e8d1456a75476ca, limb3: 0x0 }, u384 { - limb0: 0xf9045fadb307a35999b59c4, - limb1: 0xb17ce10ea65a509dc17a22f0, - limb2: 0xd2c587820d4a1ae, + limb0: 0x6aab7610583176845351a49a, + limb1: 0x477f5207b040b53b187541a2, + limb2: 0x67c7697068757e0e, limb3: 0x0 }, u384 { - limb0: 0x7221acc3a7e83aba67d10d94, - limb1: 0x54e73daf870c33222ecdd3d6, - limb2: 0x63923d5fafcf0ac6, + limb0: 0x4ec8be6b102fd5625c1680d, + limb1: 0x6cb6acd6ae8d609cf1ec6239, + limb2: 0x6d280e2e78ec53ad, limb3: 0x0 }, u384 { - limb0: 0x7ab4aeb94b26f493a8ecfce5, - limb1: 0x6a88041dff07430deabac7a9, - limb2: 0x2c3f41db64355563, + limb0: 0x5fb07b9edc9a615e94b5706c, + limb1: 0x1e196c70c09a6b4fcddac2a0, + limb2: 0x1da4bec909fa3c8d, limb3: 0x0 }, u384 { - limb0: 0x85dbced5a6540bdb20be9921, - limb1: 0x22921d422eed891d9d7ed8d8, - limb2: 0x56b1d14d65cc8f89, + limb0: 0xc84209540aeb140f37c4b514, + limb1: 0x93ec517f59b5a170e19e3809, + limb2: 0x706d2c1babce65d0, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -49823,114 +49853,114 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x1588f9e06c12c82f01e4cc05, - limb1: 0x57ca031a82780d9e1115c4ed, - limb2: 0x780b6a95082ecdd8, + limb0: 0x6a8dfb15a03474d8176fe49e, + limb1: 0x13a3e1f6a8ed213544fd8f1c, + limb2: 0x2e186d5a48dd157f, limb3: 0x0 }, u384 { - limb0: 0xb81c1bdb8144e7f3ce351f83, - limb1: 0x26f2524baf9a21b78c4b46c2, - limb2: 0x707898c880463f16, + limb0: 0x5c77f5ba94f91f0892b8c2d0, + limb1: 0xae52c1737a7d2239b7cc0963, + limb2: 0x6e1ae68cfad2b04e, limb3: 0x0 }, u384 { - limb0: 0x47eecca7336ec1a8e3cfd39b, - limb1: 0x2359a6c3821e837017c47776, - limb2: 0x34c255cdd34e1f53, + limb0: 0x274a262a5a353e6d1669b7f2, + limb1: 0x10adba4fb765c0b72d9a6c2a, + limb2: 0x110022a8b7d793af, limb3: 0x0 }, u384 { - limb0: 0x5092468019563b985992089a, - limb1: 0x22ce05f401468b9551772ba4, - limb2: 0x319216f9656378f8, + limb0: 0xe26af34cbf459e52909c08b9, + limb1: 0xffcb97462f03ebabf2419197, + limb2: 0x5e0aac1ab351892e, limb3: 0x0 }, u384 { - limb0: 0x9255cdc0015ed7ab1bb3d50e, - limb1: 0x42a52d0b1df0b0855faa91f9, - limb2: 0x293e38f14558ec33, + limb0: 0x7a82f0817a428d6b7a06ccc4, + limb1: 0x9e0cdaad67d41b8ac548ae90, + limb2: 0xd873f6f41113df2, limb3: 0x0 }, u384 { - limb0: 0x7348fc51b0aeb989577e4fa5, - limb1: 0x6a7bfcba101e4a25bd7f3cae, - limb2: 0x17bbe1fded574bca, + limb0: 0x995b522f4b6b0a6ef5e19b20, + limb1: 0x7ba5942a70142fdf5c2b7ec9, + limb2: 0x24de6683441d16dd, limb3: 0x0 }, u384 { - limb0: 0x20c9db6dd979035e0f837551, - limb1: 0xb0e3b74ea53bf4fd857e4520, - limb2: 0xf4fed60a31a255b, + limb0: 0xbd6c4abb4791d032fe5d7338, + limb1: 0xb3e673557ac89d240ac3f40b, + limb2: 0x4c00dc7c118251ba, limb3: 0x0 }, u384 { - limb0: 0xc39ef6bb97785e62ae73c0ce, - limb1: 0x34708d79994d63f1c5649649, - limb2: 0x629c143988521d1c, + limb0: 0x685af80ad2de6cd423dd37b, + limb1: 0x8738f12be7b1ea12396c2f26, + limb2: 0x56ecbf2002388185, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xbd4a887645f7b8efec88eae5, - limb1: 0x2033b22f33acac681edb7c9d, - limb2: 0x22b50e56fdab634, + limb0: 0x619b8b1eb9b73599c5023bb, + limb1: 0x3a2a53355627d1c2929a1128, + limb2: 0x43d293ad969b08df, limb3: 0x0 }, u384 { - limb0: 0x78f73331a606f0e226c334d8, - limb1: 0x6efb4473afcab4b9e257c599, - limb2: 0x247aaeba76a154cf, + limb0: 0xcdedd5344d301a236214b4dc, + limb1: 0x930eacab0c3703bb50ecd5e5, + limb2: 0x5bd15a0a682deb25, limb3: 0x0 }, u384 { - limb0: 0x31b5c67ff87f29d25863ddfa, - limb1: 0xc393ebd91c2bedfef5b3b677, - limb2: 0x7e940ef37589f188, + limb0: 0xf9eccf23547c487e14b4a904, + limb1: 0x2f9000173f7320cd266cd547, + limb2: 0x41fbd2ab8715a197, limb3: 0x0 }, u384 { - limb0: 0x8a103de5a094faa9cabce8d1, - limb1: 0x596e76c56f4e360b7904bc9, - limb2: 0x4bdfbf932371ee46, + limb0: 0x1d47652a10725bf41f4533e, + limb1: 0x23390c73f4b018e05748e06b, + limb2: 0x6f091feebc61ccfb, limb3: 0x0 }, u384 { - limb0: 0x70c4ad047c257d324b520637, - limb1: 0x3c21e0dd7eabbf121a136464, - limb2: 0x32649841e81c5df1, + limb0: 0x546876aeb38b48fc8e115c15, + limb1: 0xb4d7f0c7767274f0d63944b3, + limb2: 0x13433a5ef3e840d7, limb3: 0x0 }, u384 { - limb0: 0x49abb51c811b6abf25f0da95, - limb1: 0x1fbd6681767aff227cb968c7, - limb2: 0xf818e0610fca7f8, + limb0: 0xc9309c7a2007b1287c70b22e, + limb1: 0x2f2d3f21c28f592f2c642b, + limb2: 0x1546248a0567ad0c, limb3: 0x0 }, u384 { - limb0: 0x15b172f086c06e4e1b7bd8fa, - limb1: 0x6a38d3d1f5e89cbadaa4c1f, - limb2: 0x1fbd08b63976f503, + limb0: 0x403d1b6019b8d895c3d32486, + limb1: 0x60ed381ba29cccf8a8b8bbf9, + limb2: 0x683c086179553c4b, limb3: 0x0 }, u384 { - limb0: 0xfc421e91564171a0f0f4bc71, - limb1: 0x7c01a8f453c6972b9a70408f, - limb2: 0x48e00600c0f57070, + limb0: 0x6c1039a1a894efa6683d2834, + limb1: 0xac658166cf14c5c7c136de01, + limb2: 0x7be359dee6eca22c, limb3: 0x0 }, u384 { - limb0: 0x8759d9b0f798d622a1a91425, - limb1: 0x9c1fe52b608280e456737e06, - limb2: 0x98deeaf09ef1449, + limb0: 0x6c55a696890c42ed8d718799, + limb1: 0x4fb14d7e2215a926399378fd, + limb2: 0x7af36b9cafb3fb73, limb3: 0x0 }, u384 { - limb0: 0x85dbced5a6540bdb20be9921, - limb1: 0x22921d422eed891d9d7ed8d8, - limb2: 0x56b1d14d65cc8f89, + limb0: 0xc84209540aeb140f37c4b514, + limb1: 0x93ec517f59b5a170e19e3809, + limb2: 0x706d2c1babce65d0, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -49940,90 +49970,87 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0x6b8d17604fad60ca77fc54e6, - limb1: 0xe0075b28dfa7d0346fae280a, - limb2: 0x22950441c82b7e9d, + limb0: 0xd020ffaae0253fc36eee8224, + limb1: 0xb69be7499422d84f0915945c, + limb2: 0x41279f3e0fd09a69, limb3: 0x0 }, u384 { - limb0: 0x83531336f60c6314a5e4c817, - limb1: 0x539008bc8342ceeafe7a9ed4, - limb2: 0x432639c06471006c, + limb0: 0xcbb33135e18a01e616b8216a, + limb1: 0x17b9954261a8ec95c6ecf7a9, + limb2: 0x7194bd26404b3eb3, limb3: 0x0 }, u384 { - limb0: 0xa2747cbd50ca163faf3d2bfd, - limb1: 0x389be259c0d411c40fe531bd, - limb2: 0x7f899797fbb16c5e, + limb0: 0x7c626849c0e2017e186807bf, + limb1: 0x8e6f471fb02a7daedc89b2b3, + limb2: 0x964338887a088fa, limb3: 0x0 }, u384 { - limb0: 0x458b57dff2526d243f7c4f10, - limb1: 0x4f9058e64d477925a60edf11, - limb2: 0x5aea8d90753e313c, + limb0: 0xae90bcfdf436f2205ed4164, + limb1: 0x8af01e213bdb08a3a160dbdf, + limb2: 0x4618caa72b6d833, limb3: 0x0 }, u384 { - limb0: 0x24bf8d66b4da5180d94bd1df, - limb1: 0xd1b852d1d5fcca79efa3d2ea, - limb2: 0x28b3aee4c51b535d, + limb0: 0x2f735bc8ead9dc0bd4697bf3, + limb1: 0xe86bea8f96f380b4f1da0532, + limb2: 0x4751c23c741e1b46, limb3: 0x0 }, u384 { - limb0: 0x12dc568bef0fca35c713f0e1, - limb1: 0xd7c410293adc2720a9384add, - limb2: 0x49f0bf7504d9ec4e, + limb0: 0x96646fb38d511b3aa87fbc5f, + limb1: 0xedb79987edc42f7bc6d742ce, + limb2: 0x3b0297d0fc3094c8, limb3: 0x0 }, u384 { - limb0: 0xbb2b18b79e3a603904d353a1, - limb1: 0xfc65a65, - limb2: 0x4000000000000000, - limb3: 0x0 + limb0: 0x7d316459e7770f60b1c91cb3, limb1: 0x1402ca86, limb2: 0x0, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0xdb2d01cef3b0bce3fa595a08, - limb1: 0xf904910cc7e2ec0feca991fe, - limb2: 0x38eb74edf5024d01, + limb0: 0x5c5f3c0f3c7bd014c7ec0798, + limb1: 0x6ac95c45198a6a7d49f3f427, + limb2: 0x3ff9759ef65026d9, limb3: 0x0 }, u384 { - limb0: 0x91b85aef581e26ee8751b71a, - limb1: 0xd2d502d8213aded4db41b9f3, - limb2: 0x1011189599e02da1, + limb0: 0xe02ab929b6181347c0d5215, + limb1: 0x87c95b0ec17952b2306036b7, + limb2: 0x33c297c18a97c5c7, limb3: 0x0 }, u384 { - limb0: 0x6de40b307316234eb43f9a2b, - limb1: 0x89ba4e6dd78844bc605ca123, - limb2: 0x38be807a64ee12f, + limb0: 0xcbc853d383515ae0c4f87f78, + limb1: 0xa73d8322f91c736ad0c31e0a, + limb2: 0x4a3e131410e91c94, limb3: 0x0 }, u384 { - limb0: 0x74b3e1bbbbe4c31991e3d284, - limb1: 0x6b254be77c8396f99ebee519, - limb2: 0x2dfe341a66614e5c, + limb0: 0xd0ed44a5f474c09856fcbda6, + limb1: 0x53fadbe8d3abbbd8ccf8493, + limb2: 0x20c671afb6837d9a, limb3: 0x0 }, u384 { - limb0: 0xf1c8e0bd5dfee323117fd033, - limb1: 0xcaefaa8c5742cd918869720b, - limb2: 0x7982b69bbfc3a6f, + limb0: 0xd9e45f53d82bd3aa110eb250, + limb1: 0x7936b4ab505080fa026a01d0, + limb2: 0x3c75b3dd6e90142e, limb3: 0x0 }, u384 { - limb0: 0x1a7ea1badbcf6caa450baa84, - limb1: 0x3cd65b401f4363ffe987e648, - limb2: 0x2e39ff96fc1bcb31, + limb0: 0x1db0cbb4958a45ddbde2f766, + limb1: 0x78da982d4f3c46a29b7e07fc, + limb2: 0x6914f87c0817802b, limb3: 0x0 }, u384 { - limb0: 0x3bc04e366edafd31b56e4446, - limb1: 0xc9dea5a1f89d0b13ae849000, - limb2: 0x555c23ea980ece4d, + limb0: 0x43063c0ddb45402931ab6e2e, + limb1: 0xd48ee72259cd4ba338bb273, + limb2: 0x7084619a205f3aa8, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -50031,114 +50058,114 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x396c0ec79dc8ec1bab318551, - limb1: 0x847be815dc14e3b0da71eaea, - limb2: 0x34fc22cabce34a7a, + limb0: 0xdec05c0e3cad19b243b523e8, + limb1: 0x541f1acffc0ecc1bf9724554, + limb2: 0x6387f74c27429dd, limb3: 0x0 }, u384 { - limb0: 0xf18ef252e0b6b3c1ca28a7ba, - limb1: 0xa1172b234ac707ac7010af59, - limb2: 0x79dc5868a029cd13, + limb0: 0xdf2762b402ed2a3d5fded553, + limb1: 0xa578f64430e4a0b61a702ae2, + limb2: 0x32f53b0417a90c90, limb3: 0x0 }, u384 { - limb0: 0xff6530a1917102f42fb5133f, - limb1: 0xe6863ccbeb4ef38ad08ade29, - limb2: 0x4c0aad32dda7ee4e, + limb0: 0xaa1700dea931acfa2d0fce81, + limb1: 0x7214e151369138eb6d800ae0, + limb2: 0x1f016605563559c, limb3: 0x0 }, u384 { - limb0: 0x15a1048950b2ac344e3e769a, - limb1: 0x8105ef3070795d7ab162fdc5, - limb2: 0x61caf99af4167118, + limb0: 0xae463ed986e7d218e2aafe10, + limb1: 0xcce0c2420de99bfebc7352ad, + limb2: 0x777eeabeb21b97f6, limb3: 0x0 }, u384 { - limb0: 0xac9ddf9ef75881b2f640138, - limb1: 0x89612b9844158096e07b8ff3, - limb2: 0x1f88e4f1c4f9672f, + limb0: 0x290ff18ceaea7d42d2d71622, + limb1: 0x44d764457e0ca79247cc47fe, + limb2: 0x58e5cbb237be7b5a, limb3: 0x0 }, u384 { - limb0: 0x5f013419b09385f6e3bc5c79, - limb1: 0x3941ef1b3205378b3307c9f5, - limb2: 0x33924d1d807bf71e, + limb0: 0x374eb5dc5e8b018eb2e04412, + limb1: 0x7c9e02fbce3b8c190f3d559f, + limb2: 0x5fe8e85631a28541, limb3: 0x0 }, u384 { - limb0: 0x4dc8280d304cc750b03a21f1, - limb1: 0xc382f6e7e59f0f873f0f4b3e, - limb2: 0x2c9f830973ca1349, + limb0: 0xac54baefc8c53b2ed6814561, + limb1: 0xfdd144f37452e1d3c6491912, + limb2: 0x7aed3bb1545b12b1, limb3: 0x0 }, u384 { - limb0: 0x21cbd65b31d20f019d365019, - limb1: 0xa1ec2d2d525725a8212a07e6, - limb2: 0x7fffd83380c0236d, + limb0: 0x5073b93b1749de314a7d0ca0, + limb1: 0x65a589f5a1a62a6afb36d16, + limb2: 0x6373720828cc83d7, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x44c8fdc63528c0a338e59256, - limb1: 0xbc845be3addbb9e67d418b35, - limb2: 0x1dbb46efb1185635, + limb0: 0x5531258de3553333e1fe0499, + limb1: 0x58eb3a654c9f5b32925d5695, + limb2: 0x4c2366b41dbf4c1d, limb3: 0x0 }, u384 { - limb0: 0xa2241302d6b59ffe62b8cc11, - limb1: 0x99c719a14e255662491d6805, - limb2: 0x59697033bde28a48, + limb0: 0x60b2368128cb498e89747665, + limb1: 0x127a16aeaae75d6ff3ff9539, + limb2: 0x50ab557186d867bb, limb3: 0x0 }, u384 { - limb0: 0x7a024fae879ab3de1d901dc7, - limb1: 0xb368694097bd64370bcb2d40, - limb2: 0x602e29f63515bc0e, + limb0: 0xd47f71f38ff7442b3d29bb50, + limb1: 0xfa63ac93793474410babc239, + limb2: 0x2ae6bee9e4764388, limb3: 0x0 }, u384 { - limb0: 0x3766e3b68f77ec36b8eb319, - limb1: 0x213fecc09a4b87876585d4d3, - limb2: 0xe390d0d3369a69f, + limb0: 0xb0b661181d9bd992e12b0da9, + limb1: 0x1b6b11fada2f4b4cc452e669, + limb2: 0x75925e835a36c98f, limb3: 0x0 }, u384 { - limb0: 0x95861785cdca855fbb502658, - limb1: 0xa0095c3c68f7337b6e44c00a, - limb2: 0x6cb1378235cb0054, + limb0: 0x7d32a534621fb9d45035e810, + limb1: 0x3e434af3d482fcf8b5d3d604, + limb2: 0x5685b5ad148456a2, limb3: 0x0 }, u384 { - limb0: 0x44f1b22b56ff898aff43fb11, - limb1: 0xa52886f1af9151118160992a, - limb2: 0x7e638a179b31312f, + limb0: 0xe7997a3c36a0df0d8cad1a6b, + limb1: 0x2e0fb4d36592f1ab92f45299, + limb2: 0x5e62747c1b9340df, limb3: 0x0 }, u384 { - limb0: 0xf3f1f95da5449e1ebf90a53a, - limb1: 0xbad92e2d7ebf550eccebd391, - limb2: 0x391603feb976cfba, + limb0: 0xa1d12ad61cd567042e3e5a00, + limb1: 0x916adffbe53aaf52d8aa5550, + limb2: 0x29fcd7b537859502, limb3: 0x0 }, u384 { - limb0: 0x4e3f43a0680070983a5d1276, - limb1: 0x1ad7078016abb8eb88792b7, - limb2: 0x4d06bb7bca82073, + limb0: 0x3145dd4410d6df73a24defd1, + limb1: 0xb741d90d161dfd1f0d083339, + limb2: 0x37acda140ce60c6f, limb3: 0x0 }, u384 { - limb0: 0x2723ccb288414e393dc7c1c4, - limb1: 0x6e6e3c4d80bea1d655409ca5, - limb2: 0xb88ac6aa1d58a17, + limb0: 0x2a55f6ac41fc276cb69f0ea6, + limb1: 0xaa72793ab0b784790736be59, + limb2: 0x4663a54fadd13f11, limb3: 0x0 }, u384 { - limb0: 0x3bc04e366edafd31b56e4446, - limb1: 0xc9dea5a1f89d0b13ae849000, - limb2: 0x555c23ea980ece4d, + limb0: 0x43063c0ddb45402931ab6e2e, + limb1: 0xd48ee72259cd4ba338bb273, + limb2: 0x7084619a205f3aa8, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -50148,9 +50175,9 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0x3a1971313211995d7a398ee0, - limb1: 0xdd114753ba8bcca21dd5c783, - limb2: 0x67ef895e8b23da8c, + limb0: 0x8c91eddd7e3cb9e0189c1ce6, + limb1: 0xe653aa5cf5d9c384da4d352d, + limb2: 0x780f96b142ba4d07, limb3: 0x0 }, u384 { @@ -50163,15 +50190,15 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0xac4c6ae925d635079f1d24a2, - limb1: 0x131a5f2125bf517d5b87a70f, - limb2: 0x6edbf75f1b4e1c07, + limb0: 0x843c630ba4a1da8e69a79b1d, + limb1: 0x47e65fe3e4ece9b47834ad2, + limb2: 0x6849c77122a3f88d, limb3: 0x0 }, u384 { - limb0: 0x6cfb4d05fba977b402bebe46, - limb1: 0x5d9482dd027f186c5b56f466, - limb2: 0x2ef6fbb9aaebd11f, + limb0: 0xb81d7bbfa53519c79bc7d15e, + limb1: 0xa76dca782d34f53297ba938f, + limb2: 0xd28105b2ed416a0, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -50179,54 +50206,54 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x4647b757d8d156034354c7a7, - limb1: 0xfeb981c0c4a3b7cee97d625d, - limb2: 0x7d61d97103b7da4d, + limb0: 0x532af5bca2ce3114ca172601, + limb1: 0x64f6d7c0e6528dd06d769a88, + limb2: 0x3221bc599a00b687, limb3: 0x0 }, u384 { - limb0: 0xe91005c029dcf4c5d2519951, - limb1: 0xfe7fffc5890afcdd4592f6f1, - limb2: 0x1a6c0fdd1446d36d, + limb0: 0xf2ebbc955dfab9ee3d32d8a0, + limb1: 0x797b6e3ace8d2c3c30b1b7f6, + limb2: 0x479b88b45430ed5f, limb3: 0x0 }, u384 { - limb0: 0xa37215d49c9b0b6bf35cf4a8, - limb1: 0x35989e383ff6a5d583b1da9a, - limb2: 0x3b17de6e145567d5, + limb0: 0x2988785a454c71efaa2452f7, + limb1: 0x67974b68b933eb3b6a737cef, + limb2: 0x7b8b3cdc55ebdab5, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xa41ca4d30ef5ec741d56bca1, - limb1: 0xf07c578a7975d5e440b045dc, - limb2: 0x43ddcdebc137a91f, + limb0: 0xa3c0f67e1839b3769f1f6ec0, + limb1: 0x6c9b7f3b7c4c8e343f79e632, + limb2: 0x4ee7aa0360a9ee44, limb3: 0x0 }, u384 { - limb0: 0x38f9d1012b10fd69c0f19d22, - limb1: 0xcaf5b9549e5ab02057017024, - limb2: 0x65394d18b8a547eb, + limb0: 0x1b2c4a16c61b226e185b82cb, + limb1: 0x8973e8646ea1a0122c54e2b4, + limb2: 0x56b9ddb364d89df7, limb3: 0x0 }, u384 { - limb0: 0x749570279dd5e993838f30ac, - limb1: 0x7193bdf959f425b60022c2fd, - limb2: 0x43ab8165caf78c4b, + limb0: 0x501b6233f8fac352861209cf, + limb1: 0x5867ae8066a9a064b1685271, + limb2: 0x547e7a81675c66a6, limb3: 0x0 }, u384 { - limb0: 0xb8f195e0d248169697d93be2, - limb1: 0x44b2402e873a8f53c7405d6c, - limb2: 0x4c2aa432c107daed, + limb0: 0x90e18e035113bc1d6263b25d, + limb1: 0x3616470b9fca0c71b33c012f, + limb2: 0x45987444c85db773, limb3: 0x0 }, u384 { - limb0: 0x6cfb4d05fba977b402bebe46, - limb1: 0x5d9482dd027f186c5b56f466, - limb2: 0x2ef6fbb9aaebd11f, + limb0: 0xb81d7bbfa53519c79bc7d15e, + limb1: 0xa76dca782d34f53297ba938f, + limb2: 0xd28105b2ed416a0, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -50236,12 +50263,19 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0xf78cd987e0436fe03fcfed3, - limb1: 0x78aafe7a25472e36af70ebef, - limb2: 0x2c8a688d9cf487b4, + limb0: 0xd6b2fdc3b2eb71712c15ae8c, + limb1: 0xf9236a2fe2be2c28c8a241e0, + limb2: 0x3aa2d3c9964f9a6c, limb3: 0x0 }, - g_rhs_sqrt: array![], + g_rhs_sqrt: array![ + u384 { + limb0: 0xcae9f27a5f97877c7f6fdd28, + limb1: 0xbd6d30360ebaf15db76f0491, + limb2: 0x342c35cde06fa4b7, + limb3: 0x0 + } + ], }; let res = msm_g1( points, scalars, scalars_digits_decompositions, msm_hint, derive_point_from_x_hint, 4 @@ -50249,15 +50283,15 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0x4b167c4c18b03d3cda5459a0, - limb1: 0xcba9d871319b7338d591552, - limb2: 0x228f66355cb48ea4, + limb0: 0xda230047ad5c163b353a3737, + limb1: 0x648e8ab77fbe2c32f14ee161, + limb2: 0x4370a6e8bba4f2f, limb3: 0x0 }, y: u384 { - limb0: 0xd4ff7a7e41adc2fe401f86d5, - limb1: 0x32ec18cb033610e0056ef128, - limb2: 0x60a8954c3304c919, + limb0: 0x36ab8f2b1068600bed840aa1, + limb1: 0x42b66b5812151c501d9195eb, + limb2: 0x5aeed8c7ab6da659, limb3: 0x0 } } @@ -50270,99 +50304,99 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0xd42899d09c1b6781ca85f34f, - limb1: 0xfd84b29e27338faf4f79503f, - limb2: 0x7ab3289f77c0ad9c, + limb0: 0x7238f02b9f20e09c2181a557, + limb1: 0x2cedcc5b0be371c337fd7e9e, + limb2: 0x41f3bbeb280fe8a2, limb3: 0x0 }, y: u384 { - limb0: 0x7ea98fc97f37351810f6863, - limb1: 0x6179ad101872c0d1d72d499f, - limb2: 0x12260130d0830871, + limb0: 0xf046f8cd6e5a75fca71dd19b, + limb1: 0x892b4613ef5c58df4ef692a4, + limb2: 0x7527fa36f5738847, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x43c0ca1b70ee603b78adf9a9, - limb1: 0xccaf3ca3b980e5566815aea4, - limb2: 0x6d3f86ae67eb5b40, + limb0: 0x82e4a33f8e4e5881e791d86b, + limb1: 0xbcb062435ae8ec5fdaeac4bf, + limb2: 0x179e1bae9e0f9f34, limb3: 0x0 }, y: u384 { - limb0: 0xbebd89c38d8bcc4e57353fdd, - limb1: 0xcf4b37833e62a6482cf40c71, - limb2: 0x5e6783afc2eabece, + limb0: 0x19657783ba5660e255c21849, + limb1: 0x7ed7474bcea7551fc71e46bc, + limb2: 0x596c0a76b75f4756, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x5cd8a03cdc5d721242e9f8b9, - limb1: 0x5854c766dc3259fd611ad32d, - limb2: 0x2d69f70800fee659, + limb0: 0xa6832ef7fe97f77de7cd9a62, + limb1: 0xf18a70dbf1dc5a76c685da4a, + limb2: 0x6ac1b7bfc409119f, limb3: 0x0 }, y: u384 { - limb0: 0xee03382eb0b3b513e38da0bd, - limb1: 0xd80de9f3d4d347f790d3af73, - limb2: 0x7fa051dc7e40e146, + limb0: 0x7751161b1a9ef600b865a5af, + limb1: 0xed28aad4835a39a9e8318ceb, + limb2: 0x572e95c429f0e07a, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xda5447d4b7184deceff6d1b2, - limb1: 0xa38827ce1445b931aa9e9561, - limb2: 0x42b43ba140f64bc3, + limb0: 0x5e71d0fc5d1c016834779173, + limb1: 0xadd002dfc0ebf1b25c23c252, + limb2: 0x40a868d928ae5233, limb3: 0x0 }, y: u384 { - limb0: 0x70d196f5413d668318cc9a59, - limb1: 0xaa05a5a9da7fa5877302371e, - limb2: 0x37ff0ad97de7d8c, + limb0: 0x423fa293418d6e3f59c2e830, + limb1: 0x7a4bcf26f93e71ffd903e68e, + limb2: 0x7837b851ad8da6e3, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x86cdd2219e4ac646426248a4, - limb1: 0x83c7826bd7b004bb555dc11d, - limb2: 0x7692b7974f2b1c51, + limb0: 0x5907087f8e8e4dacdd039371, + limb1: 0xc390e2073b4e64b9ede0570d, + limb2: 0x6b039a85962f1594, limb3: 0x0 }, y: u384 { - limb0: 0x225b0aa3185b8bfd1b3f5fb8, - limb1: 0x18718cabfacfb462cc72a47f, - limb2: 0xd5e5aa7e9ba6aa9, + limb0: 0xc45eefa03155b8f7eb780b42, + limb1: 0x3db57eb22f9b0394a4d7b78e, + limb2: 0x6cf45b6d90883f60, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xb962773f0d6eda85ad7da892, - limb1: 0xf11974e7942e4ea2070ed2ff, - limb2: 0x56736c7a1a85215c, + limb0: 0x60dd8ed0a614b596fb37eb1f, + limb1: 0xabb99f371be41e26ec2d8e4b, + limb2: 0x187ecd72c40f159d, limb3: 0x0 }, y: u384 { - limb0: 0x69c51143b905564944650fa0, - limb1: 0x2f7cb950047e2ed8343e156b, - limb2: 0x5d369d57509df69a, + limb0: 0x7b66c9263de5e1663622985d, + limb1: 0x118b032cc27a1d6dd192eca6, + limb2: 0x312fb405788616e8, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x5c0aad631b9df05968c41c91, - limb1: 0x8bab2bb4cf34be77f14847bb, - limb2: 0x5be15c49a4ec5cd1, + limb0: 0xf4ac3e1f1f068dd64c86fdda, + limb1: 0x24594e591d82a7f964b5ec9f, + limb2: 0x6ca311b5421c57fc, limb3: 0x0 }, y: u384 { - limb0: 0x4f9df544c145a2f0e55aa8da, - limb1: 0x80a9a2e6a0c540f4dff47111, - limb2: 0x10ae6b549a7912c9, + limb0: 0x42745cd7b146012455434d0f, + limb1: 0x6aa4f552b7bdc93a613bd9df, + limb2: 0x5832a065d7199c7a, limb3: 0x0 } }, @@ -50370,25 +50404,25 @@ mod msm_tests { .span(); let scalars = array![ u256 { - low: 0xe4402952a3244debde1ba40d72f891f5, high: 0x81256d13e1c98b706ca1804b5a37327 + low: 0x4a84eb038d1fd9b74d2b9deb1beb3711, high: 0xaa5e4678c25166a1ff39849b4e1357d }, u256 { - low: 0x92d0177ee03373bcb4d12dd0077a3e0c, high: 0xb470ba3582a21397cfcbb07977e4c2d + low: 0x1775336d71eacd0549a3e80e966e1277, high: 0xa253f6f6288e1a5cc45782198a6416d }, u256 { - low: 0x51438bea3c80756b63c44c166b6bc89e, high: 0xecb27512b17abfb7914ca886dbdc41f + low: 0x2f1205544a5308cc3dfabc08935ddd72, high: 0x10e1c2b2fcd81b5d24bace4307bf326 }, u256 { - low: 0x4860d84a14ef3b6c0051ad96c8aaa259, high: 0xd0097aedf992e4f8a08d75fa2aa0e8f + low: 0x2648ee38e07405eb215663abc1f254b8, high: 0x29164ebd7ab792809e469e6ec62b2c8 }, u256 { - low: 0xedf15be2907d563fae8e195dd8bb9fe5, high: 0x4e43d1dfaaf2b109ddceba9ed4278cf + low: 0x85940927468ff53d864a7a50b48d73f1, high: 0x6e2edd0d977e9933c49d76fcfc6e625 }, u256 { - low: 0x106aa4512a03b4197dbfec255426e23d, high: 0x538652db7cfee9afaf26ab7796a4bb3 + low: 0xd344749096fd35d0adf20806e5214606, high: 0x8ce86e89466e4726b5f5241f323ca74 }, u256 { - low: 0x39068fc83239f0de7800f6478671f80, high: 0x61dc352954879ba26f407e4f311adf4 + low: 0x30bcab0ed857010255d44936a1515607, high: 0x8ac57cfbb42e0b20426465e3e37952d }, ] .span(); @@ -50396,26 +50430,24 @@ mod msm_tests { array![ ( array![ - 0x1, - 0x1, - 0x1, -0x1, - 0x1, -0x1, 0x0, -0x1, - 0x1, - -0x1, - -0x1, + 0x0, -0x1, + 0x1, + 0x0, + 0x0, -0x1, + 0x1, -0x1, 0x1, + 0x1, + 0x1, 0x0, - -0x1, 0x0, -0x1, - 0x0, 0x1, 0x0, 0x1, @@ -50423,421 +50455,418 @@ mod msm_tests { 0x0, -0x1, 0x1, + 0x0, -0x1, - 0x1, -0x1, 0x1, 0x0, 0x1, - -0x1, - -0x1, 0x1, - -0x1, - -0x1, + 0x0, 0x0, -0x1, 0x1, 0x0, - 0x1, 0x0, - 0x1, -0x1, 0x0, - -0x1, - -0x1, - 0x1, + 0x0, + 0x0, + 0x0, + 0x0, 0x1, + 0x0, + 0x0, + 0x0, 0x1, 0x1, 0x1, - -0x1, 0x0, -0x1, - -0x1, - -0x1, - -0x1, - 0x1, 0x0, - -0x1, 0x1, + 0x0, + 0x0, + 0x0, 0x1, 0x0, + -0x1, + 0x0, 0x1, 0x1, -0x1, - 0x0, - 0x0, -0x1, 0x0, -0x1, -0x1, -0x1, 0x1, + 0x1, -0x1, + 0x1, 0x0, - 0x0, - -0x1, -0x1, + 0x0, + 0x0, + 0x0, + 0x1, + 0x1, ] .span(), array![ - 0x1, - 0x0, 0x0, -0x1, + 0x0, + 0x1, -0x1, 0x0, + -0x1, + -0x1, 0x1, + -0x1, + 0x0, 0x1, -0x1, 0x0, + -0x1, 0x0, 0x1, 0x1, + 0x0, + -0x1, 0x1, + 0x0, + -0x1, 0x1, 0x1, + -0x1, 0x1, 0x0, -0x1, -0x1, - 0x1, -0x1, 0x1, -0x1, + -0x1, + 0x0, + 0x0, 0x1, + 0x0, + -0x1, 0x1, + 0x0, + 0x0, + 0x0, + 0x0, + -0x1, + 0x0, + -0x1, 0x1, 0x1, 0x0, + 0x1, -0x1, -0x1, 0x1, 0x0, -0x1, + 0x0, + 0x0, + 0x1, + 0x0, + 0x0, 0x1, 0x1, 0x0, -0x1, 0x0, + -0x1, 0x0, 0x0, - 0x1, - 0x1, -0x1, -0x1, - 0x1, -0x1, + 0x1, + 0x1, + 0x1, + 0x1, -0x1, 0x0, - 0x0, + 0x1, + ] + .span() + ), + ( + array![ -0x1, + 0x1, + 0x1, 0x0, 0x1, + 0x0, 0x1, 0x1, - -0x1, 0x1, 0x0, 0x0, -0x1, - 0x0, - -0x1, -0x1, 0x0, - -0x1, + 0x1, 0x0, - -0x1, + 0x1, + 0x0, + 0x1, + 0x1, 0x0, -0x1, -0x1, - -0x1, - -0x1, - -0x1, + 0x1, 0x0, -0x1, 0x0, 0x0, 0x1, 0x1, - ] - .span() - ), - ( - array![ 0x0, - -0x1, - -0x1, + 0x0, 0x0, -0x1, -0x1, + 0x1, + -0x1, -0x1, 0x1, 0x1, + 0x1, -0x1, 0x1, 0x0, -0x1, 0x1, - 0x1, - -0x1, 0x0, - -0x1, 0x0, -0x1, - 0x0, 0x1, -0x1, - -0x1, - 0x0, - 0x0, 0x1, 0x0, - -0x1, 0x0, -0x1, - -0x1, 0x0, 0x1, + -0x1, 0x0, + -0x1, 0x1, + 0x0, -0x1, -0x1, -0x1, 0x0, 0x0, + -0x1, + -0x1, 0x1, - 0x0, 0x1, 0x0, 0x1, 0x1, - 0x0, 0x1, 0x0, - 0x1, -0x1, 0x0, - 0x0, - 0x0, -0x1, - 0x0, -0x1, + ] + .span(), + array![ -0x1, + 0x1, 0x0, - -0x1, - -0x1, 0x1, 0x0, - -0x1, + 0x1, 0x0, 0x0, -0x1, 0x0, - 0x1, - 0x0, -0x1, 0x1, - -0x1, - -0x1, 0x0, -0x1, 0x0, + -0x1, + -0x1, 0x0, -0x1, 0x1, - ] - .span(), - array![ 0x1, + 0x0, 0x1, 0x1, 0x0, - 0x1, - -0x1, + 0x0, 0x1, 0x1, -0x1, - 0x1, -0x1, + 0x1, 0x0, -0x1, - 0x0, 0x1, -0x1, - 0x0, - 0x0, - 0x0, - 0x0, -0x1, 0x1, - 0x0, - -0x1, 0x1, 0x0, -0x1, 0x0, 0x0, - 0x1, 0x0, - -0x1, - -0x1, 0x1, 0x1, + 0x1, + 0x0, + 0x1, 0x0, -0x1, -0x1, - 0x1, - 0x1, 0x0, 0x1, + -0x1, + -0x1, 0x1, 0x0, 0x1, - 0x1, 0x0, -0x1, 0x0, - 0x0, - 0x1, + -0x1, 0x1, + -0x1, + -0x1, + -0x1, + -0x1, + -0x1, 0x1, - 0x0, -0x1, -0x1, 0x1, - 0x0, -0x1, + 0x1, + 0x1, + -0x1, + 0x1, + 0x1, + 0x1, + ] + .span() + ), + ( + array![ 0x0, 0x0, 0x1, + 0x0, 0x1, -0x1, -0x1, - 0x1, - 0x1, -0x1, -0x1, 0x1, + 0x0, 0x1, -0x1, -0x1, - 0x0, - -0x1, -0x1, -0x1, 0x0, - 0x1, - ] - .span() - ), - ( - array![ -0x1, - 0x0, - 0x1, -0x1, 0x0, -0x1, - -0x1, - 0x0, - 0x0, 0x0, 0x1, 0x0, - -0x1, 0x1, 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x1, - 0x1, - 0x1, + -0x1, 0x0, 0x1, 0x1, 0x1, 0x0, 0x0, - 0x0, -0x1, 0x0, - -0x1, - -0x1, + 0x1, 0x0, - -0x1, 0x1, 0x0, + 0x1, 0x0, -0x1, -0x1, + 0x1, + 0x0, + 0x0, -0x1, -0x1, -0x1, - 0x1, 0x0, 0x1, 0x0, - -0x1, + 0x0, 0x1, -0x1, + -0x1, + 0x0, + 0x0, 0x0, 0x1, 0x1, - 0x1, - 0x0, 0x0, 0x0, 0x0, - 0x1, - -0x1, - 0x1, -0x1, 0x1, 0x0, - 0x1, - -0x1, -0x1, + 0x0, -0x1, - 0x1, - 0x1, - 0x1, - 0x1, - 0x1, - 0x1, -0x1, -0x1, -0x1, 0x1, + 0x0, + -0x1, 0x1, 0x1, 0x1, + -0x1, ] .span(), array![ - -0x1, 0x0, - 0x1, - -0x1, 0x0, -0x1, - 0x0, 0x1, + 0x1, + -0x1, 0x0, 0x1, + 0x0, + -0x1, -0x1, 0x1, + 0x0, + -0x1, 0x1, -0x1, 0x0, 0x1, 0x1, - 0x0, - 0x0, - 0x0, - -0x1, -0x1, 0x1, -0x1, @@ -50847,451 +50876,457 @@ mod msm_tests { 0x1, 0x1, 0x0, - 0x0, 0x1, + -0x1, + 0x1, + -0x1, 0x0, 0x0, + -0x1, 0x0, + -0x1, 0x0, 0x1, -0x1, - 0x1, 0x0, 0x1, 0x0, 0x0, - 0x0, - 0x0, -0x1, 0x1, 0x1, 0x0, - 0x1, 0x0, 0x0, -0x1, - 0x0, -0x1, 0x0, + 0x0, + 0x0, -0x1, 0x1, 0x1, - -0x1, 0x1, -0x1, + 0x0, + 0x1, + 0x0, + 0x0, 0x1, -0x1, -0x1, + 0x1, + 0x0, -0x1, -0x1, -0x1, - 0x0, - 0x1, -0x1, 0x0, - 0x0, - 0x0, 0x1, 0x1, - -0x1, - -0x1, 0x1, ] .span() ), ( array![ - 0x1, - 0x1, + 0x0, + 0x0, -0x1, + 0x0, -0x1, 0x1, -0x1, - 0x0, - -0x1, -0x1, 0x1, - -0x1, 0x1, - -0x1, - -0x1, - -0x1, + 0x1, + 0x0, 0x0, -0x1, - -0x1, - -0x1, - -0x1, + 0x0, + 0x0, 0x1, 0x1, + -0x1, 0x1, - 0x0, 0x1, -0x1, 0x0, 0x0, - 0x1, - 0x0, - -0x1, 0x0, -0x1, 0x1, + -0x1, 0x0, 0x1, 0x1, - 0x1, - -0x1, - -0x1, 0x0, 0x1, - 0x1, + -0x1, -0x1, -0x1, 0x1, 0x1, 0x0, - 0x0, - -0x1, - -0x1, - -0x1, -0x1, - -0x1, - 0x0, 0x1, 0x1, - -0x1, 0x1, - -0x1, 0x1, 0x0, - 0x0, 0x1, -0x1, 0x0, -0x1, 0x1, - 0x1, - -0x1, - 0x1, - -0x1, - 0x1, - -0x1, 0x0, - 0x1, -0x1, 0x0, 0x0, - 0x1, - 0x1, - ] - .span(), - array![ + -0x1, -0x1, 0x0, 0x0, 0x0, 0x1, - -0x1, + 0x1, 0x1, -0x1, -0x1, + 0x1, 0x0, 0x0, 0x1, 0x1, 0x0, + -0x1, + 0x0, + 0x0, 0x0, - 0x1, -0x1, + 0x0, 0x1, + 0x0, + 0x0, + -0x1, + ] + .span(), + array![ 0x0, -0x1, -0x1, 0x1, - -0x1, 0x1, -0x1, - 0x0, + -0x1, + 0x1, 0x1, 0x1, 0x0, 0x1, 0x1, - 0x0, 0x1, + -0x1, 0x1, + -0x1, 0x1, + -0x1, 0x0, 0x0, 0x0, 0x0, -0x1, -0x1, - 0x0, 0x1, - -0x1, - -0x1, - -0x1, + 0x1, 0x1, -0x1, -0x1, 0x0, 0x0, - 0x0, - 0x0, - 0x0, - 0x1, - 0x0, -0x1, 0x1, + -0x1, + -0x1, 0x1, -0x1, 0x0, 0x0, 0x1, -0x1, + 0x1, -0x1, 0x1, + 0x0, + 0x1, -0x1, 0x1, -0x1, 0x1, + 0x1, + 0x1, + 0x0, + 0x0, + 0x0, + 0x1, + 0x1, + 0x1, + 0x0, + 0x1, -0x1, -0x1, + 0x1, + 0x0, -0x1, + 0x0, + 0x1, + 0x0, + 0x1, -0x1, 0x1, -0x1, 0x0, + -0x1, 0x0, - 0x1, + -0x1, + -0x1, ] .span() ), ( array![ - -0x1, 0x0, 0x1, - 0x0, - 0x0, - 0x0, -0x1, - 0x0, - 0x0, 0x1, - -0x1, + 0x0, 0x1, -0x1, -0x1, 0x1, 0x1, - -0x1, - 0x0, - 0x0, - 0x0, - 0x0, + 0x1, 0x1, -0x1, 0x0, - 0x0, -0x1, - 0x1, + -0x1, 0x1, 0x1, 0x0, -0x1, 0x0, -0x1, - -0x1, + 0x0, -0x1, 0x0, 0x1, 0x1, - 0x0, 0x1, 0x0, -0x1, - -0x1, - 0x0, - 0x1, 0x1, 0x0, - -0x1, - -0x1, 0x1, - 0x1, - 0x0, -0x1, 0x1, -0x1, + -0x1, + -0x1, + 0x0, 0x0, -0x1, 0x1, 0x1, 0x0, - 0x1, - 0x1, - -0x1, 0x0, + -0x1, 0x1, 0x1, - -0x1, + 0x0, 0x1, 0x0, + 0x0, + 0x0, + -0x1, 0x1, -0x1, + 0x0, -0x1, + 0x0, + 0x0, + 0x0, -0x1, 0x0, 0x0, + 0x0, -0x1, + 0x0, + 0x1, -0x1, + 0x0, + 0x1, -0x1, + 0x0, 0x1, 0x0, -0x1, + 0x1, + 0x1, -0x1, + -0x1, + 0x1, ] .span(), array![ + 0x1, + -0x1, + -0x1, + -0x1, 0x0, + -0x1, + -0x1, 0x1, 0x1, 0x1, + 0x1, + 0x0, + 0x0, -0x1, -0x1, 0x0, 0x0, 0x0, - 0x1, 0x0, + -0x1, 0x0, -0x1, 0x1, - -0x1, - 0x0, + 0x1, 0x0, 0x1, 0x0, 0x0, - 0x1, 0x0, + 0x1, 0x0, 0x1, -0x1, + -0x1, + -0x1, + -0x1, 0x1, 0x1, + 0x0, -0x1, 0x0, 0x1, 0x1, 0x1, 0x1, - 0x1, - 0x1, - 0x1, - -0x1, -0x1, -0x1, - 0x1, 0x0, 0x0, - 0x1, -0x1, 0x1, - -0x1, 0x1, 0x0, - 0x0, - 0x0, -0x1, - 0x0, + -0x1, -0x1, 0x1, - 0x1, + -0x1, + -0x1, + -0x1, + 0x0, 0x0, 0x0, - 0x1, 0x1, 0x1, -0x1, + -0x1, 0x1, - 0x1, - 0x1, - 0x1, + -0x1, 0x0, 0x0, - 0x1, -0x1, 0x1, 0x0, - 0x1, - 0x1, + 0x0, 0x0, -0x1, 0x1, 0x1, - -0x1, ] .span() ), ( array![ - 0x1, -0x1, -0x1, -0x1, - 0x1, - 0x1, - 0x0, - 0x1, 0x0, - 0x0, - 0x0, - 0x1, - 0x1, -0x1, - 0x1, + -0x1, + -0x1, 0x0, + -0x1, 0x1, 0x1, + -0x1, 0x0, 0x0, 0x0, - 0x1, - 0x0, -0x1, - 0x1, + -0x1, + -0x1, 0x1, 0x1, 0x0, + 0x0, + 0x1, 0x1, + -0x1, + 0x1, + -0x1, + -0x1, + -0x1, + -0x1, 0x0, + -0x1, 0x0, 0x1, 0x0, + 0x1, 0x0, - -0x1, + 0x1, 0x1, 0x1, -0x1, - -0x1, 0x0, 0x0, 0x0, + 0x1, + 0x0, + -0x1, 0x0, -0x1, 0x0, -0x1, + -0x1, 0x1, 0x1, - 0x0, 0x1, - -0x1, 0x1, -0x1, -0x1, + 0x0, + 0x0, + -0x1, -0x1, + 0x1, 0x0, 0x0, 0x1, @@ -51299,268 +51334,267 @@ mod msm_tests { 0x1, 0x1, -0x1, - 0x0, -0x1, -0x1, 0x0, - -0x1, 0x0, -0x1, - 0x1, 0x0, 0x1, 0x0, - 0x1, - 0x0, - 0x0, + -0x1, 0x0, -0x1, - 0x1, + -0x1, ] .span(), array![ - 0x1, -0x1, 0x1, - 0x0, 0x1, 0x0, - -0x1, - 0x0, - -0x1, - 0x1, 0x1, - 0x1, - -0x1, - 0x1, - -0x1, - -0x1, -0x1, -0x1, + 0x0, 0x1, - -0x1, + 0x0, 0x0, 0x0, -0x1, - 0x1, - 0x1, + -0x1, + 0x0, + 0x0, 0x0, 0x1, -0x1, -0x1, - 0x0, + 0x1, + -0x1, + 0x1, -0x1, -0x1, + 0x0, -0x1, -0x1, -0x1, -0x1, 0x0, - 0x1, -0x1, 0x1, 0x1, 0x1, - 0x1, + -0x1, -0x1, 0x1, 0x0, -0x1, 0x0, 0x1, - 0x1, - 0x0, 0x0, -0x1, 0x1, - -0x1, + 0x1, + 0x1, + 0x0, -0x1, -0x1, 0x0, + 0x1, -0x1, 0x0, 0x1, 0x0, -0x1, + 0x0, -0x1, -0x1, 0x0, - 0x1, - 0x1, - 0x1, - 0x0, + -0x1, 0x0, 0x0, -0x1, + 0x0, + 0x1, + 0x0, -0x1, 0x1, + 0x0, + 0x1, + 0x1, 0x1, 0x1, -0x1, + 0x0, + 0x1, + 0x1, ] .span() ), ( array![ + 0x1, -0x1, -0x1, - -0x1, + 0x0, 0x1, 0x1, 0x0, 0x1, - -0x1, 0x1, 0x1, 0x1, -0x1, - -0x1, - 0x0, - 0x1, - 0x1, 0x1, -0x1, 0x0, - -0x1, 0x0, -0x1, -0x1, -0x1, + -0x1, 0x0, + -0x1, 0x1, + -0x1, 0x0, + -0x1, 0x0, -0x1, -0x1, 0x1, 0x0, -0x1, + 0x0, -0x1, - -0x1, + 0x0, + 0x0, + 0x0, -0x1, 0x0, - 0x1, + 0x0, + 0x0, -0x1, - 0x1, -0x1, - 0x1, -0x1, 0x0, - 0x0, - 0x1, - 0x1, - 0x0, 0x1, 0x0, - 0x1, -0x1, 0x1, 0x0, - 0x1, - 0x1, - 0x1, - 0x0, 0x0, -0x1, - 0x1, -0x1, - 0x0, + -0x1, + -0x1, + -0x1, + -0x1, + -0x1, 0x1, 0x0, - 0x1, -0x1, 0x1, 0x0, + -0x1, 0x1, 0x0, -0x1, + -0x1, 0x0, -0x1, -0x1, 0x1, + -0x1, + 0x1, + -0x1, + 0x1, + 0x0, 0x0, + 0x1, -0x1, ] .span(), array![ - 0x0, - 0x0, -0x1, + 0x1, + -0x1, + 0x0, -0x1, 0x1, 0x0, + 0x0, + 0x0, + 0x0, + -0x1, + -0x1, + -0x1, -0x1, 0x0, 0x1, + -0x1, 0x1, 0x1, -0x1, - 0x0, - 0x0, 0x1, - 0x0, -0x1, 0x1, - -0x1, - -0x1, 0x1, 0x0, 0x1, 0x1, -0x1, + 0x1, 0x0, 0x0, -0x1, -0x1, - 0x1, -0x1, - 0x1, + -0x1, 0x0, - 0x1, 0x0, - -0x1, - -0x1, 0x0, - -0x1, - -0x1, 0x1, - 0x0, 0x1, 0x0, - -0x1, - -0x1, - -0x1, + 0x0, + 0x0, 0x1, + -0x1, + 0x0, 0x1, 0x0, + 0x0, + 0x0, 0x1, 0x1, - -0x1, 0x0, -0x1, 0x0, - -0x1, + 0x0, 0x0, 0x1, -0x1, + 0x1, + 0x1, + 0x0, -0x1, -0x1, - 0x1, 0x0, -0x1, + -0x1, + 0x0, 0x0, 0x1, 0x1, + 0x1, -0x1, 0x0, - -0x1, 0x0, - 0x1, + -0x1, 0x0, 0x1, - -0x1, 0x1, - -0x1, ] .span() ), @@ -51570,93 +51604,93 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0x30c16fe20b3c7a5e9a74e5ed, - limb1: 0xd6c87b3858080e8788c50cb, - limb2: 0x726978520532ce2, + limb0: 0x6f5d0eb9dba8fe3a48137681, + limb1: 0x7fed9c470842f2f63a55abbd, + limb2: 0x7261d1798b9563b8, limb3: 0x0 }, y: u384 { - limb0: 0x59f89fb3e3f8059c99629e4e, - limb1: 0xb935b046f7240cb5212f5048, - limb2: 0x10ae671de618a18f, + limb0: 0x6fc489744209c4815698047f, + limb1: 0xe0c668a875a3209c8bb07cd6, + limb2: 0x7fd1dea5adc70aa7, limb3: 0x0 } }, Q_high: G1Point { x: u384 { - limb0: 0x2db6936f5badba0f36c33ce0, - limb1: 0xd975a701f84c6dfbcf6f5284, - limb2: 0x2fa59b75aa997e22, + limb0: 0x86bcfecd19cf6e25812ec4cf, + limb1: 0x653080b1890c3af0387c86c9, + limb2: 0x34abf7016bf9457e, limb3: 0x0 }, y: u384 { - limb0: 0x8ddff165e6c355a27d720b79, - limb1: 0xc7a29e76d92abc488295e298, - limb2: 0x26141de86f6dc7c9, + limb0: 0x51caeb54a4583f7baba84f03, + limb1: 0xec41a5372eacc3fe223445ba, + limb2: 0x14836e8a6398be5b, limb3: 0x0 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0x52e9d0e29349b615179671c5, - limb1: 0x4ac5a3ee9efd522b8e8be61e, - limb2: 0x2c72dfd8b81a2408, + limb0: 0xe65ac86489b5ec3cf40b2009, + limb1: 0x4969587e63a247f60513f21e, + limb2: 0x2967db580249794, limb3: 0x0 }, y: u384 { - limb0: 0x85a8e009df373de0e9439ed1, - limb1: 0xa7abf60500afb601f4c1ed87, - limb2: 0x1c78b3926cf055b3, + limb0: 0xab7867ddc91d47d16bd1372a, + limb1: 0x72f83e2b45c3fc8a2f7b50c0, + limb2: 0x1ef8d2a2c791d738, limb3: 0x0 } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0x3e784c16852a2d94a5ca975, - limb1: 0x35736d6b323934f4869f1d5d, - limb2: 0x45f7a3a56c332c2b, + limb0: 0x99a8c38223b77720b473961b, + limb1: 0x648e7fd9abe1903b1ebdb630, + limb2: 0x71914c4159d36c59, limb3: 0x0 }, u384 { - limb0: 0x15ed3042676e0ed59e2bf8bd, - limb1: 0x85d1ff78948a1e0b141ace30, - limb2: 0x5322bef697c6e731, + limb0: 0xcdca8ac91111a8171b9804bd, + limb1: 0x23a215d34f7e582cf0f782df, + limb2: 0x58bbf922236d3da5, limb3: 0x0 }, u384 { - limb0: 0x5e2a51df873e9c9d3a59bd2d, - limb1: 0x6f6c5f6540eb496c91271e50, - limb2: 0xaa5160813fd6df2, + limb0: 0xffebac6612e3de6ea77fbe, + limb1: 0x853290dd9710eb1061fe3097, + limb2: 0x2134cfe49831173b, limb3: 0x0 }, u384 { - limb0: 0x473819309b36ffec3407312d, - limb1: 0x6a4e743b54577c0acdc15f56, - limb2: 0x22f9f9dd9bec393d, + limb0: 0xde4dc56df5f9960e43a63e60, + limb1: 0x31b8e5bf85e558fcee38af40, + limb2: 0x62bc026c5a98f569, limb3: 0x0 }, u384 { - limb0: 0xcfc0f4801327c153bbcedd73, - limb1: 0xc4ad78d50c694ce79e17db14, - limb2: 0x218e37a96b974a6e, + limb0: 0x5434422413618e73c150caea, + limb1: 0x41c0fdb411367187843a0f3e, + limb2: 0x12f9dbadd6dc9ed8, limb3: 0x0 }, u384 { - limb0: 0x4180df647e19752dc1dbb0be, - limb1: 0x68cc972d6939dcc33665d90c, - limb2: 0x15b8451ab8df5af6, + limb0: 0x1f636ccd6b31c0005778eb34, + limb1: 0x4820875c8dafd168936ffcf, + limb2: 0x6aee00452cef308a, limb3: 0x0 }, u384 { - limb0: 0x4c33778afa0a709a1f1eda77, - limb1: 0xc7b1a4dc22903f0c87e043d0, - limb2: 0x631ba2a6d782e8f3, + limb0: 0xd1476af73d5139f958a8468d, + limb1: 0x2403a84fe41d937d4ee457be, + limb2: 0x190c90ab53ae2f8c, limb3: 0x0 }, u384 { - limb0: 0xf5da4abcbe944f6b5b780184, - limb1: 0xffffffffffffffff9b7e6eea, + limb0: 0x9192e3eecc5d6b1d50224db7, + limb1: 0xffffffffffffffffae4a8071, limb2: 0x3fffffffffffffff, limb3: 0x0 } @@ -51664,51 +51698,51 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0x401d61321152b11da99f3b03, - limb1: 0x5f7a0dd3a39dc81c36a59014, - limb2: 0x181ec52ee804c69d, + limb0: 0x262270d2fadb9fc0409d4d24, + limb1: 0x10de2f4e5761cc802d8135dc, + limb2: 0x4d38acd9c42b1ae4, limb3: 0x0 }, u384 { - limb0: 0xce62f93e7be559ef41fa05f3, - limb1: 0xaf54835fbc134010b7a518da, - limb2: 0x18357ebc422d7ce1, + limb0: 0xc4afb9c55fdf4b8993efefbe, + limb1: 0xb63a103a80b5dd1cdb0034d1, + limb2: 0x6d07d604dcfa195c, limb3: 0x0 }, u384 { - limb0: 0xf1ecabe120ed6b130c60f835, - limb1: 0xe0fa55ca77c0288caec49b99, - limb2: 0xf8a76aab854587c, + limb0: 0xc5de6c9f9b89d6bd05860439, + limb1: 0xb8efaa8b5943e00558e7238c, + limb2: 0x7e89771bdb583842, limb3: 0x0 }, u384 { - limb0: 0xb1162f668d83d8b11a0f15b2, - limb1: 0xc08325c47d34b5d9b8395c, - limb2: 0x18303182d8d8b5ff, + limb0: 0xf841d5fb57e8ffc538ca2151, + limb1: 0xb2db2529189ce841c41d6ad9, + limb2: 0x14cde65967ea4634, limb3: 0x0 }, u384 { - limb0: 0x46328afd9cd1f64555b7c94a, - limb1: 0xcd534f3799a1f8f4ccb12482, - limb2: 0x644479404aa3700, + limb0: 0xefbb75226c8de5bc31580d05, + limb1: 0xeaa336e6c302d0c29ad2fda0, + limb2: 0x1398caa8dde93194, limb3: 0x0 }, u384 { - limb0: 0x9091536587941d1702561287, - limb1: 0x92f802e9a8a4b9f5fa420e3d, - limb2: 0x570a8f24056bbbc7, + limb0: 0x2195dd418d4bd010cc835944, + limb1: 0x2390dc4724cdc387178e3783, + limb2: 0x7ebea4c735a8409c, limb3: 0x0 }, u384 { - limb0: 0x5a6ae8fdb6fe964da140681, - limb1: 0xe5acb2b362c30316b33a0110, - limb2: 0x67016109c6607b51, + limb0: 0x5dd01ab0b15e879035892be0, + limb1: 0x1b6365d9534ddf7289251582, + limb2: 0x4482bc8d53d169d7, limb3: 0x0 }, u384 { - limb0: 0xe3ed4d5c8cec6cbf96d25477, - limb1: 0x2bf676cd6e3fe50d76766be8, - limb2: 0x77e10628af6efda3, + limb0: 0xe7ff8877478a3ea76dd1631f, + limb1: 0x6375f1c7697337e35154a24e, + limb2: 0x187cbca625392d6e, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -51716,126 +51750,126 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0x3fc091594e2391fd39b304e, - limb1: 0xf5d8393f9238a38e4a6e4260, - limb2: 0xf70d05e927097ee, + limb0: 0x1033c459aade3811c9d7833c, + limb1: 0xa89b865fe0809669388fd05f, + limb2: 0x46e438a328551f20, limb3: 0x0 }, u384 { - limb0: 0xb94ef67908a5dbff5a19ff1e, - limb1: 0xefbaba0bdbc9ec7f49b4e6a3, - limb2: 0x2b814a3d3427ca03, + limb0: 0x4a77dc5d2230d1cc87330da, + limb1: 0x579f545c51f9d22f5eb2fa1, + limb2: 0x2fb21281a7a9c76, limb3: 0x0 }, u384 { - limb0: 0x35dead03bbd337fb6e4569d9, - limb1: 0x3e2b65bff6fca35a320a805f, - limb2: 0x272428e19e742535, + limb0: 0x664089d078338ae51ca711c1, + limb1: 0x1980cc0f81b2b773962e290, + limb2: 0x60e4cb2c0ee3bfe8, limb3: 0x0 }, u384 { - limb0: 0x6290f46e83daa76a62eccbf2, - limb1: 0x13dbd377bb3e03bb910357d8, - limb2: 0x5a4cb7e9e1c1c2b, + limb0: 0x4726ac831b55bee6d18cfd37, + limb1: 0x1a08fb970e9863458a09fcd0, + limb2: 0x5c536ab58136ed49, limb3: 0x0 }, u384 { - limb0: 0x460dc7bc67b1a8b906852406, - limb1: 0x5f04b7cb91a8302ac097a734, - limb2: 0x614b8bfe6bd9db6e, + limb0: 0xc9345cb477e0178ecd6b978d, + limb1: 0xa80ad6fafe95c11a43b5d1a4, + limb2: 0x3f0ee29aa8168d73, limb3: 0x0 }, u384 { - limb0: 0xbd00e8c5afd9d69a806c5707, - limb1: 0xf70c36f8af97ecc9694467c4, - limb2: 0x49aeda5481891d22, + limb0: 0x8b729ce3502b678f662380a4, + limb1: 0x1562ff30de2ef6ae335057cb, + limb2: 0x28544fcce9e26215, limb3: 0x0 }, u384 { - limb0: 0x78b14d9a2bf05f12489f7c44, - limb1: 0xd39c2487b0ce0a4ff1d6bc1b, - limb2: 0x73d3f30a86f62c70, + limb0: 0x9baf20b9a1f7ef9b9f61fcc8, + limb1: 0x2cd81356c7c2a1fdc0eb4218, + limb2: 0x7218fac88e49e9da, limb3: 0x0 }, u384 { - limb0: 0xa1ac90ff74416b62e0b4bbc1, - limb1: 0x825c293c414cff559543a598, - limb2: 0x4496de047503c0ee, + limb0: 0xdd3fe9a03aeeb14b2d168b84, + limb1: 0xbe1d405d7e918273618627d6, + limb2: 0x1c9055ac14d2c213, limb3: 0x0 }, u384 { - limb0: 0x73dcf09bb8155585ddd1847a, - limb1: 0xaf18df72d4f5f2ae61b39457, - limb2: 0x68c22b0c1c20059, + limb0: 0x7ffceb4ac2c7b59b89e56621, + limb1: 0xa87a1ce61ef300c3b9002252, + limb2: 0x54e38fb99c62993d, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xe0382e8c1d0c7e01bdbc0a9c, - limb1: 0x872127fa0cbf656c9f4ba72c, - limb2: 0x44e063cb9e4651fd, + limb0: 0x9e442fb1d570acd1794b3862, + limb1: 0xdb075450e744c9a96fd0230, + limb2: 0x4a825c2c8deee5a8, limb3: 0x0 }, u384 { - limb0: 0xa5085ee3352a63a658daec7e, - limb1: 0xe38afb1626ad8c3f869e52a3, - limb2: 0x512ad901be707ecb, + limb0: 0x89e52394721169f396b38793, + limb1: 0x3deaf8f590441d6c74a98f58, + limb2: 0x6e5939bd04067ebb, limb3: 0x0 }, u384 { - limb0: 0x1a09d2ba00094f39bf89f853, - limb1: 0x7d0419075c471b7e42c6736f, - limb2: 0x5b9ce91a82bd6a07, + limb0: 0xc50a205ee211b6fcdc5c562b, + limb1: 0x5e17e16b4f6f8b3b350a561b, + limb2: 0x2d5fc801fce7e524, limb3: 0x0 }, u384 { - limb0: 0xf1dde16a4ba34df27e0fa461, - limb1: 0x187f94f9ba7cb6b1b3ea8c53, - limb2: 0x615b2906d37a72e4, + limb0: 0x83179306f09128e18b7fd76d, + limb1: 0xcfac379bb52b8d1a8d26098a, + limb2: 0x4eb28d6f4e3cd94a, limb3: 0x0 }, u384 { - limb0: 0x8ceefb1eddf8bcd75e3f2766, - limb1: 0x63f0e0470d31603051bf9d25, - limb2: 0x2f48c878dac3c930, + limb0: 0x3e541874dede6939aee59931, + limb1: 0x160508d1b80ebff5d314bb9f, + limb2: 0x322dd2feef48c0c2, limb3: 0x0 }, u384 { - limb0: 0xa53cf9ce78ccbb6316b3471f, - limb1: 0xe896389cf49d3a4936171dcc, - limb2: 0x69b3aab9933bca01, + limb0: 0x26dfda1d2542c59681afc8fb, + limb1: 0x65e3bb3ecb9b2016e6bf551b, + limb2: 0x5180da6049eed5b7, limb3: 0x0 }, u384 { - limb0: 0x8150f4e656b52390c20e0ef2, - limb1: 0x93a56fd864c49d60127df9f9, - limb2: 0x5675742db22ace94, + limb0: 0x4bdbbcd3fe9fa2b807e4b569, + limb1: 0xf102c04b65a08348d57de86e, + limb2: 0x3b016d4617fc9cc8, limb3: 0x0 }, u384 { - limb0: 0x994b95b008e079486ec55770, - limb1: 0x73fda1f70d8c654b8f882241, - limb2: 0x160e4b2c13e3881e, + limb0: 0x4cf30f957b4dab96a2178763, + limb1: 0xb04737c7285edea9319a9674, + limb2: 0x581120c5dc6012ab, limb3: 0x0 }, u384 { - limb0: 0x309d519d26f085fa32ea794d, - limb1: 0x4ef021df149a4a48d961f293, - limb2: 0x794b6eac6468a3cb, + limb0: 0xbbf8e193b6754083674b3dfb, + limb1: 0x45296278e4c6e0e34750edab, + limb2: 0x6a54254766ef30ba, limb3: 0x0 }, u384 { - limb0: 0x124bd98787e1caf3d2d01dc1, - limb1: 0x174493c0c43e40ed1ef2b76d, - limb2: 0x44500ddd6c1a3a38, + limb0: 0x6a7545a85dd0691f2e454320, + limb1: 0x4cfb46e6b4c91d48f4ddcbdf, + limb2: 0x21d16960f98b28bd, limb3: 0x0 }, u384 { - limb0: 0xe3ed4d5c8cec6cbf96d25477, - limb1: 0x2bf676cd6e3fe50d76766be8, - limb2: 0x77e10628af6efda3, + limb0: 0xe7ff8877478a3ea76dd1631f, + limb1: 0x6375f1c7697337e35154a24e, + limb2: 0x187cbca625392d6e, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -51845,50 +51879,50 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0x6bb777b91593836c0d63c5c8, - limb1: 0xd03792ba0cd151706e4c1a6b, - limb2: 0x5bde3fc8ab36a2b0, + limb0: 0x4b3abea8c51f39a7eba97f49, + limb1: 0x69bc5ffd39a8dbf4a7080298, + limb2: 0x4d3a9caff032113e, limb3: 0x0 }, u384 { - limb0: 0xca65ac49da8aa60d16badf8d, - limb1: 0x82b788960d98c3188838407e, - limb2: 0x40b3984ce1c95b10, + limb0: 0x45466d9e6da97684050ceb25, + limb1: 0xa32bb21b4ef8eac4e3af9fcb, + limb2: 0x33ea79318cfeb73b, limb3: 0x0 }, u384 { - limb0: 0x733b7c83221914d8936b8cc2, - limb1: 0xc2c38f4db97b838596246e9e, - limb2: 0x60ad3f2fbd16276f, + limb0: 0x7af6443e755092d8b56944f6, + limb1: 0xad85762a9fd99b99a4992e43, + limb2: 0x37e8d900e9bd9a70, limb3: 0x0 }, u384 { - limb0: 0xd0b41ca4abe59a5b83dbda0e, - limb1: 0xa88ed8ce63e6e9d9a646bace, - limb2: 0x259e06f891c5fc0e, + limb0: 0x12ac944a22486c3d62660a44, + limb1: 0x492d08b212970a763a3810e5, + limb2: 0x65e04b35c518ea25, limb3: 0x0 }, u384 { - limb0: 0x337259c300a00ef317677849, - limb1: 0x9f02e1411efa77404c516806, - limb2: 0x402d637182ed5fb1, + limb0: 0xdeabe906af1cd77563a40bac, + limb1: 0x870002563c3b39b98009cba3, + limb2: 0x55993bb751f157d2, limb3: 0x0 }, u384 { - limb0: 0x15d0e5b1b42c4ded3329e88, - limb1: 0xfb092fbfc025739aaa10c2c0, - limb2: 0xff61ab9329b41a5, + limb0: 0x39aaedcc6f9c2228d54ab052, + limb1: 0x90a84e2a0877bb7086c726df, + limb2: 0x357408977b2a64d0, limb3: 0x0 }, u384 { - limb0: 0x7812477e8711a6b3149fd2f9, - limb1: 0x76349aef720e13017b73c78a, - limb2: 0x2f50612cfbbbcabc, + limb0: 0x803708843b8c462e5811a208, + limb1: 0x779d48fdb456a58db1ac7b8b, + limb2: 0x4094df9c5014452f, limb3: 0x0 }, u384 { - limb0: 0xa93463fddfab2a982fcc7971, - limb1: 0x1100085e, + limb0: 0x962f8ac5d4fd73bc1ab61d62, + limb1: 0x173a668c, limb2: 0x4000000000000000, limb3: 0x0 } @@ -51896,51 +51930,51 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0x5cbfd685c437c761fd0fe692, - limb1: 0x50ec01144bb9d61ebaaa186f, - limb2: 0x7a31f248bdb8a5f0, + limb0: 0xafdf76e9221717166b559975, + limb1: 0x9043816aa4c42b1c8d77d4e0, + limb2: 0x3c59bc731dea2d80, limb3: 0x0 }, u384 { - limb0: 0x7f583c60a7df48cdcf86f5a, - limb1: 0xb86de5f6e7ada72e1ab61a6e, - limb2: 0x7f0fc28777b79c25, + limb0: 0x58677a3e0565292018ef5b0, + limb1: 0x35b4dd818b27ab14e8977c3d, + limb2: 0x6a7703b425c0f631, limb3: 0x0 }, u384 { - limb0: 0x77da476273952974c5497cc4, - limb1: 0x457e0516477e544acd93ca95, - limb2: 0x7245a605dc15b4fb, + limb0: 0xedac106f6aa0880cb4541a2f, + limb1: 0x33578b25f5e714297804bb11, + limb2: 0x79b06cfe0d599f53, limb3: 0x0 }, u384 { - limb0: 0x7c9481c97d9e698fbf724fad, - limb1: 0x8910974a81b412cae0f9f35d, - limb2: 0x3ce58a53fcd30ac7, + limb0: 0xf96447db3be24bc179190719, + limb1: 0x1175e96979a748b317c30b0f, + limb2: 0x7f3de451e404581b, limb3: 0x0 }, u384 { - limb0: 0x9232d73bd4e54a2faa116a06, - limb1: 0xb18da4f21bc25cf1fac93433, - limb2: 0x784ea8a9a5c85dfd, + limb0: 0x54dfa7581d386df8684f33d9, + limb1: 0xa4a7ce03baf981dbe0a53cea, + limb2: 0x72fe46ef4a9a6e8c, limb3: 0x0 }, u384 { - limb0: 0x3815f36b2dfb2435d9a9ef2e, - limb1: 0x5d1181107a235fc143337b8d, - limb2: 0x38052dffc931f296, + limb0: 0x4f0644af7f0ce8c6c0e84a2a, + limb1: 0x48498c7bc33c0963d83d9f98, + limb2: 0x43e07cd2344522e1, limb3: 0x0 }, u384 { - limb0: 0x9eeda8704fe887da6136f534, - limb1: 0x1a03ffdeae5cc180e46472c3, - limb2: 0x1786180e990cfbf, + limb0: 0x15b24468510ada8706778c3a, + limb1: 0x2df6bdd4bba799e9843b2854, + limb2: 0x388f48e3a2845766, limb3: 0x0 }, u384 { - limb0: 0xe6f829cf3c7b2d0efa83fd84, - limb1: 0x5fed577efb73f7fa1f936a2f, - limb2: 0x4f6202382528ac62, + limb0: 0xd09f98640963cebc34b614d1, + limb1: 0x7e330d5ce8a9efe9532dc742, + limb2: 0x5632971e44d54ba8, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -51948,126 +51982,126 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xc4b5598dcd5bf46994510679, - limb1: 0x463bd679bfa351944d0b4fc7, - limb2: 0x249e9a2f8560b6a0, + limb0: 0x4293a8424eea33f7c8e308db, + limb1: 0x91359f6c89dc1553eb7e6c3, + limb2: 0x5f7fcbe80f53a8b9, limb3: 0x0 }, u384 { - limb0: 0x49ab351eb781634e5db2f6f1, - limb1: 0x179b32d78e71692deb965163, - limb2: 0x19c28b6dd7ac38be, + limb0: 0x4c96d5947f4a68e6fd1b95ce, + limb1: 0xd914d9ba1c55f7d95249c248, + limb2: 0x10565e84c53dac8e, limb3: 0x0 }, u384 { - limb0: 0xdfe9a6d13a93decbdf41bd1a, - limb1: 0xbf806d580606b090d684f627, - limb2: 0x6f72aab9b398df58, + limb0: 0xe8c8a1202db16dcc950bf5b6, + limb1: 0x2d9b885f67185124160611e5, + limb2: 0x8c6e9ce5de73feb, limb3: 0x0 }, u384 { - limb0: 0x337a67f0ed45d3e47b3aea62, - limb1: 0x5f9fa657d56999138416cb6a, - limb2: 0x4c31acc78a358bc9, + limb0: 0xa2973772a24785e80275a7c0, + limb1: 0x13e46a4335b9abba03a63664, + limb2: 0x698bb79c97bbc04f, limb3: 0x0 }, u384 { - limb0: 0x8a7cb7b4259f471ba51810a1, - limb1: 0x78de676444a40f3e16e1b849, - limb2: 0x354ed619c93fe2bf, + limb0: 0xbd36b556ba1e9fa2262e39a9, + limb1: 0x4ec6f2eee163c519782d4025, + limb2: 0xa900f677b657983, limb3: 0x0 }, u384 { - limb0: 0x44db0a681aee57bc97c3729c, - limb1: 0xca833f7094b0a30f9c7731df, - limb2: 0x68ad264aff5b6b25, + limb0: 0x309efe5699981bed23f2ca2, + limb1: 0x1a1307b72e93248e2e259694, + limb2: 0x1baaec80f635189b, limb3: 0x0 }, u384 { - limb0: 0x89f5ccd9170bce32f6a9718f, - limb1: 0x13fd77c9941ca1e4a3b72c06, - limb2: 0x3dbabe91323ac2db, + limb0: 0x2d8f7eb301e915e7b08a8fd, + limb1: 0x90008bb4f2fe8cc5348b0f74, + limb2: 0x38ec1add58a40230, limb3: 0x0 }, u384 { - limb0: 0x1a3a819987b7f1b49d712756, - limb1: 0xda2dc81dd217dd0dd5e4afd, - limb2: 0x32c8ef0ebfee809a, + limb0: 0xe281a29cbd7671b4ddc67ff, + limb1: 0xb715ce94cabbe51ff227c14b, + limb2: 0x6c4733f2c45432f7, limb3: 0x0 }, u384 { - limb0: 0xc13c62c40cf1d15c27c588af, - limb1: 0x515e914a83d0a663c4308761, - limb2: 0x467ebabbad88807b, + limb0: 0x47c4d5f65613757cf23db9bf, + limb1: 0xd6761f1da36b1bcb9b384d20, + limb2: 0x1c20a4d620854ce4, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x58004a22f103ebc816bb3c4e, - limb1: 0x51c7502e3a57d64e488aac58, - limb2: 0x7881393dc89535ef, + limb0: 0x529db820fa4d192e0932e897, + limb1: 0xf37e0e421a8f5e39d7c28f5a, + limb2: 0x73bcca02ef76ab15, limb3: 0x0 }, u384 { - limb0: 0x6af83ca0c8678e8d85f34f95, - limb1: 0x5bdec6cf3b660f669748495, - limb2: 0xfbeaebd949515b3, + limb0: 0xca9201bb187e21504fb1638c, + limb1: 0x201dc0b591f77ec7ad8cd407, + limb2: 0x1ce41ee2ae16e4e9, limb3: 0x0 }, u384 { - limb0: 0xfa8f2cecd64fbad5e1a2001c, - limb1: 0xbf4774bac9af16ac1cbc5360, - limb2: 0x6537298999464976, + limb0: 0x6c596b6ea749ea0d07ae8beb, + limb1: 0x3108f180d182944153ef73d6, + limb2: 0x19d9cf3040429946, limb3: 0x0 }, u384 { - limb0: 0xaf89aa615b49e3a116baa509, - limb1: 0x4360fd7a95979f92fe57f3a9, - limb2: 0x4c3854f9a0240579, + limb0: 0x7b130a29fd915d8d4ca3ac64, + limb1: 0x7e3d589728ecdf6939c764b4, + limb2: 0xf38100ea521624f, limb3: 0x0 }, u384 { - limb0: 0xc6b26e12936734fd5e09216a, - limb1: 0x8fad079118da3071eea95d53, - limb2: 0x29972798fbae710d, + limb0: 0x3bb20d34133fd2093a899912, + limb1: 0x1b5b75e9b13a7d53be54d576, + limb2: 0x480739920ddf7a55, limb3: 0x0 }, u384 { - limb0: 0x23a0b58a0ec89906194eb40d, - limb1: 0xe21d7d239714a79c65f20260, - limb2: 0x6459d6ca1c457ebe, + limb0: 0xbc09fe62cc004131ac6bb539, + limb1: 0x91de9bc08fa828cf2dced13f, + limb2: 0x4385d3a8c11d2f8e, limb3: 0x0 }, u384 { - limb0: 0x5c21128fe921399032af74b3, - limb1: 0x1b944b516620773546818f9, - limb2: 0x2624548068f14ef6, + limb0: 0x1308d17ffb9c957eb4b0caf3, + limb1: 0xe2d3bdc627b175546fb342a8, + limb2: 0x5a44191e465307ea, limb3: 0x0 }, u384 { - limb0: 0xb55f119d4a07991d843cacdf, - limb1: 0x63e8c54cd351a981b39d538c, - limb2: 0x718fd664ccae4341, + limb0: 0x1f01a31b23bccecd441894c1, + limb1: 0xef84e90d85ea1f34298b0c39, + limb2: 0x2bd3feac510a1bc5, limb3: 0x0 }, u384 { - limb0: 0xfd14dcd07ada36b9a9b0bad9, - limb1: 0x862801302da9b514afff39a, - limb2: 0xe82f3dd1e7a4079, + limb0: 0xfdcc6d838cd174c6a81411bf, + limb1: 0x57d3eecd98ac56823f2ceb85, + limb2: 0x59bdb4dc3b0ba1a0, limb3: 0x0 }, u384 { - limb0: 0xab92d367fc5a696959f30c61, - limb1: 0x4b9be0ec0fd7ff57501d2920, - limb2: 0x5ec70e548f4a8ea5, + limb0: 0x22576f5ffd7cbc15ff33a37a, + limb1: 0x5f8e9ee21d22d7bfeff3deb1, + limb2: 0x15ddf5b7483e164c, limb3: 0x0 }, u384 { - limb0: 0xe6f829cf3c7b2d0efa83fd84, - limb1: 0x5fed577efb73f7fa1f936a2f, - limb2: 0x4f6202382528ac62, + limb0: 0xd09f98640963cebc34b614d1, + limb1: 0x7e330d5ce8a9efe9532dc742, + limb2: 0x5632971e44d54ba8, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -52077,9 +52111,9 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0xcbb25ea588743124346e4361, - limb1: 0x2c4eb95e1a2e3881d5479002, - limb2: 0x6e61430062610d73, + limb0: 0xad89de3d9c860aaabc359b69, + limb1: 0x32c84a2cdedbc2a118e68e15, + limb2: 0x5ac80d35670ca237, limb3: 0x0 }, u384 { @@ -52092,15 +52126,15 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0xf2233ff3431e5453e6fa6304, - limb1: 0x734ea8fbb0a8fddcc8281d1c, - limb2: 0x26013cb4fcaf8edf, + limb0: 0xf92b1f63eb050ade2f318229, + limb1: 0xcc54696e6ed39a3a19723a5d, + limb2: 0x1339cd6d7d335b59, limb3: 0x0 }, u384 { - limb0: 0x7f5f9bae11088fdbb1a65148, - limb1: 0xdbc4b50f68b63fd8a204c75d, - limb2: 0x23e784b19d4c5dd4, + limb0: 0x92e838ce5c7aa59d8ac61b15, + limb1: 0x516626d013517d19c26f8717, + limb2: 0x48bd8b4913e222ed, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -52108,54 +52142,54 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xc178561ae174c6bcc70893ca, - limb1: 0xa30f5e58dde986211d7f177c, - limb2: 0x7946fe85bbe4296c, + limb0: 0x33240e35b4bd458c7b0b4ffc, + limb1: 0xa3d173ffe005d34984c658e6, + limb2: 0x6e717605d93bce30, limb3: 0x0 }, u384 { - limb0: 0xe7ce4058265b44f8256c50de, - limb1: 0x9f26e5ce636eedc9b0bbec9f, - limb2: 0x22ebab148af584b3, + limb0: 0x6766de496595c0af225ed768, + limb1: 0xa60d3a7e7378cc5d587d1d3c, + limb2: 0x23865656d234b5f8, limb3: 0x0 }, u384 { - limb0: 0x9291028a5337f00695b33eab, - limb1: 0xa1513ed1bfabe515555b9927, - limb2: 0x36898b7121a6a26, + limb0: 0x22b1cea1b43127aecf55aa92, + limb1: 0xfd16c477945ba275398472b4, + limb2: 0xb818771170ab0da, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xc9c394175dd1ee1015c8fec2, - limb1: 0x82149044ec6ca39e579d9cb5, - limb2: 0x92c96bce9674c91, + limb0: 0xd8029e553bc9bb05b6506bba, + limb1: 0x52b757df47ffa022a1acce45, + limb2: 0x4dcd8710d6eaa1a3, limb3: 0x0 }, u384 { - limb0: 0x2a473a6cd701076a1c6d76be, - limb1: 0xb55cd54f7baefcc8240569b7, - limb2: 0x59df4de218244b6a, + limb0: 0x6876e2a92a21383e84a14c68, + limb1: 0x86401ba566c34db62b46203e, + limb2: 0x1144d371b8580b29, limb3: 0x0 }, u384 { - limb0: 0x6d73baebbba535ff0560fb8a, - limb1: 0x9ae5116dd4679a41a43c3c97, - limb2: 0x4037370f4b2384, + limb0: 0xc324751368952f840e05b2d4, + limb1: 0x17bab744cf5eadabcd56ae56, + limb2: 0x2fb86898e4cc832, limb3: 0x0 }, u384 { - limb0: 0xfec86aeaef9035e2dfb67a44, - limb1: 0xa4e68a0912243bb333e0d379, - limb2: 0x34fe988a2694dc5, + limb0: 0x5d04a5b9776ec6d27ed9956, + limb1: 0xfdec4a7bd04ed810852af0bb, + limb2: 0x70887a4122ed1a3f, limb3: 0x0 }, u384 { - limb0: 0x7f5f9bae11088fdbb1a65148, - limb1: 0xdbc4b50f68b63fd8a204c75d, - limb2: 0x23e784b19d4c5dd4, + limb0: 0x92e838ce5c7aa59d8ac61b15, + limb1: 0x516626d013517d19c26f8717, + limb2: 0x48bd8b4913e222ed, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -52165,28 +52199,16 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0x1722e476b724f7ead64481ef, - limb1: 0xa48b4fce1b33dd3c8dfc5a8d, - limb2: 0x38bdac48f89a2d98, + limb0: 0x252ed2cc89d00270d8059e40, + limb1: 0xf09a632741b77dcd61bb4fd4, + limb2: 0xa8ab1cca9cf751e, limb3: 0x0 }, g_rhs_sqrt: array![ u384 { - limb0: 0x9c49ea93c7d120f75ce31cd1, - limb1: 0xc30eb106c1f4497d51ea1eff, - limb2: 0x1e372d9e3052ecd4, - limb3: 0x0 - }, - u384 { - limb0: 0xf70ed147e06479f342041a1f, - limb1: 0x6d4179efbc1c21de1f10569a, - limb2: 0x206c1da1b15e0d75, - limb3: 0x0 - }, - u384 { - limb0: 0xefe29b6b8287463a823b4580, - limb1: 0x1a92823ccc8d6442db7c6d70, - limb2: 0x1ed3ace31a26063e, + limb0: 0x8d7bb1662d94f1796aef91f, + limb1: 0x443a2cb9e741e341595c3191, + limb2: 0x282af18ef782f307, limb3: 0x0 } ], @@ -52197,15 +52219,15 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0xa9fa153f1b43aaf91b1e9bd4, - limb1: 0xf348d3cf3f029469a94c96e9, - limb2: 0x3be44c5809e41d72, + limb0: 0x1a4c1c059a9feda3001339e1, + limb1: 0x54f42439ed2fe97473fbbbac, + limb2: 0x2f936da3e5b5f875, limb3: 0x0 }, y: u384 { - limb0: 0x2350f491228b0ab06248fc5a, - limb1: 0x28df5b5e4093d2235c5bf3ff, - limb2: 0x48bc6a6327302d4f, + limb0: 0xe5c14e7386027b410f124889, + limb1: 0x8eb7404d2dce0c341c13eb71, + limb2: 0x16f5123626611c3c, limb3: 0x0 } } @@ -52218,113 +52240,113 @@ mod msm_tests { let points = array![ G1Point { x: u384 { - limb0: 0xdb4facdf2fa39e687873beb0, - limb1: 0x477c57168452473c91f874e9, - limb2: 0x3b27209271c3a1d3, + limb0: 0x7238f02b9f20e09c2181a557, + limb1: 0x2cedcc5b0be371c337fd7e9e, + limb2: 0x41f3bbeb280fe8a2, limb3: 0x0 }, y: u384 { - limb0: 0x954a9c2b8372ddf1ff67f854, - limb1: 0x454fdb9e026657146bc8d60d, - limb2: 0x6b5575b00877e3f4, + limb0: 0xf046f8cd6e5a75fca71dd19b, + limb1: 0x892b4613ef5c58df4ef692a4, + limb2: 0x7527fa36f5738847, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xf11acd16e9db5eb2433d9c1d, - limb1: 0x14fc0ce7e1f0f697887a3615, - limb2: 0x44d0477e921abf10, + limb0: 0x82e4a33f8e4e5881e791d86b, + limb1: 0xbcb062435ae8ec5fdaeac4bf, + limb2: 0x179e1bae9e0f9f34, limb3: 0x0 }, y: u384 { - limb0: 0x7bae11314a0744e6079f3f06, - limb1: 0x59a19bea5444af6c63370487, - limb2: 0x5491dd695c96a483, + limb0: 0x19657783ba5660e255c21849, + limb1: 0x7ed7474bcea7551fc71e46bc, + limb2: 0x596c0a76b75f4756, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xe4acaa020ee6541be3542ac2, - limb1: 0xf51a335d81b740c199b241c, - limb2: 0x5f4bbfe606867d22, + limb0: 0xa6832ef7fe97f77de7cd9a62, + limb1: 0xf18a70dbf1dc5a76c685da4a, + limb2: 0x6ac1b7bfc409119f, limb3: 0x0 }, y: u384 { - limb0: 0x602eeeca30a4bf338d571f78, - limb1: 0x30bb78d6a4221f43c147d48e, - limb2: 0x5821fbc633013210, + limb0: 0x7751161b1a9ef600b865a5af, + limb1: 0xed28aad4835a39a9e8318ceb, + limb2: 0x572e95c429f0e07a, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xfce758e0d5dfe850f7f8d7d, - limb1: 0x8ad3635587086a2be43bab96, - limb2: 0x2f64e53521da8e2f, + limb0: 0x5e71d0fc5d1c016834779173, + limb1: 0xadd002dfc0ebf1b25c23c252, + limb2: 0x40a868d928ae5233, limb3: 0x0 }, y: u384 { - limb0: 0x2bf4785408f75402a16168c9, - limb1: 0xdaf8ed41417be7bf41f9902b, - limb2: 0x68f087087c6304c7, + limb0: 0x423fa293418d6e3f59c2e830, + limb1: 0x7a4bcf26f93e71ffd903e68e, + limb2: 0x7837b851ad8da6e3, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xfcc7cea938780081211f912, - limb1: 0x445e8ab215f1b999aa93b1b3, - limb2: 0x1e4e3d0f48aca54d, + limb0: 0x5907087f8e8e4dacdd039371, + limb1: 0xc390e2073b4e64b9ede0570d, + limb2: 0x6b039a85962f1594, limb3: 0x0 }, y: u384 { - limb0: 0x94cb2dee0be4436643e9fed6, - limb1: 0xd01d2fd902d9505f71643030, - limb2: 0x7d7168bb2a5bec5e, + limb0: 0xc45eefa03155b8f7eb780b42, + limb1: 0x3db57eb22f9b0394a4d7b78e, + limb2: 0x6cf45b6d90883f60, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xb521868f3a3c84ec6e17e64b, - limb1: 0x2222a801238c8a8a4ea8b78, - limb2: 0x340e6d8bb3e346a1, + limb0: 0x60dd8ed0a614b596fb37eb1f, + limb1: 0xabb99f371be41e26ec2d8e4b, + limb2: 0x187ecd72c40f159d, limb3: 0x0 }, y: u384 { - limb0: 0xf2f8bc450857c18bf6ad202f, - limb1: 0xd8815263822e18b795fa067a, - limb2: 0xcc925bfa74c7a0d, + limb0: 0x7b66c9263de5e1663622985d, + limb1: 0x118b032cc27a1d6dd192eca6, + limb2: 0x312fb405788616e8, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0xb840f816d8acc319dc391b73, - limb1: 0xeb607924935474b063b16bec, - limb2: 0x276bb9da3ee10c80, + limb0: 0xf4ac3e1f1f068dd64c86fdda, + limb1: 0x24594e591d82a7f964b5ec9f, + limb2: 0x6ca311b5421c57fc, limb3: 0x0 }, y: u384 { - limb0: 0xc5fd445424d47060061c1efa, - limb1: 0xb15a6dd3f9025dadf1744646, - limb2: 0x2489bbb35f70c974, + limb0: 0x42745cd7b146012455434d0f, + limb1: 0x6aa4f552b7bdc93a613bd9df, + limb2: 0x5832a065d7199c7a, limb3: 0x0 } }, G1Point { x: u384 { - limb0: 0x95aceaa8a41f6f29e8b88b7f, - limb1: 0xbb6d832854392226421ad1c9, - limb2: 0x180cb4adb5ccbcf, + limb0: 0x341786b7854e3e0104e2e416, + limb1: 0xbb368441c295043bee7b1d2f, + limb2: 0x35c88542e11463b4, limb3: 0x0 }, y: u384 { - limb0: 0xd3c53d3d09ad6c86e2896c87, - limb1: 0x4de7c06a1a9db659ceb2ad16, - limb2: 0xbdef9b7a3dc27e3, + limb0: 0x3c36e7fcc4e2fde28308132, + limb1: 0xf58043d0e3d1a36d1f8137fc, + limb2: 0x58c1508fbe8868a8, limb3: 0x0 } }, @@ -52332,28 +52354,28 @@ mod msm_tests { .span(); let scalars = array![ u256 { - low: 0xd00955521730df1cf2a5bde28b7b8e8e, high: 0x54043634667cce2c8a83109250637ea + low: 0x1775336d71eacd0549a3e80e966e1277, high: 0xa253f6f6288e1a5cc45782198a6416d }, u256 { - low: 0xb2c8153c6655ef5ed3b583f3281be885, high: 0x1bff45b6f6f0f8343e0b1de8a6edba8 + low: 0x2f1205544a5308cc3dfabc08935ddd72, high: 0x10e1c2b2fcd81b5d24bace4307bf326 }, u256 { - low: 0x57dbed63970d2b667d68e32ff2a1f11b, high: 0x177783765e9c189691452b507ed0fbd + low: 0x2648ee38e07405eb215663abc1f254b8, high: 0x29164ebd7ab792809e469e6ec62b2c8 }, u256 { - low: 0x7d3524e2560704c58ad3524f261aa61d, high: 0xa756d587aebc9ffc518645e4a68824f + low: 0x85940927468ff53d864a7a50b48d73f1, high: 0x6e2edd0d977e9933c49d76fcfc6e625 }, u256 { - low: 0x904875b8d60ba226f49412c94f2484a2, high: 0x3da0b83f3b59a631beb3dcd273fce84 + low: 0xd344749096fd35d0adf20806e5214606, high: 0x8ce86e89466e4726b5f5241f323ca74 }, u256 { - low: 0x2002eb697891ba9d70549bf67589ad20, high: 0xf32e7a2dea717bd9b57b1fdc1d67b49 + low: 0x30bcab0ed857010255d44936a1515607, high: 0x8ac57cfbb42e0b20426465e3e37952d }, u256 { - low: 0x722c18bd4d14f4f28308693f00241b9c, high: 0xd801f596993c637d4fce6011e88a944 + low: 0x5f3f563838701a14b490b6081dfc8352, high: 0xda2ddc3552116dd2ba4b180cb69ca38 }, u256 { - low: 0x6f5e3759bac326e682e8eb8520861e70, high: 0xd880196eabf861090ec978283c58e62 + low: 0xc87a746319c16a0d0febd845d0dfae43, high: 0x7003168b29a8b06daf66c5f2577bffa }, ] .span(); @@ -52361,744 +52383,743 @@ mod msm_tests { array![ ( array![ - 0x1, - 0x0, -0x1, 0x1, 0x1, - -0x1, 0x0, + 0x1, 0x0, 0x1, 0x1, - 0x0, 0x1, 0x0, - -0x1, - 0x1, - -0x1, - -0x1, + 0x0, -0x1, -0x1, 0x0, - -0x1, + 0x1, 0x0, - -0x1, - -0x1, 0x1, 0x0, 0x1, 0x1, 0x0, -0x1, - 0x1, - 0x1, -0x1, - 0x0, + 0x1, 0x0, -0x1, 0x0, 0x0, - -0x1, - 0x0, 0x1, 0x1, - -0x1, 0x0, - 0x1, - 0x0, - -0x1, 0x0, 0x0, -0x1, - 0x0, -0x1, - 0x0, - 0x0, + 0x1, + -0x1, + -0x1, + 0x1, 0x1, 0x1, - 0x0, -0x1, + 0x1, 0x0, + -0x1, + 0x1, 0x0, 0x0, -0x1, + 0x1, + -0x1, + 0x1, 0x0, 0x0, - 0x0, + -0x1, 0x0, 0x1, -0x1, 0x0, + -0x1, 0x1, 0x0, - 0x1, -0x1, - 0x0, -0x1, - 0x1, -0x1, 0x0, - -0x1, 0x0, -0x1, -0x1, - ] - .span(), - array![ + 0x1, + 0x1, 0x0, 0x1, + 0x1, + 0x1, 0x0, -0x1, 0x0, -0x1, -0x1, + ] + .span(), + array![ -0x1, 0x1, - -0x1, - -0x1, 0x0, 0x1, - -0x1, - 0x1, - 0x1, + 0x0, 0x1, 0x0, - -0x1, + 0x0, -0x1, 0x0, + -0x1, 0x1, 0x0, -0x1, - -0x1, - 0x0, 0x0, + -0x1, + -0x1, 0x0, + -0x1, 0x1, 0x1, 0x0, 0x1, + 0x1, 0x0, 0x0, 0x1, 0x1, -0x1, -0x1, - 0x0, - 0x0, + 0x1, 0x0, -0x1, 0x1, + -0x1, + -0x1, 0x1, - 0x0, - 0x0, 0x1, + 0x0, -0x1, 0x0, 0x0, 0x0, 0x1, - -0x1, + 0x1, + 0x1, 0x0, 0x1, - -0x1, 0x0, -0x1, + -0x1, 0x0, + 0x1, -0x1, -0x1, 0x1, 0x0, + 0x1, 0x0, -0x1, 0x0, - 0x0, + -0x1, 0x1, + -0x1, + -0x1, + -0x1, + -0x1, + -0x1, 0x1, -0x1, + -0x1, 0x1, + -0x1, 0x1, 0x1, -0x1, 0x1, 0x1, 0x1, - -0x1, ] .span() ), ( array![ + 0x0, + 0x0, + 0x1, + 0x0, + 0x1, -0x1, -0x1, + -0x1, + -0x1, + 0x1, 0x0, 0x1, -0x1, -0x1, + -0x1, + -0x1, 0x0, - 0x1, -0x1, - 0x1, + -0x1, 0x0, -0x1, - 0x1, - 0x1, 0x0, 0x1, 0x0, 0x1, + 0x0, -0x1, - 0x1, - -0x1, - 0x1, 0x0, 0x1, - -0x1, 0x1, 0x1, + 0x0, + 0x0, -0x1, + 0x0, 0x1, + 0x0, 0x1, 0x0, + 0x1, 0x0, -0x1, + -0x1, 0x1, + 0x0, + 0x0, -0x1, -0x1, - 0x1, -0x1, 0x0, 0x1, 0x0, - 0x1, - 0x0, 0x0, - -0x1, - -0x1, 0x1, -0x1, -0x1, 0x0, 0x0, - 0x1, - 0x1, - -0x1, - 0x1, 0x0, - -0x1, 0x1, - 0x0, - -0x1, 0x1, 0x0, 0x0, 0x0, -0x1, 0x1, - -0x1, 0x0, - 0x1, - 0x1, -0x1, - 0x1, - 0x1, 0x0, -0x1, -0x1, - 0x1, -0x1, -0x1, 0x1, + 0x0, -0x1, + 0x1, + 0x1, + 0x1, -0x1, ] .span(), array![ 0x0, - -0x1, 0x0, -0x1, 0x1, - -0x1, - -0x1, - 0x0, - -0x1, - -0x1, - -0x1, - 0x0, + 0x1, -0x1, 0x0, 0x1, 0x0, -0x1, - 0x1, - -0x1, - 0x0, - 0x0, -0x1, + 0x1, 0x0, -0x1, - -0x1, - 0x0, - 0x0, + 0x1, -0x1, 0x0, 0x1, 0x1, - 0x0, - 0x0, + -0x1, 0x1, -0x1, + -0x1, + 0x1, 0x1, 0x1, 0x1, - -0x1, 0x0, 0x1, -0x1, 0x1, -0x1, - -0x1, 0x0, - -0x1, - 0x1, 0x0, -0x1, 0x0, -0x1, 0x0, - 0x0, - -0x1, 0x1, -0x1, 0x0, 0x1, + 0x0, + 0x0, + -0x1, 0x1, 0x1, - 0x1, + 0x0, + 0x0, + 0x0, -0x1, -0x1, + 0x0, + 0x0, + 0x0, -0x1, 0x1, 0x1, 0x1, -0x1, - -0x1, + 0x0, + 0x1, + 0x0, + 0x0, + 0x1, -0x1, -0x1, 0x1, + 0x0, + -0x1, -0x1, -0x1, -0x1, + 0x0, + 0x1, + 0x1, 0x1, ] .span() ), ( array![ - 0x1, - -0x1, - 0x0, - -0x1, - 0x0, 0x0, 0x0, + -0x1, 0x0, -0x1, 0x1, - 0x1, - 0x1, -0x1, - 0x0, -0x1, 0x1, 0x1, 0x1, + 0x0, + 0x0, -0x1, - 0x1, + 0x0, 0x0, 0x1, + 0x1, -0x1, + 0x1, + 0x1, -0x1, + 0x0, + 0x0, + 0x0, -0x1, 0x1, -0x1, - -0x1, - 0x0, 0x0, 0x1, + 0x1, 0x0, 0x1, -0x1, - 0x0, -0x1, -0x1, - 0x0, 0x1, - 0x0, - 0x0, - -0x1, - 0x0, - 0x0, - 0x0, 0x1, 0x0, -0x1, - -0x1, - 0x0, 0x1, 0x1, 0x1, 0x1, + 0x0, + 0x1, -0x1, 0x0, -0x1, + 0x1, + 0x0, -0x1, 0x0, + 0x0, + -0x1, -0x1, 0x0, - 0x1, + 0x0, 0x0, 0x1, 0x1, + 0x1, + -0x1, -0x1, 0x1, 0x0, 0x0, + 0x1, + 0x1, 0x0, -0x1, 0x0, 0x0, 0x0, - 0x0, + -0x1, 0x0, 0x1, 0x0, - 0x1, - 0x1, - 0x1, + 0x0, + -0x1, ] .span(), array![ - 0x1, 0x0, -0x1, -0x1, 0x1, - -0x1, - -0x1, - 0x0, - -0x1, - -0x1, + 0x1, -0x1, -0x1, 0x1, 0x1, 0x1, - -0x1, 0x0, 0x1, 0x1, - -0x1, - -0x1, - -0x1, 0x1, -0x1, - -0x1, 0x1, -0x1, 0x1, -0x1, + 0x0, + 0x0, + 0x0, + 0x0, -0x1, -0x1, + 0x1, + 0x1, + 0x1, -0x1, -0x1, - -0x1, + 0x0, + 0x0, -0x1, 0x1, -0x1, -0x1, + 0x1, -0x1, 0x0, + 0x0, 0x1, -0x1, 0x1, - 0x0, -0x1, 0x1, 0x0, - 0x0, - 0x0, - 0x0, + 0x1, -0x1, 0x1, -0x1, - 0x0, + 0x1, + 0x1, 0x1, 0x0, - -0x1, 0x0, 0x0, 0x1, - -0x1, - -0x1, - 0x0, - 0x0, 0x1, 0x1, - -0x1, + 0x0, 0x1, -0x1, - 0x0, -0x1, 0x1, 0x0, - 0x1, - 0x1, + -0x1, 0x0, 0x1, - ] - .span() - ), - ( - array![ - 0x0, 0x0, 0x1, - 0x1, -0x1, 0x1, -0x1, 0x0, + -0x1, + 0x0, + -0x1, + -0x1, + ] + .span() + ), + ( + array![ 0x0, 0x1, - 0x0, + -0x1, 0x1, 0x0, 0x1, - 0x1, - 0x0, - 0x0, -0x1, - 0x0, + -0x1, 0x1, - 0x0, - 0x0, 0x1, 0x1, - 0x0, - -0x1, 0x1, -0x1, 0x0, + -0x1, + -0x1, 0x1, 0x1, 0x0, -0x1, 0x0, -0x1, - -0x1, - 0x1, + 0x0, -0x1, 0x0, 0x1, 0x1, 0x1, 0x0, - 0x1, - 0x1, -0x1, - 0x0, - 0x0, 0x1, 0x0, 0x1, -0x1, - -0x1, 0x1, + -0x1, + -0x1, + -0x1, + 0x0, + 0x0, + -0x1, 0x1, 0x1, + 0x0, + 0x0, + -0x1, 0x1, 0x1, + 0x0, 0x1, + 0x0, + 0x0, + 0x0, -0x1, 0x1, + -0x1, + 0x0, + -0x1, 0x0, 0x0, 0x0, -0x1, + 0x0, + 0x0, + 0x0, -0x1, 0x0, 0x1, -0x1, 0x0, - -0x1, 0x1, -0x1, 0x0, - -0x1, - -0x1, 0x1, 0x0, + -0x1, 0x1, - 0x0, + 0x1, + -0x1, + -0x1, 0x1, ] .span(), array![ 0x1, - 0x1, + -0x1, + -0x1, + -0x1, 0x0, -0x1, -0x1, 0x1, - 0x0, 0x1, - 0x0, - -0x1, 0x1, - 0x0, - -0x1, 0x1, + 0x0, + 0x0, -0x1, -0x1, 0x0, - -0x1, - 0x1, - 0x1, 0x0, - 0x1, - 0x1, + 0x0, 0x0, -0x1, + 0x0, -0x1, 0x1, - -0x1, + 0x1, + 0x0, 0x1, 0x0, 0x0, 0x0, - -0x1, 0x1, - -0x1, - -0x1, + 0x0, 0x1, -0x1, -0x1, -0x1, -0x1, - -0x1, - -0x1, - -0x1, 0x1, 0x1, + 0x0, -0x1, 0x0, 0x1, 0x1, - -0x1, - -0x1, + 0x1, + 0x1, -0x1, -0x1, 0x0, + 0x0, -0x1, 0x1, + 0x1, 0x0, + -0x1, + -0x1, + -0x1, 0x1, -0x1, -0x1, - 0x0, -0x1, 0x0, - -0x1, 0x0, - 0x1, 0x0, 0x1, 0x1, + -0x1, + -0x1, 0x1, + -0x1, + 0x0, 0x0, -0x1, 0x1, 0x0, - 0x1, - -0x1, 0x0, + 0x0, + -0x1, + 0x1, 0x1, ] .span() ), ( array![ + -0x1, + -0x1, + -0x1, 0x0, - 0x0, - 0x1, -0x1, -0x1, - 0x1, -0x1, 0x0, + -0x1, 0x1, 0x1, + -0x1, + 0x0, 0x0, 0x0, + -0x1, + -0x1, + -0x1, 0x1, 0x1, 0x0, 0x0, + 0x1, + 0x1, -0x1, 0x1, - 0x0, + -0x1, + -0x1, + -0x1, + -0x1, 0x0, -0x1, 0x0, 0x1, - 0x1, 0x0, 0x1, - -0x1, 0x0, - -0x1, 0x1, - -0x1, 0x1, 0x1, + -0x1, + 0x0, + 0x0, 0x0, 0x1, 0x0, -0x1, 0x0, -0x1, - -0x1, 0x0, -0x1, - 0x0, - 0x0, - 0x0, + -0x1, + 0x1, + 0x1, + 0x1, 0x1, -0x1, -0x1, 0x0, 0x0, - 0x1, -0x1, -0x1, 0x1, - 0x1, - -0x1, 0x0, - -0x1, - -0x1, - -0x1, - -0x1, + 0x0, + 0x1, 0x1, 0x1, 0x1, -0x1, - 0x0, -0x1, - 0x0, - 0x0, -0x1, 0x0, 0x0, @@ -53106,258 +53127,258 @@ mod msm_tests { 0x0, 0x1, 0x0, - 0x0, - 0x1, + -0x1, 0x0, -0x1, - 0x1, + -0x1, ] .span(), array![ + -0x1, + 0x1, 0x1, 0x0, + 0x1, -0x1, -0x1, 0x0, + 0x1, 0x0, 0x0, 0x0, - 0x1, -0x1, - 0x1, -0x1, - 0x1, 0x0, - 0x1, + 0x0, + 0x0, 0x1, -0x1, -0x1, + 0x1, -0x1, 0x1, - 0x0, -0x1, - 0x0, -0x1, 0x0, - 0x0, - 0x0, - 0x0, + -0x1, + -0x1, + -0x1, -0x1, 0x0, - 0x0, + -0x1, 0x1, - 0x0, 0x1, - 0x0, + 0x1, + -0x1, + -0x1, 0x1, 0x0, + -0x1, 0x0, 0x1, 0x0, -0x1, - -0x1, - -0x1, 0x1, 0x1, - -0x1, + 0x1, 0x0, -0x1, - 0x1, + -0x1, + 0x0, 0x1, -0x1, 0x0, + 0x1, 0x0, -0x1, 0x0, - 0x0, -0x1, -0x1, 0x0, + -0x1, 0x0, 0x0, -0x1, + 0x0, 0x1, + 0x0, + -0x1, 0x1, 0x0, 0x1, - -0x1, + 0x1, + 0x1, + 0x1, -0x1, 0x0, - -0x1, - -0x1, - -0x1, - -0x1, - -0x1, 0x1, 0x1, - 0x0, - -0x1, ] .span() ), ( array![ - 0x1, 0x1, -0x1, - 0x1, -0x1, 0x0, - 0x0, - -0x1, - -0x1, 0x1, 0x1, 0x0, 0x1, - 0x0, - 0x0, - 0x0, - 0x0, + 0x1, 0x1, 0x1, -0x1, + 0x1, -0x1, 0x0, 0x0, + -0x1, + -0x1, + -0x1, + -0x1, + 0x0, + -0x1, 0x1, -0x1, + 0x0, -0x1, 0x0, -0x1, + -0x1, + 0x1, 0x0, + -0x1, 0x0, + -0x1, 0x0, 0x0, 0x0, -0x1, - -0x1, 0x0, - 0x1, - 0x1, 0x0, 0x0, + -0x1, + -0x1, + -0x1, 0x0, 0x1, 0x0, + -0x1, 0x1, 0x0, - 0x1, - 0x1, 0x0, -0x1, - 0x0, + -0x1, + -0x1, + -0x1, + -0x1, + -0x1, -0x1, 0x1, 0x0, - 0x0, - 0x0, - 0x1, + -0x1, 0x1, 0x0, + -0x1, 0x1, 0x0, -0x1, + -0x1, 0x0, - 0x1, -0x1, - 0x1, - 0x1, -0x1, 0x1, - 0x1, - 0x1, - 0x1, + -0x1, 0x1, -0x1, + 0x1, 0x0, 0x0, - -0x1, - -0x1, 0x1, - 0x0, -0x1, ] .span(), array![ - 0x0, - 0x0, + -0x1, 0x1, + -0x1, 0x0, -0x1, 0x1, - 0x1, - -0x1, + 0x0, 0x0, 0x0, 0x0, -0x1, + -0x1, + -0x1, + -0x1, 0x0, 0x1, -0x1, - 0x0, 0x1, - 0x0, 0x1, -0x1, + 0x1, -0x1, 0x1, 0x1, - -0x1, + 0x0, 0x1, 0x1, -0x1, + 0x1, 0x0, 0x0, -0x1, - 0x0, - 0x1, -0x1, - 0x1, - 0x1, - 0x1, + -0x1, + -0x1, + 0x0, 0x0, 0x0, 0x1, 0x1, - 0x1, + 0x0, + 0x0, + 0x0, 0x1, -0x1, + 0x0, 0x1, + 0x0, + 0x0, + 0x0, 0x1, 0x1, - -0x1, 0x0, -0x1, - 0x1, - 0x1, 0x0, - 0x1, + 0x0, 0x0, 0x1, + -0x1, 0x1, 0x1, + 0x0, -0x1, -0x1, - 0x1, 0x0, - 0x1, -0x1, - 0x1, - 0x1, -0x1, - 0x1, 0x0, - -0x1, 0x0, 0x1, 0x1, - 0x0, - 0x1, 0x1, - 0x0, -0x1, + 0x0, + 0x0, -0x1, + 0x0, + 0x1, 0x1, ] .span() @@ -53365,163 +53386,163 @@ mod msm_tests { ( array![ 0x1, + -0x1, 0x1, + -0x1, + -0x1, 0x1, + -0x1, 0x1, + 0x0, 0x1, 0x1, 0x1, - 0x0, - -0x1, -0x1, 0x0, -0x1, - 0x1, - -0x1, - 0x0, 0x0, 0x1, 0x0, 0x1, - -0x1, 0x1, 0x1, - -0x1, + 0x0, + 0x1, 0x1, - -0x1, -0x1, 0x0, - -0x1, + 0x0, -0x1, 0x0, + 0x1, -0x1, 0x1, 0x1, 0x0, - -0x1, - 0x0, - 0x0, 0x1, + 0x1, + 0x0, -0x1, 0x0, - 0x1, -0x1, 0x1, -0x1, - 0x1, + -0x1, + 0x0, + -0x1, -0x1, 0x1, + 0x0, 0x1, -0x1, 0x1, -0x1, 0x0, + 0x0, -0x1, 0x0, -0x1, -0x1, -0x1, - 0x1, 0x0, - -0x1, 0x0, 0x1, - -0x1, - 0x0, 0x1, + 0x0, -0x1, 0x0, - 0x1, + 0x0, -0x1, 0x0, - 0x1, -0x1, 0x1, - -0x1, 0x1, - 0x0, + 0x1, -0x1, + 0x0, -0x1, 0x0, + 0x1, + -0x1, 0x0, 0x1, ] .span(), array![ - 0x1, - 0x1, -0x1, + 0x1, -0x1, 0x1, 0x1, 0x0, 0x1, 0x1, - 0x0, - 0x0, + 0x1, -0x1, -0x1, + 0x0, -0x1, -0x1, 0x1, - -0x1, + 0x0, + 0x0, 0x1, - -0x1, 0x1, + 0x0, -0x1, 0x1, 0x1, + 0x1, 0x0, -0x1, + 0x1, + 0x1, 0x0, -0x1, + 0x1, 0x0, -0x1, - 0x0, -0x1, 0x0, - 0x0, - 0x0, - 0x0, 0x1, -0x1, - 0x1, -0x1, 0x1, - 0x0, -0x1, 0x1, - 0x1, 0x0, 0x1, 0x1, - -0x1, 0x1, + 0x0, + -0x1, + 0x0, -0x1, - 0x1, 0x0, -0x1, + -0x1, + 0x0, 0x0, 0x0, -0x1, -0x1, -0x1, - 0x1, + -0x1, -0x1, 0x0, - 0x0, - 0x1, + -0x1, 0x1, 0x0, - 0x0, - 0x0, -0x1, + 0x1, 0x0, 0x0, - -0x1, 0x1, + 0x0, -0x1, 0x1, + 0x1, + -0x1, -0x1, 0x0, 0x1, @@ -53533,167 +53554,168 @@ mod msm_tests { ( array![ -0x1, + 0x1, -0x1, 0x1, + 0x1, + 0x1, 0x0, -0x1, + 0x1, + 0x1, + 0x1, + -0x1, -0x1, 0x0, - 0x0, - 0x0, - -0x1, -0x1, 0x1, + 0x0, 0x1, 0x1, 0x0, 0x1, 0x0, + 0x0, 0x1, -0x1, -0x1, 0x0, - 0x0, -0x1, 0x1, - 0x0, 0x1, -0x1, 0x1, 0x1, - 0x0, -0x1, - 0x1, - 0x1, 0x0, + -0x1, + -0x1, 0x0, - 0x1, - 0x0, - 0x1, -0x1, 0x1, -0x1, + -0x1, 0x0, 0x1, + 0x1, -0x1, 0x0, 0x1, - 0x0, - 0x0, - 0x0, - 0x0, -0x1, -0x1, - 0x1, - 0x1, + -0x1, 0x0, 0x0, - 0x1, -0x1, 0x1, - 0x0, + -0x1, 0x1, 0x0, 0x1, 0x0, - 0x0, -0x1, 0x1, 0x1, - 0x1, - 0x1, 0x0, + -0x1, 0x0, 0x1, - 0x0, 0x1, + -0x1, + -0x1, 0x0, + 0x1, 0x0, + -0x1, 0x0, 0x0, - 0x0, + -0x1, + -0x1, + 0x1, 0x1, + -0x1, + -0x1, ] .span(), array![ - 0x1, - 0x1, + -0x1, + 0x0, 0x0, - 0x1, 0x0, - 0x1, - 0x1, - -0x1, -0x1, + 0x0, + 0x0, 0x1, - -0x1, 0x0, -0x1, - -0x1, + 0x0, + 0x1, 0x0, -0x1, -0x1, + 0x0, -0x1, 0x1, 0x0, + -0x1, 0x0, - 0x0, + 0x1, + 0x1, 0x1, -0x1, 0x1, + 0x1, 0x0, 0x0, -0x1, + 0x0, -0x1, 0x1, 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, - 0x0, 0x1, 0x0, 0x1, 0x0, + 0x1, + 0x1, 0x0, 0x1, 0x0, + 0x0, -0x1, -0x1, - -0x1, + 0x1, + 0x1, 0x0, -0x1, 0x1, -0x1, 0x1, - 0x0, - 0x1, - 0x0, -0x1, -0x1, 0x0, 0x0, 0x1, - -0x1, - 0x0, 0x0, - -0x1, - -0x1, 0x1, -0x1, 0x1, 0x1, - -0x1, + 0x1, 0x0, -0x1, + -0x1, 0x0, + -0x1, 0x1, + 0x1, + 0x0, -0x1, 0x0, 0x1, 0x0, + -0x1, + 0x1, 0x1, ] .span() @@ -53704,154 +53726,157 @@ mod msm_tests { let msm_hint = MSMHint { Q_low: G1Point { x: u384 { - limb0: 0x6d7e43975f2f42b3b6fe01c4, - limb1: 0xcfd4e6d58233be2ab330104f, - limb2: 0x52a87b6de8748e91, + limb0: 0x62ee7d6477c49f9b42166038, + limb1: 0x2ecc42ef7d7c2403cd540c6f, + limb2: 0x1b640d5376d2919, limb3: 0x0 }, y: u384 { - limb0: 0x596526ab06e520b61a018fcd, - limb1: 0x94f5d0722448dba7c394bc03, - limb2: 0x36f3284ae2871d62, + limb0: 0xe0b86fee07d9349ba5152939, + limb1: 0x429daa59c4c26d56c07ca0ff, + limb2: 0x5ff0d2693afb0d8c, limb3: 0x0 } }, Q_high: G1Point { x: u384 { - limb0: 0x6bcd44e8f3f5d3fecb205ab6, - limb1: 0x842edea367593a89bfc2ca98, - limb2: 0x1be705b43652b3ec, + limb0: 0x57fd4086694a284a5804e1a1, + limb1: 0x66cb5c685973cb4da2cb8495, + limb2: 0x349b01173300388d, limb3: 0x0 }, y: u384 { - limb0: 0xcd6470b2a093549f359009a5, - limb1: 0x265947c40c2238e7796fc80, - limb2: 0x65390ffaf3835c2f, + limb0: 0xbe8b62e52d8a1d5aecad130f, + limb1: 0x82a224d46f4d496396cda70d, + limb2: 0x3e937c5d6aa83aa4, limb3: 0x0 } }, Q_high_shifted: G1Point { x: u384 { - limb0: 0x12242ef17addebddf3098d98, - limb1: 0xa1ccb15e5f7abe84a5e9b530, - limb2: 0x69943b20120ca589, + limb0: 0xa5eb76e3730c3d7b898df37c, + limb1: 0xfe72902b1bd61f3d17ad4fb5, + limb2: 0x5dbe90d8387ab840, limb3: 0x0 }, y: u384 { - limb0: 0x9db295953f261fd62c083118, - limb1: 0x34f32b732a091dade274b46, - limb2: 0x74e52e9a635b9543, + limb0: 0xb02766ea577962fe20254861, + limb1: 0xc5397a818fa7ce32e164adfc, + limb2: 0xb828ce5cca45bae, limb3: 0x0 } }, SumDlogDivLow: FunctionFelt { a_num: array![ u384 { - limb0: 0x9ce57d412d14b1295bce5ad, - limb1: 0xe4354fc49f3fbf56396bdd53, - limb2: 0x6d9d9301cae459bf, + limb0: 0x7ecd4130e7c1497d37a85a4e, + limb1: 0xd3a6b94e0781aa31a0ea0eb9, + limb2: 0x709915d5c914e964, limb3: 0x0 }, u384 { - limb0: 0xa4df3b25e4cbcd7a443deaac, - limb1: 0x6d617ab31038eca9a6297abe, - limb2: 0x723d1d3fb15c5520, + limb0: 0x3beb5140377c7b07f1c0cbbf, + limb1: 0xa3736b959edd0f9968789275, + limb2: 0x37130e10e3aeeaa8, limb3: 0x0 }, u384 { - limb0: 0x85cb1d3039e01746aa48ddd2, - limb1: 0x1f0f1569ef6b0206bff2bb05, - limb2: 0x50e8f7f66bc7a06f, + limb0: 0x33d208e05790022864a19115, + limb1: 0x9dc6990840650dda9ecc44ab, + limb2: 0x6376d417259d15be, limb3: 0x0 }, u384 { - limb0: 0x2834ab80df403282db196b00, - limb1: 0x61a66d15d53865472b1d1826, - limb2: 0x4aadb43b39b8d5a3, + limb0: 0xb701a6b236c27447b437740e, + limb1: 0x5acc38428e8eb4c30d866b, + limb2: 0x497a7b540baf0d3f, limb3: 0x0 }, u384 { - limb0: 0xd671cc148031a17a1b99044d, - limb1: 0x39ff16979ba681d81bdff2dc, - limb2: 0x4b01c66fdc51a9d2, + limb0: 0x560cb25522fa68303abc6987, + limb1: 0xac6285a47927ea24ea222a4e, + limb2: 0x5d7abefd54112d8d, limb3: 0x0 }, u384 { - limb0: 0xf73cfae6d98a14d6a4331b45, - limb1: 0x49b2653c7552a846e112c845, - limb2: 0x21051b69b4c7d873, + limb0: 0x17ee10aa0040ac520ce5576a, + limb1: 0x9d6dea2fc55253a817d3c0f4, + limb2: 0x1c81a66d906bd653, limb3: 0x0 }, u384 { - limb0: 0xa0535eef9ca943233d97be09, - limb1: 0x623d0d277cd7b98dec93d25f, - limb2: 0x31a2f81b69c18b08, + limb0: 0xcdcbdc94917f9a83d636672e, + limb1: 0xe5c71bc2153ad2bb231f9a9c, + limb2: 0x1ccb609f3259d5e2, limb3: 0x0 }, u384 { - limb0: 0x1b9256dea869bee87fdee497, - limb1: 0xfc6510a5eaa1dd0792b6bab2, - limb2: 0x6c9b266b7e3aa1b1, + limb0: 0x1d8179cb8262b5c597694dfc, + limb1: 0x315373abd38d8aeabdc12db6, + limb2: 0x78a60e6e20e6efbf, limb3: 0x0 }, u384 { - limb0: 0x4632ae8a4a34916113739b8f, limb1: 0x19ffc71, limb2: 0x0, limb3: 0x0 + limb0: 0x52f62ab9515a0171797137da, + limb1: 0xffffffffffffffff47fc9ffc, + limb2: 0x3fffffffffffffff, + limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0x49f34321a1d3d680985db633, - limb1: 0x9659b89205fad8242c618f16, - limb2: 0x2a1f318fba7a2c9, + limb0: 0xd702faf0061608bd31f358e5, + limb1: 0xf877c2300482b1a9d5e86604, + limb2: 0x3440365638d3ff04, limb3: 0x0 }, u384 { - limb0: 0x103d5efa77b17c92ff5dd4e8, - limb1: 0x84ea7c83b19deb2ad25743c8, - limb2: 0x5e38163dc35053ce, + limb0: 0x9b2815c71b752fdc10db089f, + limb1: 0x915eb979c9e39d7aa2fcb640, + limb2: 0x5f4bfe7d641228c7, limb3: 0x0 }, u384 { - limb0: 0x13b0b416517e9f8510de8aa9, - limb1: 0x4de8d2328829a194ed2f801c, - limb2: 0xd01b345f7381750, + limb0: 0x373cf7effa8c1431f9dd2338, + limb1: 0x1247c3bc74f4b111e21f52ec, + limb2: 0x778b4b7e5ee72344, limb3: 0x0 }, u384 { - limb0: 0x7e70474e57e14a874ba57ab4, - limb1: 0x7a377e412c21e69be719d8dd, - limb2: 0x5cc509794bf84731, + limb0: 0xe8a9aca6b993d93ce5135795, + limb1: 0xa08f5f1849a02174821ef4f6, + limb2: 0x29cc2395a727296f, limb3: 0x0 }, u384 { - limb0: 0xd929cf2dd9cb62875e85347f, - limb1: 0xd4b4f77e9df53e2cebcaa627, - limb2: 0x5dbfaef2bbe22389, + limb0: 0x65850c3c6245a128a8a7d1eb, + limb1: 0x25ac2a1c7c47217d2d4d8b9, + limb2: 0x203c3a86c7db8c59, limb3: 0x0 }, u384 { - limb0: 0xa58463c42028203501ca1e33, - limb1: 0x6f9e2f12577b994ea479404e, - limb2: 0x3ad215c46b684709, + limb0: 0x87979afb7b08fdc96602a6a0, + limb1: 0x84c23d24702b06a629abbc0e, + limb2: 0x105aefd83765fb51, limb3: 0x0 }, u384 { - limb0: 0xe668e516fa4b53d5a9b7d926, - limb1: 0xa78374f3a9e88d4f62f9612b, - limb2: 0x35d6426b2218ce0a, + limb0: 0xbeb51174df91c28485777439, + limb1: 0x1ee1f6d6172edad9a10d6671, + limb2: 0x5aceea535c229e34, limb3: 0x0 }, u384 { - limb0: 0x925c6e6ba2a15c34c9ee8353, - limb1: 0xaf5082770743c956d1b1581, - limb2: 0x423bcc41d59694a2, + limb0: 0x377cd44afd7a3672a2821d93, + limb1: 0xec24f6661348b2f55dc3849b, + limb2: 0x587dba2ac4c16140, limb3: 0x0 }, u384 { - limb0: 0xbec03ca9207d365855616495, - limb1: 0x4c3efd21a8ad0cb03f3bfa1b, - limb2: 0x236647a5d47e40fa, + limb0: 0xc056931526205f456eeb9552, + limb1: 0xf960c6dd31a50299cfdb246d, + limb2: 0x535fc807984d0458, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -53859,138 +53884,138 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xadc1d35ff78f8701adfe8eb, - limb1: 0xd84bdf4846c32236cae6256e, - limb2: 0x2ceedaec3315ff42, + limb0: 0xef0259a6b2291907acef14ad, + limb1: 0xc3be55ddc68e26ff04ea38a4, + limb2: 0x3f81ed9c3b6add5d, limb3: 0x0 }, u384 { - limb0: 0xe0a38b830a8b2582c4351fff, - limb1: 0xa7c6b4522f21ff91d8370743, - limb2: 0x41758e7ea78729f0, + limb0: 0x78f7455ea967bb79873de8fa, + limb1: 0x67be88cdbcc9a665bce9bb6f, + limb2: 0x45138c845fe87a8d, limb3: 0x0 }, u384 { - limb0: 0x6031e1ca419b373203e36a65, - limb1: 0xba18a1e6e8a2dfbe18e9d3c4, - limb2: 0x11f1cf0184675e93, + limb0: 0x8df758451ff59d6ec3b65632, + limb1: 0xdce521c972ea8a99cd6e3961, + limb2: 0x7364b9ae1efc6248, limb3: 0x0 }, u384 { - limb0: 0xd5b84e9bd7253184b2262511, - limb1: 0x5bc3f8ef0275cfbcf6327bdd, - limb2: 0x571e52d429c07cdf, + limb0: 0x868689ede65a93d7f9f453ea, + limb1: 0x66e99b4766eb39ffa4e17c88, + limb2: 0x34cf85519484f912, limb3: 0x0 }, u384 { - limb0: 0xfc426f5045452020d8216ec5, - limb1: 0xf24f4ba14c94137747da50d4, - limb2: 0x1ee3d037989508e0, + limb0: 0x54f67b6a60f075e1ea911340, + limb1: 0x54ada9b476cc1d904125066e, + limb2: 0x78dcf5d1eda0b817, limb3: 0x0 }, u384 { - limb0: 0xf60eaaa96f9337c447d8d46b, - limb1: 0x23b2d44e6f1cb9ae6d536c9a, - limb2: 0x2cacc6a9a2730ed9, + limb0: 0xac8e7b0e3fca64fe2e1e6841, + limb1: 0xd7592b912d1bb76c5558c640, + limb2: 0x195ebaabbccf6751, limb3: 0x0 }, u384 { - limb0: 0x388312e14d2b4b080146a014, - limb1: 0x515d7d3e2961f187afe051e2, - limb2: 0x53aeab13c9bae480, + limb0: 0x80ef4ede5725962a9575ab7, + limb1: 0x116cc0ff414378abc18c3d59, + limb2: 0x770548e366914371, limb3: 0x0 }, u384 { - limb0: 0xa013393830f2e0c823b084b8, - limb1: 0x8eb7ceb340c3b72d9577728a, - limb2: 0x1432533da04d2397, + limb0: 0xfe6c6d8921f500061acd198c, + limb1: 0x56e265ea333ca26ea59615a2, + limb2: 0x254a436c9111c16d, limb3: 0x0 }, u384 { - limb0: 0x5d27c70b6246f5962c0fa4db, - limb1: 0x90b9a725dfd3063ece643414, - limb2: 0x7c98d8034dcfafbc, + limb0: 0x90ca02564fac331baa394f89, + limb1: 0x6e37a1d9205ee0ffc097ce5e, + limb2: 0x15599583e2d9f09c, limb3: 0x0 }, u384 { - limb0: 0x5fdd4a35ebc4dfe593eaa186, - limb1: 0x13e49e9862f51f7f18f42042, - limb2: 0x16179b29e7a869e5, + limb0: 0xce382d587a2ffdaa58fe78fb, + limb1: 0xb8e68360902749629e7dcaef, + limb2: 0x39d9f76e83bb715d, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xf908d6450d2f52da59fc46a9, - limb1: 0xe9970db811922da1e31424dc, - limb2: 0x56dead624e259e5c, + limb0: 0xa30610cec4518759bdb86137, + limb1: 0x9aada2ad5cbf9b9cc2dfee55, + limb2: 0x6b4f2ad525b10517, limb3: 0x0 }, u384 { - limb0: 0x9e671beefbd0ed7c95bcfd20, - limb1: 0x640758c19a9767ce337478fe, - limb2: 0x5e9faf68c3c60a0, + limb0: 0xc2c69c5af10c19015940add4, + limb1: 0x33cef81784caa1ec3f31872f, + limb2: 0x51e391da76e5eaac, limb3: 0x0 }, u384 { - limb0: 0x19c73913900760d0efcd6976, - limb1: 0xd54eca74d2ca90e5f0e5cc82, - limb2: 0x77f3f64d76a34432, + limb0: 0xf5bb50e9e39b0ac81537ea51, + limb1: 0x3ab7c2287947b4bae7221180, + limb2: 0x674a6cd6986297aa, limb3: 0x0 }, u384 { - limb0: 0x4a1ba6131a99fec6376b9e49, - limb1: 0x45af064ebfa3250635fee536, - limb2: 0x4f2a12275a795306, + limb0: 0x121094bd804f99b983aa1d9c, + limb1: 0xe3e10e3234de37eeef81c76f, + limb2: 0x3f39fe238343299d, limb3: 0x0 }, u384 { - limb0: 0xc6abda3713d0b12f7bc70042, - limb1: 0x6145c33cc1283ffb2b16146e, - limb2: 0x46dc25fc55597ed3, + limb0: 0x8e5548dcbd76b8f6af6d3dab, + limb1: 0x58fd7e77cb08be368ba3fb0e, + limb2: 0xd9718ef3c38369e, limb3: 0x0 }, u384 { - limb0: 0xc4fff727c66c072f19dcd226, - limb1: 0xd8690a189f77a8497092f914, - limb2: 0x7be8b656118fdfa2, + limb0: 0xece5c3f48524821e2f7cf89b, + limb1: 0x367da9b2af12d7df2c90185e, + limb2: 0x42fcbd1791f08432, limb3: 0x0 }, u384 { - limb0: 0x34cda31fcd0581cd650ba962, - limb1: 0x21870c08fea1376a6239d8b, - limb2: 0x506e9dd5fbc0a683, + limb0: 0xee359618019dfa2bfbfc6fa, + limb1: 0xbe43c305abbbae3d4b8230c8, + limb2: 0x5799eabdcc7891f3, limb3: 0x0 }, u384 { - limb0: 0xec08ba0f708931d08c2910b5, - limb1: 0x1bac14c73fcc7374eebd542b, - limb2: 0x70ec00f979741c75, + limb0: 0xee8a8f372afc98e30b71148a, + limb1: 0xa0a21b8464276e86b75f217, + limb2: 0x9af5129742da30c, limb3: 0x0 }, u384 { - limb0: 0xd0128066d31c00237b783806, - limb1: 0x571b7c79fd779627847cd142, - limb2: 0x28628a6b4da74285, + limb0: 0x7d5616a2ac183211dc9296ad, + limb1: 0xcaba8efd5de36824e3df4d29, + limb2: 0x63cf32e0aea1120b, limb3: 0x0 }, u384 { - limb0: 0xa9fb229ac1350a9d9f024b70, - limb1: 0xcfa920f4b8d9f9f509ab4638, - limb2: 0x5b5714227e247285, + limb0: 0xb5a498800acd6a70bbd6ead, + limb1: 0xd5afe9f9f3cbe4161eb4f670, + limb2: 0x7de88fcc06313826, limb3: 0x0 }, u384 { - limb0: 0x9f0199634f133dc3c2aa9a93, - limb1: 0x3c8ce934d1ef7a6bd8d3cbde, - limb2: 0x1f8a79157b505388, + limb0: 0x4421ff42a9ec18019b3e34d3, + limb1: 0x1dbcd77374c3f0cbc97c3af8, + limb2: 0x35cc66fe6a7b2027, limb3: 0x0 }, u384 { - limb0: 0xbec03ca9207d365855616495, - limb1: 0x4c3efd21a8ad0cb03f3bfa1b, - limb2: 0x236647a5d47e40fa, + limb0: 0xc056931526205f456eeb9552, + limb1: 0xf960c6dd31a50299cfdb246d, + limb2: 0x535fc807984d0458, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -54000,111 +54025,111 @@ mod msm_tests { SumDlogDivHigh: FunctionFelt { a_num: array![ u384 { - limb0: 0xb6b300fd618de0c32881f62c, - limb1: 0x7271b7e96658d7fd41919700, - limb2: 0x5e2fed978bd6b8f6, + limb0: 0x3ae523bcd41175848827e046, + limb1: 0xef460ac88a7ffaf5548741d9, + limb2: 0x79c3440921e7dbd8, limb3: 0x0 }, u384 { - limb0: 0xba31569a9b58d3b92de91988, - limb1: 0x188fb5611ee629bad84c4dd2, - limb2: 0x1e33460452b29cb9, + limb0: 0x37179d9fa0a17b00252be21d, + limb1: 0x6b9f8a13f7e896694a62a7be, + limb2: 0x5ce6aca4a5d0505a, limb3: 0x0 }, u384 { - limb0: 0xd25faa36ba995dddfd307a54, - limb1: 0xfa81322bcdb524191deb0104, - limb2: 0x14f81fb0f08f5c6b, + limb0: 0x89c6f209c98e1cd12725e88b, + limb1: 0x8a76b1ec05ced901f679401a, + limb2: 0x360fe1d691991bd4, limb3: 0x0 }, u384 { - limb0: 0x5af586d9bd06a3b987512bbc, - limb1: 0x72ce7b35080946706cadb35b, - limb2: 0x505287f4efcda47f, + limb0: 0xfc980fce10691dfadeb4c968, + limb1: 0x7663c96ff51e3918d1549c13, + limb2: 0x5355231c1ed06176, limb3: 0x0 }, u384 { - limb0: 0x6cd76e6ab2a1d5e7c03e28bf, - limb1: 0xa0af94c1bb18770a60e09015, - limb2: 0x27f28b934d535415, + limb0: 0x3e5beb59d84242534bc57bcd, + limb1: 0x790faa8b880bdc60e39feed1, + limb2: 0x8ec8ac8581cc0ca, limb3: 0x0 }, u384 { - limb0: 0x5a364b022602f0236538739e, - limb1: 0xd8b0ba9d6ece7126456076bb, - limb2: 0x7a6bed0e58ac3d20, + limb0: 0x2f4eb40ae62e1aa57768e610, + limb1: 0xbedfc5838ad9d74cd203a13e, + limb2: 0x704a248fb7b749a9, limb3: 0x0 }, u384 { - limb0: 0xe82ba4127a42f6c57d607531, - limb1: 0x940a9ad4ed326f86a2a03e6b, - limb2: 0x6ee5dacdc949e232, + limb0: 0x4490737db7295323bba0758f, + limb1: 0x3aa5edcce97ffe3c8073f77f, + limb2: 0x623b3ed23e650973, limb3: 0x0 }, u384 { - limb0: 0x627d9c6a2f8522c0cbb41222, - limb1: 0x8255443bbd82a9fb0f9ab68b, - limb2: 0x13ba1640d161598f, + limb0: 0xb816e9625a428f3fe7cab96a, + limb1: 0x31f7c349004ee1e2bd46b7e1, + limb2: 0x15a49d986c1b265, limb3: 0x0 }, u384 { - limb0: 0x853a109ecec6a0e229dfee8e, limb1: 0x16c80c19, limb2: 0x0, limb3: 0x0 + limb0: 0xf24bc3bffc8f6b3056e375bd, limb1: 0x1c5903aa, limb2: 0x0, limb3: 0x0 } ] .span(), a_den: array![ u384 { - limb0: 0x85a872d3b331b1d518cb19f, - limb1: 0x15d2adbd378f1ef30f706fcc, - limb2: 0x313dd865ade45869, + limb0: 0x3b7b6f47ce3e3ad9f511b0df, + limb1: 0xbea6b9e23b11a7865040d951, + limb2: 0x57994624c0263d5a, limb3: 0x0 }, u384 { - limb0: 0x340ea195fb5ce078d55cf4da, - limb1: 0x89fc733dfba3dd486ed76ce0, - limb2: 0x160d1e31b67d3eac, + limb0: 0xa3aee2b63a5e59afb2dc2dcc, + limb1: 0xf3313117286ff70f258518cc, + limb2: 0x1216f19bea68e8c1, limb3: 0x0 }, u384 { - limb0: 0xf319420c7a4ef540dfefd9ad, - limb1: 0xf3fab25385937bc7cfb867bc, - limb2: 0x4d94a23781eb2e21, + limb0: 0x57a3c0b5bf8ef15b9aef08e6, + limb1: 0x496634d8a54bea12b5209e29, + limb2: 0x3b25c646cfab1625, limb3: 0x0 }, u384 { - limb0: 0x4edb4c268683db382bc59eb3, - limb1: 0x58cfcdd010d37b18089a8611, - limb2: 0x6b3caeed6c07714, + limb0: 0xad812b4663bb9b4ee144ee5f, + limb1: 0x9f2560c1b9e3c30d24ca3c99, + limb2: 0x44f4be26ca48ff83, limb3: 0x0 }, u384 { - limb0: 0x4d252472777cb22f0724e0a3, - limb1: 0x917c4d26c190ee6f56d2567a, - limb2: 0x5521f0429ecfeb66, + limb0: 0x82d6955034e755ce35986fd1, + limb1: 0x801dabf2bd19e34f92eb36e7, + limb2: 0x150d3c5e51cb2f65, limb3: 0x0 }, u384 { - limb0: 0xc3195321f0627b161c244da0, - limb1: 0x7b75a3476ec0aa85abe40134, - limb2: 0x4565eedb937a610c, + limb0: 0x9e873ba4f30122b789665cb, + limb1: 0xb0e5229e4db929293fe0050a, + limb2: 0x5b544c3291ebfdaf, limb3: 0x0 }, u384 { - limb0: 0x5fa01426b68e078d18c280f8, - limb1: 0x5e1382214b60aff841c956cc, - limb2: 0x734daf64b1ac0230, + limb0: 0x9f728482e759af40833574, + limb1: 0x2adef94e8f74d45dcb895afd, + limb2: 0x1ee38a822c22ad38, limb3: 0x0 }, u384 { - limb0: 0x9dd160fcac09a5a6f076878d, - limb1: 0xc6481eaac5816c0156a8a21f, - limb2: 0x5bf28b193ba321e8, + limb0: 0x94f38917d636803b036deaa5, + limb1: 0x73e9766a3bf1d6ec4dc0a47d, + limb2: 0x3995139a51715ea1, limb3: 0x0 }, u384 { - limb0: 0xc0713b578bb6a50d413f0ba3, - limb1: 0x97e50553c387905132a93fd2, - limb2: 0x5a27bd5f86a01b9f, + limb0: 0xcb47cff3349ad69658fd13e9, + limb1: 0xc161ad6455ad5b4ffa63ac47, + limb2: 0x207b07c59cb9f4e4, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -54112,138 +54137,138 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xf9b27422329a8df7153d78, - limb1: 0x4a5c9b73f0b2a9a319da7274, - limb2: 0x46b137018fd3cb38, + limb0: 0x541b53ebbaa304ce10e6a00, + limb1: 0x86b7c878d5bf07e76bec95a2, + limb2: 0x2b5f479299c588f9, limb3: 0x0 }, u384 { - limb0: 0xd64f2594c909ec687415297, - limb1: 0x2abc6ddd5068d373ae35eef6, - limb2: 0x1e2349fa71b6d16d, + limb0: 0x998b7e379181d1dd2cfd3285, + limb1: 0xd1c999eb90d08c28bcb1b0e9, + limb2: 0x53a15433651c874f, limb3: 0x0 }, u384 { - limb0: 0x382318a91c2651928b1ab6a2, - limb1: 0x4e40e8c73302c19a3bf1cae9, - limb2: 0x2265c268b7581601, + limb0: 0x8bf5a4d9d39b45110ea6e173, + limb1: 0xae6818f516040445964837f1, + limb2: 0x1a52eda23b2f091e, limb3: 0x0 }, u384 { - limb0: 0x8115259d89e47b54c8076476, - limb1: 0xa4c8de90d4d952d17d5d5af3, - limb2: 0x639f3b4d901d03e8, + limb0: 0x4fbfaef25d538fea08b66dad, + limb1: 0x2ee0fc6a42822ab80d0ccc31, + limb2: 0x16c1370085fe717, limb3: 0x0 }, u384 { - limb0: 0x589850f9d67c8abe2ebd207b, - limb1: 0xef5213dd94f87959e114f5aa, - limb2: 0x19502afdf09c3fa6, + limb0: 0xe8154f53b2e6e00ef37b4094, + limb1: 0x85d51940a130736f7fdc3bbd, + limb2: 0x3e253aadfd759680, limb3: 0x0 }, u384 { - limb0: 0x9ce9079b8c0ad263a8c2a22a, - limb1: 0x6145adccdc3407560108def0, - limb2: 0x5f036392454540f0, + limb0: 0x2406c15d6e7f7837f674b802, + limb1: 0x79d18af1fee55e19ec887431, + limb2: 0x2785f9b88ac827b2, limb3: 0x0 }, u384 { - limb0: 0xc229a6da01e6d96262e3828f, - limb1: 0x966e17bf5f428ee0cb0ae6b8, - limb2: 0x13e616fb0b7877ce, + limb0: 0x57f17452769f6dfcb0ba77e0, + limb1: 0x90ff7e03fbf19b832a82d0e9, + limb2: 0x9e9f4fe63e7f4c1, limb3: 0x0 }, u384 { - limb0: 0xb5ab4edebbc4616dec6bb471, - limb1: 0x89ba22d5e6a471ca965f2203, - limb2: 0x5a4eb7bf6314a361, + limb0: 0xa57e489ea2ee96dca97cd177, + limb1: 0xceff38d1802ba1dd0fbe103e, + limb2: 0x2179417b9cc90b20, limb3: 0x0 }, u384 { - limb0: 0x3f04e72ed8fd8b701078fa2a, - limb1: 0x1e35ac27e55d5cf785d24c53, - limb2: 0x5d770878d22fc063, + limb0: 0x611e97d651273334fcb48b22, + limb1: 0x8c98a4e7c93fe18bdd0a39b7, + limb2: 0x6039c04260c6949f, limb3: 0x0 }, u384 { - limb0: 0xf8c7e9df2d0419bff9be7923, - limb1: 0x3dbbdc63f6e1cd5deba6d279, - limb2: 0x53b8797948ea435f, + limb0: 0x35fcbe92f45ceee7a93ab3af, + limb1: 0xc71b56016f0eb5f3a1c677ca, + limb2: 0x5cbf912102a53b4f, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0xcc58e2809dd9fe46a588c691, - limb1: 0x56a53472aacfc647e2097de1, - limb2: 0x333c36641455d84b, + limb0: 0x569953b22a10d1626b88b7d4, + limb1: 0xb021d4c5c378d9ae7c123b88, + limb2: 0x5057bdf4ccdab22d, limb3: 0x0 }, u384 { - limb0: 0x538782c33d0bd0b0c952eb95, - limb1: 0x8c13813efdc4308b887bf49f, - limb2: 0x725d87f07c1f36c9, + limb0: 0xb1a7888face2bd97504a4893, + limb1: 0x87877db36e86967c92b7d569, + limb2: 0x70788a3efe9e6fd1, limb3: 0x0 }, u384 { - limb0: 0xa3260fb53064b32b1be2c5e3, - limb1: 0x1f46a4e25630489bb1d5ad1d, - limb2: 0x7fd3af6cc2879752, + limb0: 0xf934585f730bf39ee3592e7c, + limb1: 0x3121c56dfc6dcf114eea50b0, + limb2: 0x10574aaa59b1e76, limb3: 0x0 }, u384 { - limb0: 0x4f1c587a0dded8b8c264b134, - limb1: 0x215444a4186be0c022596b58, - limb2: 0x3124c3be8392d579, + limb0: 0x3c14e551f4f65bfb60ebd3f6, + limb1: 0xa240d3e1e4fb7c06149341ec, + limb2: 0x5a5ca11c2206f05, limb3: 0x0 }, u384 { - limb0: 0x60108251c1edb5e8f1141679, - limb1: 0x41142f090119e0ba45227b0e, - limb2: 0x344a81a9dbdafa11, + limb0: 0x24b99c6baa2b4b9060783801, + limb1: 0x7fb9e360b3d43348709a56c9, + limb2: 0x57246351fe5a466a, limb3: 0x0 }, u384 { - limb0: 0x98b3c9c7efe971382680a518, - limb1: 0x880813108c06be5446ecc1b8, - limb2: 0x3eb2f03d48a29849, + limb0: 0x6f11df2f8cbb654787b2da46, + limb1: 0xd39cccd295157204efc61b37, + limb2: 0x7ad5b81e6e7c6ca5, limb3: 0x0 }, u384 { - limb0: 0xa687ec0683a6af0e635ba346, - limb1: 0xd11b9b5d485c7c5837dcfa13, - limb2: 0x4db33035bf283a0f, + limb0: 0x13b0fd6de165f03e1d43ece0, + limb1: 0xfe3c4982ecdce8931d12f4dd, + limb2: 0x7b55c0251bbaf1fa, limb3: 0x0 }, u384 { - limb0: 0x124c99a80b63db985c9d95fa, - limb1: 0x4b1f7be8fed296e636718638, - limb2: 0x762eb4072d08f0e4, + limb0: 0x79979a602f670180f5b212d6, + limb1: 0xd89c741d574bf5c4fce2f7d1, + limb2: 0x336b8ce78640397a, limb3: 0x0 }, u384 { - limb0: 0xc279eef900476752470c2bf5, - limb1: 0x4d82ca8f9f080e2abdaa9388, - limb2: 0x67ef07db82aec71f, + limb0: 0x5b760d51fb8db37f703fbd84, + limb1: 0xd0d19ebb1d9820f56283456d, + limb2: 0xc7d503284ab1628, limb3: 0x0 }, u384 { - limb0: 0xa1b25d6cd62391b02fd6dc04, - limb1: 0x3407dab0e432abab7e624210, - limb2: 0x656a0b3734df0575, + limb0: 0xa9b43333d9c47f99e03cf6ef, + limb1: 0x1e2ca8da0a22c49bf45ba2a2, + limb2: 0x7ff7b46d2f980566, limb3: 0x0 }, u384 { - limb0: 0xaa768bf4587b8735e9329ecd, - limb1: 0xf7dfffb826fca9d7c261587c, - limb2: 0x394137ece15ce0ce, + limb0: 0xa198b40f82a861c9fc2a01e5, + limb1: 0xa58157779d6d14c2b9795ada, + limb2: 0x16e3c06df72b1d87, limb3: 0x0 }, u384 { - limb0: 0xc0713b578bb6a50d413f0ba3, - limb1: 0x97e50553c387905132a93fd2, - limb2: 0x5a27bd5f86a01b9f, + limb0: 0xcb47cff3349ad69658fd13e9, + limb1: 0xc161ad6455ad5b4ffa63ac47, + limb2: 0x207b07c59cb9f4e4, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -54253,9 +54278,9 @@ mod msm_tests { SumDlogDivHighShifted: FunctionFelt { a_num: array![ u384 { - limb0: 0x935006195e8a0bbb9ca3c3b7, - limb1: 0x7bfa2a14af98e9153cd55d04, - limb2: 0x6f3e0e3a7be88656, + limb0: 0x6825e7cc482c30338d95c6fd, + limb1: 0x81f873be972d5552abd601b2, + limb2: 0x7da70d0d559e7e17, limb3: 0x0 }, u384 { @@ -54268,15 +54293,15 @@ mod msm_tests { .span(), a_den: array![ u384 { - limb0: 0xb1e916e1df80bffae8f786d8, - limb1: 0x50f2db25f866e396e64a19be, - limb2: 0x18ce0f721cbd4468, + limb0: 0x9cda64e0c0ef7519b22fc107, + limb1: 0x9aa50719372a773ff449d4e8, + limb2: 0x6c2fbacccb8084a1, limb3: 0x0 }, u384 { - limb0: 0x820e8c25912c402341d6178c, - limb1: 0xda046ffe392c06f19a538037, - limb2: 0x7a84bf2bb7a0a689, + limb0: 0x217489623a99a3a1e6d2abd, + limb1: 0x9ac2136c8ab6157545872bb5, + limb2: 0x6da66e1094850f31, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -54284,54 +54309,54 @@ mod msm_tests { .span(), b_num: array![ u384 { - limb0: 0xf85a565c8ec1f410b7b81d26, - limb1: 0x27b42f81f2e636c9f63cf550, - limb2: 0x2ae29129fa59e8cd, + limb0: 0x80f0428c338de767c6fc693f, + limb1: 0xf226ae96281094fae54260ed, + limb2: 0x4746ba40722e8b6f, limb3: 0x0 }, u384 { - limb0: 0xf8e1baee022fd19681ff755f, - limb1: 0x4cd2a616dba41f4d54977171, - limb2: 0x2d7599ca520d1823, + limb0: 0x4c66154b99c1370ba75fef7, + limb1: 0xdd3854fa0811f1675501e486, + limb2: 0x2a34eb5eb8bb8484, limb3: 0x0 }, u384 { - limb0: 0x409ffc20342f02df6f0a18e9, - limb1: 0x13173b23de66abea023ed69b, - limb2: 0x7183145d1ee573a8, + limb0: 0x182b17798e36f04299edc7ed, + limb1: 0xad6d21a7b53af1f8cd1c5cba, + limb2: 0x665d8876cd372f0d, limb3: 0x0 } ] .span(), b_den: array![ u384 { - limb0: 0x4dc49969adf2274fba190cc3, - limb1: 0xbe9f9d901dac5af3088930ad, - limb2: 0x776ba4ea307e3680, + limb0: 0xb00a8f0323d66911c1e81b20, + limb1: 0xeac8b0382844b7e1892ee82f, + limb2: 0x10091afb37ec472, limb3: 0x0 }, u384 { - limb0: 0x9dd005123dc14061b81bda8d, - limb1: 0x2808cf6b0bce463b8d7068bf, - limb2: 0x600e96f1e18c0002, + limb0: 0x78a569c1ff704c609054ba63, + limb1: 0xad4c3842179ddda2825f16e5, + limb2: 0x5430d3c7954246ac, limb3: 0x0 }, u384 { - limb0: 0x1a579e093dbd197c495a9ccf, - limb1: 0x500bdbccaf143117b8e87793, - limb2: 0x1ff30f217e71fa55, + limb0: 0x13baad354699ee9bb6924468, + limb1: 0xa37e45b903b81ae9bb237a83, + limb2: 0xbe84d35c25adc78, limb3: 0x0 }, u384 { - limb0: 0xbe8e41d98bf2a189e1b39e05, - limb1: 0x828abc3359e2216d5202d01b, - limb2: 0x761cbc45c277034e, + limb0: 0xa97f8fd86d6156a8aaebd847, + limb1: 0xcc3ce82698a5b51660028b45, + limb2: 0x497e67a0713a4387, limb3: 0x0 }, u384 { - limb0: 0x820e8c25912c402341d6178c, - limb1: 0xda046ffe392c06f19a538037, - limb2: 0x7a84bf2bb7a0a689, + limb0: 0x217489623a99a3a1e6d2abd, + limb1: 0x9ac2136c8ab6157545872bb5, + limb2: 0x6da66e1094850f31, limb3: 0x0 }, u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -54341,12 +54366,43 @@ mod msm_tests { }; let derive_point_from_x_hint = DerivePointFromXHint { y_last_attempt: u384 { - limb0: 0x3c69168d1ba3bb8454ad06ef, - limb1: 0x49429f9b63c11bdcc21ff990, - limb2: 0x1f39dff02359d28e, + limb0: 0x7445a2be8c9348ddbbfc7600, + limb1: 0xe2a81c0ffe5a70e0e1e9eb58, + limb2: 0x2e824263f1853e9e, limb3: 0x0 }, - g_rhs_sqrt: array![], + g_rhs_sqrt: array![ + u384 { + limb0: 0xc4ba6c5d49455119e72c3d77, + limb1: 0x21074e200c6963c8067206d8, + limb2: 0x18ac8971895be961, + limb3: 0x0 + }, + u384 { + limb0: 0xe3a1a71d391942de70984fb9, + limb1: 0xcdeb4a731c82d11303e62c18, + limb2: 0x20f33f8dbdf7d8a2, + limb3: 0x0 + }, + u384 { + limb0: 0x2e464e735564d538a287248c, + limb1: 0x321ffa226a6c0695515f75af, + limb2: 0x7ebc75526309f1d, + limb3: 0x0 + }, + u384 { + limb0: 0x50a55d63047fe22a70351964, + limb1: 0x16ab6f4f883f03538d0ede9b, + limb2: 0x44b3ff7e1382d1, + limb3: 0x0 + }, + u384 { + limb0: 0xeb579a03c07ef9b72de1da39, + limb1: 0x67350c5a6372d73dc9518ce4, + limb2: 0x387eabae16f94729, + limb3: 0x0 + } + ], }; let res = msm_g1( points, scalars, scalars_digits_decompositions, msm_hint, derive_point_from_x_hint, 4 @@ -54354,15 +54410,15 @@ mod msm_tests { assert!( res == G1Point { x: u384 { - limb0: 0x3479851591f54a17b0240a2a, - limb1: 0x398ec866e868988744e33813, - limb2: 0x433d6d7bdef844f6, + limb0: 0x308e33387be53ee2d9cdfe6e, + limb1: 0x44497820981b8e188af3dea, + limb2: 0x6706c8806e590331, limb3: 0x0 }, y: u384 { - limb0: 0xdb2e06c028ed2a4897607875, - limb1: 0x5834f06b16cdb2c1dff7a32b, - limb2: 0x4efdf06f9e56e99, + limb0: 0x3c54406ff148049e7f87b7b8, + limb1: 0xcf8b0565a5ee9d39eb88de43, + limb2: 0x60cc01a47f0c3f59, limb3: 0x0 } } diff --git a/src/cairo/src/tests/pairing_tests.cairo b/src/cairo/src/tests/pairing_tests.cairo index 2e760683..bb7f1ef5 100644 --- a/src/cairo/src/tests/pairing_tests.cairo +++ b/src/cairo/src/tests/pairing_tests.cairo @@ -15,41 +15,41 @@ mod pairing_tests { let pair0: G1G2Pair = G1G2Pair { p: G1Point { x: u384 { - limb0: 0xf0bb4dcf423852993ec57675, - limb1: 0x843e383df3913d9eea751b6f, - limb2: 0x2d7b03e35bcacad0, + limb0: 0x5c724369afbc772d02aed58e, + limb1: 0x2cd3bc838c66439a3d6160b, + limb2: 0x72f26b55fb56be1, limb3: 0x0 }, y: u384 { - limb0: 0xb4ee61904050fae6335c3927, - limb1: 0x414c763686944083f81d8fbf, - limb2: 0x1f1e123e710e1fb0, + limb0: 0x772ca79c580e121ca148fe75, + limb1: 0xce2f55e418ca01b3d6d1014b, + limb2: 0x2884b1dc4e84e30f, limb3: 0x0 } }, q: G2Point { x0: u384 { - limb0: 0x6a65413626ac06ba2b4c388e, - limb1: 0x93dab66dbb571e2fcedc82a0, - limb2: 0x2ae567b61f80926a, + limb0: 0xa30b422f34656d6c94e40be, + limb1: 0x83069b5050fd7194c7e35d0c, + limb2: 0xf0e8184945e8d34, limb3: 0x0 }, x1: u384 { - limb0: 0x6c6b037639bc1664a3acbede, - limb1: 0xe6d131af60c749b60e9b706d, - limb2: 0x2e08c9cd0ee89149, + limb0: 0xde9079ee8fa5e15901dfef27, + limb1: 0xdb602cf367841e5047ffab14, + limb2: 0x1752c7b6b35af45, limb3: 0x0 }, y0: u384 { - limb0: 0x5bfa8a3d2463f8587a8ea7f6, - limb1: 0x6a01ba41849bab62c2030c80, - limb2: 0x1123e74e17408f4f, + limb0: 0x4dafbd7f615fd2aa9f5a0acc, + limb1: 0x35c8bbffe201ffd56deb5dea, + limb2: 0xa822a5ba029a283, limb3: 0x0 }, y1: u384 { - limb0: 0x7ad792cc9e77749a30d54b4f, - limb1: 0x949bf803b86c0d7c044bedd, - limb2: 0x122d57f5b3840351, + limb0: 0xec6d9e4fafec17b8404c0341, + limb1: 0x17fe961ad4b8ee3bf2ade626, + limb2: 0x1228147f83e3ea5, limb3: 0x0 } } @@ -57,41 +57,41 @@ mod pairing_tests { let pair1: G1G2Pair = G1G2Pair { p: G1Point { x: u384 { - limb0: 0xf0bb4dcf423852993ec57675, - limb1: 0x843e383df3913d9eea751b6f, - limb2: 0x2d7b03e35bcacad0, + limb0: 0x5c724369afbc772d02aed58e, + limb1: 0x2cd3bc838c66439a3d6160b, + limb2: 0x72f26b55fb56be1, limb3: 0x0 }, y: u384 { - limb0: 0xb38368fcfbcf9130a520c420, - limb1: 0x7703cf7ffaed17d99f63dad1, - limb2: 0x11463c3470238079, + limb0: 0xf14522f0e41279fa3733fed2, + limb1: 0xea20efd268b756a9c0b06945, + limb2: 0x7df9c9692acbd19, limb3: 0x0 } }, q: G2Point { x0: u384 { - limb0: 0x6a65413626ac06ba2b4c388e, - limb1: 0x93dab66dbb571e2fcedc82a0, - limb2: 0x2ae567b61f80926a, + limb0: 0xa30b422f34656d6c94e40be, + limb1: 0x83069b5050fd7194c7e35d0c, + limb2: 0xf0e8184945e8d34, limb3: 0x0 }, x1: u384 { - limb0: 0x6c6b037639bc1664a3acbede, - limb1: 0xe6d131af60c749b60e9b706d, - limb2: 0x2e08c9cd0ee89149, + limb0: 0xde9079ee8fa5e15901dfef27, + limb1: 0xdb602cf367841e5047ffab14, + limb2: 0x1752c7b6b35af45, limb3: 0x0 }, y0: u384 { - limb0: 0x5bfa8a3d2463f8587a8ea7f6, - limb1: 0x6a01ba41849bab62c2030c80, - limb2: 0x1123e74e17408f4f, + limb0: 0x4dafbd7f615fd2aa9f5a0acc, + limb1: 0x35c8bbffe201ffd56deb5dea, + limb2: 0xa822a5ba029a283, limb3: 0x0 }, y1: u384 { - limb0: 0x7ad792cc9e77749a30d54b4f, - limb1: 0x949bf803b86c0d7c044bedd, - limb2: 0x122d57f5b3840351, + limb0: 0xec6d9e4fafec17b8404c0341, + limb1: 0x17fe961ad4b8ee3bf2ade626, + limb2: 0x1228147f83e3ea5, limb3: 0x0 } } @@ -99,4577 +99,4577 @@ mod pairing_tests { let lines = array![ G2Line { r0a0: u384 { - limb0: 0x772b1b743180af71d77ed375, - limb1: 0xb755f30e14f9358049de25af, - limb2: 0x13fb91a26b4e98f1, + limb0: 0x13fc2cd2d19c89caf55a13a8, + limb1: 0x6a3f58c82d87f618a84e2bf0, + limb2: 0x18b4a261a618f14c, limb3: 0x0 }, r0a1: u384 { - limb0: 0x6a12def9e83d935f9e05ee42, - limb1: 0x66f5dea71bc32890c1918fa1, - limb2: 0x1d028aa44e145a69, + limb0: 0xa12d7217806e8da77076b27c, + limb1: 0x868641e2c5440aefc45ec097, + limb2: 0x21a23fb8ecb967b4, limb3: 0x0 }, r1a0: u384 { - limb0: 0x5d1b1fdb851c741ac4194c0, - limb1: 0x5be2546ac77d00a6d300144b, - limb2: 0x3fb4015297aa0eb, + limb0: 0x9c39813fffc4c7b20cc17a76, + limb1: 0xf4a2427d51f32abb183e2860, + limb2: 0x2687525f35660d8f, limb3: 0x0 }, r1a1: u384 { - limb0: 0xf4e6a2013238e1bf2a7879d, - limb1: 0xa0afceb11f0893b2ee09b3ff, - limb2: 0x2c6e8020df524724, + limb0: 0xc039aad6d5de6af4f5c6c0bb, + limb1: 0x3750d73ecbf7e1bca03d1cf2, + limb2: 0xecbbbebf08974c8, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x772b1b743180af71d77ed375, - limb1: 0xb755f30e14f9358049de25af, - limb2: 0x13fb91a26b4e98f1, + limb0: 0x13fc2cd2d19c89caf55a13a8, + limb1: 0x6a3f58c82d87f618a84e2bf0, + limb2: 0x18b4a261a618f14c, limb3: 0x0 }, r0a1: u384 { - limb0: 0x6a12def9e83d935f9e05ee42, - limb1: 0x66f5dea71bc32890c1918fa1, - limb2: 0x1d028aa44e145a69, + limb0: 0xa12d7217806e8da77076b27c, + limb1: 0x868641e2c5440aefc45ec097, + limb2: 0x21a23fb8ecb967b4, limb3: 0x0 }, r1a0: u384 { - limb0: 0x5d1b1fdb851c741ac4194c0, - limb1: 0x5be2546ac77d00a6d300144b, - limb2: 0x3fb4015297aa0eb, + limb0: 0x9c39813fffc4c7b20cc17a76, + limb1: 0xf4a2427d51f32abb183e2860, + limb2: 0x2687525f35660d8f, limb3: 0x0 }, r1a1: u384 { - limb0: 0xf4e6a2013238e1bf2a7879d, - limb1: 0xa0afceb11f0893b2ee09b3ff, - limb2: 0x2c6e8020df524724, + limb0: 0xc039aad6d5de6af4f5c6c0bb, + limb1: 0x3750d73ecbf7e1bca03d1cf2, + limb2: 0xecbbbebf08974c8, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xf146af190a9fdca500fe29d2, - limb1: 0xfa52a86c8822dd4da344e1, - limb2: 0x1c68bcd075e30738, + limb0: 0x54759dba6a84024be322e99f, + limb1: 0x4e10ecee53f96244ef333ea1, + limb2: 0x17afac113b18aedd, limb3: 0x0 }, r0a1: u384 { - limb0: 0xfe5eeb9353e2f8b73a770f05, - limb1: 0x515a670f65be2fccd5efdaef, - limb2: 0x1361c3ce931d45c0, + limb0: 0xc7445875bbb1fe6f68064acb, + limb1: 0x31ca03d3bc3d4d6dd322a9f9, + limb2: 0xec20eb9f4783875, limb3: 0x0 }, r1a0: u384 { - limb0: 0x62a0188f83cec4d52c3b6887, - limb1: 0x5c6df14bba0457b6c4815646, - limb2: 0x2c690e5db7b6ff3e, + limb0: 0xcc38494d3c5bc464cbbb82d1, + limb1: 0xc3ae03392f8e2da27f434230, + limb2: 0x9dcfc13abcb9299, limb3: 0x0 }, r1a1: u384 { - limb0: 0x5923606d28fcfdfae5d575aa, - limb1: 0x17a077056278c4aaa977b692, - limb2: 0x3f5ce5201df5905, + limb0: 0xa8381fb666422121e2b63c8c, + limb1: 0x80ff6e77b58976a0f7444d9e, + limb2: 0x21989286f0a82b61, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xa3525d2cae8b5182684a8fe2, - limb1: 0x2615d4b2e2b97947b08c1b54, - limb2: 0x423d4a4c88894b9, + limb0: 0x52cd2431a88ef78ec482ce43, + limb1: 0xdb994b0266c17f5e8dded89e, + limb2: 0x107cd7f4d3a5c20f, limb3: 0x0 }, r0a1: u384 { - limb0: 0xe1e433e369e0ed2e4ce6761b, - limb1: 0x7d6ff95230bb591a6065202e, - limb2: 0x17c9b6c72be29379, + limb0: 0xb4e4c1a20d77277f1ecef6b, + limb1: 0x3fc13dd5746446d4e724e645, + limb2: 0x18ed3b584ac56dfe, limb3: 0x0 }, r1a0: u384 { - limb0: 0xedf58e136835f2b55f9729a0, - limb1: 0xd1638b4685f215ae902698a2, - limb2: 0x16ef73e56e8a6ffe, + limb0: 0x3a537f5b220d3afddbd3be9d, + limb1: 0xeddb087729b8776323c5b8ee, + limb2: 0x1f5e5f61ae8c59e6, limb3: 0x0 }, r1a1: u384 { - limb0: 0xa9fe7ad3136c068912625a3c, - limb1: 0xa057f0aef8b55bc5d62c4589, - limb2: 0x1cac3a8bc428e2be, + limb0: 0x4fe2c98dc347d3ceb841acdf, + limb1: 0xe6a7f4bdda3390e40c62a288, + limb2: 0x2a277c878fe85394, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xf146af190a9fdca500fe29d2, - limb1: 0xfa52a86c8822dd4da344e1, - limb2: 0x1c68bcd075e30738, + limb0: 0x54759dba6a84024be322e99f, + limb1: 0x4e10ecee53f96244ef333ea1, + limb2: 0x17afac113b18aedd, limb3: 0x0 }, r0a1: u384 { - limb0: 0xfe5eeb9353e2f8b73a770f05, - limb1: 0x515a670f65be2fccd5efdaef, - limb2: 0x1361c3ce931d45c0, + limb0: 0xc7445875bbb1fe6f68064acb, + limb1: 0x31ca03d3bc3d4d6dd322a9f9, + limb2: 0xec20eb9f4783875, limb3: 0x0 }, r1a0: u384 { - limb0: 0x62a0188f83cec4d52c3b6887, - limb1: 0x5c6df14bba0457b6c4815646, - limb2: 0x2c690e5db7b6ff3e, + limb0: 0xcc38494d3c5bc464cbbb82d1, + limb1: 0xc3ae03392f8e2da27f434230, + limb2: 0x9dcfc13abcb9299, limb3: 0x0 }, r1a1: u384 { - limb0: 0x5923606d28fcfdfae5d575aa, - limb1: 0x17a077056278c4aaa977b692, - limb2: 0x3f5ce5201df5905, + limb0: 0xa8381fb666422121e2b63c8c, + limb1: 0x80ff6e77b58976a0f7444d9e, + limb2: 0x21989286f0a82b61, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xa3525d2cae8b5182684a8fe2, - limb1: 0x2615d4b2e2b97947b08c1b54, - limb2: 0x423d4a4c88894b9, + limb0: 0x52cd2431a88ef78ec482ce43, + limb1: 0xdb994b0266c17f5e8dded89e, + limb2: 0x107cd7f4d3a5c20f, limb3: 0x0 }, r0a1: u384 { - limb0: 0xe1e433e369e0ed2e4ce6761b, - limb1: 0x7d6ff95230bb591a6065202e, - limb2: 0x17c9b6c72be29379, + limb0: 0xb4e4c1a20d77277f1ecef6b, + limb1: 0x3fc13dd5746446d4e724e645, + limb2: 0x18ed3b584ac56dfe, limb3: 0x0 }, r1a0: u384 { - limb0: 0xedf58e136835f2b55f9729a0, - limb1: 0xd1638b4685f215ae902698a2, - limb2: 0x16ef73e56e8a6ffe, + limb0: 0x3a537f5b220d3afddbd3be9d, + limb1: 0xeddb087729b8776323c5b8ee, + limb2: 0x1f5e5f61ae8c59e6, limb3: 0x0 }, r1a1: u384 { - limb0: 0xa9fe7ad3136c068912625a3c, - limb1: 0xa057f0aef8b55bc5d62c4589, - limb2: 0x1cac3a8bc428e2be, + limb0: 0x4fe2c98dc347d3ceb841acdf, + limb1: 0xe6a7f4bdda3390e40c62a288, + limb2: 0x2a277c878fe85394, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x854fcea153c14e138b22bb3f, - limb1: 0x3659d33f9eb648ac4f730fea, - limb2: 0xf377b2658ef6e40, + limb0: 0x53e743cfae97f5f975cf49cd, + limb1: 0x4a80ced31104872cc46b3fa6, + limb2: 0x26af32e1e4b51233, limb3: 0x0 }, r0a1: u384 { - limb0: 0x3b5780478b698a71ba4df075, - limb1: 0xc2208c59b0886c6832893ec4, - limb2: 0x185318ac8b000e0c, + limb0: 0x20537276ce9b6d318ea2f567, + limb1: 0xf0d44c7024c00ead73f13f53, + limb2: 0x13e665e776128b92, limb3: 0x0 }, r1a0: u384 { - limb0: 0x66059b8b09ae13608ce8fe2e, - limb1: 0xde6179860e053454d89ba8e9, - limb2: 0x24fbfd31a94a6a7e, + limb0: 0xad9a173a5d331f5e8221dedc, + limb1: 0x11fc759697a8b7533cf8e7fd, + limb2: 0x281514af188294d6, limb3: 0x0 }, r1a1: u384 { - limb0: 0x92a6b0e23722dd43d0ce4037, - limb1: 0x656fe88d9bd2abf1dbe8220, - limb2: 0xf6467213a3518b4, + limb0: 0xcd59e5219230c0937878feff, + limb1: 0x85d1c954acb2bf4803a9e200, + limb2: 0x4229bcd8d07f251, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x854fcea153c14e138b22bb3f, - limb1: 0x3659d33f9eb648ac4f730fea, - limb2: 0xf377b2658ef6e40, + limb0: 0x53e743cfae97f5f975cf49cd, + limb1: 0x4a80ced31104872cc46b3fa6, + limb2: 0x26af32e1e4b51233, limb3: 0x0 }, r0a1: u384 { - limb0: 0x3b5780478b698a71ba4df075, - limb1: 0xc2208c59b0886c6832893ec4, - limb2: 0x185318ac8b000e0c, + limb0: 0x20537276ce9b6d318ea2f567, + limb1: 0xf0d44c7024c00ead73f13f53, + limb2: 0x13e665e776128b92, limb3: 0x0 }, r1a0: u384 { - limb0: 0x66059b8b09ae13608ce8fe2e, - limb1: 0xde6179860e053454d89ba8e9, - limb2: 0x24fbfd31a94a6a7e, + limb0: 0xad9a173a5d331f5e8221dedc, + limb1: 0x11fc759697a8b7533cf8e7fd, + limb2: 0x281514af188294d6, limb3: 0x0 }, r1a1: u384 { - limb0: 0x92a6b0e23722dd43d0ce4037, - limb1: 0x656fe88d9bd2abf1dbe8220, - limb2: 0xf6467213a3518b4, + limb0: 0xcd59e5219230c0937878feff, + limb1: 0x85d1c954acb2bf4803a9e200, + limb2: 0x4229bcd8d07f251, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x40b04023af1d75e57db0b593, - limb1: 0xb1b9cb5a283a59370a8e0eed, - limb2: 0x24f0f258d01ae56, + limb0: 0xa4e9586d1e24c4e20dafd647, + limb1: 0x7f88fb247cdc95b6010d9e1, + limb2: 0x2fc2b7b6b4abaf58, limb3: 0x0 }, r0a1: u384 { - limb0: 0x3e63e179b4cc867d3e2fee51, - limb1: 0xac6961c80da79261a3a41c12, - limb2: 0x827fb6dcd78aa80, + limb0: 0x9bbcc4481ffe859db49e1d98, + limb1: 0x13be783da3c9bea06995338d, + limb2: 0x2041db55312bcc8b, limb3: 0x0 }, r1a0: u384 { - limb0: 0x86de52f8a886bfeb16b95a1c, - limb1: 0xad214db6512ff7cebd68377, - limb2: 0x1b686fa632f00da5, + limb0: 0x89721c899fdfd2776e1d4131, + limb1: 0x602e0c14a55d62b055ca8113, + limb2: 0x1fbed06b550ce696, limb3: 0x0 }, r1a1: u384 { - limb0: 0xb52366f9a4c6cf93362a2ba3, - limb1: 0x806402817001622ad7f7aa5c, - limb2: 0x2a1054effea00a74, + limb0: 0xfff5deaaf0a2cf3cca44de5c, + limb1: 0xd5efcfc87d7bc3cc0d3d9be1, + limb2: 0x18106453c47c63f5, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x4bbf360b7bf192ac7febb59, - limb1: 0x37224c1f0543094becf664e1, - limb2: 0x8773daf6641a269, + limb0: 0x33720aad04d475cab632ceb4, + limb1: 0xd7b4eef636fd40d7ad28aaf7, + limb2: 0x25e952c734deb4a7, limb3: 0x0 }, r0a1: u384 { - limb0: 0x43a00488bb1a39f802fc6c6b, - limb1: 0x14f35e8eab4d2f97b3da07f2, - limb2: 0x2ce12ad67f864fbb, + limb0: 0x8c407e44689ce2ec6ea22bb3, + limb1: 0x10ab4ebbd57974771a9bfe37, + limb2: 0xc2d6b95efdcdb61, limb3: 0x0 }, r1a0: u384 { - limb0: 0xf254e6047efaaa7b0b381596, - limb1: 0x217cc1a7cba1394fd12a03f8, - limb2: 0x7026db433e962b0, + limb0: 0xb03dd6a767461c482dcafa86, + limb1: 0xbbde25f51257025e9a28974, + limb2: 0x278e5fd00fb1b935, limb3: 0x0 }, r1a1: u384 { - limb0: 0x2cbf54ded4575f78b4a3bc89, - limb1: 0x3ce61033a291e8e82fe492d1, - limb2: 0x2e346ae3c06307b4, + limb0: 0x7bbd2c1bbf42867093a08f41, + limb1: 0xcc4d5b03ab2a82a219b80b43, + limb2: 0x2105554776d3cf89, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x40b04023af1d75e57db0b593, - limb1: 0xb1b9cb5a283a59370a8e0eed, - limb2: 0x24f0f258d01ae56, + limb0: 0xa4e9586d1e24c4e20dafd647, + limb1: 0x7f88fb247cdc95b6010d9e1, + limb2: 0x2fc2b7b6b4abaf58, limb3: 0x0 }, r0a1: u384 { - limb0: 0x3e63e179b4cc867d3e2fee51, - limb1: 0xac6961c80da79261a3a41c12, - limb2: 0x827fb6dcd78aa80, + limb0: 0x9bbcc4481ffe859db49e1d98, + limb1: 0x13be783da3c9bea06995338d, + limb2: 0x2041db55312bcc8b, limb3: 0x0 }, r1a0: u384 { - limb0: 0x86de52f8a886bfeb16b95a1c, - limb1: 0xad214db6512ff7cebd68377, - limb2: 0x1b686fa632f00da5, + limb0: 0x89721c899fdfd2776e1d4131, + limb1: 0x602e0c14a55d62b055ca8113, + limb2: 0x1fbed06b550ce696, limb3: 0x0 }, r1a1: u384 { - limb0: 0xb52366f9a4c6cf93362a2ba3, - limb1: 0x806402817001622ad7f7aa5c, - limb2: 0x2a1054effea00a74, + limb0: 0xfff5deaaf0a2cf3cca44de5c, + limb1: 0xd5efcfc87d7bc3cc0d3d9be1, + limb2: 0x18106453c47c63f5, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x4bbf360b7bf192ac7febb59, - limb1: 0x37224c1f0543094becf664e1, - limb2: 0x8773daf6641a269, + limb0: 0x33720aad04d475cab632ceb4, + limb1: 0xd7b4eef636fd40d7ad28aaf7, + limb2: 0x25e952c734deb4a7, limb3: 0x0 }, r0a1: u384 { - limb0: 0x43a00488bb1a39f802fc6c6b, - limb1: 0x14f35e8eab4d2f97b3da07f2, - limb2: 0x2ce12ad67f864fbb, + limb0: 0x8c407e44689ce2ec6ea22bb3, + limb1: 0x10ab4ebbd57974771a9bfe37, + limb2: 0xc2d6b95efdcdb61, limb3: 0x0 }, r1a0: u384 { - limb0: 0xf254e6047efaaa7b0b381596, - limb1: 0x217cc1a7cba1394fd12a03f8, - limb2: 0x7026db433e962b0, + limb0: 0xb03dd6a767461c482dcafa86, + limb1: 0xbbde25f51257025e9a28974, + limb2: 0x278e5fd00fb1b935, limb3: 0x0 }, r1a1: u384 { - limb0: 0x2cbf54ded4575f78b4a3bc89, - limb1: 0x3ce61033a291e8e82fe492d1, - limb2: 0x2e346ae3c06307b4, + limb0: 0x7bbd2c1bbf42867093a08f41, + limb1: 0xcc4d5b03ab2a82a219b80b43, + limb2: 0x2105554776d3cf89, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xb45b6f2035db512dad808602, - limb1: 0xbb3892b023ca441dd4844fe7, - limb2: 0xfc19d1dc195ae93, + limb0: 0x32e40fb4d2025cd0e82ced6f, + limb1: 0xbc0608261a5f898f868a08d8, + limb2: 0x282ba090b78fca30, limb3: 0x0 }, r0a1: u384 { - limb0: 0x6872ca6c40c58c3b2242c7af, - limb1: 0x88f8cc280bfd0228b2a52048, - limb2: 0x18cc91ee4a2a15b5, + limb0: 0xdfe55dec41a63986c6aceff7, + limb1: 0x2555dd47b4f4cd057f63d51, + limb2: 0xf5a1242bc10ee1f, limb3: 0x0 }, r1a0: u384 { - limb0: 0xe4df82f320b21f7cf2a3cc70, - limb1: 0xc7bbc977bb5e9dfac09a900b, - limb2: 0xf77c58a97a92778, + limb0: 0x590c3a14f70d93710ad8d62d, + limb1: 0x91b6b9b5a53eb9825ebe4230, + limb2: 0x2f3c78d5b1a40d44, limb3: 0x0 }, r1a1: u384 { - limb0: 0xd7188014f9d969e8dd9ce7fc, - limb1: 0xc3911094c87955a655ec0560, - limb2: 0x13213af482241734, + limb0: 0x7fa2feee5a3d934393f3dcdb, + limb1: 0x216af82d8ef724bef3a0cff9, + limb2: 0x2a3b1b41079d39de, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xb45b6f2035db512dad808602, - limb1: 0xbb3892b023ca441dd4844fe7, - limb2: 0xfc19d1dc195ae93, + limb0: 0x32e40fb4d2025cd0e82ced6f, + limb1: 0xbc0608261a5f898f868a08d8, + limb2: 0x282ba090b78fca30, limb3: 0x0 }, r0a1: u384 { - limb0: 0x6872ca6c40c58c3b2242c7af, - limb1: 0x88f8cc280bfd0228b2a52048, - limb2: 0x18cc91ee4a2a15b5, + limb0: 0xdfe55dec41a63986c6aceff7, + limb1: 0x2555dd47b4f4cd057f63d51, + limb2: 0xf5a1242bc10ee1f, limb3: 0x0 }, r1a0: u384 { - limb0: 0xe4df82f320b21f7cf2a3cc70, - limb1: 0xc7bbc977bb5e9dfac09a900b, - limb2: 0xf77c58a97a92778, + limb0: 0x590c3a14f70d93710ad8d62d, + limb1: 0x91b6b9b5a53eb9825ebe4230, + limb2: 0x2f3c78d5b1a40d44, limb3: 0x0 }, r1a1: u384 { - limb0: 0xd7188014f9d969e8dd9ce7fc, - limb1: 0xc3911094c87955a655ec0560, - limb2: 0x13213af482241734, + limb0: 0x7fa2feee5a3d934393f3dcdb, + limb1: 0x216af82d8ef724bef3a0cff9, + limb2: 0x2a3b1b41079d39de, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xe6ddf471ddf093324de80186, - limb1: 0x83a631a22bcec188a9962c09, - limb2: 0x4b541283220f4ca, + limb0: 0x70f807c9bd9cc653569a88c0, + limb1: 0xd3bd9e80a4c0879b8c54502f, + limb2: 0x78f06a79ebcc122, limb3: 0x0 }, r0a1: u384 { - limb0: 0x43d8744c1c05ebc91e4a7ad8, - limb1: 0x56a20ce7c0305e8d547f9e42, - limb2: 0x2f516ea7de08dbbd, + limb0: 0x1f4b6ad4455ba03d167d7fb3, + limb1: 0xd11276f3c684ac26d1a62390, + limb2: 0x2e376293ba7c79b7, limb3: 0x0 }, r1a0: u384 { - limb0: 0x6ffbf84ced8bf018b268850b, - limb1: 0xa9ae412f000bfd6c979a9408, - limb2: 0xc4d4f0f275c852f, + limb0: 0xe7a2888c80e82ed69b2c357d, + limb1: 0xa5057b1db97b9c3edd232a43, + limb2: 0x1eed211bc2e66931, limb3: 0x0 }, r1a1: u384 { - limb0: 0xb04aca000e3552128e31069, - limb1: 0x155dbb8a99238860f67f4fca, - limb2: 0x2b2081620aaffd0e, + limb0: 0xaca29d5ef46c59744a30d2e, + limb1: 0xfeb93f366d5295ce80bf592, + limb2: 0x697b2aa97f68681, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xe6ddf471ddf093324de80186, - limb1: 0x83a631a22bcec188a9962c09, - limb2: 0x4b541283220f4ca, + limb0: 0x70f807c9bd9cc653569a88c0, + limb1: 0xd3bd9e80a4c0879b8c54502f, + limb2: 0x78f06a79ebcc122, limb3: 0x0 }, r0a1: u384 { - limb0: 0x43d8744c1c05ebc91e4a7ad8, - limb1: 0x56a20ce7c0305e8d547f9e42, - limb2: 0x2f516ea7de08dbbd, + limb0: 0x1f4b6ad4455ba03d167d7fb3, + limb1: 0xd11276f3c684ac26d1a62390, + limb2: 0x2e376293ba7c79b7, limb3: 0x0 }, r1a0: u384 { - limb0: 0x6ffbf84ced8bf018b268850b, - limb1: 0xa9ae412f000bfd6c979a9408, - limb2: 0xc4d4f0f275c852f, + limb0: 0xe7a2888c80e82ed69b2c357d, + limb1: 0xa5057b1db97b9c3edd232a43, + limb2: 0x1eed211bc2e66931, limb3: 0x0 }, r1a1: u384 { - limb0: 0xb04aca000e3552128e31069, - limb1: 0x155dbb8a99238860f67f4fca, - limb2: 0x2b2081620aaffd0e, + limb0: 0xaca29d5ef46c59744a30d2e, + limb1: 0xfeb93f366d5295ce80bf592, + limb2: 0x697b2aa97f68681, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xccf2a9cc4298b5b48e90692d, - limb1: 0x5575f5743c7554c3db138ef7, - limb2: 0x212739b1673197dc, + limb0: 0x21c98846074d27fd948bf071, + limb1: 0x2677e986de7a6bb799458f9, + limb2: 0xbfae24b95db3021, limb3: 0x0 }, r0a1: u384 { - limb0: 0x7d48c8417822a96508c74931, - limb1: 0x73876397d732303c050f2e48, - limb2: 0x1290cb14423e516e, + limb0: 0x241a18abd825d1d53b4b1cd1, + limb1: 0x1153ff7044093f39311453e, + limb2: 0x7ef5b22d955cb08, limb3: 0x0 }, r1a0: u384 { - limb0: 0xe0b710f582971386513935dd, - limb1: 0xf2663a8158a085949de5d03c, - limb2: 0x2e2a8ecc830f6a03, + limb0: 0xfde2d3f182c7404c916ddaee, + limb1: 0x51059992e83a57e0357b63f3, + limb2: 0x5de94c1a6dce11c, limb3: 0x0 }, r1a1: u384 { - limb0: 0x64b3e1293b5b3d72bd00087b, - limb1: 0xdbc000b6094527c68798056a, - limb2: 0x298b6ff500ca4615, + limb0: 0xa897c205d1548b407d3c7597, + limb1: 0x3e8437329ebf4e2f1fe3b370, + limb2: 0x1e321d523b1a40f8, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xccf2a9cc4298b5b48e90692d, - limb1: 0x5575f5743c7554c3db138ef7, - limb2: 0x212739b1673197dc, + limb0: 0x21c98846074d27fd948bf071, + limb1: 0x2677e986de7a6bb799458f9, + limb2: 0xbfae24b95db3021, limb3: 0x0 }, r0a1: u384 { - limb0: 0x7d48c8417822a96508c74931, - limb1: 0x73876397d732303c050f2e48, - limb2: 0x1290cb14423e516e, + limb0: 0x241a18abd825d1d53b4b1cd1, + limb1: 0x1153ff7044093f39311453e, + limb2: 0x7ef5b22d955cb08, limb3: 0x0 }, r1a0: u384 { - limb0: 0xe0b710f582971386513935dd, - limb1: 0xf2663a8158a085949de5d03c, - limb2: 0x2e2a8ecc830f6a03, + limb0: 0xfde2d3f182c7404c916ddaee, + limb1: 0x51059992e83a57e0357b63f3, + limb2: 0x5de94c1a6dce11c, limb3: 0x0 }, r1a1: u384 { - limb0: 0x64b3e1293b5b3d72bd00087b, - limb1: 0xdbc000b6094527c68798056a, - limb2: 0x298b6ff500ca4615, + limb0: 0xa897c205d1548b407d3c7597, + limb1: 0x3e8437329ebf4e2f1fe3b370, + limb2: 0x1e321d523b1a40f8, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xaef84797bd11e92e5973f820, - limb1: 0x892c96db335a469e346d4a56, - limb2: 0x247e69ae4dc47f1c, + limb0: 0x3b7c7dfdc0377c6e77a69a78, + limb1: 0x56046802d2acc2048f6473b0, + limb2: 0x1e538130528f2037, limb3: 0x0 }, r0a1: u384 { - limb0: 0xae2ce4afe7d25e99afe86bdd, - limb1: 0x6140128ed69f3d6984bdcbfc, - limb2: 0x2ff4d0b73a033930, + limb0: 0xf8d9c38bafe394d496ec036b, + limb1: 0xa7178b19843c74a1c9ffdec9, + limb2: 0x754d38a41b241f5, limb3: 0x0 }, r1a0: u384 { - limb0: 0x7f9d039a3f50f1d692d547ba, - limb1: 0x66835b102f621025dc25f2f6, - limb2: 0x447b1ceb1dc35a6, + limb0: 0x5399cd6b03cd5dd0e202dc18, + limb1: 0x27132b0286f70ab0f9d3f154, + limb2: 0x209e0408c047ebf6, limb3: 0x0 }, r1a1: u384 { - limb0: 0xce8e7265cdaa795380a25ebb, - limb1: 0x658659c1868caab16a208382, - limb2: 0x2dd647942bd1256a, + limb0: 0xa73bf15125290077d6d0d018, + limb1: 0xe07ebcc1ab67f9cf97be2e80, + limb2: 0x217014f56f93c3a2, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x7904cd27b9bd410d075d1626, - limb1: 0x98ce6ada7157eb3ef2aa6223, - limb2: 0x2bdabb18f2272e13, + limb0: 0xb565c9168c2f34f5d1a48833, + limb1: 0x9f2143f7ae3a47cffb1e8fda, + limb2: 0xaebc823dc1fcd02, limb3: 0x0 }, r0a1: u384 { - limb0: 0x51455265ddc4492629a67284, - limb1: 0x5ef2b6498fff7438078e716e, - limb2: 0x110b62fd48219eba, + limb0: 0x59b0e8a0118c2f5ec29f117b, + limb1: 0xd1d302931406f12c6271f149, + limb2: 0x18a65ecc25e7a0e3, limb3: 0x0 }, r1a0: u384 { - limb0: 0xe1f678a6e81728cf92cbfe83, - limb1: 0x8caa96a78c51b966caeac5dc, - limb2: 0x2de70eff7caecdde, + limb0: 0xcf4c8bcea64951980f866870, + limb1: 0xd708dcd6450bd5f68bed09a3, + limb2: 0xb3c0fa83c8b5f48, limb3: 0x0 }, r1a1: u384 { - limb0: 0x9cd2347ed0b50f9c18eb2b1f, - limb1: 0x2a3c9a0902f2a1b9b7ff3092, - limb2: 0x81d5c790bad0bf9, + limb0: 0xc45fac32b4b9fb37bdaea5f3, + limb1: 0xc46068320849da30be837df5, + limb2: 0x2c6ea62118c44345, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xaef84797bd11e92e5973f820, - limb1: 0x892c96db335a469e346d4a56, - limb2: 0x247e69ae4dc47f1c, + limb0: 0x3b7c7dfdc0377c6e77a69a78, + limb1: 0x56046802d2acc2048f6473b0, + limb2: 0x1e538130528f2037, limb3: 0x0 }, r0a1: u384 { - limb0: 0xae2ce4afe7d25e99afe86bdd, - limb1: 0x6140128ed69f3d6984bdcbfc, - limb2: 0x2ff4d0b73a033930, + limb0: 0xf8d9c38bafe394d496ec036b, + limb1: 0xa7178b19843c74a1c9ffdec9, + limb2: 0x754d38a41b241f5, limb3: 0x0 }, r1a0: u384 { - limb0: 0x7f9d039a3f50f1d692d547ba, - limb1: 0x66835b102f621025dc25f2f6, - limb2: 0x447b1ceb1dc35a6, + limb0: 0x5399cd6b03cd5dd0e202dc18, + limb1: 0x27132b0286f70ab0f9d3f154, + limb2: 0x209e0408c047ebf6, limb3: 0x0 }, r1a1: u384 { - limb0: 0xce8e7265cdaa795380a25ebb, - limb1: 0x658659c1868caab16a208382, - limb2: 0x2dd647942bd1256a, + limb0: 0xa73bf15125290077d6d0d018, + limb1: 0xe07ebcc1ab67f9cf97be2e80, + limb2: 0x217014f56f93c3a2, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x7904cd27b9bd410d075d1626, - limb1: 0x98ce6ada7157eb3ef2aa6223, - limb2: 0x2bdabb18f2272e13, + limb0: 0xb565c9168c2f34f5d1a48833, + limb1: 0x9f2143f7ae3a47cffb1e8fda, + limb2: 0xaebc823dc1fcd02, limb3: 0x0 }, r0a1: u384 { - limb0: 0x51455265ddc4492629a67284, - limb1: 0x5ef2b6498fff7438078e716e, - limb2: 0x110b62fd48219eba, + limb0: 0x59b0e8a0118c2f5ec29f117b, + limb1: 0xd1d302931406f12c6271f149, + limb2: 0x18a65ecc25e7a0e3, limb3: 0x0 }, r1a0: u384 { - limb0: 0xe1f678a6e81728cf92cbfe83, - limb1: 0x8caa96a78c51b966caeac5dc, - limb2: 0x2de70eff7caecdde, + limb0: 0xcf4c8bcea64951980f866870, + limb1: 0xd708dcd6450bd5f68bed09a3, + limb2: 0xb3c0fa83c8b5f48, limb3: 0x0 }, r1a1: u384 { - limb0: 0x9cd2347ed0b50f9c18eb2b1f, - limb1: 0x2a3c9a0902f2a1b9b7ff3092, - limb2: 0x81d5c790bad0bf9, + limb0: 0xc45fac32b4b9fb37bdaea5f3, + limb1: 0xc46068320849da30be837df5, + limb2: 0x2c6ea62118c44345, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xa7bf2187a88673ac371021be, - limb1: 0x60adb4990487dbf00ac09f05, - limb2: 0x147348254165c9bc, + limb0: 0x9611d44432206361cd7f3473, + limb1: 0xd34ce79c946302bdbf8f72de, + limb2: 0x1fd5b330038873b0, limb3: 0x0 }, r0a1: u384 { - limb0: 0xd5f9d7be033390970fe95c11, - limb1: 0xdafe8999274a79072022cc65, - limb2: 0x2818b0635af89eab, + limb0: 0x71a17fc89e530dda653c4220, + limb1: 0x37852a7f67a5fa74c6613c00, + limb2: 0x1e11dde6c5c9261d, limb3: 0x0 }, r1a0: u384 { - limb0: 0x2ac21a52bafd07ec59881774, - limb1: 0xcfbd0db3ad0e8bf3c4bc1882, - limb2: 0x1e5ced8d0f910c66, + limb0: 0xf8f9c22149b11566f643511e, + limb1: 0xeafd5e990baff3df753b4545, + limb2: 0x2e3219be0c5ae36a, limb3: 0x0 }, r1a1: u384 { - limb0: 0xa394f04336dc71b51ef2bf72, - limb1: 0x5c1e49d0fe11969b0d4ea879, - limb2: 0x17540021296a12b7, + limb0: 0x8e2193129c343cb3a4db1f47, + limb1: 0xf56af697b4d714d190d603dd, + limb2: 0x2d3349ba9a465783, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xa7bf2187a88673ac371021be, - limb1: 0x60adb4990487dbf00ac09f05, - limb2: 0x147348254165c9bc, + limb0: 0x9611d44432206361cd7f3473, + limb1: 0xd34ce79c946302bdbf8f72de, + limb2: 0x1fd5b330038873b0, limb3: 0x0 }, r0a1: u384 { - limb0: 0xd5f9d7be033390970fe95c11, - limb1: 0xdafe8999274a79072022cc65, - limb2: 0x2818b0635af89eab, + limb0: 0x71a17fc89e530dda653c4220, + limb1: 0x37852a7f67a5fa74c6613c00, + limb2: 0x1e11dde6c5c9261d, limb3: 0x0 }, r1a0: u384 { - limb0: 0x2ac21a52bafd07ec59881774, - limb1: 0xcfbd0db3ad0e8bf3c4bc1882, - limb2: 0x1e5ced8d0f910c66, + limb0: 0xf8f9c22149b11566f643511e, + limb1: 0xeafd5e990baff3df753b4545, + limb2: 0x2e3219be0c5ae36a, limb3: 0x0 }, r1a1: u384 { - limb0: 0xa394f04336dc71b51ef2bf72, - limb1: 0x5c1e49d0fe11969b0d4ea879, - limb2: 0x17540021296a12b7, + limb0: 0x8e2193129c343cb3a4db1f47, + limb1: 0xf56af697b4d714d190d603dd, + limb2: 0x2d3349ba9a465783, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xc6f0e05482ff2aeed41db2d3, - limb1: 0x3420f681240beb33dcde4312, - limb2: 0x2e053cb6f01c7e05, + limb0: 0x196665c03009ef576fd6961, + limb1: 0x2719b6e1af31847d795deb9e, + limb2: 0x155d054c2097ab50, limb3: 0x0 }, r0a1: u384 { - limb0: 0x408b5086f13090d3bf8780f3, - limb1: 0x91231ad8a7909cdedb7c2736, - limb2: 0x24675529166a3102, + limb0: 0x4e6b687ca0dfecf549daeef5, + limb1: 0xb4e4f54e1d35a5cd994c6054, + limb2: 0x11c8b740bfbe502, limb3: 0x0 }, r1a0: u384 { - limb0: 0x4053f7fa82f6b2109275249d, - limb1: 0xd648927fec32dbec1aaf0b74, - limb2: 0x9720803a078dd5c, + limb0: 0xbc9857a840b86d1d7ffb6b9d, + limb1: 0x3315341c9d5a9ff2955435b2, + limb2: 0x30447649e2f50c77, limb3: 0x0 }, r1a1: u384 { - limb0: 0xea260588ad6b83aa830991b6, - limb1: 0xd68757c8977e94c9391c5f3c, - limb2: 0x2b075cf416198cd4, + limb0: 0x9a187f6cc5ad3146f48c70be, + limb1: 0x9809e5f4637c60447e7cfdef, + limb2: 0x667330690960cd, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xf2a9d2d6fa9c0a23fd297efa, - limb1: 0xb5567bf9cbcc6abac2b5e2a7, - limb2: 0x2759923923cd407b, + limb0: 0x215d0ebb801c8a2c8b0ef9e1, + limb1: 0x89edb45dc7e6f74cc7304d78, + limb2: 0x2edb9f6a4282ba3f, limb3: 0x0 }, r0a1: u384 { - limb0: 0x415869b9190688ab059a6bda, - limb1: 0xb323da257ff38b6cbd03077e, - limb2: 0x1c1773c8b651e04b, + limb0: 0x78cef612dbc9013e22395718, + limb1: 0x68c8984791d65522cdabe9da, + limb2: 0x5cd4d2fb36b3baf, limb3: 0x0 }, r1a0: u384 { - limb0: 0xa418c24e0f0d793f77bdaf5f, - limb1: 0x9fc966e5670d47757262a2db, - limb2: 0x125da35a71e45a55, + limb0: 0x28728de61873d65855d29e69, + limb1: 0x74abfdede8c4f6d81e7da1bd, + limb2: 0x199f58d62645184b, limb3: 0x0 }, r1a1: u384 { - limb0: 0xbe0aecec234207dca7aa256c, - limb1: 0xee6790d3f21162b68d2ce119, - limb2: 0x1c53192f874ea332, + limb0: 0xaff5645c427c1f808f890796, + limb1: 0x6040d76177456d9ec3d7dd19, + limb2: 0xdead02313d94e2c, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xc6f0e05482ff2aeed41db2d3, - limb1: 0x3420f681240beb33dcde4312, - limb2: 0x2e053cb6f01c7e05, + limb0: 0x196665c03009ef576fd6961, + limb1: 0x2719b6e1af31847d795deb9e, + limb2: 0x155d054c2097ab50, limb3: 0x0 }, r0a1: u384 { - limb0: 0x408b5086f13090d3bf8780f3, - limb1: 0x91231ad8a7909cdedb7c2736, - limb2: 0x24675529166a3102, + limb0: 0x4e6b687ca0dfecf549daeef5, + limb1: 0xb4e4f54e1d35a5cd994c6054, + limb2: 0x11c8b740bfbe502, limb3: 0x0 }, r1a0: u384 { - limb0: 0x4053f7fa82f6b2109275249d, - limb1: 0xd648927fec32dbec1aaf0b74, - limb2: 0x9720803a078dd5c, + limb0: 0xbc9857a840b86d1d7ffb6b9d, + limb1: 0x3315341c9d5a9ff2955435b2, + limb2: 0x30447649e2f50c77, limb3: 0x0 }, r1a1: u384 { - limb0: 0xea260588ad6b83aa830991b6, - limb1: 0xd68757c8977e94c9391c5f3c, - limb2: 0x2b075cf416198cd4, + limb0: 0x9a187f6cc5ad3146f48c70be, + limb1: 0x9809e5f4637c60447e7cfdef, + limb2: 0x667330690960cd, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xf2a9d2d6fa9c0a23fd297efa, - limb1: 0xb5567bf9cbcc6abac2b5e2a7, - limb2: 0x2759923923cd407b, + limb0: 0x215d0ebb801c8a2c8b0ef9e1, + limb1: 0x89edb45dc7e6f74cc7304d78, + limb2: 0x2edb9f6a4282ba3f, limb3: 0x0 }, r0a1: u384 { - limb0: 0x415869b9190688ab059a6bda, - limb1: 0xb323da257ff38b6cbd03077e, - limb2: 0x1c1773c8b651e04b, + limb0: 0x78cef612dbc9013e22395718, + limb1: 0x68c8984791d65522cdabe9da, + limb2: 0x5cd4d2fb36b3baf, limb3: 0x0 }, r1a0: u384 { - limb0: 0xa418c24e0f0d793f77bdaf5f, - limb1: 0x9fc966e5670d47757262a2db, - limb2: 0x125da35a71e45a55, + limb0: 0x28728de61873d65855d29e69, + limb1: 0x74abfdede8c4f6d81e7da1bd, + limb2: 0x199f58d62645184b, limb3: 0x0 }, r1a1: u384 { - limb0: 0xbe0aecec234207dca7aa256c, - limb1: 0xee6790d3f21162b68d2ce119, - limb2: 0x1c53192f874ea332, + limb0: 0xaff5645c427c1f808f890796, + limb1: 0x6040d76177456d9ec3d7dd19, + limb2: 0xdead02313d94e2c, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xe6ef3afe54f1911200e04b35, - limb1: 0x7e8bc9976261600d3133515f, - limb2: 0x2f22827aa29d4da8, + limb0: 0x7e32624925ec3a6751ef2472, + limb1: 0x454a7f1340778a7b5e1fe904, + limb2: 0x20906f33c00c8d33, limb3: 0x0 }, r0a1: u384 { - limb0: 0xd4445593a9ec0bf309fa9cc7, - limb1: 0xa15585f4084d6e8d18ab1846, - limb2: 0x7c776e1fecf6, + limb0: 0x11710c1c383a8014976022cf, + limb1: 0x62f932c9ffa1da884f9fceaa, + limb2: 0xb62b0be184f4494, limb3: 0x0 }, r1a0: u384 { - limb0: 0x70237ec2d5a58e2ae7d6976, - limb1: 0x5dc6183aedf85a5c8765db11, - limb2: 0x1627f40f9a2dabda, + limb0: 0xebd3310b943ec2f49ece0892, + limb1: 0x6a06d1930900d0bbc6221220, + limb2: 0x116715e97fb69aaa, limb3: 0x0 }, r1a1: u384 { - limb0: 0xe171aeeac7c1f1365ab948cd, - limb1: 0x79c8de96bfaf34d5a4d12ef, - limb2: 0x1d2d814d16cb7f07, + limb0: 0x1cc4a1667629f976c64db1fd, + limb1: 0x965c2705725d60a7cc1550d2, + limb2: 0x10a0fbe4d0a5883d, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xe6ef3afe54f1911200e04b35, - limb1: 0x7e8bc9976261600d3133515f, - limb2: 0x2f22827aa29d4da8, + limb0: 0x7e32624925ec3a6751ef2472, + limb1: 0x454a7f1340778a7b5e1fe904, + limb2: 0x20906f33c00c8d33, limb3: 0x0 }, r0a1: u384 { - limb0: 0xd4445593a9ec0bf309fa9cc7, - limb1: 0xa15585f4084d6e8d18ab1846, - limb2: 0x7c776e1fecf6, + limb0: 0x11710c1c383a8014976022cf, + limb1: 0x62f932c9ffa1da884f9fceaa, + limb2: 0xb62b0be184f4494, limb3: 0x0 }, r1a0: u384 { - limb0: 0x70237ec2d5a58e2ae7d6976, - limb1: 0x5dc6183aedf85a5c8765db11, - limb2: 0x1627f40f9a2dabda, + limb0: 0xebd3310b943ec2f49ece0892, + limb1: 0x6a06d1930900d0bbc6221220, + limb2: 0x116715e97fb69aaa, limb3: 0x0 }, r1a1: u384 { - limb0: 0xe171aeeac7c1f1365ab948cd, - limb1: 0x79c8de96bfaf34d5a4d12ef, - limb2: 0x1d2d814d16cb7f07, + limb0: 0x1cc4a1667629f976c64db1fd, + limb1: 0x965c2705725d60a7cc1550d2, + limb2: 0x10a0fbe4d0a5883d, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x869f7cb66dddd61fa060404d, - limb1: 0xdfac74f3845819037034a739, - limb2: 0x133255901cb3584b, + limb0: 0xf29c8da48273fcc3ed42600f, + limb1: 0xc9085080314ee52208dbeaa3, + limb2: 0x1c97df69a5dee342, limb3: 0x0 }, r0a1: u384 { - limb0: 0xdde62d773df2fdf526de8671, - limb1: 0xf9b3994ae01a9e392517671b, - limb2: 0x2874c43e6df52eb7, + limb0: 0xe90ffc7dc1134df60473a9b0, + limb1: 0x1785bba891bbf8bf4d028c93, + limb2: 0x2c73ffd5720b59fe, limb3: 0x0 }, r1a0: u384 { - limb0: 0x22ad88cf932a853e3f2a0f79, - limb1: 0xf652e74f4d5b6faa59fe81ef, - limb2: 0x9c6119a1f8c3a9d, + limb0: 0xaa4625384e00cc7a1d26f59c, + limb1: 0x7e2bd7ea82f7679164b9a298, + limb2: 0x1ceb19ac1c28c731, limb3: 0x0 }, r1a1: u384 { - limb0: 0x7fb8f358aa541a8c7095d2b2, - limb1: 0x8fd78d934716ff3e215e88a8, - limb2: 0x861d03cada9ee69, + limb0: 0x8570cac2138c94f9d261d52, + limb1: 0x4750472206e83d3ee38e9950, + limb2: 0x159e78c2f8fb9e87, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x869f7cb66dddd61fa060404d, - limb1: 0xdfac74f3845819037034a739, - limb2: 0x133255901cb3584b, + limb0: 0xf29c8da48273fcc3ed42600f, + limb1: 0xc9085080314ee52208dbeaa3, + limb2: 0x1c97df69a5dee342, limb3: 0x0 }, r0a1: u384 { - limb0: 0xdde62d773df2fdf526de8671, - limb1: 0xf9b3994ae01a9e392517671b, - limb2: 0x2874c43e6df52eb7, + limb0: 0xe90ffc7dc1134df60473a9b0, + limb1: 0x1785bba891bbf8bf4d028c93, + limb2: 0x2c73ffd5720b59fe, limb3: 0x0 }, r1a0: u384 { - limb0: 0x22ad88cf932a853e3f2a0f79, - limb1: 0xf652e74f4d5b6faa59fe81ef, - limb2: 0x9c6119a1f8c3a9d, + limb0: 0xaa4625384e00cc7a1d26f59c, + limb1: 0x7e2bd7ea82f7679164b9a298, + limb2: 0x1ceb19ac1c28c731, limb3: 0x0 }, r1a1: u384 { - limb0: 0x7fb8f358aa541a8c7095d2b2, - limb1: 0x8fd78d934716ff3e215e88a8, - limb2: 0x861d03cada9ee69, + limb0: 0x8570cac2138c94f9d261d52, + limb1: 0x4750472206e83d3ee38e9950, + limb2: 0x159e78c2f8fb9e87, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xb568a5de780e0b69f44709e3, - limb1: 0xf832def32b0421f35fe5e8b0, - limb2: 0x1dffe27bfab7836, + limb0: 0xf0061f0ffdd6c080cb6db4f2, + limb1: 0x3156ebb6ec8163f1daaf0fef, + limb2: 0x16a1d8e8a632ecda, limb3: 0x0 }, r0a1: u384 { - limb0: 0xb73fa49877be4b9f8186430b, - limb1: 0xb031396214f110cd97895487, - limb2: 0x52fcd66e25ed286, + limb0: 0x8944acaa1fea52aec014ca14, + limb1: 0xaef310c4279054f6513952eb, + limb2: 0x187dba91d42da551, limb3: 0x0 }, r1a0: u384 { - limb0: 0x2567ca5928f9f0f7a4d6e23b, - limb1: 0x3e3f473f4bc4ee5e8ffaf839, - limb2: 0x29c56ac955a5c6ee, + limb0: 0x115802cd86218654ef41231b, + limb1: 0x6d01289ae998e8d09b1c7304, + limb2: 0x8e3eaae865b5448, limb3: 0x0 }, r1a1: u384 { - limb0: 0x95ae9356166fcd44f7490b1f, - limb1: 0x95f7a0d21d1d2e05685b94da, - limb2: 0x1f3197566fdf81f, + limb0: 0x9562b590b59641ca26308faa, + limb1: 0x75559bf6ea06aaf7df07c197, + limb2: 0x8245163a7eeeada, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xb568a5de780e0b69f44709e3, - limb1: 0xf832def32b0421f35fe5e8b0, - limb2: 0x1dffe27bfab7836, + limb0: 0xf0061f0ffdd6c080cb6db4f2, + limb1: 0x3156ebb6ec8163f1daaf0fef, + limb2: 0x16a1d8e8a632ecda, limb3: 0x0 }, r0a1: u384 { - limb0: 0xb73fa49877be4b9f8186430b, - limb1: 0xb031396214f110cd97895487, - limb2: 0x52fcd66e25ed286, + limb0: 0x8944acaa1fea52aec014ca14, + limb1: 0xaef310c4279054f6513952eb, + limb2: 0x187dba91d42da551, limb3: 0x0 }, r1a0: u384 { - limb0: 0x2567ca5928f9f0f7a4d6e23b, - limb1: 0x3e3f473f4bc4ee5e8ffaf839, - limb2: 0x29c56ac955a5c6ee, + limb0: 0x115802cd86218654ef41231b, + limb1: 0x6d01289ae998e8d09b1c7304, + limb2: 0x8e3eaae865b5448, limb3: 0x0 }, r1a1: u384 { - limb0: 0x95ae9356166fcd44f7490b1f, - limb1: 0x95f7a0d21d1d2e05685b94da, - limb2: 0x1f3197566fdf81f, + limb0: 0x9562b590b59641ca26308faa, + limb1: 0x75559bf6ea06aaf7df07c197, + limb2: 0x8245163a7eeeada, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xc2346b0f31fcb60dc341a353, - limb1: 0x42611dcc7dbb9899c1c115ed, - limb2: 0x269d2592348efeb9, + limb0: 0x2cd350402831a212e938de81, + limb1: 0xed9a7a80de5e1ec0f4b2c4db, + limb2: 0x2f04e512c778c8a3, limb3: 0x0 }, r0a1: u384 { - limb0: 0xcf4027499d09ba82b5586e07, - limb1: 0x20194bc3d686a81698c87468, - limb2: 0x23e28bf64d9510bb, + limb0: 0x8cd4823620230108e89a1e94, + limb1: 0x2dc2d1e59111f47e7663cb36, + limb2: 0x8cbcece7fd20252, limb3: 0x0 }, r1a0: u384 { - limb0: 0x468cdd6355c3796abeedd9b, - limb1: 0x101f497021812a5876fdfded, - limb2: 0x292ec07bbbff7e4, + limb0: 0x6bbf0471a8988b16ca947450, + limb1: 0xf7911a0d3db83d1956cc277b, + limb2: 0x7db791f07f93808, limb3: 0x0 }, r1a1: u384 { - limb0: 0xf20ddfe065fa4e43065ce7f6, - limb1: 0xaaa0e197ebd8d2e13b2a2559, - limb2: 0x19423445102a6eea, + limb0: 0xd46f340dfdea0b0bef63e487, + limb1: 0xbd7520f6a22899dfe8887b8b, + limb2: 0x10f9c9a88e425f37, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xd387a25f0b43c7e3cbfb4263, - limb1: 0x44e72d8a0916c4af43113629, - limb2: 0x209122172999a868, + limb0: 0x6e52232ec1b38ff612c0a492, + limb1: 0x7839f69ef41e655aea744d38, + limb2: 0x20ab9a05d7ad1f52, limb3: 0x0 }, r0a1: u384 { - limb0: 0x8e9ca9b1720507a2b58ba75d, - limb1: 0xd865fe762a9b6826e344c34b, - limb2: 0x244dd84349cc584d, + limb0: 0x8bcdd6166e6ee552371e4636, + limb1: 0x1db9fb889b69e26b47964933, + limb2: 0x15c1b7b4dc794f53, limb3: 0x0 }, r1a0: u384 { - limb0: 0x468e0f9965372e02c2f03013, - limb1: 0xa1b6145ae2d726817d606eaf, - limb2: 0x2d7b574df3ecc709, + limb0: 0xdb2e4167ad301668392630d4, + limb1: 0x78d41ddd629aa47464b2954, + limb2: 0x122cf4989cd8fabc, limb3: 0x0 }, r1a1: u384 { - limb0: 0x9793df1cff30a388b12a3a3, - limb1: 0xa0e35d433ac91f67d6f8e07, - limb2: 0x18f946c113c3f885, + limb0: 0xd20b6faf7e40f5ceda0b861d, + limb1: 0xaa5af5b00dbdc5f5712dc3bc, + limb2: 0x447f15fd6766a8b, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xc2346b0f31fcb60dc341a353, - limb1: 0x42611dcc7dbb9899c1c115ed, - limb2: 0x269d2592348efeb9, + limb0: 0x2cd350402831a212e938de81, + limb1: 0xed9a7a80de5e1ec0f4b2c4db, + limb2: 0x2f04e512c778c8a3, limb3: 0x0 }, r0a1: u384 { - limb0: 0xcf4027499d09ba82b5586e07, - limb1: 0x20194bc3d686a81698c87468, - limb2: 0x23e28bf64d9510bb, + limb0: 0x8cd4823620230108e89a1e94, + limb1: 0x2dc2d1e59111f47e7663cb36, + limb2: 0x8cbcece7fd20252, limb3: 0x0 }, r1a0: u384 { - limb0: 0x468cdd6355c3796abeedd9b, - limb1: 0x101f497021812a5876fdfded, - limb2: 0x292ec07bbbff7e4, + limb0: 0x6bbf0471a8988b16ca947450, + limb1: 0xf7911a0d3db83d1956cc277b, + limb2: 0x7db791f07f93808, limb3: 0x0 }, r1a1: u384 { - limb0: 0xf20ddfe065fa4e43065ce7f6, - limb1: 0xaaa0e197ebd8d2e13b2a2559, - limb2: 0x19423445102a6eea, + limb0: 0xd46f340dfdea0b0bef63e487, + limb1: 0xbd7520f6a22899dfe8887b8b, + limb2: 0x10f9c9a88e425f37, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xd387a25f0b43c7e3cbfb4263, - limb1: 0x44e72d8a0916c4af43113629, - limb2: 0x209122172999a868, + limb0: 0x6e52232ec1b38ff612c0a492, + limb1: 0x7839f69ef41e655aea744d38, + limb2: 0x20ab9a05d7ad1f52, limb3: 0x0 }, r0a1: u384 { - limb0: 0x8e9ca9b1720507a2b58ba75d, - limb1: 0xd865fe762a9b6826e344c34b, - limb2: 0x244dd84349cc584d, + limb0: 0x8bcdd6166e6ee552371e4636, + limb1: 0x1db9fb889b69e26b47964933, + limb2: 0x15c1b7b4dc794f53, limb3: 0x0 }, r1a0: u384 { - limb0: 0x468e0f9965372e02c2f03013, - limb1: 0xa1b6145ae2d726817d606eaf, - limb2: 0x2d7b574df3ecc709, + limb0: 0xdb2e4167ad301668392630d4, + limb1: 0x78d41ddd629aa47464b2954, + limb2: 0x122cf4989cd8fabc, limb3: 0x0 }, r1a1: u384 { - limb0: 0x9793df1cff30a388b12a3a3, - limb1: 0xa0e35d433ac91f67d6f8e07, - limb2: 0x18f946c113c3f885, + limb0: 0xd20b6faf7e40f5ceda0b861d, + limb1: 0xaa5af5b00dbdc5f5712dc3bc, + limb2: 0x447f15fd6766a8b, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x512c9b03f212d0a6f9d760c4, - limb1: 0xc332144737f4df268646c426, - limb2: 0x2096592dcfe3c072, + limb0: 0x6411c143a41cb76ad19b3fe9, + limb1: 0xa0a964f97d57b7b7db78d2bb, + limb2: 0x2bf9110ff7c2fdb2, limb3: 0x0 }, r0a1: u384 { - limb0: 0xe196497e79e79640d081b246, - limb1: 0x274f6dfd4ebf227702342ef7, - limb2: 0x1bb32db112f9ee45, + limb0: 0xe183b2e52b5137dcbd33bcb9, + limb1: 0xa82fec8a97ce059d24aa3b35, + limb2: 0x19d11db2c569eece, limb3: 0x0 }, r1a0: u384 { - limb0: 0x8ff4d03e84e2890a74bc57ee, - limb1: 0x66f6cd6a8b6e3caa93ba7c9, - limb2: 0x27c08bc9723a9801, + limb0: 0xcce8df3877331ae709ba92e, + limb1: 0x77be8fc4e226cee90a7f955a, + limb2: 0x1609775efcfbed68, limb3: 0x0 }, r1a1: u384 { - limb0: 0xe0ba1430f2862a8b92caca7b, - limb1: 0x629ed99efff3c7c5bf279429, - limb2: 0x5e3fc739bace207, + limb0: 0x39a8e985d0dad03eb162f6be, + limb1: 0x6e34512435de4fa5a24bd9f1, + limb2: 0x48ac1c32967705c, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x512c9b03f212d0a6f9d760c4, - limb1: 0xc332144737f4df268646c426, - limb2: 0x2096592dcfe3c072, + limb0: 0x6411c143a41cb76ad19b3fe9, + limb1: 0xa0a964f97d57b7b7db78d2bb, + limb2: 0x2bf9110ff7c2fdb2, limb3: 0x0 }, r0a1: u384 { - limb0: 0xe196497e79e79640d081b246, - limb1: 0x274f6dfd4ebf227702342ef7, - limb2: 0x1bb32db112f9ee45, + limb0: 0xe183b2e52b5137dcbd33bcb9, + limb1: 0xa82fec8a97ce059d24aa3b35, + limb2: 0x19d11db2c569eece, limb3: 0x0 }, r1a0: u384 { - limb0: 0x8ff4d03e84e2890a74bc57ee, - limb1: 0x66f6cd6a8b6e3caa93ba7c9, - limb2: 0x27c08bc9723a9801, + limb0: 0xcce8df3877331ae709ba92e, + limb1: 0x77be8fc4e226cee90a7f955a, + limb2: 0x1609775efcfbed68, limb3: 0x0 }, r1a1: u384 { - limb0: 0xe0ba1430f2862a8b92caca7b, - limb1: 0x629ed99efff3c7c5bf279429, - limb2: 0x5e3fc739bace207, + limb0: 0x39a8e985d0dad03eb162f6be, + limb1: 0x6e34512435de4fa5a24bd9f1, + limb2: 0x48ac1c32967705c, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x6f205555b797ccb3b9f0aaf0, - limb1: 0x169e4c5874dd281786b62e, - limb2: 0x2fbb60932bc68e51, + limb0: 0x5937e500cc17fe668064047c, + limb1: 0x9f2b55cac45bcda93d2f78f3, + limb2: 0xefeb9a8c60c35b1, limb3: 0x0 }, r0a1: u384 { - limb0: 0xcf6f727294550c3b119afe3b, - limb1: 0x7c2e0ff99a13f41ee515ca26, - limb2: 0x1d1b9e59664eb645, + limb0: 0x5a5317cb9495c6ab1aef7b7d, + limb1: 0xacd6df647415a39894ce9966, + limb2: 0xbffddf772479189, limb3: 0x0 }, r1a0: u384 { - limb0: 0xf040f8de8753efaf966f0c2a, - limb1: 0xef8ed452a756b6be6b7a0ffa, - limb2: 0xf402db99907fdf3, + limb0: 0xf15f58a2d03a5ea13fb08cd1, + limb1: 0xf674a4be1c2503cda5689c69, + limb2: 0x2f7d5d5a694a683c, limb3: 0x0 }, r1a1: u384 { - limb0: 0xddd38bf97e8a755acd207954, - limb1: 0xbbbee6113f15ce327d57b12c, - limb2: 0x2ed9daf46f8e1ae1, + limb0: 0xdc4bd00ef75e168f58d4d2a, + limb1: 0x1bfd060452f3514198e29abf, + limb2: 0x2fb9df98cdf02af8, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x8133a500d63000b96400c087, - limb1: 0xe647cf9a3b881f3c03815a65, - limb2: 0x6cd09d84d306e34, + limb0: 0x55a590f27da0651b25558b4b, + limb1: 0x6615f51e899f1e4e82f98128, + limb2: 0x199c3087e00b3344, limb3: 0x0 }, r0a1: u384 { - limb0: 0xd5e37d3b507237ca2ff6ef16, - limb1: 0xbf770be4e4bc3aa2fca5474d, - limb2: 0x34132125b905d95, + limb0: 0x9b5e06c80ef2855bebd84d2f, + limb1: 0x1c1f46d31a0f8c4b32d69d1f, + limb2: 0xc7173eeef78684f, limb3: 0x0 }, r1a0: u384 { - limb0: 0xb0165516a8a2fa738cee898f, - limb1: 0x7fb1e1872b6b1c2e025c21a, - limb2: 0x2ee8dad0f4e6b50, + limb0: 0x5ebc8e53cae1fb87e94a81be, + limb1: 0x2efb8c4b7a9c0a823f48f43, + limb2: 0x24a78e30bd7579ce, limb3: 0x0 }, r1a1: u384 { - limb0: 0xc549e2fd435cc22c83d33b7, - limb1: 0xeb92bac0ddbe961615d4dfc6, - limb2: 0x11a3e4dcca56e8c2, + limb0: 0x1b636f31533d11ad8eb219e7, + limb1: 0x73ae69bb67c2a8d6f05f02a3, + limb2: 0x2e4cfe29e400395a, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x6f205555b797ccb3b9f0aaf0, - limb1: 0x169e4c5874dd281786b62e, - limb2: 0x2fbb60932bc68e51, + limb0: 0x5937e500cc17fe668064047c, + limb1: 0x9f2b55cac45bcda93d2f78f3, + limb2: 0xefeb9a8c60c35b1, limb3: 0x0 }, r0a1: u384 { - limb0: 0xcf6f727294550c3b119afe3b, - limb1: 0x7c2e0ff99a13f41ee515ca26, - limb2: 0x1d1b9e59664eb645, + limb0: 0x5a5317cb9495c6ab1aef7b7d, + limb1: 0xacd6df647415a39894ce9966, + limb2: 0xbffddf772479189, limb3: 0x0 }, r1a0: u384 { - limb0: 0xf040f8de8753efaf966f0c2a, - limb1: 0xef8ed452a756b6be6b7a0ffa, - limb2: 0xf402db99907fdf3, + limb0: 0xf15f58a2d03a5ea13fb08cd1, + limb1: 0xf674a4be1c2503cda5689c69, + limb2: 0x2f7d5d5a694a683c, limb3: 0x0 }, r1a1: u384 { - limb0: 0xddd38bf97e8a755acd207954, - limb1: 0xbbbee6113f15ce327d57b12c, - limb2: 0x2ed9daf46f8e1ae1, + limb0: 0xdc4bd00ef75e168f58d4d2a, + limb1: 0x1bfd060452f3514198e29abf, + limb2: 0x2fb9df98cdf02af8, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x8133a500d63000b96400c087, - limb1: 0xe647cf9a3b881f3c03815a65, - limb2: 0x6cd09d84d306e34, + limb0: 0x55a590f27da0651b25558b4b, + limb1: 0x6615f51e899f1e4e82f98128, + limb2: 0x199c3087e00b3344, limb3: 0x0 }, r0a1: u384 { - limb0: 0xd5e37d3b507237ca2ff6ef16, - limb1: 0xbf770be4e4bc3aa2fca5474d, - limb2: 0x34132125b905d95, + limb0: 0x9b5e06c80ef2855bebd84d2f, + limb1: 0x1c1f46d31a0f8c4b32d69d1f, + limb2: 0xc7173eeef78684f, limb3: 0x0 }, r1a0: u384 { - limb0: 0xb0165516a8a2fa738cee898f, - limb1: 0x7fb1e1872b6b1c2e025c21a, - limb2: 0x2ee8dad0f4e6b50, + limb0: 0x5ebc8e53cae1fb87e94a81be, + limb1: 0x2efb8c4b7a9c0a823f48f43, + limb2: 0x24a78e30bd7579ce, limb3: 0x0 }, r1a1: u384 { - limb0: 0xc549e2fd435cc22c83d33b7, - limb1: 0xeb92bac0ddbe961615d4dfc6, - limb2: 0x11a3e4dcca56e8c2, + limb0: 0x1b636f31533d11ad8eb219e7, + limb1: 0x73ae69bb67c2a8d6f05f02a3, + limb2: 0x2e4cfe29e400395a, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x509097507bc016b1f149557a, - limb1: 0x8f5d2ee8cd6209e0e5b54ad7, - limb2: 0xec50e281015fb1d, + limb0: 0xe56e784bbdcef3aac92c27bf, + limb1: 0xe05d2d64486ae7c7510e1eef, + limb2: 0x817afd56e949ca0, limb3: 0x0 }, r0a1: u384 { - limb0: 0x4c5db9b951faec54b1f17817, - limb1: 0xbffc419a33a7394e677fe297, - limb2: 0xe05ceeab1406c12, + limb0: 0x71faffc19db373861efa0d6a, + limb1: 0x477781fc0937a2118f769af5, + limb2: 0x15d219bd2ed37b8d, limb3: 0x0 }, r1a0: u384 { - limb0: 0xe1d73f777abcf1aef617aac7, - limb1: 0x16accf2c082a5b9cf8384d81, - limb2: 0x1d20a3edab6387eb, + limb0: 0x53fbcf9fcfa3ce84788f77e1, + limb1: 0xcddbe217782fd9b953be071, + limb2: 0x259554747e31d728, limb3: 0x0 }, r1a1: u384 { - limb0: 0x46e6d09a24349597a6681d86, - limb1: 0xb7efec7e11effa74ec8bc3be, - limb2: 0x63f08f51a154c89, + limb0: 0xad5f8a34ab854b3222d472cf, + limb1: 0x52d45547201187d646581965, + limb2: 0x7e06bc2a587f1e5, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x509097507bc016b1f149557a, - limb1: 0x8f5d2ee8cd6209e0e5b54ad7, - limb2: 0xec50e281015fb1d, + limb0: 0xe56e784bbdcef3aac92c27bf, + limb1: 0xe05d2d64486ae7c7510e1eef, + limb2: 0x817afd56e949ca0, limb3: 0x0 }, r0a1: u384 { - limb0: 0x4c5db9b951faec54b1f17817, - limb1: 0xbffc419a33a7394e677fe297, - limb2: 0xe05ceeab1406c12, + limb0: 0x71faffc19db373861efa0d6a, + limb1: 0x477781fc0937a2118f769af5, + limb2: 0x15d219bd2ed37b8d, limb3: 0x0 }, r1a0: u384 { - limb0: 0xe1d73f777abcf1aef617aac7, - limb1: 0x16accf2c082a5b9cf8384d81, - limb2: 0x1d20a3edab6387eb, + limb0: 0x53fbcf9fcfa3ce84788f77e1, + limb1: 0xcddbe217782fd9b953be071, + limb2: 0x259554747e31d728, limb3: 0x0 }, r1a1: u384 { - limb0: 0x46e6d09a24349597a6681d86, - limb1: 0xb7efec7e11effa74ec8bc3be, - limb2: 0x63f08f51a154c89, + limb0: 0xad5f8a34ab854b3222d472cf, + limb1: 0x52d45547201187d646581965, + limb2: 0x7e06bc2a587f1e5, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x7983cad0e0607009c82f19f5, - limb1: 0xc334a7ef523ec112f409ad1f, - limb2: 0x201f2311d6497e68, + limb0: 0xd31eafba3914f53ec27d3c17, + limb1: 0x79f8fd670536f7dce8961707, + limb2: 0xad61c97b0c3ece2, limb3: 0x0 }, r0a1: u384 { - limb0: 0xd5fe22d3ca44f13790665ba5, - limb1: 0x62c665c556136d026faf4bec, - limb2: 0x2ac9e4528756dac1, + limb0: 0xd7ee1a74e63d792c11a8d210, + limb1: 0x950a872cb7a0fa80eadadd4c, + limb2: 0xc9a713c6c5c5d77, limb3: 0x0 }, r1a0: u384 { - limb0: 0xfee86f808a9ad0faf679838a, - limb1: 0xd38eaaf9b0a60259a88109ab, - limb2: 0x4d86740f5187017, + limb0: 0x5bf888fffd64a4cbeedc1da3, + limb1: 0xa399d6a96adf9259444479bb, + limb2: 0x2cb770b0ccd2613d, limb3: 0x0 }, r1a1: u384 { - limb0: 0x3608843bbde24bd1165160b, - limb1: 0xe79e2110cfd99332ac2a52d6, - limb2: 0x1e356bb29ac63c5, + limb0: 0x55e8e6d97e15c9ffc69c05e7, + limb1: 0xe79422bdf601065dd66f1187, + limb2: 0x228e90b7b1104767, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xcdf73b22bba48ff7862013d5, - limb1: 0x821e0990deea4e7934148efc, - limb2: 0x2185fb5110ebf282, + limb0: 0xdf325bffc4f75bde16339c21, + limb1: 0x59e1b11a922fd25b46da34ad, + limb2: 0x1df431a8b518c319, limb3: 0x0 }, r0a1: u384 { - limb0: 0x12fabba4f2b1d82b97e15209, - limb1: 0x1a52cd3fbcabcd757c5f5649, - limb2: 0x75bb6c9be67767b, + limb0: 0xa34e525fbce9d573f316a8e1, + limb1: 0x5715c100bd0d4bc47e1199aa, + limb2: 0x111fd4d9fe3f4aa8, limb3: 0x0 }, r1a0: u384 { - limb0: 0xca3516ad57ff0c9bf393cbf6, - limb1: 0x8aa51b7f12cfb39d132e13dd, - limb2: 0x2c2e2c59eef6d0f5, + limb0: 0x4ddeb02cca8556d49bb4d13b, + limb1: 0x56b8e64426fbb6983377fe9f, + limb2: 0x166b7c9a7bb6eb74, limb3: 0x0 }, r1a1: u384 { - limb0: 0xda592db763d5d6eef09b33df, - limb1: 0x8e5759595c92d72c4410d03d, - limb2: 0x249e17c64b3fd381, + limb0: 0x8ef5c3ef69254a68b5ffcf4d, + limb1: 0xd6eaa92d6814c39953c833ca, + limb2: 0x8cda70783ba41fc, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x7983cad0e0607009c82f19f5, - limb1: 0xc334a7ef523ec112f409ad1f, - limb2: 0x201f2311d6497e68, + limb0: 0xd31eafba3914f53ec27d3c17, + limb1: 0x79f8fd670536f7dce8961707, + limb2: 0xad61c97b0c3ece2, limb3: 0x0 }, r0a1: u384 { - limb0: 0xd5fe22d3ca44f13790665ba5, - limb1: 0x62c665c556136d026faf4bec, - limb2: 0x2ac9e4528756dac1, + limb0: 0xd7ee1a74e63d792c11a8d210, + limb1: 0x950a872cb7a0fa80eadadd4c, + limb2: 0xc9a713c6c5c5d77, limb3: 0x0 }, r1a0: u384 { - limb0: 0xfee86f808a9ad0faf679838a, - limb1: 0xd38eaaf9b0a60259a88109ab, - limb2: 0x4d86740f5187017, + limb0: 0x5bf888fffd64a4cbeedc1da3, + limb1: 0xa399d6a96adf9259444479bb, + limb2: 0x2cb770b0ccd2613d, limb3: 0x0 }, r1a1: u384 { - limb0: 0x3608843bbde24bd1165160b, - limb1: 0xe79e2110cfd99332ac2a52d6, - limb2: 0x1e356bb29ac63c5, + limb0: 0x55e8e6d97e15c9ffc69c05e7, + limb1: 0xe79422bdf601065dd66f1187, + limb2: 0x228e90b7b1104767, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xcdf73b22bba48ff7862013d5, - limb1: 0x821e0990deea4e7934148efc, - limb2: 0x2185fb5110ebf282, + limb0: 0xdf325bffc4f75bde16339c21, + limb1: 0x59e1b11a922fd25b46da34ad, + limb2: 0x1df431a8b518c319, limb3: 0x0 }, r0a1: u384 { - limb0: 0x12fabba4f2b1d82b97e15209, - limb1: 0x1a52cd3fbcabcd757c5f5649, - limb2: 0x75bb6c9be67767b, + limb0: 0xa34e525fbce9d573f316a8e1, + limb1: 0x5715c100bd0d4bc47e1199aa, + limb2: 0x111fd4d9fe3f4aa8, limb3: 0x0 }, r1a0: u384 { - limb0: 0xca3516ad57ff0c9bf393cbf6, - limb1: 0x8aa51b7f12cfb39d132e13dd, - limb2: 0x2c2e2c59eef6d0f5, + limb0: 0x4ddeb02cca8556d49bb4d13b, + limb1: 0x56b8e64426fbb6983377fe9f, + limb2: 0x166b7c9a7bb6eb74, limb3: 0x0 }, r1a1: u384 { - limb0: 0xda592db763d5d6eef09b33df, - limb1: 0x8e5759595c92d72c4410d03d, - limb2: 0x249e17c64b3fd381, + limb0: 0x8ef5c3ef69254a68b5ffcf4d, + limb1: 0xd6eaa92d6814c39953c833ca, + limb2: 0x8cda70783ba41fc, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x716e1a5505b79ffe977c7933, - limb1: 0x8da81199620e1acb0508e265, - limb2: 0x29b214c78aa679f3, + limb0: 0x4e44a9b72f424336295cd2d4, + limb1: 0xe43008eebda999077f586dd0, + limb2: 0x2833eade2a41fefe, limb3: 0x0 }, r0a1: u384 { - limb0: 0x7147156f7c402dee506b6268, - limb1: 0x4bf773c718401ef6b7c1153f, - limb2: 0xe20c04d0e3a54e1, + limb0: 0xa23faf119ba1e712eaa2ad9d, + limb1: 0xffd42ca54f7c46f0e5dd7375, + limb2: 0x14f3d66f92191f3d, limb3: 0x0 }, r1a0: u384 { - limb0: 0x2a90c46af4b9bc2384c7a95, - limb1: 0x691cd17def28360b3afdfa47, - limb2: 0x2b18bffd1169493f, + limb0: 0xde664b9a5bb68f83b166d13f, + limb1: 0x504eada56a1604828ac250aa, + limb2: 0x1a59ac93ced3882, limb3: 0x0 }, r1a1: u384 { - limb0: 0x45b3c0c4f450d73761de5c29, - limb1: 0x9e65bcc163c2f100fb67398a, - limb2: 0x15ea3d158639e4af, + limb0: 0x57e2ca35f761f0a43dca1cf5, + limb1: 0x9d1dae4b976d26ff058b20f6, + limb2: 0x27083f11525f853e, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x716e1a5505b79ffe977c7933, - limb1: 0x8da81199620e1acb0508e265, - limb2: 0x29b214c78aa679f3, + limb0: 0x4e44a9b72f424336295cd2d4, + limb1: 0xe43008eebda999077f586dd0, + limb2: 0x2833eade2a41fefe, limb3: 0x0 }, r0a1: u384 { - limb0: 0x7147156f7c402dee506b6268, - limb1: 0x4bf773c718401ef6b7c1153f, - limb2: 0xe20c04d0e3a54e1, + limb0: 0xa23faf119ba1e712eaa2ad9d, + limb1: 0xffd42ca54f7c46f0e5dd7375, + limb2: 0x14f3d66f92191f3d, limb3: 0x0 }, r1a0: u384 { - limb0: 0x2a90c46af4b9bc2384c7a95, - limb1: 0x691cd17def28360b3afdfa47, - limb2: 0x2b18bffd1169493f, + limb0: 0xde664b9a5bb68f83b166d13f, + limb1: 0x504eada56a1604828ac250aa, + limb2: 0x1a59ac93ced3882, limb3: 0x0 }, r1a1: u384 { - limb0: 0x45b3c0c4f450d73761de5c29, - limb1: 0x9e65bcc163c2f100fb67398a, - limb2: 0x15ea3d158639e4af, + limb0: 0x57e2ca35f761f0a43dca1cf5, + limb1: 0x9d1dae4b976d26ff058b20f6, + limb2: 0x27083f11525f853e, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x74ed2068016c0d7fd17dada5, - limb1: 0x426a4707f04b641bb0418e02, - limb2: 0x2d8dbef3017f39fa, + limb0: 0xacffdc27d3923f5779c9f561, + limb1: 0x6acc5c81d640b06edf8669e7, + limb2: 0x23d3ecf6cd5ae000, limb3: 0x0 }, r0a1: u384 { - limb0: 0xfa87a948a0623b30ddea8fc3, - limb1: 0xf29141c8ef2d52250b5ca6a, - limb2: 0x1227d8e14c7924e8, + limb0: 0xc576257e34519bcbfe12a0e5, + limb1: 0x6dfda810453128aa1b9ff5f3, + limb2: 0x272b3f6cde8f6f3d, limb3: 0x0 }, r1a0: u384 { - limb0: 0xecf16f37b7126a4f903d8ce0, - limb1: 0xbe9bced1f1148117ef83e6da, - limb2: 0x16211f8d10b825f7, + limb0: 0x3314182b61b3a1153d51085c, + limb1: 0x78d944875a2068000dc27e73, + limb2: 0x2184b9ce45b284ff, limb3: 0x0 }, r1a1: u384 { - limb0: 0x6e45b3d9d0ac7b268147daba, - limb1: 0x91e8cf824704eab8b3015ddc, - limb2: 0x23de100853addccd, + limb0: 0xa3831da9efe63936fe510a88, + limb1: 0xd853b46a2f7648744b5bbcea, + limb2: 0x2437a9f7f5559f66, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x74ed2068016c0d7fd17dada5, - limb1: 0x426a4707f04b641bb0418e02, - limb2: 0x2d8dbef3017f39fa, + limb0: 0xacffdc27d3923f5779c9f561, + limb1: 0x6acc5c81d640b06edf8669e7, + limb2: 0x23d3ecf6cd5ae000, limb3: 0x0 }, r0a1: u384 { - limb0: 0xfa87a948a0623b30ddea8fc3, - limb1: 0xf29141c8ef2d52250b5ca6a, - limb2: 0x1227d8e14c7924e8, + limb0: 0xc576257e34519bcbfe12a0e5, + limb1: 0x6dfda810453128aa1b9ff5f3, + limb2: 0x272b3f6cde8f6f3d, limb3: 0x0 }, r1a0: u384 { - limb0: 0xecf16f37b7126a4f903d8ce0, - limb1: 0xbe9bced1f1148117ef83e6da, - limb2: 0x16211f8d10b825f7, + limb0: 0x3314182b61b3a1153d51085c, + limb1: 0x78d944875a2068000dc27e73, + limb2: 0x2184b9ce45b284ff, limb3: 0x0 }, r1a1: u384 { - limb0: 0x6e45b3d9d0ac7b268147daba, - limb1: 0x91e8cf824704eab8b3015ddc, - limb2: 0x23de100853addccd, + limb0: 0xa3831da9efe63936fe510a88, + limb1: 0xd853b46a2f7648744b5bbcea, + limb2: 0x2437a9f7f5559f66, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xe4409ec1723b88d1f4c4e731, - limb1: 0x8ac6c86e08e80e8639fa6704, - limb2: 0x138a4895758369a0, + limb0: 0x373d78cacc3a213ab7a5dc77, + limb1: 0x2c4c9295f1b3e767a376d95a, + limb2: 0x6fa8606535c131, limb3: 0x0 }, r0a1: u384 { - limb0: 0xedddaee786c08b14741505df, - limb1: 0x301e5153625dc34ba5d7ae4d, - limb2: 0xf07c3def0519a2e, + limb0: 0x7a037d066e3015f12b9bb899, + limb1: 0x2df06eb9be7dd1d34dd0ce6e, + limb2: 0x2bfecfb6faa40681, limb3: 0x0 }, r1a0: u384 { - limb0: 0x36284aeb0f3a3e98305e3b16, - limb1: 0xff3e39186d0a3b83e9665ce9, - limb2: 0x249eb32cc8f2e96c, + limb0: 0x767f84f556bc0e82acc4c2fc, + limb1: 0xdc285959286fe86c69fd09c6, + limb2: 0xddf35d64e052591, limb3: 0x0 }, r1a1: u384 { - limb0: 0x76af5098f9ff5a05db6c497f, - limb1: 0x52b3e356ffc35e5e571d3ed5, - limb2: 0x2ae75d385d100239, + limb0: 0xba3bf8a2a744c4be716d10a3, + limb1: 0x704558fde5a2dd4610092a58, + limb2: 0x24381fac38d1c2f4, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x27e79236d3a504413496a69d, - limb1: 0x64c48560fe7535d8d983d405, - limb2: 0x301fec1c5687092d, + limb0: 0x8bfb882fe3e87bf7f06a534, + limb1: 0x60e74ba16f35b38925253fa1, + limb2: 0x105952dd8d3cb0fb, limb3: 0x0 }, r0a1: u384 { - limb0: 0xf9d98258f6b8ceb3a88fca4d, - limb1: 0x70f511abfa1b8043895c59f4, - limb2: 0x232d43d5a83d90a0, + limb0: 0x86a65a5ae488b0d28900cf53, + limb1: 0x4fca5c6edee392882c778363, + limb2: 0x160b4e8a7969f551, limb3: 0x0 }, r1a0: u384 { - limb0: 0x3c95aeed100dda9adb13b1a0, - limb1: 0x55f58c3984b5fb36f8d42fca, - limb2: 0xbb497e3560e7780, + limb0: 0x7b126c951fa4afc0c2ebda0c, + limb1: 0x85834d2eff18413563bf9144, + limb2: 0x8f905b15b3b2add, limb3: 0x0 }, r1a1: u384 { - limb0: 0xa9e39e5f74c602ec71b0d0d7, - limb1: 0x4169acabd31a3be85d93af7c, - limb2: 0x2dfc00f8128f3e0e, + limb0: 0xa595d6853747f798b16d2eca, + limb1: 0x42d7941f6581b069059ed186, + limb2: 0x2eb502b9a9b7169b, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xe4409ec1723b88d1f4c4e731, - limb1: 0x8ac6c86e08e80e8639fa6704, - limb2: 0x138a4895758369a0, + limb0: 0x373d78cacc3a213ab7a5dc77, + limb1: 0x2c4c9295f1b3e767a376d95a, + limb2: 0x6fa8606535c131, limb3: 0x0 }, r0a1: u384 { - limb0: 0xedddaee786c08b14741505df, - limb1: 0x301e5153625dc34ba5d7ae4d, - limb2: 0xf07c3def0519a2e, + limb0: 0x7a037d066e3015f12b9bb899, + limb1: 0x2df06eb9be7dd1d34dd0ce6e, + limb2: 0x2bfecfb6faa40681, limb3: 0x0 }, r1a0: u384 { - limb0: 0x36284aeb0f3a3e98305e3b16, - limb1: 0xff3e39186d0a3b83e9665ce9, - limb2: 0x249eb32cc8f2e96c, + limb0: 0x767f84f556bc0e82acc4c2fc, + limb1: 0xdc285959286fe86c69fd09c6, + limb2: 0xddf35d64e052591, limb3: 0x0 }, r1a1: u384 { - limb0: 0x76af5098f9ff5a05db6c497f, - limb1: 0x52b3e356ffc35e5e571d3ed5, - limb2: 0x2ae75d385d100239, + limb0: 0xba3bf8a2a744c4be716d10a3, + limb1: 0x704558fde5a2dd4610092a58, + limb2: 0x24381fac38d1c2f4, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x27e79236d3a504413496a69d, - limb1: 0x64c48560fe7535d8d983d405, - limb2: 0x301fec1c5687092d, + limb0: 0x8bfb882fe3e87bf7f06a534, + limb1: 0x60e74ba16f35b38925253fa1, + limb2: 0x105952dd8d3cb0fb, limb3: 0x0 }, r0a1: u384 { - limb0: 0xf9d98258f6b8ceb3a88fca4d, - limb1: 0x70f511abfa1b8043895c59f4, - limb2: 0x232d43d5a83d90a0, + limb0: 0x86a65a5ae488b0d28900cf53, + limb1: 0x4fca5c6edee392882c778363, + limb2: 0x160b4e8a7969f551, limb3: 0x0 }, r1a0: u384 { - limb0: 0x3c95aeed100dda9adb13b1a0, - limb1: 0x55f58c3984b5fb36f8d42fca, - limb2: 0xbb497e3560e7780, + limb0: 0x7b126c951fa4afc0c2ebda0c, + limb1: 0x85834d2eff18413563bf9144, + limb2: 0x8f905b15b3b2add, limb3: 0x0 }, r1a1: u384 { - limb0: 0xa9e39e5f74c602ec71b0d0d7, - limb1: 0x4169acabd31a3be85d93af7c, - limb2: 0x2dfc00f8128f3e0e, + limb0: 0xa595d6853747f798b16d2eca, + limb1: 0x42d7941f6581b069059ed186, + limb2: 0x2eb502b9a9b7169b, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x460e3211aa99bc794f5fdd8f, - limb1: 0x54582431c73e3c151adfb986, - limb2: 0x15ae9ac9c9576199, + limb0: 0xe6dbfdaa4aaed35ae46b7e36, + limb1: 0x954a32448a2c26964f83e2ff, + limb2: 0x23fe11d86de21bf3, limb3: 0x0 }, r0a1: u384 { - limb0: 0xd5d6fbee18410bd43eae83c8, - limb1: 0x478589c488675cc81752c76e, - limb2: 0x15f4a8b20aa637ae, + limb0: 0x390ec78bb0c63fea5a5112ca, + limb1: 0x5eaba420296488bd9ad78ba4, + limb2: 0x179a2336d20f9552, limb3: 0x0 }, r1a0: u384 { - limb0: 0xfdc5c8f39c0b4f52a7db2fc1, - limb1: 0x616dd141f71dac5b64bd3acf, - limb2: 0x23e7f351c745917, + limb0: 0x451d421ca57949d9274eaee9, + limb1: 0xd85aee99f3f7b33bdddf1b37, + limb2: 0x1b83c0b80546357d, limb3: 0x0 }, r1a1: u384 { - limb0: 0x5d9cc1c3eb7bd5a3ff890948, - limb1: 0xc692847a46f936749efb869, - limb2: 0x6a5c2852ac6cc5, + limb0: 0x94c9276300f21460bd558c41, + limb1: 0x89efceec3bb694f4c41487d3, + limb2: 0x44375dd912e436b, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x460e3211aa99bc794f5fdd8f, - limb1: 0x54582431c73e3c151adfb986, - limb2: 0x15ae9ac9c9576199, + limb0: 0xe6dbfdaa4aaed35ae46b7e36, + limb1: 0x954a32448a2c26964f83e2ff, + limb2: 0x23fe11d86de21bf3, limb3: 0x0 }, r0a1: u384 { - limb0: 0xd5d6fbee18410bd43eae83c8, - limb1: 0x478589c488675cc81752c76e, - limb2: 0x15f4a8b20aa637ae, + limb0: 0x390ec78bb0c63fea5a5112ca, + limb1: 0x5eaba420296488bd9ad78ba4, + limb2: 0x179a2336d20f9552, limb3: 0x0 }, r1a0: u384 { - limb0: 0xfdc5c8f39c0b4f52a7db2fc1, - limb1: 0x616dd141f71dac5b64bd3acf, - limb2: 0x23e7f351c745917, + limb0: 0x451d421ca57949d9274eaee9, + limb1: 0xd85aee99f3f7b33bdddf1b37, + limb2: 0x1b83c0b80546357d, limb3: 0x0 }, r1a1: u384 { - limb0: 0x5d9cc1c3eb7bd5a3ff890948, - limb1: 0xc692847a46f936749efb869, - limb2: 0x6a5c2852ac6cc5, + limb0: 0x94c9276300f21460bd558c41, + limb1: 0x89efceec3bb694f4c41487d3, + limb2: 0x44375dd912e436b, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x99ddd0702091afcff0d3b821, - limb1: 0xf87eef8718041793d46c6d1a, - limb2: 0x1429e0a900cd527f, + limb0: 0x90c98d8d59246f7ac71cbc7, + limb1: 0x603dd0e0dd09fb8ad13dbbb, + limb2: 0x1d068d315771a3c1, limb3: 0x0 }, r0a1: u384 { - limb0: 0x68b86e5adfb73603d84ac24b, - limb1: 0xf229dde45d002b5fd40a7b1, - limb2: 0x1e620a9ec95372b0, + limb0: 0x2bb3f34aa59b0e052ec56b80, + limb1: 0xb239e8dca49685c638327d9e, + limb2: 0x11e46c1f8395f739, limb3: 0x0 }, r1a0: u384 { - limb0: 0x831f95d9853673c549a27fef, - limb1: 0x6db62eee8e610b7173d6a675, - limb2: 0x18ceadc2f459e5aa, + limb0: 0x2f114895453b5cf23b04678c, + limb1: 0x99cdbda7fef0644b67d48e85, + limb2: 0x6d8bc66cf89ee21, limb3: 0x0 }, r1a1: u384 { - limb0: 0x4f1ee7eba548df11e5ce70ca, - limb1: 0x9894aeab82b38230ef79f0d9, - limb2: 0xf1f1e0cd1daf9e, + limb0: 0x903c6ead9a344fceaab2dd24, + limb1: 0x97063cfc1096d628d7979e2c, + limb2: 0x49f8c496be2ccd4, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x99ddd0702091afcff0d3b821, - limb1: 0xf87eef8718041793d46c6d1a, - limb2: 0x1429e0a900cd527f, + limb0: 0x90c98d8d59246f7ac71cbc7, + limb1: 0x603dd0e0dd09fb8ad13dbbb, + limb2: 0x1d068d315771a3c1, limb3: 0x0 }, r0a1: u384 { - limb0: 0x68b86e5adfb73603d84ac24b, - limb1: 0xf229dde45d002b5fd40a7b1, - limb2: 0x1e620a9ec95372b0, + limb0: 0x2bb3f34aa59b0e052ec56b80, + limb1: 0xb239e8dca49685c638327d9e, + limb2: 0x11e46c1f8395f739, limb3: 0x0 }, r1a0: u384 { - limb0: 0x831f95d9853673c549a27fef, - limb1: 0x6db62eee8e610b7173d6a675, - limb2: 0x18ceadc2f459e5aa, + limb0: 0x2f114895453b5cf23b04678c, + limb1: 0x99cdbda7fef0644b67d48e85, + limb2: 0x6d8bc66cf89ee21, limb3: 0x0 }, r1a1: u384 { - limb0: 0x4f1ee7eba548df11e5ce70ca, - limb1: 0x9894aeab82b38230ef79f0d9, - limb2: 0xf1f1e0cd1daf9e, + limb0: 0x903c6ead9a344fceaab2dd24, + limb1: 0x97063cfc1096d628d7979e2c, + limb2: 0x49f8c496be2ccd4, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xd1a2b3f306671de65eb29e2b, - limb1: 0x1c7d417ea195fb8e441e04cb, - limb2: 0x2c08ce89d6d21b39, + limb0: 0x3778e71e52e9cd8a2efaae30, + limb1: 0x1510f4be21ae0d4ce4e9c407, + limb2: 0x87f2c39614ed514, limb3: 0x0 }, r0a1: u384 { - limb0: 0xf80c8ae4833788be20f22af8, - limb1: 0x37895f28bd308b9c116a05ed, - limb2: 0xb136c47ae7a271c, + limb0: 0x9425b553c85be9f8eab4827e, + limb1: 0xd75d6f1a6013f310d81e5f6e, + limb2: 0x188c2e53470ad6dc, limb3: 0x0 }, r1a0: u384 { - limb0: 0xa14fab74f10da40a043dd11d, - limb1: 0xe84748019afc78dfe767cebf, - limb2: 0x19d4480389926bf6, + limb0: 0xd6715a5f7fb9d3f64160e303, + limb1: 0xfb0e7cb89f7e8c3908e859f9, + limb2: 0x84f3df13ca3d149, limb3: 0x0 }, r1a1: u384 { - limb0: 0x50ee3d6f986248ff448fabb, - limb1: 0xb934e65ac0eedfd751fb5614, - limb2: 0x104f990bd1da0117, + limb0: 0xea46b6a8dbd35d5c7098c283, + limb1: 0xff4f98d6447bac1d056ea3b3, + limb2: 0xd6d18364b06a02c, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xd1a2b3f306671de65eb29e2b, - limb1: 0x1c7d417ea195fb8e441e04cb, - limb2: 0x2c08ce89d6d21b39, + limb0: 0x3778e71e52e9cd8a2efaae30, + limb1: 0x1510f4be21ae0d4ce4e9c407, + limb2: 0x87f2c39614ed514, limb3: 0x0 }, r0a1: u384 { - limb0: 0xf80c8ae4833788be20f22af8, - limb1: 0x37895f28bd308b9c116a05ed, - limb2: 0xb136c47ae7a271c, + limb0: 0x9425b553c85be9f8eab4827e, + limb1: 0xd75d6f1a6013f310d81e5f6e, + limb2: 0x188c2e53470ad6dc, limb3: 0x0 }, r1a0: u384 { - limb0: 0xa14fab74f10da40a043dd11d, - limb1: 0xe84748019afc78dfe767cebf, - limb2: 0x19d4480389926bf6, + limb0: 0xd6715a5f7fb9d3f64160e303, + limb1: 0xfb0e7cb89f7e8c3908e859f9, + limb2: 0x84f3df13ca3d149, limb3: 0x0 }, r1a1: u384 { - limb0: 0x50ee3d6f986248ff448fabb, - limb1: 0xb934e65ac0eedfd751fb5614, - limb2: 0x104f990bd1da0117, + limb0: 0xea46b6a8dbd35d5c7098c283, + limb1: 0xff4f98d6447bac1d056ea3b3, + limb2: 0xd6d18364b06a02c, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xeaf735b8bf1d911bc56cc40b, - limb1: 0x9a3fe0dd31d5266723988e32, - limb2: 0x257073a4684b4fe, + limb0: 0x6f6d3e211d26957a67f263c, + limb1: 0x8da5874752e96d222d666c7e, + limb2: 0x266336ff63f6cae, limb3: 0x0 }, r0a1: u384 { - limb0: 0x88c0abd96c17368de84059dc, - limb1: 0x1a825400a54f70c64b0e775f, - limb2: 0x2f5dae6ed8671c64, + limb0: 0xb3b8c3099016c6a6814524b4, + limb1: 0x4b7c12934d9309f8cb6fe11, + limb2: 0x24a297917e6d2286, limb3: 0x0 }, r1a0: u384 { - limb0: 0xb65eb111126cc7ba7d2d8f98, - limb1: 0x2f0ceb91cbb3f75a6c4b371d, - limb2: 0xc3aa7551c175d9d, + limb0: 0x29f2516e3c81dc23beb0b4a5, + limb1: 0x66af1f7514ccca035bf4bd08, + limb2: 0x1c93fbb41c5a080f, limb3: 0x0 }, r1a1: u384 { - limb0: 0x32a9ec8cb160fbb3265dbfc7, - limb1: 0xc0cbc00da778bfaa940eb8dc, - limb2: 0x2c148d5757e9493f, + limb0: 0x1d9a69028cdcd85247c47085, + limb1: 0xca54eb95e7fb935d08e1e49, + limb2: 0x25c558909e8ce210, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xeaf735b8bf1d911bc56cc40b, - limb1: 0x9a3fe0dd31d5266723988e32, - limb2: 0x257073a4684b4fe, + limb0: 0x6f6d3e211d26957a67f263c, + limb1: 0x8da5874752e96d222d666c7e, + limb2: 0x266336ff63f6cae, limb3: 0x0 }, r0a1: u384 { - limb0: 0x88c0abd96c17368de84059dc, - limb1: 0x1a825400a54f70c64b0e775f, - limb2: 0x2f5dae6ed8671c64, + limb0: 0xb3b8c3099016c6a6814524b4, + limb1: 0x4b7c12934d9309f8cb6fe11, + limb2: 0x24a297917e6d2286, limb3: 0x0 }, r1a0: u384 { - limb0: 0xb65eb111126cc7ba7d2d8f98, - limb1: 0x2f0ceb91cbb3f75a6c4b371d, - limb2: 0xc3aa7551c175d9d, + limb0: 0x29f2516e3c81dc23beb0b4a5, + limb1: 0x66af1f7514ccca035bf4bd08, + limb2: 0x1c93fbb41c5a080f, limb3: 0x0 }, r1a1: u384 { - limb0: 0x32a9ec8cb160fbb3265dbfc7, - limb1: 0xc0cbc00da778bfaa940eb8dc, - limb2: 0x2c148d5757e9493f, + limb0: 0x1d9a69028cdcd85247c47085, + limb1: 0xca54eb95e7fb935d08e1e49, + limb2: 0x25c558909e8ce210, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x8e664fa05e7f5ede7cfb02fb, - limb1: 0x62dfc131c91e4fc2b6da22ae, - limb2: 0x1ecdd489315918aa, + limb0: 0xa2877a17d6822fdbec0a419a, + limb1: 0xff617440635bbeae917acf03, + limb2: 0x302aa8c0c25edf9c, limb3: 0x0 }, r0a1: u384 { - limb0: 0x6614d951eeca327821c19fd5, - limb1: 0xe8b5ce5a58672ab928a25112, - limb2: 0x1170ab171aa3ff6e, + limb0: 0xa0509fbe6fedb1a1d6bc0fa0, + limb1: 0xb6f674c844db3046d0228a67, + limb2: 0x275d1093fe789296, limb3: 0x0 }, r1a0: u384 { - limb0: 0x818c3365e585a39c412a247f, - limb1: 0xf68f77ea4401cb35fe567a44, - limb2: 0x873832857ddcf10, + limb0: 0x252b1469a10bf6c0e8441f2e, + limb1: 0xe3f275f7dc0d10062fa24067, + limb2: 0x5938d22b9b86d1f, limb3: 0x0 }, r1a1: u384 { - limb0: 0x18efe1f8384648ac5d5a82ed, - limb1: 0x79acf0faee8d4b753a9bcff0, - limb2: 0x905c021efd6c69e, + limb0: 0xfb5f636c62c36f78c5062f30, + limb1: 0x150a99ab14007914780e49f1, + limb2: 0x9e0bccb105b14f4, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x8e664fa05e7f5ede7cfb02fb, - limb1: 0x62dfc131c91e4fc2b6da22ae, - limb2: 0x1ecdd489315918aa, + limb0: 0xa2877a17d6822fdbec0a419a, + limb1: 0xff617440635bbeae917acf03, + limb2: 0x302aa8c0c25edf9c, limb3: 0x0 }, r0a1: u384 { - limb0: 0x6614d951eeca327821c19fd5, - limb1: 0xe8b5ce5a58672ab928a25112, - limb2: 0x1170ab171aa3ff6e, + limb0: 0xa0509fbe6fedb1a1d6bc0fa0, + limb1: 0xb6f674c844db3046d0228a67, + limb2: 0x275d1093fe789296, limb3: 0x0 }, r1a0: u384 { - limb0: 0x818c3365e585a39c412a247f, - limb1: 0xf68f77ea4401cb35fe567a44, - limb2: 0x873832857ddcf10, + limb0: 0x252b1469a10bf6c0e8441f2e, + limb1: 0xe3f275f7dc0d10062fa24067, + limb2: 0x5938d22b9b86d1f, limb3: 0x0 }, r1a1: u384 { - limb0: 0x18efe1f8384648ac5d5a82ed, - limb1: 0x79acf0faee8d4b753a9bcff0, - limb2: 0x905c021efd6c69e, + limb0: 0xfb5f636c62c36f78c5062f30, + limb1: 0x150a99ab14007914780e49f1, + limb2: 0x9e0bccb105b14f4, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xa23e10fe018708686f7ab6ea, - limb1: 0xf4de9163e7f050d497fffc3b, - limb2: 0x16364013c82cc163, + limb0: 0xc5eaebad6bd5beb92e09aade, + limb1: 0xcbd48c7eb96beac635eddee1, + limb2: 0x6b94aae5ea30073, limb3: 0x0 }, r0a1: u384 { - limb0: 0xa7809edeeff03df4f2f72db, - limb1: 0x9f6f6a8abd601eb21ed8c5cc, - limb2: 0x1f547bcdf1f953b5, + limb0: 0x882af1093bd174803a58f378, + limb1: 0x9ec588e092fc5b155ebeec2e, + limb2: 0x1ca1957381eeeaf6, limb3: 0x0 }, r1a0: u384 { - limb0: 0xb967dfd1953d807eaf5f0b1b, - limb1: 0xac664dd102452fe545900abe, - limb2: 0x1077bbed7ecdeaae, + limb0: 0x85f75492a545f601ebdaeca3, + limb1: 0xb76104e8575174401e8c88d3, + limb2: 0x2f386789cd7045e0, limb3: 0x0 }, r1a1: u384 { - limb0: 0xb384ceb444ccf19e4370e186, - limb1: 0xc65a12148e38c9afb80d7ace, - limb2: 0x285df3d095d265a0, + limb0: 0x21695ebadab2d91e4fdb6459, + limb1: 0x76f7be32767094c83713ad27, + limb2: 0x11f63fe7a6d180b6, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x690996d0b646eaf407bf6f54, - limb1: 0x26f1d511ca7854b55277f654, - limb2: 0x27a3422f18ad70fa, + limb0: 0xbff947921ed15906d7d1a15d, + limb1: 0x801c1b9c79563f2e5bce21e1, + limb2: 0x956f2ac3e4fe88a, limb3: 0x0 }, r0a1: u384 { - limb0: 0x6efeb9e54412b96a8622b83, - limb1: 0x57fb282608c3ca52ed9f44d8, - limb2: 0x28dd55967621f290, + limb0: 0x5b2798f11186aa7db5373cdd, + limb1: 0xa5023b2f0c8bab4ec100bf18, + limb2: 0x13a0cace49d5eade, limb3: 0x0 }, r1a0: u384 { - limb0: 0x39d3a134532eb4f59722fcc1, - limb1: 0xc06af27745d654eb6ed8de1a, - limb2: 0xdbd4dd1723b710d, + limb0: 0x9b0527939d6c45e657273a85, + limb1: 0x76cb75e8dc534ecd7e917521, + limb2: 0x12e40c7aed42af34, limb3: 0x0 }, r1a1: u384 { - limb0: 0xde486b231ceb964717e5d1c6, - limb1: 0xa1a396599ef4790a3455ad46, - limb2: 0x13fe27a46569be54, + limb0: 0x77da98dd73c9603932b79af4, + limb1: 0xfaac3a02aea7867b5226fa70, + limb2: 0x8e2f40461279814, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xa23e10fe018708686f7ab6ea, - limb1: 0xf4de9163e7f050d497fffc3b, - limb2: 0x16364013c82cc163, + limb0: 0xc5eaebad6bd5beb92e09aade, + limb1: 0xcbd48c7eb96beac635eddee1, + limb2: 0x6b94aae5ea30073, limb3: 0x0 }, r0a1: u384 { - limb0: 0xa7809edeeff03df4f2f72db, - limb1: 0x9f6f6a8abd601eb21ed8c5cc, - limb2: 0x1f547bcdf1f953b5, + limb0: 0x882af1093bd174803a58f378, + limb1: 0x9ec588e092fc5b155ebeec2e, + limb2: 0x1ca1957381eeeaf6, limb3: 0x0 }, r1a0: u384 { - limb0: 0xb967dfd1953d807eaf5f0b1b, - limb1: 0xac664dd102452fe545900abe, - limb2: 0x1077bbed7ecdeaae, + limb0: 0x85f75492a545f601ebdaeca3, + limb1: 0xb76104e8575174401e8c88d3, + limb2: 0x2f386789cd7045e0, limb3: 0x0 }, r1a1: u384 { - limb0: 0xb384ceb444ccf19e4370e186, - limb1: 0xc65a12148e38c9afb80d7ace, - limb2: 0x285df3d095d265a0, + limb0: 0x21695ebadab2d91e4fdb6459, + limb1: 0x76f7be32767094c83713ad27, + limb2: 0x11f63fe7a6d180b6, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x690996d0b646eaf407bf6f54, - limb1: 0x26f1d511ca7854b55277f654, - limb2: 0x27a3422f18ad70fa, + limb0: 0xbff947921ed15906d7d1a15d, + limb1: 0x801c1b9c79563f2e5bce21e1, + limb2: 0x956f2ac3e4fe88a, limb3: 0x0 }, r0a1: u384 { - limb0: 0x6efeb9e54412b96a8622b83, - limb1: 0x57fb282608c3ca52ed9f44d8, - limb2: 0x28dd55967621f290, + limb0: 0x5b2798f11186aa7db5373cdd, + limb1: 0xa5023b2f0c8bab4ec100bf18, + limb2: 0x13a0cace49d5eade, limb3: 0x0 }, r1a0: u384 { - limb0: 0x39d3a134532eb4f59722fcc1, - limb1: 0xc06af27745d654eb6ed8de1a, - limb2: 0xdbd4dd1723b710d, + limb0: 0x9b0527939d6c45e657273a85, + limb1: 0x76cb75e8dc534ecd7e917521, + limb2: 0x12e40c7aed42af34, limb3: 0x0 }, r1a1: u384 { - limb0: 0xde486b231ceb964717e5d1c6, - limb1: 0xa1a396599ef4790a3455ad46, - limb2: 0x13fe27a46569be54, + limb0: 0x77da98dd73c9603932b79af4, + limb1: 0xfaac3a02aea7867b5226fa70, + limb2: 0x8e2f40461279814, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xddea045cd850573be3504682, - limb1: 0x6f8e8ae64d4947a018d5f181, - limb2: 0x271787d2abc68be7, + limb0: 0xac907bc1f092e5e0913e845c, + limb1: 0x5964ee4cf6c9a38642dd0517, + limb2: 0x1719e7b29682420d, limb3: 0x0 }, r0a1: u384 { - limb0: 0x7b5f6844ddf95699c2a00029, - limb1: 0xa34d6ad24d8abd8bc8253f78, - limb2: 0x2f92b8df6f318466, + limb0: 0x74d7d423222f8b95733071c5, + limb1: 0x86f3c3861a5f4d9c59281db1, + limb2: 0x2e4ed8b13095cb38, limb3: 0x0 }, r1a0: u384 { - limb0: 0xcd4474d3da10996bf06e7404, - limb1: 0x544adc4656c5f0d168c3e1ba, - limb2: 0x2ca2cb8dee591a68, + limb0: 0x4967b22d6ffa060c3d0f2c5f, + limb1: 0x48dc68663059b322a3bdeaa4, + limb2: 0x166e533bd057aeaf, limb3: 0x0 }, r1a1: u384 { - limb0: 0x70e507d2478cbd16a391a341, - limb1: 0x7cb8c9e8911e0f49a7c5e5bd, - limb2: 0x2a2b00b9c7889871, + limb0: 0xcdd096c0af346e40e770fa2b, + limb1: 0x6a8d2b8bc4369ae60bcd1a63, + limb2: 0x2fd98e44a782d9d9, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xddea045cd850573be3504682, - limb1: 0x6f8e8ae64d4947a018d5f181, - limb2: 0x271787d2abc68be7, + limb0: 0xac907bc1f092e5e0913e845c, + limb1: 0x5964ee4cf6c9a38642dd0517, + limb2: 0x1719e7b29682420d, limb3: 0x0 }, r0a1: u384 { - limb0: 0x7b5f6844ddf95699c2a00029, - limb1: 0xa34d6ad24d8abd8bc8253f78, - limb2: 0x2f92b8df6f318466, + limb0: 0x74d7d423222f8b95733071c5, + limb1: 0x86f3c3861a5f4d9c59281db1, + limb2: 0x2e4ed8b13095cb38, limb3: 0x0 }, r1a0: u384 { - limb0: 0xcd4474d3da10996bf06e7404, - limb1: 0x544adc4656c5f0d168c3e1ba, - limb2: 0x2ca2cb8dee591a68, + limb0: 0x4967b22d6ffa060c3d0f2c5f, + limb1: 0x48dc68663059b322a3bdeaa4, + limb2: 0x166e533bd057aeaf, limb3: 0x0 }, r1a1: u384 { - limb0: 0x70e507d2478cbd16a391a341, - limb1: 0x7cb8c9e8911e0f49a7c5e5bd, - limb2: 0x2a2b00b9c7889871, + limb0: 0xcdd096c0af346e40e770fa2b, + limb1: 0x6a8d2b8bc4369ae60bcd1a63, + limb2: 0x2fd98e44a782d9d9, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xe3611bbe524faee0334405bd, - limb1: 0xcb0690d6c9a15740156f41d, - limb2: 0x1e8d43baecc3fd68, + limb0: 0xcae2854ff6a3816300716e11, + limb1: 0x24542ac4d609ab52f57a1cf6, + limb2: 0x130bee99db1c1a6, limb3: 0x0 }, r0a1: u384 { - limb0: 0xea561cdabd28d67c9dfcd3, - limb1: 0x837c6f69d4fc9596ca6a99bf, - limb2: 0x1738826fcf15bbe8, + limb0: 0x7a097fcb199569eb2020a518, + limb1: 0xc59e26079797276de74d2710, + limb2: 0x205de761540e71f0, limb3: 0x0 }, r1a0: u384 { - limb0: 0x91810cd611b2084ace3306, - limb1: 0x4eb16b6f8a592fbe87adf69b, - limb2: 0x19a6bdbc72a66dae, + limb0: 0xaa1ad54be641d1006740583, + limb1: 0x3b2a9d3fc0122931ae274736, + limb2: 0xbe53b90a6b0a84e, limb3: 0x0 }, r1a1: u384 { - limb0: 0x8681686d7329bde083f6258a, - limb1: 0x4eb81c6aecd39e66e198d4a4, - limb2: 0x255f89e45f518198, + limb0: 0xd74fcd1e68f4e37eb864c664, + limb1: 0x148c5cb80d01f6a428be16e8, + limb2: 0x12f83a1b869c2d94, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xe3611bbe524faee0334405bd, - limb1: 0xcb0690d6c9a15740156f41d, - limb2: 0x1e8d43baecc3fd68, + limb0: 0xcae2854ff6a3816300716e11, + limb1: 0x24542ac4d609ab52f57a1cf6, + limb2: 0x130bee99db1c1a6, limb3: 0x0 }, r0a1: u384 { - limb0: 0xea561cdabd28d67c9dfcd3, - limb1: 0x837c6f69d4fc9596ca6a99bf, - limb2: 0x1738826fcf15bbe8, + limb0: 0x7a097fcb199569eb2020a518, + limb1: 0xc59e26079797276de74d2710, + limb2: 0x205de761540e71f0, limb3: 0x0 }, r1a0: u384 { - limb0: 0x91810cd611b2084ace3306, - limb1: 0x4eb16b6f8a592fbe87adf69b, - limb2: 0x19a6bdbc72a66dae, + limb0: 0xaa1ad54be641d1006740583, + limb1: 0x3b2a9d3fc0122931ae274736, + limb2: 0xbe53b90a6b0a84e, limb3: 0x0 }, r1a1: u384 { - limb0: 0x8681686d7329bde083f6258a, - limb1: 0x4eb81c6aecd39e66e198d4a4, - limb2: 0x255f89e45f518198, + limb0: 0xd74fcd1e68f4e37eb864c664, + limb1: 0x148c5cb80d01f6a428be16e8, + limb2: 0x12f83a1b869c2d94, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x3699a8d7719a7c5791e710e6, - limb1: 0xb86da2c6b71d4b7ff35349a5, - limb2: 0x2d731aaaa08cc2ac, + limb0: 0xc45d014325b07ba0dd2d4f10, + limb1: 0x361ef3f040192c17167b900c, + limb2: 0xf09fdc89e100ba7, limb3: 0x0 }, r0a1: u384 { - limb0: 0x6823a24c85c56011d96453f4, - limb1: 0xcf08d4b3bcadbc2784905e90, - limb2: 0x908667b566a1c24, + limb0: 0x19de05e48711d6d787de58a5, + limb1: 0x52290b2ee0a6dae953c249cf, + limb2: 0xf136a05d822f41d, limb3: 0x0 }, r1a0: u384 { - limb0: 0x7a5718fd0cfd5d7b61fa2d1d, - limb1: 0xf5dc8aded3909da75f25b861, - limb2: 0x5ed96e9d996fd7a, + limb0: 0x17b39f9e05d9816d69d3a613, + limb1: 0x643e9006b7b05faa90e6a8, + limb2: 0x20e7d1e6a4c0547c, limb3: 0x0 }, r1a1: u384 { - limb0: 0xf3b844b7d8c1ba8cf1f735b9, - limb1: 0xa97b3393f50b3ce1c963d86f, - limb2: 0x3e99ba8a608e244, + limb0: 0x2fee0ea45053ae644c4e684f, + limb1: 0xbb2e7afad484141b0be42479, + limb2: 0x187df546a9ccfb69, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xf75f20209d792946d3520d98, - limb1: 0x8ddce9725b9767fe189dbf96, - limb2: 0x1eb3d21c45a9133b, + limb0: 0xada5bca8b46adc829ca20edf, + limb1: 0xa9cc28a9116efbf02609e3f2, + limb2: 0xaedc7dd73b536f3, limb3: 0x0 }, r0a1: u384 { - limb0: 0x521a418f35215e026ef54b1e, - limb1: 0x1d1a380ad7ea05086ac1e991, - limb2: 0x1aa0f18109eb9c3d, + limb0: 0xab9510ead48ad195261ddc88, + limb1: 0xc202a7ba9dfce6d86664504e, + limb2: 0x2ce423186cc9b5a9, limb3: 0x0 }, r1a0: u384 { - limb0: 0x92b2eda543e4aec9e273f78, - limb1: 0x9bfe94e3c2b72c83181f495, - limb2: 0x2c37b79fa20fb6d2, + limb0: 0x8f2b148f9ab7585ea1a6c347, + limb1: 0x508884251415af912a5d0a42, + limb2: 0x1dbbf26d101af06d, limb3: 0x0 }, r1a1: u384 { - limb0: 0x20d1220edb200d9fe811001e, - limb1: 0xc278de7134c643d286550621, - limb2: 0x270ad4d9150b3b92, + limb0: 0x68b9f7cab6f91619604f8061, + limb1: 0xd94ab22c8f954516f2d2de81, + limb2: 0x16aa4a653b525fb1, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x3699a8d7719a7c5791e710e6, - limb1: 0xb86da2c6b71d4b7ff35349a5, - limb2: 0x2d731aaaa08cc2ac, + limb0: 0xc45d014325b07ba0dd2d4f10, + limb1: 0x361ef3f040192c17167b900c, + limb2: 0xf09fdc89e100ba7, limb3: 0x0 }, r0a1: u384 { - limb0: 0x6823a24c85c56011d96453f4, - limb1: 0xcf08d4b3bcadbc2784905e90, - limb2: 0x908667b566a1c24, + limb0: 0x19de05e48711d6d787de58a5, + limb1: 0x52290b2ee0a6dae953c249cf, + limb2: 0xf136a05d822f41d, limb3: 0x0 }, r1a0: u384 { - limb0: 0x7a5718fd0cfd5d7b61fa2d1d, - limb1: 0xf5dc8aded3909da75f25b861, - limb2: 0x5ed96e9d996fd7a, + limb0: 0x17b39f9e05d9816d69d3a613, + limb1: 0x643e9006b7b05faa90e6a8, + limb2: 0x20e7d1e6a4c0547c, limb3: 0x0 }, r1a1: u384 { - limb0: 0xf3b844b7d8c1ba8cf1f735b9, - limb1: 0xa97b3393f50b3ce1c963d86f, - limb2: 0x3e99ba8a608e244, + limb0: 0x2fee0ea45053ae644c4e684f, + limb1: 0xbb2e7afad484141b0be42479, + limb2: 0x187df546a9ccfb69, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xf75f20209d792946d3520d98, - limb1: 0x8ddce9725b9767fe189dbf96, - limb2: 0x1eb3d21c45a9133b, + limb0: 0xada5bca8b46adc829ca20edf, + limb1: 0xa9cc28a9116efbf02609e3f2, + limb2: 0xaedc7dd73b536f3, limb3: 0x0 }, r0a1: u384 { - limb0: 0x521a418f35215e026ef54b1e, - limb1: 0x1d1a380ad7ea05086ac1e991, - limb2: 0x1aa0f18109eb9c3d, + limb0: 0xab9510ead48ad195261ddc88, + limb1: 0xc202a7ba9dfce6d86664504e, + limb2: 0x2ce423186cc9b5a9, limb3: 0x0 }, r1a0: u384 { - limb0: 0x92b2eda543e4aec9e273f78, - limb1: 0x9bfe94e3c2b72c83181f495, - limb2: 0x2c37b79fa20fb6d2, + limb0: 0x8f2b148f9ab7585ea1a6c347, + limb1: 0x508884251415af912a5d0a42, + limb2: 0x1dbbf26d101af06d, limb3: 0x0 }, r1a1: u384 { - limb0: 0x20d1220edb200d9fe811001e, - limb1: 0xc278de7134c643d286550621, - limb2: 0x270ad4d9150b3b92, + limb0: 0x68b9f7cab6f91619604f8061, + limb1: 0xd94ab22c8f954516f2d2de81, + limb2: 0x16aa4a653b525fb1, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x16431de82060a9426f311690, - limb1: 0x6d67abfaa014b56eb5de65f1, - limb2: 0x7f0a14cb34687f4, + limb0: 0xc4a85cff6912d5bfd21136b3, + limb1: 0x34488d83eff390d6a141392c, + limb2: 0xdd68be1560fdaae, limb3: 0x0 }, r0a1: u384 { - limb0: 0xe9b6977a1eccf78d65775390, - limb1: 0x66209f8852e92397c5582a6a, - limb2: 0x223ebb9296dd0c85, + limb0: 0x25abfb1fa590f9ccb71b8e0, + limb1: 0x43c63f304c5602ef9de96df6, + limb2: 0x21e65c606ce32d5a, limb3: 0x0 }, r1a0: u384 { - limb0: 0x831fd9c5f80d5697211bcc14, - limb1: 0x8a27c6866e5836aad245b82b, - limb2: 0x7898f014b8b2a3a, + limb0: 0x6e4626b5e644b7a440e1b381, + limb1: 0xa29ef58cc4acec20c08690c, + limb2: 0x1eca054ddf87b2a4, limb3: 0x0 }, r1a1: u384 { - limb0: 0x96062b42f8d5d1793782192a, - limb1: 0x1f4a0382abc98e7b3d0ac871, - limb2: 0xdedd45424206f73, + limb0: 0xc220eeaf9d6200717abc6724, + limb1: 0x702fffe80bce126803560a40, + limb2: 0x2e0f90625bd64073, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x16431de82060a9426f311690, - limb1: 0x6d67abfaa014b56eb5de65f1, - limb2: 0x7f0a14cb34687f4, + limb0: 0xc4a85cff6912d5bfd21136b3, + limb1: 0x34488d83eff390d6a141392c, + limb2: 0xdd68be1560fdaae, limb3: 0x0 }, r0a1: u384 { - limb0: 0xe9b6977a1eccf78d65775390, - limb1: 0x66209f8852e92397c5582a6a, - limb2: 0x223ebb9296dd0c85, + limb0: 0x25abfb1fa590f9ccb71b8e0, + limb1: 0x43c63f304c5602ef9de96df6, + limb2: 0x21e65c606ce32d5a, limb3: 0x0 }, r1a0: u384 { - limb0: 0x831fd9c5f80d5697211bcc14, - limb1: 0x8a27c6866e5836aad245b82b, - limb2: 0x7898f014b8b2a3a, + limb0: 0x6e4626b5e644b7a440e1b381, + limb1: 0xa29ef58cc4acec20c08690c, + limb2: 0x1eca054ddf87b2a4, limb3: 0x0 }, r1a1: u384 { - limb0: 0x96062b42f8d5d1793782192a, - limb1: 0x1f4a0382abc98e7b3d0ac871, - limb2: 0xdedd45424206f73, + limb0: 0xc220eeaf9d6200717abc6724, + limb1: 0x702fffe80bce126803560a40, + limb2: 0x2e0f90625bd64073, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xa262230612ad62c6c245b370, - limb1: 0xe2ff7e2dbdc173d82c280d05, - limb2: 0xd16665430b03529, + limb0: 0x59f254cb97c8a519e0461a6, + limb1: 0xb4542e9c6bb21b7d9648e1d4, + limb2: 0x22dc33964ee2947b, limb3: 0x0 }, r0a1: u384 { - limb0: 0x69f0beaf1d31961f29cc516b, - limb1: 0x25756321b7db9f3005f8dfc6, - limb2: 0x1c61f26ac52d0e0b, + limb0: 0x5e83c2931befc562e4c93cee, + limb1: 0x675b3e97b43eba3f75101885, + limb2: 0x11d20ed3321c48f, limb3: 0x0 }, r1a0: u384 { - limb0: 0x7d3430d8e3c5e5ae047c0145, - limb1: 0xbd72ec637a860e7a4eb060bb, - limb2: 0x2c9b6965deebcd71, + limb0: 0x11e5d20e996d12471ceb3541, + limb1: 0x229064d01b397b4af809e840, + limb2: 0x21834a1301ac5984, limb3: 0x0 }, r1a1: u384 { - limb0: 0xaf91ce3ce5ca1b629a1f426e, - limb1: 0x6b80651ae4db3970e5620a3d, - limb2: 0x27bb47c88e2b4352, + limb0: 0xbe43cdde5117c697882c850f, + limb1: 0x1bc4151048af9bbd27f7e82a, + limb2: 0x2501d9aca420d21e, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xf269a5643d9a78ab572be28b, - limb1: 0xb378d1081a07c70d18ade4b5, - limb2: 0x386a1add22a7ba0, + limb0: 0x134b53d15a50fc2bed6d2f3d, + limb1: 0xd4f8c40bf294c7e18346462d, + limb2: 0x1aad2161b8c9e68e, limb3: 0x0 }, r0a1: u384 { - limb0: 0x651d236f73b5e8cdd67777b, - limb1: 0x65b9035b0a58d30a8c8dafa1, - limb2: 0x6a9775aa2d4b37d, + limb0: 0x88262244e0b154b0ca5b5d9a, + limb1: 0xd288b3c01ba5c293f8c800f8, + limb2: 0xf0ac20574e1aede, limb3: 0x0 }, r1a0: u384 { - limb0: 0x7bc77821c842ecb6747cd524, - limb1: 0x60ea506003723c9c92f5f656, - limb2: 0x7161213e4971f52, + limb0: 0xe5373b9b81964332b6771878, + limb1: 0x80e60988bd2e9de7f4395ae6, + limb2: 0x2e916f6959fa27f0, limb3: 0x0 }, r1a1: u384 { - limb0: 0xef50c1e4d1bdad64fef92647, - limb1: 0xf6f656aca3326720b92bd304, - limb2: 0x13329fa4c21daa56, + limb0: 0x3f67c739560ef94c04b58369, + limb1: 0x1ee07a68fb111967cd5b15b8, + limb2: 0x1b7e48fae034571, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xa262230612ad62c6c245b370, - limb1: 0xe2ff7e2dbdc173d82c280d05, - limb2: 0xd16665430b03529, + limb0: 0x59f254cb97c8a519e0461a6, + limb1: 0xb4542e9c6bb21b7d9648e1d4, + limb2: 0x22dc33964ee2947b, limb3: 0x0 }, r0a1: u384 { - limb0: 0x69f0beaf1d31961f29cc516b, - limb1: 0x25756321b7db9f3005f8dfc6, - limb2: 0x1c61f26ac52d0e0b, + limb0: 0x5e83c2931befc562e4c93cee, + limb1: 0x675b3e97b43eba3f75101885, + limb2: 0x11d20ed3321c48f, limb3: 0x0 }, r1a0: u384 { - limb0: 0x7d3430d8e3c5e5ae047c0145, - limb1: 0xbd72ec637a860e7a4eb060bb, - limb2: 0x2c9b6965deebcd71, + limb0: 0x11e5d20e996d12471ceb3541, + limb1: 0x229064d01b397b4af809e840, + limb2: 0x21834a1301ac5984, limb3: 0x0 }, r1a1: u384 { - limb0: 0xaf91ce3ce5ca1b629a1f426e, - limb1: 0x6b80651ae4db3970e5620a3d, - limb2: 0x27bb47c88e2b4352, + limb0: 0xbe43cdde5117c697882c850f, + limb1: 0x1bc4151048af9bbd27f7e82a, + limb2: 0x2501d9aca420d21e, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xf269a5643d9a78ab572be28b, - limb1: 0xb378d1081a07c70d18ade4b5, - limb2: 0x386a1add22a7ba0, + limb0: 0x134b53d15a50fc2bed6d2f3d, + limb1: 0xd4f8c40bf294c7e18346462d, + limb2: 0x1aad2161b8c9e68e, limb3: 0x0 }, r0a1: u384 { - limb0: 0x651d236f73b5e8cdd67777b, - limb1: 0x65b9035b0a58d30a8c8dafa1, - limb2: 0x6a9775aa2d4b37d, + limb0: 0x88262244e0b154b0ca5b5d9a, + limb1: 0xd288b3c01ba5c293f8c800f8, + limb2: 0xf0ac20574e1aede, limb3: 0x0 }, r1a0: u384 { - limb0: 0x7bc77821c842ecb6747cd524, - limb1: 0x60ea506003723c9c92f5f656, - limb2: 0x7161213e4971f52, + limb0: 0xe5373b9b81964332b6771878, + limb1: 0x80e60988bd2e9de7f4395ae6, + limb2: 0x2e916f6959fa27f0, limb3: 0x0 }, r1a1: u384 { - limb0: 0xef50c1e4d1bdad64fef92647, - limb1: 0xf6f656aca3326720b92bd304, - limb2: 0x13329fa4c21daa56, + limb0: 0x3f67c739560ef94c04b58369, + limb1: 0x1ee07a68fb111967cd5b15b8, + limb2: 0x1b7e48fae034571, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x942673ca238487ed3b22fb50, - limb1: 0x5af092ba43a3e297350cd531, - limb2: 0xa573c5226515bdb, + limb0: 0x65bb9e7438a232dad6eb7f96, + limb1: 0x5cf05222319fe00305afe0bf, + limb2: 0x1c6d87b3a5aabb43, limb3: 0x0 }, r0a1: u384 { - limb0: 0xec40ffc31625cf5f6085e0e6, - limb1: 0x5bfed22374eb50e569737b98, - limb2: 0x3f64ca69238cc1b, + limb0: 0xb8e845bbd71aa9644432eaa6, + limb1: 0xcdbf988db0903b19b07b9f3, + limb2: 0x107ca76698ca0dcd, limb3: 0x0 }, r1a0: u384 { - limb0: 0x38f8142cfc226654a770d1de, - limb1: 0x98bf448e2ecd96da10ed251c, - limb2: 0x5abf8922cc23b40, + limb0: 0x5ba7979e387e50b016321956, + limb1: 0x2ee41a1e59ccbc1350611d32, + limb2: 0x11a3b7b762eec2c5, limb3: 0x0 }, r1a1: u384 { - limb0: 0x14d013181cfe91c0e6f4ae49, - limb1: 0xdb03fd34d832e093596fcbbe, - limb2: 0x341a5d6876f6e5, + limb0: 0xb3f5edfecf19d6f82799dd03, + limb1: 0xc0d095110dad9ebbefe29784, + limb2: 0x1f63c13501eeeaf5, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x942673ca238487ed3b22fb50, - limb1: 0x5af092ba43a3e297350cd531, - limb2: 0xa573c5226515bdb, + limb0: 0x65bb9e7438a232dad6eb7f96, + limb1: 0x5cf05222319fe00305afe0bf, + limb2: 0x1c6d87b3a5aabb43, limb3: 0x0 }, r0a1: u384 { - limb0: 0xec40ffc31625cf5f6085e0e6, - limb1: 0x5bfed22374eb50e569737b98, - limb2: 0x3f64ca69238cc1b, + limb0: 0xb8e845bbd71aa9644432eaa6, + limb1: 0xcdbf988db0903b19b07b9f3, + limb2: 0x107ca76698ca0dcd, limb3: 0x0 }, r1a0: u384 { - limb0: 0x38f8142cfc226654a770d1de, - limb1: 0x98bf448e2ecd96da10ed251c, - limb2: 0x5abf8922cc23b40, + limb0: 0x5ba7979e387e50b016321956, + limb1: 0x2ee41a1e59ccbc1350611d32, + limb2: 0x11a3b7b762eec2c5, limb3: 0x0 }, r1a1: u384 { - limb0: 0x14d013181cfe91c0e6f4ae49, - limb1: 0xdb03fd34d832e093596fcbbe, - limb2: 0x341a5d6876f6e5, + limb0: 0xb3f5edfecf19d6f82799dd03, + limb1: 0xc0d095110dad9ebbefe29784, + limb2: 0x1f63c13501eeeaf5, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x194355706d2de344f6574207, - limb1: 0x545ec95c51eabb05bf65881a, - limb2: 0x1f4765278dbda1ef, + limb0: 0xde29dd2c7147403100fa258c, + limb1: 0xbfc33c64aa2cdfd5f33f638d, + limb2: 0x139edaa5713a8a73, limb3: 0x0 }, r0a1: u384 { - limb0: 0x751fa7a73ae1a2b13769c980, - limb1: 0xc42f0c81de0ddb2f10809e8d, - limb2: 0x2a3b5e4ab24358a4, + limb0: 0x8de2a4556c0698bd62bdc91d, + limb1: 0x497ed1dffa7e70b6c15dad0c, + limb2: 0x2cd9650c8add9b02, limb3: 0x0 }, r1a0: u384 { - limb0: 0x4fd6811ac234145f07b86f81, - limb1: 0xe37e3ba41ae6462d8f35bff, - limb2: 0x5e6fe78e3976bbf, + limb0: 0x2357739dff7746f02bf5d5cd, + limb1: 0x37396bdbe70cf65e7f7ed43b, + limb2: 0x16571ebe2a0acf51, limb3: 0x0 }, r1a1: u384 { - limb0: 0x663a3886950b3475ab464ec3, - limb1: 0x3e3c252dd8e9a5c83b975a78, - limb2: 0x2c65dbb4c11eff0f, + limb0: 0x5df40d02171f3aa50f4f1b23, + limb1: 0x3d504cd9327215bf089595d0, + limb2: 0x2598b49390b4ab86, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x194355706d2de344f6574207, - limb1: 0x545ec95c51eabb05bf65881a, - limb2: 0x1f4765278dbda1ef, + limb0: 0xde29dd2c7147403100fa258c, + limb1: 0xbfc33c64aa2cdfd5f33f638d, + limb2: 0x139edaa5713a8a73, limb3: 0x0 }, r0a1: u384 { - limb0: 0x751fa7a73ae1a2b13769c980, - limb1: 0xc42f0c81de0ddb2f10809e8d, - limb2: 0x2a3b5e4ab24358a4, + limb0: 0x8de2a4556c0698bd62bdc91d, + limb1: 0x497ed1dffa7e70b6c15dad0c, + limb2: 0x2cd9650c8add9b02, limb3: 0x0 }, r1a0: u384 { - limb0: 0x4fd6811ac234145f07b86f81, - limb1: 0xe37e3ba41ae6462d8f35bff, - limb2: 0x5e6fe78e3976bbf, + limb0: 0x2357739dff7746f02bf5d5cd, + limb1: 0x37396bdbe70cf65e7f7ed43b, + limb2: 0x16571ebe2a0acf51, limb3: 0x0 }, r1a1: u384 { - limb0: 0x663a3886950b3475ab464ec3, - limb1: 0x3e3c252dd8e9a5c83b975a78, - limb2: 0x2c65dbb4c11eff0f, + limb0: 0x5df40d02171f3aa50f4f1b23, + limb1: 0x3d504cd9327215bf089595d0, + limb2: 0x2598b49390b4ab86, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xc32ecb4dc054beffbd5eb98d, - limb1: 0x4a9fbc133ad8a1e1ab3bb01f, - limb2: 0x2d9e501bd5a1aa52, + limb0: 0x4360e486f47a872ae0460f44, + limb1: 0x7bb35bfed6fcfcf8779029e1, + limb2: 0x1390b4c7cb6b52f1, limb3: 0x0 }, r0a1: u384 { - limb0: 0x9a007677819d291a4aa98432, - limb1: 0xd13b75d291bb36d436b9298d, - limb2: 0xd3862e541052272, + limb0: 0xa628a0a5b10cbbd6c74c24ee, + limb1: 0x7470f4707a0cc892ebefded7, + limb2: 0x1ff4ca8749a8104e, limb3: 0x0 }, r1a0: u384 { - limb0: 0xd450e799babc7dc723d47a67, - limb1: 0x2e9ed4da52d439343b3274de, - limb2: 0x237d0b40f2ab7905, + limb0: 0xff60a007ec6c8b1e83574f3d, + limb1: 0xce3526917a6268d71609c0a1, + limb2: 0x3016dc03227dad67, limb3: 0x0 }, r1a1: u384 { - limb0: 0x286fcfe9ce693b5a42cefe96, - limb1: 0xbca1c4a5ad71e8b42e0897cf, - limb2: 0x2d039891e4f200e5, + limb0: 0x3989e237ecb0bc27e6ad5d37, + limb1: 0x91acde41c342e92417210e02, + limb2: 0x2c602bf496b1e2b8, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x78edfc2dbca56dcc5d7cc8a0, - limb1: 0x491c6d2deede275b2cc4744e, - limb2: 0x1970ae45616f8af3, + limb0: 0x103a372c78fa5b2a67d01204, + limb1: 0x675f1cbc7aebe1140e8bed2a, + limb2: 0x2532e98456a291c3, limb3: 0x0 }, r0a1: u384 { - limb0: 0x1cb4cb585dd3804e2baf6cf7, - limb1: 0x5c5805c9f8544ed3544f6895, - limb2: 0x2ca58210ed759bb6, + limb0: 0xc0be03786bd147df08fa1ece, + limb1: 0x7878592e1699337b543a6fa2, + limb2: 0x9e2390310f5b3d7, limb3: 0x0 }, r1a0: u384 { - limb0: 0xb3269a6904999305051cdc07, - limb1: 0x73c3d2916a72621959cb43e3, - limb2: 0x299a7a173c60a9b1, + limb0: 0x6d973cc33a79ba068e6572ad, + limb1: 0xc2fddbd0c013d321cabfbf43, + limb2: 0x249b679f9a94f336, limb3: 0x0 }, r1a1: u384 { - limb0: 0x59f5a5738d210188f88d2a5d, - limb1: 0xe35bc17b34c0ad2c61daacc9, - limb2: 0x2857838cc42ba922, + limb0: 0xe20f26b34d3756b2b9519351, + limb1: 0xde793f45fed2b6ad4576aaf8, + limb2: 0x2cc11b280706670a, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xc32ecb4dc054beffbd5eb98d, - limb1: 0x4a9fbc133ad8a1e1ab3bb01f, - limb2: 0x2d9e501bd5a1aa52, + limb0: 0x4360e486f47a872ae0460f44, + limb1: 0x7bb35bfed6fcfcf8779029e1, + limb2: 0x1390b4c7cb6b52f1, limb3: 0x0 }, r0a1: u384 { - limb0: 0x9a007677819d291a4aa98432, - limb1: 0xd13b75d291bb36d436b9298d, - limb2: 0xd3862e541052272, + limb0: 0xa628a0a5b10cbbd6c74c24ee, + limb1: 0x7470f4707a0cc892ebefded7, + limb2: 0x1ff4ca8749a8104e, limb3: 0x0 }, r1a0: u384 { - limb0: 0xd450e799babc7dc723d47a67, - limb1: 0x2e9ed4da52d439343b3274de, - limb2: 0x237d0b40f2ab7905, + limb0: 0xff60a007ec6c8b1e83574f3d, + limb1: 0xce3526917a6268d71609c0a1, + limb2: 0x3016dc03227dad67, limb3: 0x0 }, r1a1: u384 { - limb0: 0x286fcfe9ce693b5a42cefe96, - limb1: 0xbca1c4a5ad71e8b42e0897cf, - limb2: 0x2d039891e4f200e5, + limb0: 0x3989e237ecb0bc27e6ad5d37, + limb1: 0x91acde41c342e92417210e02, + limb2: 0x2c602bf496b1e2b8, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x78edfc2dbca56dcc5d7cc8a0, - limb1: 0x491c6d2deede275b2cc4744e, - limb2: 0x1970ae45616f8af3, + limb0: 0x103a372c78fa5b2a67d01204, + limb1: 0x675f1cbc7aebe1140e8bed2a, + limb2: 0x2532e98456a291c3, limb3: 0x0 }, r0a1: u384 { - limb0: 0x1cb4cb585dd3804e2baf6cf7, - limb1: 0x5c5805c9f8544ed3544f6895, - limb2: 0x2ca58210ed759bb6, + limb0: 0xc0be03786bd147df08fa1ece, + limb1: 0x7878592e1699337b543a6fa2, + limb2: 0x9e2390310f5b3d7, limb3: 0x0 }, r1a0: u384 { - limb0: 0xb3269a6904999305051cdc07, - limb1: 0x73c3d2916a72621959cb43e3, - limb2: 0x299a7a173c60a9b1, + limb0: 0x6d973cc33a79ba068e6572ad, + limb1: 0xc2fddbd0c013d321cabfbf43, + limb2: 0x249b679f9a94f336, limb3: 0x0 }, r1a1: u384 { - limb0: 0x59f5a5738d210188f88d2a5d, - limb1: 0xe35bc17b34c0ad2c61daacc9, - limb2: 0x2857838cc42ba922, + limb0: 0xe20f26b34d3756b2b9519351, + limb1: 0xde793f45fed2b6ad4576aaf8, + limb2: 0x2cc11b280706670a, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xf13d6ebb7ce6b0e75281f86d, - limb1: 0x2ed15d12ad449a4bb8205897, - limb2: 0xbe87d044402d079, + limb0: 0x551986dc96f0443f7ac4ba73, + limb1: 0x78107a0c01ea8e3f9bd2e6fd, + limb2: 0x201da6796dee986f, limb3: 0x0 }, r0a1: u384 { - limb0: 0x3418ed08929079e062551d4b, - limb1: 0x3b05a43949cb7d801559671d, - limb2: 0x117ec96e0a18f77b, + limb0: 0xb29fe7d173b13e6ed7b96297, + limb1: 0x77342f3c7dfec27fe1753e85, + limb2: 0x1fa36d6151f8156e, limb3: 0x0 }, r1a0: u384 { - limb0: 0x475ebf1630cfef34e3b0a764, - limb1: 0xd63614a61b1fe6d84e9b3e52, - limb2: 0x1a4a61d799f042d7, + limb0: 0xcfbc59734fa247fead294d84, + limb1: 0x95cf28f410134c75494cc333, + limb2: 0x2fdd98603896fb30, limb3: 0x0 }, r1a1: u384 { - limb0: 0xd9908656627f2b20c7094e5e, - limb1: 0xd50f92366687febdc3af4791, - limb2: 0x135219ecc0ef7825, + limb0: 0x225b0b0fef9e6d36d471d78e, + limb1: 0x278c8534902d21f77aef3522, + limb2: 0xe42d7fa7de4d6c8, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xf13d6ebb7ce6b0e75281f86d, - limb1: 0x2ed15d12ad449a4bb8205897, - limb2: 0xbe87d044402d079, + limb0: 0x551986dc96f0443f7ac4ba73, + limb1: 0x78107a0c01ea8e3f9bd2e6fd, + limb2: 0x201da6796dee986f, limb3: 0x0 }, r0a1: u384 { - limb0: 0x3418ed08929079e062551d4b, - limb1: 0x3b05a43949cb7d801559671d, - limb2: 0x117ec96e0a18f77b, + limb0: 0xb29fe7d173b13e6ed7b96297, + limb1: 0x77342f3c7dfec27fe1753e85, + limb2: 0x1fa36d6151f8156e, limb3: 0x0 }, r1a0: u384 { - limb0: 0x475ebf1630cfef34e3b0a764, - limb1: 0xd63614a61b1fe6d84e9b3e52, - limb2: 0x1a4a61d799f042d7, + limb0: 0xcfbc59734fa247fead294d84, + limb1: 0x95cf28f410134c75494cc333, + limb2: 0x2fdd98603896fb30, limb3: 0x0 }, r1a1: u384 { - limb0: 0xd9908656627f2b20c7094e5e, - limb1: 0xd50f92366687febdc3af4791, - limb2: 0x135219ecc0ef7825, + limb0: 0x225b0b0fef9e6d36d471d78e, + limb1: 0x278c8534902d21f77aef3522, + limb2: 0xe42d7fa7de4d6c8, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xc0077633d98f7d7c8f185344, - limb1: 0xd3f6143d91493043bc0465b2, - limb2: 0x95faf66d5f5d00, + limb0: 0xd524080ad04473596afdaafb, + limb1: 0x9da4392d65be1f8372c18a53, + limb2: 0xbccb6baf45de67c, limb3: 0x0 }, r0a1: u384 { - limb0: 0xb11e96a1dd6ae09375616764, - limb1: 0x9d42d33c1099689cc7a79413, - limb2: 0x1c45c4a7b2361ad1, + limb0: 0x336813e1fb5e17e81b5b051b, + limb1: 0xe98e855ed4992521f93709a4, + limb2: 0x297b055bd5622a18, limb3: 0x0 }, r1a0: u384 { - limb0: 0xccc670fbe7abf9f6d9a8c0b7, - limb1: 0x49c72170bd63924663a5c586, - limb2: 0xa7c47438fd05ed4, + limb0: 0x2e761701f878006486dedec1, + limb1: 0x677ff8e5f6b82a95401407f, + limb2: 0x2f5725fecfef8317, limb3: 0x0 }, r1a1: u384 { - limb0: 0xdf8db572ffa98e34fe9bc77, - limb1: 0x57268643b4abe3418a9ee7e, - limb2: 0x3cc35d705856be, + limb0: 0x839358e9dd8ffc54f27fca9c, + limb1: 0xa4a0948db4162fdf44aee0f6, + limb2: 0x2849739e5c4e2ee3, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xc0077633d98f7d7c8f185344, - limb1: 0xd3f6143d91493043bc0465b2, - limb2: 0x95faf66d5f5d00, + limb0: 0xd524080ad04473596afdaafb, + limb1: 0x9da4392d65be1f8372c18a53, + limb2: 0xbccb6baf45de67c, limb3: 0x0 }, r0a1: u384 { - limb0: 0xb11e96a1dd6ae09375616764, - limb1: 0x9d42d33c1099689cc7a79413, - limb2: 0x1c45c4a7b2361ad1, + limb0: 0x336813e1fb5e17e81b5b051b, + limb1: 0xe98e855ed4992521f93709a4, + limb2: 0x297b055bd5622a18, limb3: 0x0 }, r1a0: u384 { - limb0: 0xccc670fbe7abf9f6d9a8c0b7, - limb1: 0x49c72170bd63924663a5c586, - limb2: 0xa7c47438fd05ed4, + limb0: 0x2e761701f878006486dedec1, + limb1: 0x677ff8e5f6b82a95401407f, + limb2: 0x2f5725fecfef8317, limb3: 0x0 }, r1a1: u384 { - limb0: 0xdf8db572ffa98e34fe9bc77, - limb1: 0x57268643b4abe3418a9ee7e, - limb2: 0x3cc35d705856be, + limb0: 0x839358e9dd8ffc54f27fca9c, + limb1: 0xa4a0948db4162fdf44aee0f6, + limb2: 0x2849739e5c4e2ee3, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x1b10a4608a18fa810199e87, - limb1: 0x85f9ed2600e05defb2b235aa, - limb2: 0x2979fbabcedc901b, + limb0: 0xc9cde220c427e6e795c276ea, + limb1: 0xf16a4bf65aa097b4b2102d3a, + limb2: 0x107f879bc0743525, limb3: 0x0 }, r0a1: u384 { - limb0: 0x281f98b422e2fde61a352844, - limb1: 0x986d3bb5381854111623a8c, - limb2: 0x1cc62b5f03fd0a23, + limb0: 0x5edbca4d3c47278b7e543edc, + limb1: 0xe6280d0a1160bc4062c712a2, + limb2: 0xd65ce18e50f6e9f, limb3: 0x0 }, r1a0: u384 { - limb0: 0x93008b95b66532212209a7c2, - limb1: 0x24071d3ba611252c2fcb7d21, - limb2: 0x248aa8af3aa2b4d1, + limb0: 0x922d89859e41d74f44066e94, + limb1: 0x92d65b7ea0039b0163ab463, + limb2: 0x233cfba3a88b3b44, limb3: 0x0 }, r1a1: u384 { - limb0: 0xa34a599aadb53f0dd2e02881, - limb1: 0xd3428dc23fbd1889a866b5bd, - limb2: 0x18989ee632ac50c6, + limb0: 0xbaceedcb5732d6a04a4a3ba2, + limb1: 0xe586d3e9d7583a9b9956674c, + limb2: 0x1b35c7bee23e7274, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x1b10a4608a18fa810199e87, - limb1: 0x85f9ed2600e05defb2b235aa, - limb2: 0x2979fbabcedc901b, + limb0: 0xc9cde220c427e6e795c276ea, + limb1: 0xf16a4bf65aa097b4b2102d3a, + limb2: 0x107f879bc0743525, limb3: 0x0 }, r0a1: u384 { - limb0: 0x281f98b422e2fde61a352844, - limb1: 0x986d3bb5381854111623a8c, - limb2: 0x1cc62b5f03fd0a23, + limb0: 0x5edbca4d3c47278b7e543edc, + limb1: 0xe6280d0a1160bc4062c712a2, + limb2: 0xd65ce18e50f6e9f, limb3: 0x0 }, r1a0: u384 { - limb0: 0x93008b95b66532212209a7c2, - limb1: 0x24071d3ba611252c2fcb7d21, - limb2: 0x248aa8af3aa2b4d1, + limb0: 0x922d89859e41d74f44066e94, + limb1: 0x92d65b7ea0039b0163ab463, + limb2: 0x233cfba3a88b3b44, limb3: 0x0 }, r1a1: u384 { - limb0: 0xa34a599aadb53f0dd2e02881, - limb1: 0xd3428dc23fbd1889a866b5bd, - limb2: 0x18989ee632ac50c6, + limb0: 0xbaceedcb5732d6a04a4a3ba2, + limb1: 0xe586d3e9d7583a9b9956674c, + limb2: 0x1b35c7bee23e7274, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xaa635ce26a4c53fb43293e08, - limb1: 0x15d59e06d05cad6de219f0e3, - limb2: 0x13fd657288072d4a, + limb0: 0x7dc2872c3517c1e449fc4122, + limb1: 0x705ab5ca7266a5ffa614625b, + limb2: 0x166c4d11551f6f6d, limb3: 0x0 }, r0a1: u384 { - limb0: 0x3a416ce4f2438553f669ea3b, - limb1: 0x63ef398abb57e75023256bb9, - limb2: 0x1a5d9ff40cefbc9a, + limb0: 0x492f67a4ba40719208859c1b, + limb1: 0x7a676c7fc4295e5aab645973, + limb2: 0x2d03ea35dec3ab5d, limb3: 0x0 }, r1a0: u384 { - limb0: 0x23aafa68695a26eb132103ca, - limb1: 0x571ddbe2ae50c1c1d7461919, - limb2: 0x1dd7e9d6ed8a2b41, + limb0: 0x529cb1e346af0b40e0e2e6b9, + limb1: 0xe42e697812ceb8a7c51f85b3, + limb2: 0x2b5f25393ba2c781, limb3: 0x0 }, r1a1: u384 { - limb0: 0xfabc574926d9b66307638b64, - limb1: 0x16acb1d45d79e6000b247427, - limb2: 0x2f0022fefa3d4b71, + limb0: 0x3d2f685444515b3441d54cee, + limb1: 0xed7dcc8e1781c6d4006bba3f, + limb2: 0x26f0fac3db26fe20, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xaa635ce26a4c53fb43293e08, - limb1: 0x15d59e06d05cad6de219f0e3, - limb2: 0x13fd657288072d4a, + limb0: 0x7dc2872c3517c1e449fc4122, + limb1: 0x705ab5ca7266a5ffa614625b, + limb2: 0x166c4d11551f6f6d, limb3: 0x0 }, r0a1: u384 { - limb0: 0x3a416ce4f2438553f669ea3b, - limb1: 0x63ef398abb57e75023256bb9, - limb2: 0x1a5d9ff40cefbc9a, + limb0: 0x492f67a4ba40719208859c1b, + limb1: 0x7a676c7fc4295e5aab645973, + limb2: 0x2d03ea35dec3ab5d, limb3: 0x0 }, r1a0: u384 { - limb0: 0x23aafa68695a26eb132103ca, - limb1: 0x571ddbe2ae50c1c1d7461919, - limb2: 0x1dd7e9d6ed8a2b41, + limb0: 0x529cb1e346af0b40e0e2e6b9, + limb1: 0xe42e697812ceb8a7c51f85b3, + limb2: 0x2b5f25393ba2c781, limb3: 0x0 }, r1a1: u384 { - limb0: 0xfabc574926d9b66307638b64, - limb1: 0x16acb1d45d79e6000b247427, - limb2: 0x2f0022fefa3d4b71, + limb0: 0x3d2f685444515b3441d54cee, + limb1: 0xed7dcc8e1781c6d4006bba3f, + limb2: 0x26f0fac3db26fe20, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x3eccc27f3eb4ba9c2f9e69c4, - limb1: 0xc77938764296dcc4c321bba5, - limb2: 0x21d11eac0eece6d3, + limb0: 0x1e691060b09334f4d4d11564, + limb1: 0xc2f23d460e32ab29aac9a462, + limb2: 0x1f52946e8ab57b9d, limb3: 0x0 }, r0a1: u384 { - limb0: 0x815e0ea86d7db7094e595101, - limb1: 0xc697f48792ce4f1c59daa70b, - limb2: 0x220427dee9800b75, + limb0: 0xb8f6cec3d46206bf11579e06, + limb1: 0x6b82224b4c502934276477ce, + limb2: 0x4263847a3546583, limb3: 0x0 }, r1a0: u384 { - limb0: 0xa8cfc8d05147a143ba2e15fa, - limb1: 0x4ac5c00f4fdf5f709b8fbc18, - limb2: 0x14d0c34d901d9aa7, + limb0: 0x3e02aba94130839fdfb531d3, + limb1: 0x89b37e5ce7cd94f86280b704, + limb2: 0x25f502760510099, limb3: 0x0 }, r1a1: u384 { - limb0: 0xbb8b013b165809bcdacc2d4f, - limb1: 0x8b70cea27bd285cd7cc3b65e, - limb2: 0x1faf2b3b26280177, + limb0: 0xef21ddf9cebf3491c94329fd, + limb1: 0xb2577ec6fa2817d5e8a2aaad, + limb2: 0x2e0a1cc9617d5d85, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x5787d39bd038333ffac4a713, - limb1: 0x28afba19f357ff4cf36284be, - limb2: 0x1097abea92f4be8, + limb0: 0x8ccc1f1b7b7c84a2fb81a4d1, + limb1: 0x1fd835bf3d332347a842499, + limb2: 0x105f1e2419d5da43, limb3: 0x0 }, r0a1: u384 { - limb0: 0x89d8567283ae0aa5a8e903af, - limb1: 0x24bb62cacaeeb5ab653c606c, - limb2: 0x2975a752881eed63, + limb0: 0xce0594565bc3f6746917fac1, + limb1: 0x10f45021d35f29b40306afa2, + limb2: 0x175b0196bc37d977, limb3: 0x0 }, r1a0: u384 { - limb0: 0x2bf0f62e45bb9cea083b2fc5, - limb1: 0x1c0cd814f0ddde3bd05ef70d, - limb2: 0x18cdeb1bd8e8ccb, + limb0: 0x3bfc77f3df29fdb7446275fd, + limb1: 0x761a984dcc263e2a7230a42c, + limb2: 0xdc47d8f8fd9a377, limb3: 0x0 }, r1a1: u384 { - limb0: 0x654ac1f6c2d1f1764c631ce3, - limb1: 0x5aa33b8260fb8d1b1bd684ee, - limb2: 0x9f6936bc1ea1895, + limb0: 0x5310a14e6b20a87bded6741b, + limb1: 0xaf75a4d44565ed067c32308e, + limb2: 0x1745ddfc2f0f2db5, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x3eccc27f3eb4ba9c2f9e69c4, - limb1: 0xc77938764296dcc4c321bba5, - limb2: 0x21d11eac0eece6d3, + limb0: 0x1e691060b09334f4d4d11564, + limb1: 0xc2f23d460e32ab29aac9a462, + limb2: 0x1f52946e8ab57b9d, limb3: 0x0 }, r0a1: u384 { - limb0: 0x815e0ea86d7db7094e595101, - limb1: 0xc697f48792ce4f1c59daa70b, - limb2: 0x220427dee9800b75, + limb0: 0xb8f6cec3d46206bf11579e06, + limb1: 0x6b82224b4c502934276477ce, + limb2: 0x4263847a3546583, limb3: 0x0 }, r1a0: u384 { - limb0: 0xa8cfc8d05147a143ba2e15fa, - limb1: 0x4ac5c00f4fdf5f709b8fbc18, - limb2: 0x14d0c34d901d9aa7, + limb0: 0x3e02aba94130839fdfb531d3, + limb1: 0x89b37e5ce7cd94f86280b704, + limb2: 0x25f502760510099, limb3: 0x0 }, r1a1: u384 { - limb0: 0xbb8b013b165809bcdacc2d4f, - limb1: 0x8b70cea27bd285cd7cc3b65e, - limb2: 0x1faf2b3b26280177, + limb0: 0xef21ddf9cebf3491c94329fd, + limb1: 0xb2577ec6fa2817d5e8a2aaad, + limb2: 0x2e0a1cc9617d5d85, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x5787d39bd038333ffac4a713, - limb1: 0x28afba19f357ff4cf36284be, - limb2: 0x1097abea92f4be8, + limb0: 0x8ccc1f1b7b7c84a2fb81a4d1, + limb1: 0x1fd835bf3d332347a842499, + limb2: 0x105f1e2419d5da43, limb3: 0x0 }, r0a1: u384 { - limb0: 0x89d8567283ae0aa5a8e903af, - limb1: 0x24bb62cacaeeb5ab653c606c, - limb2: 0x2975a752881eed63, + limb0: 0xce0594565bc3f6746917fac1, + limb1: 0x10f45021d35f29b40306afa2, + limb2: 0x175b0196bc37d977, limb3: 0x0 }, r1a0: u384 { - limb0: 0x2bf0f62e45bb9cea083b2fc5, - limb1: 0x1c0cd814f0ddde3bd05ef70d, - limb2: 0x18cdeb1bd8e8ccb, + limb0: 0x3bfc77f3df29fdb7446275fd, + limb1: 0x761a984dcc263e2a7230a42c, + limb2: 0xdc47d8f8fd9a377, limb3: 0x0 }, r1a1: u384 { - limb0: 0x654ac1f6c2d1f1764c631ce3, - limb1: 0x5aa33b8260fb8d1b1bd684ee, - limb2: 0x9f6936bc1ea1895, + limb0: 0x5310a14e6b20a87bded6741b, + limb1: 0xaf75a4d44565ed067c32308e, + limb2: 0x1745ddfc2f0f2db5, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x9b1811c19b69abaf39bb1630, - limb1: 0x7e90619b8fb9e5c323aa484d, - limb2: 0x24f869d3cbd26062, + limb0: 0x9002fa9c872aa1591cb2e83c, + limb1: 0x18092dea89807d07c96f5cee, + limb2: 0x5e775cc8d0e2333, limb3: 0x0 }, r0a1: u384 { - limb0: 0xd6b2f9e744f11f9017f2216b, - limb1: 0xa34b02195d328779fe5c97ef, - limb2: 0xe4e809577ed925e, + limb0: 0x6e55603f23c1e2f40ecbc3be, + limb1: 0x9ef6bba8f2ca071759eee99a, + limb2: 0x66cf6e10d463eb6, limb3: 0x0 }, r1a0: u384 { - limb0: 0xd1625347c366845c38dbabf4, - limb1: 0x2a9d77f8f01f5af82e4f8b03, - limb2: 0x26d2cb185cb54d23, + limb0: 0x30131216b55fd9bf4d2cbe86, + limb1: 0xbaa5fde208b9fceda4ed5946, + limb2: 0xdbb530576beae47, limb3: 0x0 }, r1a1: u384 { - limb0: 0x3ec1b310fec97a5c01339eba, - limb1: 0x4d044eb93e07d41c33e204f3, - limb2: 0x27903f0ec174af79, + limb0: 0xe09b26e7b2fe48a7f274d02d, + limb1: 0x9e41ae04207fa2eb5f641fed, + limb2: 0x511a273c2863628, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x9b1811c19b69abaf39bb1630, - limb1: 0x7e90619b8fb9e5c323aa484d, - limb2: 0x24f869d3cbd26062, + limb0: 0x9002fa9c872aa1591cb2e83c, + limb1: 0x18092dea89807d07c96f5cee, + limb2: 0x5e775cc8d0e2333, limb3: 0x0 }, r0a1: u384 { - limb0: 0xd6b2f9e744f11f9017f2216b, - limb1: 0xa34b02195d328779fe5c97ef, - limb2: 0xe4e809577ed925e, + limb0: 0x6e55603f23c1e2f40ecbc3be, + limb1: 0x9ef6bba8f2ca071759eee99a, + limb2: 0x66cf6e10d463eb6, limb3: 0x0 }, r1a0: u384 { - limb0: 0xd1625347c366845c38dbabf4, - limb1: 0x2a9d77f8f01f5af82e4f8b03, - limb2: 0x26d2cb185cb54d23, + limb0: 0x30131216b55fd9bf4d2cbe86, + limb1: 0xbaa5fde208b9fceda4ed5946, + limb2: 0xdbb530576beae47, limb3: 0x0 }, r1a1: u384 { - limb0: 0x3ec1b310fec97a5c01339eba, - limb1: 0x4d044eb93e07d41c33e204f3, - limb2: 0x27903f0ec174af79, + limb0: 0xe09b26e7b2fe48a7f274d02d, + limb1: 0x9e41ae04207fa2eb5f641fed, + limb2: 0x511a273c2863628, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x5889466085bbc3472482af48, - limb1: 0x7a64e477423697d5f887154b, - limb2: 0xb96f5d698cab4a1, + limb0: 0x9e446957265af1f6cdcb9e15, + limb1: 0x6c10753b3e38581919c0cc4d, + limb2: 0x3049507b97cd2ae3, limb3: 0x0 }, r0a1: u384 { - limb0: 0x447ee4352780de7bf626d7e7, - limb1: 0xabf3de709b6504e4a98fcb79, - limb2: 0x13cc3009c3f6d728, + limb0: 0x81d9c4ec56b0c577f646eb40, + limb1: 0x2e5a0918579e398c48776ad2, + limb2: 0x3d00590d1493ac8, limb3: 0x0 }, r1a0: u384 { - limb0: 0x133dced3910b3baa0fe5cd63, - limb1: 0x55092ddf1b0420aef3b4e395, - limb2: 0x16c26aa97d58546, + limb0: 0xa5ffc6ee3bc132f1681fe84f, + limb1: 0x6906fa22a16540a098a498a7, + limb2: 0xd23995e1c7ff58d, limb3: 0x0 }, r1a1: u384 { - limb0: 0x694169eac141359d06d790e6, - limb1: 0x10a3b5947b503bcbcc70c675, - limb2: 0x260e9c2c9089a3e6, + limb0: 0x99b1ea789cd8357bbc2d09d8, + limb1: 0x2fde0375bb34e500582e9729, + limb2: 0xfad5daa8506bc1, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xc3154bb4d496bd666ab1162d, - limb1: 0xc129f28d9fa87a58c9a671f8, - limb2: 0x1577d8e5af87d115, + limb0: 0xc627fa78d0f6604cfc6262bc, + limb1: 0x1a3f0695ff6e8412d1ea0eda, + limb2: 0x1b1754c1a9e0cea9, limb3: 0x0 }, r0a1: u384 { - limb0: 0xc41b336cf54948171e887d85, - limb1: 0xd85d1855a16b39617b12acdd, - limb2: 0x153581b806a018fe, + limb0: 0x8fbb7ca95e11dda5d5f44cc0, + limb1: 0xaab02dc7e290087c8d9224dc, + limb2: 0x4c39cf6e88ea4d8, limb3: 0x0 }, r1a0: u384 { - limb0: 0xeed76e2370e0e1bf07dd0508, - limb1: 0x32204fdac10285d3283f68c0, - limb2: 0x19a5d74ca5c4aec8, + limb0: 0x66b308f30b0a27dfb743a053, + limb1: 0xc24b32150e094160eb1e6e20, + limb2: 0x16091aac6ef81c7, limb3: 0x0 }, r1a1: u384 { - limb0: 0x12ca99abc7d494c4d2a76f28, - limb1: 0xc7b09da4d82c8bde825ad22f, - limb2: 0x28abc4ff887e9677, + limb0: 0x7e3aeab40b6fb8507a19662f, + limb1: 0x8fa259d1ce6d3db3ba6cbcd, + limb2: 0x2c175175b8686be5, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x5889466085bbc3472482af48, - limb1: 0x7a64e477423697d5f887154b, - limb2: 0xb96f5d698cab4a1, + limb0: 0x9e446957265af1f6cdcb9e15, + limb1: 0x6c10753b3e38581919c0cc4d, + limb2: 0x3049507b97cd2ae3, limb3: 0x0 }, r0a1: u384 { - limb0: 0x447ee4352780de7bf626d7e7, - limb1: 0xabf3de709b6504e4a98fcb79, - limb2: 0x13cc3009c3f6d728, + limb0: 0x81d9c4ec56b0c577f646eb40, + limb1: 0x2e5a0918579e398c48776ad2, + limb2: 0x3d00590d1493ac8, limb3: 0x0 }, r1a0: u384 { - limb0: 0x133dced3910b3baa0fe5cd63, - limb1: 0x55092ddf1b0420aef3b4e395, - limb2: 0x16c26aa97d58546, + limb0: 0xa5ffc6ee3bc132f1681fe84f, + limb1: 0x6906fa22a16540a098a498a7, + limb2: 0xd23995e1c7ff58d, limb3: 0x0 }, r1a1: u384 { - limb0: 0x694169eac141359d06d790e6, - limb1: 0x10a3b5947b503bcbcc70c675, - limb2: 0x260e9c2c9089a3e6, + limb0: 0x99b1ea789cd8357bbc2d09d8, + limb1: 0x2fde0375bb34e500582e9729, + limb2: 0xfad5daa8506bc1, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xc3154bb4d496bd666ab1162d, - limb1: 0xc129f28d9fa87a58c9a671f8, - limb2: 0x1577d8e5af87d115, + limb0: 0xc627fa78d0f6604cfc6262bc, + limb1: 0x1a3f0695ff6e8412d1ea0eda, + limb2: 0x1b1754c1a9e0cea9, limb3: 0x0 }, r0a1: u384 { - limb0: 0xc41b336cf54948171e887d85, - limb1: 0xd85d1855a16b39617b12acdd, - limb2: 0x153581b806a018fe, + limb0: 0x8fbb7ca95e11dda5d5f44cc0, + limb1: 0xaab02dc7e290087c8d9224dc, + limb2: 0x4c39cf6e88ea4d8, limb3: 0x0 }, r1a0: u384 { - limb0: 0xeed76e2370e0e1bf07dd0508, - limb1: 0x32204fdac10285d3283f68c0, - limb2: 0x19a5d74ca5c4aec8, + limb0: 0x66b308f30b0a27dfb743a053, + limb1: 0xc24b32150e094160eb1e6e20, + limb2: 0x16091aac6ef81c7, limb3: 0x0 }, r1a1: u384 { - limb0: 0x12ca99abc7d494c4d2a76f28, - limb1: 0xc7b09da4d82c8bde825ad22f, - limb2: 0x28abc4ff887e9677, + limb0: 0x7e3aeab40b6fb8507a19662f, + limb1: 0x8fa259d1ce6d3db3ba6cbcd, + limb2: 0x2c175175b8686be5, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x770a5cd52167600a1fc68c59, - limb1: 0x2590fd3f79fa6e7312f428e2, - limb2: 0x20b9b386ca9f106b, + limb0: 0x391e6f951049b131d70e651, + limb1: 0x5c0f54485e635304e14ce30e, + limb2: 0x221ee8dc68dde949, limb3: 0x0 }, r0a1: u384 { - limb0: 0xc1f47a37f223ea976a559664, - limb1: 0xfc3ed9f6da30c8606eb1bb99, - limb2: 0x8bafe1d0a0e3fc2, + limb0: 0xac8ba155c82a61103e2963c1, + limb1: 0x8559d1265b1f4418a886b3aa, + limb2: 0x140ce9c3c2eb5374, limb3: 0x0 }, r1a0: u384 { - limb0: 0x873cd60d69e71d3baf4b50b6, - limb1: 0xf7478b659ba7043066ed36fc, - limb2: 0x1aba57a5cfb313a2, + limb0: 0x73ebb164ba66b89f6ac09079, + limb1: 0x3699654a08147615c793b6b5, + limb2: 0xaa97a901c3147f3, limb3: 0x0 }, r1a1: u384 { - limb0: 0x1b2046e3f2a94d11f71d2573, - limb1: 0xce0af6ac2ea7b618e7bb5a8, - limb2: 0x147d8cd76974e2dd, + limb0: 0x9666d2cab8edbbffe6ede238, + limb1: 0xc28b607bd98c0f9789de1cb4, + limb2: 0xcb0f83e0497f81e, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x770a5cd52167600a1fc68c59, - limb1: 0x2590fd3f79fa6e7312f428e2, - limb2: 0x20b9b386ca9f106b, + limb0: 0x391e6f951049b131d70e651, + limb1: 0x5c0f54485e635304e14ce30e, + limb2: 0x221ee8dc68dde949, limb3: 0x0 }, r0a1: u384 { - limb0: 0xc1f47a37f223ea976a559664, - limb1: 0xfc3ed9f6da30c8606eb1bb99, - limb2: 0x8bafe1d0a0e3fc2, + limb0: 0xac8ba155c82a61103e2963c1, + limb1: 0x8559d1265b1f4418a886b3aa, + limb2: 0x140ce9c3c2eb5374, limb3: 0x0 }, r1a0: u384 { - limb0: 0x873cd60d69e71d3baf4b50b6, - limb1: 0xf7478b659ba7043066ed36fc, - limb2: 0x1aba57a5cfb313a2, + limb0: 0x73ebb164ba66b89f6ac09079, + limb1: 0x3699654a08147615c793b6b5, + limb2: 0xaa97a901c3147f3, limb3: 0x0 }, r1a1: u384 { - limb0: 0x1b2046e3f2a94d11f71d2573, - limb1: 0xce0af6ac2ea7b618e7bb5a8, - limb2: 0x147d8cd76974e2dd, + limb0: 0x9666d2cab8edbbffe6ede238, + limb1: 0xc28b607bd98c0f9789de1cb4, + limb2: 0xcb0f83e0497f81e, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x11fe0e5631944ab8f1190f63, - limb1: 0x8a47951516cedab6f565311e, - limb2: 0x228c2a379acdf5f, + limb0: 0xd9cb0120b4122fb011495b79, + limb1: 0xb13527eef1359006fb9859de, + limb2: 0x240401f012c778a3, limb3: 0x0 }, r0a1: u384 { - limb0: 0xf870ff7c7515411cd857a525, - limb1: 0x665a69cfaa8bfb4601422fd, - limb2: 0x16136665d4f27c4e, + limb0: 0x9cc1ae143c291244678b0671, + limb1: 0x3f4bdf8e0d1bb7d8d2c700d7, + limb2: 0x12fc2e1a9bd4d4fb, limb3: 0x0 }, r1a0: u384 { - limb0: 0x94404629786a89c6c0bc1b5f, - limb1: 0x6566f1a159c463d3d8ced9f4, - limb2: 0x2226f2bbb80072d4, + limb0: 0x4d62fe7db900df0085dff093, + limb1: 0x424c17123aa393f8a5520eb9, + limb2: 0x8df0bf255c22f60, limb3: 0x0 }, r1a1: u384 { - limb0: 0xa446f506f3ece322d0a73d39, - limb1: 0xfe67fb149f20b1aa6988bdc6, - limb2: 0xa4432a089118939, + limb0: 0x4caa438a70cd1b3862c1618e, + limb1: 0x3e479829171b3521b4952056, + limb2: 0x828e185bcf93935, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x11fe0e5631944ab8f1190f63, - limb1: 0x8a47951516cedab6f565311e, - limb2: 0x228c2a379acdf5f, + limb0: 0xd9cb0120b4122fb011495b79, + limb1: 0xb13527eef1359006fb9859de, + limb2: 0x240401f012c778a3, limb3: 0x0 }, r0a1: u384 { - limb0: 0xf870ff7c7515411cd857a525, - limb1: 0x665a69cfaa8bfb4601422fd, - limb2: 0x16136665d4f27c4e, + limb0: 0x9cc1ae143c291244678b0671, + limb1: 0x3f4bdf8e0d1bb7d8d2c700d7, + limb2: 0x12fc2e1a9bd4d4fb, limb3: 0x0 }, r1a0: u384 { - limb0: 0x94404629786a89c6c0bc1b5f, - limb1: 0x6566f1a159c463d3d8ced9f4, - limb2: 0x2226f2bbb80072d4, + limb0: 0x4d62fe7db900df0085dff093, + limb1: 0x424c17123aa393f8a5520eb9, + limb2: 0x8df0bf255c22f60, limb3: 0x0 }, r1a1: u384 { - limb0: 0xa446f506f3ece322d0a73d39, - limb1: 0xfe67fb149f20b1aa6988bdc6, - limb2: 0xa4432a089118939, + limb0: 0x4caa438a70cd1b3862c1618e, + limb1: 0x3e479829171b3521b4952056, + limb2: 0x828e185bcf93935, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x6ec22f6872aaa4ac3c799e80, - limb1: 0x3ed4c3f74f92e7d47945f028, - limb2: 0x16bff0038cf1c303, + limb0: 0xb862a4ff37044dbe06e91363, + limb1: 0xaf8e301a655e3e4a00bc528, + limb2: 0x1b35ba3ad1783bfa, limb3: 0x0 }, r0a1: u384 { - limb0: 0xde3b34c81af90412e9a8170a, - limb1: 0xea5bb8d1ad482e31d6679583, - limb2: 0x4f1add9e32f2db4, + limb0: 0x4d069af037c7fa2d75a8135b, + limb1: 0xe23f93edb80bda1ddf6c3d8b, + limb2: 0x734462d6e70bd6, limb3: 0x0 }, r1a0: u384 { - limb0: 0xabe996707a0796e3186ac31d, - limb1: 0x236fe454e519675d23ca8e4, - limb2: 0xf74220c82c8725d, + limb0: 0xca21499f48088a3152f20477, + limb1: 0xfb6ff15c58fd656c3a068ba7, + limb2: 0x129921fd1af30952, limb3: 0x0 }, r1a1: u384 { - limb0: 0x6b0a490327b3c49a9582ebd1, - limb1: 0x70a87bd4854ba42081882391, - limb2: 0x14a18af74e0666d0, + limb0: 0xe182d8890b92a8c636cfc2d5, + limb1: 0xcf37e9714eabfb65cd257a30, + limb2: 0x19c5b0d5affa1c21, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x6ec22f6872aaa4ac3c799e80, - limb1: 0x3ed4c3f74f92e7d47945f028, - limb2: 0x16bff0038cf1c303, + limb0: 0xb862a4ff37044dbe06e91363, + limb1: 0xaf8e301a655e3e4a00bc528, + limb2: 0x1b35ba3ad1783bfa, limb3: 0x0 }, r0a1: u384 { - limb0: 0xde3b34c81af90412e9a8170a, - limb1: 0xea5bb8d1ad482e31d6679583, - limb2: 0x4f1add9e32f2db4, + limb0: 0x4d069af037c7fa2d75a8135b, + limb1: 0xe23f93edb80bda1ddf6c3d8b, + limb2: 0x734462d6e70bd6, limb3: 0x0 }, r1a0: u384 { - limb0: 0xabe996707a0796e3186ac31d, - limb1: 0x236fe454e519675d23ca8e4, - limb2: 0xf74220c82c8725d, + limb0: 0xca21499f48088a3152f20477, + limb1: 0xfb6ff15c58fd656c3a068ba7, + limb2: 0x129921fd1af30952, limb3: 0x0 }, r1a1: u384 { - limb0: 0x6b0a490327b3c49a9582ebd1, - limb1: 0x70a87bd4854ba42081882391, - limb2: 0x14a18af74e0666d0, + limb0: 0xe182d8890b92a8c636cfc2d5, + limb1: 0xcf37e9714eabfb65cd257a30, + limb2: 0x19c5b0d5affa1c21, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xfdc5ac96c5a6e47bda921ec4, - limb1: 0x546a81a960f12fa055d3b45b, - limb2: 0x2bd1c9b71a722654, + limb0: 0x8d30e8f01b6acf088a9bd5a6, + limb1: 0xb440d1794eef76a66e0fdb32, + limb2: 0x16655a68127499b0, limb3: 0x0 }, r0a1: u384 { - limb0: 0xa9044bd8972b9b79d5b545fb, - limb1: 0xefd0f60a08275bb1caf0f002, - limb2: 0x5272df980c4c7f4, + limb0: 0xf12061678632cd148d1be332, + limb1: 0x3aa5b5ac85bb5c32e7c93d40, + limb2: 0x2f885ae792f2779e, limb3: 0x0 }, r1a0: u384 { - limb0: 0x381e985732b92b61bc19c5f1, - limb1: 0x837c0bdca78036c55f213480, - limb2: 0x1aae9db95de90e3d, + limb0: 0x1de53ae1c1e6c599d4a495e4, + limb1: 0x8ef188b9abb6e97a0375dee6, + limb2: 0x9507d99d56d4d1d, limb3: 0x0 }, r1a1: u384 { - limb0: 0x633e1d89be42aa488b5b9e8d, - limb1: 0xe003c49e24b9d484cb38b7ea, - limb2: 0x1c71305eb0bdfeaf, + limb0: 0x9a83ce73013109f348314267, + limb1: 0xffd1a4c21374ab0fcece03f4, + limb2: 0x7570f2346d80d71, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x1eb9280b39e37cdfd6b966c9, - limb1: 0x5120ce6a0c41ab741b6e731f, - limb2: 0x2b61552e38cabecd, + limb0: 0xffb932597fa8bdce8de82fd9, + limb1: 0xc9265a1ac66f25b59b4c7222, + limb2: 0x2a43f963f80117be, limb3: 0x0 }, r0a1: u384 { - limb0: 0x319ebb1089d7fb67336c4787, - limb1: 0x33a7a5d2bd3bc07024d802fb, - limb2: 0x2385e7c9d947182b, + limb0: 0x9b6456669db38b591a35fa4e, + limb1: 0x31aa367c72c0f07897f7d4a4, + limb2: 0x28d40172399c3b03, limb3: 0x0 }, r1a0: u384 { - limb0: 0xf1cdc7556a7578b474f2b570, - limb1: 0xce6fa6b4172610e4c9f2c8ca, - limb2: 0x30127b97553d9659, + limb0: 0xca95f93e068ff337f73f54d5, + limb1: 0xabbf9fdc66cc4b10f9da741, + limb2: 0x22f1e27d902fc3ff, limb3: 0x0 }, r1a1: u384 { - limb0: 0x5f13207bf4e8446db31ecdba, - limb1: 0x30fe710e8827900db449fb6d, - limb2: 0x224e91ebe05715c3, + limb0: 0xd12f8d49ae60289c48850a68, + limb1: 0xc27491d681fc8ec1edf9d749, + limb2: 0x14e28f1895e25047, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xfdc5ac96c5a6e47bda921ec4, - limb1: 0x546a81a960f12fa055d3b45b, - limb2: 0x2bd1c9b71a722654, + limb0: 0x8d30e8f01b6acf088a9bd5a6, + limb1: 0xb440d1794eef76a66e0fdb32, + limb2: 0x16655a68127499b0, limb3: 0x0 }, r0a1: u384 { - limb0: 0xa9044bd8972b9b79d5b545fb, - limb1: 0xefd0f60a08275bb1caf0f002, - limb2: 0x5272df980c4c7f4, + limb0: 0xf12061678632cd148d1be332, + limb1: 0x3aa5b5ac85bb5c32e7c93d40, + limb2: 0x2f885ae792f2779e, limb3: 0x0 }, r1a0: u384 { - limb0: 0x381e985732b92b61bc19c5f1, - limb1: 0x837c0bdca78036c55f213480, - limb2: 0x1aae9db95de90e3d, + limb0: 0x1de53ae1c1e6c599d4a495e4, + limb1: 0x8ef188b9abb6e97a0375dee6, + limb2: 0x9507d99d56d4d1d, limb3: 0x0 }, r1a1: u384 { - limb0: 0x633e1d89be42aa488b5b9e8d, - limb1: 0xe003c49e24b9d484cb38b7ea, - limb2: 0x1c71305eb0bdfeaf, + limb0: 0x9a83ce73013109f348314267, + limb1: 0xffd1a4c21374ab0fcece03f4, + limb2: 0x7570f2346d80d71, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x1eb9280b39e37cdfd6b966c9, - limb1: 0x5120ce6a0c41ab741b6e731f, - limb2: 0x2b61552e38cabecd, + limb0: 0xffb932597fa8bdce8de82fd9, + limb1: 0xc9265a1ac66f25b59b4c7222, + limb2: 0x2a43f963f80117be, limb3: 0x0 }, r0a1: u384 { - limb0: 0x319ebb1089d7fb67336c4787, - limb1: 0x33a7a5d2bd3bc07024d802fb, - limb2: 0x2385e7c9d947182b, + limb0: 0x9b6456669db38b591a35fa4e, + limb1: 0x31aa367c72c0f07897f7d4a4, + limb2: 0x28d40172399c3b03, limb3: 0x0 }, r1a0: u384 { - limb0: 0xf1cdc7556a7578b474f2b570, - limb1: 0xce6fa6b4172610e4c9f2c8ca, - limb2: 0x30127b97553d9659, + limb0: 0xca95f93e068ff337f73f54d5, + limb1: 0xabbf9fdc66cc4b10f9da741, + limb2: 0x22f1e27d902fc3ff, limb3: 0x0 }, r1a1: u384 { - limb0: 0x5f13207bf4e8446db31ecdba, - limb1: 0x30fe710e8827900db449fb6d, - limb2: 0x224e91ebe05715c3, + limb0: 0xd12f8d49ae60289c48850a68, + limb1: 0xc27491d681fc8ec1edf9d749, + limb2: 0x14e28f1895e25047, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x455f509ee681c11d4a592cee, - limb1: 0xfe208f55862222d546e47ff4, - limb2: 0x1ec4510b7b809a4d, + limb0: 0x473f1af712fdc704395691fd, + limb1: 0xb051550f381c34c4b0734c3b, + limb2: 0x268983f32c1ff74a, limb3: 0x0 }, r0a1: u384 { - limb0: 0xb233327abbeda554e393b419, - limb1: 0x477826e58a635ce4f42ecc4c, - limb2: 0x2c8c1148aba0bc45, + limb0: 0xcd3e26d45de18312b60f63b3, + limb1: 0x4b1cf3f0c70a35c9ed0e7627, + limb2: 0x5faf0f8c5417fac, limb3: 0x0 }, r1a0: u384 { - limb0: 0x37959e9ea4408fc4d18d08c, - limb1: 0x4f4b098a0b592863ea22e4a5, - limb2: 0xcfb7fb135402efc, + limb0: 0x7186248c0f4f620c4db44b27, + limb1: 0xbaee201f71b6213a513c8c05, + limb2: 0x10696dfde75b0f74, limb3: 0x0 }, r1a1: u384 { - limb0: 0x33296577a630e455f9289de2, - limb1: 0x59a10ddb3c4a573045075b12, - limb2: 0x1cafb03b3b0cd512, + limb0: 0x47fce5c1d2e0b960d052202, + limb1: 0x12588735814120777f589cc7, + limb2: 0x755d1d035d5e613, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x455f509ee681c11d4a592cee, - limb1: 0xfe208f55862222d546e47ff4, - limb2: 0x1ec4510b7b809a4d, + limb0: 0x473f1af712fdc704395691fd, + limb1: 0xb051550f381c34c4b0734c3b, + limb2: 0x268983f32c1ff74a, limb3: 0x0 }, r0a1: u384 { - limb0: 0xb233327abbeda554e393b419, - limb1: 0x477826e58a635ce4f42ecc4c, - limb2: 0x2c8c1148aba0bc45, + limb0: 0xcd3e26d45de18312b60f63b3, + limb1: 0x4b1cf3f0c70a35c9ed0e7627, + limb2: 0x5faf0f8c5417fac, limb3: 0x0 }, r1a0: u384 { - limb0: 0x37959e9ea4408fc4d18d08c, - limb1: 0x4f4b098a0b592863ea22e4a5, - limb2: 0xcfb7fb135402efc, + limb0: 0x7186248c0f4f620c4db44b27, + limb1: 0xbaee201f71b6213a513c8c05, + limb2: 0x10696dfde75b0f74, limb3: 0x0 }, r1a1: u384 { - limb0: 0x33296577a630e455f9289de2, - limb1: 0x59a10ddb3c4a573045075b12, - limb2: 0x1cafb03b3b0cd512, + limb0: 0x47fce5c1d2e0b960d052202, + limb1: 0x12588735814120777f589cc7, + limb2: 0x755d1d035d5e613, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xd8d6e0fac27462bdf211fd42, - limb1: 0xec4d626858dd8d2750b085d1, - limb2: 0x1da6d9f45a71767b, + limb0: 0xb069903d83fafb38587039b1, + limb1: 0x8c9aaa21806e5257331c422c, + limb2: 0x13dd740437a116d8, limb3: 0x0 }, r0a1: u384 { - limb0: 0x693dc4d4990bd85546174a4a, - limb1: 0x49339480a9f7fd84c379f69b, - limb2: 0x8430f0bdbeea9b2, + limb0: 0x49d24e3bc669a61d3ec25caa, + limb1: 0xeca54bbcf540ef02c5af1e2d, + limb2: 0x193a4e0703852e04, limb3: 0x0 }, r1a0: u384 { - limb0: 0xeacb8919e10f254c4489fb8d, - limb1: 0xe0bccb12ea3e8f61de2cec8e, - limb2: 0x5dacd3ee995d4d1, + limb0: 0x40ed8176e59843d8d045473f, + limb1: 0xdb66931824221a92af499752, + limb2: 0x187f887f2aa471b3, limb3: 0x0 }, r1a1: u384 { - limb0: 0xb049d9aea8cf65e7fa47fc31, - limb1: 0xfe99f373ac12b15c720e7a56, - limb2: 0x270374148f139ef2, + limb0: 0x5fb9760acf925b445a49c759, + limb1: 0xfc8fbbd94b6f146f5b998e84, + limb2: 0x79720a00d9dea8a, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x5cd64bf82a53d28380cc2b80, - limb1: 0xfebf1beaf6ffae47b515fed1, - limb2: 0x2ff140f7d0a34a1a, + limb0: 0x9ea0a9193ffeb1be07f5f80b, + limb1: 0xfec5948eaf1002c198e0e6d5, + limb2: 0x2a4574fe23c4019d, limb3: 0x0 }, r0a1: u384 { - limb0: 0xb9458bbf70d9abed9d9fdce5, - limb1: 0x10fc552c0dcbed8c47653399, - limb2: 0x24e442086c531f91, + limb0: 0x192d77825dd5d0e9571db112, + limb1: 0x8b6f1079f2f153206cc2a502, + limb2: 0x247f3bad9ba3c5fe, limb3: 0x0 }, r1a0: u384 { - limb0: 0xebd13916ab4f9ea40bede514, - limb1: 0xbcab56e9ae8bc58e5c657626, - limb2: 0x1d71e44146157165, + limb0: 0x250463ee5fe1aecbafe35d74, + limb1: 0xfb14416968302aaa18aca8dd, + limb2: 0x2667d8c8779f5e63, limb3: 0x0 }, r1a1: u384 { - limb0: 0xc43af269c5e49afde1402dd4, - limb1: 0x83d5521712d453326437637f, - limb2: 0x2e06de13a3de05b9, + limb0: 0x933a251b9bf2654b8cde705, + limb1: 0x5b666a17b42cebd66d4dc4a4, + limb2: 0xfbadfc59294fbce, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xd8d6e0fac27462bdf211fd42, - limb1: 0xec4d626858dd8d2750b085d1, - limb2: 0x1da6d9f45a71767b, + limb0: 0xb069903d83fafb38587039b1, + limb1: 0x8c9aaa21806e5257331c422c, + limb2: 0x13dd740437a116d8, limb3: 0x0 }, r0a1: u384 { - limb0: 0x693dc4d4990bd85546174a4a, - limb1: 0x49339480a9f7fd84c379f69b, - limb2: 0x8430f0bdbeea9b2, + limb0: 0x49d24e3bc669a61d3ec25caa, + limb1: 0xeca54bbcf540ef02c5af1e2d, + limb2: 0x193a4e0703852e04, limb3: 0x0 }, r1a0: u384 { - limb0: 0xeacb8919e10f254c4489fb8d, - limb1: 0xe0bccb12ea3e8f61de2cec8e, - limb2: 0x5dacd3ee995d4d1, + limb0: 0x40ed8176e59843d8d045473f, + limb1: 0xdb66931824221a92af499752, + limb2: 0x187f887f2aa471b3, limb3: 0x0 }, r1a1: u384 { - limb0: 0xb049d9aea8cf65e7fa47fc31, - limb1: 0xfe99f373ac12b15c720e7a56, - limb2: 0x270374148f139ef2, + limb0: 0x5fb9760acf925b445a49c759, + limb1: 0xfc8fbbd94b6f146f5b998e84, + limb2: 0x79720a00d9dea8a, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x5cd64bf82a53d28380cc2b80, - limb1: 0xfebf1beaf6ffae47b515fed1, - limb2: 0x2ff140f7d0a34a1a, + limb0: 0x9ea0a9193ffeb1be07f5f80b, + limb1: 0xfec5948eaf1002c198e0e6d5, + limb2: 0x2a4574fe23c4019d, limb3: 0x0 }, r0a1: u384 { - limb0: 0xb9458bbf70d9abed9d9fdce5, - limb1: 0x10fc552c0dcbed8c47653399, - limb2: 0x24e442086c531f91, + limb0: 0x192d77825dd5d0e9571db112, + limb1: 0x8b6f1079f2f153206cc2a502, + limb2: 0x247f3bad9ba3c5fe, limb3: 0x0 }, r1a0: u384 { - limb0: 0xebd13916ab4f9ea40bede514, - limb1: 0xbcab56e9ae8bc58e5c657626, - limb2: 0x1d71e44146157165, + limb0: 0x250463ee5fe1aecbafe35d74, + limb1: 0xfb14416968302aaa18aca8dd, + limb2: 0x2667d8c8779f5e63, limb3: 0x0 }, r1a1: u384 { - limb0: 0xc43af269c5e49afde1402dd4, - limb1: 0x83d5521712d453326437637f, - limb2: 0x2e06de13a3de05b9, + limb0: 0x933a251b9bf2654b8cde705, + limb1: 0x5b666a17b42cebd66d4dc4a4, + limb2: 0xfbadfc59294fbce, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xeb808a9c42120518701919a7, - limb1: 0xc4861db78bf7b6402e059434, - limb2: 0x14f8f4d72f965dea, + limb0: 0x46cedc1a7916cd4758546b8f, + limb1: 0xc0301e8d2df36447a89fb4e8, + limb2: 0xd2ca8656d93e09e, limb3: 0x0 }, r0a1: u384 { - limb0: 0x92967f60f2bc6eb5d58e52d0, - limb1: 0x4790cb777d167bd21de16ef1, - limb2: 0x5c865918563ab2c, + limb0: 0xb3e000fc3f43a66bd80ccccd, + limb1: 0x4f3937ef435c74591278ec30, + limb2: 0x2cacd585791ab63b, limb3: 0x0 }, r1a0: u384 { - limb0: 0x2ebf30869f9c148211f922d8, - limb1: 0x9e0728be1339a40e93a4768c, - limb2: 0x1ae432a1ace0734f, + limb0: 0x124b8c1a597cadcb6e4cd237, + limb1: 0x8ff0b0f8077033669214f5a4, + limb2: 0x2d6762b5646a6eab, limb3: 0x0 }, r1a1: u384 { - limb0: 0xf1d3784ee9f3f24b849340dc, - limb1: 0x6401e71045e249aa411c9640, - limb2: 0x1949d3d94bd44867, + limb0: 0x2ac1adef2ec8f4f11dc21d70, + limb1: 0xa47ce6dfc3545d78d6b35874, + limb2: 0x1e66cdeff84b898e, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xeb808a9c42120518701919a7, - limb1: 0xc4861db78bf7b6402e059434, - limb2: 0x14f8f4d72f965dea, + limb0: 0x46cedc1a7916cd4758546b8f, + limb1: 0xc0301e8d2df36447a89fb4e8, + limb2: 0xd2ca8656d93e09e, limb3: 0x0 }, r0a1: u384 { - limb0: 0x92967f60f2bc6eb5d58e52d0, - limb1: 0x4790cb777d167bd21de16ef1, - limb2: 0x5c865918563ab2c, + limb0: 0xb3e000fc3f43a66bd80ccccd, + limb1: 0x4f3937ef435c74591278ec30, + limb2: 0x2cacd585791ab63b, limb3: 0x0 }, r1a0: u384 { - limb0: 0x2ebf30869f9c148211f922d8, - limb1: 0x9e0728be1339a40e93a4768c, - limb2: 0x1ae432a1ace0734f, + limb0: 0x124b8c1a597cadcb6e4cd237, + limb1: 0x8ff0b0f8077033669214f5a4, + limb2: 0x2d6762b5646a6eab, limb3: 0x0 }, r1a1: u384 { - limb0: 0xf1d3784ee9f3f24b849340dc, - limb1: 0x6401e71045e249aa411c9640, - limb2: 0x1949d3d94bd44867, + limb0: 0x2ac1adef2ec8f4f11dc21d70, + limb1: 0xa47ce6dfc3545d78d6b35874, + limb2: 0x1e66cdeff84b898e, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xa5b9d890f029401852149b01, - limb1: 0xaa73b6c72232dd72d2bc6bb6, - limb2: 0x215b7a8c1ee13054, + limb0: 0x7bded937b16de0bd513a7142, + limb1: 0xcfbbf3d13e42ad1b5895e0f2, + limb2: 0x1eca553e197cc436, limb3: 0x0 }, r0a1: u384 { - limb0: 0xf1e5d2e87fb98cf0d3272911, - limb1: 0x6a3419a260afd2295de976e7, - limb2: 0x14a10daf25ae808, + limb0: 0x1326b172ffdca7374561eaa7, + limb1: 0x1b78b181955868c0feac1a4d, + limb2: 0x27e90d835140fdf2, limb3: 0x0 }, r1a0: u384 { - limb0: 0x46c27f89c59fa342ce543314, - limb1: 0xff4f1012366ec83e37e31d5f, - limb2: 0x2aaf67028b10f321, + limb0: 0xabe4a2e309f9a3632b4ed1ce, + limb1: 0xcea1bbacd364563ad1a77ebb, + limb2: 0x13127af43089e05a, limb3: 0x0 }, r1a1: u384 { - limb0: 0x2b62fd51c3d3f9eb5dc3767b, - limb1: 0x9d0cb2a44d7439bfbb7b6b1, - limb2: 0x161e9aaecf637a62, + limb0: 0x87d1cfadbc1dc69a79324026, + limb1: 0x9c9c2c5e286779e0a0d895fc, + limb2: 0x111e946cf01322eb, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xa5b9d890f029401852149b01, - limb1: 0xaa73b6c72232dd72d2bc6bb6, - limb2: 0x215b7a8c1ee13054, + limb0: 0x7bded937b16de0bd513a7142, + limb1: 0xcfbbf3d13e42ad1b5895e0f2, + limb2: 0x1eca553e197cc436, limb3: 0x0 }, r0a1: u384 { - limb0: 0xf1e5d2e87fb98cf0d3272911, - limb1: 0x6a3419a260afd2295de976e7, - limb2: 0x14a10daf25ae808, + limb0: 0x1326b172ffdca7374561eaa7, + limb1: 0x1b78b181955868c0feac1a4d, + limb2: 0x27e90d835140fdf2, limb3: 0x0 }, r1a0: u384 { - limb0: 0x46c27f89c59fa342ce543314, - limb1: 0xff4f1012366ec83e37e31d5f, - limb2: 0x2aaf67028b10f321, + limb0: 0xabe4a2e309f9a3632b4ed1ce, + limb1: 0xcea1bbacd364563ad1a77ebb, + limb2: 0x13127af43089e05a, limb3: 0x0 }, r1a1: u384 { - limb0: 0x2b62fd51c3d3f9eb5dc3767b, - limb1: 0x9d0cb2a44d7439bfbb7b6b1, - limb2: 0x161e9aaecf637a62, + limb0: 0x87d1cfadbc1dc69a79324026, + limb1: 0x9c9c2c5e286779e0a0d895fc, + limb2: 0x111e946cf01322eb, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xaa57615ce62828d745158f51, - limb1: 0xe17b9d5c9d3bc933c19309bf, - limb2: 0x2f25249490462ec1, + limb0: 0x9defc443a5f969707c567481, + limb1: 0x55f8307d8694c3cec8cca946, + limb2: 0x1279f1c85384c33f, limb3: 0x0 }, r0a1: u384 { - limb0: 0x1c9cd8ab6acdbd5b667b6ef8, - limb1: 0xec0eac28fed425851e0759a, - limb2: 0x11e17ed48cb624ac, + limb0: 0xc45f4019a78bd32e0bdd4a1b, + limb1: 0xaf7ddf8600e2296ceaf95d02, + limb2: 0xbe5e1b962492d36, limb3: 0x0 }, r1a0: u384 { - limb0: 0xb7d7f2ad8c2cccfc545caad7, - limb1: 0x7ae7f688cb2237b030bdc983, - limb2: 0x2055474ddf18da67, + limb0: 0x76245039bfb721ca1e2a0ee5, + limb1: 0x8645cf7b04c2c109a1286acc, + limb2: 0x295c9183ac4c0896, limb3: 0x0 }, r1a1: u384 { - limb0: 0xa81b20e1755ad0c2e5271a7c, - limb1: 0x667a96af90801b997ecd3768, - limb2: 0x3050fb84c6c7a0fd, + limb0: 0xc074cb54759eec430185578f, + limb1: 0x5eccd5653e9f7f02ed581abc, + limb2: 0x14cf7692e622fcc5, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x75282a61d5890f5fbe6dd4ae, - limb1: 0xf974934abd152c33e7063189, - limb2: 0x13c7b6655653e771, + limb0: 0xf8027d9e6b0a7844673e1245, + limb1: 0x694d9db62bf7bb9a41262f0b, + limb2: 0x58b480579c361aa, limb3: 0x0 }, r0a1: u384 { - limb0: 0xc8f41b2ff2b56acef5189d2, - limb1: 0x4156cf78c5f67dc9ac29d8e4, - limb2: 0x12c97d9ada019987, + limb0: 0x91e7cecfe16bbaaaf0e19fda, + limb1: 0xb9179883e4b271385d9f0518, + limb2: 0x1b352e7a150ca82b, limb3: 0x0 }, r1a0: u384 { - limb0: 0x635bbd3907a101b58f253dbc, - limb1: 0x7ee774f09e34ab287b544572, - limb2: 0xc50831a8f5346fd, + limb0: 0xaca0ba97589ae090a84d3146, + limb1: 0x6e9a896c16ec429fab404849, + limb2: 0x2360e6d4bbcf90f8, limb3: 0x0 }, r1a1: u384 { - limb0: 0xa5257fa20b457572b4950d7c, - limb1: 0x4fcdbfa1ec56b6157743acbe, - limb2: 0x19f0b8e1110e375c, + limb0: 0xbb779a84783aa4ae72c18ceb, + limb1: 0x27e540fc9069d0a5ef39760c, + limb2: 0x114c9874632415bb, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xaa57615ce62828d745158f51, - limb1: 0xe17b9d5c9d3bc933c19309bf, - limb2: 0x2f25249490462ec1, + limb0: 0x9defc443a5f969707c567481, + limb1: 0x55f8307d8694c3cec8cca946, + limb2: 0x1279f1c85384c33f, limb3: 0x0 }, r0a1: u384 { - limb0: 0x1c9cd8ab6acdbd5b667b6ef8, - limb1: 0xec0eac28fed425851e0759a, - limb2: 0x11e17ed48cb624ac, + limb0: 0xc45f4019a78bd32e0bdd4a1b, + limb1: 0xaf7ddf8600e2296ceaf95d02, + limb2: 0xbe5e1b962492d36, limb3: 0x0 }, r1a0: u384 { - limb0: 0xb7d7f2ad8c2cccfc545caad7, - limb1: 0x7ae7f688cb2237b030bdc983, - limb2: 0x2055474ddf18da67, + limb0: 0x76245039bfb721ca1e2a0ee5, + limb1: 0x8645cf7b04c2c109a1286acc, + limb2: 0x295c9183ac4c0896, limb3: 0x0 }, r1a1: u384 { - limb0: 0xa81b20e1755ad0c2e5271a7c, - limb1: 0x667a96af90801b997ecd3768, - limb2: 0x3050fb84c6c7a0fd, + limb0: 0xc074cb54759eec430185578f, + limb1: 0x5eccd5653e9f7f02ed581abc, + limb2: 0x14cf7692e622fcc5, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x75282a61d5890f5fbe6dd4ae, - limb1: 0xf974934abd152c33e7063189, - limb2: 0x13c7b6655653e771, + limb0: 0xf8027d9e6b0a7844673e1245, + limb1: 0x694d9db62bf7bb9a41262f0b, + limb2: 0x58b480579c361aa, limb3: 0x0 }, r0a1: u384 { - limb0: 0xc8f41b2ff2b56acef5189d2, - limb1: 0x4156cf78c5f67dc9ac29d8e4, - limb2: 0x12c97d9ada019987, + limb0: 0x91e7cecfe16bbaaaf0e19fda, + limb1: 0xb9179883e4b271385d9f0518, + limb2: 0x1b352e7a150ca82b, limb3: 0x0 }, r1a0: u384 { - limb0: 0x635bbd3907a101b58f253dbc, - limb1: 0x7ee774f09e34ab287b544572, - limb2: 0xc50831a8f5346fd, + limb0: 0xaca0ba97589ae090a84d3146, + limb1: 0x6e9a896c16ec429fab404849, + limb2: 0x2360e6d4bbcf90f8, limb3: 0x0 }, r1a1: u384 { - limb0: 0xa5257fa20b457572b4950d7c, - limb1: 0x4fcdbfa1ec56b6157743acbe, - limb2: 0x19f0b8e1110e375c, + limb0: 0xbb779a84783aa4ae72c18ceb, + limb1: 0x27e540fc9069d0a5ef39760c, + limb2: 0x114c9874632415bb, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x6bd5a6514d0ff21237960941, - limb1: 0x3d237ace8de24fed068b4c76, - limb2: 0x3c3f0027ec050a8, + limb0: 0x2ec97171b355380af9597308, + limb1: 0x5c98f31e4243eabcdc9c4d0a, + limb2: 0x189272184abbc67e, limb3: 0x0 }, r0a1: u384 { - limb0: 0x18a2cd87c2adf475e683bb8f, - limb1: 0x33616b9acf22d8b9bb45d540, - limb2: 0x1ce1da28e7921a3e, + limb0: 0x70b2a249ee2b52a2be3d20c1, + limb1: 0x64f57fa1aabf12824a116967, + limb2: 0x2eff2b0744e46233, limb3: 0x0 }, r1a0: u384 { - limb0: 0xa7040f038e52409d69650352, - limb1: 0x7b807f0a64fdab1f8b76feba, - limb2: 0x1b0c35cdc6abfa25, + limb0: 0x745cbcaad594ddd38a5f1f4e, + limb1: 0x95d1063847bfb4d5e006aa7d, + limb2: 0x16f68ed87066356e, limb3: 0x0 }, r1a1: u384 { - limb0: 0xa0d9c7ac70f8a96f38d0aebe, - limb1: 0xb4fd2126f07ee3719dbb703c, - limb2: 0x18623595aadc0a0b, + limb0: 0xf642b7b361d87b9f994ddd0d, + limb1: 0xdd217c0a6997dd8ec2539a54, + limb2: 0xeb46e09edaa161c, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x6bd5a6514d0ff21237960941, - limb1: 0x3d237ace8de24fed068b4c76, - limb2: 0x3c3f0027ec050a8, + limb0: 0x2ec97171b355380af9597308, + limb1: 0x5c98f31e4243eabcdc9c4d0a, + limb2: 0x189272184abbc67e, limb3: 0x0 }, r0a1: u384 { - limb0: 0x18a2cd87c2adf475e683bb8f, - limb1: 0x33616b9acf22d8b9bb45d540, - limb2: 0x1ce1da28e7921a3e, + limb0: 0x70b2a249ee2b52a2be3d20c1, + limb1: 0x64f57fa1aabf12824a116967, + limb2: 0x2eff2b0744e46233, limb3: 0x0 }, r1a0: u384 { - limb0: 0xa7040f038e52409d69650352, - limb1: 0x7b807f0a64fdab1f8b76feba, - limb2: 0x1b0c35cdc6abfa25, + limb0: 0x745cbcaad594ddd38a5f1f4e, + limb1: 0x95d1063847bfb4d5e006aa7d, + limb2: 0x16f68ed87066356e, limb3: 0x0 }, r1a1: u384 { - limb0: 0xa0d9c7ac70f8a96f38d0aebe, - limb1: 0xb4fd2126f07ee3719dbb703c, - limb2: 0x18623595aadc0a0b, + limb0: 0xf642b7b361d87b9f994ddd0d, + limb1: 0xdd217c0a6997dd8ec2539a54, + limb2: 0xeb46e09edaa161c, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xafff69b030bfb3b8b3de3fec, - limb1: 0xf326da4883c216ea5b8d8465, - limb2: 0x68f9109bf416f9b, + limb0: 0x75698f1cd702ddc2b33e1a09, + limb1: 0x491bab5348fd4670d338478a, + limb2: 0xf12d300f3713d8, limb3: 0x0 }, r0a1: u384 { - limb0: 0xe00d29215ef9c19ec430cee8, - limb1: 0x4a3d48e8eff4d40c87b2c8e3, - limb2: 0xc95732a91532bfe, + limb0: 0x7f8777ccc370604bba36f21e, + limb1: 0x9249013429c123002a183f50, + limb2: 0x1fcfca1835131e72, limb3: 0x0 }, r1a0: u384 { - limb0: 0xf3c7aefb069b2d0b7d43082d, - limb1: 0x9e725955891d9065f4c3f423, - limb2: 0x2efa4751ce56c7c2, + limb0: 0x8847a89e94951a7f1402ca0a, + limb1: 0xcf6292aefd5885587e4b501a, + limb2: 0x1f79fc126e4b16c6, limb3: 0x0 }, r1a1: u384 { - limb0: 0xb42fb3d1148d93326171ec72, - limb1: 0x75914fe70c0b54d61858f94b, - limb2: 0xe4ee922392ddc1a, + limb0: 0x9d2a84ea463b4f6fa6bdef4f, + limb1: 0x757ea11f432296fd22343447, + limb2: 0x2679fc65403a5f42, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xafff69b030bfb3b8b3de3fec, - limb1: 0xf326da4883c216ea5b8d8465, - limb2: 0x68f9109bf416f9b, + limb0: 0x75698f1cd702ddc2b33e1a09, + limb1: 0x491bab5348fd4670d338478a, + limb2: 0xf12d300f3713d8, limb3: 0x0 }, r0a1: u384 { - limb0: 0xe00d29215ef9c19ec430cee8, - limb1: 0x4a3d48e8eff4d40c87b2c8e3, - limb2: 0xc95732a91532bfe, + limb0: 0x7f8777ccc370604bba36f21e, + limb1: 0x9249013429c123002a183f50, + limb2: 0x1fcfca1835131e72, limb3: 0x0 }, r1a0: u384 { - limb0: 0xf3c7aefb069b2d0b7d43082d, - limb1: 0x9e725955891d9065f4c3f423, - limb2: 0x2efa4751ce56c7c2, + limb0: 0x8847a89e94951a7f1402ca0a, + limb1: 0xcf6292aefd5885587e4b501a, + limb2: 0x1f79fc126e4b16c6, limb3: 0x0 }, r1a1: u384 { - limb0: 0xb42fb3d1148d93326171ec72, - limb1: 0x75914fe70c0b54d61858f94b, - limb2: 0xe4ee922392ddc1a, + limb0: 0x9d2a84ea463b4f6fa6bdef4f, + limb1: 0x757ea11f432296fd22343447, + limb2: 0x2679fc65403a5f42, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xe86fa08f4bfe08d9d0cd0333, - limb1: 0xa791a17520b4e8fa1accb2c9, - limb2: 0xa35c8cf2084bf62, + limb0: 0x34f8267fb775f59435a975a3, + limb1: 0x5e24c3e432badae39861f051, + limb2: 0x172b5256de7536ee, limb3: 0x0 }, r0a1: u384 { - limb0: 0xe13e78206ff3229cb31a1def, - limb1: 0x575d6af6b27be5daff2a69e8, - limb2: 0x1e263305675d54c9, + limb0: 0x5c68fe19ba153dcabad4077e, + limb1: 0xfcc73acc37bc3efd49f1611c, + limb2: 0x23e6dc58075ef8d9, limb3: 0x0 }, r1a0: u384 { - limb0: 0xd7abffe72ba6772e9c6b72d2, - limb1: 0x7836fb8805f97f89ee38e368, - limb2: 0x2cf4ee213dcf4464, + limb0: 0x4459c03b4d093ccedd5d9bb8, + limb1: 0xe78ba9031b31e2be3ed8f2ca, + limb2: 0x22ca3c03e154d61, limb3: 0x0 }, r1a1: u384 { - limb0: 0x8e55236bb04e2a7c440d2d89, - limb1: 0x8898d2540df702899b9048b6, - limb2: 0x24f946194bd634db, + limb0: 0xe3ddeffb8c8f1a4cffd5c3f8, + limb1: 0x1241cc4c4b10d455e4d51279, + limb2: 0x1198575579f06677, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xe86fa08f4bfe08d9d0cd0333, - limb1: 0xa791a17520b4e8fa1accb2c9, - limb2: 0xa35c8cf2084bf62, + limb0: 0x34f8267fb775f59435a975a3, + limb1: 0x5e24c3e432badae39861f051, + limb2: 0x172b5256de7536ee, limb3: 0x0 }, r0a1: u384 { - limb0: 0xe13e78206ff3229cb31a1def, - limb1: 0x575d6af6b27be5daff2a69e8, - limb2: 0x1e263305675d54c9, + limb0: 0x5c68fe19ba153dcabad4077e, + limb1: 0xfcc73acc37bc3efd49f1611c, + limb2: 0x23e6dc58075ef8d9, limb3: 0x0 }, r1a0: u384 { - limb0: 0xd7abffe72ba6772e9c6b72d2, - limb1: 0x7836fb8805f97f89ee38e368, - limb2: 0x2cf4ee213dcf4464, + limb0: 0x4459c03b4d093ccedd5d9bb8, + limb1: 0xe78ba9031b31e2be3ed8f2ca, + limb2: 0x22ca3c03e154d61, limb3: 0x0 }, r1a1: u384 { - limb0: 0x8e55236bb04e2a7c440d2d89, - limb1: 0x8898d2540df702899b9048b6, - limb2: 0x24f946194bd634db, + limb0: 0xe3ddeffb8c8f1a4cffd5c3f8, + limb1: 0x1241cc4c4b10d455e4d51279, + limb2: 0x1198575579f06677, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xf2eac59c26e1b90557131504, - limb1: 0xa17f1803188d7576dff68f39, - limb2: 0x159a4730585d146d, + limb0: 0xb18b3c24e43743bdb2cdbd80, + limb1: 0xe998c4bba97ba39223cf4a9c, + limb2: 0x19dc441e0f76e9e1, limb3: 0x0 }, r0a1: u384 { - limb0: 0x143a5877faca5e6bd3bf61a3, - limb1: 0xb47d46dab5eccd984b3551f7, - limb2: 0x2ae79c444296910, + limb0: 0x4c5d0509f4c4d4eac63f9f95, + limb1: 0x5d3dd460fa5eec27c0f1c16d, + limb2: 0x1ce5fefb5da40fc0, limb3: 0x0 }, r1a0: u384 { - limb0: 0x96a628fd4afded6dfa2eb8d7, - limb1: 0x7bc17285b3a81885dfaa71c4, - limb2: 0x29bfbe82bfee17a0, + limb0: 0x817ac722e3b0875c94d0c02d, + limb1: 0x92716a07a8780a22c240503b, + limb2: 0x14624b4326fac880, limb3: 0x0 }, r1a1: u384 { - limb0: 0x8a82c223f95d5cfb0cf9b31c, - limb1: 0xf2b11059d2acf8733b32273c, - limb2: 0x204a699d8aef3b41, + limb0: 0x8f2279554369817a9f36b5b2, + limb1: 0x6b6125c5be4c3c62b2ffbe7, + limb2: 0x1e71362b2df417b3, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x81f14b1ecb421fb86f718ffe, - limb1: 0xd141132c032a0cc6b32b9e07, - limb2: 0xffd395d793dd40d, + limb0: 0x5dbc257e7bb51557102dbe2a, + limb1: 0xce362ed76472b2864c5f5b6f, + limb2: 0xbd519ac92f31216, limb3: 0x0 }, r0a1: u384 { - limb0: 0xc31debb9628771126804fd36, - limb1: 0xfdf8ee7e85129cc54c2ec2cb, - limb2: 0x16e798567bd1abba, + limb0: 0xe24007146139cc5810b3cbd1, + limb1: 0xef3e2e5013aee1213c842bfb, + limb2: 0x1f9eea9d2acec058, limb3: 0x0 }, r1a0: u384 { - limb0: 0x37d1b274476232cb3f7fa07b, - limb1: 0x7805db52c4f4db2f53faa712, - limb2: 0xee069c5f5231633, + limb0: 0x913167d6677c3bc99423eaeb, + limb1: 0xa2fa67dadc942e074343364, + limb2: 0x264f390c803c8e6, limb3: 0x0 }, r1a1: u384 { - limb0: 0x56530a3a43b0fb2f16579bd0, - limb1: 0x83ade7f8c0a7e0ddff5eae8f, - limb2: 0x28c29f0919eff65f, + limb0: 0x96fe98ba8d3de40aa91c7cef, + limb1: 0x9c98ececaf9210453a32c237, + limb2: 0xbe97bca2544faec, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xf2eac59c26e1b90557131504, - limb1: 0xa17f1803188d7576dff68f39, - limb2: 0x159a4730585d146d, + limb0: 0xb18b3c24e43743bdb2cdbd80, + limb1: 0xe998c4bba97ba39223cf4a9c, + limb2: 0x19dc441e0f76e9e1, limb3: 0x0 }, r0a1: u384 { - limb0: 0x143a5877faca5e6bd3bf61a3, - limb1: 0xb47d46dab5eccd984b3551f7, - limb2: 0x2ae79c444296910, + limb0: 0x4c5d0509f4c4d4eac63f9f95, + limb1: 0x5d3dd460fa5eec27c0f1c16d, + limb2: 0x1ce5fefb5da40fc0, limb3: 0x0 }, r1a0: u384 { - limb0: 0x96a628fd4afded6dfa2eb8d7, - limb1: 0x7bc17285b3a81885dfaa71c4, - limb2: 0x29bfbe82bfee17a0, + limb0: 0x817ac722e3b0875c94d0c02d, + limb1: 0x92716a07a8780a22c240503b, + limb2: 0x14624b4326fac880, limb3: 0x0 }, r1a1: u384 { - limb0: 0x8a82c223f95d5cfb0cf9b31c, - limb1: 0xf2b11059d2acf8733b32273c, - limb2: 0x204a699d8aef3b41, + limb0: 0x8f2279554369817a9f36b5b2, + limb1: 0x6b6125c5be4c3c62b2ffbe7, + limb2: 0x1e71362b2df417b3, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x81f14b1ecb421fb86f718ffe, - limb1: 0xd141132c032a0cc6b32b9e07, - limb2: 0xffd395d793dd40d, + limb0: 0x5dbc257e7bb51557102dbe2a, + limb1: 0xce362ed76472b2864c5f5b6f, + limb2: 0xbd519ac92f31216, limb3: 0x0 }, r0a1: u384 { - limb0: 0xc31debb9628771126804fd36, - limb1: 0xfdf8ee7e85129cc54c2ec2cb, - limb2: 0x16e798567bd1abba, + limb0: 0xe24007146139cc5810b3cbd1, + limb1: 0xef3e2e5013aee1213c842bfb, + limb2: 0x1f9eea9d2acec058, limb3: 0x0 }, r1a0: u384 { - limb0: 0x37d1b274476232cb3f7fa07b, - limb1: 0x7805db52c4f4db2f53faa712, - limb2: 0xee069c5f5231633, + limb0: 0x913167d6677c3bc99423eaeb, + limb1: 0xa2fa67dadc942e074343364, + limb2: 0x264f390c803c8e6, limb3: 0x0 }, r1a1: u384 { - limb0: 0x56530a3a43b0fb2f16579bd0, - limb1: 0x83ade7f8c0a7e0ddff5eae8f, - limb2: 0x28c29f0919eff65f, + limb0: 0x96fe98ba8d3de40aa91c7cef, + limb1: 0x9c98ececaf9210453a32c237, + limb2: 0xbe97bca2544faec, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x24238035eac8fe6254a9b58b, - limb1: 0x29704e1d16ba7935d1c664ca, - limb2: 0x720c62840618b73, + limb0: 0x9fdc0157c3f6d20bf1149a1e, + limb1: 0x8dfe542e1b42911f5be6b44f, + limb2: 0x1777319f3952635d, limb3: 0x0 }, r0a1: u384 { - limb0: 0xca713d288e8fbcf3d4b3f4, - limb1: 0xff965e87b45c3b7cc304e8a3, - limb2: 0x4c145db9607b1af, + limb0: 0x63c6acb2bb3dd9747a3a9e32, + limb1: 0xc1c8cdb31066df4015d898a0, + limb2: 0xa1a8086940fa431, limb3: 0x0 }, r1a0: u384 { - limb0: 0xce0acc88cca53e7bedba3fb5, - limb1: 0x4b3d0f4d975f397272ca6548, - limb2: 0x11d512fa88c71b94, + limb0: 0x26964bc2ff40bddadf582927, + limb1: 0x5b95722b0f70f6745c2bdbff, + limb2: 0x236b02ee4ba7fc42, limb3: 0x0 }, r1a1: u384 { - limb0: 0x62600defed12a6ae67e8f9b, - limb1: 0xb77c7784870dd527e054cdc1, - limb2: 0x14c1b1165c3b4670, + limb0: 0xfc468b651b4a0b741fcab682, + limb1: 0x947fdb5abdbbf09b1861c9ff, + limb2: 0x168fbfc692ed02, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x24238035eac8fe6254a9b58b, - limb1: 0x29704e1d16ba7935d1c664ca, - limb2: 0x720c62840618b73, + limb0: 0x9fdc0157c3f6d20bf1149a1e, + limb1: 0x8dfe542e1b42911f5be6b44f, + limb2: 0x1777319f3952635d, limb3: 0x0 }, r0a1: u384 { - limb0: 0xca713d288e8fbcf3d4b3f4, - limb1: 0xff965e87b45c3b7cc304e8a3, - limb2: 0x4c145db9607b1af, + limb0: 0x63c6acb2bb3dd9747a3a9e32, + limb1: 0xc1c8cdb31066df4015d898a0, + limb2: 0xa1a8086940fa431, limb3: 0x0 }, r1a0: u384 { - limb0: 0xce0acc88cca53e7bedba3fb5, - limb1: 0x4b3d0f4d975f397272ca6548, - limb2: 0x11d512fa88c71b94, + limb0: 0x26964bc2ff40bddadf582927, + limb1: 0x5b95722b0f70f6745c2bdbff, + limb2: 0x236b02ee4ba7fc42, limb3: 0x0 }, r1a1: u384 { - limb0: 0x62600defed12a6ae67e8f9b, - limb1: 0xb77c7784870dd527e054cdc1, - limb2: 0x14c1b1165c3b4670, + limb0: 0xfc468b651b4a0b741fcab682, + limb1: 0x947fdb5abdbbf09b1861c9ff, + limb2: 0x168fbfc692ed02, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xbb2122ebe29583370a80ec17, - limb1: 0xf4704750b76ba5f30f259f86, - limb2: 0x2d28c89327866dca, + limb0: 0x3b05d569dd3cfe7e6ef2d371, + limb1: 0x1ab213c78ac4d75edd6143b4, + limb2: 0x1bb1c4d653a5216f, limb3: 0x0 }, r0a1: u384 { - limb0: 0xccec49e08e4381d1cba35735, - limb1: 0xaf519861b3653d82ce8e7520, - limb2: 0x29004ff56bd6a3b7, + limb0: 0x9b92fea68b4f30a46556d398, + limb1: 0x83327fb29ce9aca58bde417a, + limb2: 0x16153220e81ed45d, limb3: 0x0 }, r1a0: u384 { - limb0: 0xda67abe2447b1019aa54f239, - limb1: 0xd0c3f07d4db5deecc0f6fc0f, - limb2: 0x1909a310a2a0fa61, + limb0: 0xb0d2a345496d30460462033c, + limb1: 0xa40b16c304ff5061144ae50f, + limb2: 0x26721ea54af25d00, limb3: 0x0 }, r1a1: u384 { - limb0: 0x850229cc177d82c54143fa44, - limb1: 0x4bd378f8f36001f0e9859f58, - limb2: 0x390b8f1376b4412, + limb0: 0xa5ccabe21466c944dbb14095, + limb1: 0xa4c756d31e5d0f448cde68b2, + limb2: 0x2ae93a053a3d338d, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xbb2122ebe29583370a80ec17, - limb1: 0xf4704750b76ba5f30f259f86, - limb2: 0x2d28c89327866dca, + limb0: 0x3b05d569dd3cfe7e6ef2d371, + limb1: 0x1ab213c78ac4d75edd6143b4, + limb2: 0x1bb1c4d653a5216f, limb3: 0x0 }, r0a1: u384 { - limb0: 0xccec49e08e4381d1cba35735, - limb1: 0xaf519861b3653d82ce8e7520, - limb2: 0x29004ff56bd6a3b7, + limb0: 0x9b92fea68b4f30a46556d398, + limb1: 0x83327fb29ce9aca58bde417a, + limb2: 0x16153220e81ed45d, limb3: 0x0 }, r1a0: u384 { - limb0: 0xda67abe2447b1019aa54f239, - limb1: 0xd0c3f07d4db5deecc0f6fc0f, - limb2: 0x1909a310a2a0fa61, + limb0: 0xb0d2a345496d30460462033c, + limb1: 0xa40b16c304ff5061144ae50f, + limb2: 0x26721ea54af25d00, limb3: 0x0 }, r1a1: u384 { - limb0: 0x850229cc177d82c54143fa44, - limb1: 0x4bd378f8f36001f0e9859f58, - limb2: 0x390b8f1376b4412, + limb0: 0xa5ccabe21466c944dbb14095, + limb1: 0xa4c756d31e5d0f448cde68b2, + limb2: 0x2ae93a053a3d338d, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x7515d593cd8ffd2d6eb9b318, - limb1: 0xbdd57f6ab8c5a70902fee2d9, - limb2: 0x1b24e2eef13e1b84, + limb0: 0x20862b1193e454644f783f5f, + limb1: 0x53e011623be45f777881d1fa, + limb2: 0x1add95a26da4772d, limb3: 0x0 }, r0a1: u384 { - limb0: 0x37a56432fff0f48b7dd974ac, - limb1: 0xcd2e287306e9f706b51c57c2, - limb2: 0x14210650fae032fc, + limb0: 0x184abd260b562bfb4732317, + limb1: 0x7ffbe8a09f7ed1d4dc2d72db, + limb2: 0x1d8126e0e1a04aba, limb3: 0x0 }, r1a0: u384 { - limb0: 0x9cfcbab6ffd0ee7294a990f, - limb1: 0xa824b505f8e27757f00f21d9, - limb2: 0x22109391d091c338, + limb0: 0xa95cc6a0467084254d561198, + limb1: 0x8323b4651df3ca086971c5f2, + limb2: 0x8ddc589c88db546, limb3: 0x0 }, r1a1: u384 { - limb0: 0x6e4006572225c7a35fc53142, - limb1: 0xce163967d4d9e832c186f21e, - limb2: 0x10829f43cefc787f, + limb0: 0x93d904befe5c8b115704af76, + limb1: 0x1d435b645112bc8f8c408c92, + limb2: 0x2049e3df84bc4862, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x17e6e33a4cfd6482b1106792, - limb1: 0xca3b0a017806d909a2e0e225, - limb2: 0x2db751aae464a052, + limb0: 0xe7ee41c83dc0244a4aff0557, + limb1: 0xac2723cbbe49c3f2e962c87a, + limb2: 0x1a5c70753b8f872d, limb3: 0x0 }, r0a1: u384 { - limb0: 0x22a42b0e745ef1a5b7d52893, - limb1: 0xf0439a93a5bcf24a17f3182c, - limb2: 0xf04017b9d5bf0dc, + limb0: 0x48932d0153dca0d9ad7bb3ef, + limb1: 0x8030770fb03579c7f1aaf813, + limb2: 0x23052cdbd5231cf1, limb3: 0x0 }, r1a0: u384 { - limb0: 0xc803ee8f0141bcef25fe07f6, - limb1: 0x307fb148b69ab24cae2d3a64, - limb2: 0x1bf1b440d1678998, + limb0: 0xf67377a19afeceb76ad219d1, + limb1: 0x5100a715ef3663197a630165, + limb2: 0x26e53fc4d5f9343d, limb3: 0x0 }, r1a1: u384 { - limb0: 0x54243689f606fa75a4492f65, - limb1: 0x53458e28eaea7346e8c8e72d, - limb2: 0x202960692e54fbc1, + limb0: 0x3614bc03de00109253c939b0, + limb1: 0x5d7e932204b235c7868fd8c9, + limb2: 0xf9a4b8fc5c3b95c, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x7515d593cd8ffd2d6eb9b318, - limb1: 0xbdd57f6ab8c5a70902fee2d9, - limb2: 0x1b24e2eef13e1b84, + limb0: 0x20862b1193e454644f783f5f, + limb1: 0x53e011623be45f777881d1fa, + limb2: 0x1add95a26da4772d, limb3: 0x0 }, r0a1: u384 { - limb0: 0x37a56432fff0f48b7dd974ac, - limb1: 0xcd2e287306e9f706b51c57c2, - limb2: 0x14210650fae032fc, + limb0: 0x184abd260b562bfb4732317, + limb1: 0x7ffbe8a09f7ed1d4dc2d72db, + limb2: 0x1d8126e0e1a04aba, limb3: 0x0 }, r1a0: u384 { - limb0: 0x9cfcbab6ffd0ee7294a990f, - limb1: 0xa824b505f8e27757f00f21d9, - limb2: 0x22109391d091c338, + limb0: 0xa95cc6a0467084254d561198, + limb1: 0x8323b4651df3ca086971c5f2, + limb2: 0x8ddc589c88db546, limb3: 0x0 }, r1a1: u384 { - limb0: 0x6e4006572225c7a35fc53142, - limb1: 0xce163967d4d9e832c186f21e, - limb2: 0x10829f43cefc787f, + limb0: 0x93d904befe5c8b115704af76, + limb1: 0x1d435b645112bc8f8c408c92, + limb2: 0x2049e3df84bc4862, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x17e6e33a4cfd6482b1106792, - limb1: 0xca3b0a017806d909a2e0e225, - limb2: 0x2db751aae464a052, + limb0: 0xe7ee41c83dc0244a4aff0557, + limb1: 0xac2723cbbe49c3f2e962c87a, + limb2: 0x1a5c70753b8f872d, limb3: 0x0 }, r0a1: u384 { - limb0: 0x22a42b0e745ef1a5b7d52893, - limb1: 0xf0439a93a5bcf24a17f3182c, - limb2: 0xf04017b9d5bf0dc, + limb0: 0x48932d0153dca0d9ad7bb3ef, + limb1: 0x8030770fb03579c7f1aaf813, + limb2: 0x23052cdbd5231cf1, limb3: 0x0 }, r1a0: u384 { - limb0: 0xc803ee8f0141bcef25fe07f6, - limb1: 0x307fb148b69ab24cae2d3a64, - limb2: 0x1bf1b440d1678998, + limb0: 0xf67377a19afeceb76ad219d1, + limb1: 0x5100a715ef3663197a630165, + limb2: 0x26e53fc4d5f9343d, limb3: 0x0 }, r1a1: u384 { - limb0: 0x54243689f606fa75a4492f65, - limb1: 0x53458e28eaea7346e8c8e72d, - limb2: 0x202960692e54fbc1, + limb0: 0x3614bc03de00109253c939b0, + limb1: 0x5d7e932204b235c7868fd8c9, + limb2: 0xf9a4b8fc5c3b95c, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x62ed5e619527551ed7689295, - limb1: 0x12dc6609481d7f59f6967fcf, - limb2: 0x1310a825f686f1a7, + limb0: 0x65f973bfc82816a00b5ed6c8, + limb1: 0x692f2910d47b8fa09af19bfa, + limb2: 0x2ea153192e2e4b2a, limb3: 0x0 }, r0a1: u384 { - limb0: 0xb7874db30e961743392b9c51, - limb1: 0x91998ad5e7a6b0464cc04628, - limb2: 0x259281f10c9601b3, + limb0: 0x76d12902f393e6b843b59394, + limb1: 0xb3e62aac703d04c2e7b0f3d7, + limb2: 0xb463354dffb27a5, limb3: 0x0 }, r1a0: u384 { - limb0: 0xa9f9feea4926c457825e415b, - limb1: 0x9f9a9340eeba1468ea9b5752, - limb2: 0xaf68681a038037b, + limb0: 0x2ba7ad9cf627b6b22c59455, + limb1: 0x2a1bb70e09b2e82c3e47006a, + limb2: 0x2fd508e21d2643c2, limb3: 0x0 }, r1a1: u384 { - limb0: 0xae7aa6951500bc0dd0793730, - limb1: 0xde7d3b0a5f198878c44f3bf3, - limb2: 0x1fef72a0ea0917d, + limb0: 0xd4aeda38605326d0e81104d3, + limb1: 0x341ad2e7fbe765c292255260, + limb2: 0x1409344682b4bcfb, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x62ed5e619527551ed7689295, - limb1: 0x12dc6609481d7f59f6967fcf, - limb2: 0x1310a825f686f1a7, + limb0: 0x65f973bfc82816a00b5ed6c8, + limb1: 0x692f2910d47b8fa09af19bfa, + limb2: 0x2ea153192e2e4b2a, limb3: 0x0 }, r0a1: u384 { - limb0: 0xb7874db30e961743392b9c51, - limb1: 0x91998ad5e7a6b0464cc04628, - limb2: 0x259281f10c9601b3, + limb0: 0x76d12902f393e6b843b59394, + limb1: 0xb3e62aac703d04c2e7b0f3d7, + limb2: 0xb463354dffb27a5, limb3: 0x0 }, r1a0: u384 { - limb0: 0xa9f9feea4926c457825e415b, - limb1: 0x9f9a9340eeba1468ea9b5752, - limb2: 0xaf68681a038037b, + limb0: 0x2ba7ad9cf627b6b22c59455, + limb1: 0x2a1bb70e09b2e82c3e47006a, + limb2: 0x2fd508e21d2643c2, limb3: 0x0 }, r1a1: u384 { - limb0: 0xae7aa6951500bc0dd0793730, - limb1: 0xde7d3b0a5f198878c44f3bf3, - limb2: 0x1fef72a0ea0917d, + limb0: 0xd4aeda38605326d0e81104d3, + limb1: 0x341ad2e7fbe765c292255260, + limb2: 0x1409344682b4bcfb, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xe3aba0c9a4a882c62fa9ec6c, - limb1: 0xccea7b0e1cd14ed74090d903, - limb2: 0x1a29efe8500d2c1b, + limb0: 0x3df63f78ca41825f71513656, + limb1: 0xa16f76d6dca72f822cd1b979, + limb2: 0x24074789c689076e, limb3: 0x0 }, r0a1: u384 { - limb0: 0xf2ebeabb6bf2e9c41b3312a9, - limb1: 0xd3ae68aaa655b1622c03f3cf, - limb2: 0x18f61d099be84922, + limb0: 0x7c65d2ce7ee1b167a1b395b9, + limb1: 0xd3558980781fa7753c7fde90, + limb2: 0xcc7cdfc6d6824b2, limb3: 0x0 }, r1a0: u384 { - limb0: 0xe0aa5743250cb28f2dd933a3, - limb1: 0x9162556f356db1960ff82818, - limb2: 0x2647fbd9b7c6c78f, + limb0: 0xc7e014db4d932bfadbfb4c97, + limb1: 0xfe968d09ca35d652782edede, + limb2: 0x2714d8a7f7ac99aa, limb3: 0x0 }, r1a1: u384 { - limb0: 0x336a0d6a6a24b71ba0991030, - limb1: 0x75b2e4102dcd972364c97023, - limb2: 0x2a45c17960947291, + limb0: 0xc042d95d14d89d73d1d3e061, + limb1: 0xa0cb423edd0e2b0b102ac8d3, + limb2: 0x1925e10615942978, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x5eef0067546495292a8af5d0, - limb1: 0x95c091a7a035297b26f2bfaf, - limb2: 0x2bf4b7d2530c763, + limb0: 0xe849e0690433a3396964e619, + limb1: 0x98c389c12d7a206e54762d7, + limb2: 0x864076bc0b020bf, limb3: 0x0 }, r0a1: u384 { - limb0: 0x3a6e8e7842df56008f72fdd4, - limb1: 0x517c7fbbc2f7b80bdf1833b1, - limb2: 0x2351f1aa1054e138, + limb0: 0xa242b31c9422608243b50776, + limb1: 0xcbfcf58a3fd5f8ea9af82930, + limb2: 0x90fe7f0ed71fb49, limb3: 0x0 }, r1a0: u384 { - limb0: 0x22ef0aa84ac86846aabf86a7, - limb1: 0xa054ff24e259f78edebe1a70, - limb2: 0x64bfecadf34c645, + limb0: 0x427b2626900168aa75a20061, + limb1: 0xae23c7016864465bf55e8a61, + limb2: 0x2135ea0494227b45, limb3: 0x0 }, r1a1: u384 { - limb0: 0x7f2ad2d21e36bfa5f2ae3156, - limb1: 0x8f0272eb648ec0915e74024c, - limb2: 0x44a2e6eb08ae06a, + limb0: 0x53807df6e3c1d41c92f9e9ee, + limb1: 0x46cfadece71164dd5a0623b5, + limb2: 0x1b07614c66d53f5e, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xe3aba0c9a4a882c62fa9ec6c, - limb1: 0xccea7b0e1cd14ed74090d903, - limb2: 0x1a29efe8500d2c1b, + limb0: 0x3df63f78ca41825f71513656, + limb1: 0xa16f76d6dca72f822cd1b979, + limb2: 0x24074789c689076e, limb3: 0x0 }, r0a1: u384 { - limb0: 0xf2ebeabb6bf2e9c41b3312a9, - limb1: 0xd3ae68aaa655b1622c03f3cf, - limb2: 0x18f61d099be84922, + limb0: 0x7c65d2ce7ee1b167a1b395b9, + limb1: 0xd3558980781fa7753c7fde90, + limb2: 0xcc7cdfc6d6824b2, limb3: 0x0 }, r1a0: u384 { - limb0: 0xe0aa5743250cb28f2dd933a3, - limb1: 0x9162556f356db1960ff82818, - limb2: 0x2647fbd9b7c6c78f, + limb0: 0xc7e014db4d932bfadbfb4c97, + limb1: 0xfe968d09ca35d652782edede, + limb2: 0x2714d8a7f7ac99aa, limb3: 0x0 }, r1a1: u384 { - limb0: 0x336a0d6a6a24b71ba0991030, - limb1: 0x75b2e4102dcd972364c97023, - limb2: 0x2a45c17960947291, + limb0: 0xc042d95d14d89d73d1d3e061, + limb1: 0xa0cb423edd0e2b0b102ac8d3, + limb2: 0x1925e10615942978, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x5eef0067546495292a8af5d0, - limb1: 0x95c091a7a035297b26f2bfaf, - limb2: 0x2bf4b7d2530c763, + limb0: 0xe849e0690433a3396964e619, + limb1: 0x98c389c12d7a206e54762d7, + limb2: 0x864076bc0b020bf, limb3: 0x0 }, r0a1: u384 { - limb0: 0x3a6e8e7842df56008f72fdd4, - limb1: 0x517c7fbbc2f7b80bdf1833b1, - limb2: 0x2351f1aa1054e138, + limb0: 0xa242b31c9422608243b50776, + limb1: 0xcbfcf58a3fd5f8ea9af82930, + limb2: 0x90fe7f0ed71fb49, limb3: 0x0 }, r1a0: u384 { - limb0: 0x22ef0aa84ac86846aabf86a7, - limb1: 0xa054ff24e259f78edebe1a70, - limb2: 0x64bfecadf34c645, + limb0: 0x427b2626900168aa75a20061, + limb1: 0xae23c7016864465bf55e8a61, + limb2: 0x2135ea0494227b45, limb3: 0x0 }, r1a1: u384 { - limb0: 0x7f2ad2d21e36bfa5f2ae3156, - limb1: 0x8f0272eb648ec0915e74024c, - limb2: 0x44a2e6eb08ae06a, + limb0: 0x53807df6e3c1d41c92f9e9ee, + limb1: 0x46cfadece71164dd5a0623b5, + limb2: 0x1b07614c66d53f5e, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x3b9ed5020f61d802f8bbd82, - limb1: 0x45b79d5921df6661673bbcbe, - limb2: 0x15f8b8b266749a53, + limb0: 0xa5c3ccf01a951105dd75f94d, + limb1: 0x82a9f0d13174a4a3a63bfc49, + limb2: 0x1f8583025bcbde7b, limb3: 0x0 }, r0a1: u384 { - limb0: 0xf64d32d179bffdf1aa81b2b4, - limb1: 0x734761a1990bb135ee8fdce2, - limb2: 0x15fa720cf3300c54, + limb0: 0x7781d4ba1adb6ac1f842f4d, + limb1: 0x1cb1ae18917edd8ca864c62a, + limb2: 0xe3fc3d3a49635a, limb3: 0x0 }, r1a0: u384 { - limb0: 0xe42b55bdbbe7a6027d58012, - limb1: 0xf7153c0ec2841a764adfb18e, - limb2: 0x2db37d9ebf9082ff, + limb0: 0x1231ed68a1df6f055a3d0195, + limb1: 0xa364228de1f8b75ece047897, + limb2: 0x1628fce71fb56927, limb3: 0x0 }, r1a1: u384 { - limb0: 0x862bbe34722c6dd2ad67d035, - limb1: 0x29664b31b33ee275d8d8f81d, - limb2: 0x25774695478d277c, + limb0: 0x415baf3b592c976c3ee6e348, + limb1: 0x35e71f0194d6974a8da7d093, + limb2: 0x27b2ff2220b58b8f, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x3b9ed5020f61d802f8bbd82, - limb1: 0x45b79d5921df6661673bbcbe, - limb2: 0x15f8b8b266749a53, + limb0: 0xa5c3ccf01a951105dd75f94d, + limb1: 0x82a9f0d13174a4a3a63bfc49, + limb2: 0x1f8583025bcbde7b, limb3: 0x0 }, r0a1: u384 { - limb0: 0xf64d32d179bffdf1aa81b2b4, - limb1: 0x734761a1990bb135ee8fdce2, - limb2: 0x15fa720cf3300c54, + limb0: 0x7781d4ba1adb6ac1f842f4d, + limb1: 0x1cb1ae18917edd8ca864c62a, + limb2: 0xe3fc3d3a49635a, limb3: 0x0 }, r1a0: u384 { - limb0: 0xe42b55bdbbe7a6027d58012, - limb1: 0xf7153c0ec2841a764adfb18e, - limb2: 0x2db37d9ebf9082ff, + limb0: 0x1231ed68a1df6f055a3d0195, + limb1: 0xa364228de1f8b75ece047897, + limb2: 0x1628fce71fb56927, limb3: 0x0 }, r1a1: u384 { - limb0: 0x862bbe34722c6dd2ad67d035, - limb1: 0x29664b31b33ee275d8d8f81d, - limb2: 0x25774695478d277c, + limb0: 0x415baf3b592c976c3ee6e348, + limb1: 0x35e71f0194d6974a8da7d093, + limb2: 0x27b2ff2220b58b8f, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x16b5992d7cec8fd7de956216, - limb1: 0x9d0906788faa15cff36f06eb, - limb2: 0x27c19c0408fc67ff, + limb0: 0x920e9bfca06db481fbc1cfe6, + limb1: 0x43f8be76958260af05be0f38, + limb2: 0x26ba84269427bae3, limb3: 0x0 }, r0a1: u384 { - limb0: 0x99f7ab70228f3aea76e96741, - limb1: 0x3204a618d634b7ad10e5565a, - limb2: 0xdc7898afaebecd9, + limb0: 0xd3ab9aa6e827741aa4d32792, + limb1: 0x2c8b283fde4c90b963d334e5, + limb2: 0x253ca16c771b3565, limb3: 0x0 }, r1a0: u384 { - limb0: 0x67c77eae7236738502cb8b36, - limb1: 0xcea1f2a21b655e607907fd62, - limb2: 0x16b933cb1fbdf744, + limb0: 0xd1966ba3b4c709578310895e, + limb1: 0xa9b126ec8b1f0398a518c811, + limb2: 0x1174e0717594f92a, limb3: 0x0 }, r1a1: u384 { - limb0: 0x8ef422da178a6af58771f92d, - limb1: 0xf7c4b1e3f07ccf969985f566, - limb2: 0x2d0e73c3fe99376d, + limb0: 0x71a172b18c4050c28e13eab8, + limb1: 0xd819023026fc091e4234d4d9, + limb2: 0x6a2309b945f08a7, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xe42e00339da188be91d47528, - limb1: 0xf913d16574d9e0473fbfcee8, - limb2: 0x1e4d9a94e1d900af, + limb0: 0xb964e3c6d975ca8cf820a505, + limb1: 0x58cf1dfe1e77f86538998d74, + limb2: 0x253f8f7c9eb4af1, limb3: 0x0 }, r0a1: u384 { - limb0: 0x4b4e0320208e8e24cba22a90, - limb1: 0xec25ecb52f7ed967179437c, - limb2: 0x85d7bd693b72791, + limb0: 0x751409cbae1c0030ee5977d1, + limb1: 0xe203b703551126fdae59e500, + limb2: 0x2e4d7a2dbc83f9b5, limb3: 0x0 }, r1a0: u384 { - limb0: 0x8e5dccda383d4764c87318ac, - limb1: 0xc9eea850c4f895049a6029d9, - limb2: 0x2e6ba5d68c3f9342, + limb0: 0x3bb2d7500573a130dfcc7b70, + limb1: 0x2e94772d1e8a4db8783ea2f7, + limb2: 0xb43fdec6bd93bce, limb3: 0x0 }, r1a1: u384 { - limb0: 0x11df7081b994e72c6a43c5c0, - limb1: 0xda827b6e851ef066e3b7d749, - limb2: 0x2ebbfcbf39599fd, + limb0: 0xdcad2320f5fe6edb3ee742ff, + limb1: 0xdb00d689081d6770c6978582, + limb2: 0x6029475ae5587e5, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x16b5992d7cec8fd7de956216, - limb1: 0x9d0906788faa15cff36f06eb, - limb2: 0x27c19c0408fc67ff, + limb0: 0x920e9bfca06db481fbc1cfe6, + limb1: 0x43f8be76958260af05be0f38, + limb2: 0x26ba84269427bae3, limb3: 0x0 }, r0a1: u384 { - limb0: 0x99f7ab70228f3aea76e96741, - limb1: 0x3204a618d634b7ad10e5565a, - limb2: 0xdc7898afaebecd9, + limb0: 0xd3ab9aa6e827741aa4d32792, + limb1: 0x2c8b283fde4c90b963d334e5, + limb2: 0x253ca16c771b3565, limb3: 0x0 }, r1a0: u384 { - limb0: 0x67c77eae7236738502cb8b36, - limb1: 0xcea1f2a21b655e607907fd62, - limb2: 0x16b933cb1fbdf744, + limb0: 0xd1966ba3b4c709578310895e, + limb1: 0xa9b126ec8b1f0398a518c811, + limb2: 0x1174e0717594f92a, limb3: 0x0 }, r1a1: u384 { - limb0: 0x8ef422da178a6af58771f92d, - limb1: 0xf7c4b1e3f07ccf969985f566, - limb2: 0x2d0e73c3fe99376d, + limb0: 0x71a172b18c4050c28e13eab8, + limb1: 0xd819023026fc091e4234d4d9, + limb2: 0x6a2309b945f08a7, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xe42e00339da188be91d47528, - limb1: 0xf913d16574d9e0473fbfcee8, - limb2: 0x1e4d9a94e1d900af, + limb0: 0xb964e3c6d975ca8cf820a505, + limb1: 0x58cf1dfe1e77f86538998d74, + limb2: 0x253f8f7c9eb4af1, limb3: 0x0 }, r0a1: u384 { - limb0: 0x4b4e0320208e8e24cba22a90, - limb1: 0xec25ecb52f7ed967179437c, - limb2: 0x85d7bd693b72791, + limb0: 0x751409cbae1c0030ee5977d1, + limb1: 0xe203b703551126fdae59e500, + limb2: 0x2e4d7a2dbc83f9b5, limb3: 0x0 }, r1a0: u384 { - limb0: 0x8e5dccda383d4764c87318ac, - limb1: 0xc9eea850c4f895049a6029d9, - limb2: 0x2e6ba5d68c3f9342, + limb0: 0x3bb2d7500573a130dfcc7b70, + limb1: 0x2e94772d1e8a4db8783ea2f7, + limb2: 0xb43fdec6bd93bce, limb3: 0x0 }, r1a1: u384 { - limb0: 0x11df7081b994e72c6a43c5c0, - limb1: 0xda827b6e851ef066e3b7d749, - limb2: 0x2ebbfcbf39599fd, + limb0: 0xdcad2320f5fe6edb3ee742ff, + limb1: 0xdb00d689081d6770c6978582, + limb2: 0x6029475ae5587e5, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x22a9795b0e8e55fb3474ff8, - limb1: 0x70e50ebe2c6dde23e039a9ab, - limb2: 0xc84efc0dedac731, + limb0: 0x44ec71963665d6ec8ad74841, + limb1: 0x8403830d652edbde8339e929, + limb2: 0x100fb102d85f5085, limb3: 0x0 }, r0a1: u384 { - limb0: 0xebcc47414956f32c736db209, - limb1: 0xe48b25931893a4b431e38bd9, - limb2: 0x7aec12e31fd78b1, + limb0: 0xc055c9daf26d35310e7b1e74, + limb1: 0x40cdbeaffc8383e3cdc8926, + limb2: 0x6fd31831cc5c2e2, limb3: 0x0 }, r1a0: u384 { - limb0: 0x9ab88946eda7695b92c5b95c, - limb1: 0x17b72be8d5f0268f734e389c, - limb2: 0x3fc0c53b330cec4, + limb0: 0xad2ce478f7297f6138ae1c8c, + limb1: 0x4d31d6f7382542621c5b6e17, + limb2: 0x7dbf7c3c0f14e33, limb3: 0x0 }, r1a1: u384 { - limb0: 0x1d666fec28038f9c53d4028f, - limb1: 0xebda0adb7dbd78f18b6059c6, - limb2: 0x130beb61efdd4822, + limb0: 0xe4640196247c27251483088e, + limb1: 0x34dea70f9956ebc54e0606ba, + limb2: 0x8b41cd44b48eaaa, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x22a9795b0e8e55fb3474ff8, - limb1: 0x70e50ebe2c6dde23e039a9ab, - limb2: 0xc84efc0dedac731, + limb0: 0x44ec71963665d6ec8ad74841, + limb1: 0x8403830d652edbde8339e929, + limb2: 0x100fb102d85f5085, limb3: 0x0 }, r0a1: u384 { - limb0: 0xebcc47414956f32c736db209, - limb1: 0xe48b25931893a4b431e38bd9, - limb2: 0x7aec12e31fd78b1, + limb0: 0xc055c9daf26d35310e7b1e74, + limb1: 0x40cdbeaffc8383e3cdc8926, + limb2: 0x6fd31831cc5c2e2, limb3: 0x0 }, r1a0: u384 { - limb0: 0x9ab88946eda7695b92c5b95c, - limb1: 0x17b72be8d5f0268f734e389c, - limb2: 0x3fc0c53b330cec4, + limb0: 0xad2ce478f7297f6138ae1c8c, + limb1: 0x4d31d6f7382542621c5b6e17, + limb2: 0x7dbf7c3c0f14e33, limb3: 0x0 }, r1a1: u384 { - limb0: 0x1d666fec28038f9c53d4028f, - limb1: 0xebda0adb7dbd78f18b6059c6, - limb2: 0x130beb61efdd4822, + limb0: 0xe4640196247c27251483088e, + limb1: 0x34dea70f9956ebc54e0606ba, + limb2: 0x8b41cd44b48eaaa, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x2f597c45c5584b7e592716cd, - limb1: 0x3435693e93bd2e5b7c3039f5, - limb2: 0xd95f66f6ccbed98, + limb0: 0xa4dc3d37041029c7b2f1bb9, + limb1: 0xf72869e330906647a7d54af8, + limb2: 0x705bd30bad6ce42, limb3: 0x0 }, r0a1: u384 { - limb0: 0xe3e61eb2a2a490eecb7985ae, - limb1: 0xfd8b59c604a040370fa982db, - limb2: 0x25d97f4c77679f84, + limb0: 0xb00eef39b09348fd65e27aec, + limb1: 0xd5e053aa5ae39359fac6cdbc, + limb2: 0x90e03f1f820fe9a, limb3: 0x0 }, r1a0: u384 { - limb0: 0x95af25ec99734184c628984b, - limb1: 0x3c7dd94127941e3cfddf3a24, - limb2: 0x61df39750a48e99, + limb0: 0x7f56704e86148b1a5595647e, + limb1: 0xb8e4acc00d27e4eaf2d3de14, + limb2: 0x160398dceafe1fbe, limb3: 0x0 }, r1a1: u384 { - limb0: 0x61b47aa1f7e3e89de63aac39, - limb1: 0xd5d3b51d839e109ea20db37c, - limb2: 0x21abf578638a11eb, + limb0: 0x7c39f499101722b5d82ceec4, + limb1: 0xaf99a11bb8ab6c8134832009, + limb2: 0x2d7388a9d5187a36, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x2f597c45c5584b7e592716cd, - limb1: 0x3435693e93bd2e5b7c3039f5, - limb2: 0xd95f66f6ccbed98, + limb0: 0xa4dc3d37041029c7b2f1bb9, + limb1: 0xf72869e330906647a7d54af8, + limb2: 0x705bd30bad6ce42, limb3: 0x0 }, r0a1: u384 { - limb0: 0xe3e61eb2a2a490eecb7985ae, - limb1: 0xfd8b59c604a040370fa982db, - limb2: 0x25d97f4c77679f84, + limb0: 0xb00eef39b09348fd65e27aec, + limb1: 0xd5e053aa5ae39359fac6cdbc, + limb2: 0x90e03f1f820fe9a, limb3: 0x0 }, r1a0: u384 { - limb0: 0x95af25ec99734184c628984b, - limb1: 0x3c7dd94127941e3cfddf3a24, - limb2: 0x61df39750a48e99, + limb0: 0x7f56704e86148b1a5595647e, + limb1: 0xb8e4acc00d27e4eaf2d3de14, + limb2: 0x160398dceafe1fbe, limb3: 0x0 }, r1a1: u384 { - limb0: 0x61b47aa1f7e3e89de63aac39, - limb1: 0xd5d3b51d839e109ea20db37c, - limb2: 0x21abf578638a11eb, + limb0: 0x7c39f499101722b5d82ceec4, + limb1: 0xaf99a11bb8ab6c8134832009, + limb2: 0x2d7388a9d5187a36, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xd46b0ba3969f9d9276b04d8b, - limb1: 0xdafbcd3ff819533d3316c20d, - limb2: 0x172685f08f83614e, + limb0: 0x26743d3c5ceab5151856abc8, + limb1: 0x2bc840c6b3375132f6df6c4d, + limb2: 0xf20cc4455c9206b, limb3: 0x0 }, r0a1: u384 { - limb0: 0x19d91df9fe17c20a61d19008, - limb1: 0x4ac2bfb84a44a339476014b6, - limb2: 0x2108251ac695aaff, + limb0: 0x75257f283994114ee03b667e, + limb1: 0xb71eada78256c22a8b22564d, + limb2: 0x2c4f6002e64db7e4, limb3: 0x0 }, r1a0: u384 { - limb0: 0x1d788433b2d4f6f34d99a6ea, - limb1: 0xc4efa4c581c91424e9a27e68, - limb2: 0x229bc6698e7fa365, + limb0: 0xadeaeea86f50da58c232d0b5, + limb1: 0xe988059d0234448257239cec, + limb2: 0x23c7423d92bbc634, limb3: 0x0 }, r1a1: u384 { - limb0: 0x585423a3270a0228fba6c848, - limb1: 0x8df8a73570f1ea44d6a1e4be, - limb2: 0x1592cc66c2cd801f, + limb0: 0x6afee648e46e570b43f3696d, + limb1: 0x9a3f1aae0067f1de3d0a489, + limb2: 0xa7256957d6a8ed, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xd46b0ba3969f9d9276b04d8b, - limb1: 0xdafbcd3ff819533d3316c20d, - limb2: 0x172685f08f83614e, + limb0: 0x26743d3c5ceab5151856abc8, + limb1: 0x2bc840c6b3375132f6df6c4d, + limb2: 0xf20cc4455c9206b, limb3: 0x0 }, r0a1: u384 { - limb0: 0x19d91df9fe17c20a61d19008, - limb1: 0x4ac2bfb84a44a339476014b6, - limb2: 0x2108251ac695aaff, + limb0: 0x75257f283994114ee03b667e, + limb1: 0xb71eada78256c22a8b22564d, + limb2: 0x2c4f6002e64db7e4, limb3: 0x0 }, r1a0: u384 { - limb0: 0x1d788433b2d4f6f34d99a6ea, - limb1: 0xc4efa4c581c91424e9a27e68, - limb2: 0x229bc6698e7fa365, + limb0: 0xadeaeea86f50da58c232d0b5, + limb1: 0xe988059d0234448257239cec, + limb2: 0x23c7423d92bbc634, limb3: 0x0 }, r1a1: u384 { - limb0: 0x585423a3270a0228fba6c848, - limb1: 0x8df8a73570f1ea44d6a1e4be, - limb2: 0x1592cc66c2cd801f, + limb0: 0x6afee648e46e570b43f3696d, + limb1: 0x9a3f1aae0067f1de3d0a489, + limb2: 0xa7256957d6a8ed, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xe7706744b8bc6de8adffa8fb, - limb1: 0xda64ff702f6a33f19c4c8b78, - limb2: 0xdbf8b7b567148bd, + limb0: 0x9894b9b6df6285e00cb3ef9d, + limb1: 0xc7799b231f547596527979f9, + limb2: 0x1873cf42f2befcbc, limb3: 0x0 }, r0a1: u384 { - limb0: 0xb2d9b2bfb4b0c5479e75c62c, - limb1: 0x8dd0656ab8b5ef3e0e28f09f, - limb2: 0x23681483d8d0eb84, + limb0: 0xea5b37d753c87bdd55f0ed0, + limb1: 0x70d0582e29fd33896e945be5, + limb2: 0x273059304eef6b83, limb3: 0x0 }, r1a0: u384 { - limb0: 0x2253fbc49469c2313fa71ed8, - limb1: 0x6dc1c03748a743f727e97a97, - limb2: 0x2aabf71729efae9d, + limb0: 0x1a8c1b6d717a3b41ece55725, + limb1: 0x7b31c1b97f15745a6d80ea0d, + limb2: 0x2cd26d3a7bbe93e6, limb3: 0x0 }, r1a1: u384 { - limb0: 0x3323537343a0bba2d54843ec, - limb1: 0x5de45ef0d86e54ce607509ba, - limb2: 0x20de604beea42785, + limb0: 0xe2ad8bc0279b5c304c489ca6, + limb1: 0x176d1c945108ce77fcd238cd, + limb2: 0xde3c7c3f1c3d01b, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xa4214da5f99cf79f31e7cab8, - limb1: 0xcdbc1bb56a306986b203dd5a, - limb2: 0xeba0694c1c072e3, + limb0: 0x3980a9ac8c34a235d2616212, + limb1: 0x84c8a8ab074ce118b68f30e9, + limb2: 0x13d1902579c8a95e, limb3: 0x0 }, r0a1: u384 { - limb0: 0x50f94c6a9d69c2b70eadf618, - limb1: 0x6e33f5c7148313958afde193, - limb2: 0x2590adfbeb8cd63a, + limb0: 0x84b1be8046674b6544cdbd07, + limb1: 0x198c1a70db0768c46ee0879f, + limb2: 0xb7e46866f7c1d4f, limb3: 0x0 }, r1a0: u384 { - limb0: 0x5344f6b18cbd65101b2877e6, - limb1: 0x40393570e382508f0711baab, - limb2: 0x2552d445eb420c36, + limb0: 0x5aa04f6da050797974642dff, + limb1: 0x67018b676db95697c6fc0e94, + limb2: 0x174b5365db908344, limb3: 0x0 }, r1a1: u384 { - limb0: 0x74a5e277b95cc7f2f26ada, - limb1: 0x2899472c6fef63b4d4401b76, - limb2: 0x14653b6580e35c96, + limb0: 0x12ae4d7bff5800094457c75f, + limb1: 0xaf7fb1cf0adfdefc0943c20d, + limb2: 0x2e168cd37dc90c25, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xe7706744b8bc6de8adffa8fb, - limb1: 0xda64ff702f6a33f19c4c8b78, - limb2: 0xdbf8b7b567148bd, + limb0: 0x9894b9b6df6285e00cb3ef9d, + limb1: 0xc7799b231f547596527979f9, + limb2: 0x1873cf42f2befcbc, limb3: 0x0 }, r0a1: u384 { - limb0: 0xb2d9b2bfb4b0c5479e75c62c, - limb1: 0x8dd0656ab8b5ef3e0e28f09f, - limb2: 0x23681483d8d0eb84, + limb0: 0xea5b37d753c87bdd55f0ed0, + limb1: 0x70d0582e29fd33896e945be5, + limb2: 0x273059304eef6b83, limb3: 0x0 }, r1a0: u384 { - limb0: 0x2253fbc49469c2313fa71ed8, - limb1: 0x6dc1c03748a743f727e97a97, - limb2: 0x2aabf71729efae9d, + limb0: 0x1a8c1b6d717a3b41ece55725, + limb1: 0x7b31c1b97f15745a6d80ea0d, + limb2: 0x2cd26d3a7bbe93e6, limb3: 0x0 }, r1a1: u384 { - limb0: 0x3323537343a0bba2d54843ec, - limb1: 0x5de45ef0d86e54ce607509ba, - limb2: 0x20de604beea42785, + limb0: 0xe2ad8bc0279b5c304c489ca6, + limb1: 0x176d1c945108ce77fcd238cd, + limb2: 0xde3c7c3f1c3d01b, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xa4214da5f99cf79f31e7cab8, - limb1: 0xcdbc1bb56a306986b203dd5a, - limb2: 0xeba0694c1c072e3, + limb0: 0x3980a9ac8c34a235d2616212, + limb1: 0x84c8a8ab074ce118b68f30e9, + limb2: 0x13d1902579c8a95e, limb3: 0x0 }, r0a1: u384 { - limb0: 0x50f94c6a9d69c2b70eadf618, - limb1: 0x6e33f5c7148313958afde193, - limb2: 0x2590adfbeb8cd63a, + limb0: 0x84b1be8046674b6544cdbd07, + limb1: 0x198c1a70db0768c46ee0879f, + limb2: 0xb7e46866f7c1d4f, limb3: 0x0 }, r1a0: u384 { - limb0: 0x5344f6b18cbd65101b2877e6, - limb1: 0x40393570e382508f0711baab, - limb2: 0x2552d445eb420c36, + limb0: 0x5aa04f6da050797974642dff, + limb1: 0x67018b676db95697c6fc0e94, + limb2: 0x174b5365db908344, limb3: 0x0 }, r1a1: u384 { - limb0: 0x74a5e277b95cc7f2f26ada, - limb1: 0x2899472c6fef63b4d4401b76, - limb2: 0x14653b6580e35c96, + limb0: 0x12ae4d7bff5800094457c75f, + limb1: 0xaf7fb1cf0adfdefc0943c20d, + limb2: 0x2e168cd37dc90c25, limb3: 0x0 } }, @@ -4678,2395 +4678,2395 @@ mod pairing_tests { let hint = MPCheckHintBN254 { lambda_root: E12D { w0: u384 { - limb0: 0xca290a885d5586f335dd365a, - limb1: 0x22443b1dbb5ae87e19167dc4, - limb2: 0x15b0c60344049c9f, + limb0: 0x7b012eeba411e7545c404bbe, + limb1: 0xa754caf0589c24909e590228, + limb2: 0x13d296c9e213feb6, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0xd9b350851e3bdfefc4f8d3a4, - limb1: 0x8d46d2ef61c99655d477ca19, - limb2: 0x7489a29a6bd37f, + limb0: 0xf922eeaae57369160eed3935, + limb1: 0x3f2dc8035f4fcb812493ecf5, + limb2: 0x2592f4cb693ff488, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x408e896793bd7236e567d2b8, - limb1: 0xea2a1c6e78d8ad9f0cc44c93, - limb2: 0x17ea5c0ce2015d89, + limb0: 0xaaa473d1dfe6dc52d8739f32, + limb1: 0xb2943e6803563bd7a19c3e52, + limb2: 0x1ef946e5c253a585, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x3d232020e01f08443f199e6b, - limb1: 0xef6ca005c96039ce41498aab, - limb2: 0xd8cee876ecca47f, + limb0: 0x22154af4f7326b5f6c5c441d, + limb1: 0x13dcedb3932e6170da976a55, + limb2: 0x10788fdd560077ba, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0xcd449cccf0962b5b55b2fd69, - limb1: 0x2b50f1381b398b00b27590e5, - limb2: 0x5cf9948502befab, + limb0: 0xddcab5a98707253769c5f208, + limb1: 0xd4c4e5476c43a742cdb6a8d9, + limb2: 0x1214863b5a385761, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0xc80a6fecffa85e552d4a8847, - limb1: 0xd5df273ebc4ef7ce6c155d0b, - limb2: 0xc856a0149283504, + limb0: 0x466cc661c364df53da613fd3, + limb1: 0x220477644169a23e4da44be, + limb2: 0x2d834f48c82ae9c3, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, lambda_root_inverse: E12D { w0: u384 { - limb0: 0xf9165bc84dbd182aa8316bc4, - limb1: 0x2c133001516c61b42f17e955, - limb2: 0x1e2c501069f40ccc, + limb0: 0xe1f18dc463f422b115091e4e, + limb1: 0x9e002a8978058f9e7a63f300, + limb2: 0x228c0387c56429e2, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0xf2fc4ecf8b5b14b163d2e2f4, - limb1: 0xd77be5339b45b2e04cc18e06, - limb2: 0xcb58f3f2cf4f42a, + limb0: 0xbcf34ef6b05b42018a8e4244, + limb1: 0x2b5379dda123d70585dfe1d3, + limb2: 0x4c1c380be5a7918, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xa5b2fd42e6fc4dac764459dc, - limb1: 0x7087e01764c3f081eac39f19, - limb2: 0x2f31b865584c3288, + limb0: 0x60b5d0e527d9fe47f237c679, + limb1: 0xfe2f8ac89fa4d2940d5a4751, + limb2: 0x1596985fc21a9bc0, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0xad8af38203fa60a781adaeb5, - limb1: 0x7e9bc71cf5141eb0c3225b75, - limb2: 0x1ca180ebc027ff71, + limb0: 0xcf1b962ea7f8d0d64ef46698, + limb1: 0x8b92e9881848e8ce17e27b94, + limb2: 0x2f89e304609a097e, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x9b3ffcce58d9883b42831589, - limb1: 0x1eec7ae71d5e8fdbe5ac141a, - limb2: 0x136a97162d3de91a, + limb0: 0xfa540d084ab4f7ed9aa82621, + limb1: 0xbba5da375416c55a9f3074d3, + limb2: 0x1dd999f8df8a24b7, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x57d7ed90efc307e5f76f1b47, - limb1: 0x4100a00eb0bc81e9b261b2a8, - limb2: 0x24fde20804ffebd3, + limb0: 0xe3c99364c56a5ade4584af1a, + limb1: 0x9feab9c263b0ff02f3b07928, + limb2: 0x12fc2d7015dfb5e, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, w: MillerLoopResultScalingFactor { w0: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, - w2: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, - w4: u384 { - limb0: 0x73692b9376d090b20e5ccfca, - limb1: 0x7bd294b9c757d6f7aa4c6347, - limb2: 0x778f7e113269a6, + w2: u384 { + limb0: 0xc2778d80388a54eae80e565b, + limb1: 0xf25dc130d86b34cb0fbe750e, + limb2: 0x2d47bdc1ad79a2d8, limb3: 0x0 }, + w4: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, - w8: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, - w10: u384 { - limb0: 0xc24790f6d545aed52a2fbdb8, - limb1: 0x184dac0e71909eb223ea52bf, - limb2: 0x279a0a9dbd98089c, + w8: u384 { + limb0: 0xa228aa43fdb7f215226ece12, + limb1: 0x22463bd8b6519b59af036109, + limb2: 0x10bd041a04b54229, limb3: 0x0 - } + }, + w10: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, Ris: array![ E12D { w0: u384 { - limb0: 0xc23cbce2b6a75c34330f51fd, - limb1: 0xecc05051800e2cfbf57b29f8, - limb2: 0x2427540cc06e940b, + limb0: 0xd556ad868e1c8a23018de366, + limb1: 0xf6dd7eb3a4ca3a1e7ef76eee, + limb2: 0x10e7de936a1df313, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x8b8a60ff08b7f8e8a11692b1, - limb1: 0x1c74909404e06d66895c3d6e, - limb2: 0x1ee3260865731bf8, + limb0: 0xe7ca2e7173a67b8cb964f987, + limb1: 0x6bba2dc3b0895b39ac88180d, + limb2: 0x16af72cdbb761501, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x6978c7a57ac491654d80f93b, - limb1: 0x2d0aa578733e1e9a75e0d4e6, - limb2: 0x2f6da873030b0a1c, + limb0: 0x63c29ac15aefde57ee30edba, + limb1: 0x8d94e1db488db17b83adcd5e, + limb2: 0x1c2577ff6a784372, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x2b496f9b064ec124053d8fcc, - limb1: 0x38c60a2aa6db85b476fd8edd, - limb2: 0x22b0048f9b2f7af, + limb0: 0x896aab8d1dd49764e3ff579e, + limb1: 0x2e9f8b1d93bc3b4bfb95244e, + limb2: 0x263785964f541a4, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0xd0001bbd27504a1139dc155b, - limb1: 0x34057bd23069141f40c9691b, - limb2: 0xaaaaeb9249e00da, + limb0: 0x62c45e6c7376294e8f8debf1, + limb1: 0x83f823a2b1f4e0ee3deabf72, + limb2: 0x257fb4016329f43a, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x9583313d9fa2550cd4784e8f, - limb1: 0x9f210bf3ca896f9183ab9dda, - limb2: 0x242388994639fab4, + limb0: 0x5749cc0e075399a582f69903, + limb1: 0x2d72d91c384593d887898b98, + limb2: 0x65c188e9bc00fa5, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xcca0c959df4d14b0694a94e0, - limb1: 0xee744033f8c5d94516a23146, - limb2: 0x1c5f17f2a3a30684, + limb0: 0x5089c3d2e45db42368e1ce48, + limb1: 0xca45ed5e074dd5414bcb8b97, + limb2: 0x7bc6435b16e58e5, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x30c1356e4ec93b611d76aaa3, - limb1: 0x654b30acb4318efc8b292571, - limb2: 0xb3110ec082344d5, + limb0: 0x232990bad722d9db55141074, + limb1: 0x6b285822ae913cc01bf48292, + limb2: 0xd5e51d681fbef1d, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xd2764ab9b29f269eca16b8ea, - limb1: 0x3f69614ffa992dd3c39e6b2e, - limb2: 0xc7139fb36f16f7a, + limb0: 0xfdb731f822af5dd59f0f25dc, + limb1: 0x9b6f3d408e0d9d5a48776040, + limb2: 0x21153a518ba7f11d, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x4e52358174a938be0bbfdf25, - limb1: 0xd7bc341e7a8b5cfc7547dc8c, - limb2: 0x92c48b46fb527a7, + limb0: 0x18339d7a32feff4a429fa252, + limb1: 0xf1cba1fbd807474aa0757188, + limb2: 0xc9044ede7dc2972, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x981719694be1416853a8ffa3, - limb1: 0x8abbebc48b98dc3e1f103acb, - limb2: 0xfb81a3d828111c9, + limb0: 0xe36e7364dcd19cce82abe496, + limb1: 0xee027e6e9ce61240b9e3fb9f, + limb2: 0x2aeaa027c88b1f27, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x138c06499aa6882094d1b9f2, - limb1: 0xe246e060fe28422f2ddc48c2, - limb2: 0x2dfbd2df9a2acfbf, + limb0: 0xb857fcbab3e82c5a0f3c755f, + limb1: 0x1a1fcf78b01830fa0ee88d4b, + limb2: 0x2a8546a248dc800f, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x584bc93df49dc1930dfb29c4, - limb1: 0x771e3d582a3dfdd65858b878, - limb2: 0xb88a5b3664de85d, + limb0: 0x3cb6bc6f3cfee4c3f9783146, + limb1: 0x965d67a3d9d01d461511292c, + limb2: 0xf0d40a38ddcaab3, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0xd3c8b116da9ebadd4db46f59, - limb1: 0x330ec31735d1f36edbc8837e, - limb2: 0x1009b7126eb5f6d5, + limb0: 0x30d556ac1d5b1fc7647350e, + limb1: 0x1b515c801676f189844c5a74, + limb2: 0x17d295b15f7f8c1a, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xc1b8277f86060a7ad22b1292, - limb1: 0x2bb5e9f1abee8e8438191d32, - limb2: 0x11bb3ce293869446, + limb0: 0x1e1f95f6d0afbe119d2269b6, + limb1: 0xc6913a3dd6312566c011cc6d, + limb2: 0x2c33d0bc81ae8312, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x47e42957c31824165a2676f2, - limb1: 0x8f526c09f83b45cc1767fe30, - limb2: 0x2ac7c8f872b33ba0, + limb0: 0x7de228c64d05d857cdb31343, + limb1: 0x20dc680dafc7737469a945d0, + limb2: 0x2a98ae5b5b2fd3fc, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0xc17989f5b4c7aa6afaa6fe05, - limb1: 0xfca9d8366148797aedaa7371, - limb2: 0x35945f1f04759f9, + limb0: 0xcff868bf68c8a6d94ab52c49, + limb1: 0x59db1ba8e5f7e7236dd3f63e, + limb2: 0x1510aa992cc556db, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x3644d9805ef988893422d462, - limb1: 0x22a2ea597968007d972fe22c, - limb2: 0x2493d437ebf2e3b, + limb0: 0xcdf246cd412112f7027aa07d, + limb1: 0xd8f32bba1d6b187f67c4eebe, + limb2: 0x18f26eb941739472, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xb2548e88ada83173883a9998, - limb1: 0x3db68e5cff58810e88fe2d4d, - limb2: 0x4dc43dfa7cc836c, + limb0: 0x7fb3b84ef775a993bfdd09f0, + limb1: 0xcd0c7111312c941393548e7b, + limb2: 0x1cf06f00842440c1, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x9e475d086b8d4765d196be1d, - limb1: 0x7817e1fe7f57eee100e0d241, - limb2: 0xe465cedf944bf88, + limb0: 0x7fb0ee39fd9c4724c737182e, + limb1: 0xc5d096de8d49a10b763109be, + limb2: 0x2be8e578c6670b0b, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xba50071b337353e99d2bd27, - limb1: 0x4954d62b6bc9a8b8a8bf49f9, - limb2: 0x13d19496594970, + limb0: 0x7ac775d7c637e32c92393ae, + limb1: 0xfcc730760f8f872fdf4f371d, + limb2: 0x284de99ad0be6309, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0xa5406b22734ae9a47e839dac, - limb1: 0xd11e68143730599ee6e580eb, - limb2: 0x2c4eb2eafbe3f289, + limb0: 0x58b92d2ecd2a2d5029a33fb8, + limb1: 0x9dac67372abb2dda66572884, + limb2: 0xf8233797514202a, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x1d47421364d58438f2223895, - limb1: 0x4ccb29b0dc593c9724b3ccf3, - limb2: 0x21ebe2bceb913604, + limb0: 0xd9f2d3cd53c621258cec66e1, + limb1: 0x36a6f4b16abf4fe10aa7183a, + limb2: 0x2c7eb01da97edadc, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x5705d188b4acf4fb84200715, - limb1: 0x402924aa8344ec5a36585096, - limb2: 0x21517ea49478bda6, + limb0: 0xa3e3bf89dd0695b9b10a2c82, + limb1: 0xb8eef1f3e0e4aa86a2bb0889, + limb2: 0x2159164cf99a18e2, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x9cff434805348bb2c0f8c9c8, - limb1: 0xb682f758bf63a3c8759506df, - limb2: 0x922d4149def37e9, + limb0: 0x1cc952350e673d4f5b07716d, + limb1: 0xb2c57e08af807a7afea0e93b, + limb2: 0x1460a8f6e75d1f23, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0xfc82bbf0bfa61c5d5443b677, - limb1: 0x7f913e7721ac537ff6cd95a1, - limb2: 0x20770717801b5b93, + limb0: 0x8994b58c42d391cf8b150719, + limb1: 0x58e1076265c31e0e46d977cc, + limb2: 0x264c02bbd313eff8, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x306ac2ff1f3824750e7ddfff, - limb1: 0x41e2e35bf871a2c5629198d4, - limb2: 0x8d0ef18a421f002, + limb0: 0xd1eafbfe3881f1a433c0b655, + limb1: 0x2b15b10246ddb5f3116a9f51, + limb2: 0x2c46dc7d501f761, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x911c19468f8dcfbd644efadd, - limb1: 0x9a1f33f8eeefb8b4a8183d63, - limb2: 0x2f98d441bdeff8e1, + limb0: 0x4af42684ea84d31c0a940891, + limb1: 0x6d2ece721e83bd932aee1141, + limb2: 0x21958ab4a2074aca, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x4d90774ed321ce563d469ddc, - limb1: 0x4d0dbf5cbecc275488199472, - limb2: 0x18bb709a2a81b5eb, + limb0: 0x88917ef208e05825cc9f2129, + limb1: 0x9055ddf9b8d868e3bf91da8c, + limb2: 0x8627546b7fb3cdf, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0xdd0c595948daa77dff64e96, - limb1: 0x6f1aa719151ff1c03fb4f879, - limb2: 0x2f493b288e3b52d8, + limb0: 0x3857ea0a05fc673e22eb08c1, + limb1: 0x484183c8c8324c17f765a426, + limb2: 0x2fea348db4145319, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x76446676d1673c54eaf4dcf9, - limb1: 0x5bbadbc511f70ce2d16c1e57, - limb2: 0x21e14da6042ea5ad, + limb0: 0xe8c31c46a133375b97510904, + limb1: 0xfaef300d6e976c0dbe6ecdbc, + limb2: 0x2e1ef14a067cca94, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x700da91e340260a16202a3d2, - limb1: 0xcf967d832b68b249082d05f3, - limb2: 0xf79aeca75191056, + limb0: 0x6a36d41e67245dcdefaceac5, + limb1: 0xd9bf09aad345166d484d4be, + limb2: 0x3f1247ac5e369ef, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x4c46a53fd645a0e84baa27b9, - limb1: 0x81b59388916b35c7b9c24088, - limb2: 0x2c17925b811d5ba7, + limb0: 0x4eb5ee737aad432fe0a11a7e, + limb1: 0xda0a6862efb37debbfbcf68e, + limb2: 0x2488d805d2eb6f6c, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x51bbf09c10e11397a36b4bcc, - limb1: 0x8ff181f8828b475457925c3d, - limb2: 0xfbcd115cc6fb3b8, + limb0: 0x8ca7ac13d4e448946d421e84, + limb1: 0x9df1e0125c036e67d2af9446, + limb2: 0x16e4239f0fc3bbd9, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x5b26d4b74b938589d34d211a, - limb1: 0x2a885c458bcf17d6f8d668bf, - limb2: 0x1ef17c7cabd2b593, + limb0: 0x697da60ee61ed371ce5f0ead, + limb1: 0xf5aaa4efb8db17c041528e85, + limb2: 0x27f1442457994913, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x50f41a9ac2b17d12b9996dba, - limb1: 0xca5f80706b641166dee34a14, - limb2: 0x6b1958b1447d5c9, + limb0: 0x1705b340d23bd624fe855a7e, + limb1: 0x407ed945576a63657055b03d, + limb2: 0x22536525ba3d6db3, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x9c4d1cd6ad02ffacdeb4546a, - limb1: 0x356de4a8b4b828f81ca6dd7a, - limb2: 0x2fd93ddfa60cd7b3, + limb0: 0xdb0dff27a490b25f5ba188d2, + limb1: 0x82a6a8f80908da6c42a92775, + limb2: 0x2561973eaa8ac016, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0xdf5deb6232443fb467cc8ab4, - limb1: 0xfd53bc17640b6c1982e228ec, - limb2: 0x300251993b905c07, + limb0: 0xe21e8711780aa1a58f5660c8, + limb1: 0x6007401570a38734b27c188f, + limb2: 0x2cd70ad8aa59de6d, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x1fd2b9c17fcb434f1392196a, - limb1: 0x5c76c0e011cc7a07328a5c5a, - limb2: 0x78507009929b471, + limb0: 0x37f180baee038e71d5d068a7, + limb1: 0x28529b3d13c1fddb0d07f6d4, + limb2: 0x1f4e9112a0d14873, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0xe67fe7a3743374199221b08b, - limb1: 0x7cced11bee5ab662dc44e9b9, - limb2: 0x62bf55b33935ba6, + limb0: 0xe94fba629c424c99531a2508, + limb1: 0x26e077d71fe414db02571457, + limb2: 0x1f9e1f02d377827b, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x9c167f32deca9b96549858f9, - limb1: 0x57cc9dd5116d27ffd6c10448, - limb2: 0x255d36c779154ae4, + limb0: 0x3fe1fbd087f921b9b45039c5, + limb1: 0x399576ff097634bef3a36087, + limb2: 0x218a5ecfd22ce30f, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x58580b58b95a2e9105f9ab25, - limb1: 0x5cf0563fd7d1177a63f5fdc0, - limb2: 0x5f8f1cfc92be5f2, + limb0: 0x26d1188f4a1550af9110366c, + limb1: 0xaf8d50ff033f911449e10c52, + limb2: 0x1c5b4fa0905edd26, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xdfa0ed91b27045e16a93f3ac, - limb1: 0x47ce01f997b77f01376eaee8, - limb2: 0x12d7672f445941d1, + limb0: 0x8f764ee0359c3a5186a8c6cd, + limb1: 0xfbd2f1c239037ca59726e45c, + limb2: 0x2d135aefbb7cf95a, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0xdb93676c04471336350c655e, - limb1: 0xb9cc7c1fc83ad4d7991abc5f, - limb2: 0x7cd8a2f4207f870, + limb0: 0xf00b6fdcba502a90c3a0a9de, + limb1: 0xf60d2711e18905115fddff45, + limb2: 0x1a728af3133558c7, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xf6a54b86672c3c0f33747267, - limb1: 0x3037717cc23620e17557c4ed, - limb2: 0x13333f55cff4dc20, + limb0: 0x8a27ebecb537b83d34dfe0b5, + limb1: 0x75bf91e9f74a220d5da637f7, + limb2: 0x103aae86fd6c6b74, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0xef037d97674d55bed644c5e0, - limb1: 0x8e0175ec1ba8eacb40d100b, - limb2: 0x1d35c40e57c35e81, + limb0: 0xb0a3b0fb7444a1dfac7508f6, + limb1: 0xf2b9cc21dbb934b8a5a47a2d, + limb2: 0x1a8993891c93608, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0xdf607de7f2b3448dc16e524, - limb1: 0x6c1011cbedd677625447d276, - limb2: 0x2b7325330800543e, + limb0: 0xad86ff4f85e25347f133726f, + limb1: 0x7cf0df3d94fd0e593d91658a, + limb2: 0x1939650f4d3b1eea, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x929ab9bccaa541963837c9bb, - limb1: 0xfbed692a47b26f060a4d0cf4, - limb2: 0xf323aba27be930b, + limb0: 0x52ffb3d98e2ab4ce00ada4c3, + limb1: 0x77bdfe82c9681151a9b923af, + limb2: 0x21854b6696bb976d, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xde398837cc2d48cb85dcf780, - limb1: 0xb0f7fda30619769bc3dce042, - limb2: 0x2f535d5660439a21, + limb0: 0xf62fc0257122a7dc48587b9d, + limb1: 0x4a1c4b86e044f326d837627d, + limb2: 0x18af117b15727a5, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x10f242332137a3f7ff178b13, - limb1: 0xbb0031f5f1661e23fdf816f4, - limb2: 0x124ac27b5b2f85d3, + limb0: 0xd784d65416f0ee51680db29f, + limb1: 0x2f3ab4af9c0b536663aff09c, + limb2: 0x2fd4e2f6eba629f7, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xb17e4b8e879ad9224e408e1f, - limb1: 0xddedea3d713e5c7b94596f42, - limb2: 0x1d0d5b7118065093, + limb0: 0x67d46e23b0766e94fc6b79c1, + limb1: 0x312d526fd720ab405b1cf4b1, + limb2: 0x1ce4c55a7a848b84, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x662cd473d5884e55ff339715, - limb1: 0x572cb73949ae1030e25955b6, - limb2: 0x5405a0482edf8ce, + limb0: 0x26aeb18757f0444375c646c6, + limb1: 0xbbfa2641667bf969b10fea38, + limb2: 0x4d36fdab7f2e723, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0xa121b1795ac28885d81560df, - limb1: 0x1c6978c0045764f8cc24e06b, - limb2: 0x23b31069fa2a5d29, + limb0: 0xf468fffb4bf05747a4685533, + limb1: 0xd4fd8a6300e2ee087f502129, + limb2: 0xda942784b2b3411, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0xb2717f803b6860c8706e03cf, - limb1: 0x2dac28bf58a109133a0da4f0, - limb2: 0xefdf884f1b4254e, + limb0: 0xa0ae06e13fe1d9e864afc0d8, + limb1: 0x45ddd46752f01e5812b489de, + limb2: 0x2699829223ccb332, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x7a41dceafe724cb7f687b47, - limb1: 0xbb84e92b681ff0834784896a, - limb2: 0x5d924a6d7ad6f4, + limb0: 0x35a1559510e8184d01bd0100, + limb1: 0xe5e2879f17737565c76c5a6b, + limb2: 0x61d0d3e76fc4d36, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x9e87877bbafc5ccd839e5dfa, - limb1: 0x60b4992ec8b5a3f4a3410a67, - limb2: 0x210b035b6067e9b9, + limb0: 0x9471d1241364d18039236d5e, + limb1: 0xec97a822c0fcfadb703e8e49, + limb2: 0x2f68c9d741cb94ec, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x93d1cebd7d95336a5176c406, - limb1: 0x46c72c1d748bf585d8399b0f, - limb2: 0x271d8a3687eb5baf, + limb0: 0x26241c10b91ac4b0b0f380ca, + limb1: 0x4949bbb6f44de961a0400bae, + limb2: 0x1ad84a67489fef40, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x2c78950a70160923b54341f4, - limb1: 0x37133f8c7602b7827f63288a, - limb2: 0x18b67bfa41d70f38, + limb0: 0x6de0655e02e9772a3cc4b1d5, + limb1: 0x2d4a1c0b7d84fbfa47d17713, + limb2: 0x24004cd388efd0ce, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x3a23f2c3ceff776f9843626f, - limb1: 0xc0aeb624fc860962ff20cab4, - limb2: 0x20fba862c5090aaf, + limb0: 0x950e9f56a52acec9bd874e6, + limb1: 0x22dce48c65e6d60cb936c649, + limb2: 0x14eda08ecdf2485c, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x9fa673874ea60062a07129b6, - limb1: 0x4c8032e926d7c77d32ecbf68, - limb2: 0x169227d2f817d8e8, + limb0: 0x260fb35a218342854cddd939, + limb1: 0x45f4d18c9e5641cb3ad28906, + limb2: 0x2cbb791cc2ed801, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xf2696cf64d649f8f11876c75, - limb1: 0x86f6c5bc8c25ff4dc31b7f6d, - limb2: 0x22b19c8107c2be13, + limb0: 0xd8609ca08440423a114cd709, + limb1: 0x9a632a2a5822b9c25939be31, + limb2: 0x26796262628d0d, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x9a82da2f5fac31c02a423cad, - limb1: 0x7d7ed10add605cf20c9f3f27, - limb2: 0xe5f3e6e49e8becb, + limb0: 0x65940bd03967422e48a8d8a1, + limb1: 0x60f83884d54510cac4a41d03, + limb2: 0x14a6ffc8a061b77e, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xe798a181c83637d960b7e5a3, - limb1: 0x7601987ec5e98d73e4f5fee2, - limb2: 0x5b59efdbe1fbf94, + limb0: 0xa4ccc9201a608df6fd643a27, + limb1: 0xea1f3f0fdc27fdb1086931f4, + limb2: 0x25e1bbb8efc5dca3, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x686a04e5604cd1616d7efa00, - limb1: 0x9aba84bf3895f6800b9c125e, - limb2: 0xa2b423922528419, + limb0: 0x73ff56f57e7347e436f2437, + limb1: 0x997fee62ced65bfbabc12e5e, + limb2: 0x7806f89b50ffb20, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0xdd7a7c9d8a08d99de1e52369, - limb1: 0xa8432ad16d22e31f2c7b1f5e, - limb2: 0x2170919625f9cf12, + limb0: 0xf41334652b17006913469143, + limb1: 0xe3c1eee4f53d343aafa46ed3, + limb2: 0xbd658465f365011, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0xf8f235262c60b0a803cf50a6, - limb1: 0xeca663bde2df849cea4afe3e, - limb2: 0x572136520a3b75e, + limb0: 0xb01354cb2a2f4bd7bd93d2bd, + limb1: 0xdb01cfd8e64f43f1ddebd7cb, + limb2: 0x67bd996f7a56a37, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x33ab667375aee1f78ad52ce6, - limb1: 0xbd40f0b0fe2e0f71d916d4d8, - limb2: 0x1bc15424e945ec9e, + limb0: 0x4b7324c1790c6d5f848348a5, + limb1: 0x6f215c39415887a56a992dc2, + limb2: 0x5da307e002d7b26, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x1ee29f24716473e388768932, - limb1: 0x6571b107fdb61ad94bb0a957, - limb2: 0x17fdc3f1907aae0c, + limb0: 0x9bcbb5e6233ab54a1f000413, + limb1: 0xefc6e06a1ec1571fddb815bd, + limb2: 0x3a49e3f48fbae74, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xd985a774ae2f18f0e1257d44, - limb1: 0x66c8433cde7c3ec0f9bd0acc, - limb2: 0x15b84c87968b1a87, + limb0: 0xcbf2c378218f1ede6348ec79, + limb1: 0x35beb269461b45068a34797f, + limb2: 0x1c9b5c509173c12, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x106791d8aad30bf7dd086028, - limb1: 0xd02358c4b70f145af5697c4, - limb2: 0x8a0cc84838da651, + limb0: 0x8009db06fa42905e150b2d40, + limb1: 0x19282f75659d699ba25fcd42, + limb2: 0x5387002838b50e9, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x4438794a71a90640b21957a7, - limb1: 0x5a864a4c72b9db3e5d471a45, - limb2: 0x1e74ef47f392c0fa, + limb0: 0xd0032bfee5723ee8cd9d354f, + limb1: 0xdd68b41d3214c94446d74abe, + limb2: 0x2889571dc171fbdf, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0xd7f18a49a66af9eb415c41fc, - limb1: 0xe3a4f38faba5e8bc7a91658b, - limb2: 0x6bdb1bd3b046d66, + limb0: 0xa07e2a3a679e81cd25992b3d, + limb1: 0xbb76f3c8cb494bad34efb94b, + limb2: 0x63f4e3dc8a918b1, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x109c70e42cd2865cbd3fefe7, - limb1: 0x641d9e9a6779205f87389a93, - limb2: 0x1e35249fc679f756, + limb0: 0xebab60132df4639027ad194, + limb1: 0x9f6f488a1f500be4b46185a, + limb2: 0x93153304560a944, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0xcc0b08684d17819704119d98, - limb1: 0xd83a7368d3d7a3d4373012b9, - limb2: 0x1d0cc19f89211769, + limb0: 0x1f1cd248cd544837a743496b, + limb1: 0x6a18f1aaf75b9afb71e1e5dc, + limb2: 0x31caf6b134fde47, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x9ab12ca32b38e804fd82215d, - limb1: 0x4e414477995de5e70b79d096, - limb2: 0x25c01bd2493baf0a, + limb0: 0x4b862bcc5178de6fa48d5181, + limb1: 0x83e8f06829daaf24516b808a, + limb2: 0x90979a4c9deb55e, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x5b48e7320a40473df90c8ef3, - limb1: 0x47daf1b8a0e56759c61d20aa, - limb2: 0x2adb291fb70a6377, + limb0: 0x34e8210ff636aa3c9c87c309, + limb1: 0x7b44fe9c6020fd0f79ff9173, + limb2: 0x2cbe80da0e3a3364, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0xd86aa709b1f9c0be8d0832e2, - limb1: 0x83c9b0743b694c0a481be2a6, - limb2: 0x240a38bed6025c2e, + limb0: 0x4ecee46025505db86f24d260, + limb1: 0xbec48d3446a0cc4a40e623ab, + limb2: 0x1529208642bd7479, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x817d8cdde606ea9bc0f7337d, - limb1: 0x29ce91d4f9f030f7fdf03103, - limb2: 0x291a57a321f3ac77, + limb0: 0x921146512b39e844be5b7767, + limb1: 0xf1423d88468d05db0e171ebe, + limb2: 0x13294bf5892dbecf, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xe8b6336170d5015ed89f838e, - limb1: 0xef411baea5e6382e37704ee, - limb2: 0x1f8bc7c2e8128d72, + limb0: 0x3f3491d9150013bcb4954f7e, + limb1: 0x6b0979ab4dcdff0164f6e4e0, + limb2: 0x2f81ed821040c0d6, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x311023bc5d67b0a00f72eef2, - limb1: 0xccafb24e17cce90b13d0470, - limb2: 0xe9b193122cd9f27, + limb0: 0xe092f16abadd9d3ac0eadb48, + limb1: 0x26404c221ddbfaf6c344113d, + limb2: 0x1d05e6add4fb7a2c, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x1c8789efc1d800de2efd952a, - limb1: 0xa8b16981c5c9f6f1bcf3b5f2, - limb2: 0x51fe2bd59ac7588, + limb0: 0x4520218ab8caa7a2f8c28fac, + limb1: 0x74aaab7926d2b9a9096d0fc3, + limb2: 0x3bc78042de9c03e, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0xd6b9125a479dcc43e1b527ab, - limb1: 0x7128a86c06ebec5923391b5, - limb2: 0x2199f61870c2339a, + limb0: 0x44454c5f5921ad1049aa4eaa, + limb1: 0xa52bd87c00665fbef097896b, + limb2: 0x1532662ead6d360, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x29df2b33e3f31d720d28ff5f, - limb1: 0xde2fbb79dc18fcf0e2b7ca70, - limb2: 0x2268726918708c73, + limb0: 0xb01393a557637be22634eb90, + limb1: 0xb09bda44164422789dc23bc6, + limb2: 0x1fcce3d51bdbd54b, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x950f594c336dd20a28493e9f, - limb1: 0x97e78e456abe446f9732862a, - limb2: 0x2c8d13cc7adb3899, + limb0: 0x3f18da9d670a1cbb8a8e1855, + limb1: 0x6ff9f6cae50627c0008785e9, + limb2: 0xbbcb0cdcec1710e, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x4b658f1e2155e776c10f1cf1, - limb1: 0x176e5471b98aa95f7201862, - limb2: 0x284a8054d4664ac9, + limb0: 0x873ca315e7e265cfd2c0d3e2, + limb1: 0xa99264b093e15a4378a0b9d8, + limb2: 0x2cb36d45eca0dc0b, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x49d68f0dec686f2e23b37e2e, - limb1: 0x63959c648bf4e07e3415d954, - limb2: 0x55b68b92a4d8f44, + limb0: 0xbb76c24572f30a68f5ea9c6c, + limb1: 0xc8fed4f0ab5fd143309e0080, + limb2: 0x22821bda6435737c, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x225953a6e4093ba414d79313, - limb1: 0x7c163fd5055cc55a0aeafbd3, - limb2: 0x1e5096e9f8147ee2, + limb0: 0xc2b074749618d81b1ac1c3af, + limb1: 0x1a51c829a385ad099a323d2a, + limb2: 0x2bc943880a2bca25, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0xaf1dce2917f7d9ae4d4c27d5, - limb1: 0x3fbda22df548f3ddd4230d6c, - limb2: 0x7135a5bd28c5f22, + limb0: 0x73123330ceef3f268fa77da8, + limb1: 0x376a78ff3b862b150573cf75, + limb2: 0x82f9dbdbed78ff9, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x7f0d8d9a41f6d99018b3212d, - limb1: 0xcc1cb96c7a1d9123ba48335b, - limb2: 0x2634b539e7ba8809, + limb0: 0x57fe35296296f2f3a5f17c69, + limb1: 0xde63949e16491a752d9b9c6c, + limb2: 0x12d8356e64e86a67, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0xdc9abbd6cbd2aac70ec13420, - limb1: 0x3a3627d7657ae34b3b98db1, - limb2: 0x2f536d32bf8dc0ef, + limb0: 0x308c50f3a182e41b261449db, + limb1: 0xe357f7962a9fb153bfa5fa23, + limb2: 0xde6532a20167c1a, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xdcf5782dc4e3b7784f942bb5, - limb1: 0xc645a4ed2e1f97fbebe94408, - limb2: 0x2afc9866b8f4c7a8, + limb0: 0x3e25b363cdfe9ed5fc053a4b, + limb1: 0x5c6188d3dec283ba8ae75a20, + limb2: 0x2af6b81055b3277b, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0xd966136ffb6432a43f991c0, - limb1: 0xf49bcc76d4a6071fe253b783, - limb2: 0x120ee3759afa9aa, + limb0: 0x6747f641086cb55f839086ad, + limb1: 0x10db582e78919b1d63628acc, + limb2: 0x13c4ce4f2029e813, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x39ef9b310e463fadc88b77b3, - limb1: 0x4cf7a111f951ea7861479eed, - limb2: 0x137d2c7054a83e53, + limb0: 0x985d6f16b17a3b1d2b7cea6d, + limb1: 0xc12d6562fb264c741387e5e1, + limb2: 0x2dbcab8dc4ee8fe0, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0xbd29fec405f9d148fcfa20a1, - limb1: 0xc81366d21add4f05a12d01be, - limb2: 0xac4edccb9b9b38d, + limb0: 0x80d5f341d650c39aefe67f4d, + limb1: 0xd8c884126babb54d5d446c72, + limb2: 0x27f1a2498322b7ad, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x12ab1065c07b9e20590e6fc5, - limb1: 0xb21fefb8939ed4740c93fbc9, - limb2: 0x134734876164d74, + limb0: 0xf6198a751b2306f816778135, + limb1: 0x1983b31858080679a35c0c81, + limb2: 0x10a1a9d01b48e276, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0xecacf773f854a4a9599e3e80, - limb1: 0xabc91052c0449dc87805bd13, - limb2: 0x3180cbc2e44765a, + limb0: 0xcd82883803650af3cb46af1a, + limb1: 0xffb9f78c690d1decd972e1b0, + limb2: 0x15ffb9fb91e2403f, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x84b3c2c376c784e86b7a3c4e, - limb1: 0x7651a01a874d19a1ef1dbb1c, - limb2: 0x2be69f015efdd5c2, + limb0: 0x2a14eaffbbf1e559cfd67360, + limb1: 0x43482bd618631e75140b25eb, + limb2: 0x113450f35704c601, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x1f11322dd8a6188568e1d0a9, - limb1: 0xf12946af7ba51c837aef4e07, - limb2: 0x22ac6f29dcfe0911, + limb0: 0xdd9991430f50e5a94be9b0c6, + limb1: 0x619793464a8691bf89c89db, + limb2: 0xf67b34659c381d9, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xa6e485e48ee16bf0d2211020, - limb1: 0xd3a618a191a73b3d5b4013b1, - limb2: 0xebc45102371f873, + limb0: 0x1a765a3205588060bae41115, + limb1: 0x4aa510131b3d37017c1662b4, + limb2: 0xf5c077dc83b914c, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x3d8a2850b2f7e1672e90c51a, - limb1: 0x565559d5415611b92fb07ed, - limb2: 0x4b7c349d83bdb1b, + limb0: 0xd0e2db74250fba8710063aa5, + limb1: 0x77503757bbceffa2ffdf44e, + limb2: 0xc690f40ef4e65d8, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x799085981eb26aed07c9c04d, - limb1: 0x8fdaafba43cd02dc71050a4f, - limb2: 0x20e6b6d20407727, + limb0: 0x987bd548f61ce1be69f2fec0, + limb1: 0xd9aa2e1c2f2a5bb53a7dfaec, + limb2: 0x7f7ef3cc977efc2, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0xa813fd9352256bf1caabf06c, - limb1: 0x69db3796a525cb1dd5946821, - limb2: 0x1a8e96237e37530e, + limb0: 0xeb4d79849acac6d7697e790f, + limb1: 0x83a6535d9af49a0b864f242e, + limb2: 0x2bc946607cf60999, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xd8d37beeea49407382446deb, - limb1: 0x5548512badd85f7d04b04589, - limb2: 0x225ae49570ce2599, + limb0: 0x2a90cc91d12f6c273907f421, + limb1: 0x2c465a324511ed232e5d51b2, + limb2: 0x16bd7eaf65f176ea, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x2f297d1cf07fd527159140c1, - limb1: 0xce604541822f28fcbefecc8a, - limb2: 0xfac5b7608543c7b, + limb0: 0xa06fb0edc3e44b91d937801, + limb1: 0x7c8a88164fd922e273a788c6, + limb2: 0x7e5efa7983188b0, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x6354cefbcf621d32e3e09f68, - limb1: 0x947cd1c6cbf416fee76e38a, - limb2: 0x1706bf7dc55de4c3, + limb0: 0xd58db58cb6b4283d7db7e358, + limb1: 0x680418df8586042fc32b7481, + limb2: 0x1aa4e36dfd4b5906, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x602f6a989b55160638cbc4a9, - limb1: 0x16218ae87fd7369171ae24e7, - limb2: 0x1247736487199110, + limb0: 0x6fb27cd57cf1845bcfc4ae83, + limb1: 0xb8848dc440ac62c6a1102a2e, + limb2: 0x126acafb5b65dea6, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0xf12371a2a9bf6abbd74e9450, - limb1: 0x600d5aa9b2e9b0556d9ed673, - limb2: 0x1e0c624a9c4864d4, + limb0: 0xeee8ab0d8dd406a65c7a3be6, + limb1: 0xfd237878cb1dee1e250cbbb4, + limb2: 0x7d5b76b431829e5, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0xe38f3d60ff37b083cd958a2e, - limb1: 0x348afb38aa49887a7ca1d476, - limb2: 0x5623c56268d62db, + limb0: 0x209de2169b35544d63222882, + limb1: 0x5498450d0fdac73ce92c237b, + limb2: 0x10fac08662c055c8, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x354f11be32b0afc9e26f28ce, - limb1: 0xeb635fcc9cd44998e58c1a23, - limb2: 0x812028693437b72, + limb0: 0xb641c839ac418a6de8310e2e, + limb1: 0x4be1304c700b09ddb3688d50, + limb2: 0x15e31f2d8bb8ff16, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x90c04d22cccf054f3715add2, - limb1: 0xfcd626e181383674c1f994d4, - limb2: 0x1e942478490b4f26, + limb0: 0x332f1b7d2ca5de0c82e3fcaf, + limb1: 0x9690513e02d7897d7cbfc59a, + limb2: 0x1cb52321efdaf38, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xe97533ba44380e2715568943, - limb1: 0x9ab4e98a7220523249ededc9, - limb2: 0x50972f3b5feefb9, + limb0: 0x5607794aac9e1d0266fbce97, + limb1: 0xc6b4dddaf0a55330bdc48a8d, + limb2: 0x154ee39cbb1b6e9b, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0xb477fbdcfc259bd59afa975f, - limb1: 0x3190d4f9ec4f69a932813488, - limb2: 0x1f01d9700487e724, + limb0: 0xa475fcc92f85c05db4903693, + limb1: 0xdb401fe458a3531b92ebbd32, + limb2: 0x1fe5c9b8f6b78b7d, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x46139c3f7c6f05a06177c357, - limb1: 0x46b5d7ec5661b667d5365a7f, - limb2: 0x2e06fe23af7422de, + limb0: 0x58bd4581f4707efb14c63c71, + limb1: 0xb435094a4922fec344eb174b, + limb2: 0x282cf1747ebcad8b, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x94fbf5441945f311021c3f06, - limb1: 0x18b4ce7f8026ab73889b2234, - limb2: 0x2d3679eba7944a1f, + limb0: 0xc6a203816a560534cdf96a57, + limb1: 0xad2df53499b97eb3792ffdc0, + limb2: 0x12be096211eef440, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xfa28f6f90009b2a01d651de4, - limb1: 0x81fdea1f4de5052bb537429f, - limb2: 0x144ede10360f3d37, + limb0: 0x61f05a3894ac940027210850, + limb1: 0xe0c4945a1e544d45045799c9, + limb2: 0x17c60c568afbf95f, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x7b4bfaceb28e59181461037b, - limb1: 0xe6c0495ba5f6cdb2cb0f83e4, - limb2: 0xea5c3a89d3ffa02, + limb0: 0xef635c0b73e9144f605bfb01, + limb1: 0xedc60d902a0c964c62c06b3, + limb2: 0x2dbd647dbe27280f, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x420103b9ddbe91260c158c83, - limb1: 0xc9203e6865899e5a2a30e2af, - limb2: 0x2b5aba609d610f78, + limb0: 0x54d7fea1239360b4e0a50f54, + limb1: 0x8d6ecf192e8a0b011cb43e3e, + limb2: 0x1e36f458e4c5d465, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x436a69f4f990fb3712b0309, - limb1: 0xfbc03ced4e39c6b810b8e56d, - limb2: 0x7504ba0c348d9cd, + limb0: 0xf336c90e0b1f7e569e68cb6c, + limb1: 0x8720fd8562d8a6e54435f534, + limb2: 0x1e7b85f6c293fed7, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x3be98907e3141e47f69fa9ed, - limb1: 0x86b45b1b2d1c198b56765810, - limb2: 0x10c98a12925341e1, + limb0: 0x6a80463599dfeea6440d0e6c, + limb1: 0x62e1e1f0280f48b208e8bd68, + limb2: 0x17a7b1040292e282, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0xf42e893902a6be7b72e6737a, - limb1: 0xb927ce4be06b7a77f607781b, - limb2: 0x15c4a03e16bef3a, + limb0: 0x1b37deb433d2db30c628d9bd, + limb1: 0xb7c00146b3eecbcd22093e, + limb2: 0x249ca14c7ce553b7, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xb5f1311686ffb89640b6ee1b, - limb1: 0x2067c3462bd984263a138ced, - limb2: 0x1a3ff5cf53114704, + limb0: 0xcca1918d9a7514083fc72984, + limb1: 0x90b55c800c4ad500376fd39c, + limb2: 0xf5f9241d69eabff, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x6270e0c7f05e5ad40b36ab68, - limb1: 0x56c7c9e63f6f572ebc75f6e2, - limb2: 0x14a929976a871b00, + limb0: 0xc4f3132c468923042ea455bc, + limb1: 0xe48c416f560fb53e8b502154, + limb2: 0x2613466f9a11ed46, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xccdbc0f9a758c5455a7b8cdb, - limb1: 0x434b662cfaf364096c8bad34, - limb2: 0x111a02303426ffad, + limb0: 0x3197655e53cd20626ec4772b, + limb1: 0x2bf012cc22e8ba15e231b3a5, + limb2: 0x211a2d76d389e0f6, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x168b67255ba9b491b0d5d93b, - limb1: 0x814266a772f4217ae77df2d2, - limb2: 0x11a1bb24ac650061, + limb0: 0x3ed228b00a32e1e26d5f0662, + limb1: 0xd73d8b8735e2fed80397768d, + limb2: 0x2e4deb74cb98bf7e, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x77255fac6d87f6824306fff4, - limb1: 0x750451be6afb93aa9a98e8d5, - limb2: 0x141e5086c720fc55, + limb0: 0x68c2498698aeb3f6d27ee2f2, + limb1: 0x4c0bcec6e06306db0f3b6587, + limb2: 0x241a62a2a7ff3048, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0xec90fcfaef7c44b6bc34800b, - limb1: 0x8403de231a16003e7b3b364c, - limb2: 0x101753995c51cca5, + limb0: 0xf0cc14ec1cb361c1e43748a3, + limb1: 0x7952ea053a736426aeda0020, + limb2: 0x1cb39fa7fe13b7aa, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x3340e49edaa90f52153ae86d, - limb1: 0xad3fd6f013db50cc97df4c57, - limb2: 0x22dc25bf4ea60b57, + limb0: 0xfde5feeb8faf8266deb76a17, + limb1: 0x64656a265b2b8160655c8014, + limb2: 0x112fd2ef96af86e2, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x85cd9954c27f905d8fdeee05, - limb1: 0xff29b98cec4d4307a94f2a67, - limb2: 0xeb82cc272c2bb81, + limb0: 0xd54150bf8923a2e44a03a376, + limb1: 0xd143605ff79b9c5f2d971842, + limb2: 0x22b824b36c288d6c, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x106983f0c7d8c23f41d58fb7, - limb1: 0x7760ec3987b3560e443d646, - limb2: 0xe1333399353aab8, + limb0: 0xc97ee197894cbee5d1375e00, + limb1: 0xc5be2e570a45ca1d3e728695, + limb2: 0x5d49231781b17fc, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x12471c5bc8293f7c6b1efee8, - limb1: 0xc5d6bdaf4dcc37f406c8e306, - limb2: 0x87db8436d83d952, + limb0: 0x723be75d8a5b6c6d7410fad7, + limb1: 0xabf51364a090acbbf5b2b9a2, + limb2: 0x25c6740bb79fc8ea, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x9e1488b3c1dd2da41977f0a1, - limb1: 0x6a62751520b6dc3d75a5c4d0, - limb2: 0x21d5e17763941b44, + limb0: 0x4d85e3c6a02f74022a99ac49, + limb1: 0x7e09c23c04638d6a265015, + limb2: 0x258e4b07476d88b9, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0xfbcd353b8515bbfb02c73087, - limb1: 0x5367fadcb72b95fb3db73884, - limb2: 0x123dd1449c528e99, + limb0: 0xb845af8851c7a8b5d6523950, + limb1: 0xb656d28488e151e723789bf4, + limb2: 0x2daba3811b77ddbc, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x3db5b08b8785443fa792ca24, - limb1: 0x145e5c0aa3adc26b0519f5c5, - limb2: 0x1dc38be484ab463d, + limb0: 0xd63f3d7cd80a77edb230c118, + limb1: 0xd4e7ac70ac8cfad57bd7425c, + limb2: 0x1be22fb23dbb78de, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x824f3ed6060d8bf3c94ddeb2, - limb1: 0x39aeb2af9c3fe4bf96acfe0f, - limb2: 0xf192a523fa93846, + limb0: 0xb1e65d0ff4ec1c73dc93ea72, + limb1: 0x357a2e1bb8f20a972afc9814, + limb2: 0x2ba904b0df948de7, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x484023de9aadeed5e6f5f48d, - limb1: 0xcf02896fc92d2afa3d3ba28a, - limb2: 0x1c3ad32c57d5b93f, + limb0: 0x9dbdabbf04b6426d6367b613, + limb1: 0xfe744bbe1121bdaeceb78999, + limb2: 0x177c2267c26e2db4, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x4d1450408e24c718f0712c78, - limb1: 0x262879adf9e86ff490d27b27, - limb2: 0x35197264b33e269, + limb0: 0x1f17b852672236df4eff0191, + limb1: 0x64f6151bf63b65b2bd13c5c5, + limb2: 0x2b17e9f5f66ec18, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x2b0ca43606236a3d8bf635a2, - limb1: 0x7afa05931970db2b5ed8fe24, - limb2: 0xe30c64fae61fdba, + limb0: 0x37163100bf3f8d1ac8c3ce9, + limb1: 0xe1fd1e43a5fe0bd9cf300acc, + limb2: 0x2dea0f29e1a948b5, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x709440d7f7851a26c6f1bd23, - limb1: 0x92ef15d3a1065a5c693c7ab7, - limb2: 0x2e4d5d29e92dcd28, + limb0: 0xda1891e6fae50a4fcd7c1efb, + limb1: 0x7ccf962002525e580d1dfba3, + limb2: 0x2d417d8fb0961d2f, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x640ef87d876e602cc320c25d, - limb1: 0x11b286320c46ae67aa646d06, - limb2: 0x1ea5a4500255c57f, + limb0: 0x9b449081c96a7b6cd8afa4c6, + limb1: 0x3b488fd36a053c43bda1f43d, + limb2: 0x2b6935952ebb052d, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x695af09c34fb0082a774b5a4, - limb1: 0x71acd44c8cba23d8a9463e56, - limb2: 0x1fd78c8b8b805965, + limb0: 0x3d9e005d071c12def2cbd712, + limb1: 0x5243ac0e2c27279507bc17e, + limb2: 0x62a5cd7d66e6245, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x710329b46ee3cca7802f1c15, - limb1: 0xad505d3b85159b6b6d2fe2a3, - limb2: 0x6c07788094145cc, + limb0: 0x9a28bd7c9952182a46c738f3, + limb1: 0x3fb4a2da8dc3ebe6ce36cf88, + limb2: 0xe9b9152b140f763, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x5afd846855040c4c73e6c0b9, - limb1: 0xd12c14db4bdef1c4ffd78036, - limb2: 0x1c6d4d0e535f424d, + limb0: 0x2de172cb864798f4dbee10be, + limb1: 0x6fbf6332b1f8f653dd449862, + limb2: 0x1dce67ce75484b79, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x5984377fc371bccc5026813b, - limb1: 0x32e92d5aaf750a89fd1b12f8, - limb2: 0x29ff165950e94b1e, + limb0: 0xe336c048d0aa7a2b0d83d05e, + limb1: 0xaaec6b5d981abb8253d349a8, + limb2: 0x10f20943376b2d1b, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x1004ec012899b86f5f0bece3, - limb1: 0xd4e921330ee0cde7fd932546, - limb2: 0x2099ecfef629c432, + limb0: 0x2acdef558a557dde8c4f7461, + limb1: 0x3053253d194745b7a4ee9499, + limb2: 0x25257e3cc0789512, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x74e2e6630e0bfb46b5f43ac7, - limb1: 0x3351b99708ac374791413e49, - limb2: 0x73ada8fb997971e, + limb0: 0xf5b71139f129ea9b4ceb537, + limb1: 0x8de9daf98337f77e21884f61, + limb2: 0x94edb97f8967bf0, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0xcfbb39015d8e548332f5318a, - limb1: 0xbe1fb3777d4c4e8bd8fd4dbf, - limb2: 0x2dcb6c6d8dee48bb, + limb0: 0xd116eb93778b1c09f6f394df, + limb1: 0x51992b4c9f1ad702cfaeab84, + limb2: 0x25153c0ebf11e856, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x7d890bef8ca9982a01f837d0, - limb1: 0xb9ded7c565fae3fad11059af, - limb2: 0x66894b1e7deb475, + limb0: 0xfff046c11f8271eaeafe8fde, + limb1: 0xd06c94c838de55faa1ca0bcc, + limb2: 0x16fb3d9ee11ac7b3, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0xd446a7afc7cd07faf465ad9f, - limb1: 0x9080fd1cde8c67e151c91398, - limb2: 0x4d6e90af2aa3391, + limb0: 0x6152ae980011e6c6fe8fd053, + limb1: 0x1ece2ab13e7e12ea51cb00a1, + limb2: 0x1cbf684a9c876bac, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0xb3c8052d5f0f9c57db578d5f, - limb1: 0x7e8ae079f47da836b2a44d03, - limb2: 0x7371edd16b6fdbe, + limb0: 0x57078c36ab21bd3389186922, + limb1: 0x6fcc9d2328c2777d4bcb6092, + limb2: 0x78dddb8efd28b00, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0xa503d726958bd3443815755d, - limb1: 0xa3cd4b764f1d25bd41622f8e, - limb2: 0x957526867ac7f7f, + limb0: 0x3184a75c9f02b6e21f7548d, + limb1: 0xc49edc7b5bcffad92d855e35, + limb2: 0x1cf34c1e540e05cd, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x5551480fd58874b58f8464e9, - limb1: 0xb652baf9a1fa3a56df3a486f, - limb2: 0x7c5b9e3875ef9c3, + limb0: 0x9118c445b89081a945b64669, + limb1: 0x6f54d322643282fd6a71cc71, + limb2: 0x1291fb7829dcc5d6, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0xe029f2afe7b07d794d9bd202, - limb1: 0x944d9aeafbf9cac459b807ca, - limb2: 0x168a20f188aed947, + limb0: 0xb69b96ca95302ae1e6819fb2, + limb1: 0xe70268afd4fff90b2dec54b6, + limb2: 0x24ed08be5110415d, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x2e4f3d36e031905cedf90bd8, - limb1: 0x7b8695069c77f4ab17c51418, - limb2: 0x1ff702075493b595, + limb0: 0x60c06c06278903d32e1c1dd, + limb1: 0xbdf9b22f754f545a5bff1656, + limb2: 0x1db72793aeafb703, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0xbad7d92531a6b8ca3e6729bb, - limb1: 0x1d4bab64109fa849916d7862, - limb2: 0x87718955db44473, + limb0: 0x4120ff414537e9f5dedc6df1, + limb1: 0xae449ea348589d9036d3fae1, + limb2: 0x119f590f6ced6b3b, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0xb1593c7c1c9553cb2f37c66f, - limb1: 0x86b8f3861393a4f00bda3d09, - limb2: 0xdf8ef8a4e4bc8e5, + limb0: 0x3ea6379669f4451170514d25, + limb1: 0xbaff4b52a532e7887be9f995, + limb2: 0xa501e68466ecf86, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x5a37aa07524891bd1124beca, - limb1: 0xdd94b3d5e966a2f96ea890a1, - limb2: 0x12dd8b175471742a, + limb0: 0x5bf9bd737e20fce210bd4798, + limb1: 0x1dec5db87cc6fdd2c0a0f21e, + limb2: 0xa6526eee26a2a25, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x73f8518ee9bff0d475189546, - limb1: 0x20662103d23fb47f1c7ccbae, - limb2: 0x16559dd8c6852b5c, + limb0: 0x8261a65c3c0745f53dc4f5cd, + limb1: 0x87cd0149cee1bacfc4a813f6, + limb2: 0xbdd3824d3d8350e, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0xce33cafb6c44018a978e1075, - limb1: 0xe66c368ddaea13ec785eee22, - limb2: 0x43db9cbd7ebaf41, + limb0: 0x4bd870b5296ac26458bd2d61, + limb1: 0x8832028d81f2fd50b4be5d2a, + limb2: 0x29a4764d31c2b749, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xebd89077ef4cc74c19f05d99, - limb1: 0x512e8cbc5ae3a76c3f86f0b3, - limb2: 0x28795173d922b4cb, + limb0: 0xd9fcaa87fe8be1e7524220b1, + limb1: 0xcb588da0dff5f9e307df5a5, + limb2: 0x176ae32b11b2de80, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0xcf5be2f52e99e40866c76b5d, - limb1: 0xaf0be8748c310f31031d58bd, - limb2: 0x1ee2608b00e8f1b5, + limb0: 0xedb5d5245fabd985bc879b06, + limb1: 0x63b555c22b4d688b8114aaf2, + limb2: 0x208e0fc200fec1e2, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x2e1af0ef6c35027d37f7ba49, - limb1: 0xb6b42f6af0509c1d68a89732, - limb2: 0xa98193d539449dd, + limb0: 0xba55323e2d07b977d1952038, + limb1: 0x90cec43ac98ff50b939ab02f, + limb2: 0xf7d2a7c44201e00, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x11bad88e22f74fba773cd937, - limb1: 0x18abea473a1b73a6bffb1179, - limb2: 0x2b22e3359fbf234e, + limb0: 0x550c8edff0da404b81b73c79, + limb1: 0xf7cab720ff1ddf69c37b24cf, + limb2: 0x300458eb5ead6a8b, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xc4f474a229958f6a80ed4db5, - limb1: 0x3e02c3851be1452d89a57253, - limb2: 0x2be129082a85d4, + limb0: 0xe67729889b9ad72f5729face, + limb1: 0x256504e59555f13e5528bea5, + limb2: 0xc5115e7c69e95a5, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x5c5d123c93022a6446c18520, - limb1: 0x920144aa621685cd4ebfb8da, - limb2: 0x1184d2f174d06a1c, + limb0: 0x5bccbce7a7db3af4ce8dd122, + limb1: 0x16a9b34d48f90e024962aeed, + limb2: 0x12af45dca1192e18, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xf5aed20ab888685a7e344383, - limb1: 0xce16bcaef98723e85b2bccac, - limb2: 0x127454a670b7de23, + limb0: 0x45e37e27a12142b3d6ae7939, + limb1: 0x87d3dc142d5372212c5df406, + limb2: 0x382ac921075275a, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x401dcb31391c44dfd6bf1321, - limb1: 0xeffa6f65e05c1055966b58f5, - limb2: 0x2607a634e947de63, + limb0: 0x52d5c460fba9af20cb9fb06, + limb1: 0x650fa3d4137649fa35ca77a8, + limb2: 0x1fc24de526ce7f51, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0xbc85d87a2fa7c44a3fd57898, - limb1: 0x349f7a3f192c795f6d1e96b5, - limb2: 0x186739f9a5971884, + limb0: 0xaf8628f894c87b36b26c5026, + limb1: 0x68f9180439ad8d02f15be11a, + limb2: 0x1790fdd94f27c546, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0xb5392edab9ee9d43c78e57be, - limb1: 0xe0c328a532e02ad44205c0bf, - limb2: 0x2b3d08639d867aa8, + limb0: 0x74886bf98709b777d02b8784, + limb1: 0xd13fb17524962b62a76145f8, + limb2: 0x247abc2fede3afa7, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x51f15b88921ebbc19258e1e8, - limb1: 0xdc3a704c9a5db4cba8e54c1a, - limb2: 0x2c09744cae686be9, + limb0: 0xb6e30c8116d312ca043e2311, + limb1: 0xe68ee703ef27762cbde9a648, + limb2: 0x10943a295a9b168, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x85fab234db612b95380338d2, - limb1: 0x63060672e7e710e38f8738cc, - limb2: 0x17a3fbcc4594d6cc, + limb0: 0xcd29cc2a98d9e7f23710ab4b, + limb1: 0x708829b15a02c3a3c780192c, + limb2: 0x8b8843bc2b6a6a6, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xee48559eca0049469ae67444, - limb1: 0x6be6c8d61667ae9f38fb6da3, - limb2: 0x2a72af252993fdaa, + limb0: 0xa6570c8b0a98e46bf6fa0d28, + limb1: 0x848fdbc9656fe436afcdfbe9, + limb2: 0x131e31a3c565cb1e, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x9b954c8d205f3d08ab412671, - limb1: 0xf9026074cfe83084ccf36bad, - limb2: 0x10cfc50ca9bf7c53, + limb0: 0xb0afb5140940975b54eac3c4, + limb1: 0x32f128135ae20f705efa8b9f, + limb2: 0xc42e47fb05215f4, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x3b8b7d0f3c48bf3ecee7c90f, - limb1: 0x46f312fc38d0104f87645831, - limb2: 0x27478a7d46823db5, + limb0: 0xa3ccac902540f25dabe56f44, + limb1: 0x90a2fea1d2ec52ab42887541, + limb2: 0xb4629b28a481674, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0xe4eeebd2a71bdc2dd94f4501, - limb1: 0x4d806763c166cacf95611192, - limb2: 0x27b9d452dd21390a, + limb0: 0xe7858cdecc40cfb92b2401cc, + limb1: 0x1ff1bc402a466f054d8cac4a, + limb2: 0x255b92d472a7e8d9, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x7dc8d2572afa6a74a129cea5, - limb1: 0xe3a4114d19c7eb36f11639fe, - limb2: 0x24c51e6955a2ae84, + limb0: 0x29baef17341a11acfffed7ee, + limb1: 0x8bd82a3f7dbe942329107319, + limb2: 0x1ece124f9a599f8c, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0xefd9e082c5746db05635153b, - limb1: 0x2ba57196f78750542339a70e, - limb2: 0x2099c8c1ba861719, + limb0: 0xd9f4ace7b54227b29ae71aa3, + limb1: 0xa1b7fbd76a4335ff020e162f, + limb2: 0x1a8ff1a48ee836bf, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xd7fa65b08e3906db8daf430c, - limb1: 0x3c3a225b122e5a8f3d9f91e6, - limb2: 0x1069b17cf83a6a0f, + limb0: 0x95b834f24f82b22574ba8bea, + limb1: 0xe77d70c43c25504adf17516b, + limb2: 0x24193cd705e9bda9, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x18043da16b3b1fa5e793866b, - limb1: 0xf71881cc62779663a18b95de, - limb2: 0x299858b6ba47a9f4, + limb0: 0xb2fa2e7ba128cb1ea2b165a, + limb1: 0x1ee4ae60791ed5e7df580dc6, + limb2: 0x74791a4a1631cf4, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x78fcf8766902d6397277448e, - limb1: 0x60f9d439a6157a2a6e919d84, - limb2: 0x1dc11665780cf561, + limb0: 0xb310e65310e0c1a9017e6aef, + limb1: 0xe5a67dad908cadad0de00ae7, + limb2: 0x2a6be1cca1828046, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x65759795e874e6ed11b48b84, - limb1: 0x707867bd92dfa96b14a3f295, - limb2: 0x21f531cddd767e5, + limb0: 0xbebc64d8f0f32775fbb5a97b, + limb1: 0xde0a0779903567d8bb9668f4, + limb2: 0x2552c4ebe0adeef5, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xfea7db83293a1a9a0de70c9d, - limb1: 0x14cc899c3900790eb7b823cc, - limb2: 0x17b996521dc3c9fe, + limb0: 0x43f2caa64d30936f9fa19d2, + limb1: 0xef75488415b994e334809cd1, + limb2: 0x1d5e5c7d418a68e6, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0xffedd7f4e126bf4bbf1a248e, - limb1: 0x387ef26f518e43e89fca3713, - limb2: 0x1f47a0c6867741b7, + limb0: 0xbd6857f47c856b060c011db2, + limb1: 0x2e22c150c2190884d81ba62d, + limb2: 0x1c9dc484b11ea61a, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xaa0f6d51adb62fa60c879730, - limb1: 0x5045e0ea8759620506a3418d, - limb2: 0x1a2664cb947cafc2, + limb0: 0x231384a55b6e9e88d91cc1ac, + limb1: 0x9676fe22be22b4fe45183f5c, + limb2: 0x14816b65a9faf753, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0xa7d91e19db4c6e7971204e09, - limb1: 0x744df1e55ab21c1701c75636, - limb2: 0x2bd39a1de2eebf67, + limb0: 0x67812118b8d6bf7988e4da0e, + limb1: 0x8bdcc75b68aad55ae1a84888, + limb2: 0x2097cb698bb25045, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x505482fa99bd739d957171ce, - limb1: 0xfd79783e4ab631be6eac383, - limb2: 0xb07b53f5480990f, + limb0: 0x838a687940a441fe0740527a, + limb1: 0x754899b50c61cedb665e9632, + limb2: 0x2b607e349e7be43, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x993ed304e914a00e9df10c9a, - limb1: 0xb9f4ec206f6d35bffbd26766, - limb2: 0x1d9686120844677f, + limb0: 0x170f72aab758bd06f53dd36c, + limb1: 0xcc6deb0d7ef4a91551a0ac17, + limb2: 0x14f8d8e3d4061ac6, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xbf51c45f5a9e41110faa08c3, - limb1: 0x2af2dcfe4beb5fb088c36c0f, - limb2: 0x208f72be1f92c348, + limb0: 0x6127f1f48ab447f8b299af00, + limb1: 0xe4bf9f72cad5bf2b9ef935e0, + limb2: 0x21413b30adad2eeb, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x673933cfc436a2a84d099144, - limb1: 0x18632ad564c68b489176bc4, - limb2: 0x25e81a277944f8d6, + limb0: 0x4ce9e3cb73938426309a4c88, + limb1: 0x90c3c2135d058173d9bec214, + limb2: 0x2fa65153b4d03b95, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xcef15b8d535b290f1fc408a8, - limb1: 0x270e87279a156505136cefae, - limb2: 0x1bb93af44eabf196, + limb0: 0x39d20f6bf2831ec1bbecdc8f, + limb1: 0x15c141ff3cb8a0f05d32d8f1, + limb2: 0xd4d92d620fc3cd3, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x2a1311eec4782b2582075494, - limb1: 0xfaf9b237401387b213593a8a, - limb2: 0x283460ee34f7d1f4, + limb0: 0x809132db90061063bf4977d7, + limb1: 0x767a976977a51c9e8f7dbba5, + limb2: 0x157b40cc9cbf8c6a, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x2d21280eeab000bec0ff0763, - limb1: 0x75ece57c5d85c503f731c081, - limb2: 0x13e213668bfca3a2, + limb0: 0x74ea71503f4d439c0d22a38d, + limb1: 0x8430005f55cdb863e929a01b, + limb2: 0x27098bf43230c913, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x35758da6281a9bcafb32489f, - limb1: 0x1948af7b6289a34b3e1214c8, - limb2: 0x26875bd5c1016315, + limb0: 0xb12a878f4575e1b8197474d2, + limb1: 0x68103cfd5a437c4f051d578d, + limb2: 0x2e8b35494915952a, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xc2c3da41daed8840da54290d, - limb1: 0xa3377644e9b1b18de327daeb, - limb2: 0x31463fb3f5ea8d8, + limb0: 0x4c3b6707efa9d3fe82f0c45f, + limb1: 0x48f14d8768c12ad854544eb7, + limb2: 0x188e6e8cbaa65971, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0xc46ca167c8ad9bf9c0f5b62f, - limb1: 0x5af90d6ea8483b491308c2ae, - limb2: 0xd6bd7fb0c51a942, + limb0: 0x4227deb8fe5b68857076c2ab, + limb1: 0x5135f6095fe7049b6847ea95, + limb2: 0x172a309695981496, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x2353e782211186d7ae975b09, - limb1: 0x1392704996c6a7342c18216b, - limb2: 0x1dd3ddf4f009ad61, + limb0: 0x409dabcfa6842620ca798807, + limb1: 0x7484bfe7935e6d313d845ba5, + limb2: 0xa11d4d2f3628dfe, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x3129182ea53958d995998f2e, - limb1: 0x48a0f1e7b2c50da3b1cec5fe, - limb2: 0x28e9dff57b35fcfc, + limb0: 0x4305da39327d1f735a46daab, + limb1: 0xb1cac1222cc1ea2bebad610e, + limb2: 0x290d2ee385ad6970, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x6b6cb631109931a97f7f05f5, - limb1: 0x4846f93897fb497abd1b18a3, - limb2: 0x1606b2503b7f4dcf, + limb0: 0x6ddf2cc66c692ef268441d2c, + limb1: 0xd5944da8b1e135e2330f0efb, + limb2: 0x10ab4944c3f767, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x450192185d433d86e1d53a49, - limb1: 0x397a84974c957e4053ffb708, - limb2: 0x503ecab96c86ee0, + limb0: 0x54d43be5f53496c9e887c939, + limb1: 0x50697341b8a2a346f47473b4, + limb2: 0x95c1db937bf3cb7, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x81e7a4e71a277ef928a3a4eb, - limb1: 0x66bb99200b64389f0d1ae6c4, - limb2: 0x2406da858af6539d, + limb0: 0xfda199da460826fd313e8c4d, + limb1: 0x54498779b8e89693e6c5b801, + limb2: 0x303065624449a537, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x25eda63726db38efe8a0013d, - limb1: 0x8ead12fda0102f836b6d4817, - limb2: 0x154c0b515d8161ba, + limb0: 0x2209412710137cbcd771cca4, + limb1: 0x87e579ecaa6ee417cac90f88, + limb2: 0x304d825d836c7f96, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x9ccfa531969a6740ec6b9bd3, - limb1: 0x7c5a3d5c9182016640383fbb, - limb2: 0x2f25494b6ed8aba2, + limb0: 0x39388ff9e076e1edefaac31a, + limb1: 0x50d5f63b5fc47f6eea698e5, + limb2: 0x167d285acce32737, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0xf643df59373a0d29e08fd779, - limb1: 0xe37eee06fc5aee4251ea9c6c, - limb2: 0x44adad5df2b9545, + limb0: 0xbeccc885e472048a07f2bc35, + limb1: 0x4c34f219ef1a4eac33b05d5, + limb2: 0x120cd5fbb3f90a31, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0xe0374cf78a6c2b9a0749c83d, - limb1: 0x90be634d8d360066fbeee1a5, - limb2: 0x12d96f0665847763, + limb0: 0x3b9d52b67bdc7b758e550b29, + limb1: 0xf19b699cf2b400fb4f613706, + limb2: 0x200903643c3ecd96, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0xc4f5ff552e48c8ec22851fdf, - limb1: 0x72c5679deef07b1665dbcf46, - limb2: 0xa314ebf11826167, + limb0: 0x39ba019a6272d1a8b0301e3f, + limb1: 0x9376096aba8eb5343f75e8d7, + limb2: 0x252e09ae1797db3b, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x6ace38504428dc9fa470075a, - limb1: 0xedc33cf7bb49ed9d179d8944, - limb2: 0x224992dc2f40a28d, + limb0: 0xa45e153c3b8d1b36700dda21, + limb1: 0xcbb2f3c86f4295f8d045d4ec, + limb2: 0x299e61a6a44d25f9, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x9abbf8c47921fa0d157e4f8a, - limb1: 0x3070696d31e61749430a8dde, - limb2: 0x2b5812affbe50455, + limb0: 0xc69543f64244b72419da5c7a, + limb1: 0x253bce6731ceb41acdac93df, + limb2: 0x2cdedff80f0e784f, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x1b2deb65e6cd6e95278f9acb, - limb1: 0xf45e60ef8dc98a50d2950065, - limb2: 0x2bf75f7e698016bb, + limb0: 0x104c15a89bb65552fdbc3588, + limb1: 0xe6274772d2798b188b8f93df, + limb2: 0x1656a44912c003d4, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x6bb295cd090767d52697e19d, - limb1: 0x5ebc093652481e3196d21fb, - limb2: 0xc8afce8657e5a8b, + limb0: 0xfed770c50ae0918d67b25d00, + limb1: 0x33551093ad3ed7419d18459b, + limb2: 0x2e306d07631e2135, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x59b3585a0a77ce3fb9aac913, - limb1: 0xf0f0f95d64f2105141b37e60, - limb2: 0x6f654e862cb868, + limb0: 0xf903a07dd578cc7f33439954, + limb1: 0x9c2b7556b18a02307b2aaa22, + limb2: 0x6aa4a23a045612e, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0xdf7d2e396ba48b7431dce3cc, - limb1: 0xdae2b640ef72378f664583ed, - limb2: 0x2058731bc20b7f5f, + limb0: 0x9f703fbf7a5a40a3beca20b7, + limb1: 0xd2345640d98c759b58d23d79, + limb2: 0x2ab967c5d1b64fba, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xf60681806f7cd3c5d650cf9a, - limb1: 0x446f2c0eef55f362ffde029b, - limb2: 0x615f41fa72a3e6a, + limb0: 0x906ff5d16df5dac793edf9a0, + limb1: 0x822b2b0776320181ec0b2af, + limb2: 0xaa72f61beee11d7, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x18563b000710b02f21fc897b, - limb1: 0x9f47d2c2030d29930167ddc3, - limb2: 0xb23730a1e76067c, + limb0: 0xa77ac0d967c66f3990ec11e4, + limb1: 0x71f6106d5431382f35056141, + limb2: 0x35eaa763f64fe59, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x6973449ee17d841969b6f992, - limb1: 0xae318219547a2bc9526675c3, - limb2: 0x273675f45aabb181, + limb0: 0x404c55351a4b5574ab9bd81e, + limb1: 0x64846c33a3889fcbf53324dd, + limb2: 0x2dfd7dc89da8cab7, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0xe09c09be912c560736bb7a64, - limb1: 0xa8b03b6bc32ac4d5de10dfed, - limb2: 0x2e8ed53929190795, + limb0: 0x2ca4d01335df0c5aea09a549, + limb1: 0xdf30348eb0cb11eafb537578, + limb2: 0xf089e2afd4e2598, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0xf9cd86063e8ee5ee30665d3b, - limb1: 0x45b2ad8e99657b83a7c8d47e, - limb2: 0x5843c93ab805f25, + limb0: 0xe105e89030d0b13729c13f57, + limb1: 0x53c0e5a116140592fab8cfe7, + limb2: 0x2568156231a35bd0, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0xa58586e4453dfa3e754c03a6, - limb1: 0x1292807e85c1e2eaf212e7c, - limb2: 0x2d8b52a1bef49ed8, + limb0: 0xf46bf2d8ad19f6fe1be44d95, + limb1: 0xe5280cbc146092f800489075, + limb2: 0x152746346523b33b, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x48cc6bde889390a76dab9114, - limb1: 0x206ca53d2ffd0464d3cfd1d5, - limb2: 0x2c088a7282d93652, + limb0: 0x4ed7b726bc13ee9bb8cabade, + limb1: 0x42e95d91e99e50360369eb85, + limb2: 0x2486594633f287b, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0xcc7441e2d026c7d1b9eedfda, - limb1: 0x7c64c4579b62c9be2e04d708, - limb2: 0x58a396e46f856c8, + limb0: 0x43d6eef97b1095f3b07d1518, + limb1: 0xc9c7bc07d47ef431221d96ec, + limb2: 0x2667cb5c3505ff7e, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x416469b6156518be70e78205, - limb1: 0xce1fb15056a0ae1b22b9e901, - limb2: 0xcd197f2eb261b54, + limb0: 0xc80491882788bda6f09e60d7, + limb1: 0xb5d149b2d8debb4573583e00, + limb2: 0x182db6bca3bf95a6, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0xa587c73a85d26588840ac6b3, - limb1: 0xaa6ae4fdc9b6d812e447b5d9, - limb2: 0x42121a611a18ca1, + limb0: 0x4d159ffbe55c63e320538535, + limb1: 0x16cf34185c96b279bbf3f386, + limb2: 0x17e5c0c00f49b833, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0xf8231bda77de9f749444b590, - limb1: 0x36f2c6a5047e906b19197883, - limb2: 0x2a95570aefef6fdd, + limb0: 0xb4d6b1c8b058241f58f61aa3, + limb1: 0x3cec1b63db0578eb9d5e0da8, + limb2: 0x2448fec9b445849d, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x4a2ffa1bbcdbb5852335a0e9, - limb1: 0xc3721f0829d053b66a4581d4, - limb2: 0x19e960ba23273bb7, + limb0: 0x3c00d089cc38fc346b931c10, + limb1: 0x489bb3bcd53a205ae3a82d4, + limb2: 0xf10315a062b38a7, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x447c841a3d0c942836506d29, - limb1: 0xdda14e8b74d79933d15fa4f9, - limb2: 0x2058343880518f82, + limb0: 0x19a56df3979f269076b31f65, + limb1: 0x505850a4fad28ea397ae138f, + limb2: 0x901830b18ae5490, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x1db8afc75cb2e9c548212635, - limb1: 0xee197a2bd831ea7c0de8ef7c, - limb2: 0x1117933b96c0cab3, + limb0: 0xf7b6df2cc82fe2a358ad67ac, + limb1: 0x44599f76297b3c139dca85ea, + limb2: 0x21aebc43283a5758, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xce2361065147c71dfa788062, - limb1: 0x9f0e6b3f4f89335002641f53, - limb2: 0x15b9082a7385d8f3, + limb0: 0x7508ad1b120b2493a977fd1e, + limb1: 0xc484bc659a62fe199624e2ce, + limb2: 0xd13751cfea53c97, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x808b1a679ec55059cd73ca9f, - limb1: 0x4eb43382ef1c2ea67e19c91, - limb2: 0x2537acce4331472a, + limb0: 0xc39b7dee1db1064044c50950, + limb1: 0x74a10d9a37f22499acef8794, + limb2: 0x10987631cb9b9d8c, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x60d90bf17d59ec750db51f2e, - limb1: 0xd8418c5eff54a532ade92508, - limb2: 0x1b33397457d1c69f, + limb0: 0xb93edac7e2c1e9ccf74d81df, + limb1: 0x5fc2b465b3290fdafd7d3595, + limb2: 0x70be8453a860134, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x8efe540b9f744cc610fa1508, - limb1: 0x19a3c516c25586c20bc4ca48, - limb2: 0x265dfa7628641ddd, + limb0: 0x120ecc5bded061005788d256, + limb1: 0x6cb132ca9df710448e2a6e43, + limb2: 0x842133bf2bdecb1, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x9bd3922181c6704a675629f, - limb1: 0x2bba401013b08e2cf10c4441, - limb2: 0x493daaa605be8e1, + limb0: 0xf765b6021dbd053433022677, + limb1: 0x3c4af2e8a167b5b0510e1c60, + limb2: 0x27ddf0d47591a515, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x3ee08e88caf981d9d689e0a0, - limb1: 0x75e53c05b781283d8c8d26bf, - limb2: 0xf5c81c2ebf9ca90, + limb0: 0x2b500629b5cd6d2700419389, + limb1: 0xe68ac25440b87b24a8893c84, + limb2: 0x159e6b3b7899e57a, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x7389a19a4702ea93f76c4603, - limb1: 0x98286292efb222ba1d30fde8, - limb2: 0x59ec058706232bc, + limb0: 0xce1b3a80d732f83cebb0fd2d, + limb1: 0xcee84f32d537540d0f146f81, + limb2: 0x251c4f20a773829e, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x84bcf4c051af1cd6e848c62d, - limb1: 0x78bdc202643db21d6865c389, - limb2: 0x21ef7081855d3c07, + limb0: 0xdae225d9af7aebbdf833ff19, + limb1: 0xa67e2cba0baa8e62204fb268, + limb2: 0x1d6548a008b22b9b, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0xc1cff07be9ed830b6abf1299, - limb1: 0xf3cc5960396e3baf9745d03c, - limb2: 0x98058619b1463a, + limb0: 0x468af576cdc6465ed464f714, + limb1: 0x1aa0a9927d55768f1bdccab6, + limb2: 0x2c5968e341b037e7, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0xca40f2dc1724ddc32cc4d1c0, - limb1: 0xe6fe046f47c7792342f12e8a, - limb2: 0x35ea504805c0717, + limb0: 0xa8548a668b01fe6691e54f56, + limb1: 0x261d12ac8f80b2675cc97f67, + limb2: 0x10c8275054a1db35, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xff136d27019a56db104ed13e, - limb1: 0x698528a4be7a08d772f2d250, - limb2: 0x2285d7b8c726470c, + limb0: 0x1368e8209177795d00bf3b87, + limb1: 0xf1e90525a699b050183f75d2, + limb2: 0x24a1f20e31545f2a, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x40a5e63afa665eb74309204c, - limb1: 0x4880067d5219825bfb793b3, - limb2: 0x811894701d7766e, + limb0: 0xa9c67608664264ce24a5d633, + limb1: 0x6a5f0f824be130ed510de66b, + limb2: 0x18bfc318aca9adf7, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xd6989cbae371158c254ed469, - limb1: 0x97753f3c7c434da9a193faa5, - limb2: 0x46bb2676553312a, + limb0: 0xd82ae0486cc46aa7138bd62, + limb1: 0xcbe69a9684a883e227dbf77a, + limb2: 0x25a8db781a8683cc, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0xfbe7c34534290895df1f45c, - limb1: 0xb32eddfcaeac195007278dc4, - limb2: 0xf5d8a0f1b19785c, + limb0: 0x6ec51b98736c9292f0c38e31, + limb1: 0x5396fcae9b36cb607d12e537, + limb2: 0x2c4149d2e5a8c33d, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0xca3e0ba40d027aae31f4b0ab, - limb1: 0x36c419257ad0242f110caf25, - limb2: 0x1873cf510531d72a, + limb0: 0x80872290ed5a89fe046a372b, + limb1: 0x3fa146833eb1f167fc250a95, + limb2: 0x1a1dd3725ffed9ff, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x67d103d7b22bb19a0aa8f2ea, - limb1: 0x48ff1a57be11540d962ebb34, - limb2: 0x2f5de7b15b1aaa62, + limb0: 0x171195de05b44b4f0651338a, + limb1: 0x422e6286759d0d72b21484e8, + limb2: 0x9dd32c2adace017, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x79f31fc8b0a32d0fae8e41c6, - limb1: 0xd17de62e68d523850b848ea9, - limb2: 0x2341a035c21df39, + limb0: 0x5ae5843341cb27874fb1c1b1, + limb1: 0x2a24a124861ccb87854a1b7d, + limb2: 0x12e9eee1c23894b4, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x95e97240c14b0bbfc35ca1ce, - limb1: 0x2f8d5e3e530e6bac29197387, - limb2: 0x1cece1271d4b632e, + limb0: 0xd37d442996f1deae2b0576ed, + limb1: 0x3d9cd40ada10652e3885d0ec, + limb2: 0xeccf7ff0554e4b5, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xe0ef825af3d69ef42d3d7ad3, - limb1: 0xee1a8d6309bf8eb2ff05be1a, - limb2: 0x77d40bf47f871e4, + limb0: 0xf014490080c69694971e9b6a, + limb1: 0x553b396166961bdc93bb0dcd, + limb2: 0x20221e786b1e99a2, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x6b1874c62ce3c24df3c663dc, - limb1: 0x584c0170b448a56aafd60a1d, - limb2: 0xf67f8c062fb245f, + limb0: 0x843b6fea2e6ad30d5126a789, + limb1: 0xd7e1a631063d2bf78deec8e, + limb2: 0x2ac233a88109aafb, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0xe683f9d9567ae7c709e33f29, - limb1: 0x805186d0a654f59d68d9d72e, - limb2: 0x15414fd26b182bf, + limb0: 0x9de0d14948b8146ec147b016, + limb1: 0xc054d27c28c85ae1af716991, + limb2: 0x221f2a9d88e7cb86, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x301726e10f061bec392ad550, - limb1: 0x655a479fcc6d5e9cce879f2d, - limb2: 0x23fb25b400911619, + limb0: 0xc3c683794e83952cdf366b7b, + limb1: 0x95057f6c85cbb532b11c4adc, + limb2: 0x6e63e5f32473834, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xdd508b98c30dffa556ad91a9, - limb1: 0xa4180c7a5928d41a87763709, - limb2: 0x16ec1cc21fa0b501, + limb0: 0xabe225c55342d02ea36cf7d1, + limb1: 0x8869d02a963e9d105de6630f, + limb2: 0xe85bc612cd43391, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0xe415c5e8d353c9f2ded56ae, - limb1: 0xfe1cef28962c0d481464fbc5, - limb2: 0x29d4b3dcc4af2297, + limb0: 0xdde6a32dac4a2c3259f32f55, + limb1: 0xb1226e4c8bbd0f5c966383f5, + limb2: 0x37432c8880f7858, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x18691e9eb855bc2b0d1e354a, - limb1: 0x2061830bf79b0786aaa2c3c7, - limb2: 0x61f982d29fbd0ab, + limb0: 0xddf8bcde168d877fc489145d, + limb1: 0x91d9db0ec9f51dba0afceaf, + limb2: 0x2048a8c3e1177c5a, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0xb5d60bbd04b0d6febdc4666b, - limb1: 0xb0c7dab5aef9646267cb2ede, - limb2: 0x241ec2c047bd05d8, + limb0: 0x73f62a7019abaf424ee280f2, + limb1: 0x5d2d7fc45c0dd76db25c3a8, + limb2: 0x128b1d37521d0bf8, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x6b0332d0d603ccd8b1d397ce, - limb1: 0x3b7fd555c18536cdc1e8231c, - limb2: 0xffbd7858597245b, + limb0: 0xba86ec47f4722eda3b89059, + limb1: 0xb8e60b08273e4e67e4b28e4d, + limb2: 0xed04b37b62e6b7, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x58ddc8f7ffda605567e5d6de, - limb1: 0x12caa16417ceee6cf416ee50, - limb2: 0x1906ebbdc52a295d, + limb0: 0xbcd3a1124eada06c019e3c77, + limb1: 0x3be787d099c18f8ef172f626, + limb2: 0x5e7b1c9712454b6, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xf5dd512d399efdafc777c83, - limb1: 0x11055290d1270cf303faa402, - limb2: 0x297582bf64dbabc8, + limb0: 0xe0a35a51978440214d222e09, + limb1: 0xe1d7b69c852dbf05d4e411f5, + limb2: 0x289a3442718d89a1, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0xafa2ff765bb810bd11dae4fd, - limb1: 0x94ef4bb93f31a27dd8b9ab40, - limb2: 0x2d8fd2bba48b406e, + limb0: 0xb18e26673f0d288a2edf374b, + limb1: 0xd3e69a3a2f7dc586870b538c, + limb2: 0x295bfb7cd5addb5, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xdfe1f54bc5d34af032a0d1d5, - limb1: 0x29d58db84fdfb12dc04b4843, - limb2: 0x629c19fa0229ddd, + limb0: 0x915acc69addfd575e6107545, + limb1: 0xa2184383d894fc38ecbc1b5, + limb2: 0x196efa4624afe181, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0xa1c70f77691d219bc44b6f3c, - limb1: 0xbefd9e5bea3b078f52ed3740, - limb2: 0x272b5d4e472f3d68, + limb0: 0x73cc04b7815266d2d0aca419, + limb1: 0xe774b5a6bbf13367b39ae3c7, + limb2: 0x23738c227561ca44, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x83119e4ebb274e8cf5140f52, - limb1: 0xd02ed6aed9c50a55516b4e84, - limb2: 0x1fc510dc1af1cb78, + limb0: 0x10eb34fa1072ab6e1b59439e, + limb1: 0x8a520267209e34282dd9ab7a, + limb2: 0x16d971290a19fc6b, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x2934805b6035a8306b5a832a, - limb1: 0x10b63f9955b34f71c76d1e77, - limb2: 0x1050588397064100, + limb0: 0x471fa3d19d3675856a5a78e4, + limb1: 0xcfc2cf716c5868e5ca6d434c, + limb2: 0xe338212c6be67b5, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x811d4c56f992744bb64e8a97, - limb1: 0xd21e2a93ced7fdbeffc14d62, - limb2: 0xe9b8fccef818567, + limb0: 0x30d7776b4ce0300e7ebda974, + limb1: 0x3042514c0c3a60c975afb834, + limb2: 0x28dcad55d053f6d8, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0xa388ab3ebac25e831626d834, - limb1: 0x5fc0accb411d85d69c7fb8ab, - limb2: 0x1cb4937b307c696c, + limb0: 0x7ba14b61f08fb92c4deb7b3, + limb1: 0xfd111f8897cdf50838b532c0, + limb2: 0x255c42e457422403, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x7d4a547141753263f69a883f, - limb1: 0x8b376ba558dd65f876d5d4b9, - limb2: 0x24655aab406f70b0, + limb0: 0xf93bb6c611b4e5d0f6dde5fd, + limb1: 0x2d8244c244e427a425470824, + limb2: 0x1179cb1c16ce4975, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0xd1718885ac64905c5284cd35, - limb1: 0x9677463fa5a48ca4bc187eaa, - limb2: 0x289be58a3c591546, + limb0: 0x291dffdc4db41e8346edbd9d, + limb1: 0x28da3f3de7dc78c9762529, + limb2: 0xa94cb1235b3686d, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0xb479ae283038d5d8650f0713, - limb1: 0x75e493f7ca052541a465455, - limb2: 0x13ae926e1d68e59c, + limb0: 0x741beef7f740bc6f76f24139, + limb1: 0x6d73274eab70165a491d907d, + limb2: 0x1f8c4789232e5148, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x69a4b068ab96472abb0d6203, - limb1: 0xed557f3b47bfeaa003174a33, - limb2: 0x1ec8dc1c229c1501, + limb0: 0xb5afed7d2b43af9f42bdc5b7, + limb1: 0x42920b45a4aab464be367350, + limb2: 0x52481bada99a834, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x44592fefe8271045538ebffe, - limb1: 0x65371ea7eacfe83187dad93d, - limb2: 0x18d376b9b08a464c, + limb0: 0x1559c8b31b054e07b0dffd8f, + limb1: 0xf47413f284cd03ee796db0a4, + limb2: 0x119b2c0d45ce6f6e, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x1f4e49cc82aa15e570237c73, - limb1: 0x3c12317fd2ff4ea3f2705d9c, - limb2: 0x2799501380d08162, + limb0: 0xd0eb52a2bfefad25c78cdeeb, + limb1: 0xbfba5e02e1072588a7334b7f, + limb2: 0x278294bbc4129984, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x4151fefad30eb8a549440092, - limb1: 0x4e345e010b53f1facca898f9, - limb2: 0xb5f84a89ae55874, + limb0: 0xaa308bba9419ff12e0bbcd6c, + limb1: 0xa8a297cddedeeea22148a245, + limb2: 0x1600784b213705dd, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x4f15367df9a6b065df0ffcf0, - limb1: 0x3c92f5fd9ff98be62d5c11a2, - limb2: 0x27a5f4eecf54fb4b, + limb0: 0x78ae650dd075ed34538bbdbb, + limb1: 0x2da9f2bfb0f2cbd83ccb26e4, + limb2: 0x261208420786151f, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x6f9e32c6be3dbf23a3f694f9, - limb1: 0x4566743003501ff90bc2fcc2, - limb2: 0xd2acb44a8e2ec61, + limb0: 0xe29142a813716e83a5ab46b, + limb1: 0xe52f4ede3d0871fc91174aa9, + limb2: 0x66d502eab73f111, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x3c6c36315e09e82ca050bed6, - limb1: 0xb9fc01c0482d94c75d5f6242, - limb2: 0x252cfbb88ed1c486, + limb0: 0x6aeae0f538bd9bfcaf0c8de1, + limb1: 0xc04f54be5f5c3aefcd1ccc31, + limb2: 0x5bedc208565b5e1, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x55aaa89d5231b87f8cf75821, - limb1: 0xad382b6e09dead18c5d9c087, - limb2: 0x5ceae64f6ede765, + limb0: 0x65cc85d6583cd1041fb0536, + limb1: 0xcc2fc1eeb492019da18689f4, + limb2: 0x28966afe90fe1e85, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0xd7bfac55e82bacea45e518b1, - limb1: 0xc205ea62c7c9f80eb19edc04, - limb2: 0x21d8e584d5e09a8b, + limb0: 0xdf2b8bdc7b6bce3c42b23459, + limb1: 0xb759cac5d1de2fc54de10f22, + limb2: 0x25b8dd37c5ccc96f, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xdf672fb96c756590bd5a39d7, - limb1: 0xe0d70414b121aef6b19fd4b6, - limb2: 0x2584eccb621b3893, + limb0: 0x1aff6880b81abba09c6d1f8b, + limb1: 0x3dacf2105aea95e3168fc65a, + limb2: 0x15112b2df210c79c, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x9f3d5407412eff8a16b6273a, - limb1: 0x591fcceae3788e83d6b719f5, - limb2: 0x1b2963028531f45b, + limb0: 0x881e34225b5f6bb4a8deabe4, + limb1: 0x8ce17c8cbe0f6928e5efe0e7, + limb2: 0x2610dd06bd95e6f8, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0xf2b1322f5d6653cadf42f345, - limb1: 0xe57685fedddc9a0786dc401d, - limb2: 0x198cc100df2dea75, + limb0: 0xe5587a4530c62858c8f543cd, + limb1: 0x507b79c5bc11539d2b72d65b, + limb2: 0x1715e822dca43ad0, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0xa564bd4501a850092073f65, - limb1: 0xb07ff2e93880d676b4455532, - limb2: 0xc2499fb90cdfd1e, + limb0: 0x39798dd3f1ad3427d9f23c79, + limb1: 0x187713d83c78015cee4a4df3, + limb2: 0xd2708abba95d860, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x954bf81acc0fecebb611ac41, - limb1: 0x12467450d79fb7c0e1c0965e, - limb2: 0x1afa4ba98f7edb4c, + limb0: 0x79c8ac89032c6cc4c84a3517, + limb1: 0xac1216a341a6b0badd606da, + limb2: 0x5ca3012dc886b26, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x612d63c3a0bb223e3964a5c6, - limb1: 0x9cbfb6feb6d0d3bcd7fced38, - limb2: 0xa5498fcfdfadcd1, + limb0: 0x94d857ccda9e6be2efd4ebe, + limb1: 0xc363ae0d502a2eb68ba3f914, + limb2: 0x145e5b5d0cad3158, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x1fd27773c46567f671d7783a, - limb1: 0x5d0db0cca5323dffce2223df, - limb2: 0xf2bc13955319d94, + limb0: 0x325b1d31628ddbba0803cc41, + limb1: 0x75b7e944db98ceb393643919, + limb2: 0x2717d5e3a1519f07, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0xd3f5711d881025d89e0064fe, - limb1: 0xd76bc9e5d79a2c6c330e84a5, - limb2: 0x1c28c7a4971f5dd8, + limb0: 0x54ed2360dec821b36218aae7, + limb1: 0xf85e98716f6c7db4c9171a3b, + limb2: 0xb04b815461779a9, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x6125b1e349295b863651ae95, - limb1: 0x928c3bcf9986d76e5591261b, - limb2: 0x13f83f9e1b233a2e, + limb0: 0x7a8332de45f83c1ab9244d55, + limb1: 0xa714b23714da4f13db886db6, + limb2: 0x21530674ed55a962, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x91bed47e585afc63a46e3764, - limb1: 0x4fc95a8a15eb08ff187a8601, - limb2: 0x15451da53b259035, + limb0: 0x752dc934df65b38c5590bb0b, + limb1: 0x17a9921f1e0e9019e18dd9d5, + limb2: 0x1c98e2288b9748ba, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x1fa6dccf30293a9d5b74aa9c, - limb1: 0x59dbb0c415781492faefde4e, - limb2: 0x11e7c4ab50910f3d, + limb0: 0x3697e9ed25a11f6f63cd3f2b, + limb1: 0x1cd0fd18adb6dbe7c95336f2, + limb2: 0x20d5081f906ba9c8, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0xf275df9663c41f755856fbec, - limb1: 0xccb71823a7bac3beef957a80, - limb2: 0x214e700679bfe89c, + limb0: 0xe0cae8326a28ab5003d5a56f, + limb1: 0x8a82aafa816758306aa680b9, + limb2: 0x1c9d52c0330e8a47, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xde1874f3d916db82fc458178, - limb1: 0x6a1862355d0d354ee276c1f6, - limb2: 0x2dae091f643c6c34, + limb0: 0x290fee5401bf363c39484f0a, + limb1: 0x81a0fbab52a6b9edd8fade1, + limb2: 0x26869316b832369a, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x9824e54061f4c27a1fbda5fe, - limb1: 0x58cfa62470ea05c32d0a18f, - limb2: 0x10b21bc91e43bae1, + limb0: 0x2dea5473359fee51cb2e0702, + limb1: 0xb231af1bbfa2bf52038133c2, + limb2: 0x111fbc860aaa20dc, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x58446a2dfdc4578ba00dc79e, - limb1: 0x9d3f0741f761858f41e8eb01, - limb2: 0x23cf87b57935047c, + limb0: 0xf11b709b49dbb30d02ff1d0a, + limb1: 0x8eea8f62019cf36e6701235f, + limb2: 0x1821e4e8e4c02c75, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x9c002e20b057804c282d4af2, - limb1: 0xa6617003a1a5ba5e825756b8, - limb2: 0x1c547a1aeee63e2f, + limb0: 0x137821e1d5bf35628ba35bf8, + limb1: 0xf5d47e94f894b499145b6026, + limb2: 0x2106fcc1f425b265, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xa538146311835f459a7118a9, - limb1: 0x30fa2b38529f29ab8b3c9b05, - limb2: 0x2bf4983e1ca6fb93, + limb0: 0x6cc02b9d8a922c99ea1283e3, + limb1: 0x71d0944653d0c8c455565a25, + limb2: 0x1c1a4c6035238785, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x2bf293c1fc289dd1a8262d0e, - limb1: 0x3a4cd8c98f5f340922f50805, - limb2: 0x38b1e2722bf0375, + limb0: 0x44fa0839d88b31d04c19b8d6, + limb1: 0x97a9bb1fd404f124fe4ee6a5, + limb2: 0x16a0fffa55b4b778, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x17eb9bf6753bbdaf2c07bba3, - limb1: 0x5dd421ea0b5fddf3c9f28fc2, - limb2: 0x253fa6f8cb3422f8, + limb0: 0xbd1c68db288be88835fac486, + limb1: 0xd7d1b2ad10864f16a77c965d, + limb2: 0xd3c84c5ab3997c2, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x6d5c0089806dac1749e81065, - limb1: 0x11f2f459028952852147bbf, - limb2: 0x19f9978f897239c9, + limb0: 0x1cd683fe4fed3b51f7132d49, + limb1: 0x51dc3c80877df4adf903e18f, + limb2: 0xf0ee5a7a7c8974, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x46911116650a70f01f4b5208, - limb1: 0x291f6595f569862372fb1efa, - limb2: 0x8c6742965fd07e6, + limb0: 0x143a6ee69765b53a86a0659a, + limb1: 0xcd52cbac21a127cb0bdb4f40, + limb2: 0x1dbb3e12d27bcf19, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0xeeec2534bac6ca98f5614909, - limb1: 0x95115d565c60587616b3d78f, - limb2: 0x174a7c61a23bee93, + limb0: 0x10b4706e6a72cc61e6eef3f9, + limb1: 0x512e3dae64a823050ffdfecd, + limb2: 0x2c3110ab08aebf6f, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x66fd0327fe0939b1b6091d1b, - limb1: 0x20a179cbeb891607a0f44e6f, - limb2: 0xd43a857ef40fcbd, + limb0: 0x637471c20438aee78e52d7c3, + limb1: 0x9bb739bd0c495b25e482ff84, + limb2: 0xef84ea7df45d4c7, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x9a5f6c065ff342af4a8ae5ab, - limb1: 0xb36ec87166bae8eecbabce0a, - limb2: 0x1ac54fdd3709d341, + limb0: 0x60da00cd2814ced4110e5415, + limb1: 0xebf545b23b2f4274fe54b12d, + limb2: 0x18c564cf9cc44c16, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xcb06f074c3a813635bf01bde, - limb1: 0x7e3d195ddf329056a2fff9c0, - limb2: 0x2317b876e54e17e1, + limb0: 0x656c66336c99aa472514040e, + limb1: 0x832a7a79af094744a8042a3f, + limb2: 0x15c230d2750c6a54, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x7723296f355225e823464314, - limb1: 0xb5fd39eeb9fca505c96e294b, - limb2: 0x2d23aa3ee89a53a3, + limb0: 0x90c708be1e4a9294d5a8ce5c, + limb1: 0x6c8f0525588b2fa1610b32d9, + limb2: 0x17be7857b9522ad7, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x4e1802d83a68e145410ab55a, - limb1: 0xc52d87b385eed23a8ffa9060, - limb2: 0x250f342251f63bdc, + limb0: 0x8fe07615f957f27e58e3372f, + limb1: 0xbc0dbaf177d7a644f61e06ad, + limb2: 0x5d6beb714f20045, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x22cd7ec9ee30a69611a42364, - limb1: 0xa62b77e37df83b3b8111f30d, - limb2: 0x10cfdd8fb09b60cb, + limb0: 0xb4a1dd92c86dfa5c3e13c8ee, + limb1: 0x6d65673e9aa9b30ebadcbac2, + limb2: 0x17ec77b3f4f4e45c, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xcbd6ef45da3f4224a2be64da, - limb1: 0xb995db4063bad397c8fef31d, - limb2: 0xc0f4e26c1d9ceee, + limb0: 0xa16135910cb7289da06fb7d7, + limb1: 0x4fb5f3dc55e9cd078827953f, + limb2: 0x2d3136a29a9898c3, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x796023377d221ab470f1dcb, - limb1: 0x1026384e0a1e7c004bf1ed82, - limb2: 0x280c048954d4399d, + limb0: 0x23e4a4e757648ea30d404dd3, + limb1: 0xce7a7c679b9a305bcae81353, + limb2: 0xcd418be8736f7b7, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x272159be4436122d7857995f, - limb1: 0xcf6e54550d2938d10302f417, - limb2: 0xf46b4f0f8ec4434, + limb0: 0x4bca506e3d6e2457d6ced82d, + limb1: 0xb6450ce562582acd18d94a3f, + limb2: 0x294c9a3aa9af73ef, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x67aecaea3c7c0652c81947a0, - limb1: 0x732ecb9e949089f45404930a, - limb2: 0x2743035ac35490ab, + limb0: 0x1cec032aac2889c895dd7c4b, + limb1: 0xd2a63ae520a07755f754cd26, + limb2: 0x206e12677d554b24, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x6b5a1c6e5fd1d5187d38b95a, - limb1: 0x64a47f9ed1e4ce44e829c9c2, - limb2: 0x2ab70834b4d0c4f0, + limb0: 0x492e57a5bbb29a9a58cd0c1, + limb1: 0x36469a8995b991aee77dce64, + limb2: 0x2caa4b3570e23ea6, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x561289f2a27d7b28c1f5f257, - limb1: 0x9bfc7da6974110e58b5128c, - limb2: 0x2ae3cba2e11a7776, + limb0: 0x99853a6e0642e1eed586878f, + limb1: 0xbe8fed420987c530750cc3fd, + limb2: 0x89ac9ec034c10ea, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xaeb175b28ea1bb52b63b1625, - limb1: 0xd9b5dcd7485e0a2997ac0a2f, - limb2: 0xc234ccc6d211bd2, + limb0: 0x12aa624bacd5f0df175b45d2, + limb1: 0x2230877036c89d6aa2722cb5, + limb2: 0x1d73cd12ab614416, limb3: 0x0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0xcab86cb64b149c097c88c87b, - limb1: 0x8d974c6f94f99dc5c4561249, - limb2: 0xd98f2e15f5df10e, + limb0: 0xa813d69ae52922f5eb971fed, + limb1: 0x9973d5d966048e7e89d55ea4, + limb2: 0x2afca4f8ab74e270, limb3: 0x0 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x9d358d2371420b269e3a44d, - limb1: 0xc2a9f0875935ab944a6642bc, - limb2: 0x1610ce6baa512656, + limb0: 0xe7c77abfa56382459f5bbc1d, + limb1: 0xe95f8755435a6365699c7b09, + limb2: 0x2f9b283687173116, limb3: 0x0 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x5042caea63c062cca51e8e85, - limb1: 0x6723628c461c14da7f427a5d, - limb2: 0xf7df492a9447af2, + limb0: 0x607281b78d2d8ec96fdb3587, + limb1: 0x635449ac94758ebc30bbcc55, + limb2: 0x163b1619127dd84d, limb3: 0x0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0xef1bff986cdfbc39040b9a78, - limb1: 0xb3e1f9452951eeb42a1f8f45, - limb2: 0x75b67b6fdb2aa03, + limb0: 0xcc232fdc9c5a39941bcbeca2, + limb1: 0xc07ffeb8a8615cfceae521b9, + limb2: 0x2d3dc73a8f788101, limb3: 0x0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x117f7ccd123d0f0d0709acab, - limb1: 0xe4a9bccc26771a3d2df192f1, - limb2: 0x46eeac5f27dc084, + limb0: 0xa71283147ac59e28f6bc858c, + limb1: 0xa845c86a535de5af972f311, + limb2: 0xdc5c250347597b, limb3: 0x0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } @@ -7089,296 +7089,296 @@ mod pairing_tests { .span(), big_Q: array![ u384 { - limb0: 0xd0f2e424bfeafc1f6f500912, - limb1: 0xa41c6545789097521a247939, - limb2: 0x2e5b1b5aff1a6479, + limb0: 0xbbad6d790f625499a661653c, + limb1: 0x6608b2eac8d231ac63e1a9bd, + limb2: 0x28e357f9239b7a9b, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x3ebf88e098d0d20cd73b7b07, - limb1: 0x97fac7725887ee3ab8fe2b84, - limb2: 0x23ba6435dfb1237, + limb0: 0xd4008787cabf77ca3956fb26, + limb1: 0xfb95b65ee83a93e2ccf61c20, + limb2: 0x8b370bd962abe75, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x3b0ce206f268f7e2895b88b9, - limb1: 0xbaa959355f438cb4174f5892, - limb2: 0xec61d988eb485e9, + limb0: 0xa70f7512749e3f589f9d83c7, + limb1: 0x782e4bf571deb67b29ae4849, + limb2: 0x2ed55a1749b7cf93, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x6fcf60ab2649dac7075d1381, - limb1: 0x5ba80aa57b3232f4a1779a71, - limb2: 0xd85ade5fd4e4582, + limb0: 0xb8d8a0cd34d50001ab613707, + limb1: 0xe2cd9f74824cd58c3716368b, + limb2: 0x24357e307fcbf1b1, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x80c80fb53698e4adddad201b, - limb1: 0x351d69b0efa90e59a0060636, - limb2: 0x64053ffebef939c, + limb0: 0x1f4f3b9863a41559fbfec0ba, + limb1: 0x2a15bbaeba63d57c47cc85c7, + limb2: 0x1d40c0ca9a6720da, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xef332958d6fb896721a76f38, - limb1: 0x85620d3dab6b29888cc56fbc, - limb2: 0xdc79c80f3c32d63, + limb0: 0xc2830a319da9f183372e390b, + limb1: 0x8da53880ff82bd3fad16d09b, + limb2: 0x2e3f5424a6449b5b, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xaa75d0d4fb4e744f8ebeeda1, - limb1: 0x2563ad4277345567e6e4c7f, - limb2: 0xe9039ffd629f076, + limb0: 0x713220c2731dc3b25d4d3fa0, + limb1: 0xb2806369e0c06b57a7db117f, + limb2: 0x2f62ed28792087ed, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x6a2f7fc8f2d1db80d80ecdfb, - limb1: 0x4dc0911042bab42f2d158f15, - limb2: 0x979c94fec03c73, + limb0: 0xa2f5dc5b9ae262df51df82a9, + limb1: 0x40581989de456074fae78e38, + limb2: 0xccd4a77b5bd2d84, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x7e58206ff69c4490f90b6804, - limb1: 0x2f6c28031c2f671e48808dc4, - limb2: 0x612c809bf300da, + limb0: 0xaf55f18968da77915ee4f75d, + limb1: 0x6a3156b790798c2fe09fc499, + limb2: 0x11cd2694f8eebeb5, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xb46c81cac34c8c149983b43c, - limb1: 0x75fa8d0b30533ae642dc074b, - limb2: 0x2189f3537e9132d1, + limb0: 0x5e7ec6759039fb117517060c, + limb1: 0x7a61cede691e0ffb7ccf06cc, + limb2: 0xb0dc676238823e1, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x42dacae74e3750f424fee36, - limb1: 0x2d4b3d5a943f935c98d6325e, - limb2: 0x2a94447eee8d8d5f, + limb0: 0x64df5d7d1473acab9e422af, + limb1: 0xd4e616390c71704b98890380, + limb2: 0x111c2134d2fa4d32, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xdfd48dca23af88ba8b33f4dc, - limb1: 0x59cfed1fa78c51ebc92c19de, - limb2: 0x1a975314abe57f53, + limb0: 0x2a73dc5fe8d528fb02c1db6d, + limb1: 0x80add0184189e9a27657a398, + limb2: 0x6394570eabb9dbb, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xc112fbd6d99d3762f1c6a9f4, - limb1: 0xb5ebd344e75c0a8bb26f1d18, - limb2: 0x1cee29c05855ae64, + limb0: 0x6c106aef6dfcd7f2cdc4a99a, + limb1: 0x73f98ae63cfcaa3ba2f5b7e8, + limb2: 0xf4c8d7e805ad32e, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x5838dd43e7bb7f42624cf28e, - limb1: 0x56781265753cdf8b34c5a82a, - limb2: 0x6a353b2e9e1f7de, + limb0: 0x4499e0cdcc3bc6478e456bfb, + limb1: 0x374b24f5db3620128ce51b35, + limb2: 0x1e784a70881ece0d, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x4297ba35cd0458378ebe0849, - limb1: 0xed9facb6a123b0ff06dac714, - limb2: 0x4d11dbdc356a72, + limb0: 0x7c1d73f150eb90f503355787, + limb1: 0x78207c7ce8df94fded5f1517, + limb2: 0x2ad25cf398917bd, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x3e9c720f9b26ec78d4616975, - limb1: 0xb161d87d3191d844bf162530, - limb2: 0x1b649a1c6b6b2537, + limb0: 0x11dd6ad80a3f0006e5ad075d, + limb1: 0x1c4d55ace4726174286b6a2b, + limb2: 0x1143a1b429ba4af0, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xdc1bf1114f957c105ca98854, - limb1: 0x75e436adbba05a8a785ed605, - limb2: 0xb6b982d4f76677f, + limb0: 0xcea889c62c5a900267809036, + limb1: 0x63f82aeaf408c589c8fb2030, + limb2: 0x2b206808913ad114, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xe0c32cb1678a220c88cee037, - limb1: 0x176237593fc03fdbf78442ab, - limb2: 0x13018ab47f24c3ee, + limb0: 0xcf2482d7aa56e229f4b4194, + limb1: 0x72c35c178dbcad8029e66754, + limb2: 0x13e5b41b0801cb45, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xabb8b770fc75e1457c76484e, - limb1: 0xfa484e60e6c5aa7603c1a622, - limb2: 0x1956849c2aa73724, + limb0: 0x8219c4777b25e57040319d4c, + limb1: 0xa89fcd514c51bb86a0aa8839, + limb2: 0x18acd75802c63c97, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x71ddd485c7613c068f50a559, - limb1: 0xd4b2342f9ce080dc046f9eb5, - limb2: 0x630a73395319489, + limb0: 0x40b402af3f7c6dd7637fbec3, + limb1: 0xadfcb3609e2c7e171409957, + limb2: 0x2dfa29ece90b9698, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x9d451f3743bcb6281e1a1b18, - limb1: 0x38bc0909846b5564055ef7fb, - limb2: 0x144847aac219cd7e, + limb0: 0xf319ef2efe360598cc599e2e, + limb1: 0xb899601e26ef32ec13cce4f8, + limb2: 0x68e871fe2c394c9, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xe9142e859a604778c263036b, - limb1: 0xbccd6af3727ec4411e952a4f, - limb2: 0x18ce82436ee4003, + limb0: 0x875b6e907bcf39957acb8868, + limb1: 0xcd58d1b64f3daeaa3ddef7e9, + limb2: 0x6fe470e2a6979f2, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x465262176075ec00170296d5, - limb1: 0x20516b4023f5d7d51335da77, - limb2: 0xb9cc2ab299370e, + limb0: 0x2c0d60c00e15780fc4e52b32, + limb1: 0x74be08962a2b02676ee86024, + limb2: 0x25496adb219668c8, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x975630f99685786690ad5bc7, - limb1: 0x699f7e99050f1d1b554d6db2, - limb2: 0x1d39d16e1d3589c4, + limb0: 0xf840f528e5591c1a2764879d, + limb1: 0xfa403a7334c0f491fd7085ac, + limb2: 0x1301a528306c1155, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xa2d706bb3ff8672db2ec7e96, - limb1: 0xfdd322a6428e2860d281f0c9, - limb2: 0x18b9f00d3d9041a2, + limb0: 0xcc97d2236603bd885759a961, + limb1: 0xa6a66048df25e03a63c29361, + limb2: 0x23e4b1b9f905d739, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x96c5fd74fd3f78b583964abe, - limb1: 0x97ac65e239b47b966c180ed4, - limb2: 0x2c78e85b2a9ac4f4, + limb0: 0x60cd4839480c7b16e621b626, + limb1: 0x3c426d0820f9e83554733ac3, + limb2: 0x214c8220093a4d54, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x50fae13c8ac3b7bc0af9150a, - limb1: 0x6cc5933c428a4c3ea2010fd6, - limb2: 0x1123cec40efe5754, + limb0: 0xf7a6f1edc898253b90b1b9c7, + limb1: 0xbdb997e897e0789c5528f07e, + limb2: 0x13ecf4a57d306852, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x25a6d3572057adedcd112d05, - limb1: 0x75ee480ae97a789dae478a83, - limb2: 0x2fece4edec4b8467, + limb0: 0x4c9066e858e2214dbc6bf5b6, + limb1: 0x6f0d63efdde59dfca30af467, + limb2: 0x164919e1cf86e67c, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xdb5ea29b5e93ca2cf77f8e49, - limb1: 0x1f8243c3db4008aaf318872f, - limb2: 0x7953249bc47973b, + limb0: 0x30bb696ec546f1c1d42f048b, + limb1: 0x9993eee13169df6cb5a3cedb, + limb2: 0x9dd6feed6215c24, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x4461379a81115fbbdc45dce1, - limb1: 0x977684859eaf137fab5b0fe4, - limb2: 0x22e22c52118e52f7, + limb0: 0xd74f01e7e7afe2bd8eed0f4c, + limb1: 0x138002418f6ec3da6f815976, + limb2: 0x7815a230ce0706a, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x7149190b8305e7181ac30d05, - limb1: 0xb55e5be0337befddb4a7d1ae, - limb2: 0x152e737e7253124f, + limb0: 0x124008172669328d5c5754ab, + limb1: 0x446b7b257b850c1d6c97d993, + limb2: 0xe1d3c4da4534adc, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xde653ae463f36f00cdf3925a, - limb1: 0xa5bebb7c44447680e75b98d9, - limb2: 0x258c880e42b183b4, + limb0: 0x55190ca963af51f36ddb02bf, + limb1: 0x44accfe50c46368f0aad6559, + limb2: 0x1909414ed14decd5, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x7bc7fbe735a3ece4fc329374, - limb1: 0xff64dda0748a413650d80f4e, - limb2: 0x2b4ca7568ff475f6, + limb0: 0xab72aae939a6b5d0e05bac2a, + limb1: 0xe675a29b67fb1fad1f6492c8, + limb2: 0x1e7dea010117e8c0, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xc26dac556309a677b720e28e, - limb1: 0xf1b2327046c31d82e6f82945, - limb2: 0x38a7af82ff7ef2d, + limb0: 0x70be80a46d35b6bc1a260ab9, + limb1: 0x673046cd0588a1f02e1820b6, + limb2: 0x2a684d77be139a88, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x659439dc530a474f7b6ff691, - limb1: 0xd9796ecb5b7f82c90025a04f, - limb2: 0x15cc3838ce111275, + limb0: 0xc7a548304a167e01c6bab981, + limb1: 0x76a1f85f16f311409816ef4e, + limb2: 0x26f18a33148f4f37, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x12053e86c2764f8962699006, - limb1: 0xdbf1e6170bca01a14bee4cb7, - limb2: 0x15fb9c74923ad804, + limb0: 0x1fe7a2670cbb51fed29803fb, + limb1: 0x77d5a85273d44953ea89356, + limb2: 0x154c6f6abe1f7a01, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xa90645e19c6240ec1b7660a0, - limb1: 0xc7781d4783263bf72959531f, - limb2: 0x22ad978b40ba6d20, + limb0: 0x2e716115fff32363d5990ffd, + limb1: 0x6d5588a4ab86816b2e04b84, + limb2: 0x5b0fd2a273ad380, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x2ece12abc6edff17571ac665, - limb1: 0xf64f86aa47f19485c8abaad1, - limb2: 0xdefac5d03be0a81, + limb0: 0x8167ed40b0b35059dc00e447, + limb1: 0x2bd7b10c1c1b1ef5c0858978, + limb2: 0x2598e9a50e4f5666, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xc843c8e6482345e343d3bf9c, - limb1: 0x9d0159761afd5e1103928366, - limb2: 0x9f2ee1aaddfad23, + limb0: 0xdb1f3525922fbaa75e551868, + limb1: 0x47f695a710e53d6021026c91, + limb2: 0x1239e866d7d2e4c2, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x4022ccdd0ddf0496b0a33855, - limb1: 0x39637e058d5deba0ea62bb26, - limb2: 0x41da708d7340bed, + limb0: 0x4a717dd1de27f79df8344639, + limb1: 0x711c2afe90fb25feb353e8f4, + limb2: 0x213e6a311d215adb, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xacf4689ff8177727c5e16fb0, - limb1: 0x26a019f637658702f575decd, - limb2: 0x5e72d137190182a, + limb0: 0x9174ee42c2be736369a8c014, + limb1: 0x908f00db7f9fcb1fe7b16915, + limb2: 0x28adadb9b8e6ac9, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x55c13f6eb70df6b94324751f, - limb1: 0x33f93533010ad1c007a0ff81, - limb2: 0xfe3125b3ba92664, + limb0: 0x74006c9f9a83a3b3523a4de4, + limb1: 0x10c1d85ec7abbb633f393052, + limb2: 0x10c823ab845de31a, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, @@ -7397,41 +7397,41 @@ mod pairing_tests { let pair0: G1G2Pair = G1G2Pair { p: G1Point { x: u384 { - limb0: 0x21975089bb8d6b1195b1d07, - limb1: 0x8195169577a6dd172e958d70, - limb2: 0x8ab31a227f443b0, + limb0: 0x5c724369afbc772d02aed58e, + limb1: 0x2cd3bc838c66439a3d6160b, + limb2: 0x72f26b55fb56be1, limb3: 0x0 }, y: u384 { - limb0: 0x9dd39b278236fe0355a776c0, - limb1: 0x76be9999b938414c9d4eee59, - limb2: 0xe9743276100a81a, + limb0: 0x772ca79c580e121ca148fe75, + limb1: 0xce2f55e418ca01b3d6d1014b, + limb2: 0x2884b1dc4e84e30f, limb3: 0x0 } }, q: G2Point { x0: u384 { - limb0: 0x91abb7b17315f982aef2daa, - limb1: 0x3784f1e1dcc5bd3c6057fc36, - limb2: 0x5e43a9f5ddc4096, + limb0: 0xa30b422f34656d6c94e40be, + limb1: 0x83069b5050fd7194c7e35d0c, + limb2: 0xf0e8184945e8d34, limb3: 0x0 }, x1: u384 { - limb0: 0xea381fc9ad6a874c4c30e799, - limb1: 0x5400a0322a66b2dba161a3cc, - limb2: 0xf2548816b229a7f, + limb0: 0xde9079ee8fa5e15901dfef27, + limb1: 0xdb602cf367841e5047ffab14, + limb2: 0x1752c7b6b35af45, limb3: 0x0 }, y0: u384 { - limb0: 0x527827cdd48b44df0632114, - limb1: 0xd2762c2df49af28528151765, - limb2: 0x12528096d8083e43, + limb0: 0x4dafbd7f615fd2aa9f5a0acc, + limb1: 0x35c8bbffe201ffd56deb5dea, + limb2: 0xa822a5ba029a283, limb3: 0x0 }, y1: u384 { - limb0: 0xb655f3ec24f8a836b50491e6, - limb1: 0xd24af792680a1069cfdbedcc, - limb2: 0x2b3f1dd16fd0cedc, + limb0: 0xec6d9e4fafec17b8404c0341, + limb1: 0x17fe961ad4b8ee3bf2ade626, + limb2: 0x1228147f83e3ea5, limb3: 0x0 } } @@ -7439,41 +7439,41 @@ mod pairing_tests { let pair1: G1G2Pair = G1G2Pair { p: G1Point { x: u384 { - limb0: 0x21975089bb8d6b1195b1d07, - limb1: 0x8195169577a6dd172e958d70, - limb2: 0x8ab31a227f443b0, + limb0: 0x5c724369afbc772d02aed58e, + limb1: 0x2cd3bc838c66439a3d6160b, + limb2: 0x72f26b55fb56be1, limb3: 0x0 }, y: u384 { - limb0: 0x9dd39b278236fe0355a776c0, - limb1: 0x76be9999b938414c9d4eee59, - limb2: 0xe9743276100a81a, + limb0: 0x772ca79c580e121ca148fe75, + limb1: 0xce2f55e418ca01b3d6d1014b, + limb2: 0x2884b1dc4e84e30f, limb3: 0x0 } }, q: G2Point { x0: u384 { - limb0: 0x91abb7b17315f982aef2daa, - limb1: 0x3784f1e1dcc5bd3c6057fc36, - limb2: 0x5e43a9f5ddc4096, + limb0: 0xa30b422f34656d6c94e40be, + limb1: 0x83069b5050fd7194c7e35d0c, + limb2: 0xf0e8184945e8d34, limb3: 0x0 }, x1: u384 { - limb0: 0xea381fc9ad6a874c4c30e799, - limb1: 0x5400a0322a66b2dba161a3cc, - limb2: 0xf2548816b229a7f, + limb0: 0xde9079ee8fa5e15901dfef27, + limb1: 0xdb602cf367841e5047ffab14, + limb2: 0x1752c7b6b35af45, limb3: 0x0 }, y0: u384 { - limb0: 0x527827cdd48b44df0632114, - limb1: 0xd2762c2df49af28528151765, - limb2: 0x12528096d8083e43, + limb0: 0x4dafbd7f615fd2aa9f5a0acc, + limb1: 0x35c8bbffe201ffd56deb5dea, + limb2: 0xa822a5ba029a283, limb3: 0x0 }, y1: u384 { - limb0: 0xb655f3ec24f8a836b50491e6, - limb1: 0xd24af792680a1069cfdbedcc, - limb2: 0x2b3f1dd16fd0cedc, + limb0: 0xec6d9e4fafec17b8404c0341, + limb1: 0x17fe961ad4b8ee3bf2ade626, + limb2: 0x1228147f83e3ea5, limb3: 0x0 } } @@ -7481,4693 +7481,4693 @@ mod pairing_tests { let pair2: G1G2Pair = G1G2Pair { p: G1Point { x: u384 { - limb0: 0x21975089bb8d6b1195b1d07, - limb1: 0x8195169577a6dd172e958d70, - limb2: 0x8ab31a227f443b0, + limb0: 0x5c724369afbc772d02aed58e, + limb1: 0x2cd3bc838c66439a3d6160b, + limb2: 0x72f26b55fb56be1, limb3: 0x0 }, y: u384 { - limb0: 0x9dd39b278236fe0355a776c0, - limb1: 0x76be9999b938414c9d4eee59, - limb2: 0xe9743276100a81a, + limb0: 0x772ca79c580e121ca148fe75, + limb1: 0xce2f55e418ca01b3d6d1014b, + limb2: 0x2884b1dc4e84e30f, limb3: 0x0 } }, q: G2Point { x0: u384 { - limb0: 0x91abb7b17315f982aef2daa, - limb1: 0x3784f1e1dcc5bd3c6057fc36, - limb2: 0x5e43a9f5ddc4096, + limb0: 0xa30b422f34656d6c94e40be, + limb1: 0x83069b5050fd7194c7e35d0c, + limb2: 0xf0e8184945e8d34, limb3: 0x0 }, x1: u384 { - limb0: 0xea381fc9ad6a874c4c30e799, - limb1: 0x5400a0322a66b2dba161a3cc, - limb2: 0xf2548816b229a7f, + limb0: 0xde9079ee8fa5e15901dfef27, + limb1: 0xdb602cf367841e5047ffab14, + limb2: 0x1752c7b6b35af45, limb3: 0x0 }, y0: u384 { - limb0: 0x527827cdd48b44df0632114, - limb1: 0xd2762c2df49af28528151765, - limb2: 0x12528096d8083e43, + limb0: 0x4dafbd7f615fd2aa9f5a0acc, + limb1: 0x35c8bbffe201ffd56deb5dea, + limb2: 0xa822a5ba029a283, limb3: 0x0 }, y1: u384 { - limb0: 0xb655f3ec24f8a836b50491e6, - limb1: 0xd24af792680a1069cfdbedcc, - limb2: 0x2b3f1dd16fd0cedc, + limb0: 0xec6d9e4fafec17b8404c0341, + limb1: 0x17fe961ad4b8ee3bf2ade626, + limb2: 0x1228147f83e3ea5, limb3: 0x0 } } }; let precomputed_miller_loop_result = E12D { w0: u384 { - limb0: 0xccb1210c14423f5680404618, - limb1: 0xbe09a8f0562ef8729791b9ff, - limb2: 0x1bca553db6054111, + limb0: 0xe528cdf0bc6025e9344a857a, + limb1: 0xaeaadd64b66ffa795fdc5ac7, + limb2: 0x208c92419d166fd4, limb3: 0x0 }, w1: u384 { - limb0: 0x17585f0555745aff09e41c24, - limb1: 0x7bc2493fc670888817e828f3, - limb2: 0x30436b5fddba7e0d, + limb0: 0x1ad75690e285cfe0570135df, + limb1: 0xba757794df1eaf671f87b224, + limb2: 0xe81e68c6ce99d71, limb3: 0x0 }, w2: u384 { - limb0: 0x8e928efb26315a38c145e152, - limb1: 0x9dbea8f77c6662e25b6c9d0c, - limb2: 0x241829b1a830f414, + limb0: 0x5f709b4e47355aff77ff7643, + limb1: 0x936ff3d8b1ae17755890f401, + limb2: 0x2d173509e061d7e9, limb3: 0x0 }, w3: u384 { - limb0: 0xf4bc1919f5c40316424470bc, - limb1: 0x65afe7b61b8c5509f43a1ce, - limb2: 0x216bcd5c53b38a6f, + limb0: 0x4488c9541973867a5701c7e6, + limb1: 0x25b3020b15a9868b86a5b7, + limb2: 0x17304775c6cf0a18, limb3: 0x0 }, w4: u384 { - limb0: 0xa0769e9becb39f8a3280c8e, - limb1: 0x7a8896fd659c24eeee92a3f1, - limb2: 0x130ee044fc1b1941, + limb0: 0x35846c72ee7ad64f81e160aa, + limb1: 0x4d6891c22699028f70bc3166, + limb2: 0x151cc4af9b3aa45e, limb3: 0x0 }, w5: u384 { - limb0: 0xe3d1d25e4e54f9251e335020, - limb1: 0x924e19e19d43380bd0b961dc, - limb2: 0x45e18d30b301459, + limb0: 0xcdffe939bc199ab94b666621, + limb1: 0xbb4d34a352d45ff78297616b, + limb2: 0x28cc88d91f4a5563, limb3: 0x0 }, w6: u384 { - limb0: 0xf7c21590c1af499b02da8f1a, - limb1: 0x8ca22004c9f2c80d672716e, - limb2: 0x185dfb4c3b44cb20, + limb0: 0x3351034e3ef5b6e3b2dbf0c7, + limb1: 0xf5512ce27613e550692bafa0, + limb2: 0x2ac08c5554295b15, limb3: 0x0 }, w7: u384 { - limb0: 0x3601957dd8fbebb91ec4c70e, - limb1: 0xd5daf54757faee91ed204fd0, - limb2: 0x103860bf8a1908c2, + limb0: 0xe14de659adc2fbcbcbe54831, + limb1: 0xaa1f34f0f3d769d7473e7cb9, + limb2: 0x1f8e4ff3f09ed32d, limb3: 0x0 }, w8: u384 { - limb0: 0x6bf2e7857721087f23cfac0c, - limb1: 0x723f2d41a64af93ed3fe1441, - limb2: 0x11b5f8380292d767, + limb0: 0xfad885d36046cdb39603ca8f, + limb1: 0xf5104f079272c875b02a60a3, + limb2: 0x1a0b70d9059a61b9, limb3: 0x0 }, w9: u384 { - limb0: 0x41e4ab7e2927a9aded6ba1b1, - limb1: 0x9891ee106d634e1f186f17c5, - limb2: 0x9e59abb737e46d9, + limb0: 0x27ab9f28981150aeb8f0a9e7, + limb1: 0xc7dbaa1e94514fc2b895b73f, + limb2: 0xa59254152788876, limb3: 0x0 }, w10: u384 { - limb0: 0xdb9c3106151d57721fa7a4bf, - limb1: 0xc99a44bf0c33e6f27c8ed792, - limb2: 0xedb636bf6fda1b2, + limb0: 0x7b3553ddb3bc20baccef74de, + limb1: 0x99bf5c19d25f4fff2277c51b, + limb2: 0x181a87bad258778b, limb3: 0x0 }, w11: u384 { - limb0: 0xbff1434362971f9ea4b906ca, - limb1: 0x2ee51bde6d1710876845fd79, - limb2: 0x2e96707022e7e1a0, + limb0: 0x63a8584656271677dd2e7489, + limb1: 0x877aa4c3cec656d72621b99a, + limb2: 0x2980b845b243b060, limb3: 0x0 } }; let lines = array![ G2Line { r0a0: u384 { - limb0: 0x4aeda325bf828fda830b09d9, - limb1: 0x56cff0ce5a2978e7ec1d81ab, - limb2: 0x1047f1538a00caff, + limb0: 0x13fc2cd2d19c89caf55a13a8, + limb1: 0x6a3f58c82d87f618a84e2bf0, + limb2: 0x18b4a261a618f14c, limb3: 0x0 }, r0a1: u384 { - limb0: 0xbe8e5b97224b98e7f1fcc51e, - limb1: 0x8ae08542ce6a92510c8a6a3, - limb2: 0x28b8d7677f535357, + limb0: 0xa12d7217806e8da77076b27c, + limb1: 0x868641e2c5440aefc45ec097, + limb2: 0x21a23fb8ecb967b4, limb3: 0x0 }, r1a0: u384 { - limb0: 0x7027f59ea974bef84d0f09d6, - limb1: 0xcd0a377cf86396157c355d47, - limb2: 0x22a587c2f24fb5f4, + limb0: 0x9c39813fffc4c7b20cc17a76, + limb1: 0xf4a2427d51f32abb183e2860, + limb2: 0x2687525f35660d8f, limb3: 0x0 }, r1a1: u384 { - limb0: 0x9e9c3f24e4752774b607075a, - limb1: 0xd8fcf12e4afb21341032a669, - limb2: 0x1291d7ca78a6131f, + limb0: 0xc039aad6d5de6af4f5c6c0bb, + limb1: 0x3750d73ecbf7e1bca03d1cf2, + limb2: 0xecbbbebf08974c8, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x4aeda325bf828fda830b09d9, - limb1: 0x56cff0ce5a2978e7ec1d81ab, - limb2: 0x1047f1538a00caff, + limb0: 0x13fc2cd2d19c89caf55a13a8, + limb1: 0x6a3f58c82d87f618a84e2bf0, + limb2: 0x18b4a261a618f14c, limb3: 0x0 }, r0a1: u384 { - limb0: 0xbe8e5b97224b98e7f1fcc51e, - limb1: 0x8ae08542ce6a92510c8a6a3, - limb2: 0x28b8d7677f535357, + limb0: 0xa12d7217806e8da77076b27c, + limb1: 0x868641e2c5440aefc45ec097, + limb2: 0x21a23fb8ecb967b4, limb3: 0x0 }, r1a0: u384 { - limb0: 0x7027f59ea974bef84d0f09d6, - limb1: 0xcd0a377cf86396157c355d47, - limb2: 0x22a587c2f24fb5f4, + limb0: 0x9c39813fffc4c7b20cc17a76, + limb1: 0xf4a2427d51f32abb183e2860, + limb2: 0x2687525f35660d8f, limb3: 0x0 }, r1a1: u384 { - limb0: 0x9e9c3f24e4752774b607075a, - limb1: 0xd8fcf12e4afb21341032a669, - limb2: 0x1291d7ca78a6131f, + limb0: 0xc039aad6d5de6af4f5c6c0bb, + limb1: 0x3750d73ecbf7e1bca03d1cf2, + limb2: 0xecbbbebf08974c8, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x1d8427677c9dfc3c5571f36e, - limb1: 0x618054e82757df75ab63e8e6, - limb2: 0x201c5d1f5730d52a, + limb0: 0x54759dba6a84024be322e99f, + limb1: 0x4e10ecee53f96244ef333ea1, + limb2: 0x17afac113b18aedd, limb3: 0x0 }, r0a1: u384 { - limb0: 0xa9e36ef619d4f32ee6803829, - limb1: 0xafa23d62549aaf3886b8c3ed, - limb2: 0x7ab770b61de4cd2, + limb0: 0xc7445875bbb1fe6f68064acb, + limb1: 0x31ca03d3bc3d4d6dd322a9f9, + limb2: 0xec20eb9f4783875, limb3: 0x0 }, r1a0: u384 { - limb0: 0xf849d4ee92abcd1e8b6df371, - limb1: 0xeb460e39891dc2481b4c0d49, - limb2: 0xdbec6afeee1ea34, + limb0: 0xcc38494d3c5bc464cbbb82d1, + limb1: 0xc3ae03392f8e2da27f434230, + limb2: 0x9dcfc13abcb9299, limb3: 0x0 }, r1a1: u384 { - limb0: 0xc9d58b6857ab64a22275f5ed, - limb1: 0xdf53548836863729874ec427, - limb2: 0x1dd276a8688b8d09, + limb0: 0xa8381fb666422121e2b63c8c, + limb1: 0x80ff6e77b58976a0f7444d9e, + limb2: 0x21989286f0a82b61, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x11cc19860555476ad181047b, - limb1: 0x64b7aba8ce6253fbe8caaca, - limb2: 0x1f50c2608347a286, + limb0: 0x52cd2431a88ef78ec482ce43, + limb1: 0xdb994b0266c17f5e8dded89e, + limb2: 0x107cd7f4d3a5c20f, limb3: 0x0 }, r0a1: u384 { - limb0: 0x4a130505f632767340d19fda, - limb1: 0xca34c0e4780cfbe3709044ad, - limb2: 0x152a7d4ddccc54d6, + limb0: 0xb4e4c1a20d77277f1ecef6b, + limb1: 0x3fc13dd5746446d4e724e645, + limb2: 0x18ed3b584ac56dfe, limb3: 0x0 }, r1a0: u384 { - limb0: 0xf04c85511391fee40bded4a5, - limb1: 0x859ca1d257ec71cad24b9c70, - limb2: 0x22d3447c81e8ed91, + limb0: 0x3a537f5b220d3afddbd3be9d, + limb1: 0xeddb087729b8776323c5b8ee, + limb2: 0x1f5e5f61ae8c59e6, limb3: 0x0 }, r1a1: u384 { - limb0: 0xdaa6f026366910af07496662, - limb1: 0xf3efd28d20364e2671ddd3c3, - limb2: 0x13a06ef003ec6d74, + limb0: 0x4fe2c98dc347d3ceb841acdf, + limb1: 0xe6a7f4bdda3390e40c62a288, + limb2: 0x2a277c878fe85394, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x1d8427677c9dfc3c5571f36e, - limb1: 0x618054e82757df75ab63e8e6, - limb2: 0x201c5d1f5730d52a, + limb0: 0x54759dba6a84024be322e99f, + limb1: 0x4e10ecee53f96244ef333ea1, + limb2: 0x17afac113b18aedd, limb3: 0x0 }, r0a1: u384 { - limb0: 0xa9e36ef619d4f32ee6803829, - limb1: 0xafa23d62549aaf3886b8c3ed, - limb2: 0x7ab770b61de4cd2, + limb0: 0xc7445875bbb1fe6f68064acb, + limb1: 0x31ca03d3bc3d4d6dd322a9f9, + limb2: 0xec20eb9f4783875, limb3: 0x0 }, r1a0: u384 { - limb0: 0xf849d4ee92abcd1e8b6df371, - limb1: 0xeb460e39891dc2481b4c0d49, - limb2: 0xdbec6afeee1ea34, + limb0: 0xcc38494d3c5bc464cbbb82d1, + limb1: 0xc3ae03392f8e2da27f434230, + limb2: 0x9dcfc13abcb9299, limb3: 0x0 }, r1a1: u384 { - limb0: 0xc9d58b6857ab64a22275f5ed, - limb1: 0xdf53548836863729874ec427, - limb2: 0x1dd276a8688b8d09, + limb0: 0xa8381fb666422121e2b63c8c, + limb1: 0x80ff6e77b58976a0f7444d9e, + limb2: 0x21989286f0a82b61, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x11cc19860555476ad181047b, - limb1: 0x64b7aba8ce6253fbe8caaca, - limb2: 0x1f50c2608347a286, + limb0: 0x52cd2431a88ef78ec482ce43, + limb1: 0xdb994b0266c17f5e8dded89e, + limb2: 0x107cd7f4d3a5c20f, limb3: 0x0 }, r0a1: u384 { - limb0: 0x4a130505f632767340d19fda, - limb1: 0xca34c0e4780cfbe3709044ad, - limb2: 0x152a7d4ddccc54d6, + limb0: 0xb4e4c1a20d77277f1ecef6b, + limb1: 0x3fc13dd5746446d4e724e645, + limb2: 0x18ed3b584ac56dfe, limb3: 0x0 }, r1a0: u384 { - limb0: 0xf04c85511391fee40bded4a5, - limb1: 0x859ca1d257ec71cad24b9c70, - limb2: 0x22d3447c81e8ed91, + limb0: 0x3a537f5b220d3afddbd3be9d, + limb1: 0xeddb087729b8776323c5b8ee, + limb2: 0x1f5e5f61ae8c59e6, limb3: 0x0 }, r1a1: u384 { - limb0: 0xdaa6f026366910af07496662, - limb1: 0xf3efd28d20364e2671ddd3c3, - limb2: 0x13a06ef003ec6d74, + limb0: 0x4fe2c98dc347d3ceb841acdf, + limb1: 0xe6a7f4bdda3390e40c62a288, + limb2: 0x2a277c878fe85394, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xb01a2a53f64ef3e9436c58c9, - limb1: 0xbc19e0d16961b49199dd0a24, - limb2: 0x1d7c10c14cab781b, + limb0: 0x53e743cfae97f5f975cf49cd, + limb1: 0x4a80ced31104872cc46b3fa6, + limb2: 0x26af32e1e4b51233, limb3: 0x0 }, r0a1: u384 { - limb0: 0x40b9031a11267d78e2e7e274, - limb1: 0x58308d9366af46e73594feba, - limb2: 0x29461a032a504c79, + limb0: 0x20537276ce9b6d318ea2f567, + limb1: 0xf0d44c7024c00ead73f13f53, + limb2: 0x13e665e776128b92, limb3: 0x0 }, r1a0: u384 { - limb0: 0xeb0a8ab89ca2d263d967c1a9, - limb1: 0xac5f137ad95222c8a2b26167, - limb2: 0x1023f8a52d35e741, + limb0: 0xad9a173a5d331f5e8221dedc, + limb1: 0x11fc759697a8b7533cf8e7fd, + limb2: 0x281514af188294d6, limb3: 0x0 }, r1a1: u384 { - limb0: 0x974cb7a7de7fd9e1ad12424, - limb1: 0x8a8fc445381c8181cad234b8, - limb2: 0x62432d6bb17a78e, + limb0: 0xcd59e5219230c0937878feff, + limb1: 0x85d1c954acb2bf4803a9e200, + limb2: 0x4229bcd8d07f251, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xb01a2a53f64ef3e9436c58c9, - limb1: 0xbc19e0d16961b49199dd0a24, - limb2: 0x1d7c10c14cab781b, + limb0: 0x53e743cfae97f5f975cf49cd, + limb1: 0x4a80ced31104872cc46b3fa6, + limb2: 0x26af32e1e4b51233, limb3: 0x0 }, r0a1: u384 { - limb0: 0x40b9031a11267d78e2e7e274, - limb1: 0x58308d9366af46e73594feba, - limb2: 0x29461a032a504c79, + limb0: 0x20537276ce9b6d318ea2f567, + limb1: 0xf0d44c7024c00ead73f13f53, + limb2: 0x13e665e776128b92, limb3: 0x0 }, r1a0: u384 { - limb0: 0xeb0a8ab89ca2d263d967c1a9, - limb1: 0xac5f137ad95222c8a2b26167, - limb2: 0x1023f8a52d35e741, + limb0: 0xad9a173a5d331f5e8221dedc, + limb1: 0x11fc759697a8b7533cf8e7fd, + limb2: 0x281514af188294d6, limb3: 0x0 }, r1a1: u384 { - limb0: 0x974cb7a7de7fd9e1ad12424, - limb1: 0x8a8fc445381c8181cad234b8, - limb2: 0x62432d6bb17a78e, + limb0: 0xcd59e5219230c0937878feff, + limb1: 0x85d1c954acb2bf4803a9e200, + limb2: 0x4229bcd8d07f251, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x50d09b248f2d4da08d073c2a, - limb1: 0x434fdd82f7353d33a22424d9, - limb2: 0x9bd63833bf79d9, + limb0: 0xa4e9586d1e24c4e20dafd647, + limb1: 0x7f88fb247cdc95b6010d9e1, + limb2: 0x2fc2b7b6b4abaf58, limb3: 0x0 }, r0a1: u384 { - limb0: 0x6541a267a2628b3e40f2507, - limb1: 0x7c287dc885ed26eb27d811f8, - limb2: 0x25bdc78993309a2c, + limb0: 0x9bbcc4481ffe859db49e1d98, + limb1: 0x13be783da3c9bea06995338d, + limb2: 0x2041db55312bcc8b, limb3: 0x0 }, r1a0: u384 { - limb0: 0x89bf6e8a82a0a2ec2930a33a, - limb1: 0x54aa6390dc622add1ac46785, - limb2: 0x305234d8296d0cc8, + limb0: 0x89721c899fdfd2776e1d4131, + limb1: 0x602e0c14a55d62b055ca8113, + limb2: 0x1fbed06b550ce696, limb3: 0x0 }, r1a1: u384 { - limb0: 0x4cd4af85a2735ffa30ef7f0c, - limb1: 0x83181236a975597a14bdd4fa, - limb2: 0x1f58be32dae49f67, + limb0: 0xfff5deaaf0a2cf3cca44de5c, + limb1: 0xd5efcfc87d7bc3cc0d3d9be1, + limb2: 0x18106453c47c63f5, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x32c6ae6152ff5edce98ba66e, - limb1: 0x2d89300261f605d131558770, - limb2: 0x2c9050781ec7607, + limb0: 0x33720aad04d475cab632ceb4, + limb1: 0xd7b4eef636fd40d7ad28aaf7, + limb2: 0x25e952c734deb4a7, limb3: 0x0 }, r0a1: u384 { - limb0: 0x9a0002c354b3c199e1a86169, - limb1: 0x22a2e9e4017311d59505697c, - limb2: 0x1305350285a35c0b, + limb0: 0x8c407e44689ce2ec6ea22bb3, + limb1: 0x10ab4ebbd57974771a9bfe37, + limb2: 0xc2d6b95efdcdb61, limb3: 0x0 }, r1a0: u384 { - limb0: 0x9d868b9a64cd681fdee8d88d, - limb1: 0x4b23522a1965d95ff4c7ad6c, - limb2: 0x192cef14cb74ed9d, + limb0: 0xb03dd6a767461c482dcafa86, + limb1: 0xbbde25f51257025e9a28974, + limb2: 0x278e5fd00fb1b935, limb3: 0x0 }, r1a1: u384 { - limb0: 0x7182b86cbbaecdd7ed6a564c, - limb1: 0x4d61062172510705650eb140, - limb2: 0x141e46297dc0dca8, + limb0: 0x7bbd2c1bbf42867093a08f41, + limb1: 0xcc4d5b03ab2a82a219b80b43, + limb2: 0x2105554776d3cf89, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x50d09b248f2d4da08d073c2a, - limb1: 0x434fdd82f7353d33a22424d9, - limb2: 0x9bd63833bf79d9, + limb0: 0xa4e9586d1e24c4e20dafd647, + limb1: 0x7f88fb247cdc95b6010d9e1, + limb2: 0x2fc2b7b6b4abaf58, limb3: 0x0 }, r0a1: u384 { - limb0: 0x6541a267a2628b3e40f2507, - limb1: 0x7c287dc885ed26eb27d811f8, - limb2: 0x25bdc78993309a2c, + limb0: 0x9bbcc4481ffe859db49e1d98, + limb1: 0x13be783da3c9bea06995338d, + limb2: 0x2041db55312bcc8b, limb3: 0x0 }, r1a0: u384 { - limb0: 0x89bf6e8a82a0a2ec2930a33a, - limb1: 0x54aa6390dc622add1ac46785, - limb2: 0x305234d8296d0cc8, + limb0: 0x89721c899fdfd2776e1d4131, + limb1: 0x602e0c14a55d62b055ca8113, + limb2: 0x1fbed06b550ce696, limb3: 0x0 }, r1a1: u384 { - limb0: 0x4cd4af85a2735ffa30ef7f0c, - limb1: 0x83181236a975597a14bdd4fa, - limb2: 0x1f58be32dae49f67, + limb0: 0xfff5deaaf0a2cf3cca44de5c, + limb1: 0xd5efcfc87d7bc3cc0d3d9be1, + limb2: 0x18106453c47c63f5, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x32c6ae6152ff5edce98ba66e, - limb1: 0x2d89300261f605d131558770, - limb2: 0x2c9050781ec7607, + limb0: 0x33720aad04d475cab632ceb4, + limb1: 0xd7b4eef636fd40d7ad28aaf7, + limb2: 0x25e952c734deb4a7, limb3: 0x0 }, r0a1: u384 { - limb0: 0x9a0002c354b3c199e1a86169, - limb1: 0x22a2e9e4017311d59505697c, - limb2: 0x1305350285a35c0b, + limb0: 0x8c407e44689ce2ec6ea22bb3, + limb1: 0x10ab4ebbd57974771a9bfe37, + limb2: 0xc2d6b95efdcdb61, limb3: 0x0 }, r1a0: u384 { - limb0: 0x9d868b9a64cd681fdee8d88d, - limb1: 0x4b23522a1965d95ff4c7ad6c, - limb2: 0x192cef14cb74ed9d, + limb0: 0xb03dd6a767461c482dcafa86, + limb1: 0xbbde25f51257025e9a28974, + limb2: 0x278e5fd00fb1b935, limb3: 0x0 }, r1a1: u384 { - limb0: 0x7182b86cbbaecdd7ed6a564c, - limb1: 0x4d61062172510705650eb140, - limb2: 0x141e46297dc0dca8, + limb0: 0x7bbd2c1bbf42867093a08f41, + limb1: 0xcc4d5b03ab2a82a219b80b43, + limb2: 0x2105554776d3cf89, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x83173e9fc564f57217e7e10, - limb1: 0xae8e786534dc4097d40a6e36, - limb2: 0x23639c47656fc836, + limb0: 0x32e40fb4d2025cd0e82ced6f, + limb1: 0xbc0608261a5f898f868a08d8, + limb2: 0x282ba090b78fca30, limb3: 0x0 }, r0a1: u384 { - limb0: 0xcca0a878909d6c946766541e, - limb1: 0x2f27216863ac4a89e15f4c65, - limb2: 0x13813f125a599c4f, + limb0: 0xdfe55dec41a63986c6aceff7, + limb1: 0x2555dd47b4f4cd057f63d51, + limb2: 0xf5a1242bc10ee1f, limb3: 0x0 }, r1a0: u384 { - limb0: 0x6c3788f9177c70fdb34506f5, - limb1: 0x8c5c9aa7395859b251025f92, - limb2: 0x8bcdf1c5f2df1c1, + limb0: 0x590c3a14f70d93710ad8d62d, + limb1: 0x91b6b9b5a53eb9825ebe4230, + limb2: 0x2f3c78d5b1a40d44, limb3: 0x0 }, r1a1: u384 { - limb0: 0xd03d800ad7199145899fa736, - limb1: 0x86a4d6d64fc15055b1c5de2f, - limb2: 0x11c5b88941107a29, + limb0: 0x7fa2feee5a3d934393f3dcdb, + limb1: 0x216af82d8ef724bef3a0cff9, + limb2: 0x2a3b1b41079d39de, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x83173e9fc564f57217e7e10, - limb1: 0xae8e786534dc4097d40a6e36, - limb2: 0x23639c47656fc836, + limb0: 0x32e40fb4d2025cd0e82ced6f, + limb1: 0xbc0608261a5f898f868a08d8, + limb2: 0x282ba090b78fca30, limb3: 0x0 }, r0a1: u384 { - limb0: 0xcca0a878909d6c946766541e, - limb1: 0x2f27216863ac4a89e15f4c65, - limb2: 0x13813f125a599c4f, + limb0: 0xdfe55dec41a63986c6aceff7, + limb1: 0x2555dd47b4f4cd057f63d51, + limb2: 0xf5a1242bc10ee1f, limb3: 0x0 }, r1a0: u384 { - limb0: 0x6c3788f9177c70fdb34506f5, - limb1: 0x8c5c9aa7395859b251025f92, - limb2: 0x8bcdf1c5f2df1c1, + limb0: 0x590c3a14f70d93710ad8d62d, + limb1: 0x91b6b9b5a53eb9825ebe4230, + limb2: 0x2f3c78d5b1a40d44, limb3: 0x0 }, r1a1: u384 { - limb0: 0xd03d800ad7199145899fa736, - limb1: 0x86a4d6d64fc15055b1c5de2f, - limb2: 0x11c5b88941107a29, + limb0: 0x7fa2feee5a3d934393f3dcdb, + limb1: 0x216af82d8ef724bef3a0cff9, + limb2: 0x2a3b1b41079d39de, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x86736dd62af048737f84cb22, - limb1: 0x667da23b9542ce483543b247, - limb2: 0x7b7c1254e706a55, + limb0: 0x70f807c9bd9cc653569a88c0, + limb1: 0xd3bd9e80a4c0879b8c54502f, + limb2: 0x78f06a79ebcc122, limb3: 0x0 }, r0a1: u384 { - limb0: 0x4fc121cb82a29868df438ac2, - limb1: 0xc33253988f53ead1841e59de, - limb2: 0x1530890426f60b0, + limb0: 0x1f4b6ad4455ba03d167d7fb3, + limb1: 0xd11276f3c684ac26d1a62390, + limb2: 0x2e376293ba7c79b7, limb3: 0x0 }, r1a0: u384 { - limb0: 0x732272d47423d09a8de631bc, - limb1: 0xe777956d515e42bd25ea620a, - limb2: 0xa90e231dad0ff45, + limb0: 0xe7a2888c80e82ed69b2c357d, + limb1: 0xa5057b1db97b9c3edd232a43, + limb2: 0x1eed211bc2e66931, limb3: 0x0 }, r1a1: u384 { - limb0: 0xc1a1cca4243e008e07846c2f, - limb1: 0xf9baa07879ab17ee0cec72b8, - limb2: 0x2d45bc01b6674ed1, + limb0: 0xaca29d5ef46c59744a30d2e, + limb1: 0xfeb93f366d5295ce80bf592, + limb2: 0x697b2aa97f68681, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x86736dd62af048737f84cb22, - limb1: 0x667da23b9542ce483543b247, - limb2: 0x7b7c1254e706a55, + limb0: 0x70f807c9bd9cc653569a88c0, + limb1: 0xd3bd9e80a4c0879b8c54502f, + limb2: 0x78f06a79ebcc122, limb3: 0x0 }, r0a1: u384 { - limb0: 0x4fc121cb82a29868df438ac2, - limb1: 0xc33253988f53ead1841e59de, - limb2: 0x1530890426f60b0, + limb0: 0x1f4b6ad4455ba03d167d7fb3, + limb1: 0xd11276f3c684ac26d1a62390, + limb2: 0x2e376293ba7c79b7, limb3: 0x0 }, r1a0: u384 { - limb0: 0x732272d47423d09a8de631bc, - limb1: 0xe777956d515e42bd25ea620a, - limb2: 0xa90e231dad0ff45, + limb0: 0xe7a2888c80e82ed69b2c357d, + limb1: 0xa5057b1db97b9c3edd232a43, + limb2: 0x1eed211bc2e66931, limb3: 0x0 }, r1a1: u384 { - limb0: 0xc1a1cca4243e008e07846c2f, - limb1: 0xf9baa07879ab17ee0cec72b8, - limb2: 0x2d45bc01b6674ed1, + limb0: 0xaca29d5ef46c59744a30d2e, + limb1: 0xfeb93f366d5295ce80bf592, + limb2: 0x697b2aa97f68681, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xd842323afdcb7149d8ffe91e, - limb1: 0xfe0b26b7dd3fe7c4696442d1, - limb2: 0x12e1d2156472ae4b, + limb0: 0x21c98846074d27fd948bf071, + limb1: 0x2677e986de7a6bb799458f9, + limb2: 0xbfae24b95db3021, limb3: 0x0 }, r0a1: u384 { - limb0: 0xcf66f73b8c4b2a1837b951e6, - limb1: 0x795ce814f943e7e0dcfc8a9f, - limb2: 0x1991f6b0881c457b, + limb0: 0x241a18abd825d1d53b4b1cd1, + limb1: 0x1153ff7044093f39311453e, + limb2: 0x7ef5b22d955cb08, limb3: 0x0 }, r1a0: u384 { - limb0: 0x58d3c283282db621af15efd, - limb1: 0xd17151df7a6ea214f4ff86fb, - limb2: 0x2315879c4afb015c, + limb0: 0xfde2d3f182c7404c916ddaee, + limb1: 0x51059992e83a57e0357b63f3, + limb2: 0x5de94c1a6dce11c, limb3: 0x0 }, r1a1: u384 { - limb0: 0x789184e1fd95196e47d76735, - limb1: 0x82c4d943a48d1599de53cec1, - limb2: 0x4c78fcc7767bad5, + limb0: 0xa897c205d1548b407d3c7597, + limb1: 0x3e8437329ebf4e2f1fe3b370, + limb2: 0x1e321d523b1a40f8, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xd842323afdcb7149d8ffe91e, - limb1: 0xfe0b26b7dd3fe7c4696442d1, - limb2: 0x12e1d2156472ae4b, + limb0: 0x21c98846074d27fd948bf071, + limb1: 0x2677e986de7a6bb799458f9, + limb2: 0xbfae24b95db3021, limb3: 0x0 }, r0a1: u384 { - limb0: 0xcf66f73b8c4b2a1837b951e6, - limb1: 0x795ce814f943e7e0dcfc8a9f, - limb2: 0x1991f6b0881c457b, + limb0: 0x241a18abd825d1d53b4b1cd1, + limb1: 0x1153ff7044093f39311453e, + limb2: 0x7ef5b22d955cb08, limb3: 0x0 }, r1a0: u384 { - limb0: 0x58d3c283282db621af15efd, - limb1: 0xd17151df7a6ea214f4ff86fb, - limb2: 0x2315879c4afb015c, + limb0: 0xfde2d3f182c7404c916ddaee, + limb1: 0x51059992e83a57e0357b63f3, + limb2: 0x5de94c1a6dce11c, limb3: 0x0 }, r1a1: u384 { - limb0: 0x789184e1fd95196e47d76735, - limb1: 0x82c4d943a48d1599de53cec1, - limb2: 0x4c78fcc7767bad5, + limb0: 0xa897c205d1548b407d3c7597, + limb1: 0x3e8437329ebf4e2f1fe3b370, + limb2: 0x1e321d523b1a40f8, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xb09ede0d346a1b6ec085ce70, - limb1: 0x75f12e436ad19c4f51562ca, - limb2: 0x12a8e069e5450542, + limb0: 0x3b7c7dfdc0377c6e77a69a78, + limb1: 0x56046802d2acc2048f6473b0, + limb2: 0x1e538130528f2037, limb3: 0x0 }, r0a1: u384 { - limb0: 0x4089c8be0d33f73952f5a9e5, - limb1: 0x306e20a796fe3aae21754993, - limb2: 0x1ae85506936a66b4, + limb0: 0xf8d9c38bafe394d496ec036b, + limb1: 0xa7178b19843c74a1c9ffdec9, + limb2: 0x754d38a41b241f5, limb3: 0x0 }, r1a0: u384 { - limb0: 0xeb87c2f483eb413609c79693, - limb1: 0xfca2338816ba0057962fa8af, - limb2: 0x221d57ed5b6ea802, + limb0: 0x5399cd6b03cd5dd0e202dc18, + limb1: 0x27132b0286f70ab0f9d3f154, + limb2: 0x209e0408c047ebf6, limb3: 0x0 }, r1a1: u384 { - limb0: 0x30af7dd4f28d3007771fad43, - limb1: 0xb2bac5301b8eac6a03028e9f, - limb2: 0x243a21143229cae6, + limb0: 0xa73bf15125290077d6d0d018, + limb1: 0xe07ebcc1ab67f9cf97be2e80, + limb2: 0x217014f56f93c3a2, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x8e721d84d142ac8bb15d6d20, - limb1: 0xfdbe9b34b44d9c8fbbb44d27, - limb2: 0x2bbcfb6009f9d9fd, + limb0: 0xb565c9168c2f34f5d1a48833, + limb1: 0x9f2143f7ae3a47cffb1e8fda, + limb2: 0xaebc823dc1fcd02, limb3: 0x0 }, r0a1: u384 { - limb0: 0x1a6f84bb7affd645523aba19, - limb1: 0x2c1d3de186d4a9e25165a045, - limb2: 0x227a6d4da28dd29d, + limb0: 0x59b0e8a0118c2f5ec29f117b, + limb1: 0xd1d302931406f12c6271f149, + limb2: 0x18a65ecc25e7a0e3, limb3: 0x0 }, r1a0: u384 { - limb0: 0x169a3cf0d9bb5d726d68a118, - limb1: 0x7af89d17c5e440ea4a8d5f85, - limb2: 0x29cfbf2b76f278a, + limb0: 0xcf4c8bcea64951980f866870, + limb1: 0xd708dcd6450bd5f68bed09a3, + limb2: 0xb3c0fa83c8b5f48, limb3: 0x0 }, r1a1: u384 { - limb0: 0xeaa61c7cb6c5403c1554c0c5, - limb1: 0xadee94e017cbf5b2924f3ab1, - limb2: 0x6f005e8f32e87e5, + limb0: 0xc45fac32b4b9fb37bdaea5f3, + limb1: 0xc46068320849da30be837df5, + limb2: 0x2c6ea62118c44345, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xb09ede0d346a1b6ec085ce70, - limb1: 0x75f12e436ad19c4f51562ca, - limb2: 0x12a8e069e5450542, + limb0: 0x3b7c7dfdc0377c6e77a69a78, + limb1: 0x56046802d2acc2048f6473b0, + limb2: 0x1e538130528f2037, limb3: 0x0 }, r0a1: u384 { - limb0: 0x4089c8be0d33f73952f5a9e5, - limb1: 0x306e20a796fe3aae21754993, - limb2: 0x1ae85506936a66b4, + limb0: 0xf8d9c38bafe394d496ec036b, + limb1: 0xa7178b19843c74a1c9ffdec9, + limb2: 0x754d38a41b241f5, limb3: 0x0 }, r1a0: u384 { - limb0: 0xeb87c2f483eb413609c79693, - limb1: 0xfca2338816ba0057962fa8af, - limb2: 0x221d57ed5b6ea802, + limb0: 0x5399cd6b03cd5dd0e202dc18, + limb1: 0x27132b0286f70ab0f9d3f154, + limb2: 0x209e0408c047ebf6, limb3: 0x0 }, r1a1: u384 { - limb0: 0x30af7dd4f28d3007771fad43, - limb1: 0xb2bac5301b8eac6a03028e9f, - limb2: 0x243a21143229cae6, + limb0: 0xa73bf15125290077d6d0d018, + limb1: 0xe07ebcc1ab67f9cf97be2e80, + limb2: 0x217014f56f93c3a2, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x8e721d84d142ac8bb15d6d20, - limb1: 0xfdbe9b34b44d9c8fbbb44d27, - limb2: 0x2bbcfb6009f9d9fd, + limb0: 0xb565c9168c2f34f5d1a48833, + limb1: 0x9f2143f7ae3a47cffb1e8fda, + limb2: 0xaebc823dc1fcd02, limb3: 0x0 }, r0a1: u384 { - limb0: 0x1a6f84bb7affd645523aba19, - limb1: 0x2c1d3de186d4a9e25165a045, - limb2: 0x227a6d4da28dd29d, + limb0: 0x59b0e8a0118c2f5ec29f117b, + limb1: 0xd1d302931406f12c6271f149, + limb2: 0x18a65ecc25e7a0e3, limb3: 0x0 }, r1a0: u384 { - limb0: 0x169a3cf0d9bb5d726d68a118, - limb1: 0x7af89d17c5e440ea4a8d5f85, - limb2: 0x29cfbf2b76f278a, + limb0: 0xcf4c8bcea64951980f866870, + limb1: 0xd708dcd6450bd5f68bed09a3, + limb2: 0xb3c0fa83c8b5f48, limb3: 0x0 }, r1a1: u384 { - limb0: 0xeaa61c7cb6c5403c1554c0c5, - limb1: 0xadee94e017cbf5b2924f3ab1, - limb2: 0x6f005e8f32e87e5, + limb0: 0xc45fac32b4b9fb37bdaea5f3, + limb1: 0xc46068320849da30be837df5, + limb2: 0x2c6ea62118c44345, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xf719b63641c3aaa6606d8efa, - limb1: 0xf42199916053745d085345ae, - limb2: 0x23ed8081d2abacad, + limb0: 0x9611d44432206361cd7f3473, + limb1: 0xd34ce79c946302bdbf8f72de, + limb2: 0x1fd5b330038873b0, limb3: 0x0 }, r0a1: u384 { - limb0: 0xbb1d89280222919b5482b64e, - limb1: 0xad89538078a7e66390888932, - limb2: 0xaaa5e47eb46d170, + limb0: 0x71a17fc89e530dda653c4220, + limb1: 0x37852a7f67a5fa74c6613c00, + limb2: 0x1e11dde6c5c9261d, limb3: 0x0 }, r1a0: u384 { - limb0: 0x1380fb6779221089cb10958a, - limb1: 0x931568ddfc4bec09e1bf17d5, - limb2: 0x185f166c24c11813, + limb0: 0xf8f9c22149b11566f643511e, + limb1: 0xeafd5e990baff3df753b4545, + limb2: 0x2e3219be0c5ae36a, limb3: 0x0 }, r1a1: u384 { - limb0: 0x8e7af376343f702b59b20086, - limb1: 0x2e77f4bd9bfc2f2c9361ced, - limb2: 0x9f8fe6c0b98ab93, + limb0: 0x8e2193129c343cb3a4db1f47, + limb1: 0xf56af697b4d714d190d603dd, + limb2: 0x2d3349ba9a465783, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xf719b63641c3aaa6606d8efa, - limb1: 0xf42199916053745d085345ae, - limb2: 0x23ed8081d2abacad, + limb0: 0x9611d44432206361cd7f3473, + limb1: 0xd34ce79c946302bdbf8f72de, + limb2: 0x1fd5b330038873b0, limb3: 0x0 }, r0a1: u384 { - limb0: 0xbb1d89280222919b5482b64e, - limb1: 0xad89538078a7e66390888932, - limb2: 0xaaa5e47eb46d170, + limb0: 0x71a17fc89e530dda653c4220, + limb1: 0x37852a7f67a5fa74c6613c00, + limb2: 0x1e11dde6c5c9261d, limb3: 0x0 }, r1a0: u384 { - limb0: 0x1380fb6779221089cb10958a, - limb1: 0x931568ddfc4bec09e1bf17d5, - limb2: 0x185f166c24c11813, + limb0: 0xf8f9c22149b11566f643511e, + limb1: 0xeafd5e990baff3df753b4545, + limb2: 0x2e3219be0c5ae36a, limb3: 0x0 }, r1a1: u384 { - limb0: 0x8e7af376343f702b59b20086, - limb1: 0x2e77f4bd9bfc2f2c9361ced, - limb2: 0x9f8fe6c0b98ab93, + limb0: 0x8e2193129c343cb3a4db1f47, + limb1: 0xf56af697b4d714d190d603dd, + limb2: 0x2d3349ba9a465783, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x6558a5e904f9e132283961a2, - limb1: 0xad623596624aacc1796aeb37, - limb2: 0x23ae2906c0b5c026, + limb0: 0x196665c03009ef576fd6961, + limb1: 0x2719b6e1af31847d795deb9e, + limb2: 0x155d054c2097ab50, limb3: 0x0 }, r0a1: u384 { - limb0: 0xfe9a5f50beff57f1dd5cfdb7, - limb1: 0xee6088dc170ec1967933cfdf, - limb2: 0x2f202c71bbed953d, + limb0: 0x4e6b687ca0dfecf549daeef5, + limb1: 0xb4e4f54e1d35a5cd994c6054, + limb2: 0x11c8b740bfbe502, limb3: 0x0 }, r1a0: u384 { - limb0: 0x1132e106e3e9e432d8e6a462, - limb1: 0x7e91e2dc375c1016119a836, - limb2: 0x1021db656cba7bea, + limb0: 0xbc9857a840b86d1d7ffb6b9d, + limb1: 0x3315341c9d5a9ff2955435b2, + limb2: 0x30447649e2f50c77, limb3: 0x0 }, r1a1: u384 { - limb0: 0x94440b93c995c8720560e19f, - limb1: 0x12c2648b3316e97703dd5c1d, - limb2: 0x2142fd4df2092db3, + limb0: 0x9a187f6cc5ad3146f48c70be, + limb1: 0x9809e5f4637c60447e7cfdef, + limb2: 0x667330690960cd, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x608854cc176dc3197a67ae0d, - limb1: 0x1b188792e38a6cef241761f8, - limb2: 0xb83e10a70be3e24, + limb0: 0x215d0ebb801c8a2c8b0ef9e1, + limb1: 0x89edb45dc7e6f74cc7304d78, + limb2: 0x2edb9f6a4282ba3f, limb3: 0x0 }, r0a1: u384 { - limb0: 0x394cefc3dae43636b7206194, - limb1: 0xffe29d325e564b373847b254, - limb2: 0x14adad6a22ebb917, + limb0: 0x78cef612dbc9013e22395718, + limb1: 0x68c8984791d65522cdabe9da, + limb2: 0x5cd4d2fb36b3baf, limb3: 0x0 }, r1a0: u384 { - limb0: 0x4d3711e0c5fc7f964feed5c9, - limb1: 0xf129f88b02cc5130f734fe64, - limb2: 0x6c132c89e87386b, + limb0: 0x28728de61873d65855d29e69, + limb1: 0x74abfdede8c4f6d81e7da1bd, + limb2: 0x199f58d62645184b, limb3: 0x0 }, r1a1: u384 { - limb0: 0x80157ba1c1bbc0410783fa90, - limb1: 0xb9d6086b08e94c43436de862, - limb2: 0x16cadaf1d363828, + limb0: 0xaff5645c427c1f808f890796, + limb1: 0x6040d76177456d9ec3d7dd19, + limb2: 0xdead02313d94e2c, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x6558a5e904f9e132283961a2, - limb1: 0xad623596624aacc1796aeb37, - limb2: 0x23ae2906c0b5c026, + limb0: 0x196665c03009ef576fd6961, + limb1: 0x2719b6e1af31847d795deb9e, + limb2: 0x155d054c2097ab50, limb3: 0x0 }, r0a1: u384 { - limb0: 0xfe9a5f50beff57f1dd5cfdb7, - limb1: 0xee6088dc170ec1967933cfdf, - limb2: 0x2f202c71bbed953d, + limb0: 0x4e6b687ca0dfecf549daeef5, + limb1: 0xb4e4f54e1d35a5cd994c6054, + limb2: 0x11c8b740bfbe502, limb3: 0x0 }, r1a0: u384 { - limb0: 0x1132e106e3e9e432d8e6a462, - limb1: 0x7e91e2dc375c1016119a836, - limb2: 0x1021db656cba7bea, + limb0: 0xbc9857a840b86d1d7ffb6b9d, + limb1: 0x3315341c9d5a9ff2955435b2, + limb2: 0x30447649e2f50c77, limb3: 0x0 }, r1a1: u384 { - limb0: 0x94440b93c995c8720560e19f, - limb1: 0x12c2648b3316e97703dd5c1d, - limb2: 0x2142fd4df2092db3, + limb0: 0x9a187f6cc5ad3146f48c70be, + limb1: 0x9809e5f4637c60447e7cfdef, + limb2: 0x667330690960cd, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x608854cc176dc3197a67ae0d, - limb1: 0x1b188792e38a6cef241761f8, - limb2: 0xb83e10a70be3e24, + limb0: 0x215d0ebb801c8a2c8b0ef9e1, + limb1: 0x89edb45dc7e6f74cc7304d78, + limb2: 0x2edb9f6a4282ba3f, limb3: 0x0 }, r0a1: u384 { - limb0: 0x394cefc3dae43636b7206194, - limb1: 0xffe29d325e564b373847b254, - limb2: 0x14adad6a22ebb917, + limb0: 0x78cef612dbc9013e22395718, + limb1: 0x68c8984791d65522cdabe9da, + limb2: 0x5cd4d2fb36b3baf, limb3: 0x0 }, r1a0: u384 { - limb0: 0x4d3711e0c5fc7f964feed5c9, - limb1: 0xf129f88b02cc5130f734fe64, - limb2: 0x6c132c89e87386b, + limb0: 0x28728de61873d65855d29e69, + limb1: 0x74abfdede8c4f6d81e7da1bd, + limb2: 0x199f58d62645184b, limb3: 0x0 }, r1a1: u384 { - limb0: 0x80157ba1c1bbc0410783fa90, - limb1: 0xb9d6086b08e94c43436de862, - limb2: 0x16cadaf1d363828, + limb0: 0xaff5645c427c1f808f890796, + limb1: 0x6040d76177456d9ec3d7dd19, + limb2: 0xdead02313d94e2c, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x8761d078f27bb576973fd0c7, - limb1: 0x28a981419d4df9bad6a8b66c, - limb2: 0xe5d394a1ce683fb, + limb0: 0x7e32624925ec3a6751ef2472, + limb1: 0x454a7f1340778a7b5e1fe904, + limb2: 0x20906f33c00c8d33, limb3: 0x0 }, r0a1: u384 { - limb0: 0x73274c0ff1e0acde0501b53d, - limb1: 0xc280176d8e44b408bd21f5ad, - limb2: 0x1edf63b3f3d435a7, + limb0: 0x11710c1c383a8014976022cf, + limb1: 0x62f932c9ffa1da884f9fceaa, + limb2: 0xb62b0be184f4494, limb3: 0x0 }, r1a0: u384 { - limb0: 0x76ee6f179633fb6cd4aba504, - limb1: 0xe1434b88f49be49d6995a496, - limb2: 0x26395c145f1e788f, + limb0: 0xebd3310b943ec2f49ece0892, + limb1: 0x6a06d1930900d0bbc6221220, + limb2: 0x116715e97fb69aaa, limb3: 0x0 }, r1a1: u384 { - limb0: 0x7382400177814019a51c721d, - limb1: 0x898444a0e3e41a9e6ded2f3a, - limb2: 0x13db6f41f45ccd37, + limb0: 0x1cc4a1667629f976c64db1fd, + limb1: 0x965c2705725d60a7cc1550d2, + limb2: 0x10a0fbe4d0a5883d, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x8761d078f27bb576973fd0c7, - limb1: 0x28a981419d4df9bad6a8b66c, - limb2: 0xe5d394a1ce683fb, + limb0: 0x7e32624925ec3a6751ef2472, + limb1: 0x454a7f1340778a7b5e1fe904, + limb2: 0x20906f33c00c8d33, limb3: 0x0 }, r0a1: u384 { - limb0: 0x73274c0ff1e0acde0501b53d, - limb1: 0xc280176d8e44b408bd21f5ad, - limb2: 0x1edf63b3f3d435a7, + limb0: 0x11710c1c383a8014976022cf, + limb1: 0x62f932c9ffa1da884f9fceaa, + limb2: 0xb62b0be184f4494, limb3: 0x0 }, r1a0: u384 { - limb0: 0x76ee6f179633fb6cd4aba504, - limb1: 0xe1434b88f49be49d6995a496, - limb2: 0x26395c145f1e788f, + limb0: 0xebd3310b943ec2f49ece0892, + limb1: 0x6a06d1930900d0bbc6221220, + limb2: 0x116715e97fb69aaa, limb3: 0x0 }, r1a1: u384 { - limb0: 0x7382400177814019a51c721d, - limb1: 0x898444a0e3e41a9e6ded2f3a, - limb2: 0x13db6f41f45ccd37, + limb0: 0x1cc4a1667629f976c64db1fd, + limb1: 0x965c2705725d60a7cc1550d2, + limb2: 0x10a0fbe4d0a5883d, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xc024f26e70e46ad41e2f819d, - limb1: 0x7ffe1ba3d7c74a75c16ea238, - limb2: 0xa21d39aa8067f55, + limb0: 0xf29c8da48273fcc3ed42600f, + limb1: 0xc9085080314ee52208dbeaa3, + limb2: 0x1c97df69a5dee342, limb3: 0x0 }, r0a1: u384 { - limb0: 0x37fc3ab89a01f22808446061, - limb1: 0x6a0a5937a529675bfc4fb173, - limb2: 0x1340f6361ca5f1f2, + limb0: 0xe90ffc7dc1134df60473a9b0, + limb1: 0x1785bba891bbf8bf4d028c93, + limb2: 0x2c73ffd5720b59fe, limb3: 0x0 }, r1a0: u384 { - limb0: 0xb3f77c7cbc4c1036e994b010, - limb1: 0x5f536c1614419f502810f9b1, - limb2: 0x122531c8912ce67c, + limb0: 0xaa4625384e00cc7a1d26f59c, + limb1: 0x7e2bd7ea82f7679164b9a298, + limb2: 0x1ceb19ac1c28c731, limb3: 0x0 }, r1a1: u384 { - limb0: 0xfe3579446949f061a86e837f, - limb1: 0x9868b7b7b8bb851a5204b136, - limb2: 0xa68046444eeced8, + limb0: 0x8570cac2138c94f9d261d52, + limb1: 0x4750472206e83d3ee38e9950, + limb2: 0x159e78c2f8fb9e87, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xc024f26e70e46ad41e2f819d, - limb1: 0x7ffe1ba3d7c74a75c16ea238, - limb2: 0xa21d39aa8067f55, + limb0: 0xf29c8da48273fcc3ed42600f, + limb1: 0xc9085080314ee52208dbeaa3, + limb2: 0x1c97df69a5dee342, limb3: 0x0 }, r0a1: u384 { - limb0: 0x37fc3ab89a01f22808446061, - limb1: 0x6a0a5937a529675bfc4fb173, - limb2: 0x1340f6361ca5f1f2, + limb0: 0xe90ffc7dc1134df60473a9b0, + limb1: 0x1785bba891bbf8bf4d028c93, + limb2: 0x2c73ffd5720b59fe, limb3: 0x0 }, r1a0: u384 { - limb0: 0xb3f77c7cbc4c1036e994b010, - limb1: 0x5f536c1614419f502810f9b1, - limb2: 0x122531c8912ce67c, + limb0: 0xaa4625384e00cc7a1d26f59c, + limb1: 0x7e2bd7ea82f7679164b9a298, + limb2: 0x1ceb19ac1c28c731, limb3: 0x0 }, r1a1: u384 { - limb0: 0xfe3579446949f061a86e837f, - limb1: 0x9868b7b7b8bb851a5204b136, - limb2: 0xa68046444eeced8, + limb0: 0x8570cac2138c94f9d261d52, + limb1: 0x4750472206e83d3ee38e9950, + limb2: 0x159e78c2f8fb9e87, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x83bf706fe74eafc3f0e0703f, - limb1: 0xbc55115fb27206e07655d0ec, - limb2: 0xef7b5fa76797a02, + limb0: 0xf0061f0ffdd6c080cb6db4f2, + limb1: 0x3156ebb6ec8163f1daaf0fef, + limb2: 0x16a1d8e8a632ecda, limb3: 0x0 }, r0a1: u384 { - limb0: 0x943943ede1c23752e6365176, - limb1: 0x148dbb57ce179026e9758386, - limb2: 0x2d3d62996a0d641f, + limb0: 0x8944acaa1fea52aec014ca14, + limb1: 0xaef310c4279054f6513952eb, + limb2: 0x187dba91d42da551, limb3: 0x0 }, r1a0: u384 { - limb0: 0xca8e4e3b9ad43c5bba3d499c, - limb1: 0xea17cfd8caf8fe4d838dda96, - limb2: 0x2481130a8b0e2338, + limb0: 0x115802cd86218654ef41231b, + limb1: 0x6d01289ae998e8d09b1c7304, + limb2: 0x8e3eaae865b5448, limb3: 0x0 }, r1a1: u384 { - limb0: 0x71d62cb59e79e02023ebd7c, - limb1: 0x969d9803dac39ff5bd84665a, - limb2: 0x4f4e4ad0d214c19, + limb0: 0x9562b590b59641ca26308faa, + limb1: 0x75559bf6ea06aaf7df07c197, + limb2: 0x8245163a7eeeada, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x83bf706fe74eafc3f0e0703f, - limb1: 0xbc55115fb27206e07655d0ec, - limb2: 0xef7b5fa76797a02, + limb0: 0xf0061f0ffdd6c080cb6db4f2, + limb1: 0x3156ebb6ec8163f1daaf0fef, + limb2: 0x16a1d8e8a632ecda, limb3: 0x0 }, r0a1: u384 { - limb0: 0x943943ede1c23752e6365176, - limb1: 0x148dbb57ce179026e9758386, - limb2: 0x2d3d62996a0d641f, + limb0: 0x8944acaa1fea52aec014ca14, + limb1: 0xaef310c4279054f6513952eb, + limb2: 0x187dba91d42da551, limb3: 0x0 }, r1a0: u384 { - limb0: 0xca8e4e3b9ad43c5bba3d499c, - limb1: 0xea17cfd8caf8fe4d838dda96, - limb2: 0x2481130a8b0e2338, + limb0: 0x115802cd86218654ef41231b, + limb1: 0x6d01289ae998e8d09b1c7304, + limb2: 0x8e3eaae865b5448, limb3: 0x0 }, r1a1: u384 { - limb0: 0x71d62cb59e79e02023ebd7c, - limb1: 0x969d9803dac39ff5bd84665a, - limb2: 0x4f4e4ad0d214c19, + limb0: 0x9562b590b59641ca26308faa, + limb1: 0x75559bf6ea06aaf7df07c197, + limb2: 0x8245163a7eeeada, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xef216ee28840f37b31bbf0e4, - limb1: 0xa03ca8bdc47d8fe49b3f9d6b, - limb2: 0x154f8e404ba66217, + limb0: 0x2cd350402831a212e938de81, + limb1: 0xed9a7a80de5e1ec0f4b2c4db, + limb2: 0x2f04e512c778c8a3, limb3: 0x0 }, r0a1: u384 { - limb0: 0x38039b4b7ff3aad41b0a6f50, - limb1: 0x72d3f98fe8e5f40a747e97c7, - limb2: 0x18f76f84152f0367, + limb0: 0x8cd4823620230108e89a1e94, + limb1: 0x2dc2d1e59111f47e7663cb36, + limb2: 0x8cbcece7fd20252, limb3: 0x0 }, r1a0: u384 { - limb0: 0xa91858fe3ba7d5179d1c4d3a, - limb1: 0x9d9a50e3afe9d787ff7b8057, - limb2: 0x2e6e0c08ee9fd8e3, + limb0: 0x6bbf0471a8988b16ca947450, + limb1: 0xf7911a0d3db83d1956cc277b, + limb2: 0x7db791f07f93808, limb3: 0x0 }, r1a1: u384 { - limb0: 0xf56fed654a4b2cf945c2f927, - limb1: 0xea120d122fd3f340cbf7951e, - limb2: 0x2537c516befcc375, + limb0: 0xd46f340dfdea0b0bef63e487, + limb1: 0xbd7520f6a22899dfe8887b8b, + limb2: 0x10f9c9a88e425f37, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x1025036fef6142a42d9b5ef3, - limb1: 0x8de1fbe703c97634f271cb8, - limb2: 0x221632824e380631, + limb0: 0x6e52232ec1b38ff612c0a492, + limb1: 0x7839f69ef41e655aea744d38, + limb2: 0x20ab9a05d7ad1f52, limb3: 0x0 }, r0a1: u384 { - limb0: 0xf2bc76d24cc06d6d73cb063, - limb1: 0xc9da322126195a9e833a95a4, - limb2: 0xa61637aa8756985, + limb0: 0x8bcdd6166e6ee552371e4636, + limb1: 0x1db9fb889b69e26b47964933, + limb2: 0x15c1b7b4dc794f53, limb3: 0x0 }, r1a0: u384 { - limb0: 0xcad560e263e828d8121c3203, - limb1: 0x2a3442112cca9d66c88c55e3, - limb2: 0x8d9f98fed44ee17, + limb0: 0xdb2e4167ad301668392630d4, + limb1: 0x78d41ddd629aa47464b2954, + limb2: 0x122cf4989cd8fabc, limb3: 0x0 }, r1a1: u384 { - limb0: 0xcc6e73b388f0452540950637, - limb1: 0xe10d41e6f74fce63036193dc, - limb2: 0x4d66034eeff74ae, + limb0: 0xd20b6faf7e40f5ceda0b861d, + limb1: 0xaa5af5b00dbdc5f5712dc3bc, + limb2: 0x447f15fd6766a8b, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xef216ee28840f37b31bbf0e4, - limb1: 0xa03ca8bdc47d8fe49b3f9d6b, - limb2: 0x154f8e404ba66217, + limb0: 0x2cd350402831a212e938de81, + limb1: 0xed9a7a80de5e1ec0f4b2c4db, + limb2: 0x2f04e512c778c8a3, limb3: 0x0 }, r0a1: u384 { - limb0: 0x38039b4b7ff3aad41b0a6f50, - limb1: 0x72d3f98fe8e5f40a747e97c7, - limb2: 0x18f76f84152f0367, + limb0: 0x8cd4823620230108e89a1e94, + limb1: 0x2dc2d1e59111f47e7663cb36, + limb2: 0x8cbcece7fd20252, limb3: 0x0 }, r1a0: u384 { - limb0: 0xa91858fe3ba7d5179d1c4d3a, - limb1: 0x9d9a50e3afe9d787ff7b8057, - limb2: 0x2e6e0c08ee9fd8e3, + limb0: 0x6bbf0471a8988b16ca947450, + limb1: 0xf7911a0d3db83d1956cc277b, + limb2: 0x7db791f07f93808, limb3: 0x0 }, r1a1: u384 { - limb0: 0xf56fed654a4b2cf945c2f927, - limb1: 0xea120d122fd3f340cbf7951e, - limb2: 0x2537c516befcc375, + limb0: 0xd46f340dfdea0b0bef63e487, + limb1: 0xbd7520f6a22899dfe8887b8b, + limb2: 0x10f9c9a88e425f37, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x1025036fef6142a42d9b5ef3, - limb1: 0x8de1fbe703c97634f271cb8, - limb2: 0x221632824e380631, + limb0: 0x6e52232ec1b38ff612c0a492, + limb1: 0x7839f69ef41e655aea744d38, + limb2: 0x20ab9a05d7ad1f52, limb3: 0x0 }, r0a1: u384 { - limb0: 0xf2bc76d24cc06d6d73cb063, - limb1: 0xc9da322126195a9e833a95a4, - limb2: 0xa61637aa8756985, + limb0: 0x8bcdd6166e6ee552371e4636, + limb1: 0x1db9fb889b69e26b47964933, + limb2: 0x15c1b7b4dc794f53, limb3: 0x0 }, r1a0: u384 { - limb0: 0xcad560e263e828d8121c3203, - limb1: 0x2a3442112cca9d66c88c55e3, - limb2: 0x8d9f98fed44ee17, + limb0: 0xdb2e4167ad301668392630d4, + limb1: 0x78d41ddd629aa47464b2954, + limb2: 0x122cf4989cd8fabc, limb3: 0x0 }, r1a1: u384 { - limb0: 0xcc6e73b388f0452540950637, - limb1: 0xe10d41e6f74fce63036193dc, - limb2: 0x4d66034eeff74ae, + limb0: 0xd20b6faf7e40f5ceda0b861d, + limb1: 0xaa5af5b00dbdc5f5712dc3bc, + limb2: 0x447f15fd6766a8b, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xe4fdb1605b34a6e2fa5a9071, - limb1: 0x6d3755c03a4f431f6848dca, - limb2: 0x79874571dda81e2, + limb0: 0x6411c143a41cb76ad19b3fe9, + limb1: 0xa0a964f97d57b7b7db78d2bb, + limb2: 0x2bf9110ff7c2fdb2, limb3: 0x0 }, r0a1: u384 { - limb0: 0xd362c372a4559055b4db12ad, - limb1: 0xcea3e634eaeae028442ed10c, - limb2: 0x1ed508bfb6d6a453, + limb0: 0xe183b2e52b5137dcbd33bcb9, + limb1: 0xa82fec8a97ce059d24aa3b35, + limb2: 0x19d11db2c569eece, limb3: 0x0 }, r1a0: u384 { - limb0: 0x899d6bca505f8073faa9029f, - limb1: 0x7e88b8118ae92969d99736f5, - limb2: 0x2ec5c5c4606f42f4, + limb0: 0xcce8df3877331ae709ba92e, + limb1: 0x77be8fc4e226cee90a7f955a, + limb2: 0x1609775efcfbed68, limb3: 0x0 }, r1a1: u384 { - limb0: 0xf183cc91b4d2e602de9bb017, - limb1: 0xf89db9224d376dd9cf5b0f47, - limb2: 0x92abff317c732e6, + limb0: 0x39a8e985d0dad03eb162f6be, + limb1: 0x6e34512435de4fa5a24bd9f1, + limb2: 0x48ac1c32967705c, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xe4fdb1605b34a6e2fa5a9071, - limb1: 0x6d3755c03a4f431f6848dca, - limb2: 0x79874571dda81e2, + limb0: 0x6411c143a41cb76ad19b3fe9, + limb1: 0xa0a964f97d57b7b7db78d2bb, + limb2: 0x2bf9110ff7c2fdb2, limb3: 0x0 }, r0a1: u384 { - limb0: 0xd362c372a4559055b4db12ad, - limb1: 0xcea3e634eaeae028442ed10c, - limb2: 0x1ed508bfb6d6a453, + limb0: 0xe183b2e52b5137dcbd33bcb9, + limb1: 0xa82fec8a97ce059d24aa3b35, + limb2: 0x19d11db2c569eece, limb3: 0x0 }, r1a0: u384 { - limb0: 0x899d6bca505f8073faa9029f, - limb1: 0x7e88b8118ae92969d99736f5, - limb2: 0x2ec5c5c4606f42f4, + limb0: 0xcce8df3877331ae709ba92e, + limb1: 0x77be8fc4e226cee90a7f955a, + limb2: 0x1609775efcfbed68, limb3: 0x0 }, r1a1: u384 { - limb0: 0xf183cc91b4d2e602de9bb017, - limb1: 0xf89db9224d376dd9cf5b0f47, - limb2: 0x92abff317c732e6, + limb0: 0x39a8e985d0dad03eb162f6be, + limb1: 0x6e34512435de4fa5a24bd9f1, + limb2: 0x48ac1c32967705c, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x29215676fec6b84b9690301b, - limb1: 0x58d7539160dbc178ae37d05c, - limb2: 0x1f5cb0ae725c16a, + limb0: 0x5937e500cc17fe668064047c, + limb1: 0x9f2b55cac45bcda93d2f78f3, + limb2: 0xefeb9a8c60c35b1, limb3: 0x0 }, r0a1: u384 { - limb0: 0xaccdb4d6fc5f57f5dcf2f833, - limb1: 0x8eaab0da8887cf99ddf905a9, - limb2: 0x2e5468dec527b1f0, + limb0: 0x5a5317cb9495c6ab1aef7b7d, + limb1: 0xacd6df647415a39894ce9966, + limb2: 0xbffddf772479189, limb3: 0x0 }, r1a0: u384 { - limb0: 0x76572266e19aab76ee9c2a33, - limb1: 0x7d985ff24b63f166c49b8851, - limb2: 0xc51264d5d6db8e0, + limb0: 0xf15f58a2d03a5ea13fb08cd1, + limb1: 0xf674a4be1c2503cda5689c69, + limb2: 0x2f7d5d5a694a683c, limb3: 0x0 }, r1a1: u384 { - limb0: 0xa1cb7216968324605af77b1, - limb1: 0x14885867daf3a075a0be7fd3, - limb2: 0x2859866aadddb286, + limb0: 0xdc4bd00ef75e168f58d4d2a, + limb1: 0x1bfd060452f3514198e29abf, + limb2: 0x2fb9df98cdf02af8, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x1a16e8a342513ea28cf627c1, - limb1: 0xf2b172d252fea25ffa66e473, - limb2: 0x2c490f6fdee98daf, + limb0: 0x55a590f27da0651b25558b4b, + limb1: 0x6615f51e899f1e4e82f98128, + limb2: 0x199c3087e00b3344, limb3: 0x0 }, r0a1: u384 { - limb0: 0x84dc60ae4a9b72e636cfe752, - limb1: 0xcc2a3cbd2ce8966efefba6c, - limb2: 0x1cca60af37b103bc, + limb0: 0x9b5e06c80ef2855bebd84d2f, + limb1: 0x1c1f46d31a0f8c4b32d69d1f, + limb2: 0xc7173eeef78684f, limb3: 0x0 }, r1a0: u384 { - limb0: 0x2820761bf7176c6f6d319f59, - limb1: 0xb4c0267f5e715cb11a8bf4b6, - limb2: 0x18dff86432277137, + limb0: 0x5ebc8e53cae1fb87e94a81be, + limb1: 0x2efb8c4b7a9c0a823f48f43, + limb2: 0x24a78e30bd7579ce, limb3: 0x0 }, r1a1: u384 { - limb0: 0x8added305c038531fd60693e, - limb1: 0x7dd88e6d49b40304430a8d22, - limb2: 0x8bea3d64236aaba, + limb0: 0x1b636f31533d11ad8eb219e7, + limb1: 0x73ae69bb67c2a8d6f05f02a3, + limb2: 0x2e4cfe29e400395a, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x29215676fec6b84b9690301b, - limb1: 0x58d7539160dbc178ae37d05c, - limb2: 0x1f5cb0ae725c16a, + limb0: 0x5937e500cc17fe668064047c, + limb1: 0x9f2b55cac45bcda93d2f78f3, + limb2: 0xefeb9a8c60c35b1, limb3: 0x0 }, r0a1: u384 { - limb0: 0xaccdb4d6fc5f57f5dcf2f833, - limb1: 0x8eaab0da8887cf99ddf905a9, - limb2: 0x2e5468dec527b1f0, + limb0: 0x5a5317cb9495c6ab1aef7b7d, + limb1: 0xacd6df647415a39894ce9966, + limb2: 0xbffddf772479189, limb3: 0x0 }, r1a0: u384 { - limb0: 0x76572266e19aab76ee9c2a33, - limb1: 0x7d985ff24b63f166c49b8851, - limb2: 0xc51264d5d6db8e0, + limb0: 0xf15f58a2d03a5ea13fb08cd1, + limb1: 0xf674a4be1c2503cda5689c69, + limb2: 0x2f7d5d5a694a683c, limb3: 0x0 }, r1a1: u384 { - limb0: 0xa1cb7216968324605af77b1, - limb1: 0x14885867daf3a075a0be7fd3, - limb2: 0x2859866aadddb286, + limb0: 0xdc4bd00ef75e168f58d4d2a, + limb1: 0x1bfd060452f3514198e29abf, + limb2: 0x2fb9df98cdf02af8, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x1a16e8a342513ea28cf627c1, - limb1: 0xf2b172d252fea25ffa66e473, - limb2: 0x2c490f6fdee98daf, + limb0: 0x55a590f27da0651b25558b4b, + limb1: 0x6615f51e899f1e4e82f98128, + limb2: 0x199c3087e00b3344, limb3: 0x0 }, r0a1: u384 { - limb0: 0x84dc60ae4a9b72e636cfe752, - limb1: 0xcc2a3cbd2ce8966efefba6c, - limb2: 0x1cca60af37b103bc, + limb0: 0x9b5e06c80ef2855bebd84d2f, + limb1: 0x1c1f46d31a0f8c4b32d69d1f, + limb2: 0xc7173eeef78684f, limb3: 0x0 }, r1a0: u384 { - limb0: 0x2820761bf7176c6f6d319f59, - limb1: 0xb4c0267f5e715cb11a8bf4b6, - limb2: 0x18dff86432277137, + limb0: 0x5ebc8e53cae1fb87e94a81be, + limb1: 0x2efb8c4b7a9c0a823f48f43, + limb2: 0x24a78e30bd7579ce, limb3: 0x0 }, r1a1: u384 { - limb0: 0x8added305c038531fd60693e, - limb1: 0x7dd88e6d49b40304430a8d22, - limb2: 0x8bea3d64236aaba, + limb0: 0x1b636f31533d11ad8eb219e7, + limb1: 0x73ae69bb67c2a8d6f05f02a3, + limb2: 0x2e4cfe29e400395a, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x236f7599347942ac9338d354, - limb1: 0x9dfd6bb0575d2c9e54639eb8, - limb2: 0x2d4da6ec95220197, + limb0: 0xe56e784bbdcef3aac92c27bf, + limb1: 0xe05d2d64486ae7c7510e1eef, + limb2: 0x817afd56e949ca0, limb3: 0x0 }, r0a1: u384 { - limb0: 0x204ec2dbad11ab606439515c, - limb1: 0x1608e1e54d5cf333e498ed04, - limb2: 0xa239954fff5e25b, + limb0: 0x71faffc19db373861efa0d6a, + limb1: 0x477781fc0937a2118f769af5, + limb2: 0x15d219bd2ed37b8d, limb3: 0x0 }, r1a0: u384 { - limb0: 0xca6a461d46c80b6883209633, - limb1: 0xd51a8fff1da65da91f711576, - limb2: 0x18a6a31df08ba480, + limb0: 0x53fbcf9fcfa3ce84788f77e1, + limb1: 0xcddbe217782fd9b953be071, + limb2: 0x259554747e31d728, limb3: 0x0 }, r1a1: u384 { - limb0: 0xb772707c2454607d668ba777, - limb1: 0x4c04297051c358896bd506e6, - limb2: 0x2e1252656a2b65f3, + limb0: 0xad5f8a34ab854b3222d472cf, + limb1: 0x52d45547201187d646581965, + limb2: 0x7e06bc2a587f1e5, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x236f7599347942ac9338d354, - limb1: 0x9dfd6bb0575d2c9e54639eb8, - limb2: 0x2d4da6ec95220197, + limb0: 0xe56e784bbdcef3aac92c27bf, + limb1: 0xe05d2d64486ae7c7510e1eef, + limb2: 0x817afd56e949ca0, limb3: 0x0 }, r0a1: u384 { - limb0: 0x204ec2dbad11ab606439515c, - limb1: 0x1608e1e54d5cf333e498ed04, - limb2: 0xa239954fff5e25b, + limb0: 0x71faffc19db373861efa0d6a, + limb1: 0x477781fc0937a2118f769af5, + limb2: 0x15d219bd2ed37b8d, limb3: 0x0 }, r1a0: u384 { - limb0: 0xca6a461d46c80b6883209633, - limb1: 0xd51a8fff1da65da91f711576, - limb2: 0x18a6a31df08ba480, + limb0: 0x53fbcf9fcfa3ce84788f77e1, + limb1: 0xcddbe217782fd9b953be071, + limb2: 0x259554747e31d728, limb3: 0x0 }, r1a1: u384 { - limb0: 0xb772707c2454607d668ba777, - limb1: 0x4c04297051c358896bd506e6, - limb2: 0x2e1252656a2b65f3, + limb0: 0xad5f8a34ab854b3222d472cf, + limb1: 0x52d45547201187d646581965, + limb2: 0x7e06bc2a587f1e5, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x3841025bd3b86b910393e75a, - limb1: 0x8af5150531302c35d3b89be6, - limb2: 0x1b953e56ec6258ad, + limb0: 0xd31eafba3914f53ec27d3c17, + limb1: 0x79f8fd670536f7dce8961707, + limb2: 0xad61c97b0c3ece2, limb3: 0x0 }, r0a1: u384 { - limb0: 0xa681bf9bac9bc787218e5139, - limb1: 0x1e9852e8549fc8c150ede503, - limb2: 0x1056cb6ca5d4b19d, + limb0: 0xd7ee1a74e63d792c11a8d210, + limb1: 0x950a872cb7a0fa80eadadd4c, + limb2: 0xc9a713c6c5c5d77, limb3: 0x0 }, r1a0: u384 { - limb0: 0xf757a1022438c5febf953445, - limb1: 0x70e8a00941b1e45a5dd1a55e, - limb2: 0x761a0c71a0e67d1, + limb0: 0x5bf888fffd64a4cbeedc1da3, + limb1: 0xa399d6a96adf9259444479bb, + limb2: 0x2cb770b0ccd2613d, limb3: 0x0 }, r1a1: u384 { - limb0: 0x7c45fdd696e05e548053967a, - limb1: 0xf298930725a01884d016dcdd, - limb2: 0x147cc92ef2bc3e93, + limb0: 0x55e8e6d97e15c9ffc69c05e7, + limb1: 0xe79422bdf601065dd66f1187, + limb2: 0x228e90b7b1104767, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xdb14c1ffefb3631adf1efc52, - limb1: 0x33d303b7ca1502887f799ef4, - limb2: 0x2f1db2c0f578ccf6, + limb0: 0xdf325bffc4f75bde16339c21, + limb1: 0x59e1b11a922fd25b46da34ad, + limb2: 0x1df431a8b518c319, limb3: 0x0 }, r0a1: u384 { - limb0: 0x8d2e3ffbaeac56cd4c30226c, - limb1: 0xaeef01beb75585243dda3436, - limb2: 0x1a4b1ec18a67a5e7, + limb0: 0xa34e525fbce9d573f316a8e1, + limb1: 0x5715c100bd0d4bc47e1199aa, + limb2: 0x111fd4d9fe3f4aa8, limb3: 0x0 }, r1a0: u384 { - limb0: 0xa5bd35732b50d7aff8649e1d, - limb1: 0x4ef25d4b862cb66a72b7925c, - limb2: 0x1988dce66173b59c, + limb0: 0x4ddeb02cca8556d49bb4d13b, + limb1: 0x56b8e64426fbb6983377fe9f, + limb2: 0x166b7c9a7bb6eb74, limb3: 0x0 }, r1a1: u384 { - limb0: 0x85d9092271b332cc61cf35d0, - limb1: 0x82c0b1a2e29a1f8a53ed23ec, - limb2: 0xcaa12074bdec999, + limb0: 0x8ef5c3ef69254a68b5ffcf4d, + limb1: 0xd6eaa92d6814c39953c833ca, + limb2: 0x8cda70783ba41fc, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x3841025bd3b86b910393e75a, - limb1: 0x8af5150531302c35d3b89be6, - limb2: 0x1b953e56ec6258ad, + limb0: 0xd31eafba3914f53ec27d3c17, + limb1: 0x79f8fd670536f7dce8961707, + limb2: 0xad61c97b0c3ece2, limb3: 0x0 }, r0a1: u384 { - limb0: 0xa681bf9bac9bc787218e5139, - limb1: 0x1e9852e8549fc8c150ede503, - limb2: 0x1056cb6ca5d4b19d, + limb0: 0xd7ee1a74e63d792c11a8d210, + limb1: 0x950a872cb7a0fa80eadadd4c, + limb2: 0xc9a713c6c5c5d77, limb3: 0x0 }, r1a0: u384 { - limb0: 0xf757a1022438c5febf953445, - limb1: 0x70e8a00941b1e45a5dd1a55e, - limb2: 0x761a0c71a0e67d1, + limb0: 0x5bf888fffd64a4cbeedc1da3, + limb1: 0xa399d6a96adf9259444479bb, + limb2: 0x2cb770b0ccd2613d, limb3: 0x0 }, r1a1: u384 { - limb0: 0x7c45fdd696e05e548053967a, - limb1: 0xf298930725a01884d016dcdd, - limb2: 0x147cc92ef2bc3e93, + limb0: 0x55e8e6d97e15c9ffc69c05e7, + limb1: 0xe79422bdf601065dd66f1187, + limb2: 0x228e90b7b1104767, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xdb14c1ffefb3631adf1efc52, - limb1: 0x33d303b7ca1502887f799ef4, - limb2: 0x2f1db2c0f578ccf6, + limb0: 0xdf325bffc4f75bde16339c21, + limb1: 0x59e1b11a922fd25b46da34ad, + limb2: 0x1df431a8b518c319, limb3: 0x0 }, r0a1: u384 { - limb0: 0x8d2e3ffbaeac56cd4c30226c, - limb1: 0xaeef01beb75585243dda3436, - limb2: 0x1a4b1ec18a67a5e7, + limb0: 0xa34e525fbce9d573f316a8e1, + limb1: 0x5715c100bd0d4bc47e1199aa, + limb2: 0x111fd4d9fe3f4aa8, limb3: 0x0 }, r1a0: u384 { - limb0: 0xa5bd35732b50d7aff8649e1d, - limb1: 0x4ef25d4b862cb66a72b7925c, - limb2: 0x1988dce66173b59c, + limb0: 0x4ddeb02cca8556d49bb4d13b, + limb1: 0x56b8e64426fbb6983377fe9f, + limb2: 0x166b7c9a7bb6eb74, limb3: 0x0 }, r1a1: u384 { - limb0: 0x85d9092271b332cc61cf35d0, - limb1: 0x82c0b1a2e29a1f8a53ed23ec, - limb2: 0xcaa12074bdec999, + limb0: 0x8ef5c3ef69254a68b5ffcf4d, + limb1: 0xd6eaa92d6814c39953c833ca, + limb2: 0x8cda70783ba41fc, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xf2be61de88bf4b3456a36982, - limb1: 0xc8654bd6625f5c493530c1ef, - limb2: 0x4880da5f24f068f, + limb0: 0x4e44a9b72f424336295cd2d4, + limb1: 0xe43008eebda999077f586dd0, + limb2: 0x2833eade2a41fefe, limb3: 0x0 }, r0a1: u384 { - limb0: 0x62449b80e9d187a57f968622, - limb1: 0x5def8767fdf6baf992aa12c9, - limb2: 0x2512158344f79fc5, + limb0: 0xa23faf119ba1e712eaa2ad9d, + limb1: 0xffd42ca54f7c46f0e5dd7375, + limb2: 0x14f3d66f92191f3d, limb3: 0x0 }, r1a0: u384 { - limb0: 0x1aa972e98426afbf3e34c085, - limb1: 0xa109ae6870ac113d71241559, - limb2: 0x1bcd9fc33b8d4a70, + limb0: 0xde664b9a5bb68f83b166d13f, + limb1: 0x504eada56a1604828ac250aa, + limb2: 0x1a59ac93ced3882, limb3: 0x0 }, r1a1: u384 { - limb0: 0x180588aba90f8db780a2ca9f, - limb1: 0x7ab8b672f6e9e71699c9e396, - limb2: 0xad764eb25e54913, + limb0: 0x57e2ca35f761f0a43dca1cf5, + limb1: 0x9d1dae4b976d26ff058b20f6, + limb2: 0x27083f11525f853e, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xf2be61de88bf4b3456a36982, - limb1: 0xc8654bd6625f5c493530c1ef, - limb2: 0x4880da5f24f068f, + limb0: 0x4e44a9b72f424336295cd2d4, + limb1: 0xe43008eebda999077f586dd0, + limb2: 0x2833eade2a41fefe, limb3: 0x0 }, r0a1: u384 { - limb0: 0x62449b80e9d187a57f968622, - limb1: 0x5def8767fdf6baf992aa12c9, - limb2: 0x2512158344f79fc5, + limb0: 0xa23faf119ba1e712eaa2ad9d, + limb1: 0xffd42ca54f7c46f0e5dd7375, + limb2: 0x14f3d66f92191f3d, limb3: 0x0 }, r1a0: u384 { - limb0: 0x1aa972e98426afbf3e34c085, - limb1: 0xa109ae6870ac113d71241559, - limb2: 0x1bcd9fc33b8d4a70, + limb0: 0xde664b9a5bb68f83b166d13f, + limb1: 0x504eada56a1604828ac250aa, + limb2: 0x1a59ac93ced3882, limb3: 0x0 }, r1a1: u384 { - limb0: 0x180588aba90f8db780a2ca9f, - limb1: 0x7ab8b672f6e9e71699c9e396, - limb2: 0xad764eb25e54913, + limb0: 0x57e2ca35f761f0a43dca1cf5, + limb1: 0x9d1dae4b976d26ff058b20f6, + limb2: 0x27083f11525f853e, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xa2d84fd2e79180f5d9c7cbda, - limb1: 0xa0129c1f98944e3c393885ab, - limb2: 0x141179a99e051e6a, + limb0: 0xacffdc27d3923f5779c9f561, + limb1: 0x6acc5c81d640b06edf8669e7, + limb2: 0x23d3ecf6cd5ae000, limb3: 0x0 }, r0a1: u384 { - limb0: 0xbb75853a6817fcfb6b048c4, - limb1: 0x29e4cbaa9791d89aed404bb4, - limb2: 0x76fe03dba94c15, + limb0: 0xc576257e34519bcbfe12a0e5, + limb1: 0x6dfda810453128aa1b9ff5f3, + limb2: 0x272b3f6cde8f6f3d, limb3: 0x0 }, r1a0: u384 { - limb0: 0x2568966e889ff4fe9c83dc66, - limb1: 0xac898929f0c7240c45dffe72, - limb2: 0x25ede85b18635067, + limb0: 0x3314182b61b3a1153d51085c, + limb1: 0x78d944875a2068000dc27e73, + limb2: 0x2184b9ce45b284ff, limb3: 0x0 }, r1a1: u384 { - limb0: 0xbf4a3c6ed7bab35ea6a91587, - limb1: 0xddb426768dc88446551b9eae, - limb2: 0x15c18c3a7ace1c1c, + limb0: 0xa3831da9efe63936fe510a88, + limb1: 0xd853b46a2f7648744b5bbcea, + limb2: 0x2437a9f7f5559f66, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xa2d84fd2e79180f5d9c7cbda, - limb1: 0xa0129c1f98944e3c393885ab, - limb2: 0x141179a99e051e6a, + limb0: 0xacffdc27d3923f5779c9f561, + limb1: 0x6acc5c81d640b06edf8669e7, + limb2: 0x23d3ecf6cd5ae000, limb3: 0x0 }, r0a1: u384 { - limb0: 0xbb75853a6817fcfb6b048c4, - limb1: 0x29e4cbaa9791d89aed404bb4, - limb2: 0x76fe03dba94c15, + limb0: 0xc576257e34519bcbfe12a0e5, + limb1: 0x6dfda810453128aa1b9ff5f3, + limb2: 0x272b3f6cde8f6f3d, limb3: 0x0 }, r1a0: u384 { - limb0: 0x2568966e889ff4fe9c83dc66, - limb1: 0xac898929f0c7240c45dffe72, - limb2: 0x25ede85b18635067, + limb0: 0x3314182b61b3a1153d51085c, + limb1: 0x78d944875a2068000dc27e73, + limb2: 0x2184b9ce45b284ff, limb3: 0x0 }, r1a1: u384 { - limb0: 0xbf4a3c6ed7bab35ea6a91587, - limb1: 0xddb426768dc88446551b9eae, - limb2: 0x15c18c3a7ace1c1c, + limb0: 0xa3831da9efe63936fe510a88, + limb1: 0xd853b46a2f7648744b5bbcea, + limb2: 0x2437a9f7f5559f66, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x91286f812939ca48668718c, - limb1: 0x69345d029001e5cff796b567, - limb2: 0x781568d392aad70, + limb0: 0x373d78cacc3a213ab7a5dc77, + limb1: 0x2c4c9295f1b3e767a376d95a, + limb2: 0x6fa8606535c131, limb3: 0x0 }, r0a1: u384 { - limb0: 0x54037a4157acc5a1e8ca7c62, - limb1: 0x39a3c90242be03e0a97ef620, - limb2: 0x2260adc4baa118f8, + limb0: 0x7a037d066e3015f12b9bb899, + limb1: 0x2df06eb9be7dd1d34dd0ce6e, + limb2: 0x2bfecfb6faa40681, limb3: 0x0 }, r1a0: u384 { - limb0: 0x73d01cddaf891a27a00e67c9, - limb1: 0x6acf3edf14a43aaa999d3d2b, - limb2: 0x20fa59f75dad8302, + limb0: 0x767f84f556bc0e82acc4c2fc, + limb1: 0xdc285959286fe86c69fd09c6, + limb2: 0xddf35d64e052591, limb3: 0x0 }, r1a1: u384 { - limb0: 0x7915780c7f8b4f83feb67a40, - limb1: 0x46ea9775cfc5e375a55d8e38, - limb2: 0x236c39b5a78a2943, + limb0: 0xba3bf8a2a744c4be716d10a3, + limb1: 0x704558fde5a2dd4610092a58, + limb2: 0x24381fac38d1c2f4, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x92df0e3af546f26577ed1487, - limb1: 0xa3ac01ff6243e8adf4822d07, - limb2: 0x2e8fb31cfb5f84c4, + limb0: 0x8bfb882fe3e87bf7f06a534, + limb1: 0x60e74ba16f35b38925253fa1, + limb2: 0x105952dd8d3cb0fb, limb3: 0x0 }, r0a1: u384 { - limb0: 0xdfa0814dcc3cfd941cbe263, - limb1: 0x9814eb091520194259888630, - limb2: 0x1ff9550371ecf4f7, + limb0: 0x86a65a5ae488b0d28900cf53, + limb1: 0x4fca5c6edee392882c778363, + limb2: 0x160b4e8a7969f551, limb3: 0x0 }, r1a0: u384 { - limb0: 0x7b321d963123cf2736d72ac3, - limb1: 0xfc43f3118254886603c3b4e7, - limb2: 0x241c9fea0d774d03, + limb0: 0x7b126c951fa4afc0c2ebda0c, + limb1: 0x85834d2eff18413563bf9144, + limb2: 0x8f905b15b3b2add, limb3: 0x0 }, r1a1: u384 { - limb0: 0xdf61d6180e7608b09bb4fbc, - limb1: 0x35b4240fab1b276334375a53, - limb2: 0x285dc9083fb200c9, + limb0: 0xa595d6853747f798b16d2eca, + limb1: 0x42d7941f6581b069059ed186, + limb2: 0x2eb502b9a9b7169b, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x91286f812939ca48668718c, - limb1: 0x69345d029001e5cff796b567, - limb2: 0x781568d392aad70, + limb0: 0x373d78cacc3a213ab7a5dc77, + limb1: 0x2c4c9295f1b3e767a376d95a, + limb2: 0x6fa8606535c131, limb3: 0x0 }, r0a1: u384 { - limb0: 0x54037a4157acc5a1e8ca7c62, - limb1: 0x39a3c90242be03e0a97ef620, - limb2: 0x2260adc4baa118f8, + limb0: 0x7a037d066e3015f12b9bb899, + limb1: 0x2df06eb9be7dd1d34dd0ce6e, + limb2: 0x2bfecfb6faa40681, limb3: 0x0 }, r1a0: u384 { - limb0: 0x73d01cddaf891a27a00e67c9, - limb1: 0x6acf3edf14a43aaa999d3d2b, - limb2: 0x20fa59f75dad8302, + limb0: 0x767f84f556bc0e82acc4c2fc, + limb1: 0xdc285959286fe86c69fd09c6, + limb2: 0xddf35d64e052591, limb3: 0x0 }, r1a1: u384 { - limb0: 0x7915780c7f8b4f83feb67a40, - limb1: 0x46ea9775cfc5e375a55d8e38, - limb2: 0x236c39b5a78a2943, + limb0: 0xba3bf8a2a744c4be716d10a3, + limb1: 0x704558fde5a2dd4610092a58, + limb2: 0x24381fac38d1c2f4, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x92df0e3af546f26577ed1487, - limb1: 0xa3ac01ff6243e8adf4822d07, - limb2: 0x2e8fb31cfb5f84c4, + limb0: 0x8bfb882fe3e87bf7f06a534, + limb1: 0x60e74ba16f35b38925253fa1, + limb2: 0x105952dd8d3cb0fb, limb3: 0x0 }, r0a1: u384 { - limb0: 0xdfa0814dcc3cfd941cbe263, - limb1: 0x9814eb091520194259888630, - limb2: 0x1ff9550371ecf4f7, + limb0: 0x86a65a5ae488b0d28900cf53, + limb1: 0x4fca5c6edee392882c778363, + limb2: 0x160b4e8a7969f551, limb3: 0x0 }, r1a0: u384 { - limb0: 0x7b321d963123cf2736d72ac3, - limb1: 0xfc43f3118254886603c3b4e7, - limb2: 0x241c9fea0d774d03, + limb0: 0x7b126c951fa4afc0c2ebda0c, + limb1: 0x85834d2eff18413563bf9144, + limb2: 0x8f905b15b3b2add, limb3: 0x0 }, r1a1: u384 { - limb0: 0xdf61d6180e7608b09bb4fbc, - limb1: 0x35b4240fab1b276334375a53, - limb2: 0x285dc9083fb200c9, + limb0: 0xa595d6853747f798b16d2eca, + limb1: 0x42d7941f6581b069059ed186, + limb2: 0x2eb502b9a9b7169b, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x441791311d79a25987eb486f, - limb1: 0xae6adabed7ab2e1346333053, - limb2: 0x11d7a86a5f251872, + limb0: 0xe6dbfdaa4aaed35ae46b7e36, + limb1: 0x954a32448a2c26964f83e2ff, + limb2: 0x23fe11d86de21bf3, limb3: 0x0 }, r0a1: u384 { - limb0: 0xe2e2729499a55b6916544f7e, - limb1: 0x52902c6ee58559aeb03b99be, - limb2: 0x18e2e32deb54c7ff, + limb0: 0x390ec78bb0c63fea5a5112ca, + limb1: 0x5eaba420296488bd9ad78ba4, + limb2: 0x179a2336d20f9552, limb3: 0x0 }, r1a0: u384 { - limb0: 0xcb27b5e6b883efd2719064bc, - limb1: 0x1aedc78de223f6a4163a746a, - limb2: 0x1cf0962a0dcc1349, + limb0: 0x451d421ca57949d9274eaee9, + limb1: 0xd85aee99f3f7b33bdddf1b37, + limb2: 0x1b83c0b80546357d, limb3: 0x0 }, r1a1: u384 { - limb0: 0xcbb1d007744bc5fed3d00418, - limb1: 0xe60afdf8cbd4e4d8099c799e, - limb2: 0x329fabdf291232c, + limb0: 0x94c9276300f21460bd558c41, + limb1: 0x89efceec3bb694f4c41487d3, + limb2: 0x44375dd912e436b, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x441791311d79a25987eb486f, - limb1: 0xae6adabed7ab2e1346333053, - limb2: 0x11d7a86a5f251872, + limb0: 0xe6dbfdaa4aaed35ae46b7e36, + limb1: 0x954a32448a2c26964f83e2ff, + limb2: 0x23fe11d86de21bf3, limb3: 0x0 }, r0a1: u384 { - limb0: 0xe2e2729499a55b6916544f7e, - limb1: 0x52902c6ee58559aeb03b99be, - limb2: 0x18e2e32deb54c7ff, + limb0: 0x390ec78bb0c63fea5a5112ca, + limb1: 0x5eaba420296488bd9ad78ba4, + limb2: 0x179a2336d20f9552, limb3: 0x0 }, r1a0: u384 { - limb0: 0xcb27b5e6b883efd2719064bc, - limb1: 0x1aedc78de223f6a4163a746a, - limb2: 0x1cf0962a0dcc1349, + limb0: 0x451d421ca57949d9274eaee9, + limb1: 0xd85aee99f3f7b33bdddf1b37, + limb2: 0x1b83c0b80546357d, limb3: 0x0 }, r1a1: u384 { - limb0: 0xcbb1d007744bc5fed3d00418, - limb1: 0xe60afdf8cbd4e4d8099c799e, - limb2: 0x329fabdf291232c, + limb0: 0x94c9276300f21460bd558c41, + limb1: 0x89efceec3bb694f4c41487d3, + limb2: 0x44375dd912e436b, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x6f3bb2d6af4ee2176e003b3a, - limb1: 0xc6891a0f95c58b9c6eb5b18d, - limb2: 0x1c4c1711f3a0a84e, + limb0: 0x90c98d8d59246f7ac71cbc7, + limb1: 0x603dd0e0dd09fb8ad13dbbb, + limb2: 0x1d068d315771a3c1, limb3: 0x0 }, r0a1: u384 { - limb0: 0x5504bbfb771ead5785beaec5, - limb1: 0x5559b8cea4b9792b59b37336, - limb2: 0x17b0c2ef3da2953d, + limb0: 0x2bb3f34aa59b0e052ec56b80, + limb1: 0xb239e8dca49685c638327d9e, + limb2: 0x11e46c1f8395f739, limb3: 0x0 }, r1a0: u384 { - limb0: 0xf2068d255835d5f16b74ac2e, - limb1: 0x5e75a4ceabd5f1b5c02fe9ed, - limb2: 0x247db20dd0441015, + limb0: 0x2f114895453b5cf23b04678c, + limb1: 0x99cdbda7fef0644b67d48e85, + limb2: 0x6d8bc66cf89ee21, limb3: 0x0 }, r1a1: u384 { - limb0: 0x5be223efbfe231abf8ca0cce, - limb1: 0xf3f4de91167c5177fac171ca, - limb2: 0x25e8b4024cb5630d, + limb0: 0x903c6ead9a344fceaab2dd24, + limb1: 0x97063cfc1096d628d7979e2c, + limb2: 0x49f8c496be2ccd4, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x6f3bb2d6af4ee2176e003b3a, - limb1: 0xc6891a0f95c58b9c6eb5b18d, - limb2: 0x1c4c1711f3a0a84e, + limb0: 0x90c98d8d59246f7ac71cbc7, + limb1: 0x603dd0e0dd09fb8ad13dbbb, + limb2: 0x1d068d315771a3c1, limb3: 0x0 }, r0a1: u384 { - limb0: 0x5504bbfb771ead5785beaec5, - limb1: 0x5559b8cea4b9792b59b37336, - limb2: 0x17b0c2ef3da2953d, + limb0: 0x2bb3f34aa59b0e052ec56b80, + limb1: 0xb239e8dca49685c638327d9e, + limb2: 0x11e46c1f8395f739, limb3: 0x0 }, r1a0: u384 { - limb0: 0xf2068d255835d5f16b74ac2e, - limb1: 0x5e75a4ceabd5f1b5c02fe9ed, - limb2: 0x247db20dd0441015, + limb0: 0x2f114895453b5cf23b04678c, + limb1: 0x99cdbda7fef0644b67d48e85, + limb2: 0x6d8bc66cf89ee21, limb3: 0x0 }, r1a1: u384 { - limb0: 0x5be223efbfe231abf8ca0cce, - limb1: 0xf3f4de91167c5177fac171ca, - limb2: 0x25e8b4024cb5630d, + limb0: 0x903c6ead9a344fceaab2dd24, + limb1: 0x97063cfc1096d628d7979e2c, + limb2: 0x49f8c496be2ccd4, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x793261ad2fef8eb1ebdb6a00, - limb1: 0xcf813896ac54cc10d1c36f2b, - limb2: 0x18cde4142d2e2492, + limb0: 0x3778e71e52e9cd8a2efaae30, + limb1: 0x1510f4be21ae0d4ce4e9c407, + limb2: 0x87f2c39614ed514, limb3: 0x0 }, r0a1: u384 { - limb0: 0x5deae6fafec1836e66450442, - limb1: 0xe4f06489862d37d3b2323e92, - limb2: 0x7cd4e6b2d4239c4, + limb0: 0x9425b553c85be9f8eab4827e, + limb1: 0xd75d6f1a6013f310d81e5f6e, + limb2: 0x188c2e53470ad6dc, limb3: 0x0 }, r1a0: u384 { - limb0: 0x87c52edecba636f08f695b04, - limb1: 0x41094d9fab7a3d94b6cc4e73, - limb2: 0x198dd162ada46ada, + limb0: 0xd6715a5f7fb9d3f64160e303, + limb1: 0xfb0e7cb89f7e8c3908e859f9, + limb2: 0x84f3df13ca3d149, limb3: 0x0 }, r1a1: u384 { - limb0: 0x92b03c53e3fb77e8ea5c3cd8, - limb1: 0x7ea64ace3906085b9cafc271, - limb2: 0xd940e64930fb5de, + limb0: 0xea46b6a8dbd35d5c7098c283, + limb1: 0xff4f98d6447bac1d056ea3b3, + limb2: 0xd6d18364b06a02c, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x793261ad2fef8eb1ebdb6a00, - limb1: 0xcf813896ac54cc10d1c36f2b, - limb2: 0x18cde4142d2e2492, + limb0: 0x3778e71e52e9cd8a2efaae30, + limb1: 0x1510f4be21ae0d4ce4e9c407, + limb2: 0x87f2c39614ed514, limb3: 0x0 }, r0a1: u384 { - limb0: 0x5deae6fafec1836e66450442, - limb1: 0xe4f06489862d37d3b2323e92, - limb2: 0x7cd4e6b2d4239c4, + limb0: 0x9425b553c85be9f8eab4827e, + limb1: 0xd75d6f1a6013f310d81e5f6e, + limb2: 0x188c2e53470ad6dc, limb3: 0x0 }, r1a0: u384 { - limb0: 0x87c52edecba636f08f695b04, - limb1: 0x41094d9fab7a3d94b6cc4e73, - limb2: 0x198dd162ada46ada, + limb0: 0xd6715a5f7fb9d3f64160e303, + limb1: 0xfb0e7cb89f7e8c3908e859f9, + limb2: 0x84f3df13ca3d149, limb3: 0x0 }, r1a1: u384 { - limb0: 0x92b03c53e3fb77e8ea5c3cd8, - limb1: 0x7ea64ace3906085b9cafc271, - limb2: 0xd940e64930fb5de, + limb0: 0xea46b6a8dbd35d5c7098c283, + limb1: 0xff4f98d6447bac1d056ea3b3, + limb2: 0xd6d18364b06a02c, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x28ec1cb163f1de750a3d5c49, - limb1: 0x3344ef71122cb7735e7fb911, - limb2: 0x15ffb7e5cfc1fa5e, + limb0: 0x6f6d3e211d26957a67f263c, + limb1: 0x8da5874752e96d222d666c7e, + limb2: 0x266336ff63f6cae, limb3: 0x0 }, r0a1: u384 { - limb0: 0xcb1834c8cb4f6e4ab06db0d, - limb1: 0x17f27060892ff9b8cd21c989, - limb2: 0x23ed9c4dba5fc5cb, + limb0: 0xb3b8c3099016c6a6814524b4, + limb1: 0x4b7c12934d9309f8cb6fe11, + limb2: 0x24a297917e6d2286, limb3: 0x0 }, r1a0: u384 { - limb0: 0x9372177b949578d45bfce873, - limb1: 0x6c2013b3fe11129ef24c8c91, - limb2: 0x1631233dad5a2a08, + limb0: 0x29f2516e3c81dc23beb0b4a5, + limb1: 0x66af1f7514ccca035bf4bd08, + limb2: 0x1c93fbb41c5a080f, limb3: 0x0 }, r1a1: u384 { - limb0: 0x7e7bced8a31277aaaeb480, - limb1: 0xdde5b3a54fcb9e089f45d080, - limb2: 0x2a8e3c31f98e8c88, + limb0: 0x1d9a69028cdcd85247c47085, + limb1: 0xca54eb95e7fb935d08e1e49, + limb2: 0x25c558909e8ce210, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x28ec1cb163f1de750a3d5c49, - limb1: 0x3344ef71122cb7735e7fb911, - limb2: 0x15ffb7e5cfc1fa5e, + limb0: 0x6f6d3e211d26957a67f263c, + limb1: 0x8da5874752e96d222d666c7e, + limb2: 0x266336ff63f6cae, limb3: 0x0 }, r0a1: u384 { - limb0: 0xcb1834c8cb4f6e4ab06db0d, - limb1: 0x17f27060892ff9b8cd21c989, - limb2: 0x23ed9c4dba5fc5cb, + limb0: 0xb3b8c3099016c6a6814524b4, + limb1: 0x4b7c12934d9309f8cb6fe11, + limb2: 0x24a297917e6d2286, limb3: 0x0 }, r1a0: u384 { - limb0: 0x9372177b949578d45bfce873, - limb1: 0x6c2013b3fe11129ef24c8c91, - limb2: 0x1631233dad5a2a08, + limb0: 0x29f2516e3c81dc23beb0b4a5, + limb1: 0x66af1f7514ccca035bf4bd08, + limb2: 0x1c93fbb41c5a080f, limb3: 0x0 }, r1a1: u384 { - limb0: 0x7e7bced8a31277aaaeb480, - limb1: 0xdde5b3a54fcb9e089f45d080, - limb2: 0x2a8e3c31f98e8c88, + limb0: 0x1d9a69028cdcd85247c47085, + limb1: 0xca54eb95e7fb935d08e1e49, + limb2: 0x25c558909e8ce210, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x614da191d34eb6c444afe930, - limb1: 0x8f0957a45959802f945e8db9, - limb2: 0x6fa2586e406901c, + limb0: 0xa2877a17d6822fdbec0a419a, + limb1: 0xff617440635bbeae917acf03, + limb2: 0x302aa8c0c25edf9c, limb3: 0x0 }, r0a1: u384 { - limb0: 0x5d4ce2f1d39afe723e79db28, - limb1: 0xce5115ae0b181ac47a7e4ebe, - limb2: 0x15cc21d5e1c517ec, + limb0: 0xa0509fbe6fedb1a1d6bc0fa0, + limb1: 0xb6f674c844db3046d0228a67, + limb2: 0x275d1093fe789296, limb3: 0x0 }, r1a0: u384 { - limb0: 0xa96505e7f29062d82b468c64, - limb1: 0x3e7d3e343359e1957ef637da, - limb2: 0x1f6d157b5914a756, + limb0: 0x252b1469a10bf6c0e8441f2e, + limb1: 0xe3f275f7dc0d10062fa24067, + limb2: 0x5938d22b9b86d1f, limb3: 0x0 }, r1a1: u384 { - limb0: 0xfbfcdef67cf6164071e6cb29, - limb1: 0xdf8ae7c07658a12db6b155b, - limb2: 0x1a8ee2ba14d1f36e, + limb0: 0xfb5f636c62c36f78c5062f30, + limb1: 0x150a99ab14007914780e49f1, + limb2: 0x9e0bccb105b14f4, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x614da191d34eb6c444afe930, - limb1: 0x8f0957a45959802f945e8db9, - limb2: 0x6fa2586e406901c, + limb0: 0xa2877a17d6822fdbec0a419a, + limb1: 0xff617440635bbeae917acf03, + limb2: 0x302aa8c0c25edf9c, limb3: 0x0 }, r0a1: u384 { - limb0: 0x5d4ce2f1d39afe723e79db28, - limb1: 0xce5115ae0b181ac47a7e4ebe, - limb2: 0x15cc21d5e1c517ec, + limb0: 0xa0509fbe6fedb1a1d6bc0fa0, + limb1: 0xb6f674c844db3046d0228a67, + limb2: 0x275d1093fe789296, limb3: 0x0 }, r1a0: u384 { - limb0: 0xa96505e7f29062d82b468c64, - limb1: 0x3e7d3e343359e1957ef637da, - limb2: 0x1f6d157b5914a756, + limb0: 0x252b1469a10bf6c0e8441f2e, + limb1: 0xe3f275f7dc0d10062fa24067, + limb2: 0x5938d22b9b86d1f, limb3: 0x0 }, r1a1: u384 { - limb0: 0xfbfcdef67cf6164071e6cb29, - limb1: 0xdf8ae7c07658a12db6b155b, - limb2: 0x1a8ee2ba14d1f36e, + limb0: 0xfb5f636c62c36f78c5062f30, + limb1: 0x150a99ab14007914780e49f1, + limb2: 0x9e0bccb105b14f4, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x37f302160247ccc4e884b697, - limb1: 0x86bf2baf19c424742321fb8f, - limb2: 0xfe02d3680650dfa, + limb0: 0xc5eaebad6bd5beb92e09aade, + limb1: 0xcbd48c7eb96beac635eddee1, + limb2: 0x6b94aae5ea30073, limb3: 0x0 }, r0a1: u384 { - limb0: 0x8266da0b85b5d37973513d68, - limb1: 0xf59ad9c36cab38fd2133b5a0, - limb2: 0xcd288a1f721e743, + limb0: 0x882af1093bd174803a58f378, + limb1: 0x9ec588e092fc5b155ebeec2e, + limb2: 0x1ca1957381eeeaf6, limb3: 0x0 }, r1a0: u384 { - limb0: 0x68bc8f7629329df099c77957, - limb1: 0xd984b80308f4d84f1cc0ac01, - limb2: 0xeb15daaf6a0711e, + limb0: 0x85f75492a545f601ebdaeca3, + limb1: 0xb76104e8575174401e8c88d3, + limb2: 0x2f386789cd7045e0, limb3: 0x0 }, r1a1: u384 { - limb0: 0xde33cc810e6c45544b7b1d63, - limb1: 0xbfc9fa2665a268586b092094, - limb2: 0x2540680db98220f9, + limb0: 0x21695ebadab2d91e4fdb6459, + limb1: 0x76f7be32767094c83713ad27, + limb2: 0x11f63fe7a6d180b6, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x844f09f48bc8d733e755eb67, - limb1: 0x1815db4deb12e474f72764bc, - limb2: 0xb272da986c40374, + limb0: 0xbff947921ed15906d7d1a15d, + limb1: 0x801c1b9c79563f2e5bce21e1, + limb2: 0x956f2ac3e4fe88a, limb3: 0x0 }, r0a1: u384 { - limb0: 0x6a27a78115117ace4a9da882, - limb1: 0x75a1a2ac0b0173235165c192, - limb2: 0x19aa4c3a491be457, + limb0: 0x5b2798f11186aa7db5373cdd, + limb1: 0xa5023b2f0c8bab4ec100bf18, + limb2: 0x13a0cace49d5eade, limb3: 0x0 }, r1a0: u384 { - limb0: 0x8b0718b7cb84932c0c3d137a, - limb1: 0x4e41381f0709db8bfa3775ba, - limb2: 0x291f8293ea031882, + limb0: 0x9b0527939d6c45e657273a85, + limb1: 0x76cb75e8dc534ecd7e917521, + limb2: 0x12e40c7aed42af34, limb3: 0x0 }, r1a1: u384 { - limb0: 0xe56394253a523e9a0245345d, - limb1: 0x6cfb2b41859fb7ab43faec9d, - limb2: 0x1c13f310babe4689, + limb0: 0x77da98dd73c9603932b79af4, + limb1: 0xfaac3a02aea7867b5226fa70, + limb2: 0x8e2f40461279814, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x37f302160247ccc4e884b697, - limb1: 0x86bf2baf19c424742321fb8f, - limb2: 0xfe02d3680650dfa, + limb0: 0xc5eaebad6bd5beb92e09aade, + limb1: 0xcbd48c7eb96beac635eddee1, + limb2: 0x6b94aae5ea30073, limb3: 0x0 }, r0a1: u384 { - limb0: 0x8266da0b85b5d37973513d68, - limb1: 0xf59ad9c36cab38fd2133b5a0, - limb2: 0xcd288a1f721e743, + limb0: 0x882af1093bd174803a58f378, + limb1: 0x9ec588e092fc5b155ebeec2e, + limb2: 0x1ca1957381eeeaf6, limb3: 0x0 }, r1a0: u384 { - limb0: 0x68bc8f7629329df099c77957, - limb1: 0xd984b80308f4d84f1cc0ac01, - limb2: 0xeb15daaf6a0711e, + limb0: 0x85f75492a545f601ebdaeca3, + limb1: 0xb76104e8575174401e8c88d3, + limb2: 0x2f386789cd7045e0, limb3: 0x0 }, r1a1: u384 { - limb0: 0xde33cc810e6c45544b7b1d63, - limb1: 0xbfc9fa2665a268586b092094, - limb2: 0x2540680db98220f9, + limb0: 0x21695ebadab2d91e4fdb6459, + limb1: 0x76f7be32767094c83713ad27, + limb2: 0x11f63fe7a6d180b6, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x844f09f48bc8d733e755eb67, - limb1: 0x1815db4deb12e474f72764bc, - limb2: 0xb272da986c40374, + limb0: 0xbff947921ed15906d7d1a15d, + limb1: 0x801c1b9c79563f2e5bce21e1, + limb2: 0x956f2ac3e4fe88a, limb3: 0x0 }, r0a1: u384 { - limb0: 0x6a27a78115117ace4a9da882, - limb1: 0x75a1a2ac0b0173235165c192, - limb2: 0x19aa4c3a491be457, + limb0: 0x5b2798f11186aa7db5373cdd, + limb1: 0xa5023b2f0c8bab4ec100bf18, + limb2: 0x13a0cace49d5eade, limb3: 0x0 }, r1a0: u384 { - limb0: 0x8b0718b7cb84932c0c3d137a, - limb1: 0x4e41381f0709db8bfa3775ba, - limb2: 0x291f8293ea031882, + limb0: 0x9b0527939d6c45e657273a85, + limb1: 0x76cb75e8dc534ecd7e917521, + limb2: 0x12e40c7aed42af34, limb3: 0x0 }, r1a1: u384 { - limb0: 0xe56394253a523e9a0245345d, - limb1: 0x6cfb2b41859fb7ab43faec9d, - limb2: 0x1c13f310babe4689, + limb0: 0x77da98dd73c9603932b79af4, + limb1: 0xfaac3a02aea7867b5226fa70, + limb2: 0x8e2f40461279814, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xbb528589966083a5c3cc503d, - limb1: 0xf96424b9b3f7b83a10910d65, - limb2: 0x196e6e6af64ee9cd, + limb0: 0xac907bc1f092e5e0913e845c, + limb1: 0x5964ee4cf6c9a38642dd0517, + limb2: 0x1719e7b29682420d, limb3: 0x0 }, r0a1: u384 { - limb0: 0x57d77b7c7258f6db3a4e0e4d, - limb1: 0x6327ad0f969e2c509eb4e0ea, - limb2: 0xd8c6afa9f3b4c80, + limb0: 0x74d7d423222f8b95733071c5, + limb1: 0x86f3c3861a5f4d9c59281db1, + limb2: 0x2e4ed8b13095cb38, limb3: 0x0 }, r1a0: u384 { - limb0: 0x3db6f6e9aa86ac27838aa2b, - limb1: 0x1f9aad200150f730986f7c7f, - limb2: 0x18ddd5901615337c, + limb0: 0x4967b22d6ffa060c3d0f2c5f, + limb1: 0x48dc68663059b322a3bdeaa4, + limb2: 0x166e533bd057aeaf, limb3: 0x0 }, r1a1: u384 { - limb0: 0xe3de0054e56a02951366bd59, - limb1: 0xf1d61cbb5c0358d9ad0fba62, - limb2: 0x7d161cbb52c9d9f, + limb0: 0xcdd096c0af346e40e770fa2b, + limb1: 0x6a8d2b8bc4369ae60bcd1a63, + limb2: 0x2fd98e44a782d9d9, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xbb528589966083a5c3cc503d, - limb1: 0xf96424b9b3f7b83a10910d65, - limb2: 0x196e6e6af64ee9cd, + limb0: 0xac907bc1f092e5e0913e845c, + limb1: 0x5964ee4cf6c9a38642dd0517, + limb2: 0x1719e7b29682420d, limb3: 0x0 }, r0a1: u384 { - limb0: 0x57d77b7c7258f6db3a4e0e4d, - limb1: 0x6327ad0f969e2c509eb4e0ea, - limb2: 0xd8c6afa9f3b4c80, + limb0: 0x74d7d423222f8b95733071c5, + limb1: 0x86f3c3861a5f4d9c59281db1, + limb2: 0x2e4ed8b13095cb38, limb3: 0x0 }, r1a0: u384 { - limb0: 0x3db6f6e9aa86ac27838aa2b, - limb1: 0x1f9aad200150f730986f7c7f, - limb2: 0x18ddd5901615337c, + limb0: 0x4967b22d6ffa060c3d0f2c5f, + limb1: 0x48dc68663059b322a3bdeaa4, + limb2: 0x166e533bd057aeaf, limb3: 0x0 }, r1a1: u384 { - limb0: 0xe3de0054e56a02951366bd59, - limb1: 0xf1d61cbb5c0358d9ad0fba62, - limb2: 0x7d161cbb52c9d9f, + limb0: 0xcdd096c0af346e40e770fa2b, + limb1: 0x6a8d2b8bc4369ae60bcd1a63, + limb2: 0x2fd98e44a782d9d9, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x1bc2c1c82780cdf60c6e2ebe, - limb1: 0xae4b635d425a8eec5785e1cf, - limb2: 0xd8f0030305e9d60, + limb0: 0xcae2854ff6a3816300716e11, + limb1: 0x24542ac4d609ab52f57a1cf6, + limb2: 0x130bee99db1c1a6, limb3: 0x0 }, r0a1: u384 { - limb0: 0x489d8175b3766c7193a418b4, - limb1: 0xd60cf5772b049cb26b691b55, - limb2: 0x132b3d14f101eb9b, + limb0: 0x7a097fcb199569eb2020a518, + limb1: 0xc59e26079797276de74d2710, + limb2: 0x205de761540e71f0, limb3: 0x0 }, r1a0: u384 { - limb0: 0x70b8cce338d97c3f93483761, - limb1: 0x16d0d363bfef9228bc47442c, - limb2: 0x5e3e8404827c1db, + limb0: 0xaa1ad54be641d1006740583, + limb1: 0x3b2a9d3fc0122931ae274736, + limb2: 0xbe53b90a6b0a84e, limb3: 0x0 }, r1a1: u384 { - limb0: 0x41d459ec2861f3be6809b6f3, - limb1: 0xf6f3a3ac71eeb3899f2f4748, - limb2: 0xaaf22c0eeffaf27, + limb0: 0xd74fcd1e68f4e37eb864c664, + limb1: 0x148c5cb80d01f6a428be16e8, + limb2: 0x12f83a1b869c2d94, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x1bc2c1c82780cdf60c6e2ebe, - limb1: 0xae4b635d425a8eec5785e1cf, - limb2: 0xd8f0030305e9d60, + limb0: 0xcae2854ff6a3816300716e11, + limb1: 0x24542ac4d609ab52f57a1cf6, + limb2: 0x130bee99db1c1a6, limb3: 0x0 }, r0a1: u384 { - limb0: 0x489d8175b3766c7193a418b4, - limb1: 0xd60cf5772b049cb26b691b55, - limb2: 0x132b3d14f101eb9b, + limb0: 0x7a097fcb199569eb2020a518, + limb1: 0xc59e26079797276de74d2710, + limb2: 0x205de761540e71f0, limb3: 0x0 }, r1a0: u384 { - limb0: 0x70b8cce338d97c3f93483761, - limb1: 0x16d0d363bfef9228bc47442c, - limb2: 0x5e3e8404827c1db, + limb0: 0xaa1ad54be641d1006740583, + limb1: 0x3b2a9d3fc0122931ae274736, + limb2: 0xbe53b90a6b0a84e, limb3: 0x0 }, r1a1: u384 { - limb0: 0x41d459ec2861f3be6809b6f3, - limb1: 0xf6f3a3ac71eeb3899f2f4748, - limb2: 0xaaf22c0eeffaf27, + limb0: 0xd74fcd1e68f4e37eb864c664, + limb1: 0x148c5cb80d01f6a428be16e8, + limb2: 0x12f83a1b869c2d94, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xdb082e25ff6a735fd836fb0f, - limb1: 0xff51bee0f9bc65717d9306e5, - limb2: 0xe937bbb6dcb426b, + limb0: 0xc45d014325b07ba0dd2d4f10, + limb1: 0x361ef3f040192c17167b900c, + limb2: 0xf09fdc89e100ba7, limb3: 0x0 }, r0a1: u384 { - limb0: 0xa0e0ef6de70a19d8e30eefe4, - limb1: 0x9971141f0fd1aa96865c5129, - limb2: 0x7ed811b11734fc4, + limb0: 0x19de05e48711d6d787de58a5, + limb1: 0x52290b2ee0a6dae953c249cf, + limb2: 0xf136a05d822f41d, limb3: 0x0 }, r1a0: u384 { - limb0: 0x660bcce2ba42a37aeda78995, - limb1: 0xe078d27a60320dba4aed3f3c, - limb2: 0x10573b0f2cc19a00, + limb0: 0x17b39f9e05d9816d69d3a613, + limb1: 0x643e9006b7b05faa90e6a8, + limb2: 0x20e7d1e6a4c0547c, limb3: 0x0 }, r1a1: u384 { - limb0: 0x5e7b027e6261d4675ece781f, - limb1: 0x3354a33eebf2cc097a4de3d2, - limb2: 0x1af317f02039f5, + limb0: 0x2fee0ea45053ae644c4e684f, + limb1: 0xbb2e7afad484141b0be42479, + limb2: 0x187df546a9ccfb69, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x63724e690d5f646eff2ad589, - limb1: 0xccf863aaa561f2a18a80c393, - limb2: 0x1f1047702f52eb0d, + limb0: 0xada5bca8b46adc829ca20edf, + limb1: 0xa9cc28a9116efbf02609e3f2, + limb2: 0xaedc7dd73b536f3, limb3: 0x0 }, r0a1: u384 { - limb0: 0xe7658fc9bf841a002a808e25, - limb1: 0x8ce9ccdffab1ab886034d842, - limb2: 0x2bf331e6d3b04200, + limb0: 0xab9510ead48ad195261ddc88, + limb1: 0xc202a7ba9dfce6d86664504e, + limb2: 0x2ce423186cc9b5a9, limb3: 0x0 }, r1a0: u384 { - limb0: 0x85f3f386f915aa0d30236a1b, - limb1: 0xac13040cfd7cb948df006a49, - limb2: 0xfc258ada466eaa9, + limb0: 0x8f2b148f9ab7585ea1a6c347, + limb1: 0x508884251415af912a5d0a42, + limb2: 0x1dbbf26d101af06d, limb3: 0x0 }, r1a1: u384 { - limb0: 0x9ce50b0b7a1ed49acbe59fe4, - limb1: 0xa6996ff100909825127d54e8, - limb2: 0xe0653a3a82da48d, + limb0: 0x68b9f7cab6f91619604f8061, + limb1: 0xd94ab22c8f954516f2d2de81, + limb2: 0x16aa4a653b525fb1, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xdb082e25ff6a735fd836fb0f, - limb1: 0xff51bee0f9bc65717d9306e5, - limb2: 0xe937bbb6dcb426b, + limb0: 0xc45d014325b07ba0dd2d4f10, + limb1: 0x361ef3f040192c17167b900c, + limb2: 0xf09fdc89e100ba7, limb3: 0x0 }, r0a1: u384 { - limb0: 0xa0e0ef6de70a19d8e30eefe4, - limb1: 0x9971141f0fd1aa96865c5129, - limb2: 0x7ed811b11734fc4, + limb0: 0x19de05e48711d6d787de58a5, + limb1: 0x52290b2ee0a6dae953c249cf, + limb2: 0xf136a05d822f41d, limb3: 0x0 }, r1a0: u384 { - limb0: 0x660bcce2ba42a37aeda78995, - limb1: 0xe078d27a60320dba4aed3f3c, - limb2: 0x10573b0f2cc19a00, + limb0: 0x17b39f9e05d9816d69d3a613, + limb1: 0x643e9006b7b05faa90e6a8, + limb2: 0x20e7d1e6a4c0547c, limb3: 0x0 }, r1a1: u384 { - limb0: 0x5e7b027e6261d4675ece781f, - limb1: 0x3354a33eebf2cc097a4de3d2, - limb2: 0x1af317f02039f5, + limb0: 0x2fee0ea45053ae644c4e684f, + limb1: 0xbb2e7afad484141b0be42479, + limb2: 0x187df546a9ccfb69, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x63724e690d5f646eff2ad589, - limb1: 0xccf863aaa561f2a18a80c393, - limb2: 0x1f1047702f52eb0d, + limb0: 0xada5bca8b46adc829ca20edf, + limb1: 0xa9cc28a9116efbf02609e3f2, + limb2: 0xaedc7dd73b536f3, limb3: 0x0 }, r0a1: u384 { - limb0: 0xe7658fc9bf841a002a808e25, - limb1: 0x8ce9ccdffab1ab886034d842, - limb2: 0x2bf331e6d3b04200, + limb0: 0xab9510ead48ad195261ddc88, + limb1: 0xc202a7ba9dfce6d86664504e, + limb2: 0x2ce423186cc9b5a9, limb3: 0x0 }, r1a0: u384 { - limb0: 0x85f3f386f915aa0d30236a1b, - limb1: 0xac13040cfd7cb948df006a49, - limb2: 0xfc258ada466eaa9, + limb0: 0x8f2b148f9ab7585ea1a6c347, + limb1: 0x508884251415af912a5d0a42, + limb2: 0x1dbbf26d101af06d, limb3: 0x0 }, r1a1: u384 { - limb0: 0x9ce50b0b7a1ed49acbe59fe4, - limb1: 0xa6996ff100909825127d54e8, - limb2: 0xe0653a3a82da48d, + limb0: 0x68b9f7cab6f91619604f8061, + limb1: 0xd94ab22c8f954516f2d2de81, + limb2: 0x16aa4a653b525fb1, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xd3b12eab33c136c775dbd48d, - limb1: 0x758880d2801a8d76459d43cf, - limb2: 0x9924db6a79fbd4, + limb0: 0xc4a85cff6912d5bfd21136b3, + limb1: 0x34488d83eff390d6a141392c, + limb2: 0xdd68be1560fdaae, limb3: 0x0 }, r0a1: u384 { - limb0: 0xc92b307abbce3beec2ab17c0, - limb1: 0x2989f76fb73f25b188f2dff5, - limb2: 0x12a327b38c27f4ad, + limb0: 0x25abfb1fa590f9ccb71b8e0, + limb1: 0x43c63f304c5602ef9de96df6, + limb2: 0x21e65c606ce32d5a, limb3: 0x0 }, r1a0: u384 { - limb0: 0x38d49ae370a94a6d764fbe53, - limb1: 0xc5c4888da220dd1053f3abb4, - limb2: 0x1a6b62f5ee9ed7b8, + limb0: 0x6e4626b5e644b7a440e1b381, + limb1: 0xa29ef58cc4acec20c08690c, + limb2: 0x1eca054ddf87b2a4, limb3: 0x0 }, r1a1: u384 { - limb0: 0x24c67b093c561ab3dd30939f, - limb1: 0x92b8b2198f5db7182e1367b, - limb2: 0x5eb50ee86b198c6, + limb0: 0xc220eeaf9d6200717abc6724, + limb1: 0x702fffe80bce126803560a40, + limb2: 0x2e0f90625bd64073, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xd3b12eab33c136c775dbd48d, - limb1: 0x758880d2801a8d76459d43cf, - limb2: 0x9924db6a79fbd4, + limb0: 0xc4a85cff6912d5bfd21136b3, + limb1: 0x34488d83eff390d6a141392c, + limb2: 0xdd68be1560fdaae, limb3: 0x0 }, r0a1: u384 { - limb0: 0xc92b307abbce3beec2ab17c0, - limb1: 0x2989f76fb73f25b188f2dff5, - limb2: 0x12a327b38c27f4ad, + limb0: 0x25abfb1fa590f9ccb71b8e0, + limb1: 0x43c63f304c5602ef9de96df6, + limb2: 0x21e65c606ce32d5a, limb3: 0x0 }, r1a0: u384 { - limb0: 0x38d49ae370a94a6d764fbe53, - limb1: 0xc5c4888da220dd1053f3abb4, - limb2: 0x1a6b62f5ee9ed7b8, + limb0: 0x6e4626b5e644b7a440e1b381, + limb1: 0xa29ef58cc4acec20c08690c, + limb2: 0x1eca054ddf87b2a4, limb3: 0x0 }, r1a1: u384 { - limb0: 0x24c67b093c561ab3dd30939f, - limb1: 0x92b8b2198f5db7182e1367b, - limb2: 0x5eb50ee86b198c6, + limb0: 0xc220eeaf9d6200717abc6724, + limb1: 0x702fffe80bce126803560a40, + limb2: 0x2e0f90625bd64073, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x1046f626e68c8385257dbc93, - limb1: 0xf97fb13c0de7c7215a9a4fd0, - limb2: 0x2964298298240730, + limb0: 0x59f254cb97c8a519e0461a6, + limb1: 0xb4542e9c6bb21b7d9648e1d4, + limb2: 0x22dc33964ee2947b, limb3: 0x0 }, r0a1: u384 { - limb0: 0xc923f87fcb2d1b2ea85904ae, - limb1: 0x43d5dfbc4b8d180e27c7d8ef, - limb2: 0xe296b0a46984533, + limb0: 0x5e83c2931befc562e4c93cee, + limb1: 0x675b3e97b43eba3f75101885, + limb2: 0x11d20ed3321c48f, limb3: 0x0 }, r1a0: u384 { - limb0: 0x7230ba220638f78f266e4949, - limb1: 0xfcbafda5da3ce343bf9f31e1, - limb2: 0x2dbc83722fbe87c3, + limb0: 0x11e5d20e996d12471ceb3541, + limb1: 0x229064d01b397b4af809e840, + limb2: 0x21834a1301ac5984, limb3: 0x0 }, r1a1: u384 { - limb0: 0x9fb0b4050dcb7c16286e6437, - limb1: 0xf8655adcbf50b4efe277300e, - limb2: 0x1126130beba5f50a, + limb0: 0xbe43cdde5117c697882c850f, + limb1: 0x1bc4151048af9bbd27f7e82a, + limb2: 0x2501d9aca420d21e, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x691d26c4527aebe1fbeaf637, - limb1: 0xbbc72c87d3f05a5c3024a802, - limb2: 0x148d3bfa3e1bae16, + limb0: 0x134b53d15a50fc2bed6d2f3d, + limb1: 0xd4f8c40bf294c7e18346462d, + limb2: 0x1aad2161b8c9e68e, limb3: 0x0 }, r0a1: u384 { - limb0: 0x7d1d0fa217454e3129182aff, - limb1: 0xf29b983eb401c5eb3a323ff7, - limb2: 0x3c17a1bf2eeab07, + limb0: 0x88262244e0b154b0ca5b5d9a, + limb1: 0xd288b3c01ba5c293f8c800f8, + limb2: 0xf0ac20574e1aede, limb3: 0x0 }, r1a0: u384 { - limb0: 0xb96769a00457380b821cd65f, - limb1: 0x27a8e20afc9362f79af096e, - limb2: 0x20a5e744b161c953, + limb0: 0xe5373b9b81964332b6771878, + limb1: 0x80e60988bd2e9de7f4395ae6, + limb2: 0x2e916f6959fa27f0, limb3: 0x0 }, r1a1: u384 { - limb0: 0x1d79602cd4c91d0df3d1a791, - limb1: 0x186d4bfd5ca3798eabf609e2, - limb2: 0x42f0ac0b08962c3, + limb0: 0x3f67c739560ef94c04b58369, + limb1: 0x1ee07a68fb111967cd5b15b8, + limb2: 0x1b7e48fae034571, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x1046f626e68c8385257dbc93, - limb1: 0xf97fb13c0de7c7215a9a4fd0, - limb2: 0x2964298298240730, + limb0: 0x59f254cb97c8a519e0461a6, + limb1: 0xb4542e9c6bb21b7d9648e1d4, + limb2: 0x22dc33964ee2947b, limb3: 0x0 }, r0a1: u384 { - limb0: 0xc923f87fcb2d1b2ea85904ae, - limb1: 0x43d5dfbc4b8d180e27c7d8ef, - limb2: 0xe296b0a46984533, + limb0: 0x5e83c2931befc562e4c93cee, + limb1: 0x675b3e97b43eba3f75101885, + limb2: 0x11d20ed3321c48f, limb3: 0x0 }, r1a0: u384 { - limb0: 0x7230ba220638f78f266e4949, - limb1: 0xfcbafda5da3ce343bf9f31e1, - limb2: 0x2dbc83722fbe87c3, + limb0: 0x11e5d20e996d12471ceb3541, + limb1: 0x229064d01b397b4af809e840, + limb2: 0x21834a1301ac5984, limb3: 0x0 }, r1a1: u384 { - limb0: 0x9fb0b4050dcb7c16286e6437, - limb1: 0xf8655adcbf50b4efe277300e, - limb2: 0x1126130beba5f50a, + limb0: 0xbe43cdde5117c697882c850f, + limb1: 0x1bc4151048af9bbd27f7e82a, + limb2: 0x2501d9aca420d21e, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x691d26c4527aebe1fbeaf637, - limb1: 0xbbc72c87d3f05a5c3024a802, - limb2: 0x148d3bfa3e1bae16, + limb0: 0x134b53d15a50fc2bed6d2f3d, + limb1: 0xd4f8c40bf294c7e18346462d, + limb2: 0x1aad2161b8c9e68e, limb3: 0x0 }, r0a1: u384 { - limb0: 0x7d1d0fa217454e3129182aff, - limb1: 0xf29b983eb401c5eb3a323ff7, - limb2: 0x3c17a1bf2eeab07, + limb0: 0x88262244e0b154b0ca5b5d9a, + limb1: 0xd288b3c01ba5c293f8c800f8, + limb2: 0xf0ac20574e1aede, limb3: 0x0 }, r1a0: u384 { - limb0: 0xb96769a00457380b821cd65f, - limb1: 0x27a8e20afc9362f79af096e, - limb2: 0x20a5e744b161c953, + limb0: 0xe5373b9b81964332b6771878, + limb1: 0x80e60988bd2e9de7f4395ae6, + limb2: 0x2e916f6959fa27f0, limb3: 0x0 }, r1a1: u384 { - limb0: 0x1d79602cd4c91d0df3d1a791, - limb1: 0x186d4bfd5ca3798eabf609e2, - limb2: 0x42f0ac0b08962c3, + limb0: 0x3f67c739560ef94c04b58369, + limb1: 0x1ee07a68fb111967cd5b15b8, + limb2: 0x1b7e48fae034571, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x217153900ead339150135d9b, - limb1: 0x1c7e9c885b64d90867d76c04, - limb2: 0x27b3426cce8b4ad5, + limb0: 0x65bb9e7438a232dad6eb7f96, + limb1: 0x5cf05222319fe00305afe0bf, + limb2: 0x1c6d87b3a5aabb43, limb3: 0x0 }, r0a1: u384 { - limb0: 0x5c6ade412e1356c3178ee39e, - limb1: 0x89d8b3321305d0666389fee6, - limb2: 0x13b01594a810da0, + limb0: 0xb8e845bbd71aa9644432eaa6, + limb1: 0xcdbf988db0903b19b07b9f3, + limb2: 0x107ca76698ca0dcd, limb3: 0x0 }, r1a0: u384 { - limb0: 0xb391a0d27884b680628d560f, - limb1: 0x7d281de7e5bc310f7c3e1d34, - limb2: 0x148d2b316314c15f, + limb0: 0x5ba7979e387e50b016321956, + limb1: 0x2ee41a1e59ccbc1350611d32, + limb2: 0x11a3b7b762eec2c5, limb3: 0x0 }, r1a1: u384 { - limb0: 0x622443e65f77ab4e9eeaa147, - limb1: 0x4144f7b17439b8bfff6286b6, - limb2: 0x28b73eea481e1ef9, + limb0: 0xb3f5edfecf19d6f82799dd03, + limb1: 0xc0d095110dad9ebbefe29784, + limb2: 0x1f63c13501eeeaf5, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x217153900ead339150135d9b, - limb1: 0x1c7e9c885b64d90867d76c04, - limb2: 0x27b3426cce8b4ad5, + limb0: 0x65bb9e7438a232dad6eb7f96, + limb1: 0x5cf05222319fe00305afe0bf, + limb2: 0x1c6d87b3a5aabb43, limb3: 0x0 }, r0a1: u384 { - limb0: 0x5c6ade412e1356c3178ee39e, - limb1: 0x89d8b3321305d0666389fee6, - limb2: 0x13b01594a810da0, + limb0: 0xb8e845bbd71aa9644432eaa6, + limb1: 0xcdbf988db0903b19b07b9f3, + limb2: 0x107ca76698ca0dcd, limb3: 0x0 }, r1a0: u384 { - limb0: 0xb391a0d27884b680628d560f, - limb1: 0x7d281de7e5bc310f7c3e1d34, - limb2: 0x148d2b316314c15f, + limb0: 0x5ba7979e387e50b016321956, + limb1: 0x2ee41a1e59ccbc1350611d32, + limb2: 0x11a3b7b762eec2c5, limb3: 0x0 }, r1a1: u384 { - limb0: 0x622443e65f77ab4e9eeaa147, - limb1: 0x4144f7b17439b8bfff6286b6, - limb2: 0x28b73eea481e1ef9, + limb0: 0xb3f5edfecf19d6f82799dd03, + limb1: 0xc0d095110dad9ebbefe29784, + limb2: 0x1f63c13501eeeaf5, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xd1009e9e2f0551593d539227, - limb1: 0x497cec387198986a6239da72, - limb2: 0x28ef2017e1ebd5c8, + limb0: 0xde29dd2c7147403100fa258c, + limb1: 0xbfc33c64aa2cdfd5f33f638d, + limb2: 0x139edaa5713a8a73, limb3: 0x0 }, r0a1: u384 { - limb0: 0xebe5bc8fadab4c11d33df84b, - limb1: 0xdc5ae3d9a9a4ef784abad9e5, - limb2: 0x271838a630da6722, + limb0: 0x8de2a4556c0698bd62bdc91d, + limb1: 0x497ed1dffa7e70b6c15dad0c, + limb2: 0x2cd9650c8add9b02, limb3: 0x0 }, r1a0: u384 { - limb0: 0x99add355853db63f083988f4, - limb1: 0x9ddd575c3c0d9aba51270a69, - limb2: 0x13106d976e1e4e34, + limb0: 0x2357739dff7746f02bf5d5cd, + limb1: 0x37396bdbe70cf65e7f7ed43b, + limb2: 0x16571ebe2a0acf51, limb3: 0x0 }, r1a1: u384 { - limb0: 0xa480ec1badf73afa11127688, - limb1: 0x2c26e2aec4993505286de764, - limb2: 0x118cd4a9667bafbd, + limb0: 0x5df40d02171f3aa50f4f1b23, + limb1: 0x3d504cd9327215bf089595d0, + limb2: 0x2598b49390b4ab86, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xd1009e9e2f0551593d539227, - limb1: 0x497cec387198986a6239da72, - limb2: 0x28ef2017e1ebd5c8, + limb0: 0xde29dd2c7147403100fa258c, + limb1: 0xbfc33c64aa2cdfd5f33f638d, + limb2: 0x139edaa5713a8a73, limb3: 0x0 }, r0a1: u384 { - limb0: 0xebe5bc8fadab4c11d33df84b, - limb1: 0xdc5ae3d9a9a4ef784abad9e5, - limb2: 0x271838a630da6722, + limb0: 0x8de2a4556c0698bd62bdc91d, + limb1: 0x497ed1dffa7e70b6c15dad0c, + limb2: 0x2cd9650c8add9b02, limb3: 0x0 }, r1a0: u384 { - limb0: 0x99add355853db63f083988f4, - limb1: 0x9ddd575c3c0d9aba51270a69, - limb2: 0x13106d976e1e4e34, + limb0: 0x2357739dff7746f02bf5d5cd, + limb1: 0x37396bdbe70cf65e7f7ed43b, + limb2: 0x16571ebe2a0acf51, limb3: 0x0 }, r1a1: u384 { - limb0: 0xa480ec1badf73afa11127688, - limb1: 0x2c26e2aec4993505286de764, - limb2: 0x118cd4a9667bafbd, + limb0: 0x5df40d02171f3aa50f4f1b23, + limb1: 0x3d504cd9327215bf089595d0, + limb2: 0x2598b49390b4ab86, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x35f5f81a7c7ec49f8c3dc645, - limb1: 0xb90ca9592134132890a99d78, - limb2: 0x22bff1d276aa2bcf, + limb0: 0x4360e486f47a872ae0460f44, + limb1: 0x7bb35bfed6fcfcf8779029e1, + limb2: 0x1390b4c7cb6b52f1, limb3: 0x0 }, r0a1: u384 { - limb0: 0x97cd707dc776712bc926b929, - limb1: 0x64108dec3df660795a63cf1e, - limb2: 0x25ae1d0513365b49, + limb0: 0xa628a0a5b10cbbd6c74c24ee, + limb1: 0x7470f4707a0cc892ebefded7, + limb2: 0x1ff4ca8749a8104e, limb3: 0x0 }, r1a0: u384 { - limb0: 0x8e82d9ed898ac1359c937a19, - limb1: 0xfe0d70aa63e32b58b0f2b7a1, - limb2: 0x49aff99ff261860, + limb0: 0xff60a007ec6c8b1e83574f3d, + limb1: 0xce3526917a6268d71609c0a1, + limb2: 0x3016dc03227dad67, limb3: 0x0 }, r1a1: u384 { - limb0: 0xcc5fc19b00b32ba7e3981121, - limb1: 0x4f23dae4b2b4bba5f212fd27, - limb2: 0x227e43052bc9ad14, + limb0: 0x3989e237ecb0bc27e6ad5d37, + limb1: 0x91acde41c342e92417210e02, + limb2: 0x2c602bf496b1e2b8, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x7717608ae03725f04e261adf, - limb1: 0x108d9246a38bc0ef1cde972, - limb2: 0x21ad9bf0d0a915fc, + limb0: 0x103a372c78fa5b2a67d01204, + limb1: 0x675f1cbc7aebe1140e8bed2a, + limb2: 0x2532e98456a291c3, limb3: 0x0 }, r0a1: u384 { - limb0: 0xd2bea690b21e93b68bf61af8, - limb1: 0x51edde55d3fe7570a0f31958, - limb2: 0x62c72bac3bc8d9a, + limb0: 0xc0be03786bd147df08fa1ece, + limb1: 0x7878592e1699337b543a6fa2, + limb2: 0x9e2390310f5b3d7, limb3: 0x0 }, r1a0: u384 { - limb0: 0xbabfaf4eec4abaea87ea2ca3, - limb1: 0xf6bf6a71c3495f9ae2028a34, - limb2: 0x2a24d295a8846bd9, + limb0: 0x6d973cc33a79ba068e6572ad, + limb1: 0xc2fddbd0c013d321cabfbf43, + limb2: 0x249b679f9a94f336, limb3: 0x0 }, r1a1: u384 { - limb0: 0xfb2f2bc763478694a15dfc2e, - limb1: 0x38d528885bba2e190aaa02f3, - limb2: 0x196d590b980b101, + limb0: 0xe20f26b34d3756b2b9519351, + limb1: 0xde793f45fed2b6ad4576aaf8, + limb2: 0x2cc11b280706670a, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x35f5f81a7c7ec49f8c3dc645, - limb1: 0xb90ca9592134132890a99d78, - limb2: 0x22bff1d276aa2bcf, + limb0: 0x4360e486f47a872ae0460f44, + limb1: 0x7bb35bfed6fcfcf8779029e1, + limb2: 0x1390b4c7cb6b52f1, limb3: 0x0 }, r0a1: u384 { - limb0: 0x97cd707dc776712bc926b929, - limb1: 0x64108dec3df660795a63cf1e, - limb2: 0x25ae1d0513365b49, + limb0: 0xa628a0a5b10cbbd6c74c24ee, + limb1: 0x7470f4707a0cc892ebefded7, + limb2: 0x1ff4ca8749a8104e, limb3: 0x0 }, r1a0: u384 { - limb0: 0x8e82d9ed898ac1359c937a19, - limb1: 0xfe0d70aa63e32b58b0f2b7a1, - limb2: 0x49aff99ff261860, + limb0: 0xff60a007ec6c8b1e83574f3d, + limb1: 0xce3526917a6268d71609c0a1, + limb2: 0x3016dc03227dad67, limb3: 0x0 }, r1a1: u384 { - limb0: 0xcc5fc19b00b32ba7e3981121, - limb1: 0x4f23dae4b2b4bba5f212fd27, - limb2: 0x227e43052bc9ad14, + limb0: 0x3989e237ecb0bc27e6ad5d37, + limb1: 0x91acde41c342e92417210e02, + limb2: 0x2c602bf496b1e2b8, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x7717608ae03725f04e261adf, - limb1: 0x108d9246a38bc0ef1cde972, - limb2: 0x21ad9bf0d0a915fc, + limb0: 0x103a372c78fa5b2a67d01204, + limb1: 0x675f1cbc7aebe1140e8bed2a, + limb2: 0x2532e98456a291c3, limb3: 0x0 }, r0a1: u384 { - limb0: 0xd2bea690b21e93b68bf61af8, - limb1: 0x51edde55d3fe7570a0f31958, - limb2: 0x62c72bac3bc8d9a, + limb0: 0xc0be03786bd147df08fa1ece, + limb1: 0x7878592e1699337b543a6fa2, + limb2: 0x9e2390310f5b3d7, limb3: 0x0 }, r1a0: u384 { - limb0: 0xbabfaf4eec4abaea87ea2ca3, - limb1: 0xf6bf6a71c3495f9ae2028a34, - limb2: 0x2a24d295a8846bd9, + limb0: 0x6d973cc33a79ba068e6572ad, + limb1: 0xc2fddbd0c013d321cabfbf43, + limb2: 0x249b679f9a94f336, limb3: 0x0 }, r1a1: u384 { - limb0: 0xfb2f2bc763478694a15dfc2e, - limb1: 0x38d528885bba2e190aaa02f3, - limb2: 0x196d590b980b101, + limb0: 0xe20f26b34d3756b2b9519351, + limb1: 0xde793f45fed2b6ad4576aaf8, + limb2: 0x2cc11b280706670a, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xf2ef55c3e7a2ab3b3e68a8fa, - limb1: 0x756161434cb73472867da144, - limb2: 0x21ed770496313905, + limb0: 0x551986dc96f0443f7ac4ba73, + limb1: 0x78107a0c01ea8e3f9bd2e6fd, + limb2: 0x201da6796dee986f, limb3: 0x0 }, r0a1: u384 { - limb0: 0x117cd6b7af4ca6c20b00cce8, - limb1: 0x8a9aa91334262d879dbafaf4, - limb2: 0xaea5f6e3bd6c53d, + limb0: 0xb29fe7d173b13e6ed7b96297, + limb1: 0x77342f3c7dfec27fe1753e85, + limb2: 0x1fa36d6151f8156e, limb3: 0x0 }, r1a0: u384 { - limb0: 0x8b09f725efa2c3eca9809fd5, - limb1: 0x562365c413795f69001812cf, - limb2: 0x25be376f5f827022, + limb0: 0xcfbc59734fa247fead294d84, + limb1: 0x95cf28f410134c75494cc333, + limb2: 0x2fdd98603896fb30, limb3: 0x0 }, r1a1: u384 { - limb0: 0x596e9bd43f459d872a37ac02, - limb1: 0xabf90c55eae7c934b27ee42f, - limb2: 0x1b3cd0eff89e7679, + limb0: 0x225b0b0fef9e6d36d471d78e, + limb1: 0x278c8534902d21f77aef3522, + limb2: 0xe42d7fa7de4d6c8, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xf2ef55c3e7a2ab3b3e68a8fa, - limb1: 0x756161434cb73472867da144, - limb2: 0x21ed770496313905, + limb0: 0x551986dc96f0443f7ac4ba73, + limb1: 0x78107a0c01ea8e3f9bd2e6fd, + limb2: 0x201da6796dee986f, limb3: 0x0 }, r0a1: u384 { - limb0: 0x117cd6b7af4ca6c20b00cce8, - limb1: 0x8a9aa91334262d879dbafaf4, - limb2: 0xaea5f6e3bd6c53d, + limb0: 0xb29fe7d173b13e6ed7b96297, + limb1: 0x77342f3c7dfec27fe1753e85, + limb2: 0x1fa36d6151f8156e, limb3: 0x0 }, r1a0: u384 { - limb0: 0x8b09f725efa2c3eca9809fd5, - limb1: 0x562365c413795f69001812cf, - limb2: 0x25be376f5f827022, + limb0: 0xcfbc59734fa247fead294d84, + limb1: 0x95cf28f410134c75494cc333, + limb2: 0x2fdd98603896fb30, limb3: 0x0 }, r1a1: u384 { - limb0: 0x596e9bd43f459d872a37ac02, - limb1: 0xabf90c55eae7c934b27ee42f, - limb2: 0x1b3cd0eff89e7679, + limb0: 0x225b0b0fef9e6d36d471d78e, + limb1: 0x278c8534902d21f77aef3522, + limb2: 0xe42d7fa7de4d6c8, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x3fce6b09e2ca524bff0eeac4, - limb1: 0x93af651ffc3b9b1b976e7be0, - limb2: 0x2ca1b493b4003156, + limb0: 0xd524080ad04473596afdaafb, + limb1: 0x9da4392d65be1f8372c18a53, + limb2: 0xbccb6baf45de67c, limb3: 0x0 }, r0a1: u384 { - limb0: 0x947d2094b77c80f4c91c220b, - limb1: 0x74abbcfc6c38d8cd6ad5a41, - limb2: 0x261b69a022463e6a, + limb0: 0x336813e1fb5e17e81b5b051b, + limb1: 0xe98e855ed4992521f93709a4, + limb2: 0x297b055bd5622a18, limb3: 0x0 }, r1a0: u384 { - limb0: 0x1f3368f88df37e70b2188573, - limb1: 0xd702a9fc87088613fbfe416c, - limb2: 0x150f72dd0211494e, + limb0: 0x2e761701f878006486dedec1, + limb1: 0x677ff8e5f6b82a95401407f, + limb2: 0x2f5725fecfef8317, limb3: 0x0 }, r1a1: u384 { - limb0: 0xb94a04586bb960f511813238, - limb1: 0x4b3f1692e2871971d49983e0, - limb2: 0x193dd0d29af18f49, + limb0: 0x839358e9dd8ffc54f27fca9c, + limb1: 0xa4a0948db4162fdf44aee0f6, + limb2: 0x2849739e5c4e2ee3, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x3fce6b09e2ca524bff0eeac4, - limb1: 0x93af651ffc3b9b1b976e7be0, - limb2: 0x2ca1b493b4003156, + limb0: 0xd524080ad04473596afdaafb, + limb1: 0x9da4392d65be1f8372c18a53, + limb2: 0xbccb6baf45de67c, limb3: 0x0 }, r0a1: u384 { - limb0: 0x947d2094b77c80f4c91c220b, - limb1: 0x74abbcfc6c38d8cd6ad5a41, - limb2: 0x261b69a022463e6a, + limb0: 0x336813e1fb5e17e81b5b051b, + limb1: 0xe98e855ed4992521f93709a4, + limb2: 0x297b055bd5622a18, limb3: 0x0 }, r1a0: u384 { - limb0: 0x1f3368f88df37e70b2188573, - limb1: 0xd702a9fc87088613fbfe416c, - limb2: 0x150f72dd0211494e, + limb0: 0x2e761701f878006486dedec1, + limb1: 0x677ff8e5f6b82a95401407f, + limb2: 0x2f5725fecfef8317, limb3: 0x0 }, r1a1: u384 { - limb0: 0xb94a04586bb960f511813238, - limb1: 0x4b3f1692e2871971d49983e0, - limb2: 0x193dd0d29af18f49, + limb0: 0x839358e9dd8ffc54f27fca9c, + limb1: 0xa4a0948db4162fdf44aee0f6, + limb2: 0x2849739e5c4e2ee3, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xdb739b2dd158243cae410f7c, - limb1: 0x413a63cfb2c9cbf67f24e450, - limb2: 0x14b3ea4677ddef2e, + limb0: 0xc9cde220c427e6e795c276ea, + limb1: 0xf16a4bf65aa097b4b2102d3a, + limb2: 0x107f879bc0743525, limb3: 0x0 }, r0a1: u384 { - limb0: 0x372718362703e38f19229e44, - limb1: 0x727a5cc770c484d7688bcce9, - limb2: 0x273efac3992ae47f, + limb0: 0x5edbca4d3c47278b7e543edc, + limb1: 0xe6280d0a1160bc4062c712a2, + limb2: 0xd65ce18e50f6e9f, limb3: 0x0 }, r1a0: u384 { - limb0: 0x9d4fd01fd291f3f7a1db05c6, - limb1: 0x7f07573d3797ea104b0ee399, - limb2: 0x994cf4ad17252fe, + limb0: 0x922d89859e41d74f44066e94, + limb1: 0x92d65b7ea0039b0163ab463, + limb2: 0x233cfba3a88b3b44, limb3: 0x0 }, r1a1: u384 { - limb0: 0x3e9ce6999dee2ae2006f2769, - limb1: 0xec7f94297626f10a29a7c86, - limb2: 0x915996bb045ae1e, + limb0: 0xbaceedcb5732d6a04a4a3ba2, + limb1: 0xe586d3e9d7583a9b9956674c, + limb2: 0x1b35c7bee23e7274, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xdb739b2dd158243cae410f7c, - limb1: 0x413a63cfb2c9cbf67f24e450, - limb2: 0x14b3ea4677ddef2e, + limb0: 0xc9cde220c427e6e795c276ea, + limb1: 0xf16a4bf65aa097b4b2102d3a, + limb2: 0x107f879bc0743525, limb3: 0x0 }, r0a1: u384 { - limb0: 0x372718362703e38f19229e44, - limb1: 0x727a5cc770c484d7688bcce9, - limb2: 0x273efac3992ae47f, + limb0: 0x5edbca4d3c47278b7e543edc, + limb1: 0xe6280d0a1160bc4062c712a2, + limb2: 0xd65ce18e50f6e9f, limb3: 0x0 }, r1a0: u384 { - limb0: 0x9d4fd01fd291f3f7a1db05c6, - limb1: 0x7f07573d3797ea104b0ee399, - limb2: 0x994cf4ad17252fe, + limb0: 0x922d89859e41d74f44066e94, + limb1: 0x92d65b7ea0039b0163ab463, + limb2: 0x233cfba3a88b3b44, limb3: 0x0 }, r1a1: u384 { - limb0: 0x3e9ce6999dee2ae2006f2769, - limb1: 0xec7f94297626f10a29a7c86, - limb2: 0x915996bb045ae1e, + limb0: 0xbaceedcb5732d6a04a4a3ba2, + limb1: 0xe586d3e9d7583a9b9956674c, + limb2: 0x1b35c7bee23e7274, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x9b538b34a9c40fe45f9a4e82, - limb1: 0x226b7b64a3080c5d2a5d505f, - limb2: 0x1a227e370cf929ec, + limb0: 0x7dc2872c3517c1e449fc4122, + limb1: 0x705ab5ca7266a5ffa614625b, + limb2: 0x166c4d11551f6f6d, limb3: 0x0 }, r0a1: u384 { - limb0: 0xfefcfdffc1a7ea567e1ced7, - limb1: 0x4357c71f7d2368d2571ea106, - limb2: 0x9c7e3d1b33e1de1, + limb0: 0x492f67a4ba40719208859c1b, + limb1: 0x7a676c7fc4295e5aab645973, + limb2: 0x2d03ea35dec3ab5d, limb3: 0x0 }, r1a0: u384 { - limb0: 0xfc75b05671d3754c2d380c6b, - limb1: 0x1dbbdf501314ba97a18b41bc, - limb2: 0x11731573ff89df69, + limb0: 0x529cb1e346af0b40e0e2e6b9, + limb1: 0xe42e697812ceb8a7c51f85b3, + limb2: 0x2b5f25393ba2c781, limb3: 0x0 }, r1a1: u384 { - limb0: 0x29240244e7bdc0ac6ef2b48e, - limb1: 0xb0929b93b4faccaae2a2dff8, - limb2: 0x5257f92e6098191, + limb0: 0x3d2f685444515b3441d54cee, + limb1: 0xed7dcc8e1781c6d4006bba3f, + limb2: 0x26f0fac3db26fe20, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x9b538b34a9c40fe45f9a4e82, - limb1: 0x226b7b64a3080c5d2a5d505f, - limb2: 0x1a227e370cf929ec, + limb0: 0x7dc2872c3517c1e449fc4122, + limb1: 0x705ab5ca7266a5ffa614625b, + limb2: 0x166c4d11551f6f6d, limb3: 0x0 }, r0a1: u384 { - limb0: 0xfefcfdffc1a7ea567e1ced7, - limb1: 0x4357c71f7d2368d2571ea106, - limb2: 0x9c7e3d1b33e1de1, + limb0: 0x492f67a4ba40719208859c1b, + limb1: 0x7a676c7fc4295e5aab645973, + limb2: 0x2d03ea35dec3ab5d, limb3: 0x0 }, r1a0: u384 { - limb0: 0xfc75b05671d3754c2d380c6b, - limb1: 0x1dbbdf501314ba97a18b41bc, - limb2: 0x11731573ff89df69, + limb0: 0x529cb1e346af0b40e0e2e6b9, + limb1: 0xe42e697812ceb8a7c51f85b3, + limb2: 0x2b5f25393ba2c781, limb3: 0x0 }, r1a1: u384 { - limb0: 0x29240244e7bdc0ac6ef2b48e, - limb1: 0xb0929b93b4faccaae2a2dff8, - limb2: 0x5257f92e6098191, + limb0: 0x3d2f685444515b3441d54cee, + limb1: 0xed7dcc8e1781c6d4006bba3f, + limb2: 0x26f0fac3db26fe20, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x788800180d7e841e21c3d7d0, - limb1: 0x1da10a8c05db33697713be7d, - limb2: 0x247591fc38788647, + limb0: 0x1e691060b09334f4d4d11564, + limb1: 0xc2f23d460e32ab29aac9a462, + limb2: 0x1f52946e8ab57b9d, limb3: 0x0 }, r0a1: u384 { - limb0: 0xfb75fd59f94b3f7c78af1beb, - limb1: 0xd4d22ec81cdbf353aa42bacd, - limb2: 0x2e7eebd0cde27728, + limb0: 0xb8f6cec3d46206bf11579e06, + limb1: 0x6b82224b4c502934276477ce, + limb2: 0x4263847a3546583, limb3: 0x0 }, r1a0: u384 { - limb0: 0x16d5db1eb0818e159dfc805c, - limb1: 0x97b4adb6dac1a22c0dcc84ad, - limb2: 0x19594c238a0f5afa, + limb0: 0x3e02aba94130839fdfb531d3, + limb1: 0x89b37e5ce7cd94f86280b704, + limb2: 0x25f502760510099, limb3: 0x0 }, r1a1: u384 { - limb0: 0x7cdbca4cf71e4a9a1c5f9d61, - limb1: 0xe24b5b170c6ca2377e08dcaa, - limb2: 0xd84480c8f4ef763, + limb0: 0xef21ddf9cebf3491c94329fd, + limb1: 0xb2577ec6fa2817d5e8a2aaad, + limb2: 0x2e0a1cc9617d5d85, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x7dbce83d1e427852978d46bf, - limb1: 0x9e4ff0c30b6ee43e4ba0b527, - limb2: 0x248d73077bc888b3, + limb0: 0x8ccc1f1b7b7c84a2fb81a4d1, + limb1: 0x1fd835bf3d332347a842499, + limb2: 0x105f1e2419d5da43, limb3: 0x0 }, r0a1: u384 { - limb0: 0x9f8ded9d445ea53124b02ed5, - limb1: 0x55091011f98c5760992b6999, - limb2: 0x203db8c1baa3790c, + limb0: 0xce0594565bc3f6746917fac1, + limb1: 0x10f45021d35f29b40306afa2, + limb2: 0x175b0196bc37d977, limb3: 0x0 }, r1a0: u384 { - limb0: 0x37635287385d3f35caed0c73, - limb1: 0xa9f8923fe047e0c3fc13fc99, - limb2: 0x113948f9cac92cf, + limb0: 0x3bfc77f3df29fdb7446275fd, + limb1: 0x761a984dcc263e2a7230a42c, + limb2: 0xdc47d8f8fd9a377, limb3: 0x0 }, r1a1: u384 { - limb0: 0x6048d5b0b69dd5cff8d88bf1, - limb1: 0xa1aaa4fff591e8a4a5b6eb38, - limb2: 0x21bf5474795b5e91, + limb0: 0x5310a14e6b20a87bded6741b, + limb1: 0xaf75a4d44565ed067c32308e, + limb2: 0x1745ddfc2f0f2db5, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x788800180d7e841e21c3d7d0, - limb1: 0x1da10a8c05db33697713be7d, - limb2: 0x247591fc38788647, + limb0: 0x1e691060b09334f4d4d11564, + limb1: 0xc2f23d460e32ab29aac9a462, + limb2: 0x1f52946e8ab57b9d, limb3: 0x0 }, r0a1: u384 { - limb0: 0xfb75fd59f94b3f7c78af1beb, - limb1: 0xd4d22ec81cdbf353aa42bacd, - limb2: 0x2e7eebd0cde27728, + limb0: 0xb8f6cec3d46206bf11579e06, + limb1: 0x6b82224b4c502934276477ce, + limb2: 0x4263847a3546583, limb3: 0x0 }, r1a0: u384 { - limb0: 0x16d5db1eb0818e159dfc805c, - limb1: 0x97b4adb6dac1a22c0dcc84ad, - limb2: 0x19594c238a0f5afa, + limb0: 0x3e02aba94130839fdfb531d3, + limb1: 0x89b37e5ce7cd94f86280b704, + limb2: 0x25f502760510099, limb3: 0x0 }, r1a1: u384 { - limb0: 0x7cdbca4cf71e4a9a1c5f9d61, - limb1: 0xe24b5b170c6ca2377e08dcaa, - limb2: 0xd84480c8f4ef763, + limb0: 0xef21ddf9cebf3491c94329fd, + limb1: 0xb2577ec6fa2817d5e8a2aaad, + limb2: 0x2e0a1cc9617d5d85, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x7dbce83d1e427852978d46bf, - limb1: 0x9e4ff0c30b6ee43e4ba0b527, - limb2: 0x248d73077bc888b3, + limb0: 0x8ccc1f1b7b7c84a2fb81a4d1, + limb1: 0x1fd835bf3d332347a842499, + limb2: 0x105f1e2419d5da43, limb3: 0x0 }, r0a1: u384 { - limb0: 0x9f8ded9d445ea53124b02ed5, - limb1: 0x55091011f98c5760992b6999, - limb2: 0x203db8c1baa3790c, + limb0: 0xce0594565bc3f6746917fac1, + limb1: 0x10f45021d35f29b40306afa2, + limb2: 0x175b0196bc37d977, limb3: 0x0 }, r1a0: u384 { - limb0: 0x37635287385d3f35caed0c73, - limb1: 0xa9f8923fe047e0c3fc13fc99, - limb2: 0x113948f9cac92cf, + limb0: 0x3bfc77f3df29fdb7446275fd, + limb1: 0x761a984dcc263e2a7230a42c, + limb2: 0xdc47d8f8fd9a377, limb3: 0x0 }, r1a1: u384 { - limb0: 0x6048d5b0b69dd5cff8d88bf1, - limb1: 0xa1aaa4fff591e8a4a5b6eb38, - limb2: 0x21bf5474795b5e91, + limb0: 0x5310a14e6b20a87bded6741b, + limb1: 0xaf75a4d44565ed067c32308e, + limb2: 0x1745ddfc2f0f2db5, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x85f4347aef153eb51e5b79a0, - limb1: 0x3918eb298bd2421b56746df6, - limb2: 0x13158683d0c090e8, + limb0: 0x9002fa9c872aa1591cb2e83c, + limb1: 0x18092dea89807d07c96f5cee, + limb2: 0x5e775cc8d0e2333, limb3: 0x0 }, r0a1: u384 { - limb0: 0xa09477c306698215cde2c960, - limb1: 0x22777ba1866c1ef9be4f76de, - limb2: 0xc43f8cb6c70b1f7, + limb0: 0x6e55603f23c1e2f40ecbc3be, + limb1: 0x9ef6bba8f2ca071759eee99a, + limb2: 0x66cf6e10d463eb6, limb3: 0x0 }, r1a0: u384 { - limb0: 0x681a9cbce7783357feae4359, - limb1: 0x2782cf3183f2f2ec51674f1f, - limb2: 0x28e7e1094c147df3, + limb0: 0x30131216b55fd9bf4d2cbe86, + limb1: 0xbaa5fde208b9fceda4ed5946, + limb2: 0xdbb530576beae47, limb3: 0x0 }, r1a1: u384 { - limb0: 0x5317355bc83adb4d9b686e9d, - limb1: 0x7c2ab43615d76787568e48e3, - limb2: 0xc234c691a7a1796, + limb0: 0xe09b26e7b2fe48a7f274d02d, + limb1: 0x9e41ae04207fa2eb5f641fed, + limb2: 0x511a273c2863628, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x85f4347aef153eb51e5b79a0, - limb1: 0x3918eb298bd2421b56746df6, - limb2: 0x13158683d0c090e8, + limb0: 0x9002fa9c872aa1591cb2e83c, + limb1: 0x18092dea89807d07c96f5cee, + limb2: 0x5e775cc8d0e2333, limb3: 0x0 }, r0a1: u384 { - limb0: 0xa09477c306698215cde2c960, - limb1: 0x22777ba1866c1ef9be4f76de, - limb2: 0xc43f8cb6c70b1f7, + limb0: 0x6e55603f23c1e2f40ecbc3be, + limb1: 0x9ef6bba8f2ca071759eee99a, + limb2: 0x66cf6e10d463eb6, limb3: 0x0 }, r1a0: u384 { - limb0: 0x681a9cbce7783357feae4359, - limb1: 0x2782cf3183f2f2ec51674f1f, - limb2: 0x28e7e1094c147df3, + limb0: 0x30131216b55fd9bf4d2cbe86, + limb1: 0xbaa5fde208b9fceda4ed5946, + limb2: 0xdbb530576beae47, limb3: 0x0 }, r1a1: u384 { - limb0: 0x5317355bc83adb4d9b686e9d, - limb1: 0x7c2ab43615d76787568e48e3, - limb2: 0xc234c691a7a1796, + limb0: 0xe09b26e7b2fe48a7f274d02d, + limb1: 0x9e41ae04207fa2eb5f641fed, + limb2: 0x511a273c2863628, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x517d5a713823726d6deca48c, - limb1: 0xc3fbf6f6afca8caa5c289551, - limb2: 0x1611a3b7e317d9ac, + limb0: 0x9e446957265af1f6cdcb9e15, + limb1: 0x6c10753b3e38581919c0cc4d, + limb2: 0x3049507b97cd2ae3, limb3: 0x0 }, r0a1: u384 { - limb0: 0xd7d54c155201d22b729af8c3, - limb1: 0x77e8af9875692a553cd7fb73, - limb2: 0x20ccbc95e463f979, + limb0: 0x81d9c4ec56b0c577f646eb40, + limb1: 0x2e5a0918579e398c48776ad2, + limb2: 0x3d00590d1493ac8, limb3: 0x0 }, r1a0: u384 { - limb0: 0x189ccee9bd5dc6732d1c00b8, - limb1: 0x1c82036ec22c94137144cb6b, - limb2: 0x1ac88f60150cc9ea, + limb0: 0xa5ffc6ee3bc132f1681fe84f, + limb1: 0x6906fa22a16540a098a498a7, + limb2: 0xd23995e1c7ff58d, limb3: 0x0 }, r1a1: u384 { - limb0: 0xd05790d5d1890e2f131dd4d0, - limb1: 0xc7783b126304a15573562a5b, - limb2: 0xa0197156b956945, + limb0: 0x99b1ea789cd8357bbc2d09d8, + limb1: 0x2fde0375bb34e500582e9729, + limb2: 0xfad5daa8506bc1, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xc5c54c8d82ae0f2ca2564535, - limb1: 0x69c4be89ff825b0b0e2fb34b, - limb2: 0x251801f4f4d3450f, + limb0: 0xc627fa78d0f6604cfc6262bc, + limb1: 0x1a3f0695ff6e8412d1ea0eda, + limb2: 0x1b1754c1a9e0cea9, limb3: 0x0 }, r0a1: u384 { - limb0: 0x2996f0b7d069826e7c9e6880, - limb1: 0xb948f45c332c751168ad0557, - limb2: 0x2bf9093c6f78002c, + limb0: 0x8fbb7ca95e11dda5d5f44cc0, + limb1: 0xaab02dc7e290087c8d9224dc, + limb2: 0x4c39cf6e88ea4d8, limb3: 0x0 }, r1a0: u384 { - limb0: 0xd2ebdb2e91659a8f7280dd18, - limb1: 0x903ca33e76143ac711247899, - limb2: 0x12781141f1fa54f4, + limb0: 0x66b308f30b0a27dfb743a053, + limb1: 0xc24b32150e094160eb1e6e20, + limb2: 0x16091aac6ef81c7, limb3: 0x0 }, r1a1: u384 { - limb0: 0x7da34384953f663296ddf9d8, - limb1: 0xa6284c5d6454f8193f69b260, - limb2: 0x16a6e7813a5c376a, + limb0: 0x7e3aeab40b6fb8507a19662f, + limb1: 0x8fa259d1ce6d3db3ba6cbcd, + limb2: 0x2c175175b8686be5, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x517d5a713823726d6deca48c, - limb1: 0xc3fbf6f6afca8caa5c289551, - limb2: 0x1611a3b7e317d9ac, + limb0: 0x9e446957265af1f6cdcb9e15, + limb1: 0x6c10753b3e38581919c0cc4d, + limb2: 0x3049507b97cd2ae3, limb3: 0x0 }, r0a1: u384 { - limb0: 0xd7d54c155201d22b729af8c3, - limb1: 0x77e8af9875692a553cd7fb73, - limb2: 0x20ccbc95e463f979, + limb0: 0x81d9c4ec56b0c577f646eb40, + limb1: 0x2e5a0918579e398c48776ad2, + limb2: 0x3d00590d1493ac8, limb3: 0x0 }, r1a0: u384 { - limb0: 0x189ccee9bd5dc6732d1c00b8, - limb1: 0x1c82036ec22c94137144cb6b, - limb2: 0x1ac88f60150cc9ea, + limb0: 0xa5ffc6ee3bc132f1681fe84f, + limb1: 0x6906fa22a16540a098a498a7, + limb2: 0xd23995e1c7ff58d, limb3: 0x0 }, r1a1: u384 { - limb0: 0xd05790d5d1890e2f131dd4d0, - limb1: 0xc7783b126304a15573562a5b, - limb2: 0xa0197156b956945, + limb0: 0x99b1ea789cd8357bbc2d09d8, + limb1: 0x2fde0375bb34e500582e9729, + limb2: 0xfad5daa8506bc1, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xc5c54c8d82ae0f2ca2564535, - limb1: 0x69c4be89ff825b0b0e2fb34b, - limb2: 0x251801f4f4d3450f, + limb0: 0xc627fa78d0f6604cfc6262bc, + limb1: 0x1a3f0695ff6e8412d1ea0eda, + limb2: 0x1b1754c1a9e0cea9, limb3: 0x0 }, r0a1: u384 { - limb0: 0x2996f0b7d069826e7c9e6880, - limb1: 0xb948f45c332c751168ad0557, - limb2: 0x2bf9093c6f78002c, + limb0: 0x8fbb7ca95e11dda5d5f44cc0, + limb1: 0xaab02dc7e290087c8d9224dc, + limb2: 0x4c39cf6e88ea4d8, limb3: 0x0 }, r1a0: u384 { - limb0: 0xd2ebdb2e91659a8f7280dd18, - limb1: 0x903ca33e76143ac711247899, - limb2: 0x12781141f1fa54f4, + limb0: 0x66b308f30b0a27dfb743a053, + limb1: 0xc24b32150e094160eb1e6e20, + limb2: 0x16091aac6ef81c7, limb3: 0x0 }, r1a1: u384 { - limb0: 0x7da34384953f663296ddf9d8, - limb1: 0xa6284c5d6454f8193f69b260, - limb2: 0x16a6e7813a5c376a, + limb0: 0x7e3aeab40b6fb8507a19662f, + limb1: 0x8fa259d1ce6d3db3ba6cbcd, + limb2: 0x2c175175b8686be5, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xf984b297951a67f0caef5718, - limb1: 0x557e4fb901e9725b38371d40, - limb2: 0xfbffe8728da135f, + limb0: 0x391e6f951049b131d70e651, + limb1: 0x5c0f54485e635304e14ce30e, + limb2: 0x221ee8dc68dde949, limb3: 0x0 }, r0a1: u384 { - limb0: 0x51a6a16bc5e2b48abffed608, - limb1: 0x9944966f54a785c9db0c06ac, - limb2: 0x2d5574066dd099ed, + limb0: 0xac8ba155c82a61103e2963c1, + limb1: 0x8559d1265b1f4418a886b3aa, + limb2: 0x140ce9c3c2eb5374, limb3: 0x0 }, r1a0: u384 { - limb0: 0xaedfdfe1766bf6a79244d9bc, - limb1: 0x9478d065b41bbafe589d9fe5, - limb2: 0xf18bd4cd414ed8a, + limb0: 0x73ebb164ba66b89f6ac09079, + limb1: 0x3699654a08147615c793b6b5, + limb2: 0xaa97a901c3147f3, limb3: 0x0 }, r1a1: u384 { - limb0: 0xba0eacf5aa687cd2a5510ac6, - limb1: 0x6d6c9cfccf4c173b1eb839c9, - limb2: 0x9466605202791ba, + limb0: 0x9666d2cab8edbbffe6ede238, + limb1: 0xc28b607bd98c0f9789de1cb4, + limb2: 0xcb0f83e0497f81e, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xf984b297951a67f0caef5718, - limb1: 0x557e4fb901e9725b38371d40, - limb2: 0xfbffe8728da135f, + limb0: 0x391e6f951049b131d70e651, + limb1: 0x5c0f54485e635304e14ce30e, + limb2: 0x221ee8dc68dde949, limb3: 0x0 }, r0a1: u384 { - limb0: 0x51a6a16bc5e2b48abffed608, - limb1: 0x9944966f54a785c9db0c06ac, - limb2: 0x2d5574066dd099ed, + limb0: 0xac8ba155c82a61103e2963c1, + limb1: 0x8559d1265b1f4418a886b3aa, + limb2: 0x140ce9c3c2eb5374, limb3: 0x0 }, r1a0: u384 { - limb0: 0xaedfdfe1766bf6a79244d9bc, - limb1: 0x9478d065b41bbafe589d9fe5, - limb2: 0xf18bd4cd414ed8a, + limb0: 0x73ebb164ba66b89f6ac09079, + limb1: 0x3699654a08147615c793b6b5, + limb2: 0xaa97a901c3147f3, limb3: 0x0 }, r1a1: u384 { - limb0: 0xba0eacf5aa687cd2a5510ac6, - limb1: 0x6d6c9cfccf4c173b1eb839c9, - limb2: 0x9466605202791ba, + limb0: 0x9666d2cab8edbbffe6ede238, + limb1: 0xc28b607bd98c0f9789de1cb4, + limb2: 0xcb0f83e0497f81e, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x7c01dbde89ebfc5c28cff17e, - limb1: 0x571be6f50808970f261ef221, - limb2: 0x9d3767f1b588381, + limb0: 0xd9cb0120b4122fb011495b79, + limb1: 0xb13527eef1359006fb9859de, + limb2: 0x240401f012c778a3, limb3: 0x0 }, r0a1: u384 { - limb0: 0xd8443431982515b5d9967ec4, - limb1: 0xa41c1ed9d7d6aa192a9bd7d0, - limb2: 0x2b7d4598c93923e0, + limb0: 0x9cc1ae143c291244678b0671, + limb1: 0x3f4bdf8e0d1bb7d8d2c700d7, + limb2: 0x12fc2e1a9bd4d4fb, limb3: 0x0 }, r1a0: u384 { - limb0: 0x7797fd008436363caadf446b, - limb1: 0x487e3efc987d42b18b216344, - limb2: 0x14edff0762399039, + limb0: 0x4d62fe7db900df0085dff093, + limb1: 0x424c17123aa393f8a5520eb9, + limb2: 0x8df0bf255c22f60, limb3: 0x0 }, r1a1: u384 { - limb0: 0x8ccc6dd20a5d052858e75495, - limb1: 0x23614b9d08a9d2c9d0f73d59, - limb2: 0x2b0d2afe3930bdff, + limb0: 0x4caa438a70cd1b3862c1618e, + limb1: 0x3e479829171b3521b4952056, + limb2: 0x828e185bcf93935, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x7c01dbde89ebfc5c28cff17e, - limb1: 0x571be6f50808970f261ef221, - limb2: 0x9d3767f1b588381, + limb0: 0xd9cb0120b4122fb011495b79, + limb1: 0xb13527eef1359006fb9859de, + limb2: 0x240401f012c778a3, limb3: 0x0 }, r0a1: u384 { - limb0: 0xd8443431982515b5d9967ec4, - limb1: 0xa41c1ed9d7d6aa192a9bd7d0, - limb2: 0x2b7d4598c93923e0, + limb0: 0x9cc1ae143c291244678b0671, + limb1: 0x3f4bdf8e0d1bb7d8d2c700d7, + limb2: 0x12fc2e1a9bd4d4fb, limb3: 0x0 }, r1a0: u384 { - limb0: 0x7797fd008436363caadf446b, - limb1: 0x487e3efc987d42b18b216344, - limb2: 0x14edff0762399039, + limb0: 0x4d62fe7db900df0085dff093, + limb1: 0x424c17123aa393f8a5520eb9, + limb2: 0x8df0bf255c22f60, limb3: 0x0 }, r1a1: u384 { - limb0: 0x8ccc6dd20a5d052858e75495, - limb1: 0x23614b9d08a9d2c9d0f73d59, - limb2: 0x2b0d2afe3930bdff, + limb0: 0x4caa438a70cd1b3862c1618e, + limb1: 0x3e479829171b3521b4952056, + limb2: 0x828e185bcf93935, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xe954303bceaa3af4b01bab7e, - limb1: 0x3dfd834907e9352328961802, - limb2: 0x462ad3525fc8191, + limb0: 0xb862a4ff37044dbe06e91363, + limb1: 0xaf8e301a655e3e4a00bc528, + limb2: 0x1b35ba3ad1783bfa, limb3: 0x0 }, r0a1: u384 { - limb0: 0x40fba064069382294d08bf6c, - limb1: 0xd37c77ff724f7cbab7d2b992, - limb2: 0x32290a67e4ff85c, + limb0: 0x4d069af037c7fa2d75a8135b, + limb1: 0xe23f93edb80bda1ddf6c3d8b, + limb2: 0x734462d6e70bd6, limb3: 0x0 }, r1a0: u384 { - limb0: 0xbe19fca8aa909655ed8c0a6b, - limb1: 0xa15e5cfe442481e1c46c9a82, - limb2: 0x1cd0909b13cfcd19, + limb0: 0xca21499f48088a3152f20477, + limb1: 0xfb6ff15c58fd656c3a068ba7, + limb2: 0x129921fd1af30952, limb3: 0x0 }, r1a1: u384 { - limb0: 0x3c88432df412f82dbee993fd, - limb1: 0x7bce2ecc80c5189b60a28673, - limb2: 0x1eb25e75ed13eb0e, + limb0: 0xe182d8890b92a8c636cfc2d5, + limb1: 0xcf37e9714eabfb65cd257a30, + limb2: 0x19c5b0d5affa1c21, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xe954303bceaa3af4b01bab7e, - limb1: 0x3dfd834907e9352328961802, - limb2: 0x462ad3525fc8191, + limb0: 0xb862a4ff37044dbe06e91363, + limb1: 0xaf8e301a655e3e4a00bc528, + limb2: 0x1b35ba3ad1783bfa, limb3: 0x0 }, r0a1: u384 { - limb0: 0x40fba064069382294d08bf6c, - limb1: 0xd37c77ff724f7cbab7d2b992, - limb2: 0x32290a67e4ff85c, + limb0: 0x4d069af037c7fa2d75a8135b, + limb1: 0xe23f93edb80bda1ddf6c3d8b, + limb2: 0x734462d6e70bd6, limb3: 0x0 }, r1a0: u384 { - limb0: 0xbe19fca8aa909655ed8c0a6b, - limb1: 0xa15e5cfe442481e1c46c9a82, - limb2: 0x1cd0909b13cfcd19, + limb0: 0xca21499f48088a3152f20477, + limb1: 0xfb6ff15c58fd656c3a068ba7, + limb2: 0x129921fd1af30952, limb3: 0x0 }, r1a1: u384 { - limb0: 0x3c88432df412f82dbee993fd, - limb1: 0x7bce2ecc80c5189b60a28673, - limb2: 0x1eb25e75ed13eb0e, + limb0: 0xe182d8890b92a8c636cfc2d5, + limb1: 0xcf37e9714eabfb65cd257a30, + limb2: 0x19c5b0d5affa1c21, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xcea2f6e5e8eaad5b538f01db, - limb1: 0x8dea65c050e15e9aa5437b62, - limb2: 0x1b5bd1a495e21758, + limb0: 0x8d30e8f01b6acf088a9bd5a6, + limb1: 0xb440d1794eef76a66e0fdb32, + limb2: 0x16655a68127499b0, limb3: 0x0 }, r0a1: u384 { - limb0: 0xb4db62a53d9a398324405e68, - limb1: 0xad0f06b72f2565efe622da83, - limb2: 0x220cbd3274fc1b6b, + limb0: 0xf12061678632cd148d1be332, + limb1: 0x3aa5b5ac85bb5c32e7c93d40, + limb2: 0x2f885ae792f2779e, limb3: 0x0 }, r1a0: u384 { - limb0: 0x1b064ea32634fd8409eae3, - limb1: 0x903faf351acead528396d033, - limb2: 0x1d920157a7d94e91, + limb0: 0x1de53ae1c1e6c599d4a495e4, + limb1: 0x8ef188b9abb6e97a0375dee6, + limb2: 0x9507d99d56d4d1d, limb3: 0x0 }, r1a1: u384 { - limb0: 0xecab0aed5a803304688ddf26, - limb1: 0x2138ad9558f0e380424e1f44, - limb2: 0x5bd3cf13e418e35, + limb0: 0x9a83ce73013109f348314267, + limb1: 0xffd1a4c21374ab0fcece03f4, + limb2: 0x7570f2346d80d71, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x39f24c705ebe39cff385568e, - limb1: 0x1613b37da28bdd8bd37da91, - limb2: 0x2f64a6c0d2693414, + limb0: 0xffb932597fa8bdce8de82fd9, + limb1: 0xc9265a1ac66f25b59b4c7222, + limb2: 0x2a43f963f80117be, limb3: 0x0 }, r0a1: u384 { - limb0: 0xd04dd009b166d107f6aabb01, - limb1: 0xd4d59fdd5e6c38eb996be2db, - limb2: 0x1a54a41d3891f1c7, + limb0: 0x9b6456669db38b591a35fa4e, + limb1: 0x31aa367c72c0f07897f7d4a4, + limb2: 0x28d40172399c3b03, limb3: 0x0 }, r1a0: u384 { - limb0: 0x754134324146ac28d3ad7f6, - limb1: 0x874f7880ab195964556821dd, - limb2: 0xffb862f5266b7bf, + limb0: 0xca95f93e068ff337f73f54d5, + limb1: 0xabbf9fdc66cc4b10f9da741, + limb2: 0x22f1e27d902fc3ff, limb3: 0x0 }, r1a1: u384 { - limb0: 0x7b3abc387132b620fb1b6043, - limb1: 0x65283a0ff274383519f4cd83, - limb2: 0x9bf8f972422f23b, + limb0: 0xd12f8d49ae60289c48850a68, + limb1: 0xc27491d681fc8ec1edf9d749, + limb2: 0x14e28f1895e25047, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xcea2f6e5e8eaad5b538f01db, - limb1: 0x8dea65c050e15e9aa5437b62, - limb2: 0x1b5bd1a495e21758, + limb0: 0x8d30e8f01b6acf088a9bd5a6, + limb1: 0xb440d1794eef76a66e0fdb32, + limb2: 0x16655a68127499b0, limb3: 0x0 }, r0a1: u384 { - limb0: 0xb4db62a53d9a398324405e68, - limb1: 0xad0f06b72f2565efe622da83, - limb2: 0x220cbd3274fc1b6b, + limb0: 0xf12061678632cd148d1be332, + limb1: 0x3aa5b5ac85bb5c32e7c93d40, + limb2: 0x2f885ae792f2779e, limb3: 0x0 }, r1a0: u384 { - limb0: 0x1b064ea32634fd8409eae3, - limb1: 0x903faf351acead528396d033, - limb2: 0x1d920157a7d94e91, + limb0: 0x1de53ae1c1e6c599d4a495e4, + limb1: 0x8ef188b9abb6e97a0375dee6, + limb2: 0x9507d99d56d4d1d, limb3: 0x0 }, r1a1: u384 { - limb0: 0xecab0aed5a803304688ddf26, - limb1: 0x2138ad9558f0e380424e1f44, - limb2: 0x5bd3cf13e418e35, + limb0: 0x9a83ce73013109f348314267, + limb1: 0xffd1a4c21374ab0fcece03f4, + limb2: 0x7570f2346d80d71, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x39f24c705ebe39cff385568e, - limb1: 0x1613b37da28bdd8bd37da91, - limb2: 0x2f64a6c0d2693414, + limb0: 0xffb932597fa8bdce8de82fd9, + limb1: 0xc9265a1ac66f25b59b4c7222, + limb2: 0x2a43f963f80117be, limb3: 0x0 }, r0a1: u384 { - limb0: 0xd04dd009b166d107f6aabb01, - limb1: 0xd4d59fdd5e6c38eb996be2db, - limb2: 0x1a54a41d3891f1c7, + limb0: 0x9b6456669db38b591a35fa4e, + limb1: 0x31aa367c72c0f07897f7d4a4, + limb2: 0x28d40172399c3b03, limb3: 0x0 }, r1a0: u384 { - limb0: 0x754134324146ac28d3ad7f6, - limb1: 0x874f7880ab195964556821dd, - limb2: 0xffb862f5266b7bf, + limb0: 0xca95f93e068ff337f73f54d5, + limb1: 0xabbf9fdc66cc4b10f9da741, + limb2: 0x22f1e27d902fc3ff, limb3: 0x0 }, r1a1: u384 { - limb0: 0x7b3abc387132b620fb1b6043, - limb1: 0x65283a0ff274383519f4cd83, - limb2: 0x9bf8f972422f23b, + limb0: 0xd12f8d49ae60289c48850a68, + limb1: 0xc27491d681fc8ec1edf9d749, + limb2: 0x14e28f1895e25047, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x92f678bdcc7f682a12265595, - limb1: 0xda500b7e97c338fadc6bd61c, - limb2: 0x2caa43d0f100b369, + limb0: 0x473f1af712fdc704395691fd, + limb1: 0xb051550f381c34c4b0734c3b, + limb2: 0x268983f32c1ff74a, limb3: 0x0 }, r0a1: u384 { - limb0: 0xbd5d202713c44f4413fe2444, - limb1: 0xb49a6d7323a318cd90a4a032, - limb2: 0xe01c4a804a278e0, + limb0: 0xcd3e26d45de18312b60f63b3, + limb1: 0x4b1cf3f0c70a35c9ed0e7627, + limb2: 0x5faf0f8c5417fac, limb3: 0x0 }, r1a0: u384 { - limb0: 0x9bac892f52ede55868b695d6, - limb1: 0x8059e9df8d318625a0237da7, - limb2: 0xc8542cdc7c91844, + limb0: 0x7186248c0f4f620c4db44b27, + limb1: 0xbaee201f71b6213a513c8c05, + limb2: 0x10696dfde75b0f74, limb3: 0x0 }, r1a1: u384 { - limb0: 0x3747f2f113d21b511cbafa08, - limb1: 0xbd3261c29886eec727153274, - limb2: 0x201182ee97daab98, + limb0: 0x47fce5c1d2e0b960d052202, + limb1: 0x12588735814120777f589cc7, + limb2: 0x755d1d035d5e613, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x92f678bdcc7f682a12265595, - limb1: 0xda500b7e97c338fadc6bd61c, - limb2: 0x2caa43d0f100b369, + limb0: 0x473f1af712fdc704395691fd, + limb1: 0xb051550f381c34c4b0734c3b, + limb2: 0x268983f32c1ff74a, limb3: 0x0 }, r0a1: u384 { - limb0: 0xbd5d202713c44f4413fe2444, - limb1: 0xb49a6d7323a318cd90a4a032, - limb2: 0xe01c4a804a278e0, + limb0: 0xcd3e26d45de18312b60f63b3, + limb1: 0x4b1cf3f0c70a35c9ed0e7627, + limb2: 0x5faf0f8c5417fac, limb3: 0x0 }, r1a0: u384 { - limb0: 0x9bac892f52ede55868b695d6, - limb1: 0x8059e9df8d318625a0237da7, - limb2: 0xc8542cdc7c91844, + limb0: 0x7186248c0f4f620c4db44b27, + limb1: 0xbaee201f71b6213a513c8c05, + limb2: 0x10696dfde75b0f74, limb3: 0x0 }, r1a1: u384 { - limb0: 0x3747f2f113d21b511cbafa08, - limb1: 0xbd3261c29886eec727153274, - limb2: 0x201182ee97daab98, + limb0: 0x47fce5c1d2e0b960d052202, + limb1: 0x12588735814120777f589cc7, + limb2: 0x755d1d035d5e613, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x1427ca2d95aec86b18523012, - limb1: 0x7092c66e1dbb7a7b2fb0a2e9, - limb2: 0xcd063254472f5b6, + limb0: 0xb069903d83fafb38587039b1, + limb1: 0x8c9aaa21806e5257331c422c, + limb2: 0x13dd740437a116d8, limb3: 0x0 }, r0a1: u384 { - limb0: 0xc1de693469798ff1020981cb, - limb1: 0x3e8b9ceb7a856a1c6cf37f19, - limb2: 0xeea9f172e14def1, + limb0: 0x49d24e3bc669a61d3ec25caa, + limb1: 0xeca54bbcf540ef02c5af1e2d, + limb2: 0x193a4e0703852e04, limb3: 0x0 }, r1a0: u384 { - limb0: 0xfb0b564b5ca3b8a4d808bb, - limb1: 0xd5352a51824ea9a9b8564e8c, - limb2: 0x26e12f4fe06b03f8, + limb0: 0x40ed8176e59843d8d045473f, + limb1: 0xdb66931824221a92af499752, + limb2: 0x187f887f2aa471b3, limb3: 0x0 }, r1a1: u384 { - limb0: 0x33782b9b99491755eeb9ecde, - limb1: 0x5d56c27facc86e6079a96ee3, - limb2: 0x6c62fa20b6a9bc2, + limb0: 0x5fb9760acf925b445a49c759, + limb1: 0xfc8fbbd94b6f146f5b998e84, + limb2: 0x79720a00d9dea8a, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x7728fec38ff79e0fbdedce93, - limb1: 0xa75bde588cc4681ea24c1106, - limb2: 0x2ec38c5ec2d9e9db, + limb0: 0x9ea0a9193ffeb1be07f5f80b, + limb1: 0xfec5948eaf1002c198e0e6d5, + limb2: 0x2a4574fe23c4019d, limb3: 0x0 }, r0a1: u384 { - limb0: 0x6156e4100d33080911e028ac, - limb1: 0xaf1f11fe9384bb2afd259db0, - limb2: 0x1d694d6864ec5fde, + limb0: 0x192d77825dd5d0e9571db112, + limb1: 0x8b6f1079f2f153206cc2a502, + limb2: 0x247f3bad9ba3c5fe, limb3: 0x0 }, r1a0: u384 { - limb0: 0x8cc1dbb31acc40047b7ad8fa, - limb1: 0xd702cf48e666e5cf85a6fc17, - limb2: 0x32fc274fe6aaaee, + limb0: 0x250463ee5fe1aecbafe35d74, + limb1: 0xfb14416968302aaa18aca8dd, + limb2: 0x2667d8c8779f5e63, limb3: 0x0 }, r1a1: u384 { - limb0: 0x50c09375dc0dcac4618df1, - limb1: 0x44aaf9a75a1cec0f97c7023f, - limb2: 0x231948c469b85c9b, + limb0: 0x933a251b9bf2654b8cde705, + limb1: 0x5b666a17b42cebd66d4dc4a4, + limb2: 0xfbadfc59294fbce, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x1427ca2d95aec86b18523012, - limb1: 0x7092c66e1dbb7a7b2fb0a2e9, - limb2: 0xcd063254472f5b6, + limb0: 0xb069903d83fafb38587039b1, + limb1: 0x8c9aaa21806e5257331c422c, + limb2: 0x13dd740437a116d8, limb3: 0x0 }, r0a1: u384 { - limb0: 0xc1de693469798ff1020981cb, - limb1: 0x3e8b9ceb7a856a1c6cf37f19, - limb2: 0xeea9f172e14def1, + limb0: 0x49d24e3bc669a61d3ec25caa, + limb1: 0xeca54bbcf540ef02c5af1e2d, + limb2: 0x193a4e0703852e04, limb3: 0x0 }, r1a0: u384 { - limb0: 0xfb0b564b5ca3b8a4d808bb, - limb1: 0xd5352a51824ea9a9b8564e8c, - limb2: 0x26e12f4fe06b03f8, + limb0: 0x40ed8176e59843d8d045473f, + limb1: 0xdb66931824221a92af499752, + limb2: 0x187f887f2aa471b3, limb3: 0x0 }, r1a1: u384 { - limb0: 0x33782b9b99491755eeb9ecde, - limb1: 0x5d56c27facc86e6079a96ee3, - limb2: 0x6c62fa20b6a9bc2, + limb0: 0x5fb9760acf925b445a49c759, + limb1: 0xfc8fbbd94b6f146f5b998e84, + limb2: 0x79720a00d9dea8a, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x7728fec38ff79e0fbdedce93, - limb1: 0xa75bde588cc4681ea24c1106, - limb2: 0x2ec38c5ec2d9e9db, + limb0: 0x9ea0a9193ffeb1be07f5f80b, + limb1: 0xfec5948eaf1002c198e0e6d5, + limb2: 0x2a4574fe23c4019d, limb3: 0x0 }, r0a1: u384 { - limb0: 0x6156e4100d33080911e028ac, - limb1: 0xaf1f11fe9384bb2afd259db0, - limb2: 0x1d694d6864ec5fde, + limb0: 0x192d77825dd5d0e9571db112, + limb1: 0x8b6f1079f2f153206cc2a502, + limb2: 0x247f3bad9ba3c5fe, limb3: 0x0 }, r1a0: u384 { - limb0: 0x8cc1dbb31acc40047b7ad8fa, - limb1: 0xd702cf48e666e5cf85a6fc17, - limb2: 0x32fc274fe6aaaee, + limb0: 0x250463ee5fe1aecbafe35d74, + limb1: 0xfb14416968302aaa18aca8dd, + limb2: 0x2667d8c8779f5e63, limb3: 0x0 }, r1a1: u384 { - limb0: 0x50c09375dc0dcac4618df1, - limb1: 0x44aaf9a75a1cec0f97c7023f, - limb2: 0x231948c469b85c9b, + limb0: 0x933a251b9bf2654b8cde705, + limb1: 0x5b666a17b42cebd66d4dc4a4, + limb2: 0xfbadfc59294fbce, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x59a3e447f4a294098822f7a3, - limb1: 0xe9432c009a5d4792160010b9, - limb2: 0x277199cd159930cb, + limb0: 0x46cedc1a7916cd4758546b8f, + limb1: 0xc0301e8d2df36447a89fb4e8, + limb2: 0xd2ca8656d93e09e, limb3: 0x0 }, r0a1: u384 { - limb0: 0x8274cee173849fcc070d46c4, - limb1: 0x5e87f7398f36e740d373ef70, - limb2: 0x1d09e8162e72e182, + limb0: 0xb3e000fc3f43a66bd80ccccd, + limb1: 0x4f3937ef435c74591278ec30, + limb2: 0x2cacd585791ab63b, limb3: 0x0 }, r1a0: u384 { - limb0: 0x80a7bc31d42e03249c460a85, - limb1: 0x1365a8f3345ffe1a46aa5a81, - limb2: 0x1563f3018de0cfd4, + limb0: 0x124b8c1a597cadcb6e4cd237, + limb1: 0x8ff0b0f8077033669214f5a4, + limb2: 0x2d6762b5646a6eab, limb3: 0x0 }, r1a1: u384 { - limb0: 0xa3638f156cf99b84002b7deb, - limb1: 0x8e81084116d87ad6c16a29fe, - limb2: 0xda400f66dbdc964, + limb0: 0x2ac1adef2ec8f4f11dc21d70, + limb1: 0xa47ce6dfc3545d78d6b35874, + limb2: 0x1e66cdeff84b898e, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x59a3e447f4a294098822f7a3, - limb1: 0xe9432c009a5d4792160010b9, - limb2: 0x277199cd159930cb, + limb0: 0x46cedc1a7916cd4758546b8f, + limb1: 0xc0301e8d2df36447a89fb4e8, + limb2: 0xd2ca8656d93e09e, limb3: 0x0 }, r0a1: u384 { - limb0: 0x8274cee173849fcc070d46c4, - limb1: 0x5e87f7398f36e740d373ef70, - limb2: 0x1d09e8162e72e182, + limb0: 0xb3e000fc3f43a66bd80ccccd, + limb1: 0x4f3937ef435c74591278ec30, + limb2: 0x2cacd585791ab63b, limb3: 0x0 }, r1a0: u384 { - limb0: 0x80a7bc31d42e03249c460a85, - limb1: 0x1365a8f3345ffe1a46aa5a81, - limb2: 0x1563f3018de0cfd4, + limb0: 0x124b8c1a597cadcb6e4cd237, + limb1: 0x8ff0b0f8077033669214f5a4, + limb2: 0x2d6762b5646a6eab, limb3: 0x0 }, r1a1: u384 { - limb0: 0xa3638f156cf99b84002b7deb, - limb1: 0x8e81084116d87ad6c16a29fe, - limb2: 0xda400f66dbdc964, + limb0: 0x2ac1adef2ec8f4f11dc21d70, + limb1: 0xa47ce6dfc3545d78d6b35874, + limb2: 0x1e66cdeff84b898e, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x799b5f2ac05a3c426259f8cd, - limb1: 0x5cf9df0ef96d992d54a3bf38, - limb2: 0x1728083e4bfb46ea, + limb0: 0x7bded937b16de0bd513a7142, + limb1: 0xcfbbf3d13e42ad1b5895e0f2, + limb2: 0x1eca553e197cc436, limb3: 0x0 }, r0a1: u384 { - limb0: 0xb427ec1dc1361c52280daf2a, - limb1: 0x54da32cedfda574e1412f2f8, - limb2: 0x2d67d4254df9f407, + limb0: 0x1326b172ffdca7374561eaa7, + limb1: 0x1b78b181955868c0feac1a4d, + limb2: 0x27e90d835140fdf2, limb3: 0x0 }, r1a0: u384 { - limb0: 0xd8635a1e999474e836f22b49, - limb1: 0xdf8ce63e87a18ab190de7c45, - limb2: 0x2254df5a5e5e3c5, + limb0: 0xabe4a2e309f9a3632b4ed1ce, + limb1: 0xcea1bbacd364563ad1a77ebb, + limb2: 0x13127af43089e05a, limb3: 0x0 }, r1a1: u384 { - limb0: 0x29eebec2b59e839e22349983, - limb1: 0xf667eeacda1d349fae1184ff, - limb2: 0x2a875ff7b51d83fd, + limb0: 0x87d1cfadbc1dc69a79324026, + limb1: 0x9c9c2c5e286779e0a0d895fc, + limb2: 0x111e946cf01322eb, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x799b5f2ac05a3c426259f8cd, - limb1: 0x5cf9df0ef96d992d54a3bf38, - limb2: 0x1728083e4bfb46ea, + limb0: 0x7bded937b16de0bd513a7142, + limb1: 0xcfbbf3d13e42ad1b5895e0f2, + limb2: 0x1eca553e197cc436, limb3: 0x0 }, r0a1: u384 { - limb0: 0xb427ec1dc1361c52280daf2a, - limb1: 0x54da32cedfda574e1412f2f8, - limb2: 0x2d67d4254df9f407, + limb0: 0x1326b172ffdca7374561eaa7, + limb1: 0x1b78b181955868c0feac1a4d, + limb2: 0x27e90d835140fdf2, limb3: 0x0 }, r1a0: u384 { - limb0: 0xd8635a1e999474e836f22b49, - limb1: 0xdf8ce63e87a18ab190de7c45, - limb2: 0x2254df5a5e5e3c5, + limb0: 0xabe4a2e309f9a3632b4ed1ce, + limb1: 0xcea1bbacd364563ad1a77ebb, + limb2: 0x13127af43089e05a, limb3: 0x0 }, r1a1: u384 { - limb0: 0x29eebec2b59e839e22349983, - limb1: 0xf667eeacda1d349fae1184ff, - limb2: 0x2a875ff7b51d83fd, + limb0: 0x87d1cfadbc1dc69a79324026, + limb1: 0x9c9c2c5e286779e0a0d895fc, + limb2: 0x111e946cf01322eb, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x9bd44526af6b822ba414bf34, - limb1: 0x9d889b20682818109ee3f5b8, - limb2: 0x17504f66565b7973, + limb0: 0x9defc443a5f969707c567481, + limb1: 0x55f8307d8694c3cec8cca946, + limb2: 0x1279f1c85384c33f, limb3: 0x0 }, r0a1: u384 { - limb0: 0xef2d5a684ecf4a18d3fca175, - limb1: 0x6ef55bdd60dc05526e0728e7, - limb2: 0x2b2e3df0c459ea7b, + limb0: 0xc45f4019a78bd32e0bdd4a1b, + limb1: 0xaf7ddf8600e2296ceaf95d02, + limb2: 0xbe5e1b962492d36, limb3: 0x0 }, r1a0: u384 { - limb0: 0x9c0debcfca9a57c72e36669c, - limb1: 0x63ea39559fb5a92d86f05e8f, - limb2: 0x8148de1c5161bae, + limb0: 0x76245039bfb721ca1e2a0ee5, + limb1: 0x8645cf7b04c2c109a1286acc, + limb2: 0x295c9183ac4c0896, limb3: 0x0 }, r1a1: u384 { - limb0: 0x51f1cd7837045a2605004b39, - limb1: 0x68ed291b88eaa36eba898cc8, - limb2: 0x7451a7a189e2ae5, + limb0: 0xc074cb54759eec430185578f, + limb1: 0x5eccd5653e9f7f02ed581abc, + limb2: 0x14cf7692e622fcc5, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x9b56e23478be8c6669b76736, - limb1: 0x9e92467948bd38cc449fb3d6, - limb2: 0x28e6a22c16340027, + limb0: 0xf8027d9e6b0a7844673e1245, + limb1: 0x694d9db62bf7bb9a41262f0b, + limb2: 0x58b480579c361aa, limb3: 0x0 }, r0a1: u384 { - limb0: 0x65468a679e02de082e8f56f6, - limb1: 0x1dedc979e3be84b0ff6fef52, - limb2: 0x2c14f83b91127cfb, + limb0: 0x91e7cecfe16bbaaaf0e19fda, + limb1: 0xb9179883e4b271385d9f0518, + limb2: 0x1b352e7a150ca82b, limb3: 0x0 }, r1a0: u384 { - limb0: 0xb363027dfece36d665be75a5, - limb1: 0x8a128ec26c4c9e4825c49586, - limb2: 0x18e66c828e20b0d6, + limb0: 0xaca0ba97589ae090a84d3146, + limb1: 0x6e9a896c16ec429fab404849, + limb2: 0x2360e6d4bbcf90f8, limb3: 0x0 }, r1a1: u384 { - limb0: 0xbcac354be80fa78b209f1762, - limb1: 0xf30809052d869812ef32777c, - limb2: 0x318a314f715211, + limb0: 0xbb779a84783aa4ae72c18ceb, + limb1: 0x27e540fc9069d0a5ef39760c, + limb2: 0x114c9874632415bb, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x9bd44526af6b822ba414bf34, - limb1: 0x9d889b20682818109ee3f5b8, - limb2: 0x17504f66565b7973, + limb0: 0x9defc443a5f969707c567481, + limb1: 0x55f8307d8694c3cec8cca946, + limb2: 0x1279f1c85384c33f, limb3: 0x0 }, r0a1: u384 { - limb0: 0xef2d5a684ecf4a18d3fca175, - limb1: 0x6ef55bdd60dc05526e0728e7, - limb2: 0x2b2e3df0c459ea7b, + limb0: 0xc45f4019a78bd32e0bdd4a1b, + limb1: 0xaf7ddf8600e2296ceaf95d02, + limb2: 0xbe5e1b962492d36, limb3: 0x0 }, r1a0: u384 { - limb0: 0x9c0debcfca9a57c72e36669c, - limb1: 0x63ea39559fb5a92d86f05e8f, - limb2: 0x8148de1c5161bae, + limb0: 0x76245039bfb721ca1e2a0ee5, + limb1: 0x8645cf7b04c2c109a1286acc, + limb2: 0x295c9183ac4c0896, limb3: 0x0 }, r1a1: u384 { - limb0: 0x51f1cd7837045a2605004b39, - limb1: 0x68ed291b88eaa36eba898cc8, - limb2: 0x7451a7a189e2ae5, + limb0: 0xc074cb54759eec430185578f, + limb1: 0x5eccd5653e9f7f02ed581abc, + limb2: 0x14cf7692e622fcc5, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x9b56e23478be8c6669b76736, - limb1: 0x9e92467948bd38cc449fb3d6, - limb2: 0x28e6a22c16340027, + limb0: 0xf8027d9e6b0a7844673e1245, + limb1: 0x694d9db62bf7bb9a41262f0b, + limb2: 0x58b480579c361aa, limb3: 0x0 }, r0a1: u384 { - limb0: 0x65468a679e02de082e8f56f6, - limb1: 0x1dedc979e3be84b0ff6fef52, - limb2: 0x2c14f83b91127cfb, + limb0: 0x91e7cecfe16bbaaaf0e19fda, + limb1: 0xb9179883e4b271385d9f0518, + limb2: 0x1b352e7a150ca82b, limb3: 0x0 }, r1a0: u384 { - limb0: 0xb363027dfece36d665be75a5, - limb1: 0x8a128ec26c4c9e4825c49586, - limb2: 0x18e66c828e20b0d6, + limb0: 0xaca0ba97589ae090a84d3146, + limb1: 0x6e9a896c16ec429fab404849, + limb2: 0x2360e6d4bbcf90f8, limb3: 0x0 }, r1a1: u384 { - limb0: 0xbcac354be80fa78b209f1762, - limb1: 0xf30809052d869812ef32777c, - limb2: 0x318a314f715211, + limb0: 0xbb779a84783aa4ae72c18ceb, + limb1: 0x27e540fc9069d0a5ef39760c, + limb2: 0x114c9874632415bb, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xbb6b6aa45fd6fde305cb854a, - limb1: 0x9ebfe9272ee715df3e260cf2, - limb2: 0xa967b280e363e8f, + limb0: 0x2ec97171b355380af9597308, + limb1: 0x5c98f31e4243eabcdc9c4d0a, + limb2: 0x189272184abbc67e, limb3: 0x0 }, r0a1: u384 { - limb0: 0xde057c1fb977f3a9a8d06546, - limb1: 0x754d345bce41b971016c8f09, - limb2: 0x1a84dcfcb69f5704, + limb0: 0x70b2a249ee2b52a2be3d20c1, + limb1: 0x64f57fa1aabf12824a116967, + limb2: 0x2eff2b0744e46233, limb3: 0x0 }, r1a0: u384 { - limb0: 0x4d1764ed585ead257d9db36d, - limb1: 0xc22a6bf7842859f889bfe8a8, - limb2: 0x1b6a2b37dbbfdf8a, + limb0: 0x745cbcaad594ddd38a5f1f4e, + limb1: 0x95d1063847bfb4d5e006aa7d, + limb2: 0x16f68ed87066356e, limb3: 0x0 }, r1a1: u384 { - limb0: 0x5d5c3503dceb3e7fc1d270d6, - limb1: 0xd6ff3039d5f6822ada745ecd, - limb2: 0x2d48e7771059919c, + limb0: 0xf642b7b361d87b9f994ddd0d, + limb1: 0xdd217c0a6997dd8ec2539a54, + limb2: 0xeb46e09edaa161c, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xbb6b6aa45fd6fde305cb854a, - limb1: 0x9ebfe9272ee715df3e260cf2, - limb2: 0xa967b280e363e8f, + limb0: 0x2ec97171b355380af9597308, + limb1: 0x5c98f31e4243eabcdc9c4d0a, + limb2: 0x189272184abbc67e, limb3: 0x0 }, r0a1: u384 { - limb0: 0xde057c1fb977f3a9a8d06546, - limb1: 0x754d345bce41b971016c8f09, - limb2: 0x1a84dcfcb69f5704, + limb0: 0x70b2a249ee2b52a2be3d20c1, + limb1: 0x64f57fa1aabf12824a116967, + limb2: 0x2eff2b0744e46233, limb3: 0x0 }, r1a0: u384 { - limb0: 0x4d1764ed585ead257d9db36d, - limb1: 0xc22a6bf7842859f889bfe8a8, - limb2: 0x1b6a2b37dbbfdf8a, + limb0: 0x745cbcaad594ddd38a5f1f4e, + limb1: 0x95d1063847bfb4d5e006aa7d, + limb2: 0x16f68ed87066356e, limb3: 0x0 }, r1a1: u384 { - limb0: 0x5d5c3503dceb3e7fc1d270d6, - limb1: 0xd6ff3039d5f6822ada745ecd, - limb2: 0x2d48e7771059919c, + limb0: 0xf642b7b361d87b9f994ddd0d, + limb1: 0xdd217c0a6997dd8ec2539a54, + limb2: 0xeb46e09edaa161c, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x734a203ff92886286cb0f6df, - limb1: 0xe9f081086ed857ed55b5b076, - limb2: 0x2b34671a3732d22e, + limb0: 0x75698f1cd702ddc2b33e1a09, + limb1: 0x491bab5348fd4670d338478a, + limb2: 0xf12d300f3713d8, limb3: 0x0 }, r0a1: u384 { - limb0: 0xf440f3b197363132ac323277, - limb1: 0xc7d72e5dca83c8c05c5bdace, - limb2: 0x2d010c1451b4f55b, + limb0: 0x7f8777ccc370604bba36f21e, + limb1: 0x9249013429c123002a183f50, + limb2: 0x1fcfca1835131e72, limb3: 0x0 }, r1a0: u384 { - limb0: 0xb2f7e61d078407ea9b803d8a, - limb1: 0xc3edeb8d3106954d3e2f8910, - limb2: 0x5caaa349beaf055, + limb0: 0x8847a89e94951a7f1402ca0a, + limb1: 0xcf6292aefd5885587e4b501a, + limb2: 0x1f79fc126e4b16c6, limb3: 0x0 }, r1a1: u384 { - limb0: 0x96ae2bade369602ce6ad0022, - limb1: 0x7655b153cf3316226226b841, - limb2: 0x28a422e783969b00, + limb0: 0x9d2a84ea463b4f6fa6bdef4f, + limb1: 0x757ea11f432296fd22343447, + limb2: 0x2679fc65403a5f42, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x734a203ff92886286cb0f6df, - limb1: 0xe9f081086ed857ed55b5b076, - limb2: 0x2b34671a3732d22e, + limb0: 0x75698f1cd702ddc2b33e1a09, + limb1: 0x491bab5348fd4670d338478a, + limb2: 0xf12d300f3713d8, limb3: 0x0 }, r0a1: u384 { - limb0: 0xf440f3b197363132ac323277, - limb1: 0xc7d72e5dca83c8c05c5bdace, - limb2: 0x2d010c1451b4f55b, + limb0: 0x7f8777ccc370604bba36f21e, + limb1: 0x9249013429c123002a183f50, + limb2: 0x1fcfca1835131e72, limb3: 0x0 }, r1a0: u384 { - limb0: 0xb2f7e61d078407ea9b803d8a, - limb1: 0xc3edeb8d3106954d3e2f8910, - limb2: 0x5caaa349beaf055, + limb0: 0x8847a89e94951a7f1402ca0a, + limb1: 0xcf6292aefd5885587e4b501a, + limb2: 0x1f79fc126e4b16c6, limb3: 0x0 }, r1a1: u384 { - limb0: 0x96ae2bade369602ce6ad0022, - limb1: 0x7655b153cf3316226226b841, - limb2: 0x28a422e783969b00, + limb0: 0x9d2a84ea463b4f6fa6bdef4f, + limb1: 0x757ea11f432296fd22343447, + limb2: 0x2679fc65403a5f42, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xcea0e0cf0c6983e2afbf6e5b, - limb1: 0x3f3d09de5538ebb91d93244f, - limb2: 0x2e423f5cd50b1b0b, + limb0: 0x34f8267fb775f59435a975a3, + limb1: 0x5e24c3e432badae39861f051, + limb2: 0x172b5256de7536ee, limb3: 0x0 }, r0a1: u384 { - limb0: 0x7130aaec9de55ebe5a725993, - limb1: 0x72cdaf045315d78b3a869b99, - limb2: 0xa1e764e4914c73d, + limb0: 0x5c68fe19ba153dcabad4077e, + limb1: 0xfcc73acc37bc3efd49f1611c, + limb2: 0x23e6dc58075ef8d9, limb3: 0x0 }, r1a0: u384 { - limb0: 0x3430bb0abf481f47b595f451, - limb1: 0xcad3b79a1883cc594961f8d9, - limb2: 0xabe8088cd545331, + limb0: 0x4459c03b4d093ccedd5d9bb8, + limb1: 0xe78ba9031b31e2be3ed8f2ca, + limb2: 0x22ca3c03e154d61, limb3: 0x0 }, r1a1: u384 { - limb0: 0x2192c91661eb55dfd8bf44a4, - limb1: 0x947961e3d96adc04e39ba975, - limb2: 0x2ab466c577726305, + limb0: 0xe3ddeffb8c8f1a4cffd5c3f8, + limb1: 0x1241cc4c4b10d455e4d51279, + limb2: 0x1198575579f06677, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xcea0e0cf0c6983e2afbf6e5b, - limb1: 0x3f3d09de5538ebb91d93244f, - limb2: 0x2e423f5cd50b1b0b, + limb0: 0x34f8267fb775f59435a975a3, + limb1: 0x5e24c3e432badae39861f051, + limb2: 0x172b5256de7536ee, limb3: 0x0 }, r0a1: u384 { - limb0: 0x7130aaec9de55ebe5a725993, - limb1: 0x72cdaf045315d78b3a869b99, - limb2: 0xa1e764e4914c73d, + limb0: 0x5c68fe19ba153dcabad4077e, + limb1: 0xfcc73acc37bc3efd49f1611c, + limb2: 0x23e6dc58075ef8d9, limb3: 0x0 }, r1a0: u384 { - limb0: 0x3430bb0abf481f47b595f451, - limb1: 0xcad3b79a1883cc594961f8d9, - limb2: 0xabe8088cd545331, + limb0: 0x4459c03b4d093ccedd5d9bb8, + limb1: 0xe78ba9031b31e2be3ed8f2ca, + limb2: 0x22ca3c03e154d61, limb3: 0x0 }, r1a1: u384 { - limb0: 0x2192c91661eb55dfd8bf44a4, - limb1: 0x947961e3d96adc04e39ba975, - limb2: 0x2ab466c577726305, + limb0: 0xe3ddeffb8c8f1a4cffd5c3f8, + limb1: 0x1241cc4c4b10d455e4d51279, + limb2: 0x1198575579f06677, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x87badcb25547963493fe45fb, - limb1: 0xf0a9a8d798e720af29cb4a96, - limb2: 0x2b123e446695d170, + limb0: 0xb18b3c24e43743bdb2cdbd80, + limb1: 0xe998c4bba97ba39223cf4a9c, + limb2: 0x19dc441e0f76e9e1, limb3: 0x0 }, r0a1: u384 { - limb0: 0xf5f445f3d43fcbc1452c1ce4, - limb1: 0xe43d1ec74033939714885c5a, - limb2: 0x2141f9dcee7a5abd, + limb0: 0x4c5d0509f4c4d4eac63f9f95, + limb1: 0x5d3dd460fa5eec27c0f1c16d, + limb2: 0x1ce5fefb5da40fc0, limb3: 0x0 }, r1a0: u384 { - limb0: 0x27860bda05efc157a8db5e2d, - limb1: 0x503a4718ca16ecaa023ba303, - limb2: 0x2b7341e2f85e3579, + limb0: 0x817ac722e3b0875c94d0c02d, + limb1: 0x92716a07a8780a22c240503b, + limb2: 0x14624b4326fac880, limb3: 0x0 }, r1a1: u384 { - limb0: 0xc2ac240ec964d13e37b39f21, - limb1: 0x8e4f2b66a2c45e0f6014c24f, - limb2: 0xe5239ba8aefe42f, + limb0: 0x8f2279554369817a9f36b5b2, + limb1: 0x6b6125c5be4c3c62b2ffbe7, + limb2: 0x1e71362b2df417b3, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xffef228891647eafc116b9e0, - limb1: 0xa7a896c5628caabdb69e24c6, - limb2: 0x828d4145301c34e, + limb0: 0x5dbc257e7bb51557102dbe2a, + limb1: 0xce362ed76472b2864c5f5b6f, + limb2: 0xbd519ac92f31216, limb3: 0x0 }, r0a1: u384 { - limb0: 0xd99eb1f318e638fe9d2bb27b, - limb1: 0x20561ade41d499ee86526f28, - limb2: 0x2d5ed2ca32e9ee59, + limb0: 0xe24007146139cc5810b3cbd1, + limb1: 0xef3e2e5013aee1213c842bfb, + limb2: 0x1f9eea9d2acec058, limb3: 0x0 }, r1a0: u384 { - limb0: 0x1629ac83c66b88234a766153, - limb1: 0x60c2aa45c4528c36ef06286e, - limb2: 0x22495429f5176d57, + limb0: 0x913167d6677c3bc99423eaeb, + limb1: 0xa2fa67dadc942e074343364, + limb2: 0x264f390c803c8e6, limb3: 0x0 }, r1a1: u384 { - limb0: 0x81c1484e59021fc62e92c781, - limb1: 0x98a6a6e317089c8a8b5bcb32, - limb2: 0x83dceb63ab0efce, + limb0: 0x96fe98ba8d3de40aa91c7cef, + limb1: 0x9c98ececaf9210453a32c237, + limb2: 0xbe97bca2544faec, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x87badcb25547963493fe45fb, - limb1: 0xf0a9a8d798e720af29cb4a96, - limb2: 0x2b123e446695d170, + limb0: 0xb18b3c24e43743bdb2cdbd80, + limb1: 0xe998c4bba97ba39223cf4a9c, + limb2: 0x19dc441e0f76e9e1, limb3: 0x0 }, r0a1: u384 { - limb0: 0xf5f445f3d43fcbc1452c1ce4, - limb1: 0xe43d1ec74033939714885c5a, - limb2: 0x2141f9dcee7a5abd, + limb0: 0x4c5d0509f4c4d4eac63f9f95, + limb1: 0x5d3dd460fa5eec27c0f1c16d, + limb2: 0x1ce5fefb5da40fc0, limb3: 0x0 }, r1a0: u384 { - limb0: 0x27860bda05efc157a8db5e2d, - limb1: 0x503a4718ca16ecaa023ba303, - limb2: 0x2b7341e2f85e3579, + limb0: 0x817ac722e3b0875c94d0c02d, + limb1: 0x92716a07a8780a22c240503b, + limb2: 0x14624b4326fac880, limb3: 0x0 }, r1a1: u384 { - limb0: 0xc2ac240ec964d13e37b39f21, - limb1: 0x8e4f2b66a2c45e0f6014c24f, - limb2: 0xe5239ba8aefe42f, + limb0: 0x8f2279554369817a9f36b5b2, + limb1: 0x6b6125c5be4c3c62b2ffbe7, + limb2: 0x1e71362b2df417b3, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xffef228891647eafc116b9e0, - limb1: 0xa7a896c5628caabdb69e24c6, - limb2: 0x828d4145301c34e, + limb0: 0x5dbc257e7bb51557102dbe2a, + limb1: 0xce362ed76472b2864c5f5b6f, + limb2: 0xbd519ac92f31216, limb3: 0x0 }, r0a1: u384 { - limb0: 0xd99eb1f318e638fe9d2bb27b, - limb1: 0x20561ade41d499ee86526f28, - limb2: 0x2d5ed2ca32e9ee59, + limb0: 0xe24007146139cc5810b3cbd1, + limb1: 0xef3e2e5013aee1213c842bfb, + limb2: 0x1f9eea9d2acec058, limb3: 0x0 }, r1a0: u384 { - limb0: 0x1629ac83c66b88234a766153, - limb1: 0x60c2aa45c4528c36ef06286e, - limb2: 0x22495429f5176d57, + limb0: 0x913167d6677c3bc99423eaeb, + limb1: 0xa2fa67dadc942e074343364, + limb2: 0x264f390c803c8e6, limb3: 0x0 }, r1a1: u384 { - limb0: 0x81c1484e59021fc62e92c781, - limb1: 0x98a6a6e317089c8a8b5bcb32, - limb2: 0x83dceb63ab0efce, + limb0: 0x96fe98ba8d3de40aa91c7cef, + limb1: 0x9c98ececaf9210453a32c237, + limb2: 0xbe97bca2544faec, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xd832a0a9ba46b61c5fbe8bf6, - limb1: 0xf2796f5f1701bdf0ccd6f7e5, - limb2: 0xf8ea92f37492683, + limb0: 0x9fdc0157c3f6d20bf1149a1e, + limb1: 0x8dfe542e1b42911f5be6b44f, + limb2: 0x1777319f3952635d, limb3: 0x0 }, r0a1: u384 { - limb0: 0x799b80332114be709062d4f6, - limb1: 0x221fa51129bf07c25ddc135d, - limb2: 0x25c4be7190c9a7bd, + limb0: 0x63c6acb2bb3dd9747a3a9e32, + limb1: 0xc1c8cdb31066df4015d898a0, + limb2: 0xa1a8086940fa431, limb3: 0x0 }, r1a0: u384 { - limb0: 0x9efd44ce070180ecfcbc4848, - limb1: 0xd35e21807c4ad6f062a5202d, - limb2: 0x86987df4f67a884, + limb0: 0x26964bc2ff40bddadf582927, + limb1: 0x5b95722b0f70f6745c2bdbff, + limb2: 0x236b02ee4ba7fc42, limb3: 0x0 }, r1a1: u384 { - limb0: 0x820b2e59e88f4ef0e1c60032, - limb1: 0x29a9bd120466b529db6acbb5, - limb2: 0x1d16799e4e370099, + limb0: 0xfc468b651b4a0b741fcab682, + limb1: 0x947fdb5abdbbf09b1861c9ff, + limb2: 0x168fbfc692ed02, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xd832a0a9ba46b61c5fbe8bf6, - limb1: 0xf2796f5f1701bdf0ccd6f7e5, - limb2: 0xf8ea92f37492683, + limb0: 0x9fdc0157c3f6d20bf1149a1e, + limb1: 0x8dfe542e1b42911f5be6b44f, + limb2: 0x1777319f3952635d, limb3: 0x0 }, r0a1: u384 { - limb0: 0x799b80332114be709062d4f6, - limb1: 0x221fa51129bf07c25ddc135d, - limb2: 0x25c4be7190c9a7bd, + limb0: 0x63c6acb2bb3dd9747a3a9e32, + limb1: 0xc1c8cdb31066df4015d898a0, + limb2: 0xa1a8086940fa431, limb3: 0x0 }, r1a0: u384 { - limb0: 0x9efd44ce070180ecfcbc4848, - limb1: 0xd35e21807c4ad6f062a5202d, - limb2: 0x86987df4f67a884, + limb0: 0x26964bc2ff40bddadf582927, + limb1: 0x5b95722b0f70f6745c2bdbff, + limb2: 0x236b02ee4ba7fc42, limb3: 0x0 }, r1a1: u384 { - limb0: 0x820b2e59e88f4ef0e1c60032, - limb1: 0x29a9bd120466b529db6acbb5, - limb2: 0x1d16799e4e370099, + limb0: 0xfc468b651b4a0b741fcab682, + limb1: 0x947fdb5abdbbf09b1861c9ff, + limb2: 0x168fbfc692ed02, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x86ac476dcefd85dc64fc37bb, - limb1: 0xacc7a5e6416c113a8744a2d7, - limb2: 0x158e004a9f532a84, + limb0: 0x3b05d569dd3cfe7e6ef2d371, + limb1: 0x1ab213c78ac4d75edd6143b4, + limb2: 0x1bb1c4d653a5216f, limb3: 0x0 }, r0a1: u384 { - limb0: 0x399e601600cfe1da14a488f3, - limb1: 0xe2a1e7d9d7f92add7a3957e6, - limb2: 0x3539a47d4cdc84d, + limb0: 0x9b92fea68b4f30a46556d398, + limb1: 0x83327fb29ce9aca58bde417a, + limb2: 0x16153220e81ed45d, limb3: 0x0 }, r1a0: u384 { - limb0: 0xeed05e1a4ed1b575b27ed512, - limb1: 0xac1edb808ef2dedbfe1d8846, - limb2: 0x2c997577e8b3ea7f, + limb0: 0xb0d2a345496d30460462033c, + limb1: 0xa40b16c304ff5061144ae50f, + limb2: 0x26721ea54af25d00, limb3: 0x0 }, r1a1: u384 { - limb0: 0xd9e366ebd17969e6e247b3d5, - limb1: 0x27c165ecbba78cad9b2199f6, - limb2: 0xb72ad616ca5aabf, + limb0: 0xa5ccabe21466c944dbb14095, + limb1: 0xa4c756d31e5d0f448cde68b2, + limb2: 0x2ae93a053a3d338d, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x86ac476dcefd85dc64fc37bb, - limb1: 0xacc7a5e6416c113a8744a2d7, - limb2: 0x158e004a9f532a84, + limb0: 0x3b05d569dd3cfe7e6ef2d371, + limb1: 0x1ab213c78ac4d75edd6143b4, + limb2: 0x1bb1c4d653a5216f, limb3: 0x0 }, r0a1: u384 { - limb0: 0x399e601600cfe1da14a488f3, - limb1: 0xe2a1e7d9d7f92add7a3957e6, - limb2: 0x3539a47d4cdc84d, + limb0: 0x9b92fea68b4f30a46556d398, + limb1: 0x83327fb29ce9aca58bde417a, + limb2: 0x16153220e81ed45d, limb3: 0x0 }, r1a0: u384 { - limb0: 0xeed05e1a4ed1b575b27ed512, - limb1: 0xac1edb808ef2dedbfe1d8846, - limb2: 0x2c997577e8b3ea7f, + limb0: 0xb0d2a345496d30460462033c, + limb1: 0xa40b16c304ff5061144ae50f, + limb2: 0x26721ea54af25d00, limb3: 0x0 }, r1a1: u384 { - limb0: 0xd9e366ebd17969e6e247b3d5, - limb1: 0x27c165ecbba78cad9b2199f6, - limb2: 0xb72ad616ca5aabf, + limb0: 0xa5ccabe21466c944dbb14095, + limb1: 0xa4c756d31e5d0f448cde68b2, + limb2: 0x2ae93a053a3d338d, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x6e3df860ddc87e6c46b10347, - limb1: 0xdf7d85b152d08dc52b391a23, - limb2: 0x2151ae1d0adee980, + limb0: 0x20862b1193e454644f783f5f, + limb1: 0x53e011623be45f777881d1fa, + limb2: 0x1add95a26da4772d, limb3: 0x0 }, r0a1: u384 { - limb0: 0xe9aab9e7e2e152c9b7b3ff8b, - limb1: 0x2e3e5ef2957768c85a7fda05, - limb2: 0x1ba06484c9948aab, + limb0: 0x184abd260b562bfb4732317, + limb1: 0x7ffbe8a09f7ed1d4dc2d72db, + limb2: 0x1d8126e0e1a04aba, limb3: 0x0 }, r1a0: u384 { - limb0: 0xa4db947d390de54b28d90817, - limb1: 0x97ae9f2a08d19f66acfafd72, - limb2: 0x2c0f43178bbac00b, + limb0: 0xa95cc6a0467084254d561198, + limb1: 0x8323b4651df3ca086971c5f2, + limb2: 0x8ddc589c88db546, limb3: 0x0 }, r1a1: u384 { - limb0: 0xb31e0cca8442d0cdfa6a8355, - limb1: 0x11d2946936ca6ecf4d8c5263, - limb2: 0x11803eb6c5467a4d, + limb0: 0x93d904befe5c8b115704af76, + limb1: 0x1d435b645112bc8f8c408c92, + limb2: 0x2049e3df84bc4862, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x90ec2528f29f6e88cea10cd9, - limb1: 0xe38a4b080d340c5cec90db8b, - limb2: 0x2d4b92e251bf7dfb, + limb0: 0xe7ee41c83dc0244a4aff0557, + limb1: 0xac2723cbbe49c3f2e962c87a, + limb2: 0x1a5c70753b8f872d, limb3: 0x0 }, r0a1: u384 { - limb0: 0xb22bf09f84d3a2d5907e69b, - limb1: 0xc0258ab76526957e5222a691, - limb2: 0x2e615eddc1d9838c, + limb0: 0x48932d0153dca0d9ad7bb3ef, + limb1: 0x8030770fb03579c7f1aaf813, + limb2: 0x23052cdbd5231cf1, limb3: 0x0 }, r1a0: u384 { - limb0: 0x460a16d8d928363cde9720af, - limb1: 0xcb2ad8fc5096b71c1ab56254, - limb2: 0x1af601ac3cb97e6e, + limb0: 0xf67377a19afeceb76ad219d1, + limb1: 0x5100a715ef3663197a630165, + limb2: 0x26e53fc4d5f9343d, limb3: 0x0 }, r1a1: u384 { - limb0: 0xa50c6bca98920204eaec6a30, - limb1: 0x9c9410401471f1572de16694, - limb2: 0x1f12a4736bdd070f, + limb0: 0x3614bc03de00109253c939b0, + limb1: 0x5d7e932204b235c7868fd8c9, + limb2: 0xf9a4b8fc5c3b95c, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x6e3df860ddc87e6c46b10347, - limb1: 0xdf7d85b152d08dc52b391a23, - limb2: 0x2151ae1d0adee980, + limb0: 0x20862b1193e454644f783f5f, + limb1: 0x53e011623be45f777881d1fa, + limb2: 0x1add95a26da4772d, limb3: 0x0 }, r0a1: u384 { - limb0: 0xe9aab9e7e2e152c9b7b3ff8b, - limb1: 0x2e3e5ef2957768c85a7fda05, - limb2: 0x1ba06484c9948aab, + limb0: 0x184abd260b562bfb4732317, + limb1: 0x7ffbe8a09f7ed1d4dc2d72db, + limb2: 0x1d8126e0e1a04aba, limb3: 0x0 }, r1a0: u384 { - limb0: 0xa4db947d390de54b28d90817, - limb1: 0x97ae9f2a08d19f66acfafd72, - limb2: 0x2c0f43178bbac00b, + limb0: 0xa95cc6a0467084254d561198, + limb1: 0x8323b4651df3ca086971c5f2, + limb2: 0x8ddc589c88db546, limb3: 0x0 }, r1a1: u384 { - limb0: 0xb31e0cca8442d0cdfa6a8355, - limb1: 0x11d2946936ca6ecf4d8c5263, - limb2: 0x11803eb6c5467a4d, + limb0: 0x93d904befe5c8b115704af76, + limb1: 0x1d435b645112bc8f8c408c92, + limb2: 0x2049e3df84bc4862, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x90ec2528f29f6e88cea10cd9, - limb1: 0xe38a4b080d340c5cec90db8b, - limb2: 0x2d4b92e251bf7dfb, + limb0: 0xe7ee41c83dc0244a4aff0557, + limb1: 0xac2723cbbe49c3f2e962c87a, + limb2: 0x1a5c70753b8f872d, limb3: 0x0 }, r0a1: u384 { - limb0: 0xb22bf09f84d3a2d5907e69b, - limb1: 0xc0258ab76526957e5222a691, - limb2: 0x2e615eddc1d9838c, + limb0: 0x48932d0153dca0d9ad7bb3ef, + limb1: 0x8030770fb03579c7f1aaf813, + limb2: 0x23052cdbd5231cf1, limb3: 0x0 }, r1a0: u384 { - limb0: 0x460a16d8d928363cde9720af, - limb1: 0xcb2ad8fc5096b71c1ab56254, - limb2: 0x1af601ac3cb97e6e, + limb0: 0xf67377a19afeceb76ad219d1, + limb1: 0x5100a715ef3663197a630165, + limb2: 0x26e53fc4d5f9343d, limb3: 0x0 }, r1a1: u384 { - limb0: 0xa50c6bca98920204eaec6a30, - limb1: 0x9c9410401471f1572de16694, - limb2: 0x1f12a4736bdd070f, + limb0: 0x3614bc03de00109253c939b0, + limb1: 0x5d7e932204b235c7868fd8c9, + limb2: 0xf9a4b8fc5c3b95c, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xc7d43a911fd67a1046df190, - limb1: 0xa3b2ef1a29bb0724615047cd, - limb2: 0xe4806310c03ea81, + limb0: 0x65f973bfc82816a00b5ed6c8, + limb1: 0x692f2910d47b8fa09af19bfa, + limb2: 0x2ea153192e2e4b2a, limb3: 0x0 }, r0a1: u384 { - limb0: 0x8b2b919a7859c004e6d83d7e, - limb1: 0x9b023b81d96659a531893965, - limb2: 0x1fb7ff79ddd1cc0, + limb0: 0x76d12902f393e6b843b59394, + limb1: 0xb3e62aac703d04c2e7b0f3d7, + limb2: 0xb463354dffb27a5, limb3: 0x0 }, r1a0: u384 { - limb0: 0xcb81212d752959e0f8709116, - limb1: 0x2a4cf738761c75e3d5905b77, - limb2: 0x14f7b437f3f0f70a, + limb0: 0x2ba7ad9cf627b6b22c59455, + limb1: 0x2a1bb70e09b2e82c3e47006a, + limb2: 0x2fd508e21d2643c2, limb3: 0x0 }, r1a1: u384 { - limb0: 0x32aaaa30b5c7af271afdeef9, - limb1: 0x89cca337f6ef6cd9643d184d, - limb2: 0x2271ea433b43c30e, + limb0: 0xd4aeda38605326d0e81104d3, + limb1: 0x341ad2e7fbe765c292255260, + limb2: 0x1409344682b4bcfb, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xc7d43a911fd67a1046df190, - limb1: 0xa3b2ef1a29bb0724615047cd, - limb2: 0xe4806310c03ea81, + limb0: 0x65f973bfc82816a00b5ed6c8, + limb1: 0x692f2910d47b8fa09af19bfa, + limb2: 0x2ea153192e2e4b2a, limb3: 0x0 }, r0a1: u384 { - limb0: 0x8b2b919a7859c004e6d83d7e, - limb1: 0x9b023b81d96659a531893965, - limb2: 0x1fb7ff79ddd1cc0, + limb0: 0x76d12902f393e6b843b59394, + limb1: 0xb3e62aac703d04c2e7b0f3d7, + limb2: 0xb463354dffb27a5, limb3: 0x0 }, r1a0: u384 { - limb0: 0xcb81212d752959e0f8709116, - limb1: 0x2a4cf738761c75e3d5905b77, - limb2: 0x14f7b437f3f0f70a, + limb0: 0x2ba7ad9cf627b6b22c59455, + limb1: 0x2a1bb70e09b2e82c3e47006a, + limb2: 0x2fd508e21d2643c2, limb3: 0x0 }, r1a1: u384 { - limb0: 0x32aaaa30b5c7af271afdeef9, - limb1: 0x89cca337f6ef6cd9643d184d, - limb2: 0x2271ea433b43c30e, + limb0: 0xd4aeda38605326d0e81104d3, + limb1: 0x341ad2e7fbe765c292255260, + limb2: 0x1409344682b4bcfb, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x83cd187ea6b76db95f773abb, - limb1: 0x38132c4378560baf4f82f147, - limb2: 0x1e73e0ef9d6c6df2, + limb0: 0x3df63f78ca41825f71513656, + limb1: 0xa16f76d6dca72f822cd1b979, + limb2: 0x24074789c689076e, limb3: 0x0 }, r0a1: u384 { - limb0: 0x13fa637fc7e8d59bff13c7bf, - limb1: 0xcb266076a68142cdfb52e43c, - limb2: 0xf8779a30bc4923e, + limb0: 0x7c65d2ce7ee1b167a1b395b9, + limb1: 0xd3558980781fa7753c7fde90, + limb2: 0xcc7cdfc6d6824b2, limb3: 0x0 }, r1a0: u384 { - limb0: 0xdd4e562c68bb6c0467767a9d, - limb1: 0x977ed22d3ffa809754d6a3e6, - limb2: 0xb551268da252f8, + limb0: 0xc7e014db4d932bfadbfb4c97, + limb1: 0xfe968d09ca35d652782edede, + limb2: 0x2714d8a7f7ac99aa, limb3: 0x0 }, r1a1: u384 { - limb0: 0x8202e7c157f34ce8371734c, - limb1: 0xf9b04eaf7c57cd1560d122a0, - limb2: 0x10786b4d5ab93b34, + limb0: 0xc042d95d14d89d73d1d3e061, + limb1: 0xa0cb423edd0e2b0b102ac8d3, + limb2: 0x1925e10615942978, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x734d9cb92244d62a2d668de7, - limb1: 0x2412fbb6fe8a9acbf8b80689, - limb2: 0x2b3b8b2dff8430ab, + limb0: 0xe849e0690433a3396964e619, + limb1: 0x98c389c12d7a206e54762d7, + limb2: 0x864076bc0b020bf, limb3: 0x0 }, r0a1: u384 { - limb0: 0xa91caf2c31f0b8f7e1ca6c1b, - limb1: 0xddd15671597c0eb969689334, - limb2: 0xf16ae1e54810451, + limb0: 0xa242b31c9422608243b50776, + limb1: 0xcbfcf58a3fd5f8ea9af82930, + limb2: 0x90fe7f0ed71fb49, limb3: 0x0 }, r1a0: u384 { - limb0: 0x40f2487f6e22cc52df2d0667, - limb1: 0x7561db82d38cec91f9b0037c, - limb2: 0x11f8a53268ce76dd, + limb0: 0x427b2626900168aa75a20061, + limb1: 0xae23c7016864465bf55e8a61, + limb2: 0x2135ea0494227b45, limb3: 0x0 }, r1a1: u384 { - limb0: 0x6d75c8bd8e7f0f746c04a4a4, - limb1: 0x58f47f7c2a03d738930f80cd, - limb2: 0x252b7105ca6fc9b3, + limb0: 0x53807df6e3c1d41c92f9e9ee, + limb1: 0x46cfadece71164dd5a0623b5, + limb2: 0x1b07614c66d53f5e, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x83cd187ea6b76db95f773abb, - limb1: 0x38132c4378560baf4f82f147, - limb2: 0x1e73e0ef9d6c6df2, + limb0: 0x3df63f78ca41825f71513656, + limb1: 0xa16f76d6dca72f822cd1b979, + limb2: 0x24074789c689076e, limb3: 0x0 }, r0a1: u384 { - limb0: 0x13fa637fc7e8d59bff13c7bf, - limb1: 0xcb266076a68142cdfb52e43c, - limb2: 0xf8779a30bc4923e, + limb0: 0x7c65d2ce7ee1b167a1b395b9, + limb1: 0xd3558980781fa7753c7fde90, + limb2: 0xcc7cdfc6d6824b2, limb3: 0x0 }, r1a0: u384 { - limb0: 0xdd4e562c68bb6c0467767a9d, - limb1: 0x977ed22d3ffa809754d6a3e6, - limb2: 0xb551268da252f8, + limb0: 0xc7e014db4d932bfadbfb4c97, + limb1: 0xfe968d09ca35d652782edede, + limb2: 0x2714d8a7f7ac99aa, limb3: 0x0 }, r1a1: u384 { - limb0: 0x8202e7c157f34ce8371734c, - limb1: 0xf9b04eaf7c57cd1560d122a0, - limb2: 0x10786b4d5ab93b34, + limb0: 0xc042d95d14d89d73d1d3e061, + limb1: 0xa0cb423edd0e2b0b102ac8d3, + limb2: 0x1925e10615942978, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x734d9cb92244d62a2d668de7, - limb1: 0x2412fbb6fe8a9acbf8b80689, - limb2: 0x2b3b8b2dff8430ab, + limb0: 0xe849e0690433a3396964e619, + limb1: 0x98c389c12d7a206e54762d7, + limb2: 0x864076bc0b020bf, limb3: 0x0 }, r0a1: u384 { - limb0: 0xa91caf2c31f0b8f7e1ca6c1b, - limb1: 0xddd15671597c0eb969689334, - limb2: 0xf16ae1e54810451, + limb0: 0xa242b31c9422608243b50776, + limb1: 0xcbfcf58a3fd5f8ea9af82930, + limb2: 0x90fe7f0ed71fb49, limb3: 0x0 }, r1a0: u384 { - limb0: 0x40f2487f6e22cc52df2d0667, - limb1: 0x7561db82d38cec91f9b0037c, - limb2: 0x11f8a53268ce76dd, + limb0: 0x427b2626900168aa75a20061, + limb1: 0xae23c7016864465bf55e8a61, + limb2: 0x2135ea0494227b45, limb3: 0x0 }, r1a1: u384 { - limb0: 0x6d75c8bd8e7f0f746c04a4a4, - limb1: 0x58f47f7c2a03d738930f80cd, - limb2: 0x252b7105ca6fc9b3, + limb0: 0x53807df6e3c1d41c92f9e9ee, + limb1: 0x46cfadece71164dd5a0623b5, + limb2: 0x1b07614c66d53f5e, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xed3f9b44e04f68fa73726e0, - limb1: 0xaccd6e1c19eedf5c88d2d3de, - limb2: 0x14648df327991ebf, + limb0: 0xa5c3ccf01a951105dd75f94d, + limb1: 0x82a9f0d13174a4a3a63bfc49, + limb2: 0x1f8583025bcbde7b, limb3: 0x0 }, r0a1: u384 { - limb0: 0xdca3b98b961d7c87f0295f6c, - limb1: 0x27c558b1a54b6247711c1037, - limb2: 0x1a29b2dda2224caf, + limb0: 0x7781d4ba1adb6ac1f842f4d, + limb1: 0x1cb1ae18917edd8ca864c62a, + limb2: 0xe3fc3d3a49635a, limb3: 0x0 }, r1a0: u384 { - limb0: 0xf5931dd053bba2ce80ecaac0, - limb1: 0x4467a917b99ebaa9e38cd75c, - limb2: 0x996c8326c22d218, + limb0: 0x1231ed68a1df6f055a3d0195, + limb1: 0xa364228de1f8b75ece047897, + limb2: 0x1628fce71fb56927, limb3: 0x0 }, r1a1: u384 { - limb0: 0x1689da4d6237eb0cabc619cd, - limb1: 0x80be7b14466f3e80d3238f33, - limb2: 0x17b123dc27670866, + limb0: 0x415baf3b592c976c3ee6e348, + limb1: 0x35e71f0194d6974a8da7d093, + limb2: 0x27b2ff2220b58b8f, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xed3f9b44e04f68fa73726e0, - limb1: 0xaccd6e1c19eedf5c88d2d3de, - limb2: 0x14648df327991ebf, + limb0: 0xa5c3ccf01a951105dd75f94d, + limb1: 0x82a9f0d13174a4a3a63bfc49, + limb2: 0x1f8583025bcbde7b, limb3: 0x0 }, r0a1: u384 { - limb0: 0xdca3b98b961d7c87f0295f6c, - limb1: 0x27c558b1a54b6247711c1037, - limb2: 0x1a29b2dda2224caf, + limb0: 0x7781d4ba1adb6ac1f842f4d, + limb1: 0x1cb1ae18917edd8ca864c62a, + limb2: 0xe3fc3d3a49635a, limb3: 0x0 }, r1a0: u384 { - limb0: 0xf5931dd053bba2ce80ecaac0, - limb1: 0x4467a917b99ebaa9e38cd75c, - limb2: 0x996c8326c22d218, + limb0: 0x1231ed68a1df6f055a3d0195, + limb1: 0xa364228de1f8b75ece047897, + limb2: 0x1628fce71fb56927, limb3: 0x0 }, r1a1: u384 { - limb0: 0x1689da4d6237eb0cabc619cd, - limb1: 0x80be7b14466f3e80d3238f33, - limb2: 0x17b123dc27670866, + limb0: 0x415baf3b592c976c3ee6e348, + limb1: 0x35e71f0194d6974a8da7d093, + limb2: 0x27b2ff2220b58b8f, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x8767a273979ae59410a61d6, - limb1: 0xa94677eef8680a0766b7bdcd, - limb2: 0x15c8a912d3707996, + limb0: 0x920e9bfca06db481fbc1cfe6, + limb1: 0x43f8be76958260af05be0f38, + limb2: 0x26ba84269427bae3, limb3: 0x0 }, r0a1: u384 { - limb0: 0x72b1893fa891d8355e250814, - limb1: 0xb5d35ea94ee17f9c23cdf243, - limb2: 0x1d671bcc2ff01456, + limb0: 0xd3ab9aa6e827741aa4d32792, + limb1: 0x2c8b283fde4c90b963d334e5, + limb2: 0x253ca16c771b3565, limb3: 0x0 }, r1a0: u384 { - limb0: 0x2eab3dd0cbff0fdcf9c5a50e, - limb1: 0x5aadb2a6a126687ddb17973a, - limb2: 0x16878082a7622728, + limb0: 0xd1966ba3b4c709578310895e, + limb1: 0xa9b126ec8b1f0398a518c811, + limb2: 0x1174e0717594f92a, limb3: 0x0 }, r1a1: u384 { - limb0: 0x273a60ad881d183875c615bd, - limb1: 0xa414778bb6a46ea39e5916fc, - limb2: 0x122eea2cfbd5fdab, + limb0: 0x71a172b18c4050c28e13eab8, + limb1: 0xd819023026fc091e4234d4d9, + limb2: 0x6a2309b945f08a7, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x20b3b9f61a1405d6266b5771, - limb1: 0xcb82915b7d0da4a9df5f1a20, - limb2: 0x2406411cc56e8aab, + limb0: 0xb964e3c6d975ca8cf820a505, + limb1: 0x58cf1dfe1e77f86538998d74, + limb2: 0x253f8f7c9eb4af1, limb3: 0x0 }, r0a1: u384 { - limb0: 0x2106d333e371ad529f0d5b2, - limb1: 0xab4b2400bf422c768afc6579, - limb2: 0xc93f5e6ed3d5499, + limb0: 0x751409cbae1c0030ee5977d1, + limb1: 0xe203b703551126fdae59e500, + limb2: 0x2e4d7a2dbc83f9b5, limb3: 0x0 }, r1a0: u384 { - limb0: 0xe3134a8d54a826fafad59d2b, - limb1: 0xc5c51ca995d4930086d0d7ad, - limb2: 0x81f9db5baeaaedc, + limb0: 0x3bb2d7500573a130dfcc7b70, + limb1: 0x2e94772d1e8a4db8783ea2f7, + limb2: 0xb43fdec6bd93bce, limb3: 0x0 }, r1a1: u384 { - limb0: 0x6e922172b482fd3fa892d0ae, - limb1: 0x64f6ec6958ff8a9d369e840f, - limb2: 0x276aa7150701480d, + limb0: 0xdcad2320f5fe6edb3ee742ff, + limb1: 0xdb00d689081d6770c6978582, + limb2: 0x6029475ae5587e5, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x8767a273979ae59410a61d6, - limb1: 0xa94677eef8680a0766b7bdcd, - limb2: 0x15c8a912d3707996, + limb0: 0x920e9bfca06db481fbc1cfe6, + limb1: 0x43f8be76958260af05be0f38, + limb2: 0x26ba84269427bae3, limb3: 0x0 }, r0a1: u384 { - limb0: 0x72b1893fa891d8355e250814, - limb1: 0xb5d35ea94ee17f9c23cdf243, - limb2: 0x1d671bcc2ff01456, + limb0: 0xd3ab9aa6e827741aa4d32792, + limb1: 0x2c8b283fde4c90b963d334e5, + limb2: 0x253ca16c771b3565, limb3: 0x0 }, r1a0: u384 { - limb0: 0x2eab3dd0cbff0fdcf9c5a50e, - limb1: 0x5aadb2a6a126687ddb17973a, - limb2: 0x16878082a7622728, + limb0: 0xd1966ba3b4c709578310895e, + limb1: 0xa9b126ec8b1f0398a518c811, + limb2: 0x1174e0717594f92a, limb3: 0x0 }, r1a1: u384 { - limb0: 0x273a60ad881d183875c615bd, - limb1: 0xa414778bb6a46ea39e5916fc, - limb2: 0x122eea2cfbd5fdab, + limb0: 0x71a172b18c4050c28e13eab8, + limb1: 0xd819023026fc091e4234d4d9, + limb2: 0x6a2309b945f08a7, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x20b3b9f61a1405d6266b5771, - limb1: 0xcb82915b7d0da4a9df5f1a20, - limb2: 0x2406411cc56e8aab, + limb0: 0xb964e3c6d975ca8cf820a505, + limb1: 0x58cf1dfe1e77f86538998d74, + limb2: 0x253f8f7c9eb4af1, limb3: 0x0 }, r0a1: u384 { - limb0: 0x2106d333e371ad529f0d5b2, - limb1: 0xab4b2400bf422c768afc6579, - limb2: 0xc93f5e6ed3d5499, + limb0: 0x751409cbae1c0030ee5977d1, + limb1: 0xe203b703551126fdae59e500, + limb2: 0x2e4d7a2dbc83f9b5, limb3: 0x0 }, r1a0: u384 { - limb0: 0xe3134a8d54a826fafad59d2b, - limb1: 0xc5c51ca995d4930086d0d7ad, - limb2: 0x81f9db5baeaaedc, + limb0: 0x3bb2d7500573a130dfcc7b70, + limb1: 0x2e94772d1e8a4db8783ea2f7, + limb2: 0xb43fdec6bd93bce, limb3: 0x0 }, r1a1: u384 { - limb0: 0x6e922172b482fd3fa892d0ae, - limb1: 0x64f6ec6958ff8a9d369e840f, - limb2: 0x276aa7150701480d, + limb0: 0xdcad2320f5fe6edb3ee742ff, + limb1: 0xdb00d689081d6770c6978582, + limb2: 0x6029475ae5587e5, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x61ef7c65799ff3f0d508bd10, - limb1: 0x8ceb75dcd1484320ee4d19e2, - limb2: 0x2233a4f232ea0574, + limb0: 0x44ec71963665d6ec8ad74841, + limb1: 0x8403830d652edbde8339e929, + limb2: 0x100fb102d85f5085, limb3: 0x0 }, r0a1: u384 { - limb0: 0xd3f75a0f767465449a7b747f, - limb1: 0x8e7a83c0b52fc14b98d8a2fc, - limb2: 0x6f4dcbc5a5fc75a, + limb0: 0xc055c9daf26d35310e7b1e74, + limb1: 0x40cdbeaffc8383e3cdc8926, + limb2: 0x6fd31831cc5c2e2, limb3: 0x0 }, r1a0: u384 { - limb0: 0xb047c044937b99ab9104d7ae, - limb1: 0x949a3cf5b836c2b04044cf2f, - limb2: 0x1337095b7cacb643, + limb0: 0xad2ce478f7297f6138ae1c8c, + limb1: 0x4d31d6f7382542621c5b6e17, + limb2: 0x7dbf7c3c0f14e33, limb3: 0x0 }, r1a1: u384 { - limb0: 0xe985612f2b99a2b71e3ae2ba, - limb1: 0x4cca5205bed3f1e9c56403a9, - limb2: 0x4338289e24fe1e, + limb0: 0xe4640196247c27251483088e, + limb1: 0x34dea70f9956ebc54e0606ba, + limb2: 0x8b41cd44b48eaaa, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x61ef7c65799ff3f0d508bd10, - limb1: 0x8ceb75dcd1484320ee4d19e2, - limb2: 0x2233a4f232ea0574, + limb0: 0x44ec71963665d6ec8ad74841, + limb1: 0x8403830d652edbde8339e929, + limb2: 0x100fb102d85f5085, limb3: 0x0 }, r0a1: u384 { - limb0: 0xd3f75a0f767465449a7b747f, - limb1: 0x8e7a83c0b52fc14b98d8a2fc, - limb2: 0x6f4dcbc5a5fc75a, + limb0: 0xc055c9daf26d35310e7b1e74, + limb1: 0x40cdbeaffc8383e3cdc8926, + limb2: 0x6fd31831cc5c2e2, limb3: 0x0 }, r1a0: u384 { - limb0: 0xb047c044937b99ab9104d7ae, - limb1: 0x949a3cf5b836c2b04044cf2f, - limb2: 0x1337095b7cacb643, + limb0: 0xad2ce478f7297f6138ae1c8c, + limb1: 0x4d31d6f7382542621c5b6e17, + limb2: 0x7dbf7c3c0f14e33, limb3: 0x0 }, r1a1: u384 { - limb0: 0xe985612f2b99a2b71e3ae2ba, - limb1: 0x4cca5205bed3f1e9c56403a9, - limb2: 0x4338289e24fe1e, + limb0: 0xe4640196247c27251483088e, + limb1: 0x34dea70f9956ebc54e0606ba, + limb2: 0x8b41cd44b48eaaa, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xb0218c98a31a9008c29c55a7, - limb1: 0x603090637610abc078a9e37d, - limb2: 0x17822cdacf4f74b2, + limb0: 0xa4dc3d37041029c7b2f1bb9, + limb1: 0xf72869e330906647a7d54af8, + limb2: 0x705bd30bad6ce42, limb3: 0x0 }, r0a1: u384 { - limb0: 0x23d548a0944f8a21dd717202, - limb1: 0xa8378fa52cdc66eb6000ea03, - limb2: 0xf9e21213fd928ce, + limb0: 0xb00eef39b09348fd65e27aec, + limb1: 0xd5e053aa5ae39359fac6cdbc, + limb2: 0x90e03f1f820fe9a, limb3: 0x0 }, r1a0: u384 { - limb0: 0x7f0e1c1296284fefdaf5977b, - limb1: 0xb7c443563cf486d514b4fa01, - limb2: 0x29d9616f816a966f, + limb0: 0x7f56704e86148b1a5595647e, + limb1: 0xb8e4acc00d27e4eaf2d3de14, + limb2: 0x160398dceafe1fbe, limb3: 0x0 }, r1a1: u384 { - limb0: 0x74d3f9844073ca14143cb7b, - limb1: 0x509b38baebf357554e345268, - limb2: 0x35e2b0bad13ccb3, + limb0: 0x7c39f499101722b5d82ceec4, + limb1: 0xaf99a11bb8ab6c8134832009, + limb2: 0x2d7388a9d5187a36, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0xb0218c98a31a9008c29c55a7, - limb1: 0x603090637610abc078a9e37d, - limb2: 0x17822cdacf4f74b2, + limb0: 0xa4dc3d37041029c7b2f1bb9, + limb1: 0xf72869e330906647a7d54af8, + limb2: 0x705bd30bad6ce42, limb3: 0x0 }, r0a1: u384 { - limb0: 0x23d548a0944f8a21dd717202, - limb1: 0xa8378fa52cdc66eb6000ea03, - limb2: 0xf9e21213fd928ce, + limb0: 0xb00eef39b09348fd65e27aec, + limb1: 0xd5e053aa5ae39359fac6cdbc, + limb2: 0x90e03f1f820fe9a, limb3: 0x0 }, r1a0: u384 { - limb0: 0x7f0e1c1296284fefdaf5977b, - limb1: 0xb7c443563cf486d514b4fa01, - limb2: 0x29d9616f816a966f, + limb0: 0x7f56704e86148b1a5595647e, + limb1: 0xb8e4acc00d27e4eaf2d3de14, + limb2: 0x160398dceafe1fbe, limb3: 0x0 }, r1a1: u384 { - limb0: 0x74d3f9844073ca14143cb7b, - limb1: 0x509b38baebf357554e345268, - limb2: 0x35e2b0bad13ccb3, + limb0: 0x7c39f499101722b5d82ceec4, + limb1: 0xaf99a11bb8ab6c8134832009, + limb2: 0x2d7388a9d5187a36, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x6895d5c4291d29c1c90b8953, - limb1: 0xec95b5c61ac9a8ad599c3e90, - limb2: 0x26c23e5359c522f8, + limb0: 0x26743d3c5ceab5151856abc8, + limb1: 0x2bc840c6b3375132f6df6c4d, + limb2: 0xf20cc4455c9206b, limb3: 0x0 }, r0a1: u384 { - limb0: 0x451a405ea85b8297b89b9359, - limb1: 0xdda7f09222f0158941fdd37d, - limb2: 0x1e02857c01f63f65, + limb0: 0x75257f283994114ee03b667e, + limb1: 0xb71eada78256c22a8b22564d, + limb2: 0x2c4f6002e64db7e4, limb3: 0x0 }, r1a0: u384 { - limb0: 0x78ea9c3afbc18a4341693701, - limb1: 0x800b03441ee4cda73cff8138, - limb2: 0x1922d42efa24b0bb, + limb0: 0xadeaeea86f50da58c232d0b5, + limb1: 0xe988059d0234448257239cec, + limb2: 0x23c7423d92bbc634, limb3: 0x0 }, r1a1: u384 { - limb0: 0x7853e7e04cc1bde8c9cc1cea, - limb1: 0x5522f8576b05dc4c847c56f4, - limb2: 0x215e2001892f4f2d, + limb0: 0x6afee648e46e570b43f3696d, + limb1: 0x9a3f1aae0067f1de3d0a489, + limb2: 0xa7256957d6a8ed, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x6895d5c4291d29c1c90b8953, - limb1: 0xec95b5c61ac9a8ad599c3e90, - limb2: 0x26c23e5359c522f8, + limb0: 0x26743d3c5ceab5151856abc8, + limb1: 0x2bc840c6b3375132f6df6c4d, + limb2: 0xf20cc4455c9206b, limb3: 0x0 }, r0a1: u384 { - limb0: 0x451a405ea85b8297b89b9359, - limb1: 0xdda7f09222f0158941fdd37d, - limb2: 0x1e02857c01f63f65, + limb0: 0x75257f283994114ee03b667e, + limb1: 0xb71eada78256c22a8b22564d, + limb2: 0x2c4f6002e64db7e4, limb3: 0x0 }, r1a0: u384 { - limb0: 0x78ea9c3afbc18a4341693701, - limb1: 0x800b03441ee4cda73cff8138, - limb2: 0x1922d42efa24b0bb, + limb0: 0xadeaeea86f50da58c232d0b5, + limb1: 0xe988059d0234448257239cec, + limb2: 0x23c7423d92bbc634, limb3: 0x0 }, r1a1: u384 { - limb0: 0x7853e7e04cc1bde8c9cc1cea, - limb1: 0x5522f8576b05dc4c847c56f4, - limb2: 0x215e2001892f4f2d, + limb0: 0x6afee648e46e570b43f3696d, + limb1: 0x9a3f1aae0067f1de3d0a489, + limb2: 0xa7256957d6a8ed, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x65a448f368d7e3710d14834b, - limb1: 0x635217dfd337f9702f6f17b8, - limb2: 0x1f198b90ceb4c913, + limb0: 0x9894b9b6df6285e00cb3ef9d, + limb1: 0xc7799b231f547596527979f9, + limb2: 0x1873cf42f2befcbc, limb3: 0x0 }, r0a1: u384 { - limb0: 0xc3121a907cd12018b69b9689, - limb1: 0x207cf7e3284727e26fd754ac, - limb2: 0x1a4bdc4230a7eaca, + limb0: 0xea5b37d753c87bdd55f0ed0, + limb1: 0x70d0582e29fd33896e945be5, + limb2: 0x273059304eef6b83, limb3: 0x0 }, r1a0: u384 { - limb0: 0x9e8b22d153fd9f376d04fa9e, - limb1: 0x2e0f764f2a5b9bc8cbeae1d2, - limb2: 0x4e8d3249f55523c, + limb0: 0x1a8c1b6d717a3b41ece55725, + limb1: 0x7b31c1b97f15745a6d80ea0d, + limb2: 0x2cd26d3a7bbe93e6, limb3: 0x0 }, r1a1: u384 { - limb0: 0x4cef4c06ff68887ba376225b, - limb1: 0x7735cbc71f1d2b17a44573e9, - limb2: 0x2a05c495aafd7d5c, + limb0: 0xe2ad8bc0279b5c304c489ca6, + limb1: 0x176d1c945108ce77fcd238cd, + limb2: 0xde3c7c3f1c3d01b, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x2e7a68a41466b120e77eebe9, - limb1: 0x563464edeebd49cd3f67e57e, - limb2: 0x7e189b9f77aad5d, + limb0: 0x3980a9ac8c34a235d2616212, + limb1: 0x84c8a8ab074ce118b68f30e9, + limb2: 0x13d1902579c8a95e, limb3: 0x0 }, r0a1: u384 { - limb0: 0xfb61032838c8079f7a329f4e, - limb1: 0x73b431386643bf43a124cbf2, - limb2: 0x1139a0c85c4e9241, + limb0: 0x84b1be8046674b6544cdbd07, + limb1: 0x198c1a70db0768c46ee0879f, + limb2: 0xb7e46866f7c1d4f, limb3: 0x0 }, r1a0: u384 { - limb0: 0xdca1f77846c6cc5b9f674ad7, - limb1: 0xe9e20b17e38ba98ff1b54cc3, - limb2: 0xc4c3689d26c0ec3, + limb0: 0x5aa04f6da050797974642dff, + limb1: 0x67018b676db95697c6fc0e94, + limb2: 0x174b5365db908344, limb3: 0x0 }, r1a1: u384 { - limb0: 0x9f13e9d499343802c309060f, - limb1: 0x899b15f47de2433dede1230d, - limb2: 0x6706a8a2263c125, + limb0: 0x12ae4d7bff5800094457c75f, + limb1: 0xaf7fb1cf0adfdefc0943c20d, + limb2: 0x2e168cd37dc90c25, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x65a448f368d7e3710d14834b, - limb1: 0x635217dfd337f9702f6f17b8, - limb2: 0x1f198b90ceb4c913, + limb0: 0x9894b9b6df6285e00cb3ef9d, + limb1: 0xc7799b231f547596527979f9, + limb2: 0x1873cf42f2befcbc, limb3: 0x0 }, r0a1: u384 { - limb0: 0xc3121a907cd12018b69b9689, - limb1: 0x207cf7e3284727e26fd754ac, - limb2: 0x1a4bdc4230a7eaca, + limb0: 0xea5b37d753c87bdd55f0ed0, + limb1: 0x70d0582e29fd33896e945be5, + limb2: 0x273059304eef6b83, limb3: 0x0 }, r1a0: u384 { - limb0: 0x9e8b22d153fd9f376d04fa9e, - limb1: 0x2e0f764f2a5b9bc8cbeae1d2, - limb2: 0x4e8d3249f55523c, + limb0: 0x1a8c1b6d717a3b41ece55725, + limb1: 0x7b31c1b97f15745a6d80ea0d, + limb2: 0x2cd26d3a7bbe93e6, limb3: 0x0 }, r1a1: u384 { - limb0: 0x4cef4c06ff68887ba376225b, - limb1: 0x7735cbc71f1d2b17a44573e9, - limb2: 0x2a05c495aafd7d5c, + limb0: 0xe2ad8bc0279b5c304c489ca6, + limb1: 0x176d1c945108ce77fcd238cd, + limb2: 0xde3c7c3f1c3d01b, limb3: 0x0 } }, G2Line { r0a0: u384 { - limb0: 0x2e7a68a41466b120e77eebe9, - limb1: 0x563464edeebd49cd3f67e57e, - limb2: 0x7e189b9f77aad5d, + limb0: 0x3980a9ac8c34a235d2616212, + limb1: 0x84c8a8ab074ce118b68f30e9, + limb2: 0x13d1902579c8a95e, limb3: 0x0 }, r0a1: u384 { - limb0: 0xfb61032838c8079f7a329f4e, - limb1: 0x73b431386643bf43a124cbf2, - limb2: 0x1139a0c85c4e9241, + limb0: 0x84b1be8046674b6544cdbd07, + limb1: 0x198c1a70db0768c46ee0879f, + limb2: 0xb7e46866f7c1d4f, limb3: 0x0 }, r1a0: u384 { - limb0: 0xdca1f77846c6cc5b9f674ad7, - limb1: 0xe9e20b17e38ba98ff1b54cc3, - limb2: 0xc4c3689d26c0ec3, + limb0: 0x5aa04f6da050797974642dff, + limb1: 0x67018b676db95697c6fc0e94, + limb2: 0x174b5365db908344, limb3: 0x0 }, r1a1: u384 { - limb0: 0x9f13e9d499343802c309060f, - limb1: 0x899b15f47de2433dede1230d, - limb2: 0x6706a8a2263c125, + limb0: 0x12ae4d7bff5800094457c75f, + limb1: 0xaf7fb1cf0adfdefc0943c20d, + limb2: 0x2e168cd37dc90c25, limb3: 0x0 } }, @@ -12176,4080 +12176,4090 @@ mod pairing_tests { let hint = MPCheckHintBN254 { lambda_root: E12D { w0: u384 { - limb0: 0x7162a3f16d45be7e705e6f8c, - limb1: 0xba9ec606f2cb317bba27a259, - limb2: 0x2a12b649f94c130f, + limb0: 0xb36e0ba718eedb95694ff27e, + limb1: 0x3fa1b6075f06a07c465626f2, + limb2: 0x7597fa72f0be3fc, limb3: 0x0 }, w1: u384 { - limb0: 0x978944354e09becd488a7e2b, - limb1: 0xcdedfa9b7f26b60c32d76c35, - limb2: 0x1c350e14ab8c56da, + limb0: 0xa324557c566c10a1ade31dd3, + limb1: 0x1ad832ddd26762d4641d9f48, + limb2: 0xf63a37a2cec1f6, limb3: 0x0 }, w2: u384 { - limb0: 0x1645ed1f334b9118e6035372, - limb1: 0x8f556c1119e8cded84a915cc, - limb2: 0x147541bb4431521e, + limb0: 0x5a0d5135d45d9e4c7e6d5189, + limb1: 0xdb3448f920139c4cb568e5ec, + limb2: 0x16a9058adc0db6e, limb3: 0x0 }, w3: u384 { - limb0: 0xca5c649846d97b27fe2e80e6, - limb1: 0x668e50513dde91962045627c, - limb2: 0x2ae99c9c59b5744a, + limb0: 0x78e7b42183cbbc65b2386aef, + limb1: 0x340c627caef71ddbffe1a7f1, + limb2: 0x1e3dc2148a92dcc8, limb3: 0x0 }, w4: u384 { - limb0: 0x9fab71250e21890b0df3d9df, - limb1: 0xe832693f0a6ab8e42c086bbe, - limb2: 0x445014f49b8b79c, + limb0: 0xa43701327b068f203fdb12fe, + limb1: 0x8534192e360c307ed95461ba, + limb2: 0x1ad9813e18a5b15c, limb3: 0x0 }, w5: u384 { - limb0: 0x135ab378331781e545f852a7, - limb1: 0x4d836312638ef657d0e62ef2, - limb2: 0xd7dbcfd35fd140b, + limb0: 0xbdb81a8ff80e6e6a00380da9, + limb1: 0xc347f3464ee00d437dad5f0d, + limb2: 0x12934784e5b4b990, limb3: 0x0 }, w6: u384 { - limb0: 0x345806d40dea325e4cd660a4, - limb1: 0xde20483f6f2c6c23bb2c85bf, - limb2: 0x15b5c34129231281, + limb0: 0x71358b6ae3bf4e0b2b91c4f9, + limb1: 0x5f8b6768c72c1207808c5572, + limb2: 0x2a98efb4162c1594, limb3: 0x0 }, w7: u384 { - limb0: 0x954d63daaf1bf863bdcee957, - limb1: 0x46139c8690c802aa4e7dff49, - limb2: 0x2a1eda278ed51ed3, + limb0: 0x89a49898b8ab8972f903dee2, + limb1: 0x7af31ec86d1a396c382e230c, + limb2: 0x51c1b73e5686e16, limb3: 0x0 }, w8: u384 { - limb0: 0x1c3fafd72a8cbb37832126c5, - limb1: 0xf62b628a3f0201d04670013b, - limb2: 0x17545446da92ca31, + limb0: 0x29e5ef0a326fe75e9279aaca, + limb1: 0x96f69158a70e62d91bac87f8, + limb2: 0x17bb483e37f20b69, limb3: 0x0 }, w9: u384 { - limb0: 0x5073db98e30ca2d68f909908, - limb1: 0xe6c38fd40d94f42fda23b44f, - limb2: 0x2108da1da4ae0a91, + limb0: 0xbba68b5f3e7e3c0627854ed1, + limb1: 0x574711fda4a2ec3b0106aa24, + limb2: 0x1de231cdaf75c498, limb3: 0x0 }, w10: u384 { - limb0: 0x81b8744908e43c4a861855da, - limb1: 0xe67d5d74390ba67684128d06, - limb2: 0xd5e212ee63f1998, + limb0: 0x146eb690f20e42d72f5dea8e, + limb1: 0xe707d902dbfdd8365743a277, + limb2: 0x1d0cf945922fbe1c, limb3: 0x0 }, w11: u384 { - limb0: 0xd82da0145e5356aea4d19e7f, - limb1: 0xfd70cecd45b24c735c4085ff, - limb2: 0x166e000eb2fd6fd5, + limb0: 0xfe5336b1863cf5dedc43b960, + limb1: 0xddff1ec069d1ed4edc40656c, + limb2: 0x69334a0790c7b85, limb3: 0x0 } }, lambda_root_inverse: E12D { w0: u384 { - limb0: 0x1e0d8833112355b83886fdd6, - limb1: 0xb1d33cbe522f052457d0dfbf, - limb2: 0x7e60e48b1d3ab15, + limb0: 0xe70d0b2b147fef6e0818e6dc, + limb1: 0xa74861de6c45c0e83d90adf7, + limb2: 0x13aab05be5f20863, limb3: 0x0 }, w1: u384 { - limb0: 0x1025afd15af8f8eb99121b56, - limb1: 0xcc379fbc889e153bc856bc76, - limb2: 0x80a0578e49d4e5e, + limb0: 0xf37a1eef62eb776f31458a8e, + limb1: 0x4cc0525b56aa59c70037990d, + limb2: 0x1583840767dbec9c, limb3: 0x0 }, w2: u384 { - limb0: 0x6870d76c3632dd12d7877d06, - limb1: 0xfe3347aa2ecc9a2137ef36be, - limb2: 0x23ca1b6246a25ea2, + limb0: 0xa71e307e58e223e7ad0403f5, + limb1: 0x171ccdd9aecec0aa68d9dacc, + limb2: 0xb27c5f16f6e7488, limb3: 0x0 }, w3: u384 { - limb0: 0x74de628f615099978913fe1d, - limb1: 0xe08aafa9bd494e2fc306b6a0, - limb2: 0xa6bf773794d83c2, + limb0: 0x5aaf6c27efa8cfa010ae6cef, + limb1: 0x7587eb499cc746950f983cd9, + limb2: 0x140199b5a20f8c04, limb3: 0x0 }, w4: u384 { - limb0: 0x1dca32da93926687c4168b02, - limb1: 0xf856c88d1ff648013d393b88, - limb2: 0x20b936960969e463, + limb0: 0x9de08e193f635c00a22b0765, + limb1: 0xb2642d135e7835a8ba519a4a, + limb2: 0x244b99523eabe35, limb3: 0x0 }, w5: u384 { - limb0: 0x792e7c17bafcb28241b3b7c3, - limb1: 0xcfcad2dc0e1a448896b143c0, - limb2: 0x1261ddd63053731e, + limb0: 0xeeb95724d0c70241478d0ec, + limb1: 0x917dd067918a18bbce512938, + limb2: 0x789dd24e098ea8, limb3: 0x0 }, w6: u384 { - limb0: 0x1af60382c323e9818a7b9fa4, - limb1: 0xdbec8d9963a517a3268bf01b, - limb2: 0xb7b01417ccc561e, + limb0: 0xff4c85c0ad1a87b4326ef467, + limb1: 0xf21d5cbe8bf9247351872a38, + limb2: 0x17166d009def0dd8, limb3: 0x0 }, w7: u384 { - limb0: 0xb6548d4b9cb7ccd9db1349c9, - limb1: 0x166d9dddd322e8dd9d8df0b0, - limb2: 0x19ac614f42c6dcd1, + limb0: 0xd4ed38fd9856001d164c6ee0, + limb1: 0xfbd66ea19ff5d92ac6ff4702, + limb2: 0x726b8439353d45c, limb3: 0x0 }, w8: u384 { - limb0: 0x789161742cbe9b9ab8a9b3e2, - limb1: 0x63c57ea9cd2b00e09f716486, - limb2: 0x4f16376da967602, + limb0: 0xe202e4848074dc6e7791642c, + limb1: 0x80d01bba9e3ee16560c5bc0, + limb2: 0x8f53739da971462, limb3: 0x0 }, w9: u384 { - limb0: 0xc3064a7633503ac98cca8ee8, - limb1: 0x796f4bbc343732c7b4845c92, - limb2: 0x40548bf4b7f2316, + limb0: 0x7183d5ed57fe1a2114f443f0, + limb1: 0x3725daae459e70813e6e4bac, + limb2: 0xdb970aa85fe90a0, limb3: 0x0 }, w10: u384 { - limb0: 0xbd4e8f7392c1c0c6d9813677, - limb1: 0x3e8fefa720339ece628ee667, - limb2: 0x13bea0b881ac0821, + limb0: 0xa88615958320bece44165a2d, + limb1: 0xed7ecb2c49d694d8de125324, + limb2: 0xe7816a6d19d3db6, limb3: 0x0 }, w11: u384 { - limb0: 0x59ef05f4bacd367012fd50ca, - limb1: 0x602d130283b14bf02596c310, - limb2: 0x16d42f33b956640d, + limb0: 0xb8b24062c6703af873e55dfc, + limb1: 0x4d5bea3403db00f8eb224695, + limb2: 0x751fdf522d283f, limb3: 0x0 } }, w: MillerLoopResultScalingFactor { - w0: u384 { limb0: 0x1, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, - w2: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, + w0: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, + w2: u384 { + limb0: 0xc2778d80388a54eae80e565b, + limb1: 0xf25dc130d86b34cb0fbe750e, + limb2: 0x2d47bdc1ad79a2d8, + limb3: 0x0 + }, w4: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, - w8: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, + w8: u384 { + limb0: 0xa228aa43fdb7f215226ece12, + limb1: 0x22463bd8b6519b59af036109, + limb2: 0x10bd041a04b54229, + limb3: 0x0 + }, w10: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, Ris: array![ E12D { w0: u384 { - limb0: 0xce467d0bc9fe027b303a49e2, - limb1: 0xf13f3c96ea4ca9d9e34ef6b6, - limb2: 0x2c9d08a57ada764, + limb0: 0xd1f50e7dc9211726ed350a70, + limb1: 0x14a5a67a3f4b1354ca3786a3, + limb2: 0x1ebe70d2e5a66693, limb3: 0x0 }, w1: u384 { - limb0: 0xd66ab54cfdd35d749276aa0, - limb1: 0x9e88c6df2a6ff7df6317918d, - limb2: 0x13752d181056ae5f, + limb0: 0xa8ca0d6fafe4b1ae4545bb1e, + limb1: 0x3b685f4c1f057383d7c8ecc2, + limb2: 0x134745d689bb1e9c, limb3: 0x0 }, w2: u384 { - limb0: 0xa768577df8cd519ff14d569b, - limb1: 0x89bb08e3d27f94460d790831, - limb2: 0x26c47eb7ad21b651, + limb0: 0xa7ffe73e46f4378123db207b, + limb1: 0xb2a4c0fe89a9bafe839f4e7d, + limb2: 0x2e2b387460373625, limb3: 0x0 }, w3: u384 { - limb0: 0xea7c206e9e8cc4f720d7d194, - limb1: 0x75e7058bbab3f2abefa64b01, - limb2: 0x1bc56ef46e2c8c8f, + limb0: 0xaacf3043ef2aca452f01b6d3, + limb1: 0x631171994587e5302a4809d5, + limb2: 0xe13f8836af72c60, limb3: 0x0 }, w4: u384 { - limb0: 0x8fcea246b2c25d3f3319567f, - limb1: 0x984b255998fc9568a8f3f8bf, - limb2: 0x2868e92a1af93871, + limb0: 0x81dd9a52be0a17ea420092a7, + limb1: 0x9be66c854d356f970a31c1a1, + limb2: 0x17262d0815012be6, limb3: 0x0 }, w5: u384 { - limb0: 0x2bd97c6a1efb77518592cdc, - limb1: 0xa8dc856d9711044b0ebcfdb0, - limb2: 0x817d0618ea7138c, + limb0: 0x85a3080af3f6c5a0961327fa, + limb1: 0x98c55a3547766399878dfb26, + limb2: 0x292034e6c0be1c15, limb3: 0x0 }, w6: u384 { - limb0: 0x94885f295686034d2f459adf, - limb1: 0x8ff015ebc6aff6861ae55e3a, - limb2: 0xcc067028283cc11, + limb0: 0xc87bd1865d0364cb91aef802, + limb1: 0xee78722cdddcbba4a2ce653d, + limb2: 0x24dbdb2abda7d9a7, limb3: 0x0 }, w7: u384 { - limb0: 0x5a33b96cfcfd414df56c16d0, - limb1: 0x66a568d198d6cbab2b56db77, - limb2: 0x10b975eb92902957, + limb0: 0x6b28c177a69bb8e379d88fc1, + limb1: 0x7a17da5148625430758b1045, + limb2: 0x26538f6e76c44205, limb3: 0x0 }, w8: u384 { - limb0: 0xd3f1c97d8b2a1a2658226360, - limb1: 0x1761fbb65994c6043f6f4f9a, - limb2: 0xca82dd0f05bedd2, + limb0: 0xd4a7035d6cbaa1185a69e6d0, + limb1: 0x69e250309dea6d52b81b447a, + limb2: 0x1af27ee04c4ee860, limb3: 0x0 }, w9: u384 { - limb0: 0xfbacb5e7c31571613e4203ad, - limb1: 0x6bf6e5059ea4fe4543795de2, - limb2: 0x1ff3179e30d3707f, + limb0: 0xeb9a53e683462f9a5063bbf, + limb1: 0x6b94fde8a2d18bdab1a1c7cb, + limb2: 0xb193230bed01156, limb3: 0x0 }, w10: u384 { - limb0: 0x7972fe2156fe70a32d0a5c46, - limb1: 0x21a5730a54016c556cff7273, - limb2: 0x9f5d6867f404e1c, + limb0: 0x495e0be4d3597f96eb1d70d, + limb1: 0x69bdfc9a661e7f88426ee9c0, + limb2: 0x2783a905ef78f30e, limb3: 0x0 }, w11: u384 { - limb0: 0x9a0ca9b35e7bdb3449eb314a, - limb1: 0x570cfcb7e631dee1f5d91640, - limb2: 0x25702e4504db90, + limb0: 0x251b225f856cbd360d8b9aa5, + limb1: 0x25da80a0e2f108a9ba7ab71e, + limb2: 0xbe3340b672b5058, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x90507cc5947fe2dcbe639328, - limb1: 0x5587bcd425e8a5d12e7e54ab, - limb2: 0x9121ad45dfa0da5, + limb0: 0x78b20a85bf8559ebfe51f53b, + limb1: 0xf9a56b9a335767d55b69e1b7, + limb2: 0xe02c52b4c94df6a, limb3: 0x0 }, w1: u384 { - limb0: 0x364707c8f12db60b6645efd4, - limb1: 0x3e7b812d150f29f0c93f09f3, - limb2: 0xd6cd6619ab362c6, + limb0: 0xf69a680d9d0902b71550bb65, + limb1: 0x583c395dfb70fbbfdbcb09eb, + limb2: 0x1b2a1c0c3df83a5d, limb3: 0x0 }, w2: u384 { - limb0: 0xbb44bbdedfbcf9069f6687de, - limb1: 0x2263934d32e4a5ddb8335a2a, - limb2: 0x1e0f7799e802b338, + limb0: 0x576885c8751137244d6293ec, + limb1: 0x85eecf1263e5cc6a0c40c219, + limb2: 0x1686e10b33fdeadf, limb3: 0x0 }, w3: u384 { - limb0: 0x8a2cd2bd08752b5903eba84f, - limb1: 0xa2764fd40ce834550af6afdc, - limb2: 0xed98080e5a62174, + limb0: 0x5f71e3ee807725abe4a42f3f, + limb1: 0x26dc8c36057310d3c242b45a, + limb2: 0x285e25f13ad0243a, limb3: 0x0 }, w4: u384 { - limb0: 0xb120aba6313a0b65fb94e8fb, - limb1: 0x9fc437db1bf5a9a298b6360e, - limb2: 0x13d821aadd26f0f9, + limb0: 0xb1811c2b49f0b2190ac44e55, + limb1: 0x8f4d1b75b128392e9251341f, + limb2: 0x195f531735bb0027, limb3: 0x0 }, w5: u384 { - limb0: 0xe33c457888b1783bc2edd542, - limb1: 0xc4ee4375349173a0b5c9150a, - limb2: 0x2c5dd610b0245759, + limb0: 0x1e733c0aff6eedb30beaba76, + limb1: 0x9b82eb291d78929988ccfdca, + limb2: 0x1717d9c4d4b6d345, limb3: 0x0 }, w6: u384 { - limb0: 0xc3fc4f326d227f86f55e9299, - limb1: 0x675c0843f1087f1ef75edc3b, - limb2: 0x10af71eb06c2aab9, + limb0: 0xe2e7805612bfa43ad4041727, + limb1: 0xd64f77a93cc69c8617a388e8, + limb2: 0x11358a1631fff186, limb3: 0x0 }, w7: u384 { - limb0: 0xb84d6342b48faaa161b15746, - limb1: 0x48a1298bfebb34fba9cd494d, - limb2: 0xad7b37fd137c3ff, + limb0: 0x9c95565628aea3e19ecd224a, + limb1: 0xcee33ce9c136ffad0c41957d, + limb2: 0x1b4f0348a7b86d21, limb3: 0x0 }, w8: u384 { - limb0: 0x126c61fb48e1e87b3316fbe3, - limb1: 0xc9fb2ac0db16d1cf8f4a51db, - limb2: 0x29df52fc3c63dd8b, + limb0: 0x8849cea639a4f4e52c349480, + limb1: 0x7d33e2eb99c2cbd4fe7855d2, + limb2: 0x8aea5652b87af3c, limb3: 0x0 }, w9: u384 { - limb0: 0x474d43ea23ab0fb3935dd42c, - limb1: 0xd57ac64f69a786e0ff90a1a0, - limb2: 0xc2ed219326e18be, + limb0: 0x77540e9b16cb3ed8e15463b, + limb1: 0xd270213bb849f21d4477ee57, + limb2: 0x39d0f35449d507d, limb3: 0x0 }, w10: u384 { - limb0: 0x658f0bcbbce333b5372da731, - limb1: 0x4835b7281cb6a5eeac82344c, - limb2: 0x9d880ed0ceabdc6, + limb0: 0x8e123026ab8112f309570b1e, + limb1: 0xe4a94176e0b83a1da73567e9, + limb2: 0x17bc5d24c7c4ee13, limb3: 0x0 }, w11: u384 { - limb0: 0xa66d06735af0fca9cace2a17, - limb1: 0x7cdecd6b46bf201257352517, - limb2: 0x130000e243cf7f7d, + limb0: 0xb2718692d5baec1e71ba534a, + limb1: 0x331ea44a65c07be2cb1dabdd, + limb2: 0x80eae50b93714e0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xf601c1826a7d198bb9712ff5, - limb1: 0x4a4454dd284fb8b491a8d9b0, - limb2: 0x1b2c357a877ec341, + limb0: 0x32bd51a8d03d7773560302ea, + limb1: 0xe1f7a9fb7b4de70c900972ed, + limb2: 0x3389871b9b06e3d, limb3: 0x0 }, w1: u384 { - limb0: 0x40ae72a030aab4763b734b2d, - limb1: 0x9d6275828156a7ecd382ce82, - limb2: 0x81015b194039174, + limb0: 0x23a117d2c9339330d14c6b56, + limb1: 0xeeaaef929f8d627526055a69, + limb2: 0x2843e972a6884632, limb3: 0x0 }, w2: u384 { - limb0: 0x5bf61180a5b60ded2f5462c8, - limb1: 0x83bf5d678fcba384aae2a818, - limb2: 0x26c516c4fcba006f, + limb0: 0xb33dd6d9b8486db3424e253c, + limb1: 0xc5cb91577942a3eac7dc725a, + limb2: 0x5e695c51d300d46, limb3: 0x0 }, w3: u384 { - limb0: 0x72436b830d2140a2fb8f680a, - limb1: 0xc899fc2fb7021aafac4f0077, - limb2: 0x2541c950e657dd51, + limb0: 0x7dc25416b8c2e3ad032e1456, + limb1: 0x4d3297aeb544102ea54f2cfe, + limb2: 0x287e2f5da1896fd0, limb3: 0x0 }, w4: u384 { - limb0: 0x75103ba74eb15209def40d0a, - limb1: 0xeaf7bd18eede9869fec0b8fc, - limb2: 0x27a8869e7a1c99b, + limb0: 0xaa781e7a5ca3b262de4dda57, + limb1: 0x5ba807c9ab7c3a48ae480c31, + limb2: 0x1b177e5a8b4f5dbd, limb3: 0x0 }, w5: u384 { - limb0: 0xbec796ec674761257ea5e2f5, - limb1: 0x5b02e6ac2038fd6e7f426d9, - limb2: 0x1081bc392588c363, + limb0: 0x12775af0f93f738616a74ae, + limb1: 0x3643073c50a23c983bc1662, + limb2: 0xc4a871217b380e2, limb3: 0x0 }, w6: u384 { - limb0: 0xeb0e6be9cd9f39e4ee25b553, - limb1: 0xd4f447c6d154d7ae04d19a11, - limb2: 0xd74bad06f28d8de, + limb0: 0xe16473d429161d0a9e6eb350, + limb1: 0x375ed10afb50d9d3fbdd64db, + limb2: 0x279634fdd78d1509, limb3: 0x0 }, w7: u384 { - limb0: 0xd28c3f9d564cab44c228d525, - limb1: 0x8faacaad122d221aa1b92840, - limb2: 0x1c298d1bcd1d26, + limb0: 0x15dd88b2ecd2b2518a2d581a, + limb1: 0xc4fa9ebd2f32f084be0492b9, + limb2: 0x969f33cdacca89a, limb3: 0x0 }, w8: u384 { - limb0: 0x4e0fad1c33c8cc107e762dac, - limb1: 0xd4de0631e783a6f06a0b6112, - limb2: 0x17da6e630ea149ae, + limb0: 0x6fbc3283e4941be404f81e93, + limb1: 0x92a4da38c329d16bf0ddb85f, + limb2: 0x2cbaf03cd7503ace, limb3: 0x0 }, w9: u384 { - limb0: 0x674e6bfde281f53e27dd0171, - limb1: 0xb277fa1acaf2fcb22194e8ff, - limb2: 0x5f20d4e1911b5e9, + limb0: 0x4c5b067949419e764d4f7777, + limb1: 0x65cd2ccf0519cd6b81283360, + limb2: 0x1d9ef868c26d82b0, limb3: 0x0 }, w10: u384 { - limb0: 0x8aa579bd51ca76ec90a26c25, - limb1: 0xde553861d86a09b6fe284d2e, - limb2: 0x2dd4484c6d42e5a4, + limb0: 0xa49b7fd4adafbe6f0c43cfa2, + limb1: 0x7911af312852fbf80cd24026, + limb2: 0x8c043b13f35a105, limb3: 0x0 }, w11: u384 { - limb0: 0x51864cc6e74f83d8a14408c1, - limb1: 0x7464828c0f065da754138c99, - limb2: 0x2267af3c46da6b6e, + limb0: 0x4910e324f86cfb5e3d53548b, + limb1: 0x7b2de7b57cb2454ea2b7599b, + limb2: 0x20778c273629cc36, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x8d04c25ecb1ba78b8ea37566, - limb1: 0xd3fa52295924a03a6c42387e, - limb2: 0xfcbe3651eff7cc1, + limb0: 0xdb4a6aa11d1616143120233b, + limb1: 0x6b9d969a12554ddb8a050e5c, + limb2: 0xfc4ef092f610e7c, limb3: 0x0 }, w1: u384 { - limb0: 0xa9d6c5fb6f701af37e553191, - limb1: 0x7b3edbb656fe84491f3c66b5, - limb2: 0x2b6b696050eba46c, + limb0: 0xb067dd066fa17280292c55f6, + limb1: 0x54f56804f4a030908a6098c9, + limb2: 0xbf39009bdccb2f2, limb3: 0x0 }, w2: u384 { - limb0: 0x4d5c56b4cf9ee52b1b779d3, - limb1: 0x95c68089f189c0c4d50083e, - limb2: 0x2a38f13dc2b9c595, + limb0: 0x45c462ddcd7b3f0fd59353b1, + limb1: 0xac80e78fb9d9035cd908ee87, + limb2: 0x22f3fa407bc9da1d, limb3: 0x0 }, w3: u384 { - limb0: 0xc3ce5b7c81e2cbb1dbfd70b8, - limb1: 0x97c33e63bf773636e5ae8b51, - limb2: 0x5f0fff86fd1292d, + limb0: 0x34faab46ba73989f2c2bd8de, + limb1: 0xb7e9883a2d214620354ffd40, + limb2: 0xd3f72448e80a18b, limb3: 0x0 }, w4: u384 { - limb0: 0xd31f10152ae57ee1a4ce3db1, - limb1: 0x45d5b1be74a5b60be5907208, - limb2: 0x2e2d890331b94d75, + limb0: 0x9b14a90746595f5135af8a9f, + limb1: 0xf997f92150318a8adc8b8aea, + limb2: 0x2dcf5ef2e969491d, limb3: 0x0 }, w5: u384 { - limb0: 0x396c100afd746e78ee8223c9, - limb1: 0x85a612fe921ee91bd52ed377, - limb2: 0x1326c24601bbaa56, + limb0: 0xf81003c498a62bee50995eaa, + limb1: 0xa63b408d514c7467e85e5737, + limb2: 0xc585cdfd12d29da, limb3: 0x0 }, w6: u384 { - limb0: 0x65008018c6cac736b2d1ea97, - limb1: 0xa3ff8a488646d3d5ee54f2a1, - limb2: 0x1dd51590ffd24c88, + limb0: 0x9c283df331c9010a53f3cb0, + limb1: 0x9f400d5933031bd3388d7e6b, + limb2: 0x1a657897e430ed07, limb3: 0x0 }, w7: u384 { - limb0: 0xc3afd18fa472bc8c17555e88, - limb1: 0xf12309125a8b4c70b01b456, - limb2: 0x15b4f01af036ceb2, + limb0: 0x62f9509239d8552fd0947cf2, + limb1: 0xeecd369b03ae91dbd754b112, + limb2: 0xc5c608fe4dcea18, limb3: 0x0 }, w8: u384 { - limb0: 0xf09c3c8a0f2af3d3e48eef85, - limb1: 0x968b474002cfba089f9c0281, - limb2: 0x10c94bcf2dd36f03, + limb0: 0x890edc931ef35c371904522e, + limb1: 0x5630a7035df921ef0438b360, + limb2: 0x22eec19c05b47160, limb3: 0x0 }, w9: u384 { - limb0: 0xf7614f018fdb7730872eab22, - limb1: 0xf0e905108e4e4c6ab44a1b2f, - limb2: 0x2fe2c040c2a80fda, + limb0: 0xc797ddee59eef257dc061dda, + limb1: 0x5fb086b97d04a74cb739f187, + limb2: 0xff437c31096953a, limb3: 0x0 }, w10: u384 { - limb0: 0x859cd56cc588b71941dc1437, - limb1: 0x9310800edc15df5e3f53482a, - limb2: 0x1493422450a54ae2, + limb0: 0x3d531b5f10279bc09fa901a8, + limb1: 0x62d0c20814e0faac3bfebeea, + limb2: 0x1d6a5a9b36787f17, limb3: 0x0 }, w11: u384 { - limb0: 0x951b5efb52bdbb0d60bfe50b, - limb1: 0xf5b893473ef6bfa59aee8390, - limb2: 0x2e4abba89e9b1b35, + limb0: 0x6af6eba3900230ab1bd8c47f, + limb1: 0xd2425b72f6dad7c0256308b7, + limb2: 0xdbce6e56a6749c7, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x1700f1780ab227e14d141448, - limb1: 0x5be1c50026a64057dbd25159, - limb2: 0x1644a533b348e30d, + limb0: 0x952e21d3b81758e84aa7ee34, + limb1: 0xeeb28257b2a366b0dbef3317, + limb2: 0x2035dd452f676aaa, limb3: 0x0 }, w1: u384 { - limb0: 0x69f6afd4e0bc846c15e5442d, - limb1: 0x7bf63cee78b8b1aa0d206f96, - limb2: 0x11b78eed672a6fe7, + limb0: 0x7afcfb5b66362db4e47fe187, + limb1: 0xf3e36929b0197f6295b5ca40, + limb2: 0x5f4828eee14d46d, limb3: 0x0 }, w2: u384 { - limb0: 0x96b6d32c91209ed9aca8e86f, - limb1: 0x1155c6fb69e1f91ea58184b9, - limb2: 0x13ac047fcd1f3f0c, + limb0: 0x3ad9116522e8b4b2e896e824, + limb1: 0xfe40fbfcc547760922ae6db9, + limb2: 0x1a6d83bc3064bfdb, limb3: 0x0 }, w3: u384 { - limb0: 0x304dd611ca78325543030d67, - limb1: 0x77527e527c0c191a56e7a35c, - limb2: 0x80edd08ef932923, + limb0: 0xb8f8eff1ad62698189539285, + limb1: 0x92476fc6bd68b29104e4f7db, + limb2: 0x299af035bbb6620f, limb3: 0x0 }, w4: u384 { - limb0: 0xede22eb525821c4b63747863, - limb1: 0xb0a134647ca1693ba3d895d, - limb2: 0x2c68f94f162da8ae, + limb0: 0x9d8a11cbcee8bf70813ee358, + limb1: 0xf057be2258e7ad28e9a37109, + limb2: 0x1b9bbb2c39a55d3a, limb3: 0x0 }, w5: u384 { - limb0: 0x2624e84207c3292f70a63611, - limb1: 0x70c9a4a5b1328712fa09afce, - limb2: 0x2a8db8e11a7e3307, + limb0: 0x30e5fabd803b62cfb2ab7a88, + limb1: 0xec36e2d14851c34e0ae66294, + limb2: 0x237c7a7ef863e08c, limb3: 0x0 }, w6: u384 { - limb0: 0xfbad333b1b29119596d5f82c, - limb1: 0x8e77167463d2e12e981586ed, - limb2: 0x75aa4af2b7e81bf, + limb0: 0x2be2b72973a9ac41bf88439, + limb1: 0x29e73806d1e2f7ddb62f4dea, + limb2: 0x2ba9777af7739bf, limb3: 0x0 }, w7: u384 { - limb0: 0xd98b42543176a7f880d547c3, - limb1: 0x5ac84d04056abcb4fd2209d0, - limb2: 0xfe5895993e7a5f6, + limb0: 0xf593a881efbdc2170e084c35, + limb1: 0xa3b8afa06a144bf48313f3a0, + limb2: 0x11544c2993ff6f36, limb3: 0x0 }, w8: u384 { - limb0: 0x5de8a818b736a85baf58f71b, - limb1: 0xabb952411e73c6ea4150ec20, - limb2: 0x124a9e474789885, + limb0: 0x2a09528e71e8fd25387296f, + limb1: 0x33166aad8485229bb359be06, + limb2: 0x53fd6c08644f62f, limb3: 0x0 }, w9: u384 { - limb0: 0x1a22750c015995559322e8f, - limb1: 0x2d8958f21c4e267bfe51497c, - limb2: 0x1b97440e3728f207, + limb0: 0x6fa67187f751bed9a9235ee0, + limb1: 0x52b357b9256cb2d4925edb6a, + limb2: 0xe41365f5357139a, limb3: 0x0 }, w10: u384 { - limb0: 0x635c45bf2feb502ea2d6a986, - limb1: 0x149148f08a4bf10b0c05998d, - limb2: 0x1165cf4c776328d8, + limb0: 0xfe882ba6d48956b341e5cdc1, + limb1: 0xed97e06395c7eef2488416b4, + limb2: 0x17a7b4be03feeec6, limb3: 0x0 }, w11: u384 { - limb0: 0x4eeef1fb47d46de76424d1d8, - limb1: 0x310db87b28d8852d47158b2f, - limb2: 0x2d5213497baa0eb1, + limb0: 0x6eb7e5824bebef2038773844, + limb1: 0x51d6fcef9892075cd9b3d9db, + limb2: 0xadedc9767d1eca3, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xdcc3103b70d027f2fce4d06d, - limb1: 0x563cc5316b59a0f95194cdf5, - limb2: 0x186d50d1fec85ecc, + limb0: 0xcde420305f405544511886d0, + limb1: 0xeaa49a235dc97a585e65debe, + limb2: 0x2f0d4d9ccd1962fa, limb3: 0x0 }, w1: u384 { - limb0: 0x9de190afd639c486b25836e8, - limb1: 0xf02842e6f413ced385e773cd, - limb2: 0x1ed861810c6eb0ce, + limb0: 0xc411622ea95ab9c8dc48db8a, + limb1: 0xef052223db35702918ea4b95, + limb2: 0x28b963a7ef49e8f9, limb3: 0x0 }, w2: u384 { - limb0: 0xc91a8e105d3781051f466ca9, - limb1: 0x786f13c97f557de8eb8435d7, - limb2: 0x2ee07075cf5d4aac, + limb0: 0x5987f2090ece398e5267a546, + limb1: 0xf4b48a89a49ecc0d3088cbda, + limb2: 0xa6780b8516b8c10, limb3: 0x0 }, w3: u384 { - limb0: 0x3505e8580e427c7f885102c3, - limb1: 0x98fa98bd75a420a6102a7442, - limb2: 0x1fa302dc853ddb52, + limb0: 0x15a3ac8010a6db6db009239f, + limb1: 0x37589e15aa1ba2afcdb3cac3, + limb2: 0x18f25281273bd915, limb3: 0x0 }, w4: u384 { - limb0: 0xe2da284fcce7047d2b505bd2, - limb1: 0x9fadf03e5e86713a054dafae, - limb2: 0x99cc8221ee7c1aa, + limb0: 0x1f25a46fe3a2b0024bf5b27b, + limb1: 0x58d96935e32e8f47c620e4c, + limb2: 0x184a50d2c5732735, limb3: 0x0 }, w5: u384 { - limb0: 0x96accde98062f20c81c30d9f, - limb1: 0xa5be52c0aa2c0e7b2578f127, - limb2: 0x2f4f5bccc837d7c, + limb0: 0x6d19748ec258f5387b237ee9, + limb1: 0xf3942d7640a0324444f113ec, + limb2: 0x10e5f4c2e71c82f, limb3: 0x0 }, w6: u384 { - limb0: 0x7ce16312e3421f074b644f60, - limb1: 0xe798893b556623da4509615a, - limb2: 0xb93dcb991d18491, + limb0: 0x99430f08bbf9471d0efaeaa2, + limb1: 0x802b411ecd11eb35ccc003cc, + limb2: 0x2ead1321e6da16d5, limb3: 0x0 }, w7: u384 { - limb0: 0x22b4ad60cf0f4301a85e6ef3, - limb1: 0xe9813dfb20da2137a21378e3, - limb2: 0x88930a93e90c146, + limb0: 0x3964c7c8873e4b539173a51b, + limb1: 0x94e33c8b19a0f89e72e15f6a, + limb2: 0x1c13ca8ab1e6bfcc, limb3: 0x0 }, w8: u384 { - limb0: 0x49b2dcc8984511daa1560ae0, - limb1: 0xcee2a2f0251243afbd011d8e, - limb2: 0x28628066219d3b64, + limb0: 0x79c5b8806e0d94a6d79e4af2, + limb1: 0x6be5306d1dfd3f53ebf122a9, + limb2: 0x19f3d66523da1cbc, limb3: 0x0 }, w9: u384 { - limb0: 0x69c9a1c782d4e8449f47b658, - limb1: 0x2d622899959bce5a38a20fd, - limb2: 0x1dddbb035dbc8f3, + limb0: 0x594f5c479b5ba41901e1b24d, + limb1: 0x2a259e63f4fa7d1a8d9ccf61, + limb2: 0x6e700885ac708c7, limb3: 0x0 }, w10: u384 { - limb0: 0x773af730fa7f3158563a9bc9, - limb1: 0x652478913a09d8c44994f185, - limb2: 0x73cc06c6dba3cbb, + limb0: 0xefe1bd00f988188f799f6392, + limb1: 0xe19379ce8a0149ed9612a2fd, + limb2: 0x1eb37981d83850a2, limb3: 0x0 }, w11: u384 { - limb0: 0x636a765e13a7acf068bddc91, - limb1: 0x7ad9b45b9d00e147a4a70e7d, - limb2: 0x1b125ae5b4befdc7, + limb0: 0xccf0f59d7d17dcaa90a672ff, + limb1: 0xce098f69bc026846552d961d, + limb2: 0x2f39b97e54be50f7, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x1101d12d870bf89597896a5f, - limb1: 0x6068c2fef72b9fede8f98b2b, - limb2: 0x1da3ccbf70793b4b, + limb0: 0x71b9573e82b3a571c5806c32, + limb1: 0xcdc370fde8e36eafb8078047, + limb2: 0x2792424f4b469e94, limb3: 0x0 }, w1: u384 { - limb0: 0x6c77c8e4e07314bad629434e, - limb1: 0xd48522742a712bfee4f02f4d, - limb2: 0x1ab18e320351912f, + limb0: 0x3c217e45123bbd2f8e2540cd, + limb1: 0x4ade8507220c1d8f95ca879e, + limb2: 0x2b2c4670c6c9e443, limb3: 0x0 }, w2: u384 { - limb0: 0x94a4011f466711585535fff7, - limb1: 0xb3ec876bfd5e93dc0d98330d, - limb2: 0x2e961f17fa4a669a, + limb0: 0x815b877bd6e5f0f43faa7b11, + limb1: 0xdc8f7285bb7d1f4ea046bf26, + limb2: 0x1cafdffe31324910, limb3: 0x0 }, w3: u384 { - limb0: 0xa10c8c18dc0cd33dca2a0b78, - limb1: 0x216250a35c8ab180b88fa2d, - limb2: 0x13783a1edd86ed0b, + limb0: 0x74aea5cbefc0f9cd1e7e8180, + limb1: 0x6d91ed877a937aa48877573e, + limb2: 0x2609770fef733363, limb3: 0x0 }, w4: u384 { - limb0: 0xf370ee07b112cb890cf94caf, - limb1: 0x9aeef8c62fa6356458d128f4, - limb2: 0x12b869fa76030912, + limb0: 0xbf1ff9eae912a94369258547, + limb1: 0xde2bda9b3df0ae097d6ff917, + limb2: 0x1a4460b7f28cbe74, limb3: 0x0 }, w5: u384 { - limb0: 0xd57297e640897acad43686f1, - limb1: 0xdb90eca57bab38d92e02a0f6, - limb2: 0x2605945c94928153, + limb0: 0xa09c23c23fc0fd411e683ba8, + limb1: 0x42dd734aeecac55a3cfdd1de, + limb2: 0x25293d63e5cf5d9c, limb3: 0x0 }, w6: u384 { - limb0: 0xfd3d64081d5c4cd9170fd24b, - limb1: 0xaa9adf8fa1ffcab9025df55d, - limb2: 0x2fde50a467d784b8, + limb0: 0x94d3cb1d9c70654787bb7dbe, + limb1: 0x7ddf15b71a7703fbc0ec92f5, + limb2: 0x288a11005e66838e, limb3: 0x0 }, w7: u384 { - limb0: 0xcb5bab65c464a4dd327bb27, - limb1: 0x81fed11e213c0da2b2df0c21, - limb2: 0x29c548cea68b2c48, + limb0: 0xe5b6bd8c4f3ee47462a346f8, + limb1: 0x5e2f26052f2e74b394a703b0, + limb2: 0x2df31cc7e6614d3, limb3: 0x0 }, w8: u384 { - limb0: 0xc9c7857f4df8694a6c4abb6, - limb1: 0xe18f3179c9ab4ee26890f45e, - limb2: 0x28321983e251934b, + limb0: 0xc6187740161f28253e6c763d, + limb1: 0xb0df017e4a7785a1a4c96e44, + limb2: 0x2f7e55651891991b, limb3: 0x0 }, w9: u384 { - limb0: 0x807b77e59a7f7bfd81e4e531, - limb1: 0xf8208478a796425d9039781b, - limb2: 0x1a647363d75d56e5, + limb0: 0x26faab6754e7543df2a66ef5, + limb1: 0xec7ddad65a349bf1dab9a7a9, + limb2: 0x15fd96a86d1ac58f, limb3: 0x0 }, w10: u384 { - limb0: 0x2044be51a9211915fb144a71, - limb1: 0x8d3817c0b137839f0a2a880f, - limb2: 0xa80cfd1c626d5c8, + limb0: 0xe9561ed42b265fa6d28261f9, + limb1: 0xd3f2f876ae2cb7c31211f67, + limb2: 0x1bef9b500aa80f44, limb3: 0x0 }, w11: u384 { - limb0: 0x62a0c2e34aca1fb9f2f127de, - limb1: 0xa9a6eecd8bad6f8f1c1b582d, - limb2: 0xd9a260faf6afd36, + limb0: 0x501e78e7279bf790af1514d0, + limb1: 0xea30861dc29beac7b9bd0b94, + limb2: 0x28856fb1ead78d2a, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xac4096b6265e56640bd0a2c3, - limb1: 0xf9f9c92a043fdf4fc3d52bcd, - limb2: 0x1c072cd43ae44630, + limb0: 0x2fb464340a1d1de976a5b0e0, + limb1: 0xfed71f8100fe64d7a68597b6, + limb2: 0x26a0200198b38ff1, limb3: 0x0 }, w1: u384 { - limb0: 0x80138dd49beafa9efc18360d, - limb1: 0x3ee4f752e1ae512e6151a8c2, - limb2: 0x1c807f930cafb227, + limb0: 0xb8db1c331ce567af52fd3350, + limb1: 0x43fbfaf6c3c92517d7ee130e, + limb2: 0x10fd84b217021d80, limb3: 0x0 }, w2: u384 { - limb0: 0x330c6e6652f1eb3574e112cb, - limb1: 0xf00cc60a6ef671ee066f8940, - limb2: 0x22a725af6d7fcaec, + limb0: 0x89dabbf900bc13f35114e296, + limb1: 0x58db5662a056444013f2afa8, + limb2: 0x1bdcca45f1b7ee82, limb3: 0x0 }, w3: u384 { - limb0: 0x49a5969788196d6b1f7572fc, - limb1: 0x7a488877122133b533216eae, - limb2: 0x3008dc2015a2dfc3, + limb0: 0xa410b1dab682a71b6a181bad, + limb1: 0x7d018b0624c18b0de91d6258, + limb2: 0x8cb7fb79da3356f, limb3: 0x0 }, w4: u384 { - limb0: 0x5ed3d25fa550830c546e85c2, - limb1: 0xb0aaf21d4b941bcefc28707b, - limb2: 0x852b142e0a8bc5, + limb0: 0xc380d238a5b6fc414f1f20ef, + limb1: 0x8172822e4c07fa6a8069d201, + limb2: 0x6cd45279c42668b, limb3: 0x0 }, w5: u384 { - limb0: 0xd815d61587143af9251596c, - limb1: 0xd1df0ed8412f2a9fe5e0a7d, - limb2: 0x176ccc764efba88f, + limb0: 0xb7c9cccdb2f2c5a0cfb41be9, + limb1: 0x3a56523926271356a51c2e9a, + limb2: 0x283181d0ddcfa955, limb3: 0x0 }, w6: u384 { - limb0: 0xfdc813abb7afb3ae8fc0e2a7, - limb1: 0xc06ce26aae4f22cbf59d49e1, - limb2: 0x139045aa44022d5d, + limb0: 0xb9c316abcf71be2ce03bf119, + limb1: 0x467acf329058a48bbb84340e, + limb2: 0x168b2a886769f813, limb3: 0x0 }, w7: u384 { - limb0: 0x33a98dfa3a7a5946567065db, - limb1: 0x3b38b68fd1531ac369146025, - limb2: 0x8ca895325300910, + limb0: 0xed1cf62b6567384af78480a0, + limb1: 0x2c0b391e4d9126536b3bac0f, + limb2: 0x639dc8fad187299, limb3: 0x0 }, w8: u384 { - limb0: 0xfc7c960024325c17ef11bebf, - limb1: 0x2c7118fc2bc91c8a203768ba, - limb2: 0x2c054d68d57066ec, + limb0: 0xeca0e15843a9a9416415ebab, + limb1: 0xa1d86da727ecfcfa5e901da4, + limb2: 0xd6f124de4d7914b, limb3: 0x0 }, w9: u384 { - limb0: 0x4d55dd3988d07db4f1d985c0, - limb1: 0x59468164d291e1e57407c8b2, - limb2: 0x2a34f777fc4be117, + limb0: 0xad7459a0dde3f7deb7da02ec, + limb1: 0x93e1e295a79b50d9cb9fda4f, + limb2: 0x1a47939f13c06a18, limb3: 0x0 }, w10: u384 { - limb0: 0xba27bfd6457f90d72ea00cd7, - limb1: 0xa30d99a3c076f4f04c029a36, - limb2: 0x16dc413b940d4585, + limb0: 0xb14c5b5aab1b2710dee149a5, + limb1: 0x2797b18f39c5316354e3512e, + limb2: 0x1db4966b55af6b5a, limb3: 0x0 }, w11: u384 { - limb0: 0x98c8839559714223086b2ff9, - limb1: 0x74fe391989fdb7d6eb61a67e, - limb2: 0x48c3bfd94851bd9, + limb0: 0x8ac14c61ed3c08bb726a3766, + limb1: 0xc1fb96d60c514f7e773b60bf, + limb2: 0x11bbaf01742f280a, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x7f5951f5641b5970e90595e5, - limb1: 0x922105f7efe2c1e9e8540438, - limb2: 0x2c52e1fee68f43a8, + limb0: 0x655ee0da49c31d7bb6102df9, + limb1: 0xdb65efd6e322e0122d2a343c, + limb2: 0x26dab597f313220c, limb3: 0x0 }, w1: u384 { - limb0: 0x8a6551fb23236b8434f1c463, - limb1: 0x4dec28651c5bb145c5d4b5bc, - limb2: 0x1442a11b8d0ea3a4, + limb0: 0xa55f006222022cd0f9cb8408, + limb1: 0x2bbce73a2501087bd4577969, + limb2: 0xe793b66170a6589, limb3: 0x0 }, w2: u384 { - limb0: 0x5f604525f1ac52828bfc026f, - limb1: 0x280ebc7c312c25eaa745bc99, - limb2: 0x78cf8494ba79978, + limb0: 0xdf0a0fb7daf84e3e62ab2ca4, + limb1: 0x9693806c2c9f4a13ae53476c, + limb2: 0xc2455c887ba06fe, limb3: 0x0 }, w3: u384 { - limb0: 0xd9677f18224acc315ea220a5, - limb1: 0x756554cf6fc527cd0233636a, - limb2: 0x1c098edd2e76c9ce, + limb0: 0xa70d837bc288f10f51d781c4, + limb1: 0xed5684845e84efd37496f2e3, + limb2: 0x22c7b6b33e02e1f9, limb3: 0x0 }, w4: u384 { - limb0: 0x61122a0273b7c8da62415468, - limb1: 0xfed7bc38f07addb0e36e3302, - limb2: 0x2338157b752689de, + limb0: 0x70eb3f10897d924f937ecbd1, + limb1: 0xf8efac5c7b1f915173431a98, + limb2: 0x2d0a7bba42174496, limb3: 0x0 }, w5: u384 { - limb0: 0x3154a501285eb668f70f5f3b, - limb1: 0x3fe529ccae53a4466221d520, - limb2: 0x21a4802e91e4b83d, + limb0: 0x70e4c9dd7990241441dbd925, + limb1: 0xc2926aabf6c19daa6b500098, + limb2: 0x80e7ec7f3efb12d, limb3: 0x0 }, w6: u384 { - limb0: 0x7746fe83c6f6b7c0a74827b8, - limb1: 0xf7c7e62e34d0acda3a147dad, - limb2: 0x24312e940b85d9b1, + limb0: 0x9a146ada1713705585c3df3d, + limb1: 0x914f9eb1adcf939de21c28af, + limb2: 0x2f3ec9f630685ab2, limb3: 0x0 }, w7: u384 { - limb0: 0x8b0ca3fba513f096fe34c1a4, - limb1: 0x4db69ed672b0a3f5b5fec472, - limb2: 0x140957c9a4996dd4, + limb0: 0x9a25350e2a34b9dd2322e0b7, + limb1: 0x2d518c2930225d0a8f26da80, + limb2: 0x23fc6ac85dfbbeda, limb3: 0x0 }, w8: u384 { - limb0: 0x1498c2417cd162541d4f566a, - limb1: 0xd076192da8e9aea44eda0461, - limb2: 0x13123e6566f0b4cd, + limb0: 0xa3a7d79941bd64c37761a401, + limb1: 0x57852b970b4b4cc365fe8a8, + limb2: 0x2481c950308480b7, limb3: 0x0 }, w9: u384 { - limb0: 0x6afe273647150d3aae28e930, - limb1: 0x6a41bc9eb1a1b8566473f3dc, - limb2: 0x2bd720811167b3cd, + limb0: 0x2743b4a11f22fa20a0e6687e, + limb1: 0xaadc17d4cfc4feee2188f301, + limb2: 0x5e3e94d40773ed3, limb3: 0x0 }, w10: u384 { - limb0: 0x967b3f1190a7f49a1f8ff184, - limb1: 0xe6166c7bc543c1467dbb83be, - limb2: 0x1d1cd7e2fe09cecc, + limb0: 0x5e6f596441264fd56d8c897b, + limb1: 0xabe88f615dff431c7caddaca, + limb2: 0x25cc429cf974eb3e, limb3: 0x0 }, w11: u384 { - limb0: 0x565533867bf7d50c743b11ce, - limb1: 0x23377a1cbceff7834247644a, - limb2: 0x10d6fd50dc4deedc, + limb0: 0xc66291a513a3cb70c7a79bc6, + limb1: 0xc95dd0b3e6eed3adb49b665, + limb2: 0x2a2029d1723a06e9, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x745d4df1f40ad4ebfe121b6c, - limb1: 0xfeba70669b86a73e1408745e, - limb2: 0x1446be98926c2263, + limb0: 0x3b091a622d764e7322c7cced, + limb1: 0x148828e5b964b760ceb5aeb1, + limb2: 0x159e3825a14800cb, limb3: 0x0 }, w1: u384 { - limb0: 0x3908f240d441ac80d79bd682, - limb1: 0xd1777d4b9a5d1a7b3b628c09, - limb2: 0x24e5fdb96f182b22, + limb0: 0xcc762d4be9efe639795787f8, + limb1: 0xc07fa80b07611834abfe1036, + limb2: 0xce5160939bde6dc, limb3: 0x0 }, w2: u384 { - limb0: 0xbd943d01d2e502617e49f85f, - limb1: 0x2237e1490baff90d89454ef9, - limb2: 0xcfe6caf7fbf007, + limb0: 0x4fb9acd0821b51c2d7132b4d, + limb1: 0x3df9e8a6a2f922c0c4d74b11, + limb2: 0x76ed88c060f901e, limb3: 0x0 }, w3: u384 { - limb0: 0xa4d7d2aa027e0dabedcc432a, - limb1: 0x5a164c986ac6123bc27a9011, - limb2: 0x10c75b15e4481c31, + limb0: 0xf869206f6a63d2dd8fe0810c, + limb1: 0xe291f6ca82d1ca4a123ac798, + limb2: 0x23f96d2a1b38a079, limb3: 0x0 }, w4: u384 { - limb0: 0xd3e48054b2ffda567292c881, - limb1: 0x9faa544697ffa69a5a3872a, - limb2: 0x10175f94d2867051, + limb0: 0x93653774f9f0261598db687, + limb1: 0x915648d23f06e5a278441150, + limb2: 0x2345cde707f41c07, limb3: 0x0 }, w5: u384 { - limb0: 0xb688e896cc1a38ba0700618f, - limb1: 0xbf9554e55f95518ad95cee72, - limb2: 0x11055f6ba230724c, + limb0: 0xfc21e7092217f17f02bc3d6b, + limb1: 0x7297e5a0afcd9b2a19b63b96, + limb2: 0xa9a4546439f4779, limb3: 0x0 }, w6: u384 { - limb0: 0xb216ced4198206f71d7f5baf, - limb1: 0xc41001898e70498703aeec0, - limb2: 0xb1fbd764359ef5d, + limb0: 0x26017b441533bdd4ffba3c23, + limb1: 0x17a34447d247b67ac651deb, + limb2: 0xe426486bda63b2a, limb3: 0x0 }, w7: u384 { - limb0: 0xc434cdf4bd7a30072b6b7f78, - limb1: 0x931da3059537507e5d84aa57, - limb2: 0x1383bfc9fe589bf7, + limb0: 0x3b8213c504640f20abe5729f, + limb1: 0xa017a5d00ba2bc35ab13a710, + limb2: 0xfe2e7f3ed0652a5, limb3: 0x0 }, w8: u384 { - limb0: 0x5cec413458c4d1294836b49b, - limb1: 0x40578c003119b4649159c80, - limb2: 0xe3b1e8a87b623af, + limb0: 0xfc809ab03fb88ff889c80e8, + limb1: 0x4a01bf86fd571e506f3daa2c, + limb2: 0x25d5ffb03d29e13c, limb3: 0x0 }, w9: u384 { - limb0: 0x8ee88fbf58e97f2d0096c373, - limb1: 0x15f9d2f92fe6c9bbd0053b69, - limb2: 0x21014bc91afc75f5, + limb0: 0x9fefd16ceb2114895fb3ca91, + limb1: 0x73be4c195a343987fc69bceb, + limb2: 0xfa0da347eb1314a, limb3: 0x0 }, w10: u384 { - limb0: 0x94a5a2603b7846020dae44ff, - limb1: 0x53de5b6d1b2515399587fe6a, - limb2: 0x18cd4363e5d1830b, + limb0: 0xa2171b9629c06a0124916a1b, + limb1: 0xdd057959ca35bc1868606be4, + limb2: 0xa1c23ae11a427f6, limb3: 0x0 }, w11: u384 { - limb0: 0xa2c81046559d99c6712edcaf, - limb1: 0x7589f1555d4d89f22e4825b3, - limb2: 0x1c12482044f16bd4, + limb0: 0xa587f868c15c4513066bd237, + limb1: 0xbda2b5cbfa83d12344fc25b5, + limb2: 0x17468dcaf12f430a, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x4b0f90e16b89cc645ff1d3a8, - limb1: 0xc11b34e6bb2035ef755f1d5c, - limb2: 0x120467226fd68ca, + limb0: 0x68f9d8cf5b8f433fee83b4e1, + limb1: 0xacddd41a2e0f626c61bd9baf, + limb2: 0x19a8ca49b9e3e6c4, limb3: 0x0 }, w1: u384 { - limb0: 0x949e90303fe57be96ab1ae23, - limb1: 0x4dd264142438d7d9287311cd, - limb2: 0xbde89dc0dece2ae, + limb0: 0x9178253788f0da2afcdff4a3, + limb1: 0xe948dea929a6cf19e75f3013, + limb2: 0xff67b93057777ce, limb3: 0x0 }, w2: u384 { - limb0: 0x9dbdfc26cd105e6525247695, - limb1: 0xd7c83a994c3fc8261951953e, - limb2: 0x1db62771fd508839, + limb0: 0xf1df7799bc93bf87edc734b8, + limb1: 0xa60529f7d7809361aeb6f2fa, + limb2: 0x179a6475c5ffa04e, limb3: 0x0 }, w3: u384 { - limb0: 0xf30e6aefe520854dc7555586, - limb1: 0x1397f752468e2c2ca20ad589, - limb2: 0xebc90e490c9b037, + limb0: 0xc6e6b9f93b4e898c11908df7, + limb1: 0x8f56b043f1653b6f6322f82f, + limb2: 0x26dad2d54a50cf75, limb3: 0x0 }, w4: u384 { - limb0: 0xb22c6cece149b4f0b80fe11c, - limb1: 0x56847ae73f33df03b6b5e76f, - limb2: 0x14a17e18b981bd58, + limb0: 0x779a4b732f513834eac52b88, + limb1: 0xf6982da90f9fff48cfab88cb, + limb2: 0x1565d2242787e0b2, limb3: 0x0 }, w5: u384 { - limb0: 0x7d79c64601b2efb446765be5, - limb1: 0x2260b95159b962b6630f30ae, - limb2: 0x163a5f9682a05def, + limb0: 0xc32e15100671d8b648c8f05c, + limb1: 0xd04dea869f5ca24f3325a031, + limb2: 0x1f9485491368a31, limb3: 0x0 }, w6: u384 { - limb0: 0xe79a26d380d7a6f70dd0d4d8, - limb1: 0xf74f2bb2c7697246da06432c, - limb2: 0x27dd38fc79290056, + limb0: 0xb7a53441c7034ea9bb996705, + limb1: 0x1b151762fe202c776bbe317c, + limb2: 0x10c278934d63ac84, limb3: 0x0 }, w7: u384 { - limb0: 0x35e9c220713e550c9953a666, - limb1: 0xfd1f822c19a0d2b1a9c763c8, - limb2: 0xc4a79ab960b1490, + limb0: 0x9dd86c42708578506155c739, + limb1: 0x37b3fa43120f028ca32c5746, + limb2: 0x173cf33903c2963b, limb3: 0x0 }, w8: u384 { - limb0: 0xfb7390d1a4dfc2cf6eb7824a, - limb1: 0xa8a5aba67731d7d7e739c2d, - limb2: 0x2a0d4dde0e0619fb, + limb0: 0xaa726affb761a516f2270101, + limb1: 0x56cae8361d75c484927e14f1, + limb2: 0xb31a67a9f9eaff8, limb3: 0x0 }, w9: u384 { - limb0: 0x4fa0543eaaea2e40b0dabe4e, - limb1: 0x4ddb343535e112002f5ede2d, - limb2: 0x5572f419e64ffe5, + limb0: 0x7370ec70cc1aaa000ff867a2, + limb1: 0x8f7a02c609046e2ff2dad405, + limb2: 0x27100a1e7e7198eb, limb3: 0x0 }, w10: u384 { - limb0: 0x8bd3a50906f1dfb0a79b72e6, - limb1: 0x157d5ea626bd98aa09157081, - limb2: 0x334cf12d0896e5b, + limb0: 0x55369391f3d0540f2f33d94e, + limb1: 0xc142b23e205b706aae43f918, + limb2: 0x6bca22f4b3eb437, limb3: 0x0 }, w11: u384 { - limb0: 0x266b87345559466ae49fe637, - limb1: 0xb22348027013abf93ac67980, - limb2: 0x1a7305efdb0b9e69, + limb0: 0x30d2ed6261fdb29a7ded99ea, + limb1: 0xfc9c1bbd531bea5a414c7233, + limb2: 0x1858dfaf79be4f6a, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x1d39f5baca52a8866acc363f, - limb1: 0x116ee9d8bf26b3c19c1e60da, - limb2: 0x27bf9608345685b9, + limb0: 0x66f908eb2d6c132a2ee36b62, + limb1: 0x6dba9a7c930a3fd36f092ae4, + limb2: 0x2a87e224227e5379, limb3: 0x0 }, w1: u384 { - limb0: 0x1f4d438a6c601b6f64a79196, - limb1: 0xb8ecc74c0dd3062b51ac94e, - limb2: 0x1915ed338bda0c59, + limb0: 0x74a038389fd3a28143f0df3c, + limb1: 0x3f3b5cd72f59a3575575e230, + limb2: 0x28cf6604f6ab76d4, limb3: 0x0 }, w2: u384 { - limb0: 0x8178a4985bb075fdb12fee85, - limb1: 0x191f16256e4bd1f1295f78fc, - limb2: 0x252067684ba5a449, + limb0: 0x9cf6243da1a09166924b2ba5, + limb1: 0x398a057c3343012ba11aca83, + limb2: 0x2ca2d5ffaed626ee, limb3: 0x0 }, w3: u384 { - limb0: 0xe0da5f9395041e94b22a4d47, - limb1: 0x370232ca1b09508c73802add, - limb2: 0x233ad563de06b5fe, + limb0: 0xfdb86229e0f84cd34c8ab0ce, + limb1: 0x78a6af80969066c91acb4e07, + limb2: 0x731e742c3010957, limb3: 0x0 }, w4: u384 { - limb0: 0x251e312a799d78eaab88c63e, - limb1: 0x28e0d038d996277f43c17ac, - limb2: 0xa5b45062c131f9a, + limb0: 0x2c5d1e5bcfc51b18cbbccd07, + limb1: 0x27e602724e27449f4bf17c41, + limb2: 0x1a230c9c769c6081, limb3: 0x0 }, w5: u384 { - limb0: 0xc41e68426923616cdb036cc5, - limb1: 0xa5c825e4b1218d44957984ec, - limb2: 0x2000edd7d543f5f0, + limb0: 0x6cc706bdfa44aed6c2f97a85, + limb1: 0x772400ae33406fcab6b7ce66, + limb2: 0x22fb1b73913f0198, limb3: 0x0 }, w6: u384 { - limb0: 0x20eed39eae87d297aaf0f968, - limb1: 0xb48d18ad1cd40603ed517953, - limb2: 0x109aa66c076c0bef, + limb0: 0x7cbcfdc3c01a08bae671cb95, + limb1: 0xefd8880e8fcbf9dc8288de6d, + limb2: 0x2a1e1b8b6a388e1e, limb3: 0x0 }, w7: u384 { - limb0: 0xb2e147fbb4fe5eab7b0d4d9c, - limb1: 0x4b45be0c89da08da6b6a63f3, - limb2: 0x67aaaeebe2c6206, + limb0: 0x2c01855ee47a9d0fcd62cb7f, + limb1: 0x471fdadcd54eec4dbd621c5b, + limb2: 0x1747c79e258a2af7, limb3: 0x0 }, w8: u384 { - limb0: 0x230e5f3eccfdac4172feb72b, - limb1: 0x634abc2ad95df3eb48fcb735, - limb2: 0x53e55d60d3f70c4, + limb0: 0x5e7b7f0f8d09d6cf44f367e, + limb1: 0xa19461a4b3150953eeb2b3c4, + limb2: 0xfb1759c7621813f, limb3: 0x0 }, w9: u384 { - limb0: 0x7db41ba6f7f583b995d1507b, - limb1: 0xd2b3384539b596abb1071d42, - limb2: 0xf54522908b30309, + limb0: 0x8feb1bdfe6a8b8aefa5f36e0, + limb1: 0xcdd66a68197cee726bf44d17, + limb2: 0x2798522dee34f8bb, limb3: 0x0 }, w10: u384 { - limb0: 0x5017b86fd3908fc4fcb965a, - limb1: 0x243884f851652918bda912a9, - limb2: 0x10c8feb59f554822, + limb0: 0xcfe15d4d2e838adc1cad46f7, + limb1: 0x62825646c1338ace8cefef3d, + limb2: 0x82492d8b353d83b, limb3: 0x0 }, w11: u384 { - limb0: 0x3cbba340166f13405364ae0b, - limb1: 0x69b32033e6fbc532ea6f241b, - limb2: 0x1536fe1c39b64567, + limb0: 0xcae49ace581d198ef592f5ea, + limb1: 0xc48f60a45c8270688af93b01, + limb2: 0x16d52fc355e9f3f8, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x332b7f5def8518dfc2ae6a4f, - limb1: 0xbcb8cbe34980927782d74755, - limb2: 0xfc5775728262851, + limb0: 0xffeb2830071ef37734efd49c, + limb1: 0x80e5c04dcde73905d621d1a9, + limb2: 0x2c278845633870d, limb3: 0x0 }, w1: u384 { - limb0: 0xcb4cee42211ed8eab5e19f29, - limb1: 0x1acda355e4dd513f5288872f, - limb2: 0x291ab23b8bae5ee5, + limb0: 0x19c0d120a24ae6296d39afb8, + limb1: 0xe742674cb830d955b04178f4, + limb2: 0x1ff3b112a56eae10, limb3: 0x0 }, w2: u384 { - limb0: 0xd11b538e67b7ea8d4f2f24e1, - limb1: 0x85b6203356cefbcca773b58b, - limb2: 0x2f0493626d89b7b3, + limb0: 0xd0d85413b3d25949a40eb132, + limb1: 0xc5a2f0b1865b6e66255eb2f6, + limb2: 0x2a05268ab1794e37, limb3: 0x0 }, w3: u384 { - limb0: 0x67bab09c9015b0ae99929a05, - limb1: 0xd1d09e273c2267f80abd1065, - limb2: 0x1c48f87bd6e7df91, + limb0: 0x536d6e38425e70ef5f70595c, + limb1: 0x367f61784427993f46b32c87, + limb2: 0xb56cafc6bbfa5df, limb3: 0x0 }, w4: u384 { - limb0: 0x24ce2831250e4e8d9132d6e5, - limb1: 0x95b80fe89a4fe07a2afec8ba, - limb2: 0x24fe8a33ab37aeda, + limb0: 0x5a075ae3a7aaa6191a6830da, + limb1: 0x76d6ec81519980f11b87e7b3, + limb2: 0x13126f08ccd53c6c, limb3: 0x0 }, w5: u384 { - limb0: 0x95362d8b9d7be6f4bcbf321b, - limb1: 0xf7912d8504ccfe9054975bd, - limb2: 0xb7eebc423992992, + limb0: 0x7e6a1e7587d2bf10c4f99f23, + limb1: 0xbcb0a2a9b4c9ac2f66191825, + limb2: 0x95cea30751fcb72, limb3: 0x0 }, w6: u384 { - limb0: 0xa8be852439533c69965e129, - limb1: 0xa52f92050f9cede82caac9b2, - limb2: 0x1ba67f385c0013a, + limb0: 0xdbdd2fc61073fcc938705156, + limb1: 0xf9d402cfb2f8797b66990ab8, + limb2: 0x241794bc3e527921, limb3: 0x0 }, w7: u384 { - limb0: 0xdd20088808d12750e2090f66, - limb1: 0xa8534e201386fa2b800dfd6a, - limb2: 0x2de8528b846f1575, + limb0: 0x5e7819de9831244c7c02320e, + limb1: 0x1ea1a98111e75bdd5b19a75c, + limb2: 0x1aea9968e9f58e69, limb3: 0x0 }, w8: u384 { - limb0: 0x17c4dcadab29d73ed2a39f48, - limb1: 0xdfed268c7c612a5dc05e9588, - limb2: 0x15f79910014a72df, + limb0: 0xc9d3ce31b362cfb220669102, + limb1: 0x7cdb0bde82d327e35f9f0bfa, + limb2: 0x2ad2bf266c32c162, limb3: 0x0 }, w9: u384 { - limb0: 0x16f96aabc59e89a60ad98d37, - limb1: 0xeea87d49618834a26b5f77a8, - limb2: 0x1b7b77a2129b5270, + limb0: 0x9de17ae52ec7137ef1afb47b, + limb1: 0x4b83ebb28f7eb2f30bde2827, + limb2: 0x9de53c542cf619c, limb3: 0x0 }, w10: u384 { - limb0: 0xba86dea4edf2f204528ca12d, - limb1: 0x70c36682a3659396024a8b4, - limb2: 0x1f9fb990fbf10609, + limb0: 0x2dc27f724b4d9b6981c0a30c, + limb1: 0xf8e2d8cd0e54bc7454b49290, + limb2: 0x22c052c77a6bc98b, limb3: 0x0 }, w11: u384 { - limb0: 0xceabb0f932ae366914cb7efd, - limb1: 0x5326559c668e0c1044b9aeae, - limb2: 0x2a43abec6255fb3c, + limb0: 0x943c934acc546d0e9794393a, + limb1: 0xa41c64e09e80aa74fb103cf8, + limb2: 0xae76d15d0e0e600, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xb41d92c9259eac40d815d966, - limb1: 0x1eca970525cb288d3953b12a, - limb2: 0x1fc9b8f5bcd17f33, + limb0: 0x7a0162b762cf1a076855b456, + limb1: 0x91f2fe0c8d37ab20ab66da16, + limb2: 0x218fb56284764dcb, limb3: 0x0 }, w1: u384 { - limb0: 0x14de70d9f7bffee5a81254b6, - limb1: 0x1e50fc364bc810f6e6f45add, - limb2: 0x1a14ee9036edc45c, + limb0: 0x55aa4b96d366bfc300f88d0a, + limb1: 0xfeff0daf90bcaceb44d0d012, + limb2: 0x2ec948a61484a3e1, limb3: 0x0 }, w2: u384 { - limb0: 0xcaad6abb0135c9a952e8bd1, - limb1: 0x953629dd64bd13e0942262f7, - limb2: 0x2cabc213ed2b7913, + limb0: 0xe154575ba3de8f64c3fe7b09, + limb1: 0x81abec1f17a476037a03d5de, + limb2: 0x243658b68dc8b269, limb3: 0x0 }, w3: u384 { - limb0: 0x412a172579a4995e65694b1e, - limb1: 0x288974e39287b7579b604f55, - limb2: 0x5590950aeceb865, + limb0: 0xdc99ec24fee21b075042322d, + limb1: 0xaea7152dc52c57902c1e23cc, + limb2: 0x1e920aa69dd11ec, limb3: 0x0 }, w4: u384 { - limb0: 0xfc96238994f2184bacf941cc, - limb1: 0x41446d0128a5657aaf3d4ace, - limb2: 0xe5a2ee934087f31, + limb0: 0x45b3fdd524cd5e4095fb50d0, + limb1: 0x83d5e791ffb0a23438e14c97, + limb2: 0x291266d7b481a7f, limb3: 0x0 }, w5: u384 { - limb0: 0xcfb183b35ec324847a9360dd, - limb1: 0xa8b1b0fcfeb2f6b4a2edc72e, - limb2: 0x198a38b04b042249, + limb0: 0xb82c2522b1a0d8e942430b4a, + limb1: 0x7914a97216b83b6f01736e14, + limb2: 0x2f9030a9691669da, limb3: 0x0 }, w6: u384 { - limb0: 0xeaf000f61d8be9fc012f791b, - limb1: 0x9132ef995c19808f1764ce0, - limb2: 0x14859f272508b2d4, + limb0: 0x82db0b379c4b90f0b09ad470, + limb1: 0x38d10b1060d9607761de3053, + limb2: 0x17f20ebb614234a7, limb3: 0x0 }, w7: u384 { - limb0: 0x911fb89e68a9ebc3a4aca1fc, - limb1: 0xc52875d84d9adca238bd4b97, - limb2: 0x1a8b82df18e09f81, + limb0: 0x7fd8b2f0694da1257a7e99f9, + limb1: 0x1332ef6fb2002f3e17f72224, + limb2: 0x27aeb969e865cf93, limb3: 0x0 }, w8: u384 { - limb0: 0x739feb2547f7adc20220c070, - limb1: 0x2c9e84d93b3c8bcb7e7379f4, - limb2: 0x1ce15f5a1c38f9ec, + limb0: 0xdcf2de9ecba8d40ca4e16c7a, + limb1: 0x7c9e67a51e011c404b455bca, + limb2: 0x1d96aacb046ff0f4, limb3: 0x0 }, w9: u384 { - limb0: 0x49563bfa60bc2a4bbcfd3b7e, - limb1: 0x404602ec7b1fc57ae957993b, - limb2: 0x21927f14bbbaae96, + limb0: 0xc4d690fc7b285528d0660097, + limb1: 0x446fa4d849a07f9ffdfbf35e, + limb2: 0x233beeeb0f3ea4d, limb3: 0x0 }, w10: u384 { - limb0: 0x48db6d5e0e05406b7b3a144a, - limb1: 0x77e18a4c88e897d75cd4e8c1, - limb2: 0x2fd414c69b986753, + limb0: 0xbcf154e5812c13df9354c66f, + limb1: 0x4bfb1356adfd6cef507e05f1, + limb2: 0x14f183f58ea3077c, limb3: 0x0 }, w11: u384 { - limb0: 0xfa090d4e8e2fd4b33f83467, - limb1: 0x6eae5d05a0260ab51ddd70ad, - limb2: 0xd0574b5faa530fb, + limb0: 0x2aa0f346034beb4491a7669c, + limb1: 0xdb1603f1c71d397e0b6dd28e, + limb2: 0x2f637d86b50afad3, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x212afb716193928013536ab5, - limb1: 0x32f50ccc411e5bd444bfa819, - limb2: 0x699453f9546c06, + limb0: 0x4aa05c5799f4caf5872b88b3, + limb1: 0x6a0639ca3c95363e72e22711, + limb2: 0x153fd3b41bf8e104, limb3: 0x0 }, w1: u384 { - limb0: 0x3aecfb5097d02d332f951279, - limb1: 0xea12c3d06c849a50a4456075, - limb2: 0xef8137bc3f8e273, + limb0: 0x182ca87340b924f976e85fb6, + limb1: 0xabadfd3b021aeffc7ddd3707, + limb2: 0x1d70f605635491ab, limb3: 0x0 }, w2: u384 { - limb0: 0xa1e4c722b47046e3a7344b78, - limb1: 0x102dc558c048bd2ea5ef7a96, - limb2: 0x959193df2569002, + limb0: 0xbf6e57a84cea026175140077, + limb1: 0x8a292294a84c09b7e522646d, + limb2: 0x2a9d4ed071ea808b, limb3: 0x0 }, w3: u384 { - limb0: 0x45e749851768d66929688432, - limb1: 0xab0b43c002b53617fb4a082d, - limb2: 0x18ec9e0e7a7f6e4e, + limb0: 0x95c2e9b451a33140087f1e24, + limb1: 0x658a7ff4ae600e308868b299, + limb2: 0x25f9a6323583d295, limb3: 0x0 }, w4: u384 { - limb0: 0xa457a299488208590cb895d4, - limb1: 0x95edadddbb8ab1e9b9d278e9, - limb2: 0xb8266b6d4dd588f, + limb0: 0x2a1dbfbdffa1556a477e32d, + limb1: 0x81e1c77de3a1067970023a14, + limb2: 0x2b2f294a1ab9c2a2, limb3: 0x0 }, w5: u384 { - limb0: 0xd1960f3407938f6aa2f3a351, - limb1: 0xc9184a1a0b3da04397113045, - limb2: 0x83ea8b7c8ee2344, + limb0: 0x817cb22fcabdd26c7bff7184, + limb1: 0x4c5edeea680b258ae6cd22db, + limb2: 0xf27224313dd7e44, limb3: 0x0 }, w6: u384 { - limb0: 0xc48415efa37ac0b9c8f2f98b, - limb1: 0xb1f05e3d4557695226fbe6db, - limb2: 0x978f830307a983e, + limb0: 0xbfb8275155c9c78dd6efc2a7, + limb1: 0x624d7badf3ab52cc1b476b88, + limb2: 0x804ca8febcd0fcc, limb3: 0x0 }, w7: u384 { - limb0: 0xf74217495f2f58afed2f6b10, - limb1: 0x446105eb170c879741431d1b, - limb2: 0x2afa14308938f6d7, + limb0: 0x6b53efd8b8a042b253b29463, + limb1: 0xdfdd81be65220ae4688a1023, + limb2: 0x24e818c504bd7132, limb3: 0x0 }, w8: u384 { - limb0: 0x6b390e3744c5cdb779b08bc3, - limb1: 0xb63b6db3a07f7bf3dfc5f8c1, - limb2: 0x300ea6360a6859f5, + limb0: 0xf90504dc6302415226fad616, + limb1: 0x74541694d8a46c8578990835, + limb2: 0x2998b15970f466fc, limb3: 0x0 }, w9: u384 { - limb0: 0xc35694b827a7506d0789134, - limb1: 0xc59a5f72f90f996a9329a952, - limb2: 0x149781a1fe2a8484, + limb0: 0xbf20beca62222d322656405a, + limb1: 0x673b59601cd5b3ef4c0b5612, + limb2: 0x1bc34fe73314052, limb3: 0x0 }, w10: u384 { - limb0: 0x356c3f088a5e0e1fb5c4444b, - limb1: 0x5528db3df6717543073d815b, - limb2: 0x2d14419b75503d3e, + limb0: 0xb0a1501f1e19d4ea762bed92, + limb1: 0xb33843025f86c3df85bee910, + limb2: 0x2b82a042849e7d4a, limb3: 0x0 }, w11: u384 { - limb0: 0x811ec5a03d972ecc58ad008a, - limb1: 0x3ddf760ac3dc7b5b6b831883, - limb2: 0x142b38c452e057e9, + limb0: 0xc02d315354a824f5f43b33e8, + limb1: 0xebe515580db629e36bc9e9b2, + limb2: 0xa967101e814b515, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x78f5da6f8a1f8bf82264a0e0, - limb1: 0x8a36983abdb2671a7413475c, - limb2: 0x163811099d0613af, + limb0: 0x305b6cdf8b0dc69a7fa82d, + limb1: 0xf05de6977d2e22b90a18d485, + limb2: 0x93922af982326ae, limb3: 0x0 }, w1: u384 { - limb0: 0x1b95f15f2af77d14e534db41, - limb1: 0xad7967205c7fb9b5c5c77d5, - limb2: 0x2129ad10f671e6f9, + limb0: 0x7d8ede702524df6cff2c663b, + limb1: 0x322279eed4a0f003955f6a1b, + limb2: 0x22ff5d32b9b4c605, limb3: 0x0 }, w2: u384 { - limb0: 0xa9eea32badb687a5914bac8c, - limb1: 0xf21b69c7e97fd07d9147646b, - limb2: 0x1181a79cbf8c8733, + limb0: 0x19e7c8f84222b7601e5ae9e4, + limb1: 0x54b739fdbeae722a5866ccaa, + limb2: 0x15c3d13da39ddb07, limb3: 0x0 }, w3: u384 { - limb0: 0x505379871c61a27fced3a94f, - limb1: 0x2702bfaa4e367e84f86d3ae7, - limb2: 0x150331d2c5f5f0c3, + limb0: 0x5d344c94169f0caaa50d926e, + limb1: 0x8b3c732ba8e87e0059128734, + limb2: 0x2c97a9dc2ca61347, limb3: 0x0 }, w4: u384 { - limb0: 0xa85102a8ec3cc9ac07144917, - limb1: 0xce39329d08be3d93c817f6f0, - limb2: 0x211348ee915f068a, + limb0: 0x7636b4ff779061614a50f59c, + limb1: 0x23d56867e241a7b9b53630a8, + limb2: 0xcfd1fb44c155467, limb3: 0x0 }, w5: u384 { - limb0: 0x2b553654b254b119f525bb92, - limb1: 0xbc57e93b2850fced91bb6786, - limb2: 0x1295f60185ba1e9, + limb0: 0x433730362b33317e08516378, + limb1: 0x3654b8635fd4d8ac660488d9, + limb2: 0x27e7900c8d471a28, limb3: 0x0 }, w6: u384 { - limb0: 0xa82fae62a2c2cde111e0fccf, - limb1: 0xc2f78ac56f6a7d44fd74e841, - limb2: 0x2a02e7cb8c611345, + limb0: 0x399e0bc21d616413d6da782f, + limb1: 0xbaee2d204df4626d5ce0d39d, + limb2: 0x212c90e54f9efbb3, limb3: 0x0 }, w7: u384 { - limb0: 0xb1cb070f32c656557f8e0f54, - limb1: 0x87cdc53730c45d7f1b60b0db, - limb2: 0x3a34b42587d5706, + limb0: 0xd641fc7bf7a95e0e201c17eb, + limb1: 0xc24741efa5d78cdbdfb0dfa7, + limb2: 0x10987d8e268d1983, limb3: 0x0 }, w8: u384 { - limb0: 0x3c416c8a5aa09825c5924144, - limb1: 0xea25d6a3531045a0502b4766, - limb2: 0x13dbae531fb83958, + limb0: 0x20d05fb175330e6abcbd8f82, + limb1: 0x3a34002a86684fefa5b5ce45, + limb2: 0x2cb136cd540679f5, limb3: 0x0 }, w9: u384 { - limb0: 0xaed7c369e354fa62fa14942, - limb1: 0x13d6da3f7607bd5a8632ed24, - limb2: 0x2fc09dece0743e2, + limb0: 0x5f437022c2641a36cedce65c, + limb1: 0xfa96036551cca6829fab59ab, + limb2: 0x252d22e2ca86e2b2, limb3: 0x0 }, w10: u384 { - limb0: 0x9252880ea91748f7c503adb1, - limb1: 0xcdda63125fcf27e12d26d829, - limb2: 0x144323f5e10f9cbf, + limb0: 0x660b74434ae43e97336753da, + limb1: 0xcec6870f205c4b30d0cea1dc, + limb2: 0x1d75d06788d31c16, limb3: 0x0 }, w11: u384 { - limb0: 0x113ecf8d1967f031b6f6c7f1, - limb1: 0xc90bf122b3311cda16f65ad, - limb2: 0xa937f13546085e0, + limb0: 0x2936b74f2bbd73a43184474d, + limb1: 0x72ef99cc5b2873dca89dde55, + limb2: 0x2ff9ac1e81b1e07d, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x8efbb5f00a358c6e8f7669b6, - limb1: 0x9cbb2b5ca2c155379e359515, - limb2: 0x25a4e2908646442c, + limb0: 0xd388a5b9224eb5e49b583f37, + limb1: 0x23b7985bcb1be1df54838683, + limb2: 0x2f90cca15d3c40d7, limb3: 0x0 }, w1: u384 { - limb0: 0x2f177b8296b5a1a214440123, - limb1: 0xef79b79bd0b715b13cd211c5, - limb2: 0x23ac72a060031978, + limb0: 0xae297dede57ef4a2496569f, + limb1: 0x44813a99475062aab6685a30, + limb2: 0x1c840549f304335d, limb3: 0x0 }, w2: u384 { - limb0: 0xc1ae86ed3fe467712f35e224, - limb1: 0x6f17f7fa3472ba0ad84d97e9, - limb2: 0x24aa290034ad07b6, + limb0: 0xf254fc33c7dc4dafcbc6ef74, + limb1: 0xde9b60ffec765bed9472702a, + limb2: 0x245df70f04b07b6b, limb3: 0x0 }, w3: u384 { - limb0: 0x280134ae63d6ac6bf8a42038, - limb1: 0xadbb7838d654c0076c8434e9, - limb2: 0xdc68dd8eb661fed, + limb0: 0x77c13e9e7b9a4789713adac3, + limb1: 0xe144b4fa31b8cbb46f1e9f8a, + limb2: 0x2b22f98939644be2, limb3: 0x0 }, w4: u384 { - limb0: 0x6878763d2a9d021fdaffedc3, - limb1: 0x11214f4d9b70794702be06e4, - limb2: 0x1beb7a8c98e53fb6, + limb0: 0xd171b9c4db35bd1ff14867f5, + limb1: 0xf48aae81c3dd3376a325f180, + limb2: 0x28550a70e9aec2bd, limb3: 0x0 }, w5: u384 { - limb0: 0xc76a448f641de0fe96d9f986, - limb1: 0x3978abab5f302b316f151cc5, - limb2: 0x2df85caa156597fd, + limb0: 0x9f82392225a6c0580ee7aa5d, + limb1: 0x79da5d3ed76d3193019fe8d7, + limb2: 0x3fc45656e1a253, limb3: 0x0 }, w6: u384 { - limb0: 0x5e65c023f4c9066999e31095, - limb1: 0x33de96890c382fe8e8508e38, - limb2: 0xdcaa35a7a46ee55, + limb0: 0x7035644a77827771c5ce496d, + limb1: 0xfbc24deebc4d03cd7b0b7afa, + limb2: 0x1245ba7cd2e9506f, limb3: 0x0 }, w7: u384 { - limb0: 0xbe6282ae9e054d98532ee9ce, - limb1: 0x22e3a0fc0fb879513d1880c2, - limb2: 0x2c8ce57d94d66e64, + limb0: 0x8f1b8ac620da797cf5aecc02, + limb1: 0xccbfcac572714536a71f208e, + limb2: 0x8335a8e7441f6ce, limb3: 0x0 }, w8: u384 { - limb0: 0xc2d42db197be6f33572940b9, - limb1: 0x86a3fdf06a4b5858bf0ff7d3, - limb2: 0x464a9f2aa414f83, + limb0: 0xbce36c22d16ec21f4f32cd98, + limb1: 0xdc82ae46042a32e81f59dfb4, + limb2: 0x9f66a3236eaea72, limb3: 0x0 }, w9: u384 { - limb0: 0x77df52289abb6b007563ae49, - limb1: 0xa5d741113dd7f1cd1500de84, - limb2: 0x219d01b5e4618f25, + limb0: 0xb75a95a6a0c7df9b06daad49, + limb1: 0xa7a15870a8ff25d8078bc6ba, + limb2: 0x223db713d2393237, limb3: 0x0 }, w10: u384 { - limb0: 0x27483aeb031cfca8e5937c75, - limb1: 0xfd6b5bef5987732b4287327c, - limb2: 0x16fadd7232bb18c1, + limb0: 0x6750b52c9bca1962dd1bdd8e, + limb1: 0xfddb800eecdf173a193439e6, + limb2: 0x1f2dab6190eb5fba, limb3: 0x0 }, w11: u384 { - limb0: 0x77db5d8bf8b623a78acc7b10, - limb1: 0xb250cdd0f37577228f1798fe, - limb2: 0x1b2cd78590cb3d4b, + limb0: 0xf57939bbd2074f98781d33a6, + limb1: 0x6d0413b73ee053ced45c4d1, + limb2: 0x1c207bdd3c4adb5c, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x22ebd49a502e5ad081f28440, - limb1: 0x7bbb77aad92dc431f1a22a74, - limb2: 0x3f75a34739557bd, + limb0: 0xdddabc115baab56a4f02db64, + limb1: 0x8f1483479752c33d2e52cd24, + limb2: 0x2435ee145a051182, limb3: 0x0 }, w1: u384 { - limb0: 0xe6262276e85c49791195977b, - limb1: 0x96ddd0d34679e03d8ab5bd03, - limb2: 0xd4e5bd6244d352e, + limb0: 0xbf763253ee5ae38c4b090f6f, + limb1: 0x254996b27441f6bfc4a01e37, + limb2: 0x20524d67fe0ee23e, limb3: 0x0 }, w2: u384 { - limb0: 0x76e81ae8167334dfbe53725a, - limb1: 0x7757fbfb43bbe0366b38056f, - limb2: 0xe44cd9c81d9cecf, + limb0: 0x25dcabbb492699ae298ab015, + limb1: 0xd41501cd874a622636fb6d4e, + limb2: 0x2aaf23e6260c3210, limb3: 0x0 }, w3: u384 { - limb0: 0xb208e8dad1d844953019af97, - limb1: 0xbbada308686176156dbb2ae9, - limb2: 0x18d12572278c4166, + limb0: 0xb473d3a9f1081fbff789cb49, + limb1: 0xd90877b05591299d63af3ec3, + limb2: 0x8ef6d0675548203, limb3: 0x0 }, w4: u384 { - limb0: 0x9dd7a57eda226816959149a4, - limb1: 0x943dae3146cfc27cc1213a0a, - limb2: 0x291d4eb6f566db5f, + limb0: 0x3b13dc0417233333fa78aa4f, + limb1: 0x28cd18798d2af6f45311ea76, + limb2: 0x1ff8af2b8e18a3eb, limb3: 0x0 }, w5: u384 { - limb0: 0xce4a046027534247caf8155e, - limb1: 0xe8761c7e6350f9888f539c9e, - limb2: 0x2d4dff1030f46653, + limb0: 0xa3201d1e20c0d838e5ebeb33, + limb1: 0xe3fbf5f609dbb7527971ccaf, + limb2: 0x292cfd1b81a97cb7, limb3: 0x0 }, w6: u384 { - limb0: 0x199e43ed8b40bc5d204daa7a, - limb1: 0x703bd7bf9680df242d2a0744, - limb2: 0x278b77b6daf76af3, + limb0: 0x1775dd03775bd56176ac87a, + limb1: 0xb4d13e1924fb117dba51bc65, + limb2: 0x9494910074f9419, limb3: 0x0 }, w7: u384 { - limb0: 0x9e8ef20a5422192dd582c162, - limb1: 0x883647cd9cc62a72ea1b42f7, - limb2: 0x2271b20740e4957b, + limb0: 0xf2ee9dd47eaff4bd44921ab, + limb1: 0x3b61b300d50d86ff07ab04e9, + limb2: 0xf65b0d32065d223, limb3: 0x0 }, w8: u384 { - limb0: 0x6a4e3ff1d5f0602127bcaa34, - limb1: 0x86c473ee2d10b17277d17329, - limb2: 0x19865cd07593aae2, + limb0: 0x42b901c15c6de1b47f86ed28, + limb1: 0x2322ccb37c5b8357dc57fc01, + limb2: 0x2998c09d3fabf27b, limb3: 0x0 }, w9: u384 { - limb0: 0x75e378f724805606bbe67cba, - limb1: 0x1d3d60afaac677a2d5a742e9, - limb2: 0x2119025040a51933, + limb0: 0xfce9c433824cb88d62d2076d, + limb1: 0xd12dfba23cce78808720a3fa, + limb2: 0x28ca4ac95e30cbce, limb3: 0x0 }, w10: u384 { - limb0: 0xb7d2d03ce40d63cfcb0d7fd1, - limb1: 0x56fc968190d3d2cd587a388f, - limb2: 0xaf15224ce1ecf10, + limb0: 0x31ab8c66426df0fbe454c5e3, + limb1: 0x649c551ab68fb80217840588, + limb2: 0x27ea6be89350b3bd, limb3: 0x0 }, w11: u384 { - limb0: 0x16805e251a46c4ca38badbb1, - limb1: 0x6dc0fbdf3fa399d4be77b32b, - limb2: 0x99855251cb7cd74, + limb0: 0x4a917ec8d644eec4c7975f5d, + limb1: 0x812f7bfd3f27d7018908f2dc, + limb2: 0x1270a95170cfca16, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xc66561f1480203ad584a2eda, - limb1: 0xa3ac959ec31acf5be3eceadd, - limb2: 0x2450a4a23dfc4e57, + limb0: 0x2de7e22f137450652a4d03a3, + limb1: 0x85a17475b6994ff10adcac7f, + limb2: 0x26a28abe1d3e1c10, limb3: 0x0 }, w1: u384 { - limb0: 0xcd484caccf1133ea8cf20e60, - limb1: 0x9b30d85d516e7c89ee8f40d, - limb2: 0x17853ae949ff8cbb, + limb0: 0xa5f09ea09e741a7e988965ef, + limb1: 0x2287e751b82137218bdc1c6a, + limb2: 0x247d2ed9569d3036, limb3: 0x0 }, w2: u384 { - limb0: 0xda81fa51a24ec4036be76120, - limb1: 0xad4415372ed4a110ce126539, - limb2: 0x2709cf9a05c4d735, + limb0: 0x271427df177565deee6e70ff, + limb1: 0xa1d8122af6cbc512db7d0b0f, + limb2: 0x1793c5001456015a, limb3: 0x0 }, w3: u384 { - limb0: 0xbfb389fda15d392b06999ac0, - limb1: 0xca1722d90e058a545b58fdcf, - limb2: 0xb32b64993074fa2, + limb0: 0x6a4d5df7a0016c239160abb5, + limb1: 0x9030778d403c694d05d73d59, + limb2: 0x3530acc41ca6f12, limb3: 0x0 }, w4: u384 { - limb0: 0x1d2107c15842452a9b9d34f4, - limb1: 0x4e9064e63919348e68ab4a17, - limb2: 0x1e3eb6e45a3f6d3, + limb0: 0x2bb13ea1c5f1121b78ca03a8, + limb1: 0xff3b2d8385f7275faad16ed8, + limb2: 0x2ec822f7b9d9ae17, limb3: 0x0 }, w5: u384 { - limb0: 0x97b24c7ca09537d9f6dbc57e, - limb1: 0x6a577dbd424e9d96c0efbb21, - limb2: 0xf6aa0c3dd8d4357, + limb0: 0x405bf1a9711acd2513ebc0ae, + limb1: 0x399f8dddb596c618468c43c4, + limb2: 0x2247020690d5b7ac, limb3: 0x0 }, w6: u384 { - limb0: 0x4c240f9abce3598158451bed, - limb1: 0xb3836564d8a08bd77f2ac880, - limb2: 0x2183886bafa8e95e, + limb0: 0xa16849b2f39b28e1feef5e06, + limb1: 0x7cf106f6e9ba939fd950d4a4, + limb2: 0x165e1787bb97060d, limb3: 0x0 }, w7: u384 { - limb0: 0x109c4d623c03593f04b8c952, - limb1: 0x674e43d6400fc1a815968174, - limb2: 0x16eb4684283667ba, + limb0: 0x517877324d3018ab9812e7dc, + limb1: 0xc3a6fb1d6f4cdb125ab2f8c8, + limb2: 0xd8e70cba598218a, limb3: 0x0 }, w8: u384 { - limb0: 0x119511956778583218fc3a50, - limb1: 0x9caa6241c3282a375035f4cb, - limb2: 0xcafbb2a77f1fce8, + limb0: 0xadfdbb20ce2b8da4891983fc, + limb1: 0x718cb2fd734f10c6a35d25be, + limb2: 0x22fe2f4a145358d7, limb3: 0x0 }, w9: u384 { - limb0: 0xa20c84e02a24311b25302cba, - limb1: 0xd1fc1a2f56f66595318af0f0, - limb2: 0x1868c4835f5347fe, + limb0: 0xe6aa499c5ff76efe88eeb010, + limb1: 0xed9a2504ec06cadcb7c9b9d3, + limb2: 0x15f70b2c5ea6f040, limb3: 0x0 }, w10: u384 { - limb0: 0x466a0bef84955c6e5ecdb7aa, - limb1: 0x62ae5f33285709cbcf9df88c, - limb2: 0x12fd457738575248, + limb0: 0x4fcbce298bb937cb2e9eca1a, + limb1: 0xdb1b6603f78d2c0310fd24c8, + limb2: 0xacfc3a5ceec9159, limb3: 0x0 }, w11: u384 { - limb0: 0xe62886b363db1013b6e65699, - limb1: 0xc5aeedfda4e6405625f323ef, - limb2: 0x2932d1c21ad1fb63, + limb0: 0x1c597f99c3388b021f5a4795, + limb1: 0xb62e8306783e0553fe6cb034, + limb2: 0xd9f88a0c584ab6c, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xb2b34d54e5cdf44b21a992c9, - limb1: 0x4c92a36e681d6e43bf5aec7, - limb2: 0x2a495dedb83939ef, + limb0: 0xdad002c250cee5a9e26950a4, + limb1: 0xfeb7e55192c04627b3ba819f, + limb2: 0x29ef77528e4b434d, limb3: 0x0 }, w1: u384 { - limb0: 0x3f030b2df5d7135260e49e61, - limb1: 0xadbb5ea613251e214baebaab, - limb2: 0x23f32135b10a219b, + limb0: 0xcdec403c5008834c617ccdb0, + limb1: 0x37f498d4d3ea56f9d955c6ac, + limb2: 0x2b6f97f3c9886bf6, limb3: 0x0 }, w2: u384 { - limb0: 0xa9a13a94abc581bd29ba145b, - limb1: 0x8368ca2e6db64292cf5f4353, - limb2: 0x4ac4d792ff11a61, + limb0: 0xd284dc43f07ab8cb199b991a, + limb1: 0x85df8a2972b7613a41b4094a, + limb2: 0x1488e9f06f344757, limb3: 0x0 }, w3: u384 { - limb0: 0xdcb2999372dd7ebf80d5c6e6, - limb1: 0x756844cd2a62a8d2438af444, - limb2: 0xaa726ff5289cf35, + limb0: 0x11f995c57517cdc9a7d1e1b6, + limb1: 0xb489456bdef3b9d74d0e7943, + limb2: 0x190091df74cec37, limb3: 0x0 }, w4: u384 { - limb0: 0xddaf5bf4c37993b3766f75c4, - limb1: 0xccdf8b96fa5deb83b0e209a1, - limb2: 0x19b1989cedc421c4, + limb0: 0xe2b45c253e58fdde1204b6af, + limb1: 0x6ee941981b8d5c93acdf4011, + limb2: 0xb3942fc15e037c6, limb3: 0x0 }, w5: u384 { - limb0: 0xbe6f507992de78969e89b9c6, - limb1: 0xef4ce03da22be12e6b0d4598, - limb2: 0x883af4a86d0908d, + limb0: 0xd4afbc313eb77cc0db2c852e, + limb1: 0xba145737e57b6719d4651c02, + limb2: 0xf815345b7064d2c, limb3: 0x0 }, w6: u384 { - limb0: 0x152519e106745e8e591ab85e, - limb1: 0xd35079d84cd9a0a8499abd73, - limb2: 0x1557e70602a74825, + limb0: 0x5d1c4c5d1fb19d232955ce5d, + limb1: 0x7925453ef5034508da405c17, + limb2: 0x304f97fb705cddd5, limb3: 0x0 }, w7: u384 { - limb0: 0x4802a18c25d6b6a4ea9b9f1b, - limb1: 0x57460332a69b1aa724764c97, - limb2: 0x283acbcd0460fd7b, + limb0: 0x90ad6e1d6f19f878cfc0a046, + limb1: 0x8b21533b068d906d170bf0a5, + limb2: 0xa0056ecab70c5c0, limb3: 0x0 }, w8: u384 { - limb0: 0x275db76316f15ecf2119aa3a, - limb1: 0x8994f42505af4c57421fcf97, - limb2: 0x14886b95bc986dc6, + limb0: 0xeb2e8fc5d47a4e7772153c33, + limb1: 0xeea441ea32291a5d4148c027, + limb2: 0x3032240f99c22c1c, limb3: 0x0 }, w9: u384 { - limb0: 0xacc6f898f00b4d608e4e0a2b, - limb1: 0x32942de8edf0ed46a99cbd63, - limb2: 0x2e7fcd068fc3b869, + limb0: 0x8acb95b1581c153f7998703f, + limb1: 0xf9691098831e9c9f56a2db3, + limb2: 0x1e244f91c46bd0cd, limb3: 0x0 }, w10: u384 { - limb0: 0x8abca5a06ddabd4207889935, - limb1: 0xfcef18a15446e29678f64129, - limb2: 0x59fa0fb55452085, + limb0: 0xb2a2fbf75c1894b800bb77eb, + limb1: 0x4493b639fe3441329d8ba767, + limb2: 0x27b013f23728c2c6, limb3: 0x0 }, w11: u384 { - limb0: 0xeda14f7bd2952504c10ceb67, - limb1: 0xa4034439defd2f4c709ca8a3, - limb2: 0x13385e78213f98bb, + limb0: 0xd0e7dbed6e9e93fe0bde6010, + limb1: 0x9a96c145ccffb8fdf5e01031, + limb2: 0x17ed91a3e919c1b0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x3105e80b7400a30994633252, - limb1: 0x65c97ed7f93f3db509f93dd5, - limb2: 0x2991c44388d7dda8, + limb0: 0xec90ddd5edd94b4f57697521, + limb1: 0x72464be34a284cefa381dbfc, + limb2: 0x1d6c3f80df4f1fce, limb3: 0x0 }, w1: u384 { - limb0: 0xc971b8411d31e084eeafd8fc, - limb1: 0x941016972b8b361e023a5649, - limb2: 0xab9e37bc60fe063, + limb0: 0xff52111973482a8e37f15f9b, + limb1: 0x71ed2284a5f9ef4f8fe463d9, + limb2: 0x2cdaf4af8a1c9886, limb3: 0x0 }, w2: u384 { - limb0: 0xd719988aa964939e169cf60f, - limb1: 0x2175417ceedbbfc95b76d43d, - limb2: 0x1b834e3d159461d7, + limb0: 0xe749d353c728fc421b29e806, + limb1: 0xc24ac58271020f69ff42223, + limb2: 0xec5d2faa92cbd6b, limb3: 0x0 }, w3: u384 { - limb0: 0xc2df5bf6bcc9cbe4dd0d08c5, - limb1: 0xe01809981819fe25bbcc0567, - limb2: 0xe4e9339a01b7697, + limb0: 0x853c9eade89d9bac48d00055, + limb1: 0xf597e9795f7aafac7af407a8, + limb2: 0x2b7b037069ec6e27, limb3: 0x0 }, w4: u384 { - limb0: 0x3ad2cb3fc0efb02e2956696c, - limb1: 0x802c603b6350604baad113f5, - limb2: 0x13d03e321ae1c3d6, + limb0: 0x2adf4128e6046607a7496d03, + limb1: 0xdda490f884d079d8425f242e, + limb2: 0x2e797268c70105d6, limb3: 0x0 }, w5: u384 { - limb0: 0x670f559aa8405a3c763c250b, - limb1: 0x3b112f2e4ace61aeff8d0001, - limb2: 0x16f75c301dad47a7, + limb0: 0x79ae0c2c8b82e7c5692f7a9d, + limb1: 0x91e0406cf364ec54b7c0586d, + limb2: 0x1741adaa9485d6b8, limb3: 0x0 }, w6: u384 { - limb0: 0xefba64e0b5834234304e91a2, - limb1: 0x814d15955a5f521fd8b3b844, - limb2: 0xdf20da0556f3065, + limb0: 0x9734a92392acadfd794e3515, + limb1: 0xea21e1d1c474fd35af86364c, + limb2: 0x2080664493630fb6, limb3: 0x0 }, w7: u384 { - limb0: 0x2c1dc1663444b476b5b8a532, - limb1: 0xb3f6160fc759084f1fdba612, - limb2: 0x1e233ea335523e4a, + limb0: 0xae6f21fde3e50ff26e5eb9a6, + limb1: 0xe6b3d9d4e43a97dca0720061, + limb2: 0x1597ad3bd30a6c2e, limb3: 0x0 }, w8: u384 { - limb0: 0x57ac8c8179ce0eca5269dc83, - limb1: 0xa18194d557ad0a357dbcedad, - limb2: 0x2269278a716a5d01, + limb0: 0x2118ef1487314400ef26c6d7, + limb1: 0x71263139a9a1e2dbfc0b58bf, + limb2: 0xfc2ffa109be0d79, limb3: 0x0 }, w9: u384 { - limb0: 0xdbe0a4c812f0d33b54f41559, - limb1: 0x84570ee2680f62ea1ac03212, - limb2: 0x1e5d61cae3f402d0, + limb0: 0x8fc0b9681355cd2d41e8d02b, + limb1: 0xb22098ecb60cbed351667a69, + limb2: 0x9f5f7ebbb28d8bd, limb3: 0x0 }, w10: u384 { - limb0: 0xdf9f01cb777649b48fd0adad, - limb1: 0x77918e19a1d5ab15cbea036, - limb2: 0x2b0057d5627c71c3, + limb0: 0x28744ba2f420a310d0fb6a5e, + limb1: 0xd505051f29f1e27d645b8319, + limb2: 0x3f5b36a74246aa1, limb3: 0x0 }, w11: u384 { - limb0: 0x2c9bfa9d78466aedc6ba8389, - limb1: 0x76b5c80ed43eeee8879669cb, - limb2: 0x3dd9173f3b1aa18, + limb0: 0xbc02c2ecc19e8ec63cc18b9e, + limb1: 0x4f899a9f0765b55271466804, + limb2: 0x2756ea4c1dd2acad, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x2eb59a915c145efdac206373, - limb1: 0x74990c2cc6387d917a7b5dd2, - limb2: 0x8de6b51fdbe48d8, + limb0: 0xee2654345ebe6858cda9cc69, + limb1: 0x914189f1beaf0b87b807b9a, + limb2: 0x1fa414a049e12095, limb3: 0x0 }, w1: u384 { - limb0: 0x44d9052f13a6b91afc26675f, - limb1: 0x407056917ded850794c0cee, - limb2: 0x1979a24035384317, + limb0: 0x29b9c296d9841ec243fa7104, + limb1: 0x3f40c072f47b26b41b86771f, + limb2: 0x3035e7fc0a2d7933, limb3: 0x0 }, w2: u384 { - limb0: 0x99eb706c76f021f155934b75, - limb1: 0xf57edb0cc291498859c782e4, - limb2: 0x2c38d67348daa48d, + limb0: 0xdc9cafe296842124dfe79ee7, + limb1: 0x558fec9d916f146c27b04539, + limb2: 0x2b93962de717b3e3, limb3: 0x0 }, w3: u384 { - limb0: 0x9fffdbf80475b68b7c9d0bdb, - limb1: 0x4e7ef3529cc4fbdd06659f63, - limb2: 0xc9b71f09a14f8, + limb0: 0x3b8c98678003f34a971a8e3e, + limb1: 0x642d1f31a2b08e14f8cf3ec9, + limb2: 0x20750142b7b350ba, limb3: 0x0 }, w4: u384 { - limb0: 0x9f0eb372fc94df35e5da9349, - limb1: 0xe474ccdeb185bfb5d2fb1f49, - limb2: 0x5c79af4fa1c069a, + limb0: 0xf527aac256234014e3c2a326, + limb1: 0x1ff8c99d8b47ac3ec6026f8, + limb2: 0x7b4789b42fd05ef, limb3: 0x0 }, w5: u384 { - limb0: 0xe1a55b7f585db0bf515bb8f, - limb1: 0xe8f92a6f09806e74c828b496, - limb2: 0x264e6fa1af82fb1f, + limb0: 0x3d289d49627884206a1be57e, + limb1: 0xd3c8de68e46eee292bf7b830, + limb2: 0x23636797bab826b5, limb3: 0x0 }, w6: u384 { - limb0: 0x2378bd57cfc360bfb6905146, - limb1: 0x8a39511d1c4b67f4ba029e2, - limb2: 0x1aa756070c9788aa, + limb0: 0x9efc17d79af5bb7167e7046d, + limb1: 0x435f2aeaf378fc6494901e58, + limb2: 0x17fb71aadaa7b020, limb3: 0x0 }, w7: u384 { - limb0: 0xfa557c1b7d81aecea8ff821a, - limb1: 0xeed5a6797f74c3be9520cdf8, - limb2: 0x17d8ba0a218baeba, + limb0: 0x9049b4e861bfc4d1eec0fce, + limb1: 0x31fb517b84f4833493790afe, + limb2: 0x26d3f97571abddff, limb3: 0x0 }, w8: u384 { - limb0: 0x3378426a12553b1e9500287d, - limb1: 0x8311b2ed7e006ac9a948dcbd, - limb2: 0xc37b9a3ea365d50, + limb0: 0x640870a70a4f648c6561760, + limb1: 0x2ea7009eefe73bb0bc4e658, + limb2: 0x72d0a3b9417ccc4, limb3: 0x0 }, w9: u384 { - limb0: 0xca964f1109ae3c73a52c24cd, - limb1: 0x559563a233b4a38b159c9ba7, - limb2: 0x1bddfec175671b87, + limb0: 0x9f2bfd599bf4c43202ad16e6, + limb1: 0xbdddfc65cd86cb51f0de4b3b, + limb2: 0xe43d8df206ece99, limb3: 0x0 }, w10: u384 { - limb0: 0xcf8bb6aef68b883c719f9818, - limb1: 0x12265f3e125d73f3e7da8a16, - limb2: 0x4c24510edba00df, + limb0: 0xeec98aa44984674da71611ce, + limb1: 0x22f08ea31851ec4dd1d6a0a0, + limb2: 0x2cbffb3f107460cb, limb3: 0x0 }, w11: u384 { - limb0: 0xe90cb79e8fb3568943cb54be, - limb1: 0x1dcb0c1165797735828668a7, - limb2: 0x15e04ca9837ab629, + limb0: 0x8dc1eec347d707830f9d4e27, + limb1: 0x8cfc5a78608a49027f9830ff, + limb2: 0x137cae5017ecc13e, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xe80e800f0029a76d53862291, - limb1: 0xd8b2334d5c44af6c1d31900d, - limb2: 0x2e45af190b416a30, + limb0: 0x17d0a22356d434508c1e8dc, + limb1: 0x6957345051d57a5c35fc951c, + limb2: 0x1a174af5d57bd0c3, limb3: 0x0 }, w1: u384 { - limb0: 0x8f1b8c0f09519a9279c7c34a, - limb1: 0x388e7c0d4e0a501902e75448, - limb2: 0x2c8d6a9fcba9b2ce, + limb0: 0x88b64e9e815a88cfd8537fcb, + limb1: 0x768ef3ad9287dc3254f5472c, + limb2: 0x2f4f2206e49b6661, limb3: 0x0 }, w2: u384 { - limb0: 0xdafbd8f540b4853a6a08fdfb, - limb1: 0x48b12effbb715fa7ffd810a5, - limb2: 0x124e32676f256f8c, + limb0: 0x94f34de4fa49b66f0f040c6, + limb1: 0x58d31fb34967917840697754, + limb2: 0x2541d184c8712873, limb3: 0x0 }, w3: u384 { - limb0: 0x81e9a2bdf532957986840f5c, - limb1: 0x2d9bdcb67e2986ca9e9c4dca, - limb2: 0x2a28a9b40b9d7dbe, + limb0: 0x1deffd3a8bcc46404a9887b3, + limb1: 0x1229c7cf50cdc6366e85c18d, + limb2: 0x2c31a641f895adff, limb3: 0x0 }, w4: u384 { - limb0: 0x8866e2f79af8ee57fe02c3cf, - limb1: 0xf16de056306b4f22a2be70de, - limb2: 0x26f48439eaf31fd9, + limb0: 0x7126902b2c6f3f0a64c2d404, + limb1: 0xd2b5cc71ddde8c465e490a10, + limb2: 0x223415c34df44c28, limb3: 0x0 }, w5: u384 { - limb0: 0x4bcc853870b81efc6f347292, - limb1: 0x15c9c4f46f9dae5b924d5e8a, - limb2: 0x2b85e5bb09efdc79, + limb0: 0x55d19d54b03d3c3b70d0a74d, + limb1: 0xc6b3ed85464c9cccfae3ed2d, + limb2: 0x2b735495a0a997d4, limb3: 0x0 }, w6: u384 { - limb0: 0xb469918f565d088590facc3, - limb1: 0xc246eaa269d79e3256c51b3b, - limb2: 0x68d3e34fb90cb6d, + limb0: 0xaafbf8c97a2ec99e6ac703ef, + limb1: 0xd9be9006d39575f32954587a, + limb2: 0x26676d0f75b4bd05, limb3: 0x0 }, w7: u384 { - limb0: 0xaac70eb5725cde971b1f27e1, - limb1: 0x4b205b6279ef98fd118f4039, - limb2: 0x26ef32976e198003, + limb0: 0xfeb79dfaf309e2900567f4cc, + limb1: 0x7db098e79c07ddd59aef1df8, + limb2: 0x13541c97d5c021c7, limb3: 0x0 }, w8: u384 { - limb0: 0x9f0d6da065d8dd7a90d66d94, - limb1: 0x3e50aaa0bbd3523441ca2011, - limb2: 0x2a547efa29dbf6af, + limb0: 0xedad35288d9d0d281899bf3e, + limb1: 0x5c2665f39c4c4ca1c3420841, + limb2: 0x2802fb0228a55780, limb3: 0x0 }, w9: u384 { - limb0: 0x1566231cbcfe147d9c74a501, - limb1: 0xd10a111036ef06994a4c75cf, - limb2: 0xddea3e62f9296f, + limb0: 0x5368626b9c5525e80635475c, + limb1: 0x6641393aa21d2af05e9954db, + limb2: 0x128aa3bc42bb9331, limb3: 0x0 }, w10: u384 { - limb0: 0xf5e8657fb5fef4cbac635ba9, - limb1: 0xb92fa4ea3f8196d0250e2f70, - limb2: 0x2a7247da78d4b770, + limb0: 0x3f1ea15b7ed973c4176eb270, + limb1: 0x2fb8161aa73f34c6496422f2, + limb2: 0x6f4413b69881165, limb3: 0x0 }, w11: u384 { - limb0: 0x4896554cc1abc4b555aabfc1, - limb1: 0x3197ba9bdd2ed66b4e0859d7, - limb2: 0x24a0dc3bde019c04, + limb0: 0x4797701593f03b72345ff783, + limb1: 0xf5bb478b649ba275760e446f, + limb2: 0x4d13e21b59280f4, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x50f6c55168a1b4284890d258, - limb1: 0xe55edcce41698c53febb077f, - limb2: 0x1f80080df43c5f6, + limb0: 0x3dcd201df8715ca3300ac343, + limb1: 0x1d47d52ca28bb55f1286f635, + limb2: 0x2dbc84ee46bd0b55, limb3: 0x0 }, w1: u384 { - limb0: 0xe92b4fe73476e51df7c7848c, - limb1: 0x68a82b82a24323e42bbae48d, - limb2: 0x248f6c608362e75, + limb0: 0xcf3ff7de769412b7cd13e5f3, + limb1: 0x2e499616312ffe54aa7eb287, + limb2: 0xef39b9dd4007775, limb3: 0x0 }, w2: u384 { - limb0: 0x294d30da019a3129922caef3, - limb1: 0x93c45263c7ab7dfe04d970d8, - limb2: 0x1635a163ef80868c, + limb0: 0xefb1cd17a836032e5eb78b5d, + limb1: 0x351682c208cdc8d387e624ee, + limb2: 0x1c3cdcc2e157e158, limb3: 0x0 }, w3: u384 { - limb0: 0xfaa690d1ee2c7c5b01b61006, - limb1: 0x652df1907d2d9105600666e4, - limb2: 0x41cfa1b74ac3d1e, + limb0: 0x5fe2a8544d787d7e768de828, + limb1: 0xeaab54928bfa195f537dbafa, + limb2: 0x2e82e58159adbcdb, limb3: 0x0 }, w4: u384 { - limb0: 0x103cb784ce1e8c197e3b8fd1, - limb1: 0xa7ec57b82f38f3a54a344cc0, - limb2: 0x22bee6549cd4f016, + limb0: 0x1f76adee97cc1ca7d5ae8f63, + limb1: 0x10ea507420a1eb29b51a35b2, + limb2: 0x1d1a1e3c6f5f73d7, limb3: 0x0 }, w5: u384 { - limb0: 0xb92eb9b752ec56305d1d9d9b, - limb1: 0x69ecdb5db6581e17f082b665, - limb2: 0x249a15b5c0932e0, + limb0: 0x3418c12cccfab36300ae72d5, + limb1: 0x4cc3546345b5c77210c86476, + limb2: 0x2d3b3cda05d7d853, limb3: 0x0 }, w6: u384 { - limb0: 0xf9d549429da7389d4fa491d0, - limb1: 0xb6d4123e186c66c4141b73e2, - limb2: 0x5bd07ccffd451e1, + limb0: 0xc7a6912ed325bf8e5e7e313d, + limb1: 0xacc46c3556654107896522f2, + limb2: 0x2b043279230e30e2, limb3: 0x0 }, w7: u384 { - limb0: 0x233eb62c7362277fa16702f8, - limb1: 0xc67b1034def416eef314e4de, - limb2: 0x304428aa71f8e17c, + limb0: 0xbb62c143867538d5f0be9185, + limb1: 0xbbf4be38498de92e61cfc579, + limb2: 0x294a694476bb1dbe, limb3: 0x0 }, w8: u384 { - limb0: 0xaa19297a040677aeeb0261e, - limb1: 0x4f8ab46913d129c27ac24e55, - limb2: 0xb7c015665237e71, + limb0: 0x94c9239c3eed68a6b09b91e5, + limb1: 0x10cf308d7d11045f7fee8540, + limb2: 0xe20368a76c8facc, limb3: 0x0 }, w9: u384 { - limb0: 0xe3798f6596624db69ecf722a, - limb1: 0x7e9864b29f04312664f9976e, - limb2: 0x2757091263418578, + limb0: 0x3ab381c31efc0c404c9ce80e, + limb1: 0x25bf2fa954b3301610d7a31f, + limb2: 0x2c0f250d6607fc9b, limb3: 0x0 }, w10: u384 { - limb0: 0x95a9e04bea49398b99e2e212, - limb1: 0x374223cfe0e9b6263210bcf7, - limb2: 0x410304883f0b3f5, + limb0: 0x1b0d57b3b64f5278f1fb14f, + limb1: 0x6ddeac406734d36b769f565c, + limb2: 0x13eadbcdb38b12b8, limb3: 0x0 }, w11: u384 { - limb0: 0xcbec2f4e01c5e8a231f10988, - limb1: 0xc88d1aa49c149f9e6fa55da0, - limb2: 0x1a1395e7c145f45c, + limb0: 0xb26eb4b677fc6202569f9791, + limb1: 0x6491aa3a274097b2b679acb0, + limb2: 0x29065c2f3e7f50a9, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xcb10ba882d7e63fe969c138a, - limb1: 0xd31e3aadea937b5a79af6160, - limb2: 0x19ec81b6e23f6a46, + limb0: 0xcc51914d829f2f2fafbd4cc1, + limb1: 0x5ac0d18f9778243363dde5c4, + limb2: 0x2f2e631113b8425d, limb3: 0x0 }, w1: u384 { - limb0: 0x822477a5ce7ca21093e091c5, - limb1: 0xc2a9c693fd13d2891defd340, - limb2: 0x8d41b74d18a059d, + limb0: 0x311f72552220f119c23fcf59, + limb1: 0x2fa1568cdf6f1ec85a4945cd, + limb2: 0xdfcc88912bf94f5, limb3: 0x0 }, w2: u384 { - limb0: 0xc10dd86896e31a9b4ed7d7ef, - limb1: 0x2ea6fd14a26a0eae3b7e0f68, - limb2: 0x5dcec191bdda932, + limb0: 0x658fc150be2afe416e32eaf9, + limb1: 0x646445132eded8c7c85df10b, + limb2: 0x15a9ccca4ef7a760, limb3: 0x0 }, w3: u384 { - limb0: 0xc812a927db61b694bce26454, - limb1: 0xc3f8997c112cab569bd3c135, - limb2: 0x1c04387b1e07805c, + limb0: 0x604b549c150f036201b5832f, + limb1: 0xb762d1ece22d5494160800c0, + limb2: 0x29f505c056a2403e, limb3: 0x0 }, w4: u384 { - limb0: 0xed43e071cc870c5451377cfa, - limb1: 0xcb02a2c30847c1d1c6d88d6, - limb2: 0x31481a2e199b264, + limb0: 0x52db347ecbfb776c6c637a14, + limb1: 0xa081d8c01fd1ef4c95591bf1, + limb2: 0xa8ffa510da10476, limb3: 0x0 }, w5: u384 { - limb0: 0xe9630acbf8c1f4d018e57840, - limb1: 0xfc5c9c708d98e52ec35a3c46, - limb2: 0x15796528c143029, + limb0: 0x7c1835ac7f0a1cf84a158724, + limb1: 0xa1cd4e2e3126b5a44f37f415, + limb2: 0x1b9503e19ac962b1, limb3: 0x0 }, w6: u384 { - limb0: 0xb454e80432e6b3603e5450c2, - limb1: 0xd5b52f8f025ed64591184c80, - limb2: 0x124c5e0c04e00352, + limb0: 0x9b38935d26d576d328b7bd6b, + limb1: 0x82cb64241bd4e9415ea4dc14, + limb2: 0x2dcd356106276b11, limb3: 0x0 }, w7: u384 { - limb0: 0x88a8c02e9a61b3bee4a0b034, - limb1: 0x8e75aafc8cadc423891d1313, - limb2: 0x5483f9f926c83d1, + limb0: 0xd9560271a4df8b95faea1dbe, + limb1: 0xec2869f8840978e49dba9cfc, + limb2: 0x1ae9a78b07c7de94, limb3: 0x0 }, w8: u384 { - limb0: 0xbf0fc73ab7ffa9a13fd6db87, - limb1: 0x9991ce12892be9c5d7f9d46e, - limb2: 0xd421fbcf9f84373, + limb0: 0x60b6b0986e0d8e76e5cb4c8f, + limb1: 0x5c6e885119b7a029923e3102, + limb2: 0x4d0fe3e92195167, limb3: 0x0 }, w9: u384 { - limb0: 0x2d84917c8062b6f766e97458, - limb1: 0x567e92957f296335498bd766, - limb2: 0x2324dea9473053c3, + limb0: 0xbd2fe93ada3cf376e2dbf922, + limb1: 0xcb7344b723ac13d51a9599f9, + limb2: 0x239f275c5ab6276e, limb3: 0x0 }, w10: u384 { - limb0: 0x85d19f8aecc93c04655c12af, - limb1: 0x7c0215d289580d001af79654, - limb2: 0x23c09018d17576b1, + limb0: 0x714bfeb4cd7c2c3b60aba909, + limb1: 0x28b95ed8e7d35bd3e8ad6cec, + limb2: 0x19196269ffabf1e3, limb3: 0x0 }, w11: u384 { - limb0: 0xce699a8a99b0059a4afe4946, - limb1: 0xe44e9dd28ae72f98c716d11f, - limb2: 0xd908b0e9e743643, + limb0: 0x3d19a02171997c4fdc02547, + limb1: 0xfe1b4ae79eee48fe0e9fc8e5, + limb2: 0x3db81d300073a43, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x1b88acf0e3e2e34b676be6a, - limb1: 0x1fd85c41c5e9f62440461f40, - limb2: 0x25acf5265a58c206, + limb0: 0x6fdeaef251b10368e7dc373c, + limb1: 0xf541cbb03d10323937fc050, + limb2: 0x1c9378ae1944fe4a, limb3: 0x0 }, w1: u384 { - limb0: 0x65ed1795916201edea85285b, - limb1: 0xcd46c8085e4420b739d31ff, - limb2: 0x1d0dc9862f0df1d0, + limb0: 0x7b927a63a2c52469474a52da, + limb1: 0x524d09107c9d0454ea0e597d, + limb2: 0x2e73be4b6e0dfc5e, limb3: 0x0 }, w2: u384 { - limb0: 0xecd2e8f903a39a0b8addd6cc, - limb1: 0x2082e9ef8a910f8a9541e883, - limb2: 0x1a5cbd138cd41a39, + limb0: 0xc93e3bce83477658aba0805c, + limb1: 0x93d40e612e297a4b391e0d03, + limb2: 0xf3136e3ec404f8c, limb3: 0x0 }, w3: u384 { - limb0: 0x2e68e538fbfead571621cc19, - limb1: 0xebfe8be18a72e40daad8d290, - limb2: 0x25c63e8499c1630b, + limb0: 0x2f2a2fd6c49a3f605e1c0163, + limb1: 0xb2736ab29a64a9126019ffd2, + limb2: 0x157ddef64b40d97, limb3: 0x0 }, w4: u384 { - limb0: 0xe12e430676ec71dad0d5adb1, - limb1: 0xdfc723da10f43210606196b8, - limb2: 0x10bee69ac0bff7e6, + limb0: 0x58436f53d325297bd356a472, + limb1: 0xbc23758997676042dc6dd7e2, + limb2: 0x1c13b7896790268c, limb3: 0x0 }, w5: u384 { - limb0: 0xdcdc3a09c9f204cf31851793, - limb1: 0xc6ff1624ffb3c3606c4d4fc4, - limb2: 0x217a8d4f35a1624, + limb0: 0x4e0bec6d43e36959163206fc, + limb1: 0x7cbd771feb557d93e217263d, + limb2: 0xdc088dd68477331, limb3: 0x0 }, w6: u384 { - limb0: 0x8ff9be656d6578fb4209f6e3, - limb1: 0x50eb00ee79e9eff10c4df722, - limb2: 0x80984e8da96c810, + limb0: 0x23a218accfe174a63d91dd3d, + limb1: 0xf7a78c5e17d89ab48f7e132e, + limb2: 0x2b95de6da59570c0, limb3: 0x0 }, w7: u384 { - limb0: 0xc9c41bd21859d4e734618b82, - limb1: 0x8ffe23acdb27534527d6c55c, - limb2: 0x1cdc736f486c208, + limb0: 0xb9283a1aac8916343d20f08, + limb1: 0xbca84be2e5b4a201ea288cc7, + limb2: 0x293a136de67274a, limb3: 0x0 }, w8: u384 { - limb0: 0xf2b9264f0bb4c7e7aaada707, - limb1: 0x668c012a8098ba4947200015, - limb2: 0x23204d0e6fa3aae4, + limb0: 0x120557e4194a6c2f44c6dc92, + limb1: 0x5e539c916eb232771af818f5, + limb2: 0x21e9e37ac4944f3a, limb3: 0x0 }, w9: u384 { - limb0: 0x5f024b6b1c7b410cfe68ae83, - limb1: 0x909cfd8b94e195a7f37128f9, - limb2: 0x12d612e110990e43, + limb0: 0x7690a5175fdc120f6d919a6b, + limb1: 0x4a771cd4aa9f8f83040461e9, + limb2: 0x22edbcea8569205f, limb3: 0x0 }, w10: u384 { - limb0: 0xd9bdc77b6412732b47c9222, - limb1: 0x4ef2630a07ccaf0e0bf91cbf, - limb2: 0x1720f2122f73bd31, + limb0: 0x5cdacaf22ae5fb2b0604877f, + limb1: 0xb87c3eff1cd5c501b2c99690, + limb2: 0x255ee8c0cadfa700, limb3: 0x0 }, w11: u384 { - limb0: 0x3f8a226b49cfb1c498fb22d8, - limb1: 0x7544d0ff451a9acf12d68f06, - limb2: 0x9bbd959cf8915a0, + limb0: 0xac9606f71988790aa7930e68, + limb1: 0xad1327541ba2dc4c9cb811b8, + limb2: 0x120838d07660d6f4, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xccb40ab6a6339c0ffc02527d, - limb1: 0xd4cadfb772b2ad4493bfafc3, - limb2: 0x138c894ce291bd4b, + limb0: 0x25e6cf2e9bbd18d547f19a57, + limb1: 0x172c641fdd5ef498fcfb0c2d, + limb2: 0x1064da46090d6161, limb3: 0x0 }, w1: u384 { - limb0: 0x99a65bb1a66c4c4f7c9b4ba2, - limb1: 0x5f863d51de5bb01971ec7358, - limb2: 0x3a19c4bfe41ea65, + limb0: 0xa92d2372e912afa0f834366c, + limb1: 0x292db9be923681901c5358dd, + limb2: 0x2b963a9106cefccd, limb3: 0x0 }, w2: u384 { - limb0: 0xfa9c344de25d9993fb92076a, - limb1: 0x7bd171d67070419c2ca01ca9, - limb2: 0x28ab78cdf1fe0b56, + limb0: 0x575884843e34521a0566231e, + limb1: 0x9b9b0dd147a7a6aee6cef866, + limb2: 0x29fcbc250201227f, limb3: 0x0 }, w3: u384 { - limb0: 0xf32809ec696cc281c50789a5, - limb1: 0x7af74d168fbcb213915f3f88, - limb2: 0x1a7bdacd34e68255, + limb0: 0x596e666a3104462aae17ff7e, + limb1: 0x36967e7e6b53f5e1e28766dd, + limb2: 0x1606f7475cdd4516, limb3: 0x0 }, w4: u384 { - limb0: 0xb2a8b005ef1dc20d31fc5dae, - limb1: 0x85722e070a56cf271b5aff3f, - limb2: 0x1e6527669975e483, + limb0: 0xbfc3e2476e5d4b039388983e, + limb1: 0xfe37791cc651d8367e7a67e4, + limb2: 0x1187b76947969834, limb3: 0x0 }, w5: u384 { - limb0: 0xadafdcc7c982df91bb52cb2b, - limb1: 0x7e70aa66475cc39f16748ef, - limb2: 0x34c54fb19f7c471, + limb0: 0xe13e8b984eb029af1a26d1d2, + limb1: 0xce2cb3df122bc85b1b72e15b, + limb2: 0x22944494b8722d33, limb3: 0x0 }, w6: u384 { - limb0: 0x24192a49281515d0d1f5c38b, - limb1: 0xfc588dec7be8e73b7ff55218, - limb2: 0x10785c80abd3a669, + limb0: 0x2990eea6050a40d61bb95ffd, + limb1: 0x3bfe64ff3746461f1e1b0afc, + limb2: 0x299dd720cc2eb29b, limb3: 0x0 }, w7: u384 { - limb0: 0x2e39c7f56f4547441c84eaed, - limb1: 0x2f181995efbd21759c55a68, - limb2: 0x22644cac3d872fc2, + limb0: 0xc7bab5780349d493f4fa9b28, + limb1: 0x59c4874675920607774a1113, + limb2: 0x176a5a20f8db2a6d, limb3: 0x0 }, w8: u384 { - limb0: 0xad21d259f09019daee2caa03, - limb1: 0xd21b76dddc883987c203a64, - limb2: 0x1a654527ff3fba5f, + limb0: 0xe867bbd4ab8ba325651fd9d3, + limb1: 0x275241861906c3195c3792a7, + limb2: 0x147f65a25cb9b58f, limb3: 0x0 }, w9: u384 { - limb0: 0x16db69bd069898b78b6f2b43, - limb1: 0x889267a26abcfdf288f4eb55, - limb2: 0x1f00c092d22d161, + limb0: 0x5c6ab5a67f1bb1a3443146b8, + limb1: 0x56aaf62cc028ba07bbe261ee, + limb2: 0x1598912f440c52e9, limb3: 0x0 }, w10: u384 { - limb0: 0xfb1c56d10f40bcf6d550c888, - limb1: 0x418b47d6d3b152c2a7b5dbb3, - limb2: 0xa8d73a1d93f932f, + limb0: 0x8a84ffd1a99fa99849eeed98, + limb1: 0x5f885646ce1f6a0f7746a9cd, + limb2: 0x1837a7a78c93c91d, limb3: 0x0 }, w11: u384 { - limb0: 0xd9a5a49a78a01d1c54c67476, - limb1: 0x3908bd80ce6800111b318c3c, - limb2: 0x1685854b8bf251da, + limb0: 0x88fbce5058dcb23d5c51b64d, + limb1: 0x91d8a0cefd9f4b82bcd59333, + limb2: 0x9031ff38ba350d5, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x21006fdd5e2f0ef66e018f87, - limb1: 0x88f96d3b40f14915a5653e3b, - limb2: 0x23d340046f2ade70, + limb0: 0x973e190f6077a86d0f5fb598, + limb1: 0xeace65f6aaa60b5fafe2d7f8, + limb2: 0xc3b7f7ebf80040, limb3: 0x0 }, w1: u384 { - limb0: 0xd2c514776e847b156a465562, - limb1: 0xaecca133f1c1847fb8bfd53c, - limb2: 0xc9624a5fd5fdf2b, + limb0: 0xd1befbaeadd199cb9579b0ad, + limb1: 0x9bba084b94d80790e9a82032, + limb2: 0x156c136e0b2e3be9, limb3: 0x0 }, w2: u384 { - limb0: 0x49cfe3cb511a5064009b7955, - limb1: 0x691eba3ce1837d8fa954a8da, - limb2: 0x25b5f2c0b6d10486, + limb0: 0x5ca53dd82b26ab713f5fa364, + limb1: 0x669aea5b531d548aafbdde6, + limb2: 0x2901a2fa758b0d5b, limb3: 0x0 }, w3: u384 { - limb0: 0x4ca7859e651778f0a7f1993a, - limb1: 0x77fdd4df0bdc812df9cc887d, - limb2: 0x2454850cd4f9266d, + limb0: 0x4e97fc0b9a3b17981995cd18, + limb1: 0x5e1c71e55739f5231bab007f, + limb2: 0x2be914c12af81041, limb3: 0x0 }, w4: u384 { - limb0: 0x6d55ee1bbeb1a15c6d94940a, - limb1: 0x59be525deb7833c19e1e3d9f, - limb2: 0x29241c890e9755e8, + limb0: 0xbc8c35954ece65711034ba51, + limb1: 0x7ba92d7b1de483f93603fa86, + limb2: 0x26457ef0d8663e04, limb3: 0x0 }, w5: u384 { - limb0: 0x1b145f4cc8706e672408722f, - limb1: 0x434f136d1b5886217d126120, - limb2: 0x1ddaf41db35f99d0, + limb0: 0x6c76bf19f697a4849b5c8eff, + limb1: 0x62b70ddff143415d5b92cec9, + limb2: 0x1fc1358adf8b5e52, limb3: 0x0 }, w6: u384 { - limb0: 0xb4b53584ac3a90669ed3133c, - limb1: 0xf3d6638dd1c1ecf8d4e93780, - limb2: 0xe297d42b2cb7641, + limb0: 0x8a331b15c471887c341ef3d7, + limb1: 0x4837808093f59c6847503b27, + limb2: 0xba8b95fddd95b14, limb3: 0x0 }, w7: u384 { - limb0: 0x33f1058389f875d595b03b0b, - limb1: 0x4565bb8b662832dc2795d1a1, - limb2: 0x1627917dbf87da34, + limb0: 0x4a865a445acd886408b1e458, + limb1: 0x2ca51a56b9bef79ea199a848, + limb2: 0x109ae1956a0a600a, limb3: 0x0 }, w8: u384 { - limb0: 0x90bd889933068d38b1f98965, - limb1: 0xa38f803ad5b7530d0d649c91, - limb2: 0x27093bf4ff778401, + limb0: 0x14f9fb6ae45d09ec721d641e, + limb1: 0x173bfe428b57fad63d4182, + limb2: 0x44b0e5d712fdbb3, limb3: 0x0 }, w9: u384 { - limb0: 0xbeb7beb2ed276a54ee95ab49, - limb1: 0x88be8f505ea0c609485948d7, - limb2: 0x12ccd040ca595305, + limb0: 0xe522bfbba8cd98cfc5822c67, + limb1: 0x29d2c17ba91417a2a86c5296, + limb2: 0x83c4a87f4524cf2, limb3: 0x0 }, w10: u384 { - limb0: 0x9298a231089596a6bb843ece, - limb1: 0x4b9b5d2484503c8edf73bdf9, - limb2: 0x15fdada499d73bee, + limb0: 0x5137e6ebac471dcb30f9e829, + limb1: 0x9a17ed049c332e7a345d4e5d, + limb2: 0x2b4a4a830789f4d4, limb3: 0x0 }, w11: u384 { - limb0: 0x6d9b690d8535bcec4ad83729, - limb1: 0xd9b12e12e9bff30def2a3769, - limb2: 0x2841230d9e280418, + limb0: 0x506d575e6999697e7c2a65ea, + limb1: 0x1c6908ac5965133271a13e71, + limb2: 0xd6a629348eec021, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x16b507960595b044945a6e94, - limb1: 0x1514051b796f3b7f8a3de086, - limb2: 0x27357f7d685f2723, + limb0: 0x840b03b3f6c4b604bdfe6ee9, + limb1: 0xc08ea07ace5ceeee4efd182d, + limb2: 0x18fd3477bcc6c11d, limb3: 0x0 }, w1: u384 { - limb0: 0x4ab45e96ffbd0907b2106956, - limb1: 0x7a93d6228b925a3f7a78936b, - limb2: 0x4c87f8b94d97b22, + limb0: 0xa79bbcb093eb273e6bfb78d8, + limb1: 0x226ac72647662cc26dc47ca4, + limb2: 0x16f3819caebea9e5, limb3: 0x0 }, w2: u384 { - limb0: 0xfe321a85076652fb3cc0ac4f, - limb1: 0x1820f7e3ec4315528cdb2611, - limb2: 0x18d3575ece0190e6, + limb0: 0xdcf09817a6179b553570be47, + limb1: 0xf9a07cbcfc8f7b6bfdc8acca, + limb2: 0xc4f976b546ca3d7, limb3: 0x0 }, w3: u384 { - limb0: 0x4d147488d17fe20e0261ad42, - limb1: 0x14d44f857a16aaaf685a885f, - limb2: 0x2cc858a4c3e61799, + limb0: 0xa435d7bf90ebef3dc54be91e, + limb1: 0x8d5ea6267796b87aaa2ea88a, + limb2: 0xf3b0ea0422b568a, limb3: 0x0 }, w4: u384 { - limb0: 0xf6625f77eeb0bde1c3f3656a, - limb1: 0xaca6db612f2aa151f8aff75e, - limb2: 0x1f58543b894de7df, + limb0: 0x117b11414e42f2ab80e068b8, + limb1: 0xef390a29056e370bed1daab1, + limb2: 0x12fa853045de3583, limb3: 0x0 }, w5: u384 { - limb0: 0xeb26b46bb6fbd7e9f2305f49, - limb1: 0x5cc1c29de8f735322a0053b2, - limb2: 0x1d9092e859be9fdd, + limb0: 0xca9ac225a5a7065015946d64, + limb1: 0xddfec61014f6a2f2bf6114cd, + limb2: 0x2ab119506cff5378, limb3: 0x0 }, w6: u384 { - limb0: 0xa7e52cec97e4dd263e4f4aea, - limb1: 0x710e2c580093256c6910ed06, - limb2: 0x213311ebb0283240, + limb0: 0xab2b1ba3a636b465a12d54e3, + limb1: 0x5dcfb87c936e232c32227c10, + limb2: 0x22ce0b1c3a0c75d8, limb3: 0x0 }, w7: u384 { - limb0: 0x5c7760e54bbcd48883aa6e94, - limb1: 0x111b1ced9f7ca7f8ba465dd2, - limb2: 0x2f045b63d84dff46, + limb0: 0xbcf3722f434133c6ad794316, + limb1: 0x849cd05b465c2a3be18d6bc, + limb2: 0x20d9c626be150029, limb3: 0x0 }, w8: u384 { - limb0: 0x496b9f356b12ac7501283533, - limb1: 0x21f48f6b1f41d98d5569a0a6, - limb2: 0x2636bda180b9da8f, + limb0: 0x867b9c38214bc374d8e0551e, + limb1: 0x704aaab2405a0df9ca01df72, + limb2: 0xb817a5ab751db9f, limb3: 0x0 }, w9: u384 { - limb0: 0x1dc3c4c98ac359c2e1da26ee, - limb1: 0xa0b605022a44e93d30f5f552, - limb2: 0x186d6d8f7f7eb54e, + limb0: 0xcfa5a88560514179f6887b8b, + limb1: 0xbbe25353ac4b75e46d877f8d, + limb2: 0x2d3884945e647385, limb3: 0x0 }, w10: u384 { - limb0: 0xd87eb0a5c3c5848ba2750684, - limb1: 0x51fb01a46081d71029f4ecd3, - limb2: 0x2176b1ef545beace, + limb0: 0x65b1c720ad2a8a0a2df8baad, + limb1: 0x980d8ec4891717cbddfaaf36, + limb2: 0xb26c1427c943128, limb3: 0x0 }, w11: u384 { - limb0: 0x7f2bea7d1e7232aa687892a0, - limb1: 0x8f772b77eabe3d206eb6ef77, - limb2: 0x277fe6cddc09032f, + limb0: 0x54eea04afabdcfaa98d27a0e, + limb1: 0xf67d542b9e0ea177ac7e3e, + limb2: 0x2999efe89428aa0d, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x2ecd11f68a10677fada3a3d2, - limb1: 0xb9a11bece91580ec4ceedcc9, - limb2: 0x28160ade78e99699, + limb0: 0x5c18162c448990c463628345, + limb1: 0xeb3803fdadf9e87d346a64ca, + limb2: 0x254753b23b7b3435, limb3: 0x0 }, w1: u384 { - limb0: 0x2287454b227e7ee5fdfa88c8, - limb1: 0x9cd723389ac10448858c0549, - limb2: 0x1a70cc4548a3aa86, + limb0: 0x945b221b1423d7d665fd08db, + limb1: 0xc9be910121913a2f4ff0027c, + limb2: 0x2f3f2057bf15682f, limb3: 0x0 }, w2: u384 { - limb0: 0x4f92d1262f714f144af42aae, - limb1: 0x11e5aad6d9b12264f7633d1e, - limb2: 0x2f1b1f7525eb6a48, + limb0: 0x6175ee78be7b5e514476066, + limb1: 0xd32dfd9bff7a41a164333782, + limb2: 0x1a6d1cbd3b2ddc1d, limb3: 0x0 }, w3: u384 { - limb0: 0x863ae71ab3c710ef8910268d, - limb1: 0x2a9e7e422d4f28bd61c28f1e, - limb2: 0x2520e391f79d8de9, + limb0: 0xfbcef22d541e008091e6863c, + limb1: 0xa153b7e1f9a7abae92da2a3b, + limb2: 0x5b4676234c536aa, limb3: 0x0 }, w4: u384 { - limb0: 0xea6941361fda686face6fa10, - limb1: 0x976476f62c928c8cace68785, - limb2: 0xe6b475dd74f48fc, + limb0: 0xda9172c43c2b9d859160058b, + limb1: 0x66c860b3f6258183d23ea51f, + limb2: 0x570cef496c87d57, limb3: 0x0 }, w5: u384 { - limb0: 0xe80f446c5f060c2626b75587, - limb1: 0xde0796340d7983eefecef0f3, - limb2: 0x1542ae28bb191809, + limb0: 0xb39c9f85201aaa8b1d8ff87c, + limb1: 0xf7bb83e6d12678e3026df1d9, + limb2: 0x2621a69aa4d9e609, limb3: 0x0 }, w6: u384 { - limb0: 0xf8fe37b55420fd01618d8cb4, - limb1: 0x1b6dc71ede564a82c42996c, - limb2: 0x29deed4ba0d0a51, + limb0: 0xb675a3419d043bf783a677d0, + limb1: 0x80ca80cb7a0e83d7d15fbc59, + limb2: 0x24d91b24b68c8d8, limb3: 0x0 }, w7: u384 { - limb0: 0x5c22008fb3a470fdd79ed423, - limb1: 0x25da8c0704aaf9cbc471c7e0, - limb2: 0x135b5ff11accc0c6, + limb0: 0xa97ec05294c41b43b96f43b4, + limb1: 0xbd6ec143def71c2c4df452c5, + limb2: 0x1f76f0dabe843468, limb3: 0x0 }, w8: u384 { - limb0: 0x4dfdff3bb6a9b5f90ce8d212, - limb1: 0x6dbc246eb1da2c608be4e195, - limb2: 0x1fab206e8d6cf9a, + limb0: 0x63d763a9f678029f33db6b7a, + limb1: 0xa3be8f56e47b2b9cd2cfdc9f, + limb2: 0x18b4610f20d0e2f7, limb3: 0x0 }, w9: u384 { - limb0: 0x9b32e4d900d5482d50b03728, - limb1: 0x5b9ab146b4f75cd338ff9893, - limb2: 0x1e3baf3fff1d161f, + limb0: 0x4ec3dfbdee92d8faf9dcc4e4, + limb1: 0x43a0aac0fbe441f10741060d, + limb2: 0xde1c734632b47b2, limb3: 0x0 }, w10: u384 { - limb0: 0x6f8f565d370fba371135cb50, - limb1: 0x8fc24b271ea4fdd1d53df6dd, - limb2: 0x19517e6785e5b263, + limb0: 0x365fa93e498c088cf698e469, + limb1: 0x6502de28cd80ddf5cd950a79, + limb2: 0x1e7a2bd09662f1f4, limb3: 0x0 }, w11: u384 { - limb0: 0x53a6d783ddf197d0a1b8445e, - limb1: 0x383f2a40c64e5cae15e640ee, - limb2: 0xccbcbb1014c6b9c, + limb0: 0x2a7df1695dfcc05c0157ea94, + limb1: 0xd145180ca2b5e30b9a8c489a, + limb2: 0x2dc6447ad9ba1dc3, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x3ba9b0de2ff5c1bfb276eab2, - limb1: 0x9dce18c0a1248d67baa7ec55, - limb2: 0x24ccbfddaf0e55a, + limb0: 0xce32de68151c1c4d3317d1e6, + limb1: 0x24c64b0703e679960a83cb73, + limb2: 0x220fe3bfc9c4e334, limb3: 0x0 }, w1: u384 { - limb0: 0x55a61d282eea46a56b3ff069, - limb1: 0x5c48e008b47fe82d42ecbe28, - limb2: 0x1deb0ea629b26b2b, + limb0: 0xec8784b17fb1e531ca09de69, + limb1: 0x56c1362825a01c85eaad12fd, + limb2: 0x1bdb88333a29f1db, limb3: 0x0 }, w2: u384 { - limb0: 0x1c805838d3cdd3fa0632a9c0, - limb1: 0x2a6acd93933c576eea2511c4, - limb2: 0x26511d4402583d06, + limb0: 0x156d54901018338e252b0bfa, + limb1: 0xbade3a6bb9229e56d3d8c432, + limb2: 0x7fed88d7ccc053, limb3: 0x0 }, w3: u384 { - limb0: 0xcea59382a1ea53edde0b1a0f, - limb1: 0xdbcc0328caba848ec1ab2bc8, - limb2: 0x2a29b957d293401b, + limb0: 0x27cf3100af57f6c68c90ca9b, + limb1: 0x9c119cbb81f81412bb3bddbe, + limb2: 0xed645659840987c, limb3: 0x0 }, w4: u384 { - limb0: 0x5f638752a76a6e80fcf28959, - limb1: 0xbcf43438bb59f795a2dabeee, - limb2: 0x16a1dc0d89bbd81f, + limb0: 0x29ead04ad224c5e75d11a313, + limb1: 0x1784b04e394742cbb4ec2452, + limb2: 0x12c33cb02d3d41ce, limb3: 0x0 }, w5: u384 { - limb0: 0x21c974d6b4368f3d291b9a8d, - limb1: 0xc2915aea978ec6b36bc04547, - limb2: 0x165aed311ef1f8f, + limb0: 0x8ef714f60c2ed82935eca3a5, + limb1: 0x9cdb9a8e813a5cfded67ca2a, + limb2: 0x231a2f21b66cd77d, limb3: 0x0 }, w6: u384 { - limb0: 0x731cd420b84d3ce612a01510, - limb1: 0x7aa2380deeeb56b3def980b0, - limb2: 0x1416400f672379c6, + limb0: 0xb673ab23c4edec5d490aed54, + limb1: 0x83929fca33ac769e144fc179, + limb2: 0x17a086aab2b10123, limb3: 0x0 }, w7: u384 { - limb0: 0xe79f38703f461b0d6f069e20, - limb1: 0x44a2b1d54d9b36eb385b78dd, - limb2: 0x24b83e08f5e83c97, + limb0: 0x3c73e137ef3f2753ef25f0c5, + limb1: 0x58f6fc6678b37eb1a6d9eaeb, + limb2: 0x306062f5dbb107c5, limb3: 0x0 }, w8: u384 { - limb0: 0x60130d436eb273968bcd4ec9, - limb1: 0x47b7b76c1e678a0658036d67, - limb2: 0x29a4888d987fe960, + limb0: 0xe853e3ceaa9172b3cd317cbe, + limb1: 0xb467f9390100188191448d5c, + limb2: 0xc2ccca138295b77, limb3: 0x0 }, w9: u384 { - limb0: 0x260f528b84d35e9d2a3f59e2, - limb1: 0x8ec55538a13ccd199c8ce9c2, - limb2: 0x13e1ff4f6471f37b, + limb0: 0x656c4f0754f11f30afd38d0e, + limb1: 0xaba00267009f214e934ab0dd, + limb2: 0x23522ef96509d04f, limb3: 0x0 }, w10: u384 { - limb0: 0x5a926f762261bac5627ec949, - limb1: 0x49646ded0511e0e69d0307f5, - limb2: 0x181635aa9d81bfc3, + limb0: 0x969602380fae1c59766a715d, + limb1: 0x99a8c144282c7c5527e8cd01, + limb2: 0x21cbce6391868bd2, limb3: 0x0 }, w11: u384 { - limb0: 0xc29a677a4193993e9bbe8918, - limb1: 0xa299d0711a4b1f3af2a229e9, - limb2: 0x3d1da5cdbc46e0d, + limb0: 0x31af6481efeb9e24386810b0, + limb1: 0xaaee2d7ce23e55dbd30ebbbb, + limb2: 0x689b08ff283669e, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x499429d0749995459cc8aaf9, - limb1: 0x8ce154de1b30484705c54088, - limb2: 0x1be6a18e83a7e6fe, + limb0: 0x1f12f3709ea6bfc0d44e965c, + limb1: 0x48f7f908300e273f6d75ee47, + limb2: 0x42169aced893589, limb3: 0x0 }, w1: u384 { - limb0: 0x1eb5e2c697e1362ad322eae0, - limb1: 0x1ccfda92724149c8041066c, - limb2: 0x18bf655a2a4377b7, + limb0: 0xbdaefa08f08782643a9a201a, + limb1: 0x11914e06f74136db33e7a552, + limb2: 0x256d0e482ab046bb, limb3: 0x0 }, w2: u384 { - limb0: 0x260456ec15973398d042dace, - limb1: 0xc15650cc4a5e29c7e2c4401e, - limb2: 0xa0c3a0e53559ba2, + limb0: 0x29ee29c7d5c32085a0c7bdc1, + limb1: 0xfd730ebe9786285da6858b5, + limb2: 0x35cdaf8d0268f42, limb3: 0x0 }, w3: u384 { - limb0: 0xfa81c46ee3d04f0e9d5f66d6, - limb1: 0xed1a9d6d804d279a8a2d7e9, - limb2: 0x2e871ad1d7530137, + limb0: 0x350d4a8393986d74333848be, + limb1: 0xcaf7be138f8f5f393df34f39, + limb2: 0x2847dbe743440a2a, limb3: 0x0 }, w4: u384 { - limb0: 0x4b5d4ccc5152c125a2dc9bcb, - limb1: 0xd2eb973e6fd7f3b4b67afbd5, - limb2: 0xf759d771753a710, + limb0: 0x9371c527eea5f9ae5540c556, + limb1: 0xc3975b73da280a0a2a5a8328, + limb2: 0xabb652dd220afa7, limb3: 0x0 }, w5: u384 { - limb0: 0x95282d03d32982999daf3d61, - limb1: 0xa66da5d2054ac6e9b299d52, - limb2: 0xd70fcef3f72424f, + limb0: 0x1f4b079f53619d95cc29e96c, + limb1: 0x55b9fcc1f85c3cad8a90f2a1, + limb2: 0x15f839f7c0303305, limb3: 0x0 }, w6: u384 { - limb0: 0x1647f146fbb0d90b076c8c9e, - limb1: 0xedcc275d8d6fb25dc5e8e1d9, - limb2: 0x1141011a3d4bd1a2, + limb0: 0x9299be58b5e9db7cb064e594, + limb1: 0x101e8d4f2c3eca5cacc58e01, + limb2: 0x10f0b97a72abed7, limb3: 0x0 }, w7: u384 { - limb0: 0x85836b5d82379746d4a5fe0c, - limb1: 0x517884e7c807458501d5f2bb, - limb2: 0x2bcc6e553ce46587, + limb0: 0x3eb0669794fa82b1cbe16ef8, + limb1: 0x7451b4f9eb364a7dab1082fe, + limb2: 0x31132519cf3a240, limb3: 0x0 }, w8: u384 { - limb0: 0x1d16a3eed603a5b6c8ebdcba, - limb1: 0xac7e53d6545a5b189cb47484, - limb2: 0x6e13da8e39dd4ae, + limb0: 0xe538919ac396f1831317bf3, + limb1: 0x2919f8c66a8e22d1f4fc8a78, + limb2: 0x363f15db1c88e1d, limb3: 0x0 }, w9: u384 { - limb0: 0x9ff7f475ddf1617d1d5e6853, - limb1: 0xf8d8c6151c7b106a926b8549, - limb2: 0x623a90ddb6e9403, + limb0: 0x5f807501edc39eb29b56d280, + limb1: 0x4ac756351acb5f6bfebdfa1f, + limb2: 0x1f137e10ecc88293, limb3: 0x0 }, w10: u384 { - limb0: 0x86f1bc249471c54227979b14, - limb1: 0xa58b7f3c6cd2e02059dfec1f, - limb2: 0x8055c26aa89f3e2, + limb0: 0xa964c5f7cad578b3a2513b86, + limb1: 0x2385b5701f4e6a04ecadb1e2, + limb2: 0x22123e2a7bef3ced, limb3: 0x0 }, w11: u384 { - limb0: 0x8b7212f3ec7c260a7db8ffdf, - limb1: 0x73312742b312f382ef7e80df, - limb2: 0x4d4e02d409fd8f3, + limb0: 0x8e95f9364bc2d5e27ff50cb7, + limb1: 0x819ae356528bf710511a1cf1, + limb2: 0x2726ecfa84d813dc, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x93a0d04e5e016ea34397f60b, - limb1: 0x66964a3d4c281d098ff35581, - limb2: 0x1bea7170382cee34, + limb0: 0x6dbc6c5f2eac9e1d14c0bf37, + limb1: 0xaf7f1519cc50fa8a13d80959, + limb2: 0x2bd9e350419e107b, limb3: 0x0 }, w1: u384 { - limb0: 0x3d022444c1b71498acfbc05e, - limb1: 0xa4d082ce3aef798f0de9eb9d, - limb2: 0x234b85898efc43eb, + limb0: 0x53671384fb980b60f612d7d5, + limb1: 0x80661945fc0e767f260ded45, + limb2: 0x78717e10ec48d8e, limb3: 0x0 }, w2: u384 { - limb0: 0xd467b248107244dcef418d8f, - limb1: 0xb54afbab933facb543983c75, - limb2: 0x2792d19f98496efc, + limb0: 0x4ffd4dab6dc895bd1f7b02aa, + limb1: 0x6eb9ea30c1862c86aa6a82e9, + limb2: 0x29c44e66469b2efa, limb3: 0x0 }, w3: u384 { - limb0: 0x671f30e2a3b6e62ab41075b4, - limb1: 0xe4363df408704cdb91817f8, - limb2: 0x2eaeb9244e003d9f, + limb0: 0x30ed60aaf554a88f27eb0366, + limb1: 0xded3ab7ea2fd1203d13a092a, + limb2: 0x1fbf16550dce5144, limb3: 0x0 }, w4: u384 { - limb0: 0x7d2ea1b3dbaf93ead985b636, - limb1: 0x5a572f0d6b739ea3a1c3c2c2, - limb2: 0x68bfae80f41ed57, + limb0: 0xd0daafb9fe07b918b0846770, + limb1: 0x45b1f4063599dafbb54cb495, + limb2: 0x300c31fc7b20fa83, limb3: 0x0 }, w5: u384 { - limb0: 0x85733e2120ef85f94d760e0e, - limb1: 0x7804ffea13318da05d0bc1ba, - limb2: 0x13d2a65620ba416, + limb0: 0x621e43414dc884a5d3f004c, + limb1: 0x742d71a9106b8df5a6bfc4e, + limb2: 0xe3204ff74b0f831, limb3: 0x0 }, w6: u384 { - limb0: 0x1c5729913741a81c615c66ce, - limb1: 0x60209cd00801c8a8d58b77a1, - limb2: 0xe810643c3c916fc, + limb0: 0xd1accfb4771bdb78747e2617, + limb1: 0x4de67f29e05676ac3e35fbe0, + limb2: 0x14154f3d24e0a93b, limb3: 0x0 }, w7: u384 { - limb0: 0xce4dcec120897019f36698c0, - limb1: 0xe22ca5844b56a30a2bf6cfc, - limb2: 0x100bf3260e321d4b, + limb0: 0x4d4c1eaa67c985c7fd76fb49, + limb1: 0x96aa102664c0fc7f5203fae9, + limb2: 0x12891288b8a647f4, limb3: 0x0 }, w8: u384 { - limb0: 0xd9f52c7d28e5e28da70fbe1b, - limb1: 0xc58b73baf81c95717081def, - limb2: 0x2ea5eab35b29ae93, + limb0: 0x3b3e712713edbe08e10c7f7, + limb1: 0x10d0ad8febbc67a70c1438f7, + limb2: 0x8db4fb882da6a33, limb3: 0x0 }, w9: u384 { - limb0: 0x4d8eb6e02e4b376583be5ece, - limb1: 0x92c3de440f27709b7919a575, - limb2: 0x7119cdc3b4a30c5, + limb0: 0xe52ea865f3010074d418a77a, + limb1: 0x4ee76f9b09f0e5b003a86a92, + limb2: 0x1cebea790dbdaecf, limb3: 0x0 }, w10: u384 { - limb0: 0x8a8629a754cfcc28a7e62b23, - limb1: 0xf842c7b083cdb00b22a860b4, - limb2: 0x23f887461f9a75c7, + limb0: 0x11333ce14cf6f3c48aac779c, + limb1: 0x1729a7748ffe8aef682ba038, + limb2: 0x2940bf4b16e08032, limb3: 0x0 }, w11: u384 { - limb0: 0xbb9fae98e0438986e673e52f, - limb1: 0x6eac876d05f33b786877cd5a, - limb2: 0xc66ff21eb4ebb97, + limb0: 0x6ed6628919f7e76f071e4571, + limb1: 0xaf2d97d3734d758f59d1f142, + limb2: 0x1ff1376e85d9bc59, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xe3154c42d6885af223ab79b, - limb1: 0x62ef31f3902cb9c977b43a6b, - limb2: 0xc9feebc02aaa243, + limb0: 0x4e43cd1b71b6d96dfb08f9ac, + limb1: 0x8a9660f1c82f176a3b08063b, + limb2: 0xd10814e3eb5988f, limb3: 0x0 }, w1: u384 { - limb0: 0x3f204e3c0f1b32fb29b1d880, - limb1: 0xc39b591401ee0b73d39a94c0, - limb2: 0xd924596f1209a, + limb0: 0x369c6d92a4dfb12881ed251, + limb1: 0x9ec084d622b32e31c57de35f, + limb2: 0x3c622613e349b3e, limb3: 0x0 }, w2: u384 { - limb0: 0x94e4b80ceaa2484ed059db3a, - limb1: 0x77ce223c1f913bf19154e9fc, - limb2: 0x1e9a9f633e7c2ac1, + limb0: 0x245656e8448fbf982be3c4e7, + limb1: 0xdd2f3c704bfb3aef5f149e5a, + limb2: 0x2fc60de926e70207, limb3: 0x0 }, w3: u384 { - limb0: 0x5d9b0838204376324ced3e39, - limb1: 0xb5072f7d28e6c61c1e44d2e, - limb2: 0x27b8ee491bbfec54, + limb0: 0x45a75432ad935cac206c7566, + limb1: 0x7009303b4b56fd37fb7fd615, + limb2: 0x1d2adf5f34330ebb, limb3: 0x0 }, w4: u384 { - limb0: 0xcf65523e2d6622a963cc1935, - limb1: 0xc1375339d30b980b46989858, - limb2: 0x2e8b265fb17e0e07, + limb0: 0x21bbc59a6d72552ef874fd57, + limb1: 0xa4c7fd7eb1c5adda3e461356, + limb2: 0x1cb491113d9c213b, limb3: 0x0 }, w5: u384 { - limb0: 0x3d325619780b2dc2e272034a, - limb1: 0x1ae5e719e116552af7fd5fda, - limb2: 0x29b6cb09c6421d3c, + limb0: 0x9cf04d3ff0ffd2f78e09aec7, + limb1: 0x209de302a9023aba80042cd8, + limb2: 0xed0749f8f8bb203, limb3: 0x0 }, w6: u384 { - limb0: 0xb4b721d3b94e1314692f1e66, - limb1: 0x66b0613c15b90c01a1be3dc2, - limb2: 0x22c09948ddabbea2, + limb0: 0x46ad1eb9a89528532030e07d, + limb1: 0x61ef2f214d8ffca55d0ffe90, + limb2: 0xd0bc5bef3dfd911, limb3: 0x0 }, w7: u384 { - limb0: 0x40040e96f057b1dacee80419, - limb1: 0xa9a5cbf9d677fcbd0a27ab2, - limb2: 0x3bcf3c1b8a7a0d6, + limb0: 0xc233bcd138bfe4f530cefb90, + limb1: 0x650e09fd3321be2a9de426b3, + limb2: 0x2ef055ddb61eed5d, limb3: 0x0 }, w8: u384 { - limb0: 0x5ea1869fe919cfe2f2cc3aaa, - limb1: 0xb911705dacd617c1adad5a57, - limb2: 0x7da0d40e74df520, + limb0: 0x80171bae64a0ec38b92710eb, + limb1: 0xc13cc242037c2b7d194c9b75, + limb2: 0xe78a044dd2cde86, limb3: 0x0 }, w9: u384 { - limb0: 0x848a51900dc2f94f3961b7ce, - limb1: 0x7ca81d3edcd75f23b6cbbbad, - limb2: 0x13002c3ebf83c9f4, + limb0: 0x610bfceb1959c9a3c284c9f8, + limb1: 0x19b6886fc02a32248ae79aad, + limb2: 0xbc49ddf48169c09, limb3: 0x0 }, w10: u384 { - limb0: 0x7bb9a44226dd93ee25542942, - limb1: 0xd1b3b442dd132472aa9b36bb, - limb2: 0xb0d466703652b8b, + limb0: 0x281b9afc4a58ebdc40df98f4, + limb1: 0xb34ed77510dcaabdb4993a7b, + limb2: 0x14a6690179bb9542, limb3: 0x0 }, w11: u384 { - limb0: 0x959bb3480f2b9ed73f798f91, - limb1: 0xd8052cb7ca24a4e6d916f61e, - limb2: 0x1069808fdbccf3ae, + limb0: 0x6b43473504fb2b0c81212b7f, + limb1: 0xa5e4ce34d1b0a8d6ae1292c4, + limb2: 0x28c022bab28b708f, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x6164c039c36419a07de7f89a, - limb1: 0x4be596f6a32cf3da0e1af7c9, - limb2: 0x28ba061cbe6797b4, + limb0: 0x63aa67dd1b7ee0661f7839b0, + limb1: 0xfed656eedf9d2e23a3a410e9, + limb2: 0x27393b7b0b1333ce, limb3: 0x0 }, w1: u384 { - limb0: 0x27e5176b6bde5f992bcee0b0, - limb1: 0x6ca47bf53cb762a2fa48a84a, - limb2: 0x27a675ca5923ea69, + limb0: 0x1cf0c8d69a389c3766ab6e61, + limb1: 0xec3887711f9ca59206fb6165, + limb2: 0x1c6664d6e60e912, limb3: 0x0 }, w2: u384 { - limb0: 0xeb72905841d1ab44c09fa1e7, - limb1: 0x1c7c8183446aba8494b7bac6, - limb2: 0x25bfe61a582e604d, + limb0: 0xb04094ae454bf1f8b9c64974, + limb1: 0x68264002e17b35545f1bc181, + limb2: 0x83c32002dbf2c47, limb3: 0x0 }, w3: u384 { - limb0: 0xb3e73a57824c960df64626a0, - limb1: 0x622ad42969f9590fca544ae4, - limb2: 0x14af8c95b97172e7, + limb0: 0x7d79731d257077130529874f, + limb1: 0xfdac30b921c43cfd2ad478a9, + limb2: 0x2e727b5e14840ef, limb3: 0x0 }, w4: u384 { - limb0: 0x4edbd47f12a2f0e70e3fe1fb, - limb1: 0x3961c8100075ebc3fe400754, - limb2: 0x259feeed9be53238, + limb0: 0x26cfaa3837beeaac551ca29b, + limb1: 0x95ba11b35c49d861ddcfd705, + limb2: 0x122720125df48589, limb3: 0x0 }, w5: u384 { - limb0: 0xa2ed9ca19ccd683e04e5348f, - limb1: 0xf7382b81004592de25527b23, - limb2: 0x11fcf58167770e75, + limb0: 0xa9b842bd58493ac0a78971f8, + limb1: 0x306c09b72d5186c32600da43, + limb2: 0xa12b31c57bad364, limb3: 0x0 }, w6: u384 { - limb0: 0xa75d64705f10602a74ea9ad6, - limb1: 0x3c8add84fc9860ef72ff7fb6, - limb2: 0x4e6b9a1a0fe5f4d, + limb0: 0x98cf355aaf5b4d3d9a5af882, + limb1: 0xa98e396dbec8393d5ba970cd, + limb2: 0x1f252c785d652afc, limb3: 0x0 }, w7: u384 { - limb0: 0xa27b67b05b5521fcbcafd7a4, - limb1: 0x6a6b105569f64572f7b610de, - limb2: 0xfb52bd14d26a0ad, + limb0: 0x142ace7b7cd9346436616816, + limb1: 0x635ae0220892311913065f0a, + limb2: 0x1c88768e6e72ad34, limb3: 0x0 }, w8: u384 { - limb0: 0xdaf062f81c21883a293c5f7c, - limb1: 0xb64830a30a3787fdd898651d, - limb2: 0xde6db3dec7f1a71, + limb0: 0xe933c3b410186fdfa2373f75, + limb1: 0xc92ffb6295546571d1d44161, + limb2: 0x2f066fefb8e96951, limb3: 0x0 }, w9: u384 { - limb0: 0x246ca684918439c9635569fc, - limb1: 0x9dd977adcccfc005bcb5965f, - limb2: 0x2a745c8836559a0, + limb0: 0xf79a7c8cb7977788e6256391, + limb1: 0x43168de13977c3d9ea742eb0, + limb2: 0x2837c64bde0c374d, limb3: 0x0 }, w10: u384 { - limb0: 0xb66f8153dec908e1a1cb7f01, - limb1: 0xc8a79c7ec612b65417c0ce82, - limb2: 0x1e5cb43a56720833, + limb0: 0xc1f1763378eea7f2cf2d52cf, + limb1: 0x140f3e7fc92070c594aeebdb, + limb2: 0x10de837c07f4572b, limb3: 0x0 }, w11: u384 { - limb0: 0x506cde208de8bb7a9b617c40, - limb1: 0x261d3ee7ed322b8486ae0012, - limb2: 0x289416d98ac9ad7d, + limb0: 0xc67a5edb4aa660ddd328f79, + limb1: 0x69cf66ce7c880642181ee1e8, + limb2: 0x85b436173db361b, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xb48164a9820c42d40e7570f2, - limb1: 0x7ae76c445973e8e557d712ef, - limb2: 0x3052c1daec9248f0, + limb0: 0x65956051ba041b86e92eaa38, + limb1: 0x33d4559477589b8f1b5eb39, + limb2: 0x133f2663a08dc656, limb3: 0x0 }, w1: u384 { - limb0: 0x6a09682ddbc5ac6abac64661, - limb1: 0xc7c29fc86e0f018af4cbc477, - limb2: 0x234c739b944d7a1, + limb0: 0x30eea209490e46f025725a2b, + limb1: 0xfeea3a9aa4267e4f4c440b8b, + limb2: 0x283ae9e38d6cb2bf, limb3: 0x0 }, w2: u384 { - limb0: 0x2028d99b249dd3057adf8c8a, - limb1: 0xe4dd51b3f25722a30ca9902, - limb2: 0x1115c7563d3758dc, + limb0: 0xc3371878dac38229856feb25, + limb1: 0x78ee3607ea9967eb9507db5, + limb2: 0x112946ca11359265, limb3: 0x0 }, w3: u384 { - limb0: 0xe95d453a05b4d661d730447c, - limb1: 0xf94f6360977362faf4237ffd, - limb2: 0x9e196f6555d9371, + limb0: 0x94c5894b3fed82e61f69225d, + limb1: 0x396aecf5b0c2dd5a43108372, + limb2: 0x14f6e3756953ce8f, limb3: 0x0 }, w4: u384 { - limb0: 0xf57ce76b7091d3a628fe3044, - limb1: 0x9033b35107160e3c07c477f9, - limb2: 0x1e7ca36f058579ec, + limb0: 0x4b74c7f8fa6dc4389e56d8af, + limb1: 0x2eb2cf1b0805ee1a92726054, + limb2: 0xcc6d8f561466414, limb3: 0x0 }, w5: u384 { - limb0: 0xe54bfc6c798d5b88aab992cb, - limb1: 0xb1dec28a976d566234c8db81, - limb2: 0xd58d88a66166549, + limb0: 0x81c8d6375f2c85c9cb11b5da, + limb1: 0x485f899b5a978f863f3b525b, + limb2: 0x166fb8f55294e1d0, limb3: 0x0 }, w6: u384 { - limb0: 0x574c31d005073e136dc7518e, - limb1: 0x4520919ec97587e8ed979249, - limb2: 0x6b736ab040c4544, + limb0: 0x7784472963531fa04a7dd6e, + limb1: 0x75486bf1ce7d28d8286d6df4, + limb2: 0x8cbea15bc7ebaf2, limb3: 0x0 }, w7: u384 { - limb0: 0x877bbec2ede08b4e59c953b, - limb1: 0xe0bc7e590924e5c1e3263721, - limb2: 0x1df949940ce10e07, + limb0: 0xb9c0db6fb73148334200fb4f, + limb1: 0xf495e4cbc11fbf36d7c545f6, + limb2: 0x26055faf30196c9, limb3: 0x0 }, w8: u384 { - limb0: 0xecc23c9f92d54180ecca0c9a, - limb1: 0x2f549ed8e5ffd17abe234dc5, - limb2: 0x26ca56ef8a2f9ed6, + limb0: 0x7415295ea774af4e7e9d71af, + limb1: 0x8ed1baaf641206aa8e11157, + limb2: 0x26237ff5901debe5, limb3: 0x0 }, w9: u384 { - limb0: 0x4e0feb2f9f85fb27fa2a2b8f, - limb1: 0x107d8caba244b4faa90b677b, - limb2: 0x194b9169bfa753e4, + limb0: 0x56edb274d5536dcba3fdc2e4, + limb1: 0xaef73b36d4326977e43711e9, + limb2: 0x1ba936f777a7f64b, limb3: 0x0 }, w10: u384 { - limb0: 0x534ed17071a19508d349f3, - limb1: 0x1bea3742e5b1e648c48ce990, - limb2: 0x1c1b1c3e9d668215, + limb0: 0x6104cd9180d46526681e096a, + limb1: 0xf509e4469bd0e0b751b3c370, + limb2: 0x2856cbcf72219dea, limb3: 0x0 }, w11: u384 { - limb0: 0x3dc36ab1766344ac0e2dfb2a, - limb1: 0x1ad810b523267ee2faa38477, - limb2: 0x2a5114964db00ea9, + limb0: 0xdfb58f578b6af7b566b4c891, + limb1: 0xb87b727d462aac61d7b1bf6b, + limb2: 0x2008e7a9d0a010ea, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xe2019d15c1208c7d7930f485, - limb1: 0xe8fe53eb5ef4ec8aa579e238, - limb2: 0x1df674ebd46d55e4, + limb0: 0xb3fd58e45603b72a71106ea8, + limb1: 0xb2b5b5aa191d87bb79ebc16b, + limb2: 0x2b069c3c0d466a98, limb3: 0x0 }, w1: u384 { - limb0: 0xf1724038265a09b717b7c013, - limb1: 0xd10aa0f54ac0efb7d94d61a2, - limb2: 0x672f343da7a2ad5, + limb0: 0x9e055b4f14bbc766075ebb19, + limb1: 0xa46dfb4f82be1789276b02b, + limb2: 0xee126ce679f25e3, limb3: 0x0 }, w2: u384 { - limb0: 0xd445ef6332838efc87dd0fbc, - limb1: 0xdde90bec61aa27bc81957857, - limb2: 0x189b33441c6ee2ba, + limb0: 0x116c34b9bf38ce665cf2bcf0, + limb1: 0x9b62b81642c79f32505b4434, + limb2: 0x1d25b907024c3de4, limb3: 0x0 }, w3: u384 { - limb0: 0xa7f04313d809e5569d5d2430, - limb1: 0x4d3dcbae1c8681220926fa55, - limb2: 0x20d0a22639c8c3e5, + limb0: 0xe9c3952a670909bbbef1da02, + limb1: 0xeabcde311adef252cac49a93, + limb2: 0xff09a71179992a6, limb3: 0x0 }, w4: u384 { - limb0: 0x536c2dfd025daef71367597c, - limb1: 0x27c96032143e383c5358d335, - limb2: 0x1aefbe84e104f401, + limb0: 0x1fa84b8e4085550506582e4b, + limb1: 0xb28e8e42dd1d8655ee484e3b, + limb2: 0xce511fecaf1de1b, limb3: 0x0 }, w5: u384 { - limb0: 0x17da0ddd12bfb11013eae108, - limb1: 0xa4bb506de5c2312c4a9236c, - limb2: 0x1bba3050a7760c3e, + limb0: 0x2362b028aeb8fd29829fd021, + limb1: 0x2881928d09bfc7bbd7ab414f, + limb2: 0xf327de48ea8402f, limb3: 0x0 }, w6: u384 { - limb0: 0xb4766d188642163c2849cbbe, - limb1: 0xa76d15f48b55f84a13431c9, - limb2: 0x2937888ccfe90765, + limb0: 0xf29c9fa7dff0d44e85229bfc, + limb1: 0xa3e20f65d201ede342af97c7, + limb2: 0x15b5eb8b44e0a911, limb3: 0x0 }, w7: u384 { - limb0: 0xed10f8df3a9276ebfd0cd40b, - limb1: 0x591c2fe1de4981a78adc6477, - limb2: 0x13f03c92fef02760, + limb0: 0xbdca1e4a73bf6481e6522227, + limb1: 0x614f56d8c6c8148f1138977, + limb2: 0xad424f809c9cbf4, limb3: 0x0 }, w8: u384 { - limb0: 0x3ce8e1c02f3ced894f7387a9, - limb1: 0x63bee1962fcb5c33e0d37239, - limb2: 0x98e47e256660afe, + limb0: 0x3cf3d030aa201d024fcb4c00, + limb1: 0xb34f7f71d8d7b5378cec29f9, + limb2: 0x3853926bc58bba3, limb3: 0x0 }, w9: u384 { - limb0: 0x9a6f23ed044cbd5124cd8784, - limb1: 0xd3990dce147f9dc8a04cf0a0, - limb2: 0xc17b3698e7cc084, + limb0: 0x827c9490943704b64588aa78, + limb1: 0xe4b151e72f56e53c59094f5f, + limb2: 0x20ad56d8c64b34c2, limb3: 0x0 }, w10: u384 { - limb0: 0x4a73e69733bcc20c66bbaa09, - limb1: 0xae20cd1251d95d2bc92c6c67, - limb2: 0x276d3ae375306a2e, + limb0: 0x6fcba7a5b4944545f944222, + limb1: 0xce2cef597b5cf61aab717ea0, + limb2: 0x81c0408b5b21e30, limb3: 0x0 }, w11: u384 { - limb0: 0x43fd5cad9edfc239344231d9, - limb1: 0x52e4751602d8ec05199b0540, - limb2: 0x442f34ffc610712, + limb0: 0x43533b74a1bee13ce58ef2d5, + limb1: 0xdcab244c048076148f1b0ff0, + limb2: 0x13788b99d6d049ed, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xd811e56813bf54471e093899, - limb1: 0x7f5f25c57f2f7eff38c9a8e9, - limb2: 0xaf6b6a4dfbdd54d, + limb0: 0x8956a95bea05608876328e5, + limb1: 0xfc97cf1539ee0de4c78c6e5b, + limb2: 0x1c97f8f8287efb3b, limb3: 0x0 }, w1: u384 { - limb0: 0x9563e7488d4264ee92300127, - limb1: 0x96f0f804547c24a07e9943c2, - limb2: 0x1189b79fb3bbec1d, + limb0: 0xc94bfeed78deab346c1e713b, + limb1: 0xdf9fdceb917e06e061a75a2d, + limb2: 0x3bfc7f111e05ad0, limb3: 0x0 }, w2: u384 { - limb0: 0x92c3b6b685af8866f29382da, - limb1: 0x71dd5c390c530a3063357a56, - limb2: 0x1c897155d9a3e605, + limb0: 0x131f17c66a7dadd771921549, + limb1: 0x5b7c97229c0ca64f12e35372, + limb2: 0x1cc19ae1d90cf699, limb3: 0x0 }, w3: u384 { - limb0: 0x3df58025590d4a56c040f0, - limb1: 0x40cfe1cf70dc852c01745b94, - limb2: 0x2b1c42a651a66710, + limb0: 0x6eda64cdfa7229546a8f8744, + limb1: 0xcfdb448f34b2a95f86646718, + limb2: 0x2b7f5beb891b31ae, limb3: 0x0 }, w4: u384 { - limb0: 0xf914508ffa37d59890a383c4, - limb1: 0x4dbb4fa6b37305788282390, - limb2: 0x1525cf2939d8266c, + limb0: 0x301b56710f1537c99c16f3f3, + limb1: 0xb565e5a91fc34336a79f8f0f, + limb2: 0x9be801e94d82ae2, limb3: 0x0 }, w5: u384 { - limb0: 0x5f3a9db3bd05b7dc6c1e8a06, - limb1: 0x14c95b3064eec660d9f75f7b, - limb2: 0x301a00670831723c, + limb0: 0x95ee05766e1949844d2763ee, + limb1: 0xaff3da7d87ba435cc2c64199, + limb2: 0xf2e5e8f960c651c, limb3: 0x0 }, w6: u384 { - limb0: 0x378ad5e583d17ab0f5eae605, - limb1: 0x7a958435c64b87d38d0a9324, - limb2: 0x1b1bf7987a2f900a, + limb0: 0x2999c081718365e28e2fc90f, + limb1: 0x80c3f07f46223ba62ff07513, + limb2: 0x1f6c8cbb1e029a52, limb3: 0x0 }, w7: u384 { - limb0: 0xe339832191072aaaf8b0de83, - limb1: 0x2e0b8dc3fbd6e944710ddea6, - limb2: 0x29985753208e9994, + limb0: 0xcbe81769faa23dd2ebf5f3a, + limb1: 0xe3015dda98744acbf13f4f30, + limb2: 0x2891eb9438dde1af, limb3: 0x0 }, w8: u384 { - limb0: 0xd7069da477c15cd3fa2854e1, - limb1: 0xbb9ed6272e227b0d730076a5, - limb2: 0x9ca2ba867e87f4c, + limb0: 0x9c3e12f6a8cb1cd9aad1dac9, + limb1: 0xde5440c712b148371e618037, + limb2: 0x747bb3b6c410e1e, limb3: 0x0 }, w9: u384 { - limb0: 0xbaa6c2335b73072667388609, - limb1: 0x4b083acc39587e3827f45e1e, - limb2: 0x300bc5aebf5d587c, + limb0: 0xe7f3677e0c8e4b2cf239cb76, + limb1: 0x5b5a842f83fa1c97cc5c7327, + limb2: 0x2fa11202c481841d, limb3: 0x0 }, w10: u384 { - limb0: 0x279a903a4e9696347038d5dd, - limb1: 0x54aec8eb79696e12a588cb98, - limb2: 0x19f5874b30b8d037, + limb0: 0x280e5d1dc8fbd44f55aa1ed9, + limb1: 0x81716175d0aa8a41cdf6e042, + limb2: 0x1e2557b7664aa077, limb3: 0x0 }, w11: u384 { - limb0: 0x56133ffa4324c737662a7fac, - limb1: 0x201bdba92699345ade9c49e1, - limb2: 0x2a53684b0a85d0ed, + limb0: 0x8b1891d15473a4415a6584c8, + limb1: 0x717044196d4ad34648ecbfaa, + limb2: 0x2ff808daca642085, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x7fa07cd8e5ad5b07cf67ae0f, - limb1: 0x1bcd5f9b022b08ac4eafd9c2, - limb2: 0xda43088f2a673a, + limb0: 0x831948b97a903cb72c1281a, + limb1: 0x6249de24e4b773ff2555a892, + limb2: 0xfcce0e0540258a2, limb3: 0x0 }, w1: u384 { - limb0: 0xdb037a9b90050759019c7d51, - limb1: 0x38b6d22f24f04652743d5626, - limb2: 0x12ee75145a580336, + limb0: 0x16527bf5b2bdda41793e7a57, + limb1: 0x59dfd3399e7ca91704f744f4, + limb2: 0x1999f28e0cd3a56, limb3: 0x0 }, w2: u384 { - limb0: 0x1cff130494a2ebd9137a93e0, - limb1: 0xf8717e15fd0af61e0279654, - limb2: 0x29810ed131f784f3, + limb0: 0x73abe1b0c1f1c235ba1f0252, + limb1: 0xad5f05433838e24961646037, + limb2: 0x204595f15e82d86c, limb3: 0x0 }, w3: u384 { - limb0: 0x7404e969b81429f9e2ba0997, - limb1: 0x6103a4962c36779ef653a6f6, - limb2: 0x27dc2d78302e4e71, + limb0: 0x8435c4b27b0eec7ac4d2f860, + limb1: 0x2c860ce32e3b84ec4068fb25, + limb2: 0x2195b9ca1ef62245, limb3: 0x0 }, w4: u384 { - limb0: 0x1dd9cc62373541ce2922d80, - limb1: 0x13a906c5ad61980484f78aef, - limb2: 0x13c16235437ddf81, + limb0: 0x3362373453b2e6f73d85db0a, + limb1: 0x4fc8e5bf00553540b9d6f37d, + limb2: 0x14f3751cca11237c, limb3: 0x0 }, w5: u384 { - limb0: 0xdd39cd38dcc36fdf9af5c5fc, - limb1: 0xe141befa252e59c327da002a, - limb2: 0xbd78904db1dddf7, + limb0: 0xd0671ff4ebc24d0385bebb42, + limb1: 0xe93387f3fc94be814f5497e3, + limb2: 0x2fba7bc859c52667, limb3: 0x0 }, w6: u384 { - limb0: 0x7d5acfcbc1c17c43c85978d9, - limb1: 0xee108e92e5a9cb84abd036a3, - limb2: 0x1112ad6ed021f054, + limb0: 0x4bdbbc020cb147a7fdd686c6, + limb1: 0x90fbff6172d5a92997cdf930, + limb2: 0x2ce8d31ab5034e71, limb3: 0x0 }, w7: u384 { - limb0: 0xa82192423b4a2df38c678d0e, - limb1: 0xef416b1df284c1a611861c74, - limb2: 0x27d22eac0796d4bc, + limb0: 0x544bceb92f2d6d50c7300e45, + limb1: 0x66b707f6436ed10fc6eee425, + limb2: 0x700fd8d81f4d7b7, limb3: 0x0 }, w8: u384 { - limb0: 0xf8e1ea5002894f0a75a390c, - limb1: 0xace6d18768fe8016cb935e84, - limb2: 0x34945a1519315ba, + limb0: 0x38f96630cb01ba205550c90e, + limb1: 0xab0efb6eaf5c57eaeb137a7, + limb2: 0x366d9eb84fa41fd, limb3: 0x0 }, w9: u384 { - limb0: 0xe39385e52a45e859160c71c0, - limb1: 0x5adb96b0589d767ee0b9b920, - limb2: 0x2f4c4c20dbac629b, + limb0: 0xa04062194e7dbe07c2227a35, + limb1: 0xc480e02657ef750f22854a12, + limb2: 0x2cf470b662281b0d, limb3: 0x0 }, w10: u384 { - limb0: 0x799eb6f1416cdc7de0edd88b, - limb1: 0x671c1c676394692471f77cae, - limb2: 0x27ace3d688550402, + limb0: 0x9274312183a7a5646d3043a, + limb1: 0xb27bf783f06a5d2224e146fb, + limb2: 0xcac145f96f05f04, limb3: 0x0 }, w11: u384 { - limb0: 0x4e7a9e8730571e82efdfe4bb, - limb1: 0x714b0b19663ce9bbad6e46a2, - limb2: 0x2cc0601620e180fa, + limb0: 0xda62793d8d7c5497b89c789a, + limb1: 0x9395c572f69537cd4cd5363c, + limb2: 0x1a38f263853c7a08, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xd700d3c5bdd94bf0ed137d45, - limb1: 0x49d2042051af34eb676ff5b9, - limb2: 0x2df554a920ec64eb, + limb0: 0x4a51517b3736a89c3036669d, + limb1: 0x99047fadd5bd8df4a66e4a0e, + limb2: 0x15dbc1c704411c19, limb3: 0x0 }, w1: u384 { - limb0: 0xeeff81e01d619e09296bb048, - limb1: 0x84be13817e03ba6afecf7ad5, - limb2: 0x1b02f94be993691, + limb0: 0x11571451bcf392d00caea0ec, + limb1: 0xe5c649d1e006150f2bdb69ea, + limb2: 0x93066af6da0592e, limb3: 0x0 }, w2: u384 { - limb0: 0xf22fe45ec03848a3bbf8064c, - limb1: 0xaed96b858f6b6cbf93245e5c, - limb2: 0xd679e2fada81d89, + limb0: 0xd1a922e3c9306a263aaf0161, + limb1: 0xe342044bbb965c5a7597d0cd, + limb2: 0xa22441c66547d64, limb3: 0x0 }, w3: u384 { - limb0: 0x6bc3781ac2dc5d9f52572123, - limb1: 0x56bb34fbacee9c87a2015606, - limb2: 0x3041b05e33008351, + limb0: 0x9078e035b92a39d4f89c0e48, + limb1: 0xe1cc3029465ff527db6dd62d, + limb2: 0x1e5a6a7dd25be6b7, limb3: 0x0 }, w4: u384 { - limb0: 0x6ae5cbc13e3447f4664a596f, - limb1: 0x55d8423adda92e7fc1ecbddb, - limb2: 0x272ead16e67b2a44, + limb0: 0xd7dcf1882fcc84131b6117ae, + limb1: 0xac4379b837942cb218a31e99, + limb2: 0x2165d35c3d0fbb7e, limb3: 0x0 }, w5: u384 { - limb0: 0x61bf932e12b3d0506c856e30, - limb1: 0x2603b1c66dae0a404db91e24, - limb2: 0x26e136d64f2d1f5b, + limb0: 0x8a4c9e1a75bc9bbd982ed23f, + limb1: 0x16e08491f991335aa944a99d, + limb2: 0x28a4778a57ebb3ac, limb3: 0x0 }, w6: u384 { - limb0: 0x12d054f2ed9b489ba8b31caa, - limb1: 0x3d5befb3dff27be22c187a45, - limb2: 0x695771e187c6739, + limb0: 0xdf807f0e205ba881431bb22b, + limb1: 0x7aecdeb571648c5e953d4248, + limb2: 0xb04e6da40d86ef0, limb3: 0x0 }, w7: u384 { - limb0: 0xb678cdcd0350174c37c2966f, - limb1: 0x6db000f41cdd9754ef4b7931, - limb2: 0x1996118bbc7f2da4, + limb0: 0xbc9558fbfdf1a1c6f38276d1, + limb1: 0xd4be8eed8729279e94cbaf08, + limb2: 0x190791650ad0558c, limb3: 0x0 }, w8: u384 { - limb0: 0x71a8bdb3fdff51e6b0177d4f, - limb1: 0xb930db1c491b57392fe90fa4, - limb2: 0x8e4c021c356a879, + limb0: 0x7353bf72e66412ca9c62696e, + limb1: 0x92e58ce5bb3817ca71ff46e8, + limb2: 0x274cbcb8767930bd, limb3: 0x0 }, w9: u384 { - limb0: 0xb22e9e681d3d283afdf2acf3, - limb1: 0xf0e6b4a3cb6f63585c869375, - limb2: 0xdb7cf59206c23e2, + limb0: 0x4f3e43aa4b25303708671561, + limb1: 0x8bd7b3b10bd145d0ff6c2021, + limb2: 0x12c825254ce1e8b3, limb3: 0x0 }, w10: u384 { - limb0: 0x594ec704f178c86551ed4ee6, - limb1: 0x1523b7b661aa07053243b6c2, - limb2: 0x226dfde61691df21, + limb0: 0x97fed90906a44f8f0b4a400f, + limb1: 0x75960b62b4764b889fce52d9, + limb2: 0x14ae3f427eeff0dc, limb3: 0x0 }, w11: u384 { - limb0: 0xfa842c8ca5eb93d3bc7facd, - limb1: 0x1c11a13a7a5e4c0f3628e216, - limb2: 0x1d36d4e7ad00cb5a, + limb0: 0xccf264d37b7fd73968e638b0, + limb1: 0x18fc369852a7ea104566bd1d, + limb2: 0x1518d2b7e35d07fe, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x2bf340d6ce9b1dcc4899be71, - limb1: 0xacc905cec1df56df55799848, - limb2: 0x1f9ea5a93b78c189, + limb0: 0x9550c01f316d2eb774cdfb17, + limb1: 0xa799748aef1fb4d9f282ba74, + limb2: 0x2071c1162abc7876, limb3: 0x0 }, w1: u384 { - limb0: 0x29f087b450a535cd5f744124, - limb1: 0x3b7e53b5311a17dfd0cf74d6, - limb2: 0xb44d7ad4da08c0e, + limb0: 0xf15d698ecaa67594e5b36a25, + limb1: 0x5b743848522ab99d9b544c79, + limb2: 0x14957443cdaa6d74, limb3: 0x0 }, w2: u384 { - limb0: 0xba0d4229232bdfc13c6bb1db, - limb1: 0xca3c72409f920502f244b81c, - limb2: 0x25b09e7f98f448ac, + limb0: 0x23c3680109857fedb2584b97, + limb1: 0xeeddc43aea857d1f43891839, + limb2: 0x22f9635105fa1cdd, limb3: 0x0 }, w3: u384 { - limb0: 0x35588a9288be948febc080c, - limb1: 0x36ec16cf402de157539992f5, - limb2: 0x12419fb1fbb2e61e, + limb0: 0x5a8b4b59cac2139503fd7a02, + limb1: 0xd4d0405c7d6cd0cd5088c99a, + limb2: 0x2c5e5b31cf32b7f6, limb3: 0x0 }, w4: u384 { - limb0: 0xd525d425bc97adb0fa4d2df0, - limb1: 0xbcbf3c6306d9d6b02e9ec007, - limb2: 0x2c50912285765524, + limb0: 0x3aa1410d7f7c50691c1f6bd, + limb1: 0x83dd23a249fbc11641b424a, + limb2: 0x2510af0bf4d461fe, limb3: 0x0 }, w5: u384 { - limb0: 0x66b2fbb313fa01b9b7b86d45, - limb1: 0x9c14bca20aa514538548e0a3, - limb2: 0x183cf78c57ac1d14, + limb0: 0x80cf83d7759909fd8b1e4350, + limb1: 0x4a3b7c0421d3e488de59a653, + limb2: 0x15d735e16a5811f1, limb3: 0x0 }, w6: u384 { - limb0: 0x8948015862641be58c8e1c2c, - limb1: 0xab8149086f45913c24cc5e9b, - limb2: 0x1d74a2b304b58f11, + limb0: 0x820c3ff119b693089187ee9a, + limb1: 0x5ed9815a0b4a73cfd1f399ca, + limb2: 0x22ceb68a502f4d4e, limb3: 0x0 }, w7: u384 { - limb0: 0x6acee650a6fa6b01fa79fdef, - limb1: 0x8f40a91e09091769008c9234, - limb2: 0x2f29e7975db074fe, + limb0: 0x24751ad5aaca0d6217a74a46, + limb1: 0x160038d1a0bbdb492712876a, + limb2: 0x1a6c43819904e49d, limb3: 0x0 }, w8: u384 { - limb0: 0xfd70fd3028e6c538e2098b7d, - limb1: 0x7b2d6e0d60d42b1aa2a0dd81, - limb2: 0x2e2cb7a7d355be8b, + limb0: 0xd929aec37cfa893320694cc3, + limb1: 0x99853047b2e6d3be1c9fe060, + limb2: 0x2c06535353a075bf, limb3: 0x0 }, w9: u384 { - limb0: 0xb66284ef8ed5088bd1962f93, - limb1: 0xf17b5e751e0fe18bb803b4b5, - limb2: 0x45ad32773eb0bc7, + limb0: 0x74b968e0af97ea6d72470e95, + limb1: 0x55b4cfcb6ebaad78180c175a, + limb2: 0x46887dc41efe43c, limb3: 0x0 }, w10: u384 { - limb0: 0x2948b1910d0f2ed4eaaab084, - limb1: 0x769f91bf8ceb127d15fd8f69, - limb2: 0x2e029def4cb4cfa7, + limb0: 0x99491b8ac44e67a99e912329, + limb1: 0xa42a1d90598d437fb2bcedc1, + limb2: 0xb3d8d869ae6d1c2, limb3: 0x0 }, w11: u384 { - limb0: 0x9e26f4c217a02e5d5390bc73, - limb1: 0x81e45129b5c26e78b28ff2ad, - limb2: 0x14b696d3a957a88d, + limb0: 0xd0fdd6acd6ef039a8a163ff8, + limb1: 0x30729ccb26df22bfcf6abc85, + limb2: 0x2b0eccdc2a51b638, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x31eeaaa51971c12f988bc168, - limb1: 0xee17d083c1a2e7a584a951a3, - limb2: 0x2026edfbc0ae5872, + limb0: 0xf3e1985d3484c98c460d40b8, + limb1: 0xd235e2b4b447e6b7d2786f2d, + limb2: 0x2794d7ee56711ff3, limb3: 0x0 }, w1: u384 { - limb0: 0x344f30bf3233694c47173fdf, - limb1: 0xb989f93bc410a5663b6a8cbe, - limb2: 0x8f5258809b719fc, + limb0: 0xc4920d3c31391eed097e4c2e, + limb1: 0x22cf1baa59c4fb11f50b4451, + limb2: 0xb0cb3110c651d51, limb3: 0x0 }, w2: u384 { - limb0: 0xe12ac3e11fca1074caea1030, - limb1: 0x280709db2e98e3eec7cac556, - limb2: 0x246296736164d758, + limb0: 0x3cca9da5cf7843e5eb06d384, + limb1: 0x806b82d1e08ab9686c3e9cee, + limb2: 0x2fcaf946dba81e55, limb3: 0x0 }, w3: u384 { - limb0: 0x1e23588b58ab0b53ebe3b3e7, - limb1: 0xf13a714e5a6cbf9a2c3a93cf, - limb2: 0x10d5bf37d84bd944, + limb0: 0xe99afe8b8635cd1c03dfbb2e, + limb1: 0x1ab330a67b8ea3390bc60186, + limb2: 0x6baf64b239b5a95, limb3: 0x0 }, w4: u384 { - limb0: 0x20aa54c8fd93fe580f1b1e0c, - limb1: 0x1ea362197254add7d1a9b782, - limb2: 0xb4bb902c75685db, + limb0: 0xa387041e5d52c3d1833e2035, + limb1: 0x6f69a762d27f6d41b75d8923, + limb2: 0x1855e6241959ea3e, limb3: 0x0 }, w5: u384 { - limb0: 0xbb68bbf44c4816247e6dead6, - limb1: 0x8f9c9424c88f094e2d002724, - limb2: 0x177a7b5be461e556, + limb0: 0x62260197df74d778a376e17d, + limb1: 0xd4ef62b78d7f11f88054a18e, + limb2: 0x22e103f9e8428042, limb3: 0x0 }, w6: u384 { - limb0: 0x66b675a3acc3c4bd54a540c6, - limb1: 0xe3a9ce7a0ba0ab7c300fbe85, - limb2: 0x7758f2a98e70fac, + limb0: 0xef4387782e53df8b5a4d4540, + limb1: 0x864935d82873bfb80bb818a9, + limb2: 0x82c3ea7b4fdc2d8, limb3: 0x0 }, w7: u384 { - limb0: 0xf5751770e8ef78205c3cd65, - limb1: 0x5e729002a31dbd609cb8d6a6, - limb2: 0x263061a7a8b147c6, + limb0: 0x552b6d9a132c9aacf6c8e68a, + limb1: 0x21f26de92232a6e183e96619, + limb2: 0x2d0abe77111f5913, limb3: 0x0 }, w8: u384 { - limb0: 0xeb3eec465b14f0ecebcaf8c7, - limb1: 0x23d29307f553766501a66e14, - limb2: 0x1a88154c011c6a2a, + limb0: 0xf1fa25bb1ad9b56e3dccd8f8, + limb1: 0x13cbcbd10f053c83af8c14e2, + limb2: 0x4e96cb576484a9f, limb3: 0x0 }, w9: u384 { - limb0: 0x8fd4a18122cd6e7cff732c54, - limb1: 0xec4c2377048a155ab45514c8, - limb2: 0x18922f7d5e5f1a1f, + limb0: 0xe9ddb79fd5eadd560165fc31, + limb1: 0xdde02793a58d2f537c30f157, + limb2: 0x2d2376e857e4628c, limb3: 0x0 }, w10: u384 { - limb0: 0x13457249a756cb9a7203335f, - limb1: 0x95e936a9ca00da828bf7099, - limb2: 0x75b0635068ca0d2, + limb0: 0x268199268efd242eec30f046, + limb1: 0xc59d70a76d30028680dc1e23, + limb2: 0x23c64f91e207ccc8, limb3: 0x0 }, w11: u384 { - limb0: 0x944ae2150a9063a3208a54e8, - limb1: 0xf59e84380a56a4408d25630, - limb2: 0x278cfea1a25eb319, + limb0: 0x548240ca2d2d80be893aa4dc, + limb1: 0xddd9beb48cbe7f71416f4adb, + limb2: 0x12a34096245885ac, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x33407bf491b3e56f5113377a, - limb1: 0x3155469d5b2e8a9543ad2539, - limb2: 0xac4418cea6a378e, + limb0: 0xb932404fc5deaf5ca1084f22, + limb1: 0x45537fb16a9d0d9c9b27909f, + limb2: 0x9e542d7176bd662, limb3: 0x0 }, w1: u384 { - limb0: 0x7bc7db86301afc04b0f9b32, - limb1: 0x28a3d8b2c278a4009cd37a4f, - limb2: 0xa5b3760fb243ae5, + limb0: 0xe41278cb4daf87f290dd3a04, + limb1: 0xc9c6206cd745271ec011fd65, + limb2: 0x2c577e9d12debb40, limb3: 0x0 }, w2: u384 { - limb0: 0xde6712638508bd1467002550, - limb1: 0xf70fa931a31e1b5756c4b9aa, - limb2: 0x11622a68401cadae, + limb0: 0x4335310eed4faf159f9c8444, + limb1: 0xe688d09bb174ac43f23a3e27, + limb2: 0x2354dbe2b796e4ba, limb3: 0x0 }, w3: u384 { - limb0: 0x221b45e205d290695e1071a3, - limb1: 0x370c40414a783931b197178d, - limb2: 0xe414747775b0062, + limb0: 0xd41361fcac2de086a493c58c, + limb1: 0x625253da3aa2e34033a70008, + limb2: 0x28b38826f5493b70, limb3: 0x0 }, w4: u384 { - limb0: 0x893955a16124f2084427e53c, - limb1: 0xcb1cfbd4f2048cc385c6e638, - limb2: 0x258b9c4a01ec905a, + limb0: 0xc69a3fb22d6376c89c74771, + limb1: 0xd96fbb86b82f3f6463cd8491, + limb2: 0x2af9192814b87fc2, limb3: 0x0 }, w5: u384 { - limb0: 0x2af0cba0f9bf64431cc14d0b, - limb1: 0x1b0aa4f956d68380ba48f250, - limb2: 0xe3d3afb53a498f, + limb0: 0x1a384517b92917cf0fa276c, + limb1: 0x9b667948c316ff4c6355c18c, + limb2: 0x14f06d2379de9355, limb3: 0x0 }, w6: u384 { - limb0: 0x6198d868cbaf2b339fae918f, - limb1: 0x8c80e6c5c22c0aa0e69cc9df, - limb2: 0x1ad5056c7c91697f, + limb0: 0x7380ef9760fd9df1e17bb60d, + limb1: 0xafd96d81ffa9d28985751ef9, + limb2: 0x21ca6806d7e07b09, limb3: 0x0 }, w7: u384 { - limb0: 0x96960a31c42a821c48dcc25f, - limb1: 0xe2d0ca830db47823ef1c8b1f, - limb2: 0x6b8481bf6f543fa, + limb0: 0xa2f45b111bddf47b7a6af992, + limb1: 0x8cda3e9e39bf75fe9e195725, + limb2: 0x232b84048c73733b, limb3: 0x0 }, w8: u384 { - limb0: 0x3942306a57d73066fb76938c, - limb1: 0xbddab23a07a8bb025eda19c9, - limb2: 0x1544edc1ff2335c8, + limb0: 0xac18a9109dbf382bdce9e77c, + limb1: 0xae8de87e2eb5c9bb4dc24763, + limb2: 0xa6af8725de7a563, limb3: 0x0 }, w9: u384 { - limb0: 0xe04685f349f800bfd00e47fc, - limb1: 0x852246957ae1c73abbd65e9a, - limb2: 0x7a1f18413f7739a, + limb0: 0x8ab8c6db1d72e297fd87686, + limb1: 0x163ca18ed29b81028f49377f, + limb2: 0x28ef538889458b79, limb3: 0x0 }, w10: u384 { - limb0: 0x79c6974b928d8fdba15ede01, - limb1: 0xcdd6cc7aac5d0b524b18c1f4, - limb2: 0x1136c0142d86cd76, + limb0: 0xc36b1c6e5d8741efa4f0576f, + limb1: 0x3cc3b97e5eb2d30892c329a9, + limb2: 0x23a34dc1d286af67, limb3: 0x0 }, w11: u384 { - limb0: 0xd2bcc022c60de83f797752c1, - limb1: 0xb7a3880f02bbb15ba6c49b9c, - limb2: 0x2b8826bf7c8bb386, + limb0: 0x7897a82cbb03852f95f583e9, + limb1: 0x13cc0f18dcde4d589ffd614f, + limb2: 0x29d58b71eae5d1e6, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x5c1c3af4eaf72dca8e6a12cb, - limb1: 0x40579e4aaa190201056014f9, - limb2: 0x2861cb2f8a1589f5, + limb0: 0xddbd4e8a1f810fbb4535fcf8, + limb1: 0x80144529c72e59c4e997cf35, + limb2: 0x2beac97e33303d29, limb3: 0x0 }, w1: u384 { - limb0: 0x82cd6463a1a2c0dfb22cbbad, - limb1: 0x5a0bfad7c2cf952945b31325, - limb2: 0x1197c86931aac04, + limb0: 0x1f1e560c7d6de7ecba78e050, + limb1: 0xee0633d6a56e3f0338ae3bf6, + limb2: 0xb2558c365cb7c48, limb3: 0x0 }, w2: u384 { - limb0: 0xba2f87c798fc424cc54706b2, - limb1: 0x5ffb5e2b78ac6ced3f04010d, - limb2: 0xee5c0d7ccf38408, + limb0: 0xf8ff386d45a5bc5d394fcb4a, + limb1: 0xca274b742cc5e3ea3910964a, + limb2: 0x9a92a4736f6e3a5, limb3: 0x0 }, w3: u384 { - limb0: 0x4b1916a432255aa30fe7bf3e, - limb1: 0x6e3a93e44515b399a60355ca, - limb2: 0x281c1efe08f8a966, + limb0: 0xde21358f6e477772f68e2cb5, + limb1: 0xb7e8aa3aa51ff8e7783048f6, + limb2: 0x20fab28f79f38f92, limb3: 0x0 }, w4: u384 { - limb0: 0xbd42ef5b906d97a38346af46, - limb1: 0xe7ec49e481499e378d3af8e6, - limb2: 0x1af87eb4a86c61c4, + limb0: 0x95adbf8f0360fb5913d8c44b, + limb1: 0x9db455e4b7031848e0bfb83c, + limb2: 0xda7b9f0c5dc8a94, limb3: 0x0 }, w5: u384 { - limb0: 0x4b9f06a88bc47cf471c6d2eb, - limb1: 0xab0215f8f57ec9a82457d036, - limb2: 0x121915171f2dacbd, + limb0: 0xe1d7093081f6b4c874f1b8c, + limb1: 0xf808182365905364bd6104a3, + limb2: 0x1e90d17e3c256afc, limb3: 0x0 }, w6: u384 { - limb0: 0xf1ddcc9a2edcf7176445d5b, - limb1: 0x27cb0ab2252756f8c3c4a15b, - limb2: 0x1816710e9eb27345, + limb0: 0x3f32e9749b503b260f4502c7, + limb1: 0x9296b1be8464b57f3a76ac49, + limb2: 0x203d51be3441d9a3, limb3: 0x0 }, w7: u384 { - limb0: 0x2b224e0b6853c77fe58a6ce2, - limb1: 0x35bbd256449386a7dd668d46, - limb2: 0x210e02f03842f7d3, + limb0: 0xad3e3e965dab14fc4d519d32, + limb1: 0xcda6852537cf1c2a2b88e83d, + limb2: 0x19a463d93a017ed5, limb3: 0x0 }, w8: u384 { - limb0: 0xf685cd91d8be5f71080cb4c6, - limb1: 0xadd5fd8e50fbf80033338271, - limb2: 0x72f1cd400c4f4bf, + limb0: 0x8fc22f48cc8ab288464d8f7b, + limb1: 0xe9f6225682e64a7705f48668, + limb2: 0x1ff4c2ef089c3e91, limb3: 0x0 }, w9: u384 { - limb0: 0xea9d7cb22c2d4965c7107013, - limb1: 0x36eeda8b5d69527d393379ea, - limb2: 0x16087c962d1ed24c, + limb0: 0xf1180d7a14f596cc04fed479, + limb1: 0xb99c0ec859dc29ee95c64ec0, + limb2: 0x1ddf8220ff8e966e, limb3: 0x0 }, w10: u384 { - limb0: 0xc5c2f89664cf10cd6332823f, - limb1: 0xf6e5ccccdb388dbcd9c30d1, - limb2: 0x2b5ad1936c3fb5f, + limb0: 0xa0dd71495acf93e7dfcb7471, + limb1: 0x66f8ee616dbc9f962999d375, + limb2: 0x29827cad96aeb6d6, limb3: 0x0 }, w11: u384 { - limb0: 0x9a21108ddfe3398ae4189b87, - limb1: 0x2368f758fa5950ab33220584, - limb2: 0x23de73ac2e449211, + limb0: 0xec8855c5671efbe586a359, + limb1: 0x6cb3419dfca65cb51ae14e29, + limb2: 0x1369675bcce15f38, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xf541af8837a033cee74e8200, - limb1: 0x36636e065f8bd2241a86c87f, - limb2: 0x24366c307edd59c9, + limb0: 0x468ed4f8d1d6629f12d6bcdd, + limb1: 0x4325d3a2458bac2ef6559f6, + limb2: 0x7988c0f2c7ef2d9, limb3: 0x0 }, w1: u384 { - limb0: 0x2cb5696b7cb0aa0858789e7d, - limb1: 0x15c475964b64b95bfe4bc33, - limb2: 0x13e6af2a3735bb93, + limb0: 0xf44bd35796d5db76e257a7c4, + limb1: 0x577bec8c10d7b9c9e37e109c, + limb2: 0x29c1c4d6f11c570f, limb3: 0x0 }, w2: u384 { - limb0: 0x2c6a97908f6fb667eb6aecee, - limb1: 0x93e8d443b5bbd247f74bf8ed, - limb2: 0x76ce1be8272084d, + limb0: 0x208fb264fdf6010308bae66a, + limb1: 0x99dc88e3e627357a51eae590, + limb2: 0x520d2ec2d28fc73, limb3: 0x0 }, w3: u384 { - limb0: 0x2bac72092aed3735a5665255, - limb1: 0xbb61f8d19a3c8a5ff75dddb4, - limb2: 0xa73b763f450c713, + limb0: 0xee1960c39ad865fdc8e2a02c, + limb1: 0xe72b6ba981eb00e01cbcacaf, + limb2: 0x14ab52a9a91f3ca1, limb3: 0x0 }, w4: u384 { - limb0: 0x987eb77f56afaeb1fb52cc68, - limb1: 0xef56bf8a8b123e6fc6bc1888, - limb2: 0x1c14ef2c4d348ba0, + limb0: 0xcdb1f9057d952caf8f9262af, + limb1: 0x47708c86ee3f79bb5ceae414, + limb2: 0x12ae677039349800, limb3: 0x0 }, w5: u384 { - limb0: 0x12ecf08858f856ebc4af92dc, - limb1: 0xeaec258324e64f66a92a3299, - limb2: 0x247488f02f646081, + limb0: 0x535cbf855da6740422d60cae, + limb1: 0xa3cd0b6e5e4d651ff3a473, + limb2: 0x10f2c74db86d06e6, limb3: 0x0 }, w6: u384 { - limb0: 0x6d2c2fcfbd8746d18347f534, - limb1: 0xfeb84a73aa9fe6807f7d3268, - limb2: 0x27424df416c3c6d3, + limb0: 0xa1bb6c433cea7f1a5fa87d8e, + limb1: 0x5888419dc43ddf7fc7ddee44, + limb2: 0x252adfdbd950afa1, limb3: 0x0 }, w7: u384 { - limb0: 0x29785e2235e0ae90bf4486b9, - limb1: 0xc4d0fc16f38eea269befc906, - limb2: 0x8082e460f123cd3, + limb0: 0xbfcf3e623fdf135eecfc9077, + limb1: 0xd4fc785f966b005e85ea4f1f, + limb2: 0xd985398125b94e, limb3: 0x0 }, w8: u384 { - limb0: 0x549b5919d536eee33ccbb78, - limb1: 0x6b1c2367c05ff78e3203267, - limb2: 0x2bb1eaac13b1edb8, + limb0: 0x4c29892ec4990352ed1c701f, + limb1: 0x8ca5839a48478d233d9b3182, + limb2: 0x16433eea5bb9301d, limb3: 0x0 }, w9: u384 { - limb0: 0xef9985c7a19762a95768faf5, - limb1: 0x209b0ef8b6e640df0090c16a, - limb2: 0x1a03f9dea9d0708f, + limb0: 0xff1ffcff70b5865c3383d4ab, + limb1: 0x4e30e65e8c17b602bef91d7c, + limb2: 0x2811cbacf079ca21, limb3: 0x0 }, w10: u384 { - limb0: 0xb7ca1d2975bf978e1242e35d, - limb1: 0x80708e1145de6db97c65821c, - limb2: 0x1e365659889a2315, + limb0: 0x6f2e8c05ada3cac6c492c78d, + limb1: 0x6eafe6feb3208b8220a5c41, + limb2: 0x16e588f633218544, limb3: 0x0 }, w11: u384 { - limb0: 0xd9518ac30f49218f1bd73fab, - limb1: 0x60643515e9862caef8fd226e, - limb2: 0x1c0f6a4bf7ddefc5, + limb0: 0xeb5ee7ea20de8960a4418b45, + limb1: 0xaca7bc3d479473657c292186, + limb2: 0x2175db1d77be5a13, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x394f9db51e7b75355f564eed, - limb1: 0xab63495b67ef7e6ce4192259, - limb2: 0x261529bedd46478a, + limb0: 0x83a1eee75fe7b6b38e7526ac, + limb1: 0x5f7b91b8af6798fcb4d61be4, + limb2: 0x1b409aed1e666bc, limb3: 0x0 }, w1: u384 { - limb0: 0xc4791d76cdebd38e819b6d08, - limb1: 0xe5f2f1dbf6d2827aabd3aa47, - limb2: 0x592087f8fe038d3, + limb0: 0xd745c8e92906cca1c38a4bde, + limb1: 0xc2b99aeceab981621fc6b467, + limb2: 0x294de65b1207db60, limb3: 0x0 }, w2: u384 { - limb0: 0xf0855a626353d1c9b3041689, - limb1: 0xb5db5b595e93a90f2b0d63cb, - limb2: 0x21ab49ab8cffa24, + limb0: 0x8cc3ee43ad4ccf083f5ad90d, + limb1: 0x15f8c847e39e1b47e32321db, + limb2: 0x101220fce2d37137, limb3: 0x0 }, w3: u384 { - limb0: 0xe9951a47d24ddac85a308c3a, - limb1: 0x7ee9c9d117d8f2e5bfffe613, - limb2: 0x12a4cd7b9ab8112e, + limb0: 0x1a86cea34992624b42e57085, + limb1: 0x904604ea89767bdc71df4854, + limb2: 0x26819afc3cb8fa4c, limb3: 0x0 }, w4: u384 { - limb0: 0x91b1798671a643eecb9b11c, - limb1: 0x9a055a54e1076cd9198220c6, - limb2: 0x1aa4b9e73abd181d, + limb0: 0xfc5feca5200bfcbabbc86e1e, + limb1: 0x1c1b2de969612b6ec4486626, + limb2: 0x2e203cbf6616bfba, limb3: 0x0 }, w5: u384 { - limb0: 0x2ffebb7145e7f1dfb2b8127b, - limb1: 0x80ff02cf52bd80a76eb962f2, - limb2: 0x2e405756c7a4a47f, + limb0: 0xbcb40c4c70e301ba02f1f3e6, + limb1: 0x33f3d16b97524d42af66319e, + limb2: 0x121652d1c30ade3c, limb3: 0x0 }, w6: u384 { - limb0: 0x26c198b93852df4d25063186, - limb1: 0xc0df63efe3a1e82b3a69ce48, - limb2: 0xc3f84ef079a414a, + limb0: 0xdfb9638ec6cb8b3b67e43b56, + limb1: 0x78c3f8887ba6d35e8e2e6a9f, + limb2: 0x27ff5565b216fdf7, limb3: 0x0 }, w7: u384 { - limb0: 0x1fc3e3f411e7edd4c20c1381, - limb1: 0x9f814e4d42bb5419cb5d0c84, - limb2: 0x1dc40d928887b6a6, + limb0: 0x315e58e31f290ee770c27f9c, + limb1: 0xa4e4e1cb4e66391bc78fb08, + limb2: 0x262ac0d787e6de72, limb3: 0x0 }, w8: u384 { - limb0: 0x8f585b78e23e8454ab2455d5, - limb1: 0x304c6c9991c3369edc3aa6ba, - limb2: 0x278ebeeb0f534be7, + limb0: 0x7e2a62e5b230e49dcfa3ebd2, + limb1: 0xa43317577a47b5cb9fccf313, + limb2: 0x29dd436f033091a7, limb3: 0x0 }, w9: u384 { - limb0: 0x54b772667da3147d9c7e62a2, - limb1: 0xd92dc87edf17f02cf02646ca, - limb2: 0xfdf5e881628bf04, + limb0: 0x3a2826afcd73ac2a20c1d5e, + limb1: 0x6f7f29f876c03011ce4f1a8b, + limb2: 0x26c09bc2463a0c16, limb3: 0x0 }, w10: u384 { - limb0: 0x5ea138f74ccfe2f5fac07588, - limb1: 0x15d838e59ce2b961f577d939, - limb2: 0x2d8367e6a7adc8bf, + limb0: 0x59389f242e9b543f6e99b1ae, + limb1: 0x708b93394b98719bb04b748f, + limb2: 0x1dd485a3a0123d49, limb3: 0x0 }, w11: u384 { - limb0: 0xfdfebcd625fc9e575de420df, - limb1: 0x404462aaecf05112964b9fcb, - limb2: 0x1209b518ab2d1836, + limb0: 0x34afa24aee9c9c7eda6a15e8, + limb1: 0x98a52f2aafcc0874629fb7e6, + limb2: 0xda8385f540c7f2c, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x57baf731a4d339660e74505f, - limb1: 0x1c128617d77d53fd5a6594a0, - limb2: 0xc7f836141b8c788, + limb0: 0xd451e67860041605c99c6409, + limb1: 0x3b8633d4f243334d58da46de, + limb2: 0x2bca14280f9a7147, limb3: 0x0 }, w1: u384 { - limb0: 0x9322a5c78b8466d0b3765fc7, - limb1: 0x7dd6b00945cdfaa37d5a7291, - limb2: 0xce1ccbdd57a9229, + limb0: 0x19c47924453f50cd37e32650, + limb1: 0x5d69281390bfc35daf30e22d, + limb2: 0x1a030d39bf8c6e69, limb3: 0x0 }, w2: u384 { - limb0: 0xc3eb4cc4caff2ab9ab0c6057, - limb1: 0xd9ea505cb98f4ba86b829a1c, - limb2: 0x5a4164ba14ef9af, + limb0: 0xf68c86d669e5cebdebc66e6, + limb1: 0x7d4d15f4088030609d502b7a, + limb2: 0x17a382b7ce5ba47b, limb3: 0x0 }, w3: u384 { - limb0: 0xf4d89c986cfdcce47b2ffced, - limb1: 0xb43de91a1278ee98dfd711dd, - limb2: 0x29e56d2d5ac2b274, + limb0: 0x9c7c4ccd268b3fc6ccaff01a, + limb1: 0xfc35acf21d390b3635a87d80, + limb2: 0x1d068ca9ebcd4486, limb3: 0x0 }, w4: u384 { - limb0: 0xd956ecd08bcbc3fb0414d28e, - limb1: 0xc0b0d4cf42a5da33232bd4ce, - limb2: 0x1b088279d741401d, + limb0: 0xb40eb9c5d589ada70b7ef444, + limb1: 0x2dd907675eed6e808181fdb9, + limb2: 0xd8b981a3b46eab8, limb3: 0x0 }, w5: u384 { - limb0: 0xe192887e49fb7af104279c2f, - limb1: 0xb718d15ce1e0e9325c96d8b2, - limb2: 0x28f3966548a3984, + limb0: 0x6c0894904143436311a37df5, + limb1: 0xffb5742a32c101d0c02ae4f7, + limb2: 0x1291ded7d805cf7e, limb3: 0x0 }, w6: u384 { - limb0: 0x245ddeeffe448026c839b514, - limb1: 0x5b05cd075bf8a7d3e2a25f2, - limb2: 0x1529d9f900ddf872, + limb0: 0x21e2f1c03f4494a3644d1dfc, + limb1: 0xaba3c19e561c6bbb182246bf, + limb2: 0x20d6fbeabebb2995, limb3: 0x0 }, w7: u384 { - limb0: 0xecbc80d0972a9fe7b18c1e40, - limb1: 0x863d96f570a23d4a678b6e86, - limb2: 0x2485f25c3b0ca914, + limb0: 0xefd387d10431c424dab9fd5d, + limb1: 0x83bba39e44a9debe3ab8d79c, + limb2: 0x1683199a559cff04, limb3: 0x0 }, w8: u384 { - limb0: 0x1685f9cbbb6cb572ba017416, - limb1: 0x156336af20c15f099523fbda, - limb2: 0x261cf6c21e821f67, + limb0: 0xacec4da3e0a37aa279c76907, + limb1: 0xc5112ba6f3abed0f30f9c931, + limb2: 0x1384a924beb9f330, limb3: 0x0 }, w9: u384 { - limb0: 0x280f350bb0133bf06acc9f31, - limb1: 0x3bde7001318bdc1c89908a54, - limb2: 0x2c85f0638fa726ac, + limb0: 0xc2fda462cab80cdf7e07b0ac, + limb1: 0x248f802c4b97e7f64b33b66a, + limb2: 0x1675f23fc083caa5, limb3: 0x0 }, w10: u384 { - limb0: 0xcca15a1988ebc44e1a01d26f, - limb1: 0x620de8e078fd4ce7907af76a, - limb2: 0xc5ed411b4821638, + limb0: 0x9a7869691ce3e7c1a4d95f64, + limb1: 0xf5d3f7226fcc3da414c645d7, + limb2: 0x23bccd93918266a4, limb3: 0x0 }, w11: u384 { - limb0: 0x58395439da2ffe52dd334051, - limb1: 0x27c6de07b5e502504daef430, - limb2: 0x29cf24c137ec7567, + limb0: 0xa3bb895340ce3aba4804530b, + limb1: 0x2d1f65eb90a820b67eb2af13, + limb2: 0x1796740f792dd66c, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xc4da14dcaf67520de8267128, - limb1: 0xe7832adbdf37f25b066ca702, - limb2: 0x9c8d143c7083909, + limb0: 0xa9c41bce892faba3aadedcef, + limb1: 0x926c924972ec3cf619862c2b, + limb2: 0x19496d834f2b99de, limb3: 0x0 }, w1: u384 { - limb0: 0xb9913035300d50b55b90ac6e, - limb1: 0x2609335a3b22d2aabc91c2c4, - limb2: 0x185df051487f2d20, + limb0: 0x76e265fbafa2464e178cad67, + limb1: 0x7f97561f0db53440d7278f70, + limb2: 0x1c985d22dc52bd87, limb3: 0x0 }, w2: u384 { - limb0: 0xe01c66deefcec98591fe4e5f, - limb1: 0x1f54189a8b9d95a052235d16, - limb2: 0x112757bc7090bfd8, + limb0: 0x920f098a7a97be1457fbd1e0, + limb1: 0x8dafc989c7978a770cd29bf1, + limb2: 0x36768363ca55449, limb3: 0x0 }, w3: u384 { - limb0: 0x5f6667377eb8b284dd46f6de, - limb1: 0x7b0832ec7c00a2b6433c2252, - limb2: 0x347ed2383736e82, + limb0: 0xa0d01c29756ecac472df57c5, + limb1: 0x5db97c98eac5706db94a49e1, + limb2: 0x10c95465a7f7ef93, limb3: 0x0 }, w4: u384 { - limb0: 0xb8082299c2206140fbc4957, - limb1: 0x598f4c3f875bdd5fdae8f1f3, - limb2: 0x2614093922347e14, + limb0: 0xbef5a84455d849db5561eaca, + limb1: 0xff703adf9f2883eaaf307634, + limb2: 0xc269b87f38c58d6, limb3: 0x0 }, w5: u384 { - limb0: 0xccf11805c7e88e98c12335a5, - limb1: 0x40487757c4cc3b25c995599e, - limb2: 0x705eea2b9aefeff, + limb0: 0x44c68db30a8f7b1904d79c3d, + limb1: 0x356f01321b0baef641da96db, + limb2: 0x584aecddc370dc8, limb3: 0x0 }, w6: u384 { - limb0: 0x1903adfbea7a40019f112e94, - limb1: 0xffab02dfaadfbd3ee50459f1, - limb2: 0x1dac59a8279039ee, + limb0: 0x2c5b45115b56d0483dea0a06, + limb1: 0x89f395d180b1409497dca472, + limb2: 0x1b17fcf43b49c54a, limb3: 0x0 }, w7: u384 { - limb0: 0xed65931e6de3ac8a0fb6ffae, - limb1: 0x6616e282ea336456f8ce56a3, - limb2: 0x25d709dfd57fc4a3, + limb0: 0x8849e032ccf76e4ee2592bf3, + limb1: 0xff924f054a9bc5808b7c147f, + limb2: 0x3005f619b61e3c42, limb3: 0x0 }, w8: u384 { - limb0: 0x55428e9490d41d0bb9944c92, - limb1: 0xa8dc37095bd5269c08ae98c8, - limb2: 0x1a99de1bc0cc9f15, + limb0: 0x17c896030eb75b2dae008239, + limb1: 0x502d105d13d49d5b6edfa5a1, + limb2: 0xb84d3b1478c4ba, limb3: 0x0 }, w9: u384 { - limb0: 0x8fe32bcc4bd516c2ee39b67b, - limb1: 0x7ce941fcecb889d7ca399a0d, - limb2: 0x256dc88293a6efd4, + limb0: 0xeb39f751792a720e24a3732d, + limb1: 0x63291ebb6abd8744ffc0a6fa, + limb2: 0x1fca9f6aeef503cd, limb3: 0x0 }, w10: u384 { - limb0: 0xd7785754357527250d6e58db, - limb1: 0x8c233c68a84c9b2729c4c804, - limb2: 0x2686d18b72797cb6, + limb0: 0x467c5d4734556ca1dd285e5d, + limb1: 0xca6d2bb7176c271d630d7c49, + limb2: 0x2cd18ce6e80bc670, limb3: 0x0 }, w11: u384 { - limb0: 0x6a60815b5059895f58964b5c, - limb1: 0xc091683daeed1b76499e5a04, - limb2: 0x42851d56b9f39e, + limb0: 0xc58e68e42b5634ce0fef3517, + limb1: 0x3843532fd080c8b670b6aad, + limb2: 0x914739af32ad990, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xe4b18a6fd7e8e5157b445a7c, - limb1: 0x6e90ab10569ce7a06a79f0fd, - limb2: 0x29e3688e9e10ff36, + limb0: 0xba888b77b1d007e4430dc9d1, + limb1: 0x7f05f722887db097d98768a2, + limb2: 0x11ac9b853c140ce5, limb3: 0x0 }, w1: u384 { - limb0: 0xdd84f8fe35b499079dfbe9e6, - limb1: 0xce3504d945953a9d1fb99daa, - limb2: 0xac63e559b1b7acc, + limb0: 0xb379384d94427711b04b74ab, + limb1: 0xe1763ecfc8f93579bb8523cb, + limb2: 0x13600f6b15757d54, limb3: 0x0 }, w2: u384 { - limb0: 0xa5ea0f21b846b8312724d76b, - limb1: 0x85ec1c1bcf820b92fab5a37c, - limb2: 0xabecb2fcff9ac81, + limb0: 0x91750d462bf1649112011584, + limb1: 0x2bea890d39740967beb2a3de, + limb2: 0x660027ec85a80c0, limb3: 0x0 }, w3: u384 { - limb0: 0x7ff98cec28f1f4e372ec45f5, - limb1: 0xa53325dd5dad5ec90bda94e6, - limb2: 0x1f2dd9ffb69c57fc, + limb0: 0x7cdf57c0881a04be651d8e27, + limb1: 0xd8061692e690b9c63e575e35, + limb2: 0x1bd93d94d48aad90, limb3: 0x0 }, w4: u384 { - limb0: 0x75b8dee14f59a9b3df67b7c4, - limb1: 0xc02d68f561be537ab4e4fa34, - limb2: 0x2b0e2aaf84b4b9bf, + limb0: 0x2d6fbfbfaf61e00e97a3683e, + limb1: 0x10a5f969cec86c477d441bb4, + limb2: 0x24cdac0f1a253048, limb3: 0x0 }, w5: u384 { - limb0: 0x9127f2f042108479acfbc6a1, - limb1: 0x419d320edb49983aa4e9287b, - limb2: 0x17f14388a0f9333f, + limb0: 0x30afd64a57950c2ef6f2117b, + limb1: 0x46eeb7d4867be7fee7ed0869, + limb2: 0x27ae40a071104694, limb3: 0x0 }, w6: u384 { - limb0: 0xb710d2ae7825241e35186cbd, - limb1: 0xea1bb2fa5ce1266a649df9f1, - limb2: 0x189af73ac2193864, + limb0: 0xf94aba9c45dc043d6b77053a, + limb1: 0xb063310874317e77169edd49, + limb2: 0x1f1d1ce001043ad3, limb3: 0x0 }, w7: u384 { - limb0: 0x668a213cea362d4507dae203, - limb1: 0xc41658fe21e5d9423082b2a6, - limb2: 0x2ae887fb1c22a6f9, + limb0: 0xfa957a2c2722a95000184be8, + limb1: 0x8a7a2a654bf9e99ea6499020, + limb2: 0x25e8f4dbfbdc25bb, limb3: 0x0 }, w8: u384 { - limb0: 0x2364ee3590225f4b3f87a8e6, - limb1: 0x5e9c5d0f0a9b5436f1fe55d9, - limb2: 0x2cd67aacde631193, + limb0: 0x3b4c5caa1b36cfc399304368, + limb1: 0x7ba39d0b1bc804ecab974964, + limb2: 0x455468429d1bf0c, limb3: 0x0 }, w9: u384 { - limb0: 0x59656a7b17e4fdabfe60230b, - limb1: 0x328bfdb293bbaf9cae14d05f, - limb2: 0xde430c32a7d3ee7, + limb0: 0x1ecd24d29a84b3fdebf930d7, + limb1: 0x901167010905156ea2f4224, + limb2: 0x13d9881fca5a9937, limb3: 0x0 }, w10: u384 { - limb0: 0xf4b983bc021101a37338716, - limb1: 0x7eae3920541a08f01bb5d885, - limb2: 0x1240261e30450b47, + limb0: 0x6f43ced980bd92ff031e06a5, + limb1: 0xa2ceeeb1ed2fb67fb1cde61d, + limb2: 0x82a6f74f51eee5c, limb3: 0x0 }, w11: u384 { - limb0: 0xa4ef92aed141a62ab131d3bf, - limb1: 0xaab40e5a36fef663be4bd7f9, - limb2: 0x1638aa37c169d8e8, + limb0: 0x1d93d7be23a01679ed6a419e, + limb1: 0x3876aed37b4a0a91510371f9, + limb2: 0x2866c505aa8fcaa3, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x7159daba2bd3d4b20c231587, - limb1: 0x5f4f4b350102d96a6724911a, - limb2: 0x485ed6231b75c6c, + limb0: 0xc365ecdc68e4cdc31443b90f, + limb1: 0x9f3fa22d87ccb2db91c59afc, + limb2: 0x52a1279452b4798, limb3: 0x0 }, w1: u384 { - limb0: 0x77ccc804dab396477c919cfa, - limb1: 0x9324c84d74abf87dee2265b, - limb2: 0xcd2488bb8e578b3, + limb0: 0x2c61ebf98869c64bf0ff28fb, + limb1: 0xbef3885e12bcf96fc729a87f, + limb2: 0x22f1d1d385c2952, limb3: 0x0 }, w2: u384 { - limb0: 0xd5e63f35e23525ae0bee7b9c, - limb1: 0x8a477fd2e8e1b5cb6433d5c9, - limb2: 0x197a341a550be143, + limb0: 0x35dc8172da66eba093e670ee, + limb1: 0x366ec7b4b511cff35c5182d6, + limb2: 0x1493c06beb9b87f0, limb3: 0x0 }, w3: u384 { - limb0: 0xf1d7edf3e2e9cf30751c6382, - limb1: 0xa0e14d85b1b24a2fd39c65e2, - limb2: 0x13b2cfc560a23ca7, + limb0: 0x99afbc5bfc28303f4d77552, + limb1: 0x28aa313c0ec288900acc8e4c, + limb2: 0x172704ac0e22d17, limb3: 0x0 }, w4: u384 { - limb0: 0xcf2a5c26771a987db8dcbf44, - limb1: 0x2378f15d324ec3f9eb0991df, - limb2: 0x2d7d9a6a243bc90d, + limb0: 0xcd3d419ff877dd950814cb8b, + limb1: 0xafc00f32c4790fab4ae1b8c0, + limb2: 0x726881abd49aa62, limb3: 0x0 }, w5: u384 { - limb0: 0xc95e2f9f909e1977420a3ea8, - limb1: 0xec7b81c995c8eef61bd3e27c, - limb2: 0x8fc849aca921d94, + limb0: 0x126401147a5e9a4b6293603f, + limb1: 0x7cc4a073fbacc1d76d550b6e, + limb2: 0x16a748757cc02e3d, limb3: 0x0 }, w6: u384 { - limb0: 0x8f7632c46219d2c1b9bfe565, - limb1: 0x6627c956b87e92efccb7b8d2, - limb2: 0x16d435e104da2994, + limb0: 0xff5f835d805be7913b59727e, + limb1: 0xb16bc622be6d78d83cffb8b1, + limb2: 0xb692f51d0ba5417, limb3: 0x0 }, w7: u384 { - limb0: 0x4265d268d305d8250c69710d, - limb1: 0x20ccaceb8c74cd5e14f6d8c4, - limb2: 0x2a4c45f279cafa6e, + limb0: 0x3a90fa74ee9f716c14f6abac, + limb1: 0x186c16f7427898c915dcbc98, + limb2: 0xc67097e35f6683f, limb3: 0x0 }, w8: u384 { - limb0: 0xebb654ff228574db07b2c6c0, - limb1: 0x9ba7f8f1e5d9655e09797074, - limb2: 0x9387b3128c3fb5a, + limb0: 0xa00acccf13414401217a5221, + limb1: 0xce4a937e0ea66b24d769ed17, + limb2: 0xfd1df950b5b0111, limb3: 0x0 }, w9: u384 { - limb0: 0x9b4ca01e3bfeed5adc5b6b08, - limb1: 0x8f11a192086ee68d33f08aca, - limb2: 0x110ecc00d02a58a5, + limb0: 0xf0a890e81e57f7cc29c43d24, + limb1: 0x1b287ee44254e41a9c6fffd3, + limb2: 0x5735a5e8b6799fb, limb3: 0x0 }, w10: u384 { - limb0: 0xd01024e73c2a3ac89869b7dd, - limb1: 0x748192538e5cbb5e88419ea, - limb2: 0x1f090f7e3bb6ec1b, + limb0: 0x855c46a2b43f19fd1e5923, + limb1: 0x5adf3280f4aec957aa6b3b13, + limb2: 0x202f5f867f25c80, limb3: 0x0 }, w11: u384 { - limb0: 0xf58b47f587534f2c727f1423, - limb1: 0xcd955bf802c97b91c87dcdee, - limb2: 0x1071b472258b0485, + limb0: 0xf8f4816890f66adff407ce23, + limb1: 0x8affb28dc45ffa1cd273392f, + limb2: 0x4114bd63b7ba70e, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x8d565223865d0a878a2eb292, - limb1: 0xec7197a0906352e6bccef23, - limb2: 0xce4018b0c32e697, + limb0: 0x60f012dc0a5a77e95d65732, + limb1: 0x4805df943405bd12b9b203c, + limb2: 0x21dac247959252c7, limb3: 0x0 }, w1: u384 { - limb0: 0x5533c982d18799c84dd1cdab, - limb1: 0x711a7e6041136edb86cb73bf, - limb2: 0x9ad5d3801ab8c83, + limb0: 0xe9dd2c1d0c176521c660c19, + limb1: 0x6980a062fc27ddabc2bf738d, + limb2: 0x5d1596ff186b46a, limb3: 0x0 }, w2: u384 { - limb0: 0x7903d7616c06f1dce94b23c8, - limb1: 0xe9b9c1efa38c0717bc8bae79, - limb2: 0x1c9f756b0ee6f4e6, + limb0: 0xcb09dd3e5895b761f0cffba7, + limb1: 0xe3ed405d4f053874d2640c30, + limb2: 0x1560ad86a39de378, limb3: 0x0 }, w3: u384 { - limb0: 0xeef41a7b349ff537d76e41e, - limb1: 0x78ac1293f01f841377bcba22, - limb2: 0x4cbab3ba7e8784d, + limb0: 0x264c6b9742737fdf5a047348, + limb1: 0xc2d5b6613a94823e4126e391, + limb2: 0x458ea3b9fef086, limb3: 0x0 }, w4: u384 { - limb0: 0x9bb2dbd92a9bee90ca07d490, - limb1: 0xd5d9a11c60a8ab99e32ace8e, - limb2: 0x2b73e647218407d6, + limb0: 0xd9c096615109e5429804d681, + limb1: 0xc0201d98a8d97222a1e04d1d, + limb2: 0x2352891520d4fca6, limb3: 0x0 }, w5: u384 { - limb0: 0x96eefd960407424f7e9f9cc8, - limb1: 0x760a1c6d278d7296008e1c95, - limb2: 0x27ade564c851c171, + limb0: 0x37cde4e2b2e74b3de43f17ca, + limb1: 0xf8ee2f5e7b2bec0871a5bfa9, + limb2: 0x78227fbc95d98f0, limb3: 0x0 }, w6: u384 { - limb0: 0xdc5bd6453d52586249ba8dba, - limb1: 0x5b0c23c02e81c722d0478c60, - limb2: 0x12d92d02ca4d4bcc, + limb0: 0xeff5db6adc33623f6f3c47e9, + limb1: 0xa0536b8a1de36b845c37f143, + limb2: 0x2d3059723c487d9f, limb3: 0x0 }, w7: u384 { - limb0: 0x40964ffd3da48758dbe44111, - limb1: 0x813b23748664189292da010c, - limb2: 0xa75d47c3806ddc8, + limb0: 0xffc911c63cd1e2f3e5dcaadf, + limb1: 0x1dda0372c3e15c01f433f8, + limb2: 0x1573dfd35bfd6872, limb3: 0x0 }, w8: u384 { - limb0: 0xa38097aa3fdf667f28980246, - limb1: 0xb2c9dd1ce2257fe19c5d71e5, - limb2: 0x1444beab8d99742b, + limb0: 0xdb89dd310c1f53506e520aa6, + limb1: 0x67788e041ea90b9582b3c95d, + limb2: 0x12d1ae1d620c5991, limb3: 0x0 }, w9: u384 { - limb0: 0xcdbfdf1bbd6c1b281eff645b, - limb1: 0xe0b77d4e850aa17aaab4e41b, - limb2: 0xcefd8b7bebd333e, + limb0: 0x9c38794f8c3fe670ac1fe2d, + limb1: 0xf24336d517caa5d4b9677b2b, + limb2: 0xcd4fa49e7ed6609, limb3: 0x0 }, w10: u384 { - limb0: 0xa49b804050e513cb3a8755c8, - limb1: 0xab8869bd1ddb8d1c2e9e5c6b, - limb2: 0x22a8aea50c2cb464, + limb0: 0x941abcf30fbeb42391b27cc4, + limb1: 0xa7064af9ae8c6137dee2b051, + limb2: 0x11812e8e3cd4fa89, limb3: 0x0 }, w11: u384 { - limb0: 0x10e8399a380759c2a67687f1, - limb1: 0x63d284c24026f3b88c09f490, - limb2: 0x2a9511cc3db1100b, + limb0: 0x23706fae4946a17725c2c934, + limb1: 0xe57ec0188e5ed2569d69badc, + limb2: 0x2cff4849cfb4df25, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xdae5fecd3f2a162a51b755a6, - limb1: 0xd9afc6c6d73bd869a2105585, - limb2: 0x2c84c2bbe1004565, + limb0: 0x7bf05f23d6b90494b55d28a2, + limb1: 0x45fed4b0cc6f87fad012bfd0, + limb2: 0x5b51fdbb383d477, limb3: 0x0 }, w1: u384 { - limb0: 0xe72558de910897cc31c23d25, - limb1: 0xd3c75292f4969209000d2f5f, - limb2: 0x29639cee8d534afa, + limb0: 0xce1f39e9e7a6d624470a7729, + limb1: 0x4526de1009ff61d660253ee4, + limb2: 0x2f936959fd26b27, limb3: 0x0 }, w2: u384 { - limb0: 0xd25f670b53b4fffbe8724c6c, - limb1: 0x536db873d272709463ec9661, - limb2: 0x19d4c6e7dd8ed83f, + limb0: 0xbef2134a0b6f889a5eedefe, + limb1: 0x4517528e97e075244745121c, + limb2: 0x16a3f645c8e094a3, limb3: 0x0 }, w3: u384 { - limb0: 0xb586d7d50a788cedc2bccfd8, - limb1: 0x5e3e76ccc9cf38b8af269dd4, - limb2: 0x43f189188ece1a8, + limb0: 0x2b66f9a757df10582ed2879f, + limb1: 0xd76975d30aa62f433455cb9f, + limb2: 0x758d71a6f1f3fe8, limb3: 0x0 }, w4: u384 { - limb0: 0x21b2bf4653ef4d23d125698f, - limb1: 0x64652d80fe9240ea6e07d2d8, - limb2: 0x23b72569a56b5703, + limb0: 0xff505f10c2217dc6c2efdaaa, + limb1: 0xc4e369fabbe879e84a25297d, + limb2: 0x21efed858586ffb, limb3: 0x0 }, w5: u384 { - limb0: 0xb43e4add631c147458940c08, - limb1: 0x577579d422db883301b48731, - limb2: 0x154c83e7b7645261, + limb0: 0xdb50f380d05431c59dfc9b63, + limb1: 0x70882de6d31707669fb36eac, + limb2: 0x284eed35fcc79d40, limb3: 0x0 }, w6: u384 { - limb0: 0xbb65c31c973d1a3626db56d4, - limb1: 0xc6429c72610207398e387f3b, - limb2: 0xe9088d35ad246d0, + limb0: 0x1e9923f54cafaa4856cbf174, + limb1: 0xb7d93f3378dea2c79d4809a4, + limb2: 0x1895352b06c6555a, limb3: 0x0 }, w7: u384 { - limb0: 0xd14f1c9599e1e65fa3e3eb71, - limb1: 0x17e9f0084ee386b188e5442c, - limb2: 0xb1c16678c31dd9c, + limb0: 0xd041e6ce8c8205f11a038c30, + limb1: 0x174e4c763e449178b2e533da, + limb2: 0x10a1221b34019622, limb3: 0x0 }, w8: u384 { - limb0: 0x61f2857c460bf65c73d6dff5, - limb1: 0x551ac308ec7dfbdaa621700d, - limb2: 0x63e47ef9f936207, + limb0: 0xf86df8cd8d6781bf64162d55, + limb1: 0x31797afe653cf726c2b3f747, + limb2: 0x1509ea8844f005a8, limb3: 0x0 }, w9: u384 { - limb0: 0x4f724885e8f8beb7690ba3b7, - limb1: 0x71f03c83459321316aac06d0, - limb2: 0x1d0d099bde4b9875, + limb0: 0x60cf395badd2070f6559eb0b, + limb1: 0x9d17eb4346d4a3a2e4964394, + limb2: 0x1181042bdafb24c9, limb3: 0x0 }, w10: u384 { - limb0: 0xd7602b4d7c8ba87cd4aea246, - limb1: 0x862d04015b0765b295976c89, - limb2: 0x77d4a8cd9fdffa8, + limb0: 0x80942e3f6b1ec34e6b8ffadb, + limb1: 0x5e72ba91e69bbe6cc11a2209, + limb2: 0x1abfee197ec09f4a, limb3: 0x0 }, w11: u384 { - limb0: 0x3de430e362dfeebacf3e9916, - limb1: 0xc3f589b8aa25c95feb4846fd, - limb2: 0x104a9d602c0d9d4d, + limb0: 0x3b687ab438bcae185e50ed8d, + limb1: 0x9e33bec68f06e3a7c675550b, + limb2: 0x1b5e9d965dd179c4, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x3a2678cfcbca303a232e7bc5, - limb1: 0x1d2637edca8c2587e0ef2ac6, - limb2: 0x20c8f1bb33f2abfd, + limb0: 0xd69f9a46bf1e6b4321fe662e, + limb1: 0x53d36d33cef5f2072ef8014a, + limb2: 0x2220369b458f75e3, limb3: 0x0 }, w1: u384 { - limb0: 0x1c934f5e609b210f2f735d15, - limb1: 0xfc480a1de857101a6f1df7bc, - limb2: 0x2576509df102a1ce, + limb0: 0xf376a271f8e0b15ea407c421, + limb1: 0x537b93d55f821d3a534db304, + limb2: 0x7f4780462b7bb1a, limb3: 0x0 }, w2: u384 { - limb0: 0x3a882a82e15155e6da324d4c, - limb1: 0x3cdcc5201ba866fae606700f, - limb2: 0x13eb43e498b1d84c, + limb0: 0x7b4e6239fe607b8e5c338faf, + limb1: 0x9aed6472b29ebea23cb0ff18, + limb2: 0x12f4d76f377f1ab9, limb3: 0x0 }, w3: u384 { - limb0: 0xbb1de7d76bf8555f0c8b7d32, - limb1: 0xb9cfa63571cba47545f0bda0, - limb2: 0x16ef391eb157b6e8, + limb0: 0xa75a645a69189740cff9b41e, + limb1: 0x1d5d2db508161dfbb4b9acfc, + limb2: 0x2be3f084a1efcbec, limb3: 0x0 }, w4: u384 { - limb0: 0x7703c400351a24ad577a476b, - limb1: 0xa9dc8c2788647e1a81f2d93, - limb2: 0xaf75d3a41f5ddb2, + limb0: 0xbb714ac7a6cdd7e939923220, + limb1: 0x29ff116f2a587d9304d92c28, + limb2: 0x1291e65edb09a24, limb3: 0x0 }, w5: u384 { - limb0: 0xf718b7ce1e0dfeda32a3c288, - limb1: 0x71b1841dd005a12d643ea304, - limb2: 0x2236332f27ed5e26, + limb0: 0x1f8c52affc5071e2a1fadccb, + limb1: 0x536a368a83574659e0edcb64, + limb2: 0x13f23cfd48fae717, limb3: 0x0 }, w6: u384 { - limb0: 0x8c2db80e54c4399865419782, - limb1: 0x4205ad2d1851187e4e6fb643, - limb2: 0x27872e1e3ece752f, + limb0: 0xd0563a3db8af29dc270a9ded, + limb1: 0xeb30fc492b4d287465e1769a, + limb2: 0x2fd4c0664beb9adf, limb3: 0x0 }, w7: u384 { - limb0: 0x4c9707812783360b4c4f85bd, - limb1: 0x45e14cad608c3d505b5f8d25, - limb2: 0x29fab2ebf48cadc7, + limb0: 0x679a9464221e75403225e702, + limb1: 0xc453dbf4984a1df773191c34, + limb2: 0x9c6333fed1c4a94, limb3: 0x0 }, w8: u384 { - limb0: 0x48709d2d89237ba2418fecb1, - limb1: 0xe5f6d6186d234bd3d0d56b40, - limb2: 0x695953f025f64c4, + limb0: 0xfc44520855b8379038ea9d81, + limb1: 0x8d6c52b8372c242677ba6452, + limb2: 0x1ac854d955ba7be9, limb3: 0x0 }, w9: u384 { - limb0: 0x2cb0229fdc28f8a1abd5c20a, - limb1: 0x18e62daa670a9d63dd45cd55, - limb2: 0x5841ab048c6c963, + limb0: 0xa7613d88e592923d45638fd6, + limb1: 0x404b6e4192d9d2ad9b5f7fb7, + limb2: 0xa8d04c7114afd07, limb3: 0x0 }, w10: u384 { - limb0: 0xbdce4ded37f82fb5da707785, - limb1: 0xd98d20973053e11d1e077b33, - limb2: 0x3e088d1427b93fa, + limb0: 0xa8b8ef410e2bf39ea799275b, + limb1: 0x859dbcb776c1d34ed6cebecc, + limb2: 0x2bbf0976debf8d92, limb3: 0x0 }, w11: u384 { - limb0: 0xbe2f635cdc4af8322b72de42, - limb1: 0x3ca32c1d4f135b7380e7a58d, - limb2: 0x20321184e1393288, + limb0: 0x62cb7391ad457c5612981c27, + limb1: 0x46bed368a0dd062276054cdf, + limb2: 0xedc4c94e19d6d7, limb3: 0x0 } }, @@ -16257,756 +16267,756 @@ mod pairing_tests { .span(), big_Q: array![ u384 { - limb0: 0x7c7ddb93a8ebde78a4bd06b4, - limb1: 0xf697c7a5fa3dc881f58ec3ca, - limb2: 0x12555260a0a2a2c4, + limb0: 0xddb3d43404cdb36d00917f76, + limb1: 0x1e5b7c8db1195d1bfe94ed30, + limb2: 0x255e93223405a62f, limb3: 0x0 }, u384 { - limb0: 0x197004b051de7e63c1f4a0f4, - limb1: 0x4f40feda3be350aa2887b696, - limb2: 0x17145a5dad2558f9, + limb0: 0x4c32b788f564810427060734, + limb1: 0xb8ea475dc45a8a78c1435554, + limb2: 0x10f5cbe8336cac13, limb3: 0x0 }, u384 { - limb0: 0xe3f15a166d91ef97b075c12f, - limb1: 0x14243dc88fdd4764c5703a76, - limb2: 0x1ba12b4202e84063, + limb0: 0xa084186e6a32d00b7f91dd2, + limb1: 0xaf2a08b772f0a2365634ecc6, + limb2: 0x653450151a8c110, limb3: 0x0 }, u384 { - limb0: 0xad7cba8218415de169732a51, - limb1: 0xfc8c006e330ad669a05e27a2, - limb2: 0x1185408556fdad1, + limb0: 0xf888273a8549a4b98e969ebf, + limb1: 0x3449a36bb1eb60d3c89e5bfd, + limb2: 0xe71a97411b039a, limb3: 0x0 }, u384 { - limb0: 0x921b3b7fd3c9868b2185ac6, - limb1: 0xbc9143a18c57aede88971af9, - limb2: 0x264a84e566a68175, + limb0: 0x9d05c3907e76bb620bf05b7, + limb1: 0xbf8e9f484a693dff07a60278, + limb2: 0x2ef91918654b053a, limb3: 0x0 }, u384 { - limb0: 0xfd7e8fd9797bcb05eb17a509, - limb1: 0x6125d06481b5155126cc68d1, - limb2: 0x8cd0053b29b5f70, + limb0: 0x9b029aa3b35a1613519d482b, + limb1: 0xf7903cfbfb173173626dd861, + limb2: 0x671a1ca395c7a6, limb3: 0x0 }, u384 { - limb0: 0xc2dd4ed209fee73a050f676a, - limb1: 0x35ae79611fa0182686c29c54, - limb2: 0xd992637ce8fa43e, + limb0: 0xf9610247c50e39c37f43ee87, + limb1: 0x21a69ca46c539f32de424f6b, + limb2: 0x1c5f3537d2218c53, limb3: 0x0 }, u384 { - limb0: 0xf2f9f1caed50c1041edeab9b, - limb1: 0x60d872f529d151ff4a4ae44b, - limb2: 0xd5aca4d66c9c324, + limb0: 0x29031b4d70f34a1ac5ca0647, + limb1: 0x7044df2d6b7bb00a59a97864, + limb2: 0x5907e91083c6738, limb3: 0x0 }, u384 { - limb0: 0x55aefe5987f89f5a4b3e45ef, - limb1: 0xd150118e7b9641bbeb0d7af6, - limb2: 0x22b8898083b08d30, + limb0: 0xcb2e963a9911d4c063f99738, + limb1: 0xcdf0c9ba335722e1c9e1bcd, + limb2: 0x276b8523f1faf130, limb3: 0x0 }, u384 { - limb0: 0x9a9f623f0bd9be34886e21a1, - limb1: 0xb57995cb7828059b66411c03, - limb2: 0x2f0c030eef66c7b3, + limb0: 0x40d77735eccbfaf91ee34f91, + limb1: 0x6804924798811fa3fd11f3b4, + limb2: 0x338d2db2dca3618, limb3: 0x0 }, u384 { - limb0: 0xae9911dda20cdade5fd8aea3, - limb1: 0xedfa9d80922f6405ecf12073, - limb2: 0x50c80d7c06e471c, + limb0: 0x1b10a7b42102c780b9af0e10, + limb1: 0x7208f0f014d541b6abc64967, + limb2: 0x11d10098e07c3f0, limb3: 0x0 }, u384 { - limb0: 0x3e9674bcf5faec3cbc38add0, - limb1: 0xb892682d695aca5cc16245, - limb2: 0x1d7f5cfeae5f4a34, + limb0: 0x80d29ff6800c10c39229ecd, + limb1: 0x4f45c138baed91c364e91ccc, + limb2: 0x1ccc81ffc6de82ca, limb3: 0x0 }, u384 { - limb0: 0x98863b6f5e1478eb2d9ae258, - limb1: 0xe8eaa64f4810d13065cd2ce, - limb2: 0x39aebe7c6c69896, + limb0: 0xf75c8075cf01b0d814db32eb, + limb1: 0xb439d8f5ea9283e0fd45ac2f, + limb2: 0x1e6e78caf0fbcef4, limb3: 0x0 }, u384 { - limb0: 0xb9115dbf2ce2454a207b5bdd, - limb1: 0xb3d782ae47c2e93a78c78042, - limb2: 0x177aea7581c073d, + limb0: 0x984883de6f8d3ba0802792c3, + limb1: 0xf12af81d0f3c13a80288fbe2, + limb2: 0x1ed29dece6762966, limb3: 0x0 }, u384 { - limb0: 0x88529708b6e71af77d188b8, - limb1: 0x81546c03f732c16cd663c1c3, - limb2: 0x16520865f8492afe, + limb0: 0x9466e0bba81939f9d9401370, + limb1: 0xd543b54311042f0ae84f413, + limb2: 0x15152c5f9172a792, limb3: 0x0 }, u384 { - limb0: 0xd8ce74c397f858b8bf54ba9, - limb1: 0x530dce8f6b2787e5c4f228f2, - limb2: 0x3e9871448deb355, + limb0: 0x3b1ff8c426c73b06aee2d0b3, + limb1: 0x17c5d4229d565d8ecb25c73e, + limb2: 0x1a9d81c3be9dae2f, limb3: 0x0 }, u384 { - limb0: 0x278f1fc4d4da213851aca4db, - limb1: 0x4d51ef4c31e319c5cb83ee45, - limb2: 0x19bbf577353d2680, + limb0: 0xfe4ef3c48019e4b327f4c396, + limb1: 0x3d8e3fcbe89ecca1b4c4ea54, + limb2: 0x20a85c866c4a4f32, limb3: 0x0 }, u384 { - limb0: 0x4cba1b95fbe08572dcc2b9b1, - limb1: 0x5c5df768ebe4736b8605cbfe, - limb2: 0x16d770c3db19c7e9, + limb0: 0xb407397238376fb1f0d80a33, + limb1: 0x581c0f69d8912729074058c8, + limb2: 0xcdde27fd857217d, limb3: 0x0 }, u384 { - limb0: 0xaff7f202f1e5d33b2c998e95, - limb1: 0x15798024a711023d38adb2dc, - limb2: 0x665330ac7d6e469, + limb0: 0x2175b2f06605618ad35dfebc, + limb1: 0x620c333240841ad9af23d67a, + limb2: 0x223f10e3838092cd, limb3: 0x0 }, u384 { - limb0: 0x54ef1f333c6cecb9c75eb0fc, - limb1: 0x76cae28a0e1104a503d44485, - limb2: 0x19b1356abd880175, + limb0: 0xf781e586a4daa7dba8e66cb2, + limb1: 0xb999819cd5ef783d5f7ff09b, + limb2: 0xeb5b3ecd771c4ed, limb3: 0x0 }, u384 { - limb0: 0xe32b609d83e1906b46acc0dd, - limb1: 0x39f9732a33b52231020cae42, - limb2: 0x2f199e44e9f30857, + limb0: 0x361a1f03d4f398a087c27f56, + limb1: 0x511b604cb7c9e37a2743b172, + limb2: 0x2c6042a30484dcc2, limb3: 0x0 }, u384 { - limb0: 0x2304eb6e6d0df52bdeef6fdf, - limb1: 0x87f04e083b368a98e4cdd3e9, - limb2: 0x27e8750b8ce6c1f0, + limb0: 0x841247f49dd0b6ee37c4bc73, + limb1: 0xbd69a98a01e8bec9bff5c809, + limb2: 0x10ced4ec65fea646, limb3: 0x0 }, u384 { - limb0: 0x7d62690274d2342f4c46860, - limb1: 0x8d75b83e2509e9309abf0477, - limb2: 0x401a45a6faa235d, + limb0: 0xed92b0769b793d163b74a440, + limb1: 0x4bdcf1bfc5a2b0e9cb560fa, + limb2: 0x113859b1b60646bb, limb3: 0x0 }, u384 { - limb0: 0x76c21bd5674ae72c0007d511, - limb1: 0x54ce34b6de0dfe4772df5179, - limb2: 0xcc36656c99723a2, + limb0: 0xa288cc954a46a30bf9540514, + limb1: 0xa5a6448960a6d260f1af4c94, + limb2: 0x21eb01e9c3d1977c, limb3: 0x0 }, u384 { - limb0: 0xbf21332dd61dc79bb4aca8dd, - limb1: 0xeb6d8ed079576e9ac1c3759b, - limb2: 0x30cf338198f22e1, + limb0: 0xb0a7b5c9bb7469fe51833b87, + limb1: 0x1a3d8d0edb568a63d31d7c67, + limb2: 0x41f1e69a5cdf1ac, limb3: 0x0 }, u384 { - limb0: 0xd7c4f7cb317617033803c6c8, - limb1: 0xab19ab567c946d564bff0e9f, - limb2: 0xa72757ca66088dd, + limb0: 0x66a0ee22696997afe0dcee6d, + limb1: 0x416377ddf9eab349c37362bc, + limb2: 0x157dce4d2537af45, limb3: 0x0 }, u384 { - limb0: 0xca6ac7c6723754e407f4a5f6, - limb1: 0x921115ef42b950071049c8e2, - limb2: 0x29ebc2647078c76d, + limb0: 0x98e49f4a646a915edca05bac, + limb1: 0xc1fe57c4a9f525ee4e7f0d05, + limb2: 0x7523b69adb383fa, limb3: 0x0 }, u384 { - limb0: 0x6c5a23ba6291325020a97c94, - limb1: 0x344803884eddc6c4b3b30686, - limb2: 0x2cee18f6cf5df63a, + limb0: 0x1af6f0c4e664cfe97ac4f6c4, + limb1: 0x8bf7443d29c1ac17b3f92ab2, + limb2: 0x2336d69bc41a0fb6, limb3: 0x0 }, u384 { - limb0: 0xbc493d3c5149efa65caaee91, - limb1: 0xdc81a8fd4f13aa9b1ac36f7d, - limb2: 0x10cf96d527cea417, + limb0: 0x55582594087aa5cd5739404e, + limb1: 0x7eab21ab661d1a70f08af65, + limb2: 0xe24277856f5cffa, limb3: 0x0 }, u384 { - limb0: 0x3e71fb65c6f6cf41d0295d3, - limb1: 0x4cc5d7edbf88c25d9224547b, - limb2: 0x5bb0e86bb2d4add, + limb0: 0x521d6dcd6d024080cb9d824a, + limb1: 0x114688acf80c03ab7c335964, + limb2: 0x1f39a0980405b570, limb3: 0x0 }, u384 { - limb0: 0x13a7b30818e23c3cec0fa17a, - limb1: 0xbfc78a834f87e43821851e6, - limb2: 0xab824ab4a158652, + limb0: 0x9650576a31ada0d2ad7e77f1, + limb1: 0xd3d65328f3ef392e157f1a2e, + limb2: 0x2000553b674ebb47, limb3: 0x0 }, u384 { - limb0: 0xdcaf3d6c7af2ee11ddb38f89, - limb1: 0x6bb3e286a7fd1ab8e93bdb05, - limb2: 0x2050a18ce4cdfaa9, + limb0: 0xcfe8446ba29212967d2a474b, + limb1: 0x4012706a278083bb1211679c, + limb2: 0x2f7fe1cee39d61d1, limb3: 0x0 }, u384 { - limb0: 0x13634e4269c8ffe54a33502b, - limb1: 0xad34a9f1f2a16137e5f40217, - limb2: 0x6f72f78ea27289, + limb0: 0x300e9fc2f3a39d5738472632, + limb1: 0xd1c4295a5a1022c2fc89f6, + limb2: 0xea2e39d60b89114, limb3: 0x0 }, u384 { - limb0: 0xd73607c928c585ecfecd890c, - limb1: 0x27668063f1941a9e35cb9be1, - limb2: 0x8ba1b4d6d66002f, + limb0: 0x7e8ca108074e037f2261cabb, + limb1: 0x2e7f59909c7bcbb729b2b4d7, + limb2: 0x2564f4ac2aea2d8a, limb3: 0x0 }, u384 { - limb0: 0x4880e3838cad6236b4f1765e, - limb1: 0x2e3cdda28c3d32f419a103f7, - limb2: 0x8d960e4276aadd6, + limb0: 0xc3bf932b588a607582261348, + limb1: 0x1a5e1e97be15e0ebf2e951d5, + limb2: 0x27b6e4bcb480b82a, limb3: 0x0 }, u384 { - limb0: 0xf643ff1cf1d08876ee34a44c, - limb1: 0xe5f2d2d6e89a9d8ceeacf2c0, - limb2: 0x2cab0fc13bc366a5, + limb0: 0xebb61a444d4ef9be06c646a7, + limb1: 0xf11c82ada8e86078e9227c8e, + limb2: 0x138afd8ffed4f20c, limb3: 0x0 }, u384 { - limb0: 0x9c12bd289b7c28161b68ea95, - limb1: 0x1e15b1858223fefe053f7ae5, - limb2: 0x2b7add1ce9e1ae7d, + limb0: 0xedd27082567ffc6649f24525, + limb1: 0x9ec12ba87a65231528716e38, + limb2: 0x9dc6cdbc6542127, limb3: 0x0 }, u384 { - limb0: 0xb304e7fabe0840c1e51ceb36, - limb1: 0x16de3ef8cd9ac6b70080b4cf, - limb2: 0x11aa381c841a039, + limb0: 0xa717bb75c87ad2f58088a12e, + limb1: 0x8c102ad3d57b6f0096dd8c8a, + limb2: 0xd953f999c7156c1, limb3: 0x0 }, u384 { - limb0: 0xa5ff01775d022f3e70ea53de, - limb1: 0xd8a48a8700a14c4fa2e7b9b7, - limb2: 0x2671fa321be1a933, + limb0: 0x803be348410b56286739dd92, + limb1: 0xbbc9ae6f470e6b5a8b02791e, + limb2: 0x205362e29dc27686, limb3: 0x0 }, u384 { - limb0: 0xdb6e602a8f664860a589171, - limb1: 0x686792a5f0ae4b244ccc6693, - limb2: 0x2a109c7e20dc3958, + limb0: 0x698881f181ed7e0c1645e9c, + limb1: 0x2e83e4d002699be11660b4a8, + limb2: 0x104b9f9bf8f1181b, limb3: 0x0 }, u384 { - limb0: 0x8d76cac6a6ba8cd6d0afd6c9, - limb1: 0xbf6595b9515ef7513664a2d3, - limb2: 0x26e202478f5ecea2, + limb0: 0x4e8daf91718bed4b3a3c5619, + limb1: 0xeab96f80e6f00534433910b1, + limb2: 0x7adb098e3136bff, limb3: 0x0 }, u384 { - limb0: 0x2eebfbf87fb7b4515ac26406, - limb1: 0x7605ebdec877cd8fea6608f7, - limb2: 0x1fc530474041b437, + limb0: 0xf762bfd277d9b7f3ecab313, + limb1: 0x678a4e7ad2da072b16788a03, + limb2: 0x1f12676c2dcb4cf4, limb3: 0x0 }, u384 { - limb0: 0xd1fa0ec394cd8a53e1ec3609, - limb1: 0x3401260546fcbc9befd151b8, - limb2: 0x27618e921da4682c, + limb0: 0x6fe133b04edbb09c0c392bd, + limb1: 0xa74b9e92c48b43e98b7218f6, + limb2: 0x2328c5c50c0b5a6, limb3: 0x0 }, u384 { - limb0: 0x96fb68b6b64cc18bd46429f, - limb1: 0x2c5410cd45bad79bdf1a4ade, - limb2: 0x2777ceddc1296260, + limb0: 0xe6a4d854a35edddb047a2e75, + limb1: 0x1e2ef3ba93890093847fccee, + limb2: 0x67bbb5dae2403, limb3: 0x0 }, u384 { - limb0: 0x2e0496aa9b556dff8bd7b435, - limb1: 0xc99c77313d3b8ebf167c9fad, - limb2: 0x8e7aa52b80c10a8, + limb0: 0xe62f941c143f0b483b0a65d4, + limb1: 0x2943f850b57c4efc06c51ebf, + limb2: 0x2ca321047f42e158, limb3: 0x0 }, u384 { - limb0: 0x51b88329a5cf48fb770afdfa, - limb1: 0x100a43bddddfdbd3203a91a6, - limb2: 0xd494961e43abce1, + limb0: 0x732f09ccdecd1e29a7c77cbc, + limb1: 0x5ebe291ff7eac9e8a842e0c2, + limb2: 0xa546cbe33d647b8, limb3: 0x0 }, u384 { - limb0: 0x584d9d9d587f9bb5f78e05a4, - limb1: 0x4d7eea2209f83f39a75d039a, - limb2: 0xc6ceb63f1a412b2, + limb0: 0x73e5ea033c90dad3731b82b5, + limb1: 0x285d58bbb51a7fcd4e2861a9, + limb2: 0x227d27c6aa0a16f3, limb3: 0x0 }, u384 { - limb0: 0xdcab5b6214e439ca7b180152, - limb1: 0xcac0c70e0f79b1e76a016e94, - limb2: 0x1f13218676ebf04d, + limb0: 0x44f7fd6db19fa1ed93cf9d1, + limb1: 0x76515ea314ebbcc6afed513d, + limb2: 0x171971629cb8de1e, limb3: 0x0 }, u384 { - limb0: 0x52a563f3a4ca4587da93befd, - limb1: 0x755c3647d8499d5f840c1922, - limb2: 0x9d75f7f3556ae0, + limb0: 0x7f5b19cd3c270cf2149b7268, + limb1: 0x24448a201ca90ad70ea44832, + limb2: 0x35976641c484fda, limb3: 0x0 }, u384 { - limb0: 0xccce30a356d2e80db6158532, - limb1: 0xbc2567cbfc126d453a69687e, - limb2: 0x8da0f8573304458, + limb0: 0x966fbd8cf7b2267f9ef7d4eb, + limb1: 0xeb86a5a152b8c1d79c274494, + limb2: 0x3e3141bfcac9151, limb3: 0x0 }, u384 { - limb0: 0x3798a0979a741f81d36b22a9, - limb1: 0x46786723233e543736f5fa6b, - limb2: 0xe7b0fe77a00f467, + limb0: 0x5e750addff88e88f3c3f50a6, + limb1: 0xbdead54ab01ff5fe437183cc, + limb2: 0x18ec1cc310552032, limb3: 0x0 }, u384 { - limb0: 0xf03dcf8e6c4e6ac40a577186, - limb1: 0xad6924584544368368878572, - limb2: 0x1fd5cdac42e0462e, + limb0: 0x930657dc5ed8d12ca6a000e1, + limb1: 0x6b5d64497e82e115eeede55e, + limb2: 0x21c1a59144975370, limb3: 0x0 }, u384 { - limb0: 0x6f09e6af2dfc3139a2db4f7c, - limb1: 0x3cbe1aeb54972483c331aa32, - limb2: 0x21c41cea47263dff, + limb0: 0x3f6e0cdce326aaaab044b3c0, + limb1: 0xcb69dc5659508174a3ddf846, + limb2: 0x29baa83b276d8a18, limb3: 0x0 }, u384 { - limb0: 0x40e11492761ec20d1b0b9f8b, - limb1: 0xffaf342fc71065a5d97172b1, - limb2: 0x269a8eb3957bdfe, + limb0: 0x7702634c900f56d6a32e3f9b, + limb1: 0x6e96c50dad028397943b95a9, + limb2: 0x260830e583e06758, limb3: 0x0 }, u384 { - limb0: 0x87259013ed0a917c00fa2868, - limb1: 0xe768c8159397191cc1d312ef, - limb2: 0xc8a113903050ef6, + limb0: 0x6712df580d3761a627ef8abc, + limb1: 0xf2b3614ec734e1957495aefc, + limb2: 0x448bca25ca04643, limb3: 0x0 }, u384 { - limb0: 0xc5c800cc07eb4a20eaa484b1, - limb1: 0x78b0d1da5bca80511e84f0a4, - limb2: 0x104a5555ce81e639, + limb0: 0x56f6aa2ac3469d43264a34a6, + limb1: 0x6097d5574b8af09937d67f38, + limb2: 0xd38073d6635ffc, limb3: 0x0 }, u384 { - limb0: 0x50d3270621134b3d7d487c44, - limb1: 0x7fd9dd4d30c279c8f0f630fe, - limb2: 0x14ec21be50a2ab60, + limb0: 0x7dfa6beaa730ccb8d62ba47, + limb1: 0xd58d1282ba5407336bb7fc67, + limb2: 0x1b51e50aab5404ea, limb3: 0x0 }, u384 { - limb0: 0x8cd287da8c17bed3adb94183, - limb1: 0xe0ceef6be65fe946ddad9133, - limb2: 0xe2faee002a507b5, + limb0: 0xfc4015fa8450b21915c64807, + limb1: 0xeb7e58aec557852aa3001bdc, + limb2: 0x1697e59824adb4f3, limb3: 0x0 }, u384 { - limb0: 0xf3b46995a05b19c7504881f6, - limb1: 0xb14f6332c94cf5cc16e79f97, - limb2: 0x20bad97607e8ac49, + limb0: 0x3b048b97f97ae645df4dfbc7, + limb1: 0xd204fcf7f84e20b8e45096a2, + limb2: 0x1339a414b8e9a73d, limb3: 0x0 }, u384 { - limb0: 0x626e7fb58f063f94146d8fad, - limb1: 0xd8d02de70c760220531c4c24, - limb2: 0x13ff0de7311c784, + limb0: 0x9221a95f1143b1b5a8c59951, + limb1: 0x13f00cb1f3f85dad26d61d5, + limb2: 0xdb57e37cc94530b, limb3: 0x0 }, u384 { - limb0: 0x73f4ae8b5eba88c26976595c, - limb1: 0x90c9faf10cfda1a2cf128d16, - limb2: 0x2ee11a64dfa9f270, + limb0: 0x7b38ef3c1a181d24467f5e80, + limb1: 0x77399a4e70df529978d0d83d, + limb2: 0x1ac97f1747090f61, limb3: 0x0 }, u384 { - limb0: 0xeaeb8b00f170326a5340a60, - limb1: 0xa687b2e285e95a9b9c6d485e, - limb2: 0x28c8325ba043f6e5, + limb0: 0xb3d3184d282483f223c85763, + limb1: 0x2cee416177d7dca5a3350bbe, + limb2: 0x8803eff79f2f1e4, limb3: 0x0 }, u384 { - limb0: 0xba3378fc8b6e4be53451023b, - limb1: 0x31f3a13827e8d5b3d41a3af, - limb2: 0x5c3fa36d0e1c2ed, + limb0: 0xd50fd89ea9c4651ffaaea684, + limb1: 0x7edef03c714c1602fb21dfbb, + limb2: 0x2a68065fcbd4d5f, limb3: 0x0 }, u384 { - limb0: 0xb1ea2fd8efd486862fc3a4a9, - limb1: 0xa8d63c0c7f453a6111f1b03, - limb2: 0x1f945e6d41a45c48, + limb0: 0xed61c2f994a1a0527694cd9f, + limb1: 0xfa20ff9f298455b43ee93e0, + limb2: 0x2d379f52ddeb0a27, limb3: 0x0 }, u384 { - limb0: 0xe3004252e74fc7f94f9b30c0, - limb1: 0x24666f077dcefaebbe0e1e03, - limb2: 0xe6708c7c398454c, + limb0: 0x145a4276f4890d23797b7682, + limb1: 0xd0fe5de0c8b9aa339c5fa57c, + limb2: 0x29314b602f581029, limb3: 0x0 }, u384 { - limb0: 0x2402df778015452d4dd9ae2, - limb1: 0xc9aec45175b1023737e8ae64, - limb2: 0x4e0a3b4647fc590, + limb0: 0xcbec48254c04dd31dd4b8fcd, + limb1: 0x2318d49f2bd3001a1e01da2a, + limb2: 0x12c4af8bfd761f9f, limb3: 0x0 }, u384 { - limb0: 0xc5f6cd8cb34744ac9fb32960, - limb1: 0x102a914c703aec89a8e3a0a, - limb2: 0x11bcd85ca588a61, + limb0: 0x9f8defaad6ee0d666ed39956, + limb1: 0xb48c216d7ab8d1423c347cf9, + limb2: 0x1ee3c498688933ee, limb3: 0x0 }, u384 { - limb0: 0xe97917d38886b65e359aaf7a, - limb1: 0x5edc44740f55f3f0e6f6329f, - limb2: 0x209033ebd3948426, + limb0: 0x7e21ddf5a66c965e8d7b7f59, + limb1: 0x283579d76aa99766d7e26fa0, + limb2: 0x269cc4a3731c0add, limb3: 0x0 }, u384 { - limb0: 0x3c7ca28584c3c78b73a6f789, - limb1: 0xe77689efa61ab39ca8e5ffb8, - limb2: 0x6052edf893eb6c8, + limb0: 0x6c6281cb0401519872c87058, + limb1: 0xd4b1f25b91f464f6bf04e43a, + limb2: 0x1e9cd1c6eec88af8, limb3: 0x0 }, u384 { - limb0: 0x337ded854299e150189e29f1, - limb1: 0x13f563067acd36fb5fa130fe, - limb2: 0xab51508f597e917, + limb0: 0xf65b2be069d09b7f97c83e4e, + limb1: 0x876c6809247f459c28560039, + limb2: 0x29a84d958441f824, limb3: 0x0 }, u384 { - limb0: 0xb63530f566aa5f7cd151f0cc, - limb1: 0xb4e41abf7f6551c20fd7c783, - limb2: 0x2b66adff13439ca8, + limb0: 0x102b40e036eb2cd8b5999abe, + limb1: 0x44c61193810a44a01098e222, + limb2: 0x18e96fd110667a2c, limb3: 0x0 }, u384 { - limb0: 0xc4e7a261058daf44339190ae, - limb1: 0xf1a71d5943772871757443a7, - limb2: 0x220f885f7ef4f4e4, + limb0: 0xe0983e7d37d8850b0f18e368, + limb1: 0x5722399fc6daf07e23769691, + limb2: 0x1e476ef1f77f609d, limb3: 0x0 }, u384 { - limb0: 0x226f1ba25019ea8aaff4286f, - limb1: 0x6fc6f14a08c4ad9552c9c0df, - limb2: 0x2384905a838a54c1, + limb0: 0x3d87e1e91627a1e8dba03ccf, + limb1: 0x82922240004e7d4b515b8754, + limb2: 0x261791f0c38b2e37, limb3: 0x0 }, u384 { - limb0: 0xccaeb4d03bc866a6213d90b, - limb1: 0xbd31fa7132c0b34cd0da0af, - limb2: 0x25bc29d21742633b, + limb0: 0xc0f75a11f529b11ecd23e5d8, + limb1: 0x293741cbf5938a540760fb7b, + limb2: 0x1d2b444da993595c, limb3: 0x0 }, u384 { - limb0: 0x53c8821ca4927fbce8ae5e3, - limb1: 0xcd89083b1e0881412ab6a029, - limb2: 0x2ae170f46c079289, + limb0: 0x769ca529b9174939c04f7b51, + limb1: 0xe4f18b2e4ab292f20ba6e58f, + limb2: 0x29775b8ba812c967, limb3: 0x0 }, u384 { - limb0: 0xeca91dc2b1798a010684a143, - limb1: 0x9f5a12b2b831452646fdaa57, - limb2: 0x2109099414483602, + limb0: 0xe322e61de13c26d346f0bf77, + limb1: 0xfcc245cd4d38530ff8a1e038, + limb2: 0x1970ae7f9317a44c, limb3: 0x0 }, u384 { - limb0: 0x84aeddeb9d016be70142b0e2, - limb1: 0x3c7c3568b33d9ed9464e6ff1, - limb2: 0x1e63d0319dbbfe47, + limb0: 0x2409d2f2170e81fe8ad3e376, + limb1: 0x2aae3a33caae040fa94684c6, + limb2: 0x27c7a4a57336c793, limb3: 0x0 }, u384 { - limb0: 0x819015e6d7ac6f291692f078, - limb1: 0xaf9af387f09d683ca099246f, - limb2: 0x1c3774656bd59c2a, + limb0: 0xb736b2b498b63f775d0c6201, + limb1: 0x4cb606abd3890e66e9fd9108, + limb2: 0x1c022703b073ecbd, limb3: 0x0 }, u384 { - limb0: 0xfe72be62bd48f61decfebc00, - limb1: 0x482393b0f0532361cb77533c, - limb2: 0x128f452ff7422060, + limb0: 0x20a1e47a17794fec8119c2ce, + limb1: 0x87161c6593c3293b3a0e65a6, + limb2: 0xa58050fcc242edc, limb3: 0x0 }, u384 { - limb0: 0xaf89fa2b72c2999ecbc47e82, - limb1: 0xe117d6c2c33b3c229fa8faa2, - limb2: 0x29d8a3976205c1bc, + limb0: 0x1ca3ec6552f70880faa0ea3c, + limb1: 0x427d54bf6791019c49ab7ff1, + limb2: 0x2864b1a1f4622a5a, limb3: 0x0 }, u384 { - limb0: 0xafe57cbe007101d7ce78dafc, - limb1: 0x9af2202ae43ca91e4a9bf081, - limb2: 0x261d0d8752c8004a, + limb0: 0x336243c38b026e1ba043211a, + limb1: 0xe3b987a032cff4649283ff70, + limb2: 0x448aee03eb20eff, limb3: 0x0 }, u384 { - limb0: 0x7fbfb093f529f4603ee71f42, - limb1: 0x7586e883d02655f787b5195b, - limb2: 0x301c3c5a2c53b0c0, + limb0: 0xa474b3e3323837c9af4f61e4, + limb1: 0xbbcfdc9301a6cf7b70b85975, + limb2: 0x15853cd51a4d4cce, limb3: 0x0 }, u384 { - limb0: 0x5f150450fe472bd0b75deaf0, - limb1: 0xa76d6535811887fbc06a2f9c, - limb2: 0x2e2d51aab8a5248e, + limb0: 0x9a88263283f5f673260edc0f, + limb1: 0x72f51d069d8fbe31c0f2308, + limb2: 0x2a636007323b87b, limb3: 0x0 }, u384 { - limb0: 0xe7cba61228caf0d1951370e2, - limb1: 0x66a131a92503a33496deafa0, - limb2: 0x2dfb8c9e0550adec, + limb0: 0x8e521a48e468356a16558ed3, + limb1: 0x2b610bf5ce3965014b2fd1e2, + limb2: 0x2ff62a900b15535c, limb3: 0x0 }, u384 { - limb0: 0x580d6c99879f14c46cefc729, - limb1: 0x1b7290c825d9e12a6071b87e, - limb2: 0x8f2c06df7f14fc0, + limb0: 0x9cbf18a573fad7c1c5d089c3, + limb1: 0xcf3ccf88ce273cffa44a9d4b, + limb2: 0x21cdc0185106cbdd, limb3: 0x0 }, u384 { - limb0: 0x4f3e8ca25512f6baa0fae9fa, - limb1: 0x720f306988c3c48a98677c62, - limb2: 0x2fc48aec0e41524c, + limb0: 0x1ab52cf847d2d64cc5c70bd3, + limb1: 0xdbc512e72b08e5421d73328d, + limb2: 0x90451171575b176, limb3: 0x0 }, u384 { - limb0: 0x2c5411ed103a240c16f2470b, - limb1: 0xc117947b90e0fe6b869c7abc, - limb2: 0x28b79b1c47e7a847, + limb0: 0xca541f57fffefea921f84837, + limb1: 0xeafde0ae37d2a8ed12435066, + limb2: 0x2396469ce6f4a606, limb3: 0x0 }, u384 { - limb0: 0x3ce159438ac9201d8f43434d, - limb1: 0x5decf7bc421b6edf3d231081, - limb2: 0x9c3ed4df1ed61b7, + limb0: 0x541af4fa4f3b87b5a6da63a, + limb1: 0xd05644b70abcb8ecfa06909e, + limb2: 0x22a48662a8712147, limb3: 0x0 }, u384 { - limb0: 0x980ebb469bb64c1bab936d3, - limb1: 0x8daf4718997af18f3e38128b, - limb2: 0x20171aefd65d6f13, + limb0: 0x4670d4bfb3980a6378fbf05, + limb1: 0xdd60d298df7eaea4b4243498, + limb2: 0x2ab450706146d6c8, limb3: 0x0 }, u384 { - limb0: 0x3e2a5be1946adc176c18ac43, - limb1: 0x3e21448269882825615ac62d, - limb2: 0x1470f5fcbcb0d5af, + limb0: 0xfb3831dcbde6d0b113abb207, + limb1: 0x4a311079e8cc5d09c413fd8f, + limb2: 0x1f42cdaf68eb0af3, limb3: 0x0 }, u384 { - limb0: 0x9a1fcdd7c1e420888d1b6d82, - limb1: 0xa937c9f9ee33da1a5fb41c25, - limb2: 0x14e3b39ae54fc8c4, + limb0: 0xff3535d8c862f90998ec892d, + limb1: 0x832dc2f1b3cd3c44f49cbc87, + limb2: 0x11b77b2e6143e727, limb3: 0x0 }, u384 { - limb0: 0x6438f9bc19754f9500a06e06, - limb1: 0x66c16c128dd9df31c43728c3, - limb2: 0x64504e531615f82, + limb0: 0x469572032c2feebdbf8823a2, + limb1: 0x168ed5e7226ea32285b32f51, + limb2: 0x16004ae852f38781, limb3: 0x0 }, u384 { - limb0: 0xc0a6e78cf0c7335c7598ef04, - limb1: 0x3b8ec04cdf224f43c0c8daa5, - limb2: 0x6290b0aaab674a6, + limb0: 0x611ef3212f97b30be47fbc7a, + limb1: 0x2708818d1421168e1c31e3b0, + limb2: 0x539fb4549e62abb, limb3: 0x0 }, u384 { - limb0: 0x923ffcf6cc5887215c0c5f91, - limb1: 0x2245fa1c3a8d61562011390a, - limb2: 0x12cb568ff842cc6b, + limb0: 0x1424e482ebee245c7e474ec7, + limb1: 0xdc3ed8d48f9b15f022ba183e, + limb2: 0xdca16e379eeaf6e, limb3: 0x0 }, u384 { - limb0: 0xc878f129868e3607b9b6cba0, - limb1: 0xc6c48eb30ebbb0f85a17c4a7, - limb2: 0x1a3e67d8273a07f4, + limb0: 0xf18a4f062365647c70cd1d3, + limb1: 0x6b9c968df9f8faa493383160, + limb2: 0x1c2e1e525053a81b, limb3: 0x0 }, u384 { - limb0: 0x61835fafd174142a3900932f, - limb1: 0x9052fe7c0967d6fbbf70e4d9, - limb2: 0x413df0c533041fd, + limb0: 0xaf3b74034a4b56b59d3833d8, + limb1: 0xc2ea9fb490144f547a9fbb25, + limb2: 0x1856c6ac7487ebab, limb3: 0x0 }, u384 { - limb0: 0x704cf32e3410adf008aa260a, - limb1: 0x152d63898e63274aa969f8b0, - limb2: 0x21ef186065b097d5, + limb0: 0xcc4aae1b32958dc2e729bb31, + limb1: 0xe53e7b01f08b1ba9b883f6d9, + limb2: 0x1b9c87f02430a92b, limb3: 0x0 }, u384 { - limb0: 0x3cf198756fb3dbdaaed5ddfa, - limb1: 0xf8cb38ae20fa228bd07c0b20, - limb2: 0x25e9c9acbd187b19, + limb0: 0xedc09051548ec5f9cd2c6f04, + limb1: 0x7b2e22c78db7fd0476b56a81, + limb2: 0x124383c84281bf99, limb3: 0x0 }, u384 { - limb0: 0xb9175ef3935d457749fd8541, - limb1: 0xc42bc784a4e88894f2aa295f, - limb2: 0x1d821904ab5d8298, + limb0: 0xea91a3f1cccf779af227254, + limb1: 0x316688666328144f1e01fd44, + limb2: 0x69fdbeb3e62b1d7, limb3: 0x0 }, u384 { - limb0: 0x758fd248b359df6c387bc5a5, - limb1: 0x832dc6fe5e31f8900cfcba1a, - limb2: 0x11f01e4dbf0c89bd, + limb0: 0x48ed72508146f1eaca7ceeb6, + limb1: 0x5a603344472bd045a0d33fe7, + limb2: 0x1bc8bfe854534819, limb3: 0x0 }, u384 { - limb0: 0xa81f5fd6232e7a74aefedf8e, - limb1: 0x7ae7c3e29cd1dc45d8697b87, - limb2: 0xc26a192142581b, + limb0: 0x8d7b3b9c4c1ced70b8327a83, + limb1: 0x65b0feb26b8d5a1b2c8315f6, + limb2: 0x17647f715210a64c, limb3: 0x0 }, u384 { - limb0: 0x36c462d3cc865d5ceebdd039, - limb1: 0x26192dbbea23379350a9c33b, - limb2: 0x1168c07bbe8f2db6, + limb0: 0xb1e61a13a3c46e3a33afcf04, + limb1: 0xb676496ae34c5f19b8da2bd3, + limb2: 0x1f230d3c2985b792, limb3: 0x0 }, u384 { - limb0: 0xd4c55339c653e1c9cff8e3d, - limb1: 0x8869ce7bc3571709e215aa0d, - limb2: 0x1348383be7d62b89, + limb0: 0x79d0656719290bb6847e9757, + limb1: 0xb06f15ab07a0a9688343cc24, + limb2: 0x1659d23f15ece109, limb3: 0x0 }, u384 { - limb0: 0xac681b3847474d5d7dfd5170, - limb1: 0x47c839fd8eda7d749c92a969, - limb2: 0x2638b8b7d3b7dee0, + limb0: 0xf856983daab2bc7f4294129c, + limb1: 0x8bb5f117d2fc6329abe25426, + limb2: 0x2f5dd139d3c727b8, limb3: 0x0 }, u384 { - limb0: 0x9553882c2ba8e5c076f3af84, - limb1: 0x96727ce68aef2de5a9a78e7d, - limb2: 0x2a7d36bb2c6152b, + limb0: 0x355f1a5787a456de4c91ff8f, + limb1: 0xbe4fea48dc2ebfc06a532399, + limb2: 0x2a6fb93dceb72ddc, limb3: 0x0 }, u384 { - limb0: 0xdec1d1ca0ff8cf72da8b0749, - limb1: 0x37f23579e66838de58e08456, - limb2: 0xa5cc40864a64b50, + limb0: 0xe38ff88a95731d4669be7d47, + limb1: 0xae5b471ef231c21a3b9795c4, + limb2: 0x1165de675fce8fce, limb3: 0x0 }, u384 { - limb0: 0x3d0e58f3a7045feef33b1530, - limb1: 0xa70be9f6b3310e6e0465165, - limb2: 0x1c8f103cccd64ae9, + limb0: 0x7e641361944ca9b06972f483, + limb1: 0x855cfed82689eeac36675bfe, + limb2: 0x10bb13b1533ccb6f, limb3: 0x0 }, u384 { - limb0: 0xcc0713d70582a16ca00932e9, - limb1: 0xb07de7cd9767c3f3e4b2b07, - limb2: 0x1478da05f9008c8c, + limb0: 0x6628fbc908da764e03564183, + limb1: 0xeeae5a22f640c390db572280, + limb2: 0xe653c7f3abb8a3e, limb3: 0x0 }, u384 { - limb0: 0xc5731167f5c36c24c9392bdf, - limb1: 0xcd8e525995ced978d0ff21d5, - limb2: 0x78dc28a631d8255, + limb0: 0x6d4959ca4b9bcb6af9f8f280, + limb1: 0x822e8da6c83d8df9b2576cb, + limb2: 0xb88d1c7d3c181d0, limb3: 0x0 }, u384 { - limb0: 0x6055b64d1e81ac3fbbf2c899, - limb1: 0xd324e7f3acab43814fa39463, - limb2: 0x2b90799f79521302, + limb0: 0x4d78feabb4e811331b9ffc4a, + limb1: 0x2f828b859a3782e1dfd6e8aa, + limb2: 0x192971a730a1b135, limb3: 0x0 }, u384 { - limb0: 0xe98abf3870f5febd053660a4, - limb1: 0x34b40e13ed7a7402c17baaa6, - limb2: 0x2cb5592d8820e3dc, + limb0: 0x48b414eaf7ed293a5e9dda58, + limb1: 0xfd535cf59845454a03830a64, + limb2: 0xcbdeda3a8128f9f, limb3: 0x0 }, u384 { - limb0: 0xe2f623c8d7dc2fcf79471029, - limb1: 0x52151e4242d2e5fee67e98e, - limb2: 0x71db2936e15d5b6, + limb0: 0xf535e97475025b469ef3f9c4, + limb1: 0x997235ec0fc71c619c5d70d, + limb2: 0x2dea17760f3e8e1f, limb3: 0x0 }, u384 { - limb0: 0x6d7acf97d101ec6869c848d8, - limb1: 0x11182b08e5f5a4d989cc686b, - limb2: 0x51a072f4b78431d, + limb0: 0x2641a38e37bbf17eae9d29c2, + limb1: 0x7a1be52c89283a7b380a76ac, + limb2: 0x26006032d966f9ca, limb3: 0x0 }, u384 { - limb0: 0x19ab54d6a88136cb5f281fd2, - limb1: 0x7f266c52671d0305ddb623f3, - limb2: 0x1ed4713c913494c, + limb0: 0x82e8ee8bd851da7e17a10b32, + limb1: 0x77c2c539785f013608d4d669, + limb2: 0x135858b8191e30d5, limb3: 0x0 } ], }; let small_Q = E12DMulQuotient { w0: u384 { - limb0: 0x19f162a174f902aa745402b4, - limb1: 0xfa2f8c97398c883fd8bf13d6, - limb2: 0x12e453358c930735, + limb0: 0x6e3195cc2ed09a0ab3f73955, + limb1: 0xae30431bc826d2ac120c94e7, + limb2: 0x19256d5df9a2883b, limb3: 0x0 }, w1: u384 { - limb0: 0xd52476b75584ac34c15e2dce, - limb1: 0x2863016c3bac4516d1f7c13f, - limb2: 0x7586c0d4885bda, + limb0: 0x1edfd9de0b2c8f27bae01cae, + limb1: 0x3ab86570804c330348bbf870, + limb2: 0x22b3652e943445a, limb3: 0x0 }, w2: u384 { - limb0: 0x52f782bccd6bc667c0b92074, - limb1: 0xb58e14f0c4b5a49a13a75cf1, - limb2: 0x129f693d0cdc9d9e, + limb0: 0xc2e4ed769112b113766c3635, + limb1: 0x40ee9a1614fd88840351dfa, + limb2: 0x9b0e356b2810369, limb3: 0x0 }, w3: u384 { - limb0: 0x55e516869853b1a5f697bc55, - limb1: 0x88d6678cf336de5b33ab5805, - limb2: 0x2937efeb460dad2d, + limb0: 0x95cbe0abb9de64dd06a1fe5c, + limb1: 0xca554aebdd80984ffcb9815d, + limb2: 0x98a67660fe5958, limb3: 0x0 }, w4: u384 { - limb0: 0x7f83e56cb2632b97a4497cd4, - limb1: 0x9baffca2ee3254a2dc15ae4, - limb2: 0x19f0b0c5238adc93, + limb0: 0x7fd1a22de6a12ff95e36b39c, + limb1: 0x906bb9d21f4e5111b6c6bd57, + limb2: 0x1b0c199df180a5a2, limb3: 0x0 }, w5: u384 { - limb0: 0x16f2f250c0e8080537fda1a, - limb1: 0xd3a4aec232febb92aab8b77d, - limb2: 0x26eb4fe81b4c2ac5, + limb0: 0x328b85343441056c815ca910, + limb1: 0x7dafcae3d3b5d56a1e38c794, + limb2: 0x2e0c30e4a2ececf0, limb3: 0x0 }, w6: u384 { - limb0: 0x26738e8aeda9ab114af14b06, - limb1: 0x1c7bcb5f6950acb927f30b33, - limb2: 0x2a35ee39543818b0, + limb0: 0x376587414f25772c7db94383, + limb1: 0x445120cad6a9e70fa9fcf666, + limb2: 0xed10f3cd128420a, limb3: 0x0 }, w7: u384 { - limb0: 0x1581e23de79769c3ae02c9b6, - limb1: 0xfca05008a0ffe1cded46d828, - limb2: 0x1b7d7b1ceba0887d, + limb0: 0xdcbb453bd4a94d269a405221, + limb1: 0xbe564ff0c292797a79e1ae66, + limb2: 0x12c542063599b9dc, limb3: 0x0 }, w8: u384 { - limb0: 0xbd2e1c6374f1af5856fc2066, - limb1: 0xd50b99f313c652609b748a66, - limb2: 0x1ca64a11a891eda, + limb0: 0x4d6c006d37c7b0d085a97fc3, + limb1: 0x9ba85d6adbd57e4320585bd6, + limb2: 0x2fa9e1d649b6c78f, limb3: 0x0 }, w9: u384 { - limb0: 0x3ccfe50329f03eede7b5f72a, - limb1: 0xf9a81d5268dfe6618dd5ec60, - limb2: 0xad3bd6880464037, + limb0: 0xf0ea06a617e202f0bfc18d51, + limb1: 0x5442c40bd9f55bcfb677d325, + limb2: 0x1b6a639f7f3e09bd, limb3: 0x0 }, w10: u384 { - limb0: 0xca68330400395466aea183f8, - limb1: 0x43263528cd2e97e774503c80, - limb2: 0x2415bb50a5cfa5af, + limb0: 0xabc2dc4fce5a50d68c7c8b38, + limb1: 0x135b063a3ec727a4b923c485, + limb2: 0x253b73807c1de26a, limb3: 0x0 } }; @@ -17023,3622 +17033,3622 @@ mod pairing_tests { let pair0: G1G2Pair = G1G2Pair { p: G1Point { x: u384 { - limb0: 0x64fa1498be253777240f451, - limb1: 0x88a63dcab13d0b2b6e721c0c, - limb2: 0xcd7540ea8b97a3dff4c472f2, - limb3: 0xdf912dd2d2132561f1254fc + limb0: 0xe4f817e54aede0613c17035c, + limb1: 0xdff1f15010392a6da1f95a6, + limb2: 0xbed78d3d341e911d49f15454, + limb3: 0x18154782ce0913b21588066d }, y: u384 { - limb0: 0x578dd61059cb5e308f2fc043, - limb1: 0x7bc361f15e5eff6193174b0e, - limb2: 0x413795f579e8c25b6088e3e2, - limb3: 0x13d4594b9d48bb34348086df + limb0: 0x3d77d61326ef5a9a5a681757, + limb1: 0xd3070afd4f0e121de7fcee60, + limb2: 0xdf9ef4088763fe611fb85858, + limb3: 0x11a612bdd0bc09562856a70 } }, q: G2Point { x0: u384 { - limb0: 0xa5c5bc6a8c5a2cab6c3d7358, - limb1: 0x59abe5107dd33205d08b7a9e, - limb2: 0x25cfc035c6fdf2a19ba96717, - limb3: 0x1104a1789606df11a08f0a29 + limb0: 0x30d2fddc2fa171cdd4d31a55, + limb1: 0x92fab4f255a20d09700542e5, + limb2: 0x4d92a8c02d22b8cea4ff21ab, + limb3: 0x120a838699abaae7ed948194 }, x1: u384 { - limb0: 0x85457a095ec14f017cb3cb42, - limb1: 0x5297113fac5b91ea781ca703, - limb2: 0x9eedd14a48feea1c9089e444, - limb3: 0xef2c14fc4b1513ecd823ee1 + limb0: 0x51cd5fdc71cf4557ef606935, + limb1: 0x92e1b13e2c93fc9957b17841, + limb2: 0x6143a906b63b7f3476ad6819, + limb3: 0x158186f6f2dd04cfa4e78547 }, y0: u384 { - limb0: 0xbc26365105e1cb48a5c0f391, - limb1: 0xee8b3f85ecc5cb367ed3d387, - limb2: 0x7757babcff170c53cc342eb9, - limb3: 0xbc9873acd81599ed19c1d7a + limb0: 0x9f1c7dcdbe4574f05d0c093b, + limb1: 0xcde395f3ee4e353cf25a2e21, + limb2: 0x6a44c4a6d642c3dd98128703, + limb3: 0x2bd32fdfe26d866771e2180 }, y1: u384 { - limb0: 0x423287eff28c08697da148f3, - limb1: 0xa021f73a659ec80df21c1e45, - limb2: 0x8812a939c5503b3065fa35c2, - limb3: 0x16575d1dff8aa9a3ce3e038c + limb0: 0x7060005397ea11f7e9a26050, + limb1: 0xeb8540654b533da9b594fc27, + limb2: 0xfc83cf9d283b7231df1db3f9, + limb3: 0x7ff9623d918ca12e0ff6cce } } }; let pair1: G1G2Pair = G1G2Pair { p: G1Point { x: u384 { - limb0: 0x64fa1498be253777240f451, - limb1: 0x88a63dcab13d0b2b6e721c0c, - limb2: 0xcd7540ea8b97a3dff4c472f2, - limb3: 0xdf912dd2d2132561f1254fc + limb0: 0xe4f817e54aede0613c17035c, + limb1: 0xdff1f15010392a6da1f95a6, + limb2: 0xbed78d3d341e911d49f15454, + limb3: 0x18154782ce0913b21588066d }, y: u384 { - limb0: 0x59c629ef6033a1cf70cfea68, - limb1: 0xeb6d70af9851f6c28b94b4f0, - limb2: 0x21416e1ea8e892992fc2edc, - limb3: 0x62cb89e9c372b66169b20d7 + limb0: 0x73dc29ec930fa565a5979354, + limb1: 0x9429c7a3a7a2e40636af119e, + limb2: 0x63acb8cedd134d23d3ccba66, + limb3: 0x18e6b0be5c742604e8963d45 } }, q: G2Point { x0: u384 { - limb0: 0xa5c5bc6a8c5a2cab6c3d7358, - limb1: 0x59abe5107dd33205d08b7a9e, - limb2: 0x25cfc035c6fdf2a19ba96717, - limb3: 0x1104a1789606df11a08f0a29 + limb0: 0x30d2fddc2fa171cdd4d31a55, + limb1: 0x92fab4f255a20d09700542e5, + limb2: 0x4d92a8c02d22b8cea4ff21ab, + limb3: 0x120a838699abaae7ed948194 }, x1: u384 { - limb0: 0x85457a095ec14f017cb3cb42, - limb1: 0x5297113fac5b91ea781ca703, - limb2: 0x9eedd14a48feea1c9089e444, - limb3: 0xef2c14fc4b1513ecd823ee1 + limb0: 0x51cd5fdc71cf4557ef606935, + limb1: 0x92e1b13e2c93fc9957b17841, + limb2: 0x6143a906b63b7f3476ad6819, + limb3: 0x158186f6f2dd04cfa4e78547 }, y0: u384 { - limb0: 0xbc26365105e1cb48a5c0f391, - limb1: 0xee8b3f85ecc5cb367ed3d387, - limb2: 0x7757babcff170c53cc342eb9, - limb3: 0xbc9873acd81599ed19c1d7a + limb0: 0x9f1c7dcdbe4574f05d0c093b, + limb1: 0xcde395f3ee4e353cf25a2e21, + limb2: 0x6a44c4a6d642c3dd98128703, + limb3: 0x2bd32fdfe26d866771e2180 }, y1: u384 { - limb0: 0x423287eff28c08697da148f3, - limb1: 0xa021f73a659ec80df21c1e45, - limb2: 0x8812a939c5503b3065fa35c2, - limb3: 0x16575d1dff8aa9a3ce3e038c + limb0: 0x7060005397ea11f7e9a26050, + limb1: 0xeb8540654b533da9b594fc27, + limb2: 0xfc83cf9d283b7231df1db3f9, + limb3: 0x7ff9623d918ca12e0ff6cce } } }; let lines = array![ G2Line { r0a0: u384 { - limb0: 0x63f11b6fcc59d20b6ab44425, - limb1: 0x176fc2743b2268200ad34081, - limb2: 0xeb0ef582a350c728e2a8e784, - limb3: 0x165b928d6db94277cb240eee + limb0: 0xa5165654d48ad38da89955b2, + limb1: 0x36388a52d2379c53735285c1, + limb2: 0xb1cba90b5a7d592a905913f6, + limb3: 0xf04eef4de6a895d29865a33 }, r0a1: u384 { - limb0: 0x894bc5354858e25f94da93f4, - limb1: 0x4ff0c721927a993b6bdf9259, - limb2: 0xa2cb14c68bf0317d39eb8907, - limb3: 0xf65bd575a2b6e7cb60d79dd + limb0: 0x11170525e014139da401da13, + limb1: 0xdfc4d38dc6621f61b8834990, + limb2: 0xb86906ab9966ab43169ba396, + limb3: 0x104b8a575e67290a4d8e5d0 }, r1a0: u384 { - limb0: 0xc0fd4091fc4b10a379767a4a, - limb1: 0xf38f6051cf66213bae06f928, - limb2: 0x56fb03bd68263e7bc5493996, - limb3: 0xc5a52838694118bac7a216b + limb0: 0x2fddaa92e366f11a886242bb, + limb1: 0xf7255a5c3e06de681d21207f, + limb2: 0x544afd5f8c149ed0980ad33f, + limb3: 0x18ff3a5ad5398470eec050cd }, r1a1: u384 { - limb0: 0x11fddbfc207e063aa5268887, - limb1: 0x9f256a14e5277bb09fca92bd, - limb2: 0x6b8a8a05c9fa8a139eb81d32, - limb3: 0xf7ab0c73e6fd7da34a5d91 + limb0: 0x5ebc8ff3cef71a1b2b0ce5d9, + limb1: 0xf4093ee74d1a5714b4562355, + limb2: 0xe6d400f1614d23e5b0b3831f, + limb3: 0x4e3cba1ec100020f137797e } }, G2Line { r0a0: u384 { - limb0: 0x6a7055fd5134e0c5d74a4aa1, - limb1: 0x817fcb2084dfe60b7192ecd1, - limb2: 0x6f0323a1e21158ae6fa42b3b, - limb3: 0x1799b1e23d02b7b7979a8c88 + limb0: 0xcf94aa0961ba244fb7b34f8, + limb1: 0x9eedbbaadfb34c820b7b9046, + limb2: 0xdfdb0674b62b2c9622a321e9, + limb3: 0x18745455fc3b957175dbaaab }, r0a1: u384 { - limb0: 0xf4a79ced7089310d5bd09142, - limb1: 0xe7b25aa503a606a7cb9b0f83, - limb2: 0x5a428a506274beba45558971, - limb3: 0x8e6d227a55fcffc55db5535 + limb0: 0xb18b9b496c7e76d19d0476a3, + limb1: 0x532e40e737e71a727e36699d, + limb2: 0x1173a4db0c906464c9c6dfe5, + limb3: 0x14436970af87927ca25ab397 }, r1a0: u384 { - limb0: 0xd7de629b43bc8903091abeaa, - limb1: 0x7ecdd060c4a14c8ef96242d4, - limb2: 0x6a0c325ff2341e211feadaf2, - limb3: 0x194b8edf3e1e3b2a249dfdbb + limb0: 0x2b8bedf7ace9601914137555, + limb1: 0x8e5a6616ba6b5a7c0a4b60cc, + limb2: 0xeed2fb7a6b6951d08720afd2, + limb3: 0x6e20b841803b78a54cb51f0 }, r1a1: u384 { - limb0: 0x596e079159d9e79f8909f3eb, - limb1: 0xdfa962fc87d74820250cdf0d, - limb2: 0x9c07d7b28f0d0119588998f9, - limb3: 0x648aca7012e9a6190ebbde6 + limb0: 0xe2f3cc1d38637307df479c33, + limb1: 0x553fbfecff64b0f8513ea53, + limb2: 0xc35e934c2f0dd0dfc36fb764, + limb3: 0xfe253f73265563f5da37bf0 } }, G2Line { r0a0: u384 { - limb0: 0x63f11b6fcc59d20b6ab44425, - limb1: 0x176fc2743b2268200ad34081, - limb2: 0xeb0ef582a350c728e2a8e784, - limb3: 0x165b928d6db94277cb240eee + limb0: 0xa5165654d48ad38da89955b2, + limb1: 0x36388a52d2379c53735285c1, + limb2: 0xb1cba90b5a7d592a905913f6, + limb3: 0xf04eef4de6a895d29865a33 }, r0a1: u384 { - limb0: 0x894bc5354858e25f94da93f4, - limb1: 0x4ff0c721927a993b6bdf9259, - limb2: 0xa2cb14c68bf0317d39eb8907, - limb3: 0xf65bd575a2b6e7cb60d79dd + limb0: 0x11170525e014139da401da13, + limb1: 0xdfc4d38dc6621f61b8834990, + limb2: 0xb86906ab9966ab43169ba396, + limb3: 0x104b8a575e67290a4d8e5d0 }, r1a0: u384 { - limb0: 0xc0fd4091fc4b10a379767a4a, - limb1: 0xf38f6051cf66213bae06f928, - limb2: 0x56fb03bd68263e7bc5493996, - limb3: 0xc5a52838694118bac7a216b + limb0: 0x2fddaa92e366f11a886242bb, + limb1: 0xf7255a5c3e06de681d21207f, + limb2: 0x544afd5f8c149ed0980ad33f, + limb3: 0x18ff3a5ad5398470eec050cd }, r1a1: u384 { - limb0: 0x11fddbfc207e063aa5268887, - limb1: 0x9f256a14e5277bb09fca92bd, - limb2: 0x6b8a8a05c9fa8a139eb81d32, - limb3: 0xf7ab0c73e6fd7da34a5d91 + limb0: 0x5ebc8ff3cef71a1b2b0ce5d9, + limb1: 0xf4093ee74d1a5714b4562355, + limb2: 0xe6d400f1614d23e5b0b3831f, + limb3: 0x4e3cba1ec100020f137797e } }, G2Line { r0a0: u384 { - limb0: 0x6a7055fd5134e0c5d74a4aa1, - limb1: 0x817fcb2084dfe60b7192ecd1, - limb2: 0x6f0323a1e21158ae6fa42b3b, - limb3: 0x1799b1e23d02b7b7979a8c88 + limb0: 0xcf94aa0961ba244fb7b34f8, + limb1: 0x9eedbbaadfb34c820b7b9046, + limb2: 0xdfdb0674b62b2c9622a321e9, + limb3: 0x18745455fc3b957175dbaaab }, r0a1: u384 { - limb0: 0xf4a79ced7089310d5bd09142, - limb1: 0xe7b25aa503a606a7cb9b0f83, - limb2: 0x5a428a506274beba45558971, - limb3: 0x8e6d227a55fcffc55db5535 + limb0: 0xb18b9b496c7e76d19d0476a3, + limb1: 0x532e40e737e71a727e36699d, + limb2: 0x1173a4db0c906464c9c6dfe5, + limb3: 0x14436970af87927ca25ab397 }, r1a0: u384 { - limb0: 0xd7de629b43bc8903091abeaa, - limb1: 0x7ecdd060c4a14c8ef96242d4, - limb2: 0x6a0c325ff2341e211feadaf2, - limb3: 0x194b8edf3e1e3b2a249dfdbb + limb0: 0x2b8bedf7ace9601914137555, + limb1: 0x8e5a6616ba6b5a7c0a4b60cc, + limb2: 0xeed2fb7a6b6951d08720afd2, + limb3: 0x6e20b841803b78a54cb51f0 }, r1a1: u384 { - limb0: 0x596e079159d9e79f8909f3eb, - limb1: 0xdfa962fc87d74820250cdf0d, - limb2: 0x9c07d7b28f0d0119588998f9, - limb3: 0x648aca7012e9a6190ebbde6 + limb0: 0xe2f3cc1d38637307df479c33, + limb1: 0x553fbfecff64b0f8513ea53, + limb2: 0xc35e934c2f0dd0dfc36fb764, + limb3: 0xfe253f73265563f5da37bf0 } }, G2Line { r0a0: u384 { - limb0: 0xd1ba0838edd3bab14989cfaa, - limb1: 0x1f5c64876628267cb50c10e, - limb2: 0xf9b178f1b0fad3466aa0300b, - limb3: 0x1580ddd31b2c6293a526ed10 + limb0: 0xf63d5adf98504eb919404838, + limb1: 0x322c7fec39e0dbb7e3fab671, + limb2: 0x66a7d9554b938f680e363589, + limb3: 0x168b865e60bf25b5f80efdba }, r0a1: u384 { - limb0: 0x15f374638bff542fc5f04a9a, - limb1: 0xe0b25cebbdaeacb84508b3a6, - limb2: 0xd61ecb173ba035329196a652, - limb3: 0xf6e5736d7e544edf2163602 + limb0: 0xa19475051f484344fbfcb94, + limb1: 0xecab432b31e20fd481ef1641, + limb2: 0x9aef0e4871833b8e86498442, + limb3: 0xbfbebd5fe20e6b34cd10d52 }, r1a0: u384 { - limb0: 0xa7c83156673c29dd12271fb8, - limb1: 0xab0c78a6f445c843e9c9cb4b, - limb2: 0x57a7d7da7ff164785cc8ee25, - limb3: 0xd16a32b9c3b27cd1288304f + limb0: 0x3034c4ead4a9ecca97ef227f, + limb1: 0x3ff722abdd9b1b4fb2ed76a2, + limb2: 0x89478f4e3e947df714a9fb5e, + limb3: 0xf7d15d762bc99988f9d789d }, r1a1: u384 { - limb0: 0x34930635e93ce3ee8979a748, - limb1: 0x1768d88ede9d0c6aea18c708, - limb2: 0x605ac20eb3880ce8e6c06dfd, - limb3: 0x183e4a97f766f9861d8a2710 + limb0: 0xe7309c91453760cefb576bc9, + limb1: 0xc04e0c62e92a4efd0f9d9c3b, + limb2: 0xada0f0a505209353f4b17f24, + limb3: 0x185b2e9615659da43b50282e } }, G2Line { r0a0: u384 { - limb0: 0xd1ba0838edd3bab14989cfaa, - limb1: 0x1f5c64876628267cb50c10e, - limb2: 0xf9b178f1b0fad3466aa0300b, - limb3: 0x1580ddd31b2c6293a526ed10 + limb0: 0xf63d5adf98504eb919404838, + limb1: 0x322c7fec39e0dbb7e3fab671, + limb2: 0x66a7d9554b938f680e363589, + limb3: 0x168b865e60bf25b5f80efdba }, r0a1: u384 { - limb0: 0x15f374638bff542fc5f04a9a, - limb1: 0xe0b25cebbdaeacb84508b3a6, - limb2: 0xd61ecb173ba035329196a652, - limb3: 0xf6e5736d7e544edf2163602 + limb0: 0xa19475051f484344fbfcb94, + limb1: 0xecab432b31e20fd481ef1641, + limb2: 0x9aef0e4871833b8e86498442, + limb3: 0xbfbebd5fe20e6b34cd10d52 }, r1a0: u384 { - limb0: 0xa7c83156673c29dd12271fb8, - limb1: 0xab0c78a6f445c843e9c9cb4b, - limb2: 0x57a7d7da7ff164785cc8ee25, - limb3: 0xd16a32b9c3b27cd1288304f + limb0: 0x3034c4ead4a9ecca97ef227f, + limb1: 0x3ff722abdd9b1b4fb2ed76a2, + limb2: 0x89478f4e3e947df714a9fb5e, + limb3: 0xf7d15d762bc99988f9d789d }, r1a1: u384 { - limb0: 0x34930635e93ce3ee8979a748, - limb1: 0x1768d88ede9d0c6aea18c708, - limb2: 0x605ac20eb3880ce8e6c06dfd, - limb3: 0x183e4a97f766f9861d8a2710 + limb0: 0xe7309c91453760cefb576bc9, + limb1: 0xc04e0c62e92a4efd0f9d9c3b, + limb2: 0xada0f0a505209353f4b17f24, + limb3: 0x185b2e9615659da43b50282e } }, G2Line { r0a0: u384 { - limb0: 0x3528ae7cc8a3e6af0c33bd64, - limb1: 0x94ef9df33c84d4a90a581908, - limb2: 0x35e038c9d0aabd4d814dfd3e, - limb3: 0x9de5a0891bb8115d363df42 + limb0: 0xacd0c846fbba57a06a86174d, + limb1: 0xb3559bb08ff796c300ff2163, + limb2: 0xb7ebbcfa41b1f30d02874a61, + limb3: 0x7a87f7612c63af0969932c }, r0a1: u384 { - limb0: 0x277ca596af5141faa328f596, - limb1: 0x84821cbccce54ef22f3df32b, - limb2: 0x6941e00c7ac61da6c6ff2567, - limb3: 0xdc62ea1f523c76890ecbce3 + limb0: 0xd4f55c22c625dddb92b73bd7, + limb1: 0x681facc4bfa2b130fcf3dacd, + limb2: 0x3bd92d164662bbb7f99c1b5a, + limb3: 0x12ac7263968961adecde567f }, r1a0: u384 { - limb0: 0x158102e7917bfe4df69dbcf5, - limb1: 0xf4e1feb1280690628ea6e15, - limb2: 0x3d7112e71381635bdd04a647, - limb3: 0x5bedaa10a11effe16ef20c9 + limb0: 0x81f5ef562d3dfd1fe4780fbf, + limb1: 0xcb396419628f7f02f0f0e2f8, + limb2: 0x3012e01dd8fc025163ad5e2a, + limb3: 0x1c053f246178e26fa6d3dea }, r1a1: u384 { - limb0: 0xb27f1c3468ba3c406887f9de, - limb1: 0xbae79d13c3505793afd0de29, - limb2: 0x727f83e12c3504ba5ee82f2b, - limb3: 0x16b489aaaf881ab409fcb6a6 + limb0: 0xc81f62215d8116e0b580ac54, + limb1: 0xef2e48f58ffbbafac5b2b827, + limb2: 0xe22598ad9700d53d0ab24440, + limb3: 0xeec459ce4be55ed92aa3f08 } }, G2Line { r0a0: u384 { - limb0: 0xc9abe16f9048bdc0f3f57d9a, - limb1: 0xeb4ef176b91b41a2fcbfadf5, - limb2: 0xc311d91f42eca11b7088ba70, - limb3: 0xb7cd819e0f8c269d922868c + limb0: 0x628192ce61515a10db139388, + limb1: 0xdf2fbc87bd9658e30ab5ca96, + limb2: 0x81420786279bf4a2c17ecbee, + limb3: 0x7cd8317980fac457217aa73 }, r0a1: u384 { - limb0: 0x94f864e4ce96948fb4947161, - limb1: 0x2927ff17d79600de0c4a1276, - limb2: 0x674024a685e61a6b9474063a, - limb3: 0x693c5cbf641239e46897e81 + limb0: 0xad2f18fc2c832eedc6828d6a, + limb1: 0x2c62b1d26ffe93fb41fbf6a6, + limb2: 0x54a6928b6b6cb48d95627389, + limb3: 0x155b45f029858968773bd77a }, r1a0: u384 { - limb0: 0x5637f732c83816a6f8faaa8c, - limb1: 0x5b4adee5ae97ba677d974ff3, - limb2: 0x9af48a8b8a864a48197d22f6, - limb3: 0x7dac086a9d20f5c4303d899 + limb0: 0x3a4649b4ea519194273b8413, + limb1: 0x39ed13d914c220a2a8621253, + limb2: 0xb2c2fe85ccf72ab37ef6d3e8, + limb3: 0x2f73caef28adb638d772f51 }, r1a1: u384 { - limb0: 0xdfc97e7aa9693a66cf9a209f, - limb1: 0x501fb1744a96599cb0024faa, - limb2: 0x6b2d86da59c8a47f994ce9a4, - limb3: 0x102d01fb9d550bd6574605c8 + limb0: 0x9a5228bb86ec7a83fc86d719, + limb1: 0x7b209838f6c5a27f3b13850e, + limb2: 0x2f682efc7c8f9d868bb155a0, + limb3: 0x14e1ffb93bd477d5824891f6 } }, G2Line { r0a0: u384 { - limb0: 0x3528ae7cc8a3e6af0c33bd64, - limb1: 0x94ef9df33c84d4a90a581908, - limb2: 0x35e038c9d0aabd4d814dfd3e, - limb3: 0x9de5a0891bb8115d363df42 + limb0: 0xacd0c846fbba57a06a86174d, + limb1: 0xb3559bb08ff796c300ff2163, + limb2: 0xb7ebbcfa41b1f30d02874a61, + limb3: 0x7a87f7612c63af0969932c }, r0a1: u384 { - limb0: 0x277ca596af5141faa328f596, - limb1: 0x84821cbccce54ef22f3df32b, - limb2: 0x6941e00c7ac61da6c6ff2567, - limb3: 0xdc62ea1f523c76890ecbce3 + limb0: 0xd4f55c22c625dddb92b73bd7, + limb1: 0x681facc4bfa2b130fcf3dacd, + limb2: 0x3bd92d164662bbb7f99c1b5a, + limb3: 0x12ac7263968961adecde567f }, r1a0: u384 { - limb0: 0x158102e7917bfe4df69dbcf5, - limb1: 0xf4e1feb1280690628ea6e15, - limb2: 0x3d7112e71381635bdd04a647, - limb3: 0x5bedaa10a11effe16ef20c9 + limb0: 0x81f5ef562d3dfd1fe4780fbf, + limb1: 0xcb396419628f7f02f0f0e2f8, + limb2: 0x3012e01dd8fc025163ad5e2a, + limb3: 0x1c053f246178e26fa6d3dea }, r1a1: u384 { - limb0: 0xb27f1c3468ba3c406887f9de, - limb1: 0xbae79d13c3505793afd0de29, - limb2: 0x727f83e12c3504ba5ee82f2b, - limb3: 0x16b489aaaf881ab409fcb6a6 + limb0: 0xc81f62215d8116e0b580ac54, + limb1: 0xef2e48f58ffbbafac5b2b827, + limb2: 0xe22598ad9700d53d0ab24440, + limb3: 0xeec459ce4be55ed92aa3f08 } }, G2Line { r0a0: u384 { - limb0: 0xc9abe16f9048bdc0f3f57d9a, - limb1: 0xeb4ef176b91b41a2fcbfadf5, - limb2: 0xc311d91f42eca11b7088ba70, - limb3: 0xb7cd819e0f8c269d922868c + limb0: 0x628192ce61515a10db139388, + limb1: 0xdf2fbc87bd9658e30ab5ca96, + limb2: 0x81420786279bf4a2c17ecbee, + limb3: 0x7cd8317980fac457217aa73 }, r0a1: u384 { - limb0: 0x94f864e4ce96948fb4947161, - limb1: 0x2927ff17d79600de0c4a1276, - limb2: 0x674024a685e61a6b9474063a, - limb3: 0x693c5cbf641239e46897e81 + limb0: 0xad2f18fc2c832eedc6828d6a, + limb1: 0x2c62b1d26ffe93fb41fbf6a6, + limb2: 0x54a6928b6b6cb48d95627389, + limb3: 0x155b45f029858968773bd77a }, r1a0: u384 { - limb0: 0x5637f732c83816a6f8faaa8c, - limb1: 0x5b4adee5ae97ba677d974ff3, - limb2: 0x9af48a8b8a864a48197d22f6, - limb3: 0x7dac086a9d20f5c4303d899 + limb0: 0x3a4649b4ea519194273b8413, + limb1: 0x39ed13d914c220a2a8621253, + limb2: 0xb2c2fe85ccf72ab37ef6d3e8, + limb3: 0x2f73caef28adb638d772f51 }, r1a1: u384 { - limb0: 0xdfc97e7aa9693a66cf9a209f, - limb1: 0x501fb1744a96599cb0024faa, - limb2: 0x6b2d86da59c8a47f994ce9a4, - limb3: 0x102d01fb9d550bd6574605c8 + limb0: 0x9a5228bb86ec7a83fc86d719, + limb1: 0x7b209838f6c5a27f3b13850e, + limb2: 0x2f682efc7c8f9d868bb155a0, + limb3: 0x14e1ffb93bd477d5824891f6 } }, G2Line { r0a0: u384 { - limb0: 0x4ef992992cbac625d4bd6c21, - limb1: 0x8360be23a505d088356e6e97, - limb2: 0x43a5e08490380e9a7d854ddd, - limb3: 0x4b27f456760e27ba8d2a87b + limb0: 0x1aade009b16b47d1f727828e, + limb1: 0xc03ad66ffa3eb3facb3162dd, + limb2: 0x89fc57933c577fcb302abd31, + limb3: 0x14a7ae423327b8eb4258ddc7 }, r0a1: u384 { - limb0: 0xed59d84e7d8f03cd29cea06c, - limb1: 0xb2fd33ba46e894324cc9c96, - limb2: 0x424fb92026c6d5f739afa66a, - limb3: 0x17a17cae02787b6e697cb6a6 + limb0: 0xb11c5c536b7a01248a05036e, + limb1: 0x4b63f65385cbfd77dd0c6b99, + limb2: 0xfc1bd30c87ae38746b0ea7ed, + limb3: 0xb343c5f6d66a234c16e751f }, r1a0: u384 { - limb0: 0xcb1739a5c831b3c8198473be, - limb1: 0xa06bfb297a23e02272400337, - limb2: 0x13263e754d0236a640d9ea44, - limb3: 0xf34edbadc525c13a72a7ec7 + limb0: 0xbfc9b6d848bfcfc1500c9e92, + limb1: 0xe6aca7c5d29a818829b8fcd6, + limb2: 0xf14399d2c3b586fa7369ef82, + limb3: 0x16fe63f10adc6d94ef6ac666 }, r1a1: u384 { - limb0: 0x9a61c1f5f63716fdeea3b3da, - limb1: 0x3142814b4381fed60592a087, - limb2: 0x76b31e8daaa32d4005632294, - limb3: 0x15666a8ac24f3393d76d7ce5 + limb0: 0x788c4a6c2cc0d6d1431f8fe0, + limb1: 0x6fbb017725bc437f59472864, + limb2: 0x7af112586422e8b451fff86f, + limb3: 0x8f33c7c0369d6bf05923ec6 } }, G2Line { r0a0: u384 { - limb0: 0x4ef992992cbac625d4bd6c21, - limb1: 0x8360be23a505d088356e6e97, - limb2: 0x43a5e08490380e9a7d854ddd, - limb3: 0x4b27f456760e27ba8d2a87b + limb0: 0x1aade009b16b47d1f727828e, + limb1: 0xc03ad66ffa3eb3facb3162dd, + limb2: 0x89fc57933c577fcb302abd31, + limb3: 0x14a7ae423327b8eb4258ddc7 }, r0a1: u384 { - limb0: 0xed59d84e7d8f03cd29cea06c, - limb1: 0xb2fd33ba46e894324cc9c96, - limb2: 0x424fb92026c6d5f739afa66a, - limb3: 0x17a17cae02787b6e697cb6a6 + limb0: 0xb11c5c536b7a01248a05036e, + limb1: 0x4b63f65385cbfd77dd0c6b99, + limb2: 0xfc1bd30c87ae38746b0ea7ed, + limb3: 0xb343c5f6d66a234c16e751f }, r1a0: u384 { - limb0: 0xcb1739a5c831b3c8198473be, - limb1: 0xa06bfb297a23e02272400337, - limb2: 0x13263e754d0236a640d9ea44, - limb3: 0xf34edbadc525c13a72a7ec7 + limb0: 0xbfc9b6d848bfcfc1500c9e92, + limb1: 0xe6aca7c5d29a818829b8fcd6, + limb2: 0xf14399d2c3b586fa7369ef82, + limb3: 0x16fe63f10adc6d94ef6ac666 }, r1a1: u384 { - limb0: 0x9a61c1f5f63716fdeea3b3da, - limb1: 0x3142814b4381fed60592a087, - limb2: 0x76b31e8daaa32d4005632294, - limb3: 0x15666a8ac24f3393d76d7ce5 + limb0: 0x788c4a6c2cc0d6d1431f8fe0, + limb1: 0x6fbb017725bc437f59472864, + limb2: 0x7af112586422e8b451fff86f, + limb3: 0x8f33c7c0369d6bf05923ec6 } }, G2Line { r0a0: u384 { - limb0: 0x997b69be2e9d608db8af48c5, - limb1: 0x43bb572262f6d1ede595409d, - limb2: 0xa5a5229da076271d8edececd, - limb3: 0x757dcd7bbbda8e2f9b8f40a + limb0: 0xc8e72714e847363877b7a8f7, + limb1: 0xe3e3fa798cae86df2a30d4aa, + limb2: 0x7459f8d7d611e2cb2ec54a0e, + limb3: 0x152cd68e17604069ec445769 }, r0a1: u384 { - limb0: 0x9ff11ef548b17d5901e78d39, - limb1: 0x12c22ab33074fa7ae01bafa8, - limb2: 0x4eb04902081e658d3fdcb5d9, - limb3: 0x60b1b3d5c98ef1d6de72345 + limb0: 0x8314b69d7f735267593148b, + limb1: 0xee63002a2560cba68706d4d8, + limb2: 0xfaa3112fa6d55883c688d4cb, + limb3: 0x14bb5f09c9b3530802a1e99f }, r1a0: u384 { - limb0: 0x36d4acde47da118a3e2d1b47, - limb1: 0xdbdcd10817defea58eb3c65c, - limb2: 0xbd7896875e745689e4cc0a06, - limb3: 0xfd76880657997486ef325ce + limb0: 0x5f0624eb82fb7ea0161d7d4f, + limb1: 0xd71eb5753a71df931abdea02, + limb2: 0x7e9d29717cc3a362d2351d9a, + limb3: 0x10bb67b2ea7e11fa4f644370 }, r1a1: u384 { - limb0: 0x343b0f99c9a314134092da69, - limb1: 0xc5fa2281bd6d06d10703d7fc, - limb2: 0x676c9be7d00115ad9e53cb70, - limb3: 0xdf771abb52e900a8be02cdf + limb0: 0xca7b1c09d30828e75c7c7281, + limb1: 0x5c8c1483d8402202dd0de198, + limb2: 0x2228fda9f92014d9870c7f11, + limb3: 0x6e2f5953b1cc17a41a0cf1b } }, G2Line { r0a0: u384 { - limb0: 0x997b69be2e9d608db8af48c5, - limb1: 0x43bb572262f6d1ede595409d, - limb2: 0xa5a5229da076271d8edececd, - limb3: 0x757dcd7bbbda8e2f9b8f40a + limb0: 0xc8e72714e847363877b7a8f7, + limb1: 0xe3e3fa798cae86df2a30d4aa, + limb2: 0x7459f8d7d611e2cb2ec54a0e, + limb3: 0x152cd68e17604069ec445769 }, r0a1: u384 { - limb0: 0x9ff11ef548b17d5901e78d39, - limb1: 0x12c22ab33074fa7ae01bafa8, - limb2: 0x4eb04902081e658d3fdcb5d9, - limb3: 0x60b1b3d5c98ef1d6de72345 + limb0: 0x8314b69d7f735267593148b, + limb1: 0xee63002a2560cba68706d4d8, + limb2: 0xfaa3112fa6d55883c688d4cb, + limb3: 0x14bb5f09c9b3530802a1e99f }, r1a0: u384 { - limb0: 0x36d4acde47da118a3e2d1b47, - limb1: 0xdbdcd10817defea58eb3c65c, - limb2: 0xbd7896875e745689e4cc0a06, - limb3: 0xfd76880657997486ef325ce + limb0: 0x5f0624eb82fb7ea0161d7d4f, + limb1: 0xd71eb5753a71df931abdea02, + limb2: 0x7e9d29717cc3a362d2351d9a, + limb3: 0x10bb67b2ea7e11fa4f644370 }, r1a1: u384 { - limb0: 0x343b0f99c9a314134092da69, - limb1: 0xc5fa2281bd6d06d10703d7fc, - limb2: 0x676c9be7d00115ad9e53cb70, - limb3: 0xdf771abb52e900a8be02cdf + limb0: 0xca7b1c09d30828e75c7c7281, + limb1: 0x5c8c1483d8402202dd0de198, + limb2: 0x2228fda9f92014d9870c7f11, + limb3: 0x6e2f5953b1cc17a41a0cf1b } }, G2Line { r0a0: u384 { - limb0: 0xe2635ab0d6e219fb7afa9416, - limb1: 0xb278621166d3b447ee83bd60, - limb2: 0xdda8b6e3fe36754b311084ae, - limb3: 0xbacdcb660f540f32622cc59 + limb0: 0xc9b70b573ab2dbee53352a96, + limb1: 0xcc8c7eca86c99d50d3e90936, + limb2: 0x7d70aa72c271b1f8c15ad43e, + limb3: 0xe499ea04ed9644c9f31ff2c }, r0a1: u384 { - limb0: 0x44b2507573676d236339c0b3, - limb1: 0xf769ed3d5a900541e0bcca49, - limb2: 0x4680543312d87cbb99d263c3, - limb3: 0x14a00d9e3deee0d9ee629609 + limb0: 0xa0f9073cb60f9d948336700a, + limb1: 0xbcba195f8a338d4cfe326b7d, + limb2: 0x830451f120569c1ba8a262fc, + limb3: 0x7d35ad7c0095f289f76c6bd }, r1a0: u384 { - limb0: 0x5312f874d16a1a5e14bcff5f, - limb1: 0x76e66b6f8f25a0a4adb531d9, - limb2: 0x330587449a731daf0e58b98c, - limb3: 0xabdd56692203bb036ec98bb + limb0: 0x6ef4a7e1adac7589cf5b1154, + limb1: 0xaca7ecc39f53183948238de2, + limb2: 0x7b65183abb9d2d0be2a6d539, + limb3: 0x63e7285b3dc806c2788d0e8 }, r1a1: u384 { - limb0: 0xf623b66acde67728a48fa52, - limb1: 0xbaebe9ba752bcb02b96f5198, - limb2: 0x8bf2eada8e410d64ba6d6573, - limb3: 0xe9ac1463041f452ebafc075 + limb0: 0x263affe0370ee6f1853c2fb0, + limb1: 0xc73621e485f5fef86ded3d9, + limb2: 0x4a9c22bbb63a9b67c98dc2df, + limb3: 0x10a59819d699abac0f845268 } }, G2Line { r0a0: u384 { - limb0: 0x337a2d8982e58c9a608bba3e, - limb1: 0xd62159d19c6d61a6d4a73c7d, - limb2: 0x966e2c5ffd533e7c0b3eb665, - limb3: 0xef473789fd45b24e30c7036 + limb0: 0x842113d6568cc4a0ff417952, + limb1: 0xbf9bf6040bcf98685b071730, + limb2: 0xc764bd69e11c73f3ecaf8d07, + limb3: 0xd587218a1496f9351f01e73 }, r0a1: u384 { - limb0: 0x2b8f5ad0a415c392f5e6e768, - limb1: 0xb33c6977a490dbcb2c3e8d, - limb2: 0x4df4a8b762fcaabefce9ef3e, - limb3: 0x132e6ca9d258ecfa4934d0a2 + limb0: 0xbc9127de7d6cf406424d7f15, + limb1: 0x8168235c896874ad54d9512, + limb2: 0xdcf79d8a1a168ae1c6dfa2e4, + limb3: 0xf95426d8e89954dee065f67 }, r1a0: u384 { - limb0: 0x25f85be87413eeea6f8e88a5, - limb1: 0xdfe7eafa721731abdae0726e, - limb2: 0xf1e95209f846413f32a4dad, - limb3: 0xd33e78ffa227c4b73c683e9 + limb0: 0x229ab89c13125cc2bf25a72d, + limb1: 0xd5a7df3aaaa0c0353dcac5a7, + limb2: 0x7c94527fabc77777ff2464ab, + limb3: 0x110918e757ed869ea437e672 }, r1a1: u384 { - limb0: 0xf3ca2bcf2a908c45b82091d4, - limb1: 0x8ad71a3e5b5e1d8a6eccba40, - limb2: 0xe0027966cb9e071c869e656a, - limb3: 0x4b1e8a5093716129828ed53 + limb0: 0xe982d22571f2f17aa68f712c, + limb1: 0xa48a9b75c7c89bfab5f5d1eb, + limb2: 0x1b89a01e72668b0a30e747fb, + limb3: 0xaa126ea871c3e3ca7d0b445 } }, G2Line { r0a0: u384 { - limb0: 0xe2635ab0d6e219fb7afa9416, - limb1: 0xb278621166d3b447ee83bd60, - limb2: 0xdda8b6e3fe36754b311084ae, - limb3: 0xbacdcb660f540f32622cc59 + limb0: 0xc9b70b573ab2dbee53352a96, + limb1: 0xcc8c7eca86c99d50d3e90936, + limb2: 0x7d70aa72c271b1f8c15ad43e, + limb3: 0xe499ea04ed9644c9f31ff2c }, r0a1: u384 { - limb0: 0x44b2507573676d236339c0b3, - limb1: 0xf769ed3d5a900541e0bcca49, - limb2: 0x4680543312d87cbb99d263c3, - limb3: 0x14a00d9e3deee0d9ee629609 + limb0: 0xa0f9073cb60f9d948336700a, + limb1: 0xbcba195f8a338d4cfe326b7d, + limb2: 0x830451f120569c1ba8a262fc, + limb3: 0x7d35ad7c0095f289f76c6bd }, r1a0: u384 { - limb0: 0x5312f874d16a1a5e14bcff5f, - limb1: 0x76e66b6f8f25a0a4adb531d9, - limb2: 0x330587449a731daf0e58b98c, - limb3: 0xabdd56692203bb036ec98bb + limb0: 0x6ef4a7e1adac7589cf5b1154, + limb1: 0xaca7ecc39f53183948238de2, + limb2: 0x7b65183abb9d2d0be2a6d539, + limb3: 0x63e7285b3dc806c2788d0e8 }, r1a1: u384 { - limb0: 0xf623b66acde67728a48fa52, - limb1: 0xbaebe9ba752bcb02b96f5198, - limb2: 0x8bf2eada8e410d64ba6d6573, - limb3: 0xe9ac1463041f452ebafc075 + limb0: 0x263affe0370ee6f1853c2fb0, + limb1: 0xc73621e485f5fef86ded3d9, + limb2: 0x4a9c22bbb63a9b67c98dc2df, + limb3: 0x10a59819d699abac0f845268 } }, G2Line { r0a0: u384 { - limb0: 0x337a2d8982e58c9a608bba3e, - limb1: 0xd62159d19c6d61a6d4a73c7d, - limb2: 0x966e2c5ffd533e7c0b3eb665, - limb3: 0xef473789fd45b24e30c7036 + limb0: 0x842113d6568cc4a0ff417952, + limb1: 0xbf9bf6040bcf98685b071730, + limb2: 0xc764bd69e11c73f3ecaf8d07, + limb3: 0xd587218a1496f9351f01e73 }, r0a1: u384 { - limb0: 0x2b8f5ad0a415c392f5e6e768, - limb1: 0xb33c6977a490dbcb2c3e8d, - limb2: 0x4df4a8b762fcaabefce9ef3e, - limb3: 0x132e6ca9d258ecfa4934d0a2 + limb0: 0xbc9127de7d6cf406424d7f15, + limb1: 0x8168235c896874ad54d9512, + limb2: 0xdcf79d8a1a168ae1c6dfa2e4, + limb3: 0xf95426d8e89954dee065f67 }, r1a0: u384 { - limb0: 0x25f85be87413eeea6f8e88a5, - limb1: 0xdfe7eafa721731abdae0726e, - limb2: 0xf1e95209f846413f32a4dad, - limb3: 0xd33e78ffa227c4b73c683e9 + limb0: 0x229ab89c13125cc2bf25a72d, + limb1: 0xd5a7df3aaaa0c0353dcac5a7, + limb2: 0x7c94527fabc77777ff2464ab, + limb3: 0x110918e757ed869ea437e672 }, r1a1: u384 { - limb0: 0xf3ca2bcf2a908c45b82091d4, - limb1: 0x8ad71a3e5b5e1d8a6eccba40, - limb2: 0xe0027966cb9e071c869e656a, - limb3: 0x4b1e8a5093716129828ed53 + limb0: 0xe982d22571f2f17aa68f712c, + limb1: 0xa48a9b75c7c89bfab5f5d1eb, + limb2: 0x1b89a01e72668b0a30e747fb, + limb3: 0xaa126ea871c3e3ca7d0b445 } }, G2Line { r0a0: u384 { - limb0: 0x7391d401309179095af0602, - limb1: 0xf430ae91627f50ffc82a10c2, - limb2: 0x164c09f259569799d2f4bb62, - limb3: 0xf2ed89fb8aa308114efefb3 + limb0: 0x8856fcd611eaccb5398098b3, + limb1: 0xf99e4037ab06eee76202c0a7, + limb2: 0x661b47fbe6e707a1da016abb, + limb3: 0x14d41350bc68e30131fda152 }, r0a1: u384 { - limb0: 0x32a9aa52b51488235f3b6470, - limb1: 0x805af0edf490bc4f2b86ea1f, - limb2: 0x33de25930d9b74209acdb261, - limb3: 0x113ce4de9d42a3d240bc611d + limb0: 0xa330e089de7e62d03d0d8381, + limb1: 0xb89bc0fa83c738dbed74992b, + limb2: 0x76e01692ebe0ab4a7bbc1cdf, + limb3: 0x119ff3df49b55e97212b9137 }, r1a0: u384 { - limb0: 0x6ee4a2aa7cf41147ad0cdd5c, - limb1: 0xb308333d2a7a20ba28bfdd8f, - limb2: 0x122e1302337bd376fc804b41, - limb3: 0x95360ce9f461784cc6535fb + limb0: 0x17f35432949ee63be1b62fb4, + limb1: 0x558e84d6438f3f13cb52798, + limb2: 0x49ae9bb91dbd154524d0b491, + limb3: 0xa4ecb322f18755a2d7de6cb }, r1a1: u384 { - limb0: 0x1a3f656e3aaa2fc61c8398f6, - limb1: 0xeb7ea65bda028dd6eb99fe69, - limb2: 0xb182521e1d248c9f1c0fd9a0, - limb3: 0x176aa96884d7e8cbedaa6ff0 + limb0: 0x16493c6765e497627871029a, + limb1: 0x31a7d00a47e2cdb224ef5050, + limb2: 0x140290a6f2fa5cb13477f571, + limb3: 0x1846bb57be1afd1089f8faa2 } }, G2Line { r0a0: u384 { - limb0: 0x7391d401309179095af0602, - limb1: 0xf430ae91627f50ffc82a10c2, - limb2: 0x164c09f259569799d2f4bb62, - limb3: 0xf2ed89fb8aa308114efefb3 + limb0: 0x8856fcd611eaccb5398098b3, + limb1: 0xf99e4037ab06eee76202c0a7, + limb2: 0x661b47fbe6e707a1da016abb, + limb3: 0x14d41350bc68e30131fda152 }, r0a1: u384 { - limb0: 0x32a9aa52b51488235f3b6470, - limb1: 0x805af0edf490bc4f2b86ea1f, - limb2: 0x33de25930d9b74209acdb261, - limb3: 0x113ce4de9d42a3d240bc611d + limb0: 0xa330e089de7e62d03d0d8381, + limb1: 0xb89bc0fa83c738dbed74992b, + limb2: 0x76e01692ebe0ab4a7bbc1cdf, + limb3: 0x119ff3df49b55e97212b9137 }, r1a0: u384 { - limb0: 0x6ee4a2aa7cf41147ad0cdd5c, - limb1: 0xb308333d2a7a20ba28bfdd8f, - limb2: 0x122e1302337bd376fc804b41, - limb3: 0x95360ce9f461784cc6535fb + limb0: 0x17f35432949ee63be1b62fb4, + limb1: 0x558e84d6438f3f13cb52798, + limb2: 0x49ae9bb91dbd154524d0b491, + limb3: 0xa4ecb322f18755a2d7de6cb }, r1a1: u384 { - limb0: 0x1a3f656e3aaa2fc61c8398f6, - limb1: 0xeb7ea65bda028dd6eb99fe69, - limb2: 0xb182521e1d248c9f1c0fd9a0, - limb3: 0x176aa96884d7e8cbedaa6ff0 + limb0: 0x16493c6765e497627871029a, + limb1: 0x31a7d00a47e2cdb224ef5050, + limb2: 0x140290a6f2fa5cb13477f571, + limb3: 0x1846bb57be1afd1089f8faa2 } }, G2Line { r0a0: u384 { - limb0: 0x725e80175e124f66580c8158, - limb1: 0xebcfab9fc7215af9f1180574, - limb2: 0x659c20bde1537de211e13af, - limb3: 0x470115fc427cf37b2a14f5d + limb0: 0xcab2483e7d8dd3fc04231f3e, + limb1: 0x6e798d52173fbcf7011727cf, + limb2: 0x3aa288e6664238899e96388, + limb3: 0xbed7f1cb0f29dbd779eb4db }, r0a1: u384 { - limb0: 0x64996451f0586c2b1b1e1de2, - limb1: 0x681c59a51f51300ee10ecdeb, - limb2: 0x83b959731105dff9da7b8699, - limb3: 0xcce6d66237d397734f4b71c + limb0: 0xda17dc08cb341a88d345029c, + limb1: 0xca9a84bc1b03f8ae6f50eb29, + limb2: 0xfab0923470c6c01cd53037f7, + limb3: 0x11b814eb656959f8bcd55260 }, r1a0: u384 { - limb0: 0x5cccf42ae431f0424258ccdf, - limb1: 0xb56476b4eedfdae92b13ca2a, - limb2: 0xd19d5715bc8c542972e49c53, - limb3: 0xd326b19018e0e0e3bade7d3 + limb0: 0x2f5c03f8edc8ef9851eca211, + limb1: 0xb8f62bffa8430def4963177c, + limb2: 0x285721fd3cb9239504693349, + limb3: 0x19697adae2f920497006cf60 }, r1a1: u384 { - limb0: 0x98fb37324459995611a20a45, - limb1: 0x88b43e590551f4a54c64dc99, - limb2: 0x5599623f9c5f8eef327820d7, - limb3: 0x2129a528b8e5d9ab92687af + limb0: 0x8ba36c1c6a84f64c58779c66, + limb1: 0xd8d040c366aee8415c83abc5, + limb2: 0x80bdb025a81cc5fca162bc55, + limb3: 0x132455e68b47f0c80c186c5e } }, G2Line { r0a0: u384 { - limb0: 0x725e80175e124f66580c8158, - limb1: 0xebcfab9fc7215af9f1180574, - limb2: 0x659c20bde1537de211e13af, - limb3: 0x470115fc427cf37b2a14f5d + limb0: 0xcab2483e7d8dd3fc04231f3e, + limb1: 0x6e798d52173fbcf7011727cf, + limb2: 0x3aa288e6664238899e96388, + limb3: 0xbed7f1cb0f29dbd779eb4db }, r0a1: u384 { - limb0: 0x64996451f0586c2b1b1e1de2, - limb1: 0x681c59a51f51300ee10ecdeb, - limb2: 0x83b959731105dff9da7b8699, - limb3: 0xcce6d66237d397734f4b71c + limb0: 0xda17dc08cb341a88d345029c, + limb1: 0xca9a84bc1b03f8ae6f50eb29, + limb2: 0xfab0923470c6c01cd53037f7, + limb3: 0x11b814eb656959f8bcd55260 }, r1a0: u384 { - limb0: 0x5cccf42ae431f0424258ccdf, - limb1: 0xb56476b4eedfdae92b13ca2a, - limb2: 0xd19d5715bc8c542972e49c53, - limb3: 0xd326b19018e0e0e3bade7d3 + limb0: 0x2f5c03f8edc8ef9851eca211, + limb1: 0xb8f62bffa8430def4963177c, + limb2: 0x285721fd3cb9239504693349, + limb3: 0x19697adae2f920497006cf60 }, r1a1: u384 { - limb0: 0x98fb37324459995611a20a45, - limb1: 0x88b43e590551f4a54c64dc99, - limb2: 0x5599623f9c5f8eef327820d7, - limb3: 0x2129a528b8e5d9ab92687af + limb0: 0x8ba36c1c6a84f64c58779c66, + limb1: 0xd8d040c366aee8415c83abc5, + limb2: 0x80bdb025a81cc5fca162bc55, + limb3: 0x132455e68b47f0c80c186c5e } }, G2Line { r0a0: u384 { - limb0: 0xe6c9a756e5f0b7e8bb95bd83, - limb1: 0x818d9059f64ad3dbf5af83bd, - limb2: 0xfc6a29c09b4417a86f03bdeb, - limb3: 0xf32fe39b98204022ead8967 + limb0: 0xc339cdf7e4e5e3a44dbaacae, + limb1: 0xf7b3d92dcf1e19226487efff, + limb2: 0xeebbb6f12ddfff580bdaf23e, + limb3: 0x885c7a835866bb3f2618531 }, r0a1: u384 { - limb0: 0xaf22758d0ecc05b3e6ec853e, - limb1: 0x65f81d1a8f72bb24f5ad6c92, - limb2: 0x1a820d58eb81eefce4c27b81, - limb3: 0x169112c5ace69cd09e4f5e8d + limb0: 0xfd8a9b43a96749b067da9ea7, + limb1: 0x1a45ef3bc3a624fa6a875a42, + limb2: 0x871092b7aae86db98a4839e3, + limb3: 0x42fdd240a03c256c99338a4 }, r1a0: u384 { - limb0: 0xe395e55357e5ca939a83df52, - limb1: 0x44279925ef82b8759b3fcf7b, - limb2: 0x9ec6f9911bc974e037be9d3d, - limb3: 0x9c5bc98475488f6599ff3c5 + limb0: 0x34fac230b4cd059f4d142d09, + limb1: 0x578becad930850ec442c0499, + limb2: 0xdb467db9f5beceb2b12f240b, + limb3: 0x8715bbc83d753dac30ee064 }, r1a1: u384 { - limb0: 0x6237f07c10794d934f2386bb, - limb1: 0xb0dc69e5e77c5512f8f58be8, - limb2: 0x7f48b6a679ce16c7908e19ad, - limb3: 0x144767a7a50ca2d7337f429c + limb0: 0xbe4bacb87a4297599bed4a75, + limb1: 0x15bab163a1bec103441823b0, + limb2: 0xf6b498ea628259382f611e1, + limb3: 0x25cec6e6bc8e2b0ac8eaa18 } }, G2Line { r0a0: u384 { - limb0: 0xe6c9a756e5f0b7e8bb95bd83, - limb1: 0x818d9059f64ad3dbf5af83bd, - limb2: 0xfc6a29c09b4417a86f03bdeb, - limb3: 0xf32fe39b98204022ead8967 + limb0: 0xc339cdf7e4e5e3a44dbaacae, + limb1: 0xf7b3d92dcf1e19226487efff, + limb2: 0xeebbb6f12ddfff580bdaf23e, + limb3: 0x885c7a835866bb3f2618531 }, r0a1: u384 { - limb0: 0xaf22758d0ecc05b3e6ec853e, - limb1: 0x65f81d1a8f72bb24f5ad6c92, - limb2: 0x1a820d58eb81eefce4c27b81, - limb3: 0x169112c5ace69cd09e4f5e8d + limb0: 0xfd8a9b43a96749b067da9ea7, + limb1: 0x1a45ef3bc3a624fa6a875a42, + limb2: 0x871092b7aae86db98a4839e3, + limb3: 0x42fdd240a03c256c99338a4 }, r1a0: u384 { - limb0: 0xe395e55357e5ca939a83df52, - limb1: 0x44279925ef82b8759b3fcf7b, - limb2: 0x9ec6f9911bc974e037be9d3d, - limb3: 0x9c5bc98475488f6599ff3c5 + limb0: 0x34fac230b4cd059f4d142d09, + limb1: 0x578becad930850ec442c0499, + limb2: 0xdb467db9f5beceb2b12f240b, + limb3: 0x8715bbc83d753dac30ee064 }, r1a1: u384 { - limb0: 0x6237f07c10794d934f2386bb, - limb1: 0xb0dc69e5e77c5512f8f58be8, - limb2: 0x7f48b6a679ce16c7908e19ad, - limb3: 0x144767a7a50ca2d7337f429c + limb0: 0xbe4bacb87a4297599bed4a75, + limb1: 0x15bab163a1bec103441823b0, + limb2: 0xf6b498ea628259382f611e1, + limb3: 0x25cec6e6bc8e2b0ac8eaa18 } }, G2Line { r0a0: u384 { - limb0: 0xc84b8e071d1289bb1d26ffc8, - limb1: 0x6a6a50b8ddfbd17e9b81c4ef, - limb2: 0x30bf995def8b4a2ab66d40f8, - limb3: 0xd0df3f3166e3899dec73676 + limb0: 0x62ac6bd3e467b6012ed51077, + limb1: 0xba3ff2d1e2f398b07962d460, + limb2: 0x5f87a3069c6c9317d90fe448, + limb3: 0x17828eef82575ad624b7eb8 }, r0a1: u384 { - limb0: 0xede9fce8316040ac15885a81, - limb1: 0x7a480eb6e86ac375bc5d6bb0, - limb2: 0xc48c6ae2b1cbf7d841750cc3, - limb3: 0x8cd543f591eb6b5ea842d58 + limb0: 0x60f822b2434ac1915436b6a2, + limb1: 0xc280dfe322af22994c4f583a, + limb2: 0x2eb22edf843a31f56924e264, + limb3: 0xaa3dff436448f24891ce347 }, r1a0: u384 { - limb0: 0x8234459f11f595a6848452f2, - limb1: 0xaf4e0b5d1c73addfd8dadad4, - limb2: 0x1c87161102b4e286e75bab6d, - limb3: 0xb399e38b6304d0d0b37a20 + limb0: 0xc957369365d1f757dc7e1b60, + limb1: 0xf8fe29b2dfecfb3445695b50, + limb2: 0x93b4be33129e250ba6e9d713, + limb3: 0x54e2b0392e3280c73e25db7 }, r1a1: u384 { - limb0: 0x95e39c57e34bb8e5fa948ac3, - limb1: 0x202f0931eda59c9ee03de01d, - limb2: 0xfe61813f7d2891a7faf5ac24, - limb3: 0xf08dcd7e1663eabc266bc2a + limb0: 0x147632c4b781c87049f2585a, + limb1: 0xb96a476595a9eec08470167a, + limb2: 0xa692b500ee1328d089d355c9, + limb3: 0xe3b9ccbcbf1842377715224 } }, G2Line { r0a0: u384 { - limb0: 0xc84b8e071d1289bb1d26ffc8, - limb1: 0x6a6a50b8ddfbd17e9b81c4ef, - limb2: 0x30bf995def8b4a2ab66d40f8, - limb3: 0xd0df3f3166e3899dec73676 + limb0: 0x62ac6bd3e467b6012ed51077, + limb1: 0xba3ff2d1e2f398b07962d460, + limb2: 0x5f87a3069c6c9317d90fe448, + limb3: 0x17828eef82575ad624b7eb8 }, r0a1: u384 { - limb0: 0xede9fce8316040ac15885a81, - limb1: 0x7a480eb6e86ac375bc5d6bb0, - limb2: 0xc48c6ae2b1cbf7d841750cc3, - limb3: 0x8cd543f591eb6b5ea842d58 + limb0: 0x60f822b2434ac1915436b6a2, + limb1: 0xc280dfe322af22994c4f583a, + limb2: 0x2eb22edf843a31f56924e264, + limb3: 0xaa3dff436448f24891ce347 }, r1a0: u384 { - limb0: 0x8234459f11f595a6848452f2, - limb1: 0xaf4e0b5d1c73addfd8dadad4, - limb2: 0x1c87161102b4e286e75bab6d, - limb3: 0xb399e38b6304d0d0b37a20 + limb0: 0xc957369365d1f757dc7e1b60, + limb1: 0xf8fe29b2dfecfb3445695b50, + limb2: 0x93b4be33129e250ba6e9d713, + limb3: 0x54e2b0392e3280c73e25db7 }, r1a1: u384 { - limb0: 0x95e39c57e34bb8e5fa948ac3, - limb1: 0x202f0931eda59c9ee03de01d, - limb2: 0xfe61813f7d2891a7faf5ac24, - limb3: 0xf08dcd7e1663eabc266bc2a + limb0: 0x147632c4b781c87049f2585a, + limb1: 0xb96a476595a9eec08470167a, + limb2: 0xa692b500ee1328d089d355c9, + limb3: 0xe3b9ccbcbf1842377715224 } }, G2Line { r0a0: u384 { - limb0: 0x3997dac9869fa682cf8cac68, - limb1: 0xb3b8c15e4e305fbb03fd4da9, - limb2: 0xe76a8d06f698f41df8b1d364, - limb3: 0x3638061d8e02a554433e50d + limb0: 0x64d16d41b66a102c9b553ea3, + limb1: 0x295cac58ddcb86c19d5085a6, + limb2: 0x7e2cd8cb5856d2d8e7eed046, + limb3: 0x15dbe6d70fdbc55ae84afa69 }, r0a1: u384 { - limb0: 0x35b0ecd02b3d5de24aa1a852, - limb1: 0x246f630c7d1f8945c4226bbc, - limb2: 0x4b7f242a8c19456927487d7f, - limb3: 0x8807674f9b0a7950826d8fb + limb0: 0x54565b8fd91f675d7f4459f2, + limb1: 0x272f73f709855d58fb90690e, + limb2: 0x55e2996b05c2d49f2a82120c, + limb3: 0xec904bbad282fc6edb48286 }, r1a0: u384 { - limb0: 0xd5b40f39a3cd272f7515474e, - limb1: 0x9289fb426595dc872da10518, - limb2: 0xefe3d4f6dea5ac12a784f712, - limb3: 0x12c44352851b38a030d442a4 + limb0: 0xb8bb51ac0ae45391324c34ee, + limb1: 0x1eed107f37cd128849f36954, + limb2: 0xee5c6663ab2ffe95b57e90a0, + limb3: 0x10059eac9c018522626ea231 }, r1a1: u384 { - limb0: 0xef56bf4acb74a8cb199d2476, - limb1: 0xc5eb5a63097c5936f7f8abcf, - limb2: 0x1d3cd4eb857924da3ba58242, - limb3: 0xe62f8c5d46d3f74cb1afea8 + limb0: 0xe2ccd1c7748f1dad4aa6574, + limb1: 0x3f7f644aea9f5ef5c21d6b1d, + limb2: 0x78437a492823073bab9f2f24, + limb3: 0x154ca2c1025881bb42f419c9 } }, G2Line { r0a0: u384 { - limb0: 0x3997dac9869fa682cf8cac68, - limb1: 0xb3b8c15e4e305fbb03fd4da9, - limb2: 0xe76a8d06f698f41df8b1d364, - limb3: 0x3638061d8e02a554433e50d + limb0: 0x64d16d41b66a102c9b553ea3, + limb1: 0x295cac58ddcb86c19d5085a6, + limb2: 0x7e2cd8cb5856d2d8e7eed046, + limb3: 0x15dbe6d70fdbc55ae84afa69 }, r0a1: u384 { - limb0: 0x35b0ecd02b3d5de24aa1a852, - limb1: 0x246f630c7d1f8945c4226bbc, - limb2: 0x4b7f242a8c19456927487d7f, - limb3: 0x8807674f9b0a7950826d8fb + limb0: 0x54565b8fd91f675d7f4459f2, + limb1: 0x272f73f709855d58fb90690e, + limb2: 0x55e2996b05c2d49f2a82120c, + limb3: 0xec904bbad282fc6edb48286 }, r1a0: u384 { - limb0: 0xd5b40f39a3cd272f7515474e, - limb1: 0x9289fb426595dc872da10518, - limb2: 0xefe3d4f6dea5ac12a784f712, - limb3: 0x12c44352851b38a030d442a4 + limb0: 0xb8bb51ac0ae45391324c34ee, + limb1: 0x1eed107f37cd128849f36954, + limb2: 0xee5c6663ab2ffe95b57e90a0, + limb3: 0x10059eac9c018522626ea231 }, r1a1: u384 { - limb0: 0xef56bf4acb74a8cb199d2476, - limb1: 0xc5eb5a63097c5936f7f8abcf, - limb2: 0x1d3cd4eb857924da3ba58242, - limb3: 0xe62f8c5d46d3f74cb1afea8 + limb0: 0xe2ccd1c7748f1dad4aa6574, + limb1: 0x3f7f644aea9f5ef5c21d6b1d, + limb2: 0x78437a492823073bab9f2f24, + limb3: 0x154ca2c1025881bb42f419c9 } }, G2Line { r0a0: u384 { - limb0: 0x8f4736ddbc53ea86fb4a33ab, - limb1: 0xa77071ea3d204a09168b1149, - limb2: 0xb529745924e4085315f0fc80, - limb3: 0xa788eacd8ab3bc3758b9d20 + limb0: 0xa148fed9dcfdb8471e37e2cf, + limb1: 0x33498344be66beb21dacb6cc, + limb2: 0xdb2dab4272dd7e03d560ec7c, + limb3: 0x11377cdcdb4dce503806d536 }, r0a1: u384 { - limb0: 0xbd2b777db8cae5b7bb3ca659, - limb1: 0x387028e0444ea884faa22f6b, - limb2: 0x7b2720be4996cc1e2fabdce, - limb3: 0x4a413746c74531bf13b5683 + limb0: 0x4bdd4af2794e5ba563dea99d, + limb1: 0xb686ccbe1211bc916075f1f0, + limb2: 0x8275da72cc81642b581cd3c, + limb3: 0xdc4f2a881416ee0d2a76b19 }, r1a0: u384 { - limb0: 0x65baf58ac08624dcc890a653, - limb1: 0xdb52e51122e6312bd0d51ee9, - limb2: 0xa19371ef7df62c16e2c6a44, - limb3: 0xdb13aada7329027aed87fe3 + limb0: 0xd911cc786bf78185445a5728, + limb1: 0xc4fc6828294ec360441828a0, + limb2: 0x5710cbd08f34cb4b1d311efd, + limb3: 0x10911287680bf76d68b048fa }, r1a1: u384 { - limb0: 0xac3c40fe882bac436042f242, - limb1: 0xd00f8613c6b5cdd5c2e10353, - limb2: 0x246ca8b5993ec1336bbf76e6, - limb3: 0x1231982fe5590220e70973f8 + limb0: 0xa06d07ee3f35ed581feb7120, + limb1: 0x7ec15bc93962ff96203e99ef, + limb2: 0x6459955c3f1acf888a31b71c, + limb3: 0x163cfbb725456b1e3f8a2a52 } }, G2Line { r0a0: u384 { - limb0: 0x8f4736ddbc53ea86fb4a33ab, - limb1: 0xa77071ea3d204a09168b1149, - limb2: 0xb529745924e4085315f0fc80, - limb3: 0xa788eacd8ab3bc3758b9d20 + limb0: 0xa148fed9dcfdb8471e37e2cf, + limb1: 0x33498344be66beb21dacb6cc, + limb2: 0xdb2dab4272dd7e03d560ec7c, + limb3: 0x11377cdcdb4dce503806d536 }, r0a1: u384 { - limb0: 0xbd2b777db8cae5b7bb3ca659, - limb1: 0x387028e0444ea884faa22f6b, - limb2: 0x7b2720be4996cc1e2fabdce, - limb3: 0x4a413746c74531bf13b5683 + limb0: 0x4bdd4af2794e5ba563dea99d, + limb1: 0xb686ccbe1211bc916075f1f0, + limb2: 0x8275da72cc81642b581cd3c, + limb3: 0xdc4f2a881416ee0d2a76b19 }, r1a0: u384 { - limb0: 0x65baf58ac08624dcc890a653, - limb1: 0xdb52e51122e6312bd0d51ee9, - limb2: 0xa19371ef7df62c16e2c6a44, - limb3: 0xdb13aada7329027aed87fe3 + limb0: 0xd911cc786bf78185445a5728, + limb1: 0xc4fc6828294ec360441828a0, + limb2: 0x5710cbd08f34cb4b1d311efd, + limb3: 0x10911287680bf76d68b048fa }, r1a1: u384 { - limb0: 0xac3c40fe882bac436042f242, - limb1: 0xd00f8613c6b5cdd5c2e10353, - limb2: 0x246ca8b5993ec1336bbf76e6, - limb3: 0x1231982fe5590220e70973f8 + limb0: 0xa06d07ee3f35ed581feb7120, + limb1: 0x7ec15bc93962ff96203e99ef, + limb2: 0x6459955c3f1acf888a31b71c, + limb3: 0x163cfbb725456b1e3f8a2a52 } }, G2Line { r0a0: u384 { - limb0: 0xe8b57696be7cd31b5bb15bb1, - limb1: 0x5f2c4a4b51ac55b731308604, - limb2: 0x62c2da419f44326490ac85a7, - limb3: 0xb834038b70303046b3c8f61 + limb0: 0xe681d22feda4a7f061e8f6b3, + limb1: 0xad9da9a0f9e44384ff71b25a, + limb2: 0x25b7987299c14b92935df59b, + limb3: 0xe18539ac218e8292f772d49 }, r0a1: u384 { - limb0: 0x7fc7f71b56a7573693a2755c, - limb1: 0x12423518be844c7204e78af2, - limb2: 0xea6535873c35eaedbd32bf1c, - limb3: 0x304b5b7a6e6d582c9b0b043 + limb0: 0xbbab4a0c7d4380e59aaf4a14, + limb1: 0x92300d61ef168a3b7f078369, + limb2: 0x88740486a05e8355a2f396a6, + limb3: 0x1312ea288e7ab2c682515d55 }, r1a0: u384 { - limb0: 0xfdd23b97b48200f506c87429, - limb1: 0x91a8e7d4f7f2c26a03d03ebb, - limb2: 0xef66ef1ee7b71bce099a5ee5, - limb3: 0x7ada233b4678b34416ae72 + limb0: 0x5cf20f4d699d245a06e981a4, + limb1: 0x4ada2dc6c16584036497194a, + limb2: 0x69d2a6a56d565893c5dc5cee, + limb3: 0xe83ade7bf2df02d06d669f9 }, r1a1: u384 { - limb0: 0xdd8cea6f4d48a3fe27eb64d3, - limb1: 0x9ab4313c65aa6aab5fc6ab07, - limb2: 0xcfcb0b579579083c2febdecc, - limb3: 0x15c7c31c29ac46efaaa05f42 + limb0: 0xdde1fccec9bcee2c65bb7113, + limb1: 0xbd3a4889309b7b362a350027, + limb2: 0xab1aabdde55d523dd61bd16a, + limb3: 0x8e64666e47f311366b84b22 } }, G2Line { r0a0: u384 { - limb0: 0xe8b57696be7cd31b5bb15bb1, - limb1: 0x5f2c4a4b51ac55b731308604, - limb2: 0x62c2da419f44326490ac85a7, - limb3: 0xb834038b70303046b3c8f61 + limb0: 0xe681d22feda4a7f061e8f6b3, + limb1: 0xad9da9a0f9e44384ff71b25a, + limb2: 0x25b7987299c14b92935df59b, + limb3: 0xe18539ac218e8292f772d49 }, r0a1: u384 { - limb0: 0x7fc7f71b56a7573693a2755c, - limb1: 0x12423518be844c7204e78af2, - limb2: 0xea6535873c35eaedbd32bf1c, - limb3: 0x304b5b7a6e6d582c9b0b043 + limb0: 0xbbab4a0c7d4380e59aaf4a14, + limb1: 0x92300d61ef168a3b7f078369, + limb2: 0x88740486a05e8355a2f396a6, + limb3: 0x1312ea288e7ab2c682515d55 }, r1a0: u384 { - limb0: 0xfdd23b97b48200f506c87429, - limb1: 0x91a8e7d4f7f2c26a03d03ebb, - limb2: 0xef66ef1ee7b71bce099a5ee5, - limb3: 0x7ada233b4678b34416ae72 + limb0: 0x5cf20f4d699d245a06e981a4, + limb1: 0x4ada2dc6c16584036497194a, + limb2: 0x69d2a6a56d565893c5dc5cee, + limb3: 0xe83ade7bf2df02d06d669f9 }, r1a1: u384 { - limb0: 0xdd8cea6f4d48a3fe27eb64d3, - limb1: 0x9ab4313c65aa6aab5fc6ab07, - limb2: 0xcfcb0b579579083c2febdecc, - limb3: 0x15c7c31c29ac46efaaa05f42 + limb0: 0xdde1fccec9bcee2c65bb7113, + limb1: 0xbd3a4889309b7b362a350027, + limb2: 0xab1aabdde55d523dd61bd16a, + limb3: 0x8e64666e47f311366b84b22 } }, G2Line { r0a0: u384 { - limb0: 0x24a77e1489fad5730471a72e, - limb1: 0xe0bbbbcdfb958c65c46af275, - limb2: 0x3d5d8a8a28fedc0bff8115c4, - limb3: 0x189fc09c46f092e010389d35 + limb0: 0xf9b090fdb3bf0f5be038a031, + limb1: 0xec03d47d7f362f2f46b88120, + limb2: 0xcf4ea7dfdbf684e0c9c3c73, + limb3: 0x11dd63055f71654adf72fdf4 }, r0a1: u384 { - limb0: 0x7e3b41730259c33bcae65017, - limb1: 0x7ab8c9615ac26fde5a249089, - limb2: 0x2fd8f6761db88fd4eb061b56, - limb3: 0xee903f7eeb2c626f4523110 + limb0: 0x9eb8ba348aa55966b2360dbb, + limb1: 0x48dd21f65324b91c93beb3f, + limb2: 0x79f6c38f8f7656836cb1317d, + limb3: 0x108bdc14fca7e6d3304b3f3b }, r1a0: u384 { - limb0: 0xfac0bd0c34c26ecce11f82ff, - limb1: 0xff05e8ee0e5916883116b6fb, - limb2: 0xf0673bf7f4ca0d81e6df5306, - limb3: 0xb0481c8a221eb470c4e7be2 + limb0: 0xbf74876b9993b6ea79d756e1, + limb1: 0xd5e5d391946b6572594a23d1, + limb2: 0xf16cf2d26319a001b024184f, + limb3: 0xe47f5f42a8c539bf4c4aabc }, r1a1: u384 { - limb0: 0x680d8863105a1265848d7f01, - limb1: 0x24fd46ab266de7e9d594c4a8, - limb2: 0xeca71f2b0fd19ea9b7658e89, - limb3: 0x19122850ada03c658bb0da9d + limb0: 0xd16c2d990821fee62aea0c7, + limb1: 0x9fcd17773a83125f41a6e06e, + limb2: 0x97ed32a632508ccadf843b41, + limb3: 0xb98f51a6d9ef1cf288747c5 } }, G2Line { r0a0: u384 { - limb0: 0x24a77e1489fad5730471a72e, - limb1: 0xe0bbbbcdfb958c65c46af275, - limb2: 0x3d5d8a8a28fedc0bff8115c4, - limb3: 0x189fc09c46f092e010389d35 + limb0: 0xf9b090fdb3bf0f5be038a031, + limb1: 0xec03d47d7f362f2f46b88120, + limb2: 0xcf4ea7dfdbf684e0c9c3c73, + limb3: 0x11dd63055f71654adf72fdf4 }, r0a1: u384 { - limb0: 0x7e3b41730259c33bcae65017, - limb1: 0x7ab8c9615ac26fde5a249089, - limb2: 0x2fd8f6761db88fd4eb061b56, - limb3: 0xee903f7eeb2c626f4523110 + limb0: 0x9eb8ba348aa55966b2360dbb, + limb1: 0x48dd21f65324b91c93beb3f, + limb2: 0x79f6c38f8f7656836cb1317d, + limb3: 0x108bdc14fca7e6d3304b3f3b }, r1a0: u384 { - limb0: 0xfac0bd0c34c26ecce11f82ff, - limb1: 0xff05e8ee0e5916883116b6fb, - limb2: 0xf0673bf7f4ca0d81e6df5306, - limb3: 0xb0481c8a221eb470c4e7be2 + limb0: 0xbf74876b9993b6ea79d756e1, + limb1: 0xd5e5d391946b6572594a23d1, + limb2: 0xf16cf2d26319a001b024184f, + limb3: 0xe47f5f42a8c539bf4c4aabc }, r1a1: u384 { - limb0: 0x680d8863105a1265848d7f01, - limb1: 0x24fd46ab266de7e9d594c4a8, - limb2: 0xeca71f2b0fd19ea9b7658e89, - limb3: 0x19122850ada03c658bb0da9d + limb0: 0xd16c2d990821fee62aea0c7, + limb1: 0x9fcd17773a83125f41a6e06e, + limb2: 0x97ed32a632508ccadf843b41, + limb3: 0xb98f51a6d9ef1cf288747c5 } }, G2Line { r0a0: u384 { - limb0: 0x709b76597cd8404a15eec6c6, - limb1: 0x1d5b71bc4f795d4861f8f138, - limb2: 0x4063a45c4c9376157bb01f24, - limb3: 0x1fce440ea5a43242c14fc54 + limb0: 0xc04588c9f09fa499106bc8c9, + limb1: 0x7a64ff03080c6dd7d7e9eac2, + limb2: 0xf4f302730238d347b951a1f3, + limb3: 0xbc95c23d2aa850d9637039c }, r0a1: u384 { - limb0: 0x76e8757e869731e827073532, - limb1: 0xbe78989350b5ddbcdd8e7bbe, - limb2: 0xb642c62a17cdcb59dc7d61d, - limb3: 0x18afb76ac0318911c26eb71d + limb0: 0x982410511881122d237bcf90, + limb1: 0x69908a3359202333b8494da3, + limb2: 0xd8845b29dfc85657a12e1e6b, + limb3: 0x861225fbc10126c68b47fbb }, r1a0: u384 { - limb0: 0x92afca859f7b3c1a66483643, - limb1: 0xbf8b9274d1c04e70279e7fd7, - limb2: 0x1e6b2b5248ab993a1e2e06dc, - limb3: 0x4bab13854ea58d96716695b + limb0: 0x307f66feb496a692288ee79c, + limb1: 0xea2a865ce7b1a83eb71f516e, + limb2: 0x3acfdeb605537b1db464d091, + limb3: 0x199bcae152e692669ca36f70 }, r1a1: u384 { - limb0: 0xaca87b387456dbf4c8a8f76c, - limb1: 0xac5e25b4a91b793a8ef27cb6, - limb2: 0x5c5d8c7d0b2fe652e876679, - limb3: 0x194dd127d4331d94bb763d5c + limb0: 0x67ed8bd9d8b3671bc52dd01a, + limb1: 0xa128cb4f4b3fb9f78826fa5c, + limb2: 0xdc60b2aeb8989c43359f9ee4, + limb3: 0x154183d7ad332d63192fd716 } }, G2Line { r0a0: u384 { - limb0: 0x748789dff8d0e8426f1b1d10, - limb1: 0xe2c56c4da65cf9a689375e67, - limb2: 0xe966f88c77263ec9c0aead6e, - limb3: 0x1d2a89b90f6d5a462e5e05 + limb0: 0x4c1b7c692bcb90fc6da4682a, + limb1: 0xdee0840ffe02e6822d2fbc52, + limb2: 0x76f9d61c6685c1019409e2e6, + limb3: 0x131589c0f041ca383a010a65 }, r0a1: u384 { - limb0: 0x68e9d3516ca34c342176eb59, - limb1: 0x4c660cc3fa9539f9b6b2b713, - limb2: 0x162588e80b9d6a19b2fcfe47, - limb3: 0x2e42574314b98555f22689d + limb0: 0x5f44efbb5a56642b645b251d, + limb1: 0xcc0b6a435e33cf7e66f796ef, + limb2: 0x2afead4ba783ddd084a2de2, + limb3: 0x14fb18cfb114fe90def3b975 }, r1a0: u384 { - limb0: 0xf3b9908965b04952b75e13a0, - limb1: 0x2bfda9377be9ce7ae0b560f3, - limb2: 0x3eb74bef0646ee2ed1ea939e, - limb3: 0x15f79e27820b2e1ad33f4073 + limb0: 0x6738569610d2c81b6648b199, + limb1: 0x3d70fbe299588075a3c0cd65, + limb2: 0x9fb99753b8fe3603ef293640, + limb3: 0xb0c1cb2bfa9049055dc042a }, r1a1: u384 { - limb0: 0x1ab11908ec8678c9275642f6, - limb1: 0xf8a973c80c8108c03ebf8fcf, - limb2: 0xd56857adec8dd6122620dd87, - limb3: 0xf68b5ac044e2315875e77f3 + limb0: 0xcf4196c9021ca7f093cfb891, + limb1: 0xdc602f37532b7f244f265bb4, + limb2: 0x2eda24acdd8ac91dba31011a, + limb3: 0x831f465b19f5e211770a330 } }, G2Line { r0a0: u384 { - limb0: 0x709b76597cd8404a15eec6c6, - limb1: 0x1d5b71bc4f795d4861f8f138, - limb2: 0x4063a45c4c9376157bb01f24, - limb3: 0x1fce440ea5a43242c14fc54 + limb0: 0xc04588c9f09fa499106bc8c9, + limb1: 0x7a64ff03080c6dd7d7e9eac2, + limb2: 0xf4f302730238d347b951a1f3, + limb3: 0xbc95c23d2aa850d9637039c }, r0a1: u384 { - limb0: 0x76e8757e869731e827073532, - limb1: 0xbe78989350b5ddbcdd8e7bbe, - limb2: 0xb642c62a17cdcb59dc7d61d, - limb3: 0x18afb76ac0318911c26eb71d + limb0: 0x982410511881122d237bcf90, + limb1: 0x69908a3359202333b8494da3, + limb2: 0xd8845b29dfc85657a12e1e6b, + limb3: 0x861225fbc10126c68b47fbb }, r1a0: u384 { - limb0: 0x92afca859f7b3c1a66483643, - limb1: 0xbf8b9274d1c04e70279e7fd7, - limb2: 0x1e6b2b5248ab993a1e2e06dc, - limb3: 0x4bab13854ea58d96716695b + limb0: 0x307f66feb496a692288ee79c, + limb1: 0xea2a865ce7b1a83eb71f516e, + limb2: 0x3acfdeb605537b1db464d091, + limb3: 0x199bcae152e692669ca36f70 }, r1a1: u384 { - limb0: 0xaca87b387456dbf4c8a8f76c, - limb1: 0xac5e25b4a91b793a8ef27cb6, - limb2: 0x5c5d8c7d0b2fe652e876679, - limb3: 0x194dd127d4331d94bb763d5c + limb0: 0x67ed8bd9d8b3671bc52dd01a, + limb1: 0xa128cb4f4b3fb9f78826fa5c, + limb2: 0xdc60b2aeb8989c43359f9ee4, + limb3: 0x154183d7ad332d63192fd716 } }, G2Line { r0a0: u384 { - limb0: 0x748789dff8d0e8426f1b1d10, - limb1: 0xe2c56c4da65cf9a689375e67, - limb2: 0xe966f88c77263ec9c0aead6e, - limb3: 0x1d2a89b90f6d5a462e5e05 + limb0: 0x4c1b7c692bcb90fc6da4682a, + limb1: 0xdee0840ffe02e6822d2fbc52, + limb2: 0x76f9d61c6685c1019409e2e6, + limb3: 0x131589c0f041ca383a010a65 }, r0a1: u384 { - limb0: 0x68e9d3516ca34c342176eb59, - limb1: 0x4c660cc3fa9539f9b6b2b713, - limb2: 0x162588e80b9d6a19b2fcfe47, - limb3: 0x2e42574314b98555f22689d + limb0: 0x5f44efbb5a56642b645b251d, + limb1: 0xcc0b6a435e33cf7e66f796ef, + limb2: 0x2afead4ba783ddd084a2de2, + limb3: 0x14fb18cfb114fe90def3b975 }, r1a0: u384 { - limb0: 0xf3b9908965b04952b75e13a0, - limb1: 0x2bfda9377be9ce7ae0b560f3, - limb2: 0x3eb74bef0646ee2ed1ea939e, - limb3: 0x15f79e27820b2e1ad33f4073 + limb0: 0x6738569610d2c81b6648b199, + limb1: 0x3d70fbe299588075a3c0cd65, + limb2: 0x9fb99753b8fe3603ef293640, + limb3: 0xb0c1cb2bfa9049055dc042a }, r1a1: u384 { - limb0: 0x1ab11908ec8678c9275642f6, - limb1: 0xf8a973c80c8108c03ebf8fcf, - limb2: 0xd56857adec8dd6122620dd87, - limb3: 0xf68b5ac044e2315875e77f3 + limb0: 0xcf4196c9021ca7f093cfb891, + limb1: 0xdc602f37532b7f244f265bb4, + limb2: 0x2eda24acdd8ac91dba31011a, + limb3: 0x831f465b19f5e211770a330 } }, G2Line { r0a0: u384 { - limb0: 0xc4642e9d6d8cbb71aebe57b1, - limb1: 0xf7fff784f0c8d4e518995e4d, - limb2: 0x2baa66d73a111793d82f83e5, - limb3: 0xe50c2b5a9ecbc789ebae3b5 + limb0: 0xbead4997832000eec2d23426, + limb1: 0x70326bda198a624d79fe5b6e, + limb2: 0x34320ab5d9d57a16f9b3335d, + limb3: 0x15ed7fcb0bbd153b17bd9ab7 }, r0a1: u384 { - limb0: 0x90b59d9f7380847d5d0dc384, - limb1: 0xff4fa2c0a144a80e0fc49fad, - limb2: 0xff8845e7cad5c1775014c370, - limb3: 0x5650398cf0fed3d334d29d + limb0: 0xeef082656c66bb5b7891e0fa, + limb1: 0x5c3a8513f52f57cb1b0c7958, + limb2: 0xcd1545fd6d3fca90cca7ddbf, + limb3: 0x14a5d26055e3895cc2078189 }, r1a0: u384 { - limb0: 0xf4f8558650c8a338169ea0de, - limb1: 0x5cc55c5d8c7196872074d375, - limb2: 0xec2ebc2e24e8feeb33ea1cfa, - limb3: 0x14fd1070bdce430cba0e17c + limb0: 0x51fd450f49e14cf29994d0d8, + limb1: 0x352df17adf32a543695add5b, + limb2: 0x620770f7a8734b83419a0015, + limb3: 0x3bed8150b4306f815c54ae0 }, r1a1: u384 { - limb0: 0xab9f7814730f280ee2a02fc1, - limb1: 0xefb69eda6bb2764b09831750, - limb2: 0xe836eeda5587e7b57a8ece6e, - limb3: 0xa4d7fcf06c88516e47496fb + limb0: 0xdcda7311d4becff3df733d35, + limb1: 0x6d1b5d403a8a86fa9c0ad26b, + limb2: 0x41249656cda2d1314833048c, + limb3: 0x18fa645f04346cb55df845ec } }, G2Line { r0a0: u384 { - limb0: 0xc4642e9d6d8cbb71aebe57b1, - limb1: 0xf7fff784f0c8d4e518995e4d, - limb2: 0x2baa66d73a111793d82f83e5, - limb3: 0xe50c2b5a9ecbc789ebae3b5 + limb0: 0xbead4997832000eec2d23426, + limb1: 0x70326bda198a624d79fe5b6e, + limb2: 0x34320ab5d9d57a16f9b3335d, + limb3: 0x15ed7fcb0bbd153b17bd9ab7 }, r0a1: u384 { - limb0: 0x90b59d9f7380847d5d0dc384, - limb1: 0xff4fa2c0a144a80e0fc49fad, - limb2: 0xff8845e7cad5c1775014c370, - limb3: 0x5650398cf0fed3d334d29d + limb0: 0xeef082656c66bb5b7891e0fa, + limb1: 0x5c3a8513f52f57cb1b0c7958, + limb2: 0xcd1545fd6d3fca90cca7ddbf, + limb3: 0x14a5d26055e3895cc2078189 }, r1a0: u384 { - limb0: 0xf4f8558650c8a338169ea0de, - limb1: 0x5cc55c5d8c7196872074d375, - limb2: 0xec2ebc2e24e8feeb33ea1cfa, - limb3: 0x14fd1070bdce430cba0e17c + limb0: 0x51fd450f49e14cf29994d0d8, + limb1: 0x352df17adf32a543695add5b, + limb2: 0x620770f7a8734b83419a0015, + limb3: 0x3bed8150b4306f815c54ae0 }, r1a1: u384 { - limb0: 0xab9f7814730f280ee2a02fc1, - limb1: 0xefb69eda6bb2764b09831750, - limb2: 0xe836eeda5587e7b57a8ece6e, - limb3: 0xa4d7fcf06c88516e47496fb + limb0: 0xdcda7311d4becff3df733d35, + limb1: 0x6d1b5d403a8a86fa9c0ad26b, + limb2: 0x41249656cda2d1314833048c, + limb3: 0x18fa645f04346cb55df845ec } }, G2Line { r0a0: u384 { - limb0: 0x8132791fbf0f61c8cc56c03d, - limb1: 0xb983ccbb1bf2e2abb3e5bd78, - limb2: 0x98dac7465cffab2ca722113c, - limb3: 0xfb1c02f6646ea94d6af78d7 + limb0: 0xd9186b9c733a20289999898e, + limb1: 0x6de39966328adffa7073a300, + limb2: 0xf15f1d47e489cb0211ae9365, + limb3: 0x130c5531b0d8c306969ed394 }, r0a1: u384 { - limb0: 0xab96c649bcddcb166cf61f3, - limb1: 0xb308602db5ab37b4be5b7551, - limb2: 0xf9b876ba9723fa59ac474902, - limb3: 0x991e8aca1f08f731e84269d + limb0: 0xdb40370c9fc08d2498113f0e, + limb1: 0x52a13a99df87505995085459, + limb2: 0xef9d808d7ee6f27a05e1b801, + limb3: 0x50452f33ca7e399a6020469 }, r1a0: u384 { - limb0: 0xaadbf7e0e6ce293672748415, - limb1: 0x7be42cc5342cc86f8453e1e5, - limb2: 0xcb661a8ae46336a2dc638311, - limb3: 0x647749537356b59e188b0d7 + limb0: 0x36def0c15c3f8e182c9ea44d, + limb1: 0x326195297234c6d7a93109a7, + limb2: 0x87a1563a69011deff0488ae7, + limb3: 0x132a2fc3be8766a1177e52aa }, r1a1: u384 { - limb0: 0xe95aa4223700275853a79b29, - limb1: 0x3c2c34c1485f2be3de77374b, - limb2: 0x138e49879af993bcbd7a8738, - limb3: 0x609d7940d3acb01483ccd06 + limb0: 0x62378fa1506521802106b7e5, + limb1: 0xd8cc0cff92a519c933c28a36, + limb2: 0xa1102e8ae53eaf25f786453b, + limb3: 0x9a64df029f7f27d39d0dc0e } }, G2Line { r0a0: u384 { - limb0: 0x8132791fbf0f61c8cc56c03d, - limb1: 0xb983ccbb1bf2e2abb3e5bd78, - limb2: 0x98dac7465cffab2ca722113c, - limb3: 0xfb1c02f6646ea94d6af78d7 + limb0: 0xd9186b9c733a20289999898e, + limb1: 0x6de39966328adffa7073a300, + limb2: 0xf15f1d47e489cb0211ae9365, + limb3: 0x130c5531b0d8c306969ed394 }, r0a1: u384 { - limb0: 0xab96c649bcddcb166cf61f3, - limb1: 0xb308602db5ab37b4be5b7551, - limb2: 0xf9b876ba9723fa59ac474902, - limb3: 0x991e8aca1f08f731e84269d + limb0: 0xdb40370c9fc08d2498113f0e, + limb1: 0x52a13a99df87505995085459, + limb2: 0xef9d808d7ee6f27a05e1b801, + limb3: 0x50452f33ca7e399a6020469 }, r1a0: u384 { - limb0: 0xaadbf7e0e6ce293672748415, - limb1: 0x7be42cc5342cc86f8453e1e5, - limb2: 0xcb661a8ae46336a2dc638311, - limb3: 0x647749537356b59e188b0d7 + limb0: 0x36def0c15c3f8e182c9ea44d, + limb1: 0x326195297234c6d7a93109a7, + limb2: 0x87a1563a69011deff0488ae7, + limb3: 0x132a2fc3be8766a1177e52aa }, r1a1: u384 { - limb0: 0xe95aa4223700275853a79b29, - limb1: 0x3c2c34c1485f2be3de77374b, - limb2: 0x138e49879af993bcbd7a8738, - limb3: 0x609d7940d3acb01483ccd06 + limb0: 0x62378fa1506521802106b7e5, + limb1: 0xd8cc0cff92a519c933c28a36, + limb2: 0xa1102e8ae53eaf25f786453b, + limb3: 0x9a64df029f7f27d39d0dc0e } }, G2Line { r0a0: u384 { - limb0: 0xc20d5e474268266e609764a1, - limb1: 0x5166c4ce0297fc5f30936e5b, - limb2: 0xc7dea5e153508e1df4f63ed2, - limb3: 0x1999c3f7936a801a30a6ae22 + limb0: 0x25ea37848e0ac8549a3cfea4, + limb1: 0x4769da5b3fdb93516843dcc4, + limb2: 0x25c2fee69d51e108950ee66c, + limb3: 0xcbe02237fb28faee0f0f322 }, r0a1: u384 { - limb0: 0xaebe36f47d59ba5e849ddafb, - limb1: 0x4289ebf13a5ba3a6cafdc406, - limb2: 0x44a70465a93804dc7bbb46d5, - limb3: 0x12db05199937652fe0aff5d1 + limb0: 0xeb04a575e069162f1fbffeac, + limb1: 0x70a494b054c8efcb93da1757, + limb2: 0x47f9c06eaaca8c969afabd71, + limb3: 0x161220a792413bbe47629580 }, r1a0: u384 { - limb0: 0xd5e621e36ca87ea1acf3a9cc, - limb1: 0xc51912ba8ae313dcc0e5478c, - limb2: 0xf8fc37e8267f89ccc3a5f63c, - limb3: 0x107547a3ba2f9b5dea61a5a6 + limb0: 0xdcd325a8ba5cef5390f5d151, + limb1: 0xcdc42d134b74aa1a5062ce50, + limb2: 0x60be437e1aa4a9878448da68, + limb3: 0x3afadaca8a96f634f1a416c }, r1a1: u384 { - limb0: 0x5067de93bc65c07d148f3b8f, - limb1: 0x4ed753aaf37f01e7a13ae3c5, - limb2: 0xf9569a2af51a3b724796be8c, - limb3: 0x7046df561b026448f873a21 + limb0: 0x2a305361b67f6592fa2a5b23, + limb1: 0x60950369afb1c2180ac6372, + limb2: 0x18abd84df73559c2ec121d5d, + limb3: 0x30f5ef160b1fd967f8015ab } }, G2Line { r0a0: u384 { - limb0: 0xc20d5e474268266e609764a1, - limb1: 0x5166c4ce0297fc5f30936e5b, - limb2: 0xc7dea5e153508e1df4f63ed2, - limb3: 0x1999c3f7936a801a30a6ae22 + limb0: 0x25ea37848e0ac8549a3cfea4, + limb1: 0x4769da5b3fdb93516843dcc4, + limb2: 0x25c2fee69d51e108950ee66c, + limb3: 0xcbe02237fb28faee0f0f322 }, r0a1: u384 { - limb0: 0xaebe36f47d59ba5e849ddafb, - limb1: 0x4289ebf13a5ba3a6cafdc406, - limb2: 0x44a70465a93804dc7bbb46d5, - limb3: 0x12db05199937652fe0aff5d1 + limb0: 0xeb04a575e069162f1fbffeac, + limb1: 0x70a494b054c8efcb93da1757, + limb2: 0x47f9c06eaaca8c969afabd71, + limb3: 0x161220a792413bbe47629580 }, r1a0: u384 { - limb0: 0xd5e621e36ca87ea1acf3a9cc, - limb1: 0xc51912ba8ae313dcc0e5478c, - limb2: 0xf8fc37e8267f89ccc3a5f63c, - limb3: 0x107547a3ba2f9b5dea61a5a6 + limb0: 0xdcd325a8ba5cef5390f5d151, + limb1: 0xcdc42d134b74aa1a5062ce50, + limb2: 0x60be437e1aa4a9878448da68, + limb3: 0x3afadaca8a96f634f1a416c }, r1a1: u384 { - limb0: 0x5067de93bc65c07d148f3b8f, - limb1: 0x4ed753aaf37f01e7a13ae3c5, - limb2: 0xf9569a2af51a3b724796be8c, - limb3: 0x7046df561b026448f873a21 + limb0: 0x2a305361b67f6592fa2a5b23, + limb1: 0x60950369afb1c2180ac6372, + limb2: 0x18abd84df73559c2ec121d5d, + limb3: 0x30f5ef160b1fd967f8015ab } }, G2Line { r0a0: u384 { - limb0: 0x2d4f842c2b158b70c04a80f7, - limb1: 0x968b4ac6dc295e1dbc496699, - limb2: 0xc210e04612e096c69cac102f, - limb3: 0x1858d4748f4c5543dfef9e43 + limb0: 0x57e9ad17c997b15ffbad6d82, + limb1: 0xb58a8d3786323d96d83553ef, + limb2: 0x7ebd9eee07a5e594ba52aa95, + limb3: 0x111e440bd97eda09284f64eb }, r0a1: u384 { - limb0: 0x985c013c44fe10837f5f20b9, - limb1: 0x749f4362acc46b6de103c652, - limb2: 0x3c707b6dd2ca0c197d1e9080, - limb3: 0x157f013cdf62850eb2a8792b + limb0: 0xd3b88ae51c3481402eba34a1, + limb1: 0x2d45a1eeba9f7b3b15c0f834, + limb2: 0xf01e42935934d35517d5917f, + limb3: 0x17873198e39dea6b3fe5129f }, r1a0: u384 { - limb0: 0xd8ef3fdc1759347420594dfe, - limb1: 0xc6b0f222d64c067795facdc, - limb2: 0xb44288a7d567c93e4535befc, - limb3: 0x128c0c2228bc702f6d434038 + limb0: 0x2f6c420e2c5b378a9412c0d0, + limb1: 0x955d38483a2f278270b22268, + limb2: 0x51a730b71b201f7aae89b10b, + limb3: 0x1085c28c787add8dcd06245a }, r1a1: u384 { - limb0: 0x8759423b1d5b109df2c38fc8, - limb1: 0xe33b9514f8627230b468d9c3, - limb2: 0x731585f0fff3a02856106c44, - limb3: 0xb733d0ba92fed5038875ae1 + limb0: 0x6e0644b1126aa50e5b4773e6, + limb1: 0xdcbb3ddbc7340820e35af7a2, + limb2: 0x92c56f71378f46d9681bc464, + limb3: 0x14e782a8eeff9d9dd580cc4 } }, G2Line { r0a0: u384 { - limb0: 0x2d4f842c2b158b70c04a80f7, - limb1: 0x968b4ac6dc295e1dbc496699, - limb2: 0xc210e04612e096c69cac102f, - limb3: 0x1858d4748f4c5543dfef9e43 + limb0: 0x57e9ad17c997b15ffbad6d82, + limb1: 0xb58a8d3786323d96d83553ef, + limb2: 0x7ebd9eee07a5e594ba52aa95, + limb3: 0x111e440bd97eda09284f64eb }, r0a1: u384 { - limb0: 0x985c013c44fe10837f5f20b9, - limb1: 0x749f4362acc46b6de103c652, - limb2: 0x3c707b6dd2ca0c197d1e9080, - limb3: 0x157f013cdf62850eb2a8792b + limb0: 0xd3b88ae51c3481402eba34a1, + limb1: 0x2d45a1eeba9f7b3b15c0f834, + limb2: 0xf01e42935934d35517d5917f, + limb3: 0x17873198e39dea6b3fe5129f }, r1a0: u384 { - limb0: 0xd8ef3fdc1759347420594dfe, - limb1: 0xc6b0f222d64c067795facdc, - limb2: 0xb44288a7d567c93e4535befc, - limb3: 0x128c0c2228bc702f6d434038 + limb0: 0x2f6c420e2c5b378a9412c0d0, + limb1: 0x955d38483a2f278270b22268, + limb2: 0x51a730b71b201f7aae89b10b, + limb3: 0x1085c28c787add8dcd06245a }, r1a1: u384 { - limb0: 0x8759423b1d5b109df2c38fc8, - limb1: 0xe33b9514f8627230b468d9c3, - limb2: 0x731585f0fff3a02856106c44, - limb3: 0xb733d0ba92fed5038875ae1 + limb0: 0x6e0644b1126aa50e5b4773e6, + limb1: 0xdcbb3ddbc7340820e35af7a2, + limb2: 0x92c56f71378f46d9681bc464, + limb3: 0x14e782a8eeff9d9dd580cc4 } }, G2Line { r0a0: u384 { - limb0: 0x860b6f315a2f90716662be7f, - limb1: 0x80489763e8955ca32de4ee22, - limb2: 0xc67e6fa7cef17da67cb15083, - limb3: 0x922830037a971cf69976d7e + limb0: 0xa17319d2ed4a91226b6d3089, + limb1: 0x1d8f224ab570fde86c7f2048, + limb2: 0xd622960850d94ec99de711af, + limb3: 0x124395d2fa862d11c431fefa }, r0a1: u384 { - limb0: 0xcda5d1e7559a20a7358a58e4, - limb1: 0xbc11befc848c87d8fc4d66c6, - limb2: 0x152c2ea315e81317935bd4fb, - limb3: 0xa235be0c9cab735f0e898e2 + limb0: 0x6ddb45f997e48b97942d9c3f, + limb1: 0x3d8b7f429593a772eb589e3a, + limb2: 0xbd411a9a2e3bafe120332263, + limb3: 0x4ae24dd579f310ebebb670a }, r1a0: u384 { - limb0: 0x43632c8aa6f2880543553857, - limb1: 0x5334dae961578287e06d0094, - limb2: 0x70b5594c022647c06459759c, - limb3: 0xa07b70e214e9076c435122a + limb0: 0x700c5258e540544c8801a1d2, + limb1: 0x40032ac207f46794aacd4702, + limb2: 0x664658ab49940041c676ae29, + limb3: 0xbba2393a3187f3acdec0862 }, r1a1: u384 { - limb0: 0xf4844af485913c9953117a8d, - limb1: 0xe7b7935da50a80441c32d37b, - limb2: 0x897e8fdbb5b9cf0f8303f8e5, - limb3: 0x7503324a7b4508adc3f488f + limb0: 0x1fb806ee192d153b8c48f37f, + limb1: 0xd8d017e6d2d0a8aade0c5570, + limb2: 0x8e857d4ca13adcefbf7a644c, + limb3: 0x5eeb6818a540c068177383c } }, G2Line { r0a0: u384 { - limb0: 0x860b6f315a2f90716662be7f, - limb1: 0x80489763e8955ca32de4ee22, - limb2: 0xc67e6fa7cef17da67cb15083, - limb3: 0x922830037a971cf69976d7e + limb0: 0xa17319d2ed4a91226b6d3089, + limb1: 0x1d8f224ab570fde86c7f2048, + limb2: 0xd622960850d94ec99de711af, + limb3: 0x124395d2fa862d11c431fefa }, r0a1: u384 { - limb0: 0xcda5d1e7559a20a7358a58e4, - limb1: 0xbc11befc848c87d8fc4d66c6, - limb2: 0x152c2ea315e81317935bd4fb, - limb3: 0xa235be0c9cab735f0e898e2 + limb0: 0x6ddb45f997e48b97942d9c3f, + limb1: 0x3d8b7f429593a772eb589e3a, + limb2: 0xbd411a9a2e3bafe120332263, + limb3: 0x4ae24dd579f310ebebb670a }, r1a0: u384 { - limb0: 0x43632c8aa6f2880543553857, - limb1: 0x5334dae961578287e06d0094, - limb2: 0x70b5594c022647c06459759c, - limb3: 0xa07b70e214e9076c435122a + limb0: 0x700c5258e540544c8801a1d2, + limb1: 0x40032ac207f46794aacd4702, + limb2: 0x664658ab49940041c676ae29, + limb3: 0xbba2393a3187f3acdec0862 }, r1a1: u384 { - limb0: 0xf4844af485913c9953117a8d, - limb1: 0xe7b7935da50a80441c32d37b, - limb2: 0x897e8fdbb5b9cf0f8303f8e5, - limb3: 0x7503324a7b4508adc3f488f + limb0: 0x1fb806ee192d153b8c48f37f, + limb1: 0xd8d017e6d2d0a8aade0c5570, + limb2: 0x8e857d4ca13adcefbf7a644c, + limb3: 0x5eeb6818a540c068177383c } }, G2Line { r0a0: u384 { - limb0: 0xa13b69b223ff755a6bd7b6e1, - limb1: 0x80985b5e707de96919f759c3, - limb2: 0xb5f856e4930e84e9e5b40cf9, - limb3: 0xdcd6d556f64fc1009d98dbb + limb0: 0x7ad0e4fa558ef8b11384085e, + limb1: 0x4329afaeac994168fe5e0cd7, + limb2: 0xb34e8702ef6b72f9a6008fa, + limb3: 0x99d918594ec79185a3f5298 }, r0a1: u384 { - limb0: 0xf3784420b2d1c1a1d15ea8f5, - limb1: 0xf4313c59e35dd590aeb9f7b9, - limb2: 0x45f00c03c6ed584fef426c5c, - limb3: 0x8b83eceeac71322171e7690 + limb0: 0xbf74c3bbc5fa4f115e66c539, + limb1: 0x7da649aab4c450a071647d9d, + limb2: 0x3de1249ed9c917ba907ae87e, + limb3: 0x17fb63a54ba4b99d958c47f5 }, r1a0: u384 { - limb0: 0x512dac7f1bdd74c2c4be9793, - limb1: 0x5ea3d544b62b42822ee414d6, - limb2: 0xd87a865e5dcec05f817280d7, - limb3: 0x84fbde3914ff91d633e939a + limb0: 0x29a111bd2ddf9b91308af11b, + limb1: 0xc6f5fc9404a96ca03bae4905, + limb2: 0x4cf974b0c052477bbda2b847, + limb3: 0x1825483020fd8780c86b1015 }, r1a1: u384 { - limb0: 0x5e2f431d31334b34508877ba, - limb1: 0x488604e3d9d12df3093b79e3, - limb2: 0x895633b27df1d4f777506673, - limb3: 0x970f680385697cb7c7f4d1e + limb0: 0xbc7ecc69f7efad3e70b125e4, + limb1: 0x91fecbb081beb006bf85d061, + limb2: 0xc0eb86316968cc75b5960f2b, + limb3: 0xe38ff44ac8be45215c49ab0 } }, G2Line { r0a0: u384 { - limb0: 0xa13b69b223ff755a6bd7b6e1, - limb1: 0x80985b5e707de96919f759c3, - limb2: 0xb5f856e4930e84e9e5b40cf9, - limb3: 0xdcd6d556f64fc1009d98dbb + limb0: 0x7ad0e4fa558ef8b11384085e, + limb1: 0x4329afaeac994168fe5e0cd7, + limb2: 0xb34e8702ef6b72f9a6008fa, + limb3: 0x99d918594ec79185a3f5298 }, r0a1: u384 { - limb0: 0xf3784420b2d1c1a1d15ea8f5, - limb1: 0xf4313c59e35dd590aeb9f7b9, - limb2: 0x45f00c03c6ed584fef426c5c, - limb3: 0x8b83eceeac71322171e7690 + limb0: 0xbf74c3bbc5fa4f115e66c539, + limb1: 0x7da649aab4c450a071647d9d, + limb2: 0x3de1249ed9c917ba907ae87e, + limb3: 0x17fb63a54ba4b99d958c47f5 }, r1a0: u384 { - limb0: 0x512dac7f1bdd74c2c4be9793, - limb1: 0x5ea3d544b62b42822ee414d6, - limb2: 0xd87a865e5dcec05f817280d7, - limb3: 0x84fbde3914ff91d633e939a + limb0: 0x29a111bd2ddf9b91308af11b, + limb1: 0xc6f5fc9404a96ca03bae4905, + limb2: 0x4cf974b0c052477bbda2b847, + limb3: 0x1825483020fd8780c86b1015 }, r1a1: u384 { - limb0: 0x5e2f431d31334b34508877ba, - limb1: 0x488604e3d9d12df3093b79e3, - limb2: 0x895633b27df1d4f777506673, - limb3: 0x970f680385697cb7c7f4d1e + limb0: 0xbc7ecc69f7efad3e70b125e4, + limb1: 0x91fecbb081beb006bf85d061, + limb2: 0xc0eb86316968cc75b5960f2b, + limb3: 0xe38ff44ac8be45215c49ab0 } }, G2Line { r0a0: u384 { - limb0: 0xe5272164cf1b0133c140737b, - limb1: 0x56e82ac8d15263eb5ace1354, - limb2: 0x6d447697c7cd7549c60a7688, - limb3: 0xedafb905f7621a5c591e0c5 + limb0: 0xceb6d3ab08b373dc22ba995f, + limb1: 0x43d108be275c4c77ddb43e08, + limb2: 0xe516383196fb48b7d3febb1d, + limb3: 0xe4c3290d4c9ba0a816475d3 }, r0a1: u384 { - limb0: 0x906d5adfd13528632bac04c2, - limb1: 0x7cc3ba74fddc84a244380973, - limb2: 0x8d827988140e2c4514ec15c4, - limb3: 0x12845855e4a227f3a384a408 + limb0: 0xd1fc69b97fb0e00d2934ae95, + limb1: 0xfc2f8a30bfd324e8dba3d887, + limb2: 0x160584b561794cc64271dc15, + limb3: 0x1009e338dbc724df50993a65 }, r1a0: u384 { - limb0: 0xfbb6d44b69ed3401c0fff845, - limb1: 0xae313f2c29e366e7baf2c5b7, - limb2: 0x8ef981dce32636b7416fa2ae, - limb3: 0x292e9ea4da6457bc374a7d2 + limb0: 0x475f046f42faf48c326b4bf1, + limb1: 0xb713074989c0643fceb94c0f, + limb2: 0xe26638cb83c9c26a954a45d9, + limb3: 0x1754c6aae904e4e80cd79f52 }, r1a1: u384 { - limb0: 0x9c6ae615af882c985f01e0, - limb1: 0xce95ae73222809312288dc5a, - limb2: 0xba831cb00697e1b8fcef402c, - limb3: 0xb8c47eb80b53a275938bb83 + limb0: 0xd7db51e3579f8a30ee0b70aa, + limb1: 0x25e0748f0cfe2d0aa5c0c8a0, + limb2: 0x6d0c3361c1683f7dc395ddf0, + limb3: 0x1348bfc584e6abb75e34a3a6 } }, G2Line { r0a0: u384 { - limb0: 0xe5272164cf1b0133c140737b, - limb1: 0x56e82ac8d15263eb5ace1354, - limb2: 0x6d447697c7cd7549c60a7688, - limb3: 0xedafb905f7621a5c591e0c5 + limb0: 0xceb6d3ab08b373dc22ba995f, + limb1: 0x43d108be275c4c77ddb43e08, + limb2: 0xe516383196fb48b7d3febb1d, + limb3: 0xe4c3290d4c9ba0a816475d3 }, r0a1: u384 { - limb0: 0x906d5adfd13528632bac04c2, - limb1: 0x7cc3ba74fddc84a244380973, - limb2: 0x8d827988140e2c4514ec15c4, - limb3: 0x12845855e4a227f3a384a408 + limb0: 0xd1fc69b97fb0e00d2934ae95, + limb1: 0xfc2f8a30bfd324e8dba3d887, + limb2: 0x160584b561794cc64271dc15, + limb3: 0x1009e338dbc724df50993a65 }, r1a0: u384 { - limb0: 0xfbb6d44b69ed3401c0fff845, - limb1: 0xae313f2c29e366e7baf2c5b7, - limb2: 0x8ef981dce32636b7416fa2ae, - limb3: 0x292e9ea4da6457bc374a7d2 + limb0: 0x475f046f42faf48c326b4bf1, + limb1: 0xb713074989c0643fceb94c0f, + limb2: 0xe26638cb83c9c26a954a45d9, + limb3: 0x1754c6aae904e4e80cd79f52 }, r1a1: u384 { - limb0: 0x9c6ae615af882c985f01e0, - limb1: 0xce95ae73222809312288dc5a, - limb2: 0xba831cb00697e1b8fcef402c, - limb3: 0xb8c47eb80b53a275938bb83 + limb0: 0xd7db51e3579f8a30ee0b70aa, + limb1: 0x25e0748f0cfe2d0aa5c0c8a0, + limb2: 0x6d0c3361c1683f7dc395ddf0, + limb3: 0x1348bfc584e6abb75e34a3a6 } }, G2Line { r0a0: u384 { - limb0: 0x52df5b696e1becaa98f00a92, - limb1: 0xcd016ddadd60beabda8503a0, - limb2: 0x20cc1982ef167def13c8207f, - limb3: 0x17bf12d0ecd9a4525961c2f + limb0: 0xb50d817096bd5c150cd6a82b, + limb1: 0x6bcc034040210fda6c8b4cff, + limb2: 0x9be137b6cb13d4ebe5a30e0e, + limb3: 0x84b37e667ea19363ed3ffd0 }, r0a1: u384 { - limb0: 0x47affebfde6c2f3b34110783, - limb1: 0x7a435b0a3b587f0dc236dabc, - limb2: 0x19eed2baf197042d40f704ab, - limb3: 0x1ae68f7ce00aa595b16ea94 + limb0: 0x11c9654f31306495f8e6bc94, + limb1: 0xba6a2171d247ebe2b0f7f696, + limb2: 0xa6d4bf1963b95bcfb7c93d93, + limb3: 0x15ac996599cf39209a84ea5a }, r1a0: u384 { - limb0: 0x574a43fd4e8e50b1d3979b80, - limb1: 0x19bb3060fe30741cb331d963, - limb2: 0x201f17b9b80815aa4b4e4625, - limb3: 0x959e83ec15c2aba4a4e3c1f + limb0: 0x8d27e960a12b8ec9372cca66, + limb1: 0xaaba63010526c24d3c2840b7, + limb2: 0xaa25dc5b42e3ed60c93463ce, + limb3: 0x7fe44d4a1e4791800b1e0fa }, r1a1: u384 { - limb0: 0xd05ac3f186ad7c5377623e91, - limb1: 0x6dddc3eed22c19c4e5d37704, - limb2: 0xbc460ae76bc593965c4d8a7, - limb3: 0x6784892eaa86e41c96c34b7 + limb0: 0xfc3e99620792c110703978d5, + limb1: 0xf4db1062eef1c755a07fbde6, + limb2: 0xf570179ead4983a489316019, + limb3: 0x46aaa91f573494bb66d079 } }, G2Line { r0a0: u384 { - limb0: 0x52df5b696e1becaa98f00a92, - limb1: 0xcd016ddadd60beabda8503a0, - limb2: 0x20cc1982ef167def13c8207f, - limb3: 0x17bf12d0ecd9a4525961c2f + limb0: 0xb50d817096bd5c150cd6a82b, + limb1: 0x6bcc034040210fda6c8b4cff, + limb2: 0x9be137b6cb13d4ebe5a30e0e, + limb3: 0x84b37e667ea19363ed3ffd0 }, r0a1: u384 { - limb0: 0x47affebfde6c2f3b34110783, - limb1: 0x7a435b0a3b587f0dc236dabc, - limb2: 0x19eed2baf197042d40f704ab, - limb3: 0x1ae68f7ce00aa595b16ea94 + limb0: 0x11c9654f31306495f8e6bc94, + limb1: 0xba6a2171d247ebe2b0f7f696, + limb2: 0xa6d4bf1963b95bcfb7c93d93, + limb3: 0x15ac996599cf39209a84ea5a }, r1a0: u384 { - limb0: 0x574a43fd4e8e50b1d3979b80, - limb1: 0x19bb3060fe30741cb331d963, - limb2: 0x201f17b9b80815aa4b4e4625, - limb3: 0x959e83ec15c2aba4a4e3c1f + limb0: 0x8d27e960a12b8ec9372cca66, + limb1: 0xaaba63010526c24d3c2840b7, + limb2: 0xaa25dc5b42e3ed60c93463ce, + limb3: 0x7fe44d4a1e4791800b1e0fa }, r1a1: u384 { - limb0: 0xd05ac3f186ad7c5377623e91, - limb1: 0x6dddc3eed22c19c4e5d37704, - limb2: 0xbc460ae76bc593965c4d8a7, - limb3: 0x6784892eaa86e41c96c34b7 + limb0: 0xfc3e99620792c110703978d5, + limb1: 0xf4db1062eef1c755a07fbde6, + limb2: 0xf570179ead4983a489316019, + limb3: 0x46aaa91f573494bb66d079 } }, G2Line { r0a0: u384 { - limb0: 0x4c02a54349db5784abdab240, - limb1: 0x6872f8869d240877b8703a33, - limb2: 0x4a0b4928c1269af2750df604, - limb3: 0x19c873ccd3f7eed104ff6044 + limb0: 0xe9f685c65bd9792c8adee32, + limb1: 0xecc42b0c513df20e80dfcb0c, + limb2: 0xf97767f63bec29912643b18c, + limb3: 0x658e5d9dd13b65d9d50e485 }, r0a1: u384 { - limb0: 0x10fb41ee9392375c31efacd, - limb1: 0x125ce16ad77425b91342bf8c, - limb2: 0xf9fc2d6b6b5aa1d32d2152f8, - limb3: 0x8adc2e7073156622dacb81c + limb0: 0xd80080e976138f1d433aee10, + limb1: 0xd60db98a0a46712bf28de887, + limb2: 0x9ec4a90a9b07bdfb9a8f9cac, + limb3: 0x1269ede044c4c6361453dbd4 }, r1a0: u384 { - limb0: 0x35bed1cd554cb4641774402b, - limb1: 0x7bf3b76d2528ca7864e14d57, - limb2: 0x1671658e4546b8ad5a89a995, - limb3: 0x6426aaafe1ac9794b58642b + limb0: 0x33266d196827c62d12d911f5, + limb1: 0x3273f6ca8f6ac372356ac475, + limb2: 0x3dbd80e6d1898f8e7cefbbd8, + limb3: 0x17b88f8e9c438e00a591eb3 }, r1a1: u384 { - limb0: 0x6abd6ada99b127be1c061723, - limb1: 0x7e3cebe83ec2ab8340ed3806, - limb2: 0x8a37ef5153f8c3fd31b488a1, - limb3: 0x17699b53d2312e03833167f1 + limb0: 0x6bf73b94433c19c358c705da, + limb1: 0xa52a6f1848089194d82c9450, + limb2: 0x41a0fcd2736929e504cab889, + limb3: 0xe660555872f31d5085b6c20 } }, G2Line { r0a0: u384 { - limb0: 0x4c02a54349db5784abdab240, - limb1: 0x6872f8869d240877b8703a33, - limb2: 0x4a0b4928c1269af2750df604, - limb3: 0x19c873ccd3f7eed104ff6044 + limb0: 0xe9f685c65bd9792c8adee32, + limb1: 0xecc42b0c513df20e80dfcb0c, + limb2: 0xf97767f63bec29912643b18c, + limb3: 0x658e5d9dd13b65d9d50e485 }, r0a1: u384 { - limb0: 0x10fb41ee9392375c31efacd, - limb1: 0x125ce16ad77425b91342bf8c, - limb2: 0xf9fc2d6b6b5aa1d32d2152f8, - limb3: 0x8adc2e7073156622dacb81c + limb0: 0xd80080e976138f1d433aee10, + limb1: 0xd60db98a0a46712bf28de887, + limb2: 0x9ec4a90a9b07bdfb9a8f9cac, + limb3: 0x1269ede044c4c6361453dbd4 }, r1a0: u384 { - limb0: 0x35bed1cd554cb4641774402b, - limb1: 0x7bf3b76d2528ca7864e14d57, - limb2: 0x1671658e4546b8ad5a89a995, - limb3: 0x6426aaafe1ac9794b58642b + limb0: 0x33266d196827c62d12d911f5, + limb1: 0x3273f6ca8f6ac372356ac475, + limb2: 0x3dbd80e6d1898f8e7cefbbd8, + limb3: 0x17b88f8e9c438e00a591eb3 }, r1a1: u384 { - limb0: 0x6abd6ada99b127be1c061723, - limb1: 0x7e3cebe83ec2ab8340ed3806, - limb2: 0x8a37ef5153f8c3fd31b488a1, - limb3: 0x17699b53d2312e03833167f1 + limb0: 0x6bf73b94433c19c358c705da, + limb1: 0xa52a6f1848089194d82c9450, + limb2: 0x41a0fcd2736929e504cab889, + limb3: 0xe660555872f31d5085b6c20 } }, G2Line { r0a0: u384 { - limb0: 0xd8d438232f834eb3d8a75c58, - limb1: 0x5898c3d869b83677ba4ea565, - limb2: 0x25b29fc168a9f83fd5149aa3, - limb3: 0x8e9f7777a77fb88a04faadc + limb0: 0xade8d05561fb99ceb1b398dc, + limb1: 0x9e365afb0af81213414cfaf7, + limb2: 0x7f77a69390559e530043141a, + limb3: 0xc209c5c88e6c6f2b043351b }, r0a1: u384 { - limb0: 0x15085b089ca2f093e0cd495d, - limb1: 0x4655d2014e7ec742979bf84e, - limb2: 0xa377d1234a671ae902946d26, - limb3: 0x18157192540cf1e4f6ab19ac + limb0: 0x7565700ffe842d640fc1ead7, + limb1: 0xd7a72ca686ca6e365e66674f, + limb2: 0x74d23c8889d674ed594cdeba, + limb3: 0x3b785972f83859804ba7b9f }, r1a0: u384 { - limb0: 0xdef37882030c9b3735e87218, - limb1: 0x89a9d8f0afe4af71215eb880, - limb2: 0x4b1a42b2be948f25f9f23fc3, - limb3: 0x11ebc09efd8f944c09e1c4bf + limb0: 0x6762e6916c0e2c81f7508214, + limb1: 0xd0d08610571c6228f47f1451, + limb2: 0x81ec1b03edd35c515bf8d1cd, + limb3: 0x41a7141598d94d8d557ea13 }, r1a1: u384 { - limb0: 0xb4cdff8e493f1f356f90bb24, - limb1: 0xe7b159aaaa070e69f90d0fcb, - limb2: 0x2c2e763385639e33da32cdb7, - limb3: 0x13410f70d8a15a6b82bfd33a + limb0: 0xc76846d9fc76bba55279cd97, + limb1: 0xf475886e2b2e07119618d34c, + limb2: 0x7cbf7dfaa9bdf3f6b1b6add8, + limb3: 0xe697b86b1a1a256ea1fc7bd } }, G2Line { r0a0: u384 { - limb0: 0xd8d438232f834eb3d8a75c58, - limb1: 0x5898c3d869b83677ba4ea565, - limb2: 0x25b29fc168a9f83fd5149aa3, - limb3: 0x8e9f7777a77fb88a04faadc + limb0: 0xade8d05561fb99ceb1b398dc, + limb1: 0x9e365afb0af81213414cfaf7, + limb2: 0x7f77a69390559e530043141a, + limb3: 0xc209c5c88e6c6f2b043351b }, r0a1: u384 { - limb0: 0x15085b089ca2f093e0cd495d, - limb1: 0x4655d2014e7ec742979bf84e, - limb2: 0xa377d1234a671ae902946d26, - limb3: 0x18157192540cf1e4f6ab19ac + limb0: 0x7565700ffe842d640fc1ead7, + limb1: 0xd7a72ca686ca6e365e66674f, + limb2: 0x74d23c8889d674ed594cdeba, + limb3: 0x3b785972f83859804ba7b9f }, r1a0: u384 { - limb0: 0xdef37882030c9b3735e87218, - limb1: 0x89a9d8f0afe4af71215eb880, - limb2: 0x4b1a42b2be948f25f9f23fc3, - limb3: 0x11ebc09efd8f944c09e1c4bf + limb0: 0x6762e6916c0e2c81f7508214, + limb1: 0xd0d08610571c6228f47f1451, + limb2: 0x81ec1b03edd35c515bf8d1cd, + limb3: 0x41a7141598d94d8d557ea13 }, r1a1: u384 { - limb0: 0xb4cdff8e493f1f356f90bb24, - limb1: 0xe7b159aaaa070e69f90d0fcb, - limb2: 0x2c2e763385639e33da32cdb7, - limb3: 0x13410f70d8a15a6b82bfd33a + limb0: 0xc76846d9fc76bba55279cd97, + limb1: 0xf475886e2b2e07119618d34c, + limb2: 0x7cbf7dfaa9bdf3f6b1b6add8, + limb3: 0xe697b86b1a1a256ea1fc7bd } }, G2Line { r0a0: u384 { - limb0: 0x877040c2985b0c5189d19ac4, - limb1: 0x733b1f56cbfeab1cb129c27c, - limb2: 0x1628e98622e2a6aae5010ceb, - limb3: 0x1020fc91195d0bcd2c2ddd8 + limb0: 0x3e2bda3bb882029aa8c68c07, + limb1: 0xa0a7e087ad38e14e08cef273, + limb2: 0x5808f126af4a19c3133f879a, + limb3: 0x19bd29ab402e8d268fcb24d2 }, r0a1: u384 { - limb0: 0xa6bac46397914c30f4dac341, - limb1: 0xc01862acfddba1db90511185, - limb2: 0x3c752bd9c9be4e4193404b2, - limb3: 0x19752bcddc8408686ed999f7 + limb0: 0xcd0ea0d4ee5a1532a9730806, + limb1: 0x7845796a605b0f7861d95340, + limb2: 0x89ef8948802539a10a58b812, + limb3: 0x1053849b92ac68c309e109c1 }, r1a0: u384 { - limb0: 0x6aee2729aec7e8e7359c15b9, - limb1: 0xc47109f6be9a6892bb8ed514, - limb2: 0x9354dc6cb4c119cf21cd33fe, - limb3: 0x1446ba615ca59db55b13b034 + limb0: 0xa3815eaa263de8563f27a5a9, + limb1: 0xde94b962e70316398ed6dca9, + limb2: 0xa87f14f61a4ac2b9e62df692, + limb3: 0x252bb6ddefddda543bb5ffd }, r1a1: u384 { - limb0: 0x7b7a416a4137bd69c2257891, - limb1: 0x3fb0022a6d30d8e0ed0b32c, - limb2: 0x6f271626548aaf4aa5ffc8e2, - limb3: 0x75db4d8fcf65c02ded40602 + limb0: 0x60d60e0da595356015916692, + limb1: 0x4b828f50f32b12b44b33e235, + limb2: 0x769ed0c50fe7fa25ffdc245a, + limb3: 0x6e387748806b8214f1b79e3 } }, G2Line { r0a0: u384 { - limb0: 0x877040c2985b0c5189d19ac4, - limb1: 0x733b1f56cbfeab1cb129c27c, - limb2: 0x1628e98622e2a6aae5010ceb, - limb3: 0x1020fc91195d0bcd2c2ddd8 + limb0: 0x3e2bda3bb882029aa8c68c07, + limb1: 0xa0a7e087ad38e14e08cef273, + limb2: 0x5808f126af4a19c3133f879a, + limb3: 0x19bd29ab402e8d268fcb24d2 }, r0a1: u384 { - limb0: 0xa6bac46397914c30f4dac341, - limb1: 0xc01862acfddba1db90511185, - limb2: 0x3c752bd9c9be4e4193404b2, - limb3: 0x19752bcddc8408686ed999f7 + limb0: 0xcd0ea0d4ee5a1532a9730806, + limb1: 0x7845796a605b0f7861d95340, + limb2: 0x89ef8948802539a10a58b812, + limb3: 0x1053849b92ac68c309e109c1 }, r1a0: u384 { - limb0: 0x6aee2729aec7e8e7359c15b9, - limb1: 0xc47109f6be9a6892bb8ed514, - limb2: 0x9354dc6cb4c119cf21cd33fe, - limb3: 0x1446ba615ca59db55b13b034 + limb0: 0xa3815eaa263de8563f27a5a9, + limb1: 0xde94b962e70316398ed6dca9, + limb2: 0xa87f14f61a4ac2b9e62df692, + limb3: 0x252bb6ddefddda543bb5ffd }, r1a1: u384 { - limb0: 0x7b7a416a4137bd69c2257891, - limb1: 0x3fb0022a6d30d8e0ed0b32c, - limb2: 0x6f271626548aaf4aa5ffc8e2, - limb3: 0x75db4d8fcf65c02ded40602 + limb0: 0x60d60e0da595356015916692, + limb1: 0x4b828f50f32b12b44b33e235, + limb2: 0x769ed0c50fe7fa25ffdc245a, + limb3: 0x6e387748806b8214f1b79e3 } }, G2Line { r0a0: u384 { - limb0: 0x32c1a688d09363c359134297, - limb1: 0x8e59b7adba7ff5fdfcb73778, - limb2: 0x2a931f2b893e48322ebb5dfe, - limb3: 0x951dcef4b78464d3f65a66 + limb0: 0xfd057da0cb173025ce2f998a, + limb1: 0x9e4d6149a2fc05606e592731, + limb2: 0x8b1847b9941797009134cfa1, + limb3: 0x18da833da14d6db1d7986937 }, r0a1: u384 { - limb0: 0x90625d5a269c57f9d6cca20c, - limb1: 0xa66686bd20d834a55f07e03c, - limb2: 0x810418ec2f4f056d1dffb0a9, - limb3: 0x10e5e0b865023880f6ce6c50 + limb0: 0x5eb7e3f27b2ab2f1c56f91cb, + limb1: 0x3b6645812dc68a27333141f2, + limb2: 0xfb06e0ba9a36c40cbd2837b9, + limb3: 0xb998d9cd4e1fdb1c7673a4d }, r1a0: u384 { - limb0: 0xa26b9ba0e22c4d47197f4acc, - limb1: 0x842566d3a86d3c2c5c79b30a, - limb2: 0xc8d6a7ad84fd4f65466b7346, - limb3: 0x1104819b3bc81a90ae477ad9 + limb0: 0xea6b77d2854c6efa8751c13, + limb1: 0x2a8bc25dab4cbfb0083ad510, + limb2: 0xc394a4e0f3acd2aa2f2e5029, + limb3: 0x4737c2c084ac35ec59d139d }, r1a1: u384 { - limb0: 0x971871b1e144196aa768940c, - limb1: 0x9eba2cf0e6725dd813dc896, - limb2: 0x7d77bcba238f0f89bf5bdada, - limb3: 0xa02fb8db5be7da622b758bd + limb0: 0xaff0146957bcf99d6005201c, + limb1: 0x5cc5e1fb8259ea6e5ffe87dc, + limb2: 0xd9372a44e3423a7331ac2435, + limb3: 0x15d0e555bcdc0d8d48cad595 } }, G2Line { r0a0: u384 { - limb0: 0x32c1a688d09363c359134297, - limb1: 0x8e59b7adba7ff5fdfcb73778, - limb2: 0x2a931f2b893e48322ebb5dfe, - limb3: 0x951dcef4b78464d3f65a66 + limb0: 0xfd057da0cb173025ce2f998a, + limb1: 0x9e4d6149a2fc05606e592731, + limb2: 0x8b1847b9941797009134cfa1, + limb3: 0x18da833da14d6db1d7986937 }, r0a1: u384 { - limb0: 0x90625d5a269c57f9d6cca20c, - limb1: 0xa66686bd20d834a55f07e03c, - limb2: 0x810418ec2f4f056d1dffb0a9, - limb3: 0x10e5e0b865023880f6ce6c50 + limb0: 0x5eb7e3f27b2ab2f1c56f91cb, + limb1: 0x3b6645812dc68a27333141f2, + limb2: 0xfb06e0ba9a36c40cbd2837b9, + limb3: 0xb998d9cd4e1fdb1c7673a4d }, r1a0: u384 { - limb0: 0xa26b9ba0e22c4d47197f4acc, - limb1: 0x842566d3a86d3c2c5c79b30a, - limb2: 0xc8d6a7ad84fd4f65466b7346, - limb3: 0x1104819b3bc81a90ae477ad9 + limb0: 0xea6b77d2854c6efa8751c13, + limb1: 0x2a8bc25dab4cbfb0083ad510, + limb2: 0xc394a4e0f3acd2aa2f2e5029, + limb3: 0x4737c2c084ac35ec59d139d }, r1a1: u384 { - limb0: 0x971871b1e144196aa768940c, - limb1: 0x9eba2cf0e6725dd813dc896, - limb2: 0x7d77bcba238f0f89bf5bdada, - limb3: 0xa02fb8db5be7da622b758bd + limb0: 0xaff0146957bcf99d6005201c, + limb1: 0x5cc5e1fb8259ea6e5ffe87dc, + limb2: 0xd9372a44e3423a7331ac2435, + limb3: 0x15d0e555bcdc0d8d48cad595 } }, G2Line { r0a0: u384 { - limb0: 0x12143c658f4632bedaaa3e4, - limb1: 0xf91e8d44606bd7fba6a261ce, - limb2: 0x9413920ad62e521b84a38245, - limb3: 0x18ae365222dc287068b9ca91 + limb0: 0x828425fca9d6cd76f222c299, + limb1: 0x2b0db667ad7776a32372e139, + limb2: 0x7ff7fb851413603a6f0d2fef, + limb3: 0x166c41ed7430420750164f1a }, r0a1: u384 { - limb0: 0x30acbc18bf6f53bf1463e608, - limb1: 0x24b50096f31df0a85110d348, - limb2: 0x8dda183c64dd3770917e9807, - limb3: 0x19042c27946c940ce275ca61 + limb0: 0xe3788c1577b092a1a89686b2, + limb1: 0x5fdf8356c68add3572e76a25, + limb2: 0x37115b7994287a9b345dd0ed, + limb3: 0xffcc588c7d1b96c86dc3aaf }, r1a0: u384 { - limb0: 0xdd9346e30080173f781bfaee, - limb1: 0xcd6261a4e7bc0a748cbcb800, - limb2: 0xb8d3b275bd51a2c2ed3d2081, - limb3: 0x62b9317eb99bc04c19573e7 + limb0: 0xbc7e65f493e052b119a9c84f, + limb1: 0x11aa017bcbfc878c46a18c52, + limb2: 0xa65af0bdbf93483836c11b4d, + limb3: 0xd2f8087436fff404d7e6bc }, r1a1: u384 { - limb0: 0x24d76bdab66dda9e8eaf68ec, - limb1: 0xa9b00de07d7d0ffa94671fb4, - limb2: 0x46c3e90bda39797b07c798ce, - limb3: 0xc63bdfab25a82c569c45d62 + limb0: 0xc171d5e78129decdde583c1f, + limb1: 0x300b7521c43311b00cb16b80, + limb2: 0xbccbe679495d33a3fcb98e54, + limb3: 0x13fe5206e449d407a961a9d0 } }, G2Line { r0a0: u384 { - limb0: 0x12143c658f4632bedaaa3e4, - limb1: 0xf91e8d44606bd7fba6a261ce, - limb2: 0x9413920ad62e521b84a38245, - limb3: 0x18ae365222dc287068b9ca91 + limb0: 0x828425fca9d6cd76f222c299, + limb1: 0x2b0db667ad7776a32372e139, + limb2: 0x7ff7fb851413603a6f0d2fef, + limb3: 0x166c41ed7430420750164f1a }, r0a1: u384 { - limb0: 0x30acbc18bf6f53bf1463e608, - limb1: 0x24b50096f31df0a85110d348, - limb2: 0x8dda183c64dd3770917e9807, - limb3: 0x19042c27946c940ce275ca61 + limb0: 0xe3788c1577b092a1a89686b2, + limb1: 0x5fdf8356c68add3572e76a25, + limb2: 0x37115b7994287a9b345dd0ed, + limb3: 0xffcc588c7d1b96c86dc3aaf }, r1a0: u384 { - limb0: 0xdd9346e30080173f781bfaee, - limb1: 0xcd6261a4e7bc0a748cbcb800, - limb2: 0xb8d3b275bd51a2c2ed3d2081, - limb3: 0x62b9317eb99bc04c19573e7 + limb0: 0xbc7e65f493e052b119a9c84f, + limb1: 0x11aa017bcbfc878c46a18c52, + limb2: 0xa65af0bdbf93483836c11b4d, + limb3: 0xd2f8087436fff404d7e6bc }, r1a1: u384 { - limb0: 0x24d76bdab66dda9e8eaf68ec, - limb1: 0xa9b00de07d7d0ffa94671fb4, - limb2: 0x46c3e90bda39797b07c798ce, - limb3: 0xc63bdfab25a82c569c45d62 + limb0: 0xc171d5e78129decdde583c1f, + limb1: 0x300b7521c43311b00cb16b80, + limb2: 0xbccbe679495d33a3fcb98e54, + limb3: 0x13fe5206e449d407a961a9d0 } }, G2Line { r0a0: u384 { - limb0: 0xf1bd704f5e9b7b185e1d4f2d, - limb1: 0xad6f2b4a16e0f62da7765d0b, - limb2: 0x8bc5489e5ab229893efe3e13, - limb3: 0x40aea3eb0adef45a3273500 + limb0: 0xe075c3e46497811318f1aafc, + limb1: 0xc9ee6637a1f378458c67a6a2, + limb2: 0x584f8f6bff2beb100c77bbaa, + limb3: 0xcabbaeccf33edbba456b3aa }, r0a1: u384 { - limb0: 0x7daa230566f68a4957330794, - limb1: 0x3dc1f47bba370cedc95ca679, - limb2: 0x8862c433ba78072649454534, - limb3: 0x19418e0aa2bf750c7d84855 + limb0: 0xf15b790c2edf5b3c99fe4876, + limb1: 0x875fb1351df4569cb81efb59, + limb2: 0xfacb5e54e4995b34f5ea8a9d, + limb3: 0x498c1832574b066e7f66b65 }, r1a0: u384 { - limb0: 0xa46958b813fc7957a397f850, - limb1: 0xdf25a4ac04db44a6e66fd17a, - limb2: 0x3ca3519f7bfbc5f9b16431dd, - limb3: 0x8a229833625e103b78dbed4 + limb0: 0xd7010c92fd3eb8bf086d7a51, + limb1: 0x43899406a876ca11b6a17538, + limb2: 0x3c5f51da0ddee80dbc5b343b, + limb3: 0xf44ad67280e30f4d6191d23 }, r1a1: u384 { - limb0: 0x8d90f9036233023d6e455653, - limb1: 0xf09f78aba00449a00ee67be7, - limb2: 0xd241bd53f614906327a0fa5b, - limb3: 0x411d97ebefaf7c1396b9e7a + limb0: 0xb622b3289749d00b16b02f9d, + limb1: 0xbc460741ba8c03787b256be9, + limb2: 0x53b5ac101f741bc6ba3a412f, + limb3: 0x14610dd7fe56661dc12e7017 } }, G2Line { r0a0: u384 { - limb0: 0xf1bd704f5e9b7b185e1d4f2d, - limb1: 0xad6f2b4a16e0f62da7765d0b, - limb2: 0x8bc5489e5ab229893efe3e13, - limb3: 0x40aea3eb0adef45a3273500 + limb0: 0xe075c3e46497811318f1aafc, + limb1: 0xc9ee6637a1f378458c67a6a2, + limb2: 0x584f8f6bff2beb100c77bbaa, + limb3: 0xcabbaeccf33edbba456b3aa }, r0a1: u384 { - limb0: 0x7daa230566f68a4957330794, - limb1: 0x3dc1f47bba370cedc95ca679, - limb2: 0x8862c433ba78072649454534, - limb3: 0x19418e0aa2bf750c7d84855 + limb0: 0xf15b790c2edf5b3c99fe4876, + limb1: 0x875fb1351df4569cb81efb59, + limb2: 0xfacb5e54e4995b34f5ea8a9d, + limb3: 0x498c1832574b066e7f66b65 }, r1a0: u384 { - limb0: 0xa46958b813fc7957a397f850, - limb1: 0xdf25a4ac04db44a6e66fd17a, - limb2: 0x3ca3519f7bfbc5f9b16431dd, - limb3: 0x8a229833625e103b78dbed4 + limb0: 0xd7010c92fd3eb8bf086d7a51, + limb1: 0x43899406a876ca11b6a17538, + limb2: 0x3c5f51da0ddee80dbc5b343b, + limb3: 0xf44ad67280e30f4d6191d23 }, r1a1: u384 { - limb0: 0x8d90f9036233023d6e455653, - limb1: 0xf09f78aba00449a00ee67be7, - limb2: 0xd241bd53f614906327a0fa5b, - limb3: 0x411d97ebefaf7c1396b9e7a + limb0: 0xb622b3289749d00b16b02f9d, + limb1: 0xbc460741ba8c03787b256be9, + limb2: 0x53b5ac101f741bc6ba3a412f, + limb3: 0x14610dd7fe56661dc12e7017 } }, G2Line { r0a0: u384 { - limb0: 0x35a784f5416b9b8334905a2c, - limb1: 0xe354839b1bc773104b000b26, - limb2: 0x7752b31c8b091c79d929eb9c, - limb3: 0xb7b97c6be9cc8afb5bc5735 + limb0: 0x3289f694418a3355784156cd, + limb1: 0x9e5388d5b5d0a75275470869, + limb2: 0x8a84b134b920014341616e0c, + limb3: 0x17e7c92f7ff289ec1b0eb4a4 }, r0a1: u384 { - limb0: 0xad83a5972c78ea6e8bee5ae1, - limb1: 0x211c74cc3fb00298ee9909ec, - limb2: 0x423d7274d597ada488060e43, - limb3: 0x1801df43882b5a33b8533f6c + limb0: 0xfb2bdc0a4813315c10592f30, + limb1: 0xfe0a10e2cefd8e957736628b, + limb2: 0x968cc921ed9abec9269b5786, + limb3: 0xb36f790715d65f359921941 }, r1a0: u384 { - limb0: 0xf48f6e1e092e03108eb20f38, - limb1: 0x9bcdcf9bfb03d73e579978e, - limb2: 0xcba676b0e5fa2a088d68e635, - limb3: 0xcb9cbf50340fcc71b0be45c + limb0: 0xf9994278889345a5e3e525b, + limb1: 0x8279eab2379884433bc2637e, + limb2: 0x73d76c8ecc39d1f8cc458824, + limb3: 0xd3fe945a75801d2acc3134a }, r1a1: u384 { - limb0: 0x3a583430b57c26a18b27bbc0, - limb1: 0x4be38e191e82d861740d4f35, - limb2: 0xfe63037de3b7599f6371212e, - limb3: 0x8601eccbac732aa96ef90b + limb0: 0x55d20208b88794ff0fe6ff65, + limb1: 0xc346b74aab2344fca9ff5c62, + limb2: 0x9dde8f58210d2b715eb4384, + limb3: 0x6ab0c2780fd0aadedb1ffa6 } }, G2Line { r0a0: u384 { - limb0: 0x35a784f5416b9b8334905a2c, - limb1: 0xe354839b1bc773104b000b26, - limb2: 0x7752b31c8b091c79d929eb9c, - limb3: 0xb7b97c6be9cc8afb5bc5735 + limb0: 0x3289f694418a3355784156cd, + limb1: 0x9e5388d5b5d0a75275470869, + limb2: 0x8a84b134b920014341616e0c, + limb3: 0x17e7c92f7ff289ec1b0eb4a4 }, r0a1: u384 { - limb0: 0xad83a5972c78ea6e8bee5ae1, - limb1: 0x211c74cc3fb00298ee9909ec, - limb2: 0x423d7274d597ada488060e43, - limb3: 0x1801df43882b5a33b8533f6c + limb0: 0xfb2bdc0a4813315c10592f30, + limb1: 0xfe0a10e2cefd8e957736628b, + limb2: 0x968cc921ed9abec9269b5786, + limb3: 0xb36f790715d65f359921941 }, r1a0: u384 { - limb0: 0xf48f6e1e092e03108eb20f38, - limb1: 0x9bcdcf9bfb03d73e579978e, - limb2: 0xcba676b0e5fa2a088d68e635, - limb3: 0xcb9cbf50340fcc71b0be45c + limb0: 0xf9994278889345a5e3e525b, + limb1: 0x8279eab2379884433bc2637e, + limb2: 0x73d76c8ecc39d1f8cc458824, + limb3: 0xd3fe945a75801d2acc3134a }, r1a1: u384 { - limb0: 0x3a583430b57c26a18b27bbc0, - limb1: 0x4be38e191e82d861740d4f35, - limb2: 0xfe63037de3b7599f6371212e, - limb3: 0x8601eccbac732aa96ef90b + limb0: 0x55d20208b88794ff0fe6ff65, + limb1: 0xc346b74aab2344fca9ff5c62, + limb2: 0x9dde8f58210d2b715eb4384, + limb3: 0x6ab0c2780fd0aadedb1ffa6 } }, G2Line { r0a0: u384 { - limb0: 0x50c4d58794e9b0e39594f09f, - limb1: 0x7ae1b647d7b6a99833adb19d, - limb2: 0x43ed13bb3c3bbb8deaec5cab, - limb3: 0x2d53890c3ff85fd7c103545 + limb0: 0x5a3e5e1697e09425b898db66, + limb1: 0xbc1396eefa2c96a1be6ba4c4, + limb2: 0x94851b8964323d7c8ed145f7, + limb3: 0x89a8fd1fd59927115c38ef8 }, r0a1: u384 { - limb0: 0xd45c53f3bb48c811cef68cca, - limb1: 0x1c1b555a9242061409fda332, - limb2: 0x6bd197f1ffe00375684cffd6, - limb3: 0x15f2bc319e9fe4d4cd651801 + limb0: 0xa410a6b40708300c5ff93622, + limb1: 0x9f8390f98fd525a678892dda, + limb2: 0xa799373de5c454a11e12b305, + limb3: 0x101747fa8b1d04dee8f363b0 }, r1a0: u384 { - limb0: 0xf0f4590c6968cc8323776230, - limb1: 0xfba722cbf6c21e1cb3f12cba, - limb2: 0xd2a12b507529f4f2077789e8, - limb3: 0x13f94de6c4a21959b92b03ff + limb0: 0xa807f8a5b13ceb81cda82fa8, + limb1: 0xb2f165c491d5c47bfe65453, + limb2: 0x215cdd59a4776d378aa1dcd3, + limb3: 0x19a8a47644e2d5c48fb32261 }, r1a1: u384 { - limb0: 0x4bee81c016c23b1d9969cf44, - limb1: 0x355a116ead4664c76ae9674c, - limb2: 0x8fa461dbbc4562f57242c5d6, - limb3: 0x167ec60ca319d80bf30dd93a + limb0: 0xacb3c56efc35cb7292cd16e7, + limb1: 0x290fd760f9c8ecd7cecb08dd, + limb2: 0x41a779eb8cecbc69db519618, + limb3: 0x185772d8ebcc6861748d643b } }, G2Line { r0a0: u384 { - limb0: 0x50c4d58794e9b0e39594f09f, - limb1: 0x7ae1b647d7b6a99833adb19d, - limb2: 0x43ed13bb3c3bbb8deaec5cab, - limb3: 0x2d53890c3ff85fd7c103545 + limb0: 0x5a3e5e1697e09425b898db66, + limb1: 0xbc1396eefa2c96a1be6ba4c4, + limb2: 0x94851b8964323d7c8ed145f7, + limb3: 0x89a8fd1fd59927115c38ef8 }, r0a1: u384 { - limb0: 0xd45c53f3bb48c811cef68cca, - limb1: 0x1c1b555a9242061409fda332, - limb2: 0x6bd197f1ffe00375684cffd6, - limb3: 0x15f2bc319e9fe4d4cd651801 + limb0: 0xa410a6b40708300c5ff93622, + limb1: 0x9f8390f98fd525a678892dda, + limb2: 0xa799373de5c454a11e12b305, + limb3: 0x101747fa8b1d04dee8f363b0 }, r1a0: u384 { - limb0: 0xf0f4590c6968cc8323776230, - limb1: 0xfba722cbf6c21e1cb3f12cba, - limb2: 0xd2a12b507529f4f2077789e8, - limb3: 0x13f94de6c4a21959b92b03ff + limb0: 0xa807f8a5b13ceb81cda82fa8, + limb1: 0xb2f165c491d5c47bfe65453, + limb2: 0x215cdd59a4776d378aa1dcd3, + limb3: 0x19a8a47644e2d5c48fb32261 }, r1a1: u384 { - limb0: 0x4bee81c016c23b1d9969cf44, - limb1: 0x355a116ead4664c76ae9674c, - limb2: 0x8fa461dbbc4562f57242c5d6, - limb3: 0x167ec60ca319d80bf30dd93a + limb0: 0xacb3c56efc35cb7292cd16e7, + limb1: 0x290fd760f9c8ecd7cecb08dd, + limb2: 0x41a779eb8cecbc69db519618, + limb3: 0x185772d8ebcc6861748d643b } }, G2Line { r0a0: u384 { - limb0: 0x369611abdb6cee630fc3fe3f, - limb1: 0x9ce2deb814075cd3b1f6e805, - limb2: 0xfcda3cd922ebd14c49d381, - limb3: 0x749aef7937c02ba80b7a3d1 + limb0: 0x11845c8f378370c5ea1988eb, + limb1: 0x1a26c58a1b5b3e9927e386f7, + limb2: 0x1614136e352ccbeb1a708bc6, + limb3: 0x14b59d16f3f82c70a6dc9542 }, r0a1: u384 { - limb0: 0xb9848447124e6e229be774a7, - limb1: 0x16e7d15c3f2ecead69f5fd50, - limb2: 0x1bb2acdf9b6d250446d5320b, - limb3: 0x71424724431273e81f303de + limb0: 0xa6251ffb4e4ec02c6eb099d4, + limb1: 0xa1486c797b3c5efa056554a9, + limb2: 0x951b07cb2f028ead174faf1d, + limb3: 0x16995470027165033faaff45 }, r1a0: u384 { - limb0: 0xc6b4358abc52481e334d5938, - limb1: 0x2ff0e51db3f0da43e71e110a, - limb2: 0x585625ad95a2e52ae1ceaaa, - limb3: 0xc5eb60c8d47b337963c6d55 + limb0: 0x831c44b21a6d609bdeec639d, + limb1: 0xe2f69c85767b04a7d61fe433, + limb2: 0x9639ab56e254ed60a9ec5dc3, + limb3: 0x176c34a0e3901325d8694c42 }, r1a1: u384 { - limb0: 0xdbaa91102aa8e67cf32cfe13, - limb1: 0xa401827ecf080a37abe56cbf, - limb2: 0x8b0d6822b8957fa7f2c16e73, - limb3: 0xeac53012ddb4321b1dc25d7 + limb0: 0xd41f8075420515c9666697e6, + limb1: 0xf8df73883c6237c933f15eb5, + limb2: 0xb1ed39ecead4669251ce42d2, + limb3: 0x1bbe08120ec3b54286df6bc } }, G2Line { r0a0: u384 { - limb0: 0x369611abdb6cee630fc3fe3f, - limb1: 0x9ce2deb814075cd3b1f6e805, - limb2: 0xfcda3cd922ebd14c49d381, - limb3: 0x749aef7937c02ba80b7a3d1 + limb0: 0x11845c8f378370c5ea1988eb, + limb1: 0x1a26c58a1b5b3e9927e386f7, + limb2: 0x1614136e352ccbeb1a708bc6, + limb3: 0x14b59d16f3f82c70a6dc9542 }, r0a1: u384 { - limb0: 0xb9848447124e6e229be774a7, - limb1: 0x16e7d15c3f2ecead69f5fd50, - limb2: 0x1bb2acdf9b6d250446d5320b, - limb3: 0x71424724431273e81f303de + limb0: 0xa6251ffb4e4ec02c6eb099d4, + limb1: 0xa1486c797b3c5efa056554a9, + limb2: 0x951b07cb2f028ead174faf1d, + limb3: 0x16995470027165033faaff45 }, r1a0: u384 { - limb0: 0xc6b4358abc52481e334d5938, - limb1: 0x2ff0e51db3f0da43e71e110a, - limb2: 0x585625ad95a2e52ae1ceaaa, - limb3: 0xc5eb60c8d47b337963c6d55 + limb0: 0x831c44b21a6d609bdeec639d, + limb1: 0xe2f69c85767b04a7d61fe433, + limb2: 0x9639ab56e254ed60a9ec5dc3, + limb3: 0x176c34a0e3901325d8694c42 }, r1a1: u384 { - limb0: 0xdbaa91102aa8e67cf32cfe13, - limb1: 0xa401827ecf080a37abe56cbf, - limb2: 0x8b0d6822b8957fa7f2c16e73, - limb3: 0xeac53012ddb4321b1dc25d7 + limb0: 0xd41f8075420515c9666697e6, + limb1: 0xf8df73883c6237c933f15eb5, + limb2: 0xb1ed39ecead4669251ce42d2, + limb3: 0x1bbe08120ec3b54286df6bc } }, G2Line { r0a0: u384 { - limb0: 0x4eca2e0c289a6357cd2ec02e, - limb1: 0xa5e46cf9720a6cabd480d724, - limb2: 0x81717648b0d381a16c4de5c4, - limb3: 0x15e457d401643ae6585441e6 + limb0: 0x3b2682846d33d1bb2910ba03, + limb1: 0x6a05f306d95cf531380ee7da, + limb2: 0x21435eb65c2bd413387d1df3, + limb3: 0x1982379e444b697d0a073d6e }, r0a1: u384 { - limb0: 0x3e73770cfe2d10ef57d620d8, - limb1: 0x7744d37c5830530b4812fefe, - limb2: 0x588caf8f86ea2b1ca9b9ca5a, - limb3: 0x2e64a21fd65c2ca7ca62b69 + limb0: 0x8bd63863d4cfeee42b281a67, + limb1: 0x53c8de84ace44e226eb06d6d, + limb2: 0xe55bb6fa2841cb1731cb6a13, + limb3: 0x348ea88fa28ae0657275530 }, r1a0: u384 { - limb0: 0x144be60ffe84e8da6fadff00, - limb1: 0xaaffed3c3878fc053f17abe8, - limb2: 0x8f1a94954832dc09b4ae8e1d, - limb3: 0xd31e3c55c88bb96e9b1773c + limb0: 0xdc0ab5703b9d7522611edee2, + limb1: 0xd6e26d354a07ecb4e30de6a8, + limb2: 0xbb971530e7c8c7526b599c64, + limb3: 0x12e92020be3b6b2a54440bb3 }, r1a1: u384 { - limb0: 0x56aa6b8b7de66a0c925a4246, - limb1: 0x5067fb22a844392d0a237acf, - limb2: 0xf4f46e4d6ea479f0d878f653, - limb3: 0x2a6c2af7a3866c637892ac4 + limb0: 0x419847bd7c1f542e3a38b0ee, + limb1: 0x6d81da9fd456c7699ec5a02d, + limb2: 0x7bb02418a48065d4a6fbcdd0, + limb3: 0x2158e75b3ad1be8adc4f2fd } }, G2Line { r0a0: u384 { - limb0: 0x4eca2e0c289a6357cd2ec02e, - limb1: 0xa5e46cf9720a6cabd480d724, - limb2: 0x81717648b0d381a16c4de5c4, - limb3: 0x15e457d401643ae6585441e6 + limb0: 0x3b2682846d33d1bb2910ba03, + limb1: 0x6a05f306d95cf531380ee7da, + limb2: 0x21435eb65c2bd413387d1df3, + limb3: 0x1982379e444b697d0a073d6e }, r0a1: u384 { - limb0: 0x3e73770cfe2d10ef57d620d8, - limb1: 0x7744d37c5830530b4812fefe, - limb2: 0x588caf8f86ea2b1ca9b9ca5a, - limb3: 0x2e64a21fd65c2ca7ca62b69 + limb0: 0x8bd63863d4cfeee42b281a67, + limb1: 0x53c8de84ace44e226eb06d6d, + limb2: 0xe55bb6fa2841cb1731cb6a13, + limb3: 0x348ea88fa28ae0657275530 }, r1a0: u384 { - limb0: 0x144be60ffe84e8da6fadff00, - limb1: 0xaaffed3c3878fc053f17abe8, - limb2: 0x8f1a94954832dc09b4ae8e1d, - limb3: 0xd31e3c55c88bb96e9b1773c + limb0: 0xdc0ab5703b9d7522611edee2, + limb1: 0xd6e26d354a07ecb4e30de6a8, + limb2: 0xbb971530e7c8c7526b599c64, + limb3: 0x12e92020be3b6b2a54440bb3 }, r1a1: u384 { - limb0: 0x56aa6b8b7de66a0c925a4246, - limb1: 0x5067fb22a844392d0a237acf, - limb2: 0xf4f46e4d6ea479f0d878f653, - limb3: 0x2a6c2af7a3866c637892ac4 + limb0: 0x419847bd7c1f542e3a38b0ee, + limb1: 0x6d81da9fd456c7699ec5a02d, + limb2: 0x7bb02418a48065d4a6fbcdd0, + limb3: 0x2158e75b3ad1be8adc4f2fd } }, G2Line { r0a0: u384 { - limb0: 0x419590f4b7c4c8592d3b79dc, - limb1: 0x13b221123f6ae42dee8aee65, - limb2: 0xf1ab6984860ca71d99e5e90e, - limb3: 0xa512c4c723c52319d9bb5ca + limb0: 0x9ed5874a93e2a5c1167bd832, + limb1: 0xb42afdb134b0481e8259c82a, + limb2: 0xbb060f82ea760a3b744f9fd6, + limb3: 0xdaf9adced467ce2101b44a9 }, r0a1: u384 { - limb0: 0xd86b08844ee415031f4beafc, - limb1: 0xa6f9f9ea73dcac79f10e7c1, - limb2: 0x63977601526ba7a16ef8669c, - limb3: 0x6037fa72a8f38890389233d + limb0: 0x41f8b3d63ecc95fe95813c68, + limb1: 0xc4b8e88e7bab1ed199210b24, + limb2: 0x74c13644333ee583f9faa830, + limb3: 0x893b33fb2141519964b7dd0 }, r1a0: u384 { - limb0: 0x925d359cd3f230dea2b8c7c8, - limb1: 0x2537aba4c649fdb1d0755677, - limb2: 0xac49749e20cbb0987b9a168d, - limb3: 0x87c82e7db5e901ba19aada4 + limb0: 0x748cf4d3df15043e0ae8f99e, + limb1: 0x4766d8800a6ffc614d6443ab, + limb2: 0x5aee246adbf4dda2ea418cbf, + limb3: 0x9bc3664485ae5aecc3971ae }, r1a1: u384 { - limb0: 0xafd75226a1ca9991bc50c82b, - limb1: 0x62effb9b4321fc93961b1125, - limb2: 0x8376540c594a90fac459f940, - limb3: 0x10d2e3335483610e181829c4 + limb0: 0x5983d25e0767a793c41206ca, + limb1: 0xde625e19387d9ffd33198b83, + limb2: 0xa98eec8506c321eaaeb033aa, + limb3: 0x13fb86041982c5d065bd87e9 } }, G2Line { r0a0: u384 { - limb0: 0x419590f4b7c4c8592d3b79dc, - limb1: 0x13b221123f6ae42dee8aee65, - limb2: 0xf1ab6984860ca71d99e5e90e, - limb3: 0xa512c4c723c52319d9bb5ca + limb0: 0x9ed5874a93e2a5c1167bd832, + limb1: 0xb42afdb134b0481e8259c82a, + limb2: 0xbb060f82ea760a3b744f9fd6, + limb3: 0xdaf9adced467ce2101b44a9 }, r0a1: u384 { - limb0: 0xd86b08844ee415031f4beafc, - limb1: 0xa6f9f9ea73dcac79f10e7c1, - limb2: 0x63977601526ba7a16ef8669c, - limb3: 0x6037fa72a8f38890389233d + limb0: 0x41f8b3d63ecc95fe95813c68, + limb1: 0xc4b8e88e7bab1ed199210b24, + limb2: 0x74c13644333ee583f9faa830, + limb3: 0x893b33fb2141519964b7dd0 }, r1a0: u384 { - limb0: 0x925d359cd3f230dea2b8c7c8, - limb1: 0x2537aba4c649fdb1d0755677, - limb2: 0xac49749e20cbb0987b9a168d, - limb3: 0x87c82e7db5e901ba19aada4 + limb0: 0x748cf4d3df15043e0ae8f99e, + limb1: 0x4766d8800a6ffc614d6443ab, + limb2: 0x5aee246adbf4dda2ea418cbf, + limb3: 0x9bc3664485ae5aecc3971ae }, r1a1: u384 { - limb0: 0xafd75226a1ca9991bc50c82b, - limb1: 0x62effb9b4321fc93961b1125, - limb2: 0x8376540c594a90fac459f940, - limb3: 0x10d2e3335483610e181829c4 + limb0: 0x5983d25e0767a793c41206ca, + limb1: 0xde625e19387d9ffd33198b83, + limb2: 0xa98eec8506c321eaaeb033aa, + limb3: 0x13fb86041982c5d065bd87e9 } }, G2Line { r0a0: u384 { - limb0: 0xdb2cb45b4fa33907130a9b80, - limb1: 0x3799e98df0efe977c271f5e, - limb2: 0xc8f0d7a4464af79837597e87, - limb3: 0xab850cd6f456fa6ad46156d + limb0: 0xf43059462494151b4ab2087e, + limb1: 0x5cd28f7ec6fd9d6b4b086f39, + limb2: 0x30dd2311b5bafb9250d116c1, + limb3: 0xfc6edf74dff631a32fca3fa }, r0a1: u384 { - limb0: 0x8697955e28ad992ad63212ee, - limb1: 0xa8099c19ea23e27a27555626, - limb2: 0x9ebd7814b7381d6372f71253, - limb3: 0x22f3c00c29822d56c103c57 + limb0: 0x22cbcd3ea9f0d0132809d8af, + limb1: 0x4cb242156a7cdc2991ee9c0e, + limb2: 0x1fe80337fb837a5476523f5c, + limb3: 0x7f64410e73c5db773ca6b66 }, r1a0: u384 { - limb0: 0x160f2968e9a2dd0b6be49642, - limb1: 0xf3f7ab198c0962e0fbda3ea3, - limb2: 0xc09bd377c81df36a7e661108, - limb3: 0x59a870114f1d32fc73ba72 + limb0: 0x32c05aa3eaefba532df15a8, + limb1: 0x7bee89a662e4138e44da3c9a, + limb2: 0xc92ee59d9405d5a905cf2fdb, + limb3: 0x163a2f67158e242bfbb18c52 }, r1a1: u384 { - limb0: 0xede50c3432aae8893326a656, - limb1: 0xbc2b750da1bde6b74fd4344f, - limb2: 0x86bcf0ecc4bd0d1c7736af75, - limb3: 0x6b235aa50863e14d501d7dc + limb0: 0x55506de03a538ff69b9622a1, + limb1: 0x1883fbdba6795d64f7791ed5, + limb2: 0x8d52a259f76a0498bb3b877f, + limb3: 0x2cff61e78b0054925baa456 } }, G2Line { r0a0: u384 { - limb0: 0xdb2cb45b4fa33907130a9b80, - limb1: 0x3799e98df0efe977c271f5e, - limb2: 0xc8f0d7a4464af79837597e87, - limb3: 0xab850cd6f456fa6ad46156d + limb0: 0xf43059462494151b4ab2087e, + limb1: 0x5cd28f7ec6fd9d6b4b086f39, + limb2: 0x30dd2311b5bafb9250d116c1, + limb3: 0xfc6edf74dff631a32fca3fa }, r0a1: u384 { - limb0: 0x8697955e28ad992ad63212ee, - limb1: 0xa8099c19ea23e27a27555626, - limb2: 0x9ebd7814b7381d6372f71253, - limb3: 0x22f3c00c29822d56c103c57 + limb0: 0x22cbcd3ea9f0d0132809d8af, + limb1: 0x4cb242156a7cdc2991ee9c0e, + limb2: 0x1fe80337fb837a5476523f5c, + limb3: 0x7f64410e73c5db773ca6b66 }, r1a0: u384 { - limb0: 0x160f2968e9a2dd0b6be49642, - limb1: 0xf3f7ab198c0962e0fbda3ea3, - limb2: 0xc09bd377c81df36a7e661108, - limb3: 0x59a870114f1d32fc73ba72 + limb0: 0x32c05aa3eaefba532df15a8, + limb1: 0x7bee89a662e4138e44da3c9a, + limb2: 0xc92ee59d9405d5a905cf2fdb, + limb3: 0x163a2f67158e242bfbb18c52 }, r1a1: u384 { - limb0: 0xede50c3432aae8893326a656, - limb1: 0xbc2b750da1bde6b74fd4344f, - limb2: 0x86bcf0ecc4bd0d1c7736af75, - limb3: 0x6b235aa50863e14d501d7dc + limb0: 0x55506de03a538ff69b9622a1, + limb1: 0x1883fbdba6795d64f7791ed5, + limb2: 0x8d52a259f76a0498bb3b877f, + limb3: 0x2cff61e78b0054925baa456 } }, G2Line { r0a0: u384 { - limb0: 0x32ffa135568abef7235c087a, - limb1: 0xd3c95357b6e90212cd6d9e31, - limb2: 0xef38ba3bebf92c000fd4005d, - limb3: 0xdd7e6a2dd6ae27f63292b89 + limb0: 0x5468cccd649f5f50828f6f59, + limb1: 0x2ff2349d16035594b6932990, + limb2: 0x3a5195f740987d342be92f18, + limb3: 0xa20f374eb29e01db8f41902 }, r0a1: u384 { - limb0: 0xb26c0f73470e42e69322b5ff, - limb1: 0x48c45cf0ca038128fb46880d, - limb2: 0xad6b8eabd05aca1dda76fdd4, - limb3: 0xf4f5ac828bdc9c226f5129f + limb0: 0xd98a436aeb477edb61c5262d, + limb1: 0xc89b894c7895fd21e86b51f7, + limb2: 0x926eb138e4aa840edc0e677e, + limb3: 0x461388814e94e8fa2a15e40 }, r1a0: u384 { - limb0: 0xa01d9f0c784f66716b1a2169, - limb1: 0x722ee45fcc882878c6a9c316, - limb2: 0x36e48d5489bbde0d5971becf, - limb3: 0x481e77f20d9d78f46d90887 + limb0: 0x684e1f1e2e72619d41ad8eb7, + limb1: 0xd6782445423e580f3476f9f9, + limb2: 0x235a44500a9d160446a5bddc, + limb3: 0xd00713abd0c5f631c36c5e6 }, r1a1: u384 { - limb0: 0x35209600bfe95fe9c0dd79df, - limb1: 0x68735fe0c7617c4161abe8cb, - limb2: 0xcc83dfb53119e887b37d4723, - limb3: 0x18cadd185e43a5dea6f74998 + limb0: 0xf07a607d3ecf101d58fc2489, + limb1: 0xcd22610bafa804a71cdce810, + limb2: 0x6a02abac5a58c663011aa1f, + limb3: 0x29de1350b9fa34cc4874766 } }, G2Line { r0a0: u384 { - limb0: 0x32ffa135568abef7235c087a, - limb1: 0xd3c95357b6e90212cd6d9e31, - limb2: 0xef38ba3bebf92c000fd4005d, - limb3: 0xdd7e6a2dd6ae27f63292b89 + limb0: 0x5468cccd649f5f50828f6f59, + limb1: 0x2ff2349d16035594b6932990, + limb2: 0x3a5195f740987d342be92f18, + limb3: 0xa20f374eb29e01db8f41902 }, r0a1: u384 { - limb0: 0xb26c0f73470e42e69322b5ff, - limb1: 0x48c45cf0ca038128fb46880d, - limb2: 0xad6b8eabd05aca1dda76fdd4, - limb3: 0xf4f5ac828bdc9c226f5129f + limb0: 0xd98a436aeb477edb61c5262d, + limb1: 0xc89b894c7895fd21e86b51f7, + limb2: 0x926eb138e4aa840edc0e677e, + limb3: 0x461388814e94e8fa2a15e40 }, r1a0: u384 { - limb0: 0xa01d9f0c784f66716b1a2169, - limb1: 0x722ee45fcc882878c6a9c316, - limb2: 0x36e48d5489bbde0d5971becf, - limb3: 0x481e77f20d9d78f46d90887 + limb0: 0x684e1f1e2e72619d41ad8eb7, + limb1: 0xd6782445423e580f3476f9f9, + limb2: 0x235a44500a9d160446a5bddc, + limb3: 0xd00713abd0c5f631c36c5e6 }, r1a1: u384 { - limb0: 0x35209600bfe95fe9c0dd79df, - limb1: 0x68735fe0c7617c4161abe8cb, - limb2: 0xcc83dfb53119e887b37d4723, - limb3: 0x18cadd185e43a5dea6f74998 + limb0: 0xf07a607d3ecf101d58fc2489, + limb1: 0xcd22610bafa804a71cdce810, + limb2: 0x6a02abac5a58c663011aa1f, + limb3: 0x29de1350b9fa34cc4874766 } }, G2Line { r0a0: u384 { - limb0: 0xb8733d5c17825e39a6245f32, - limb1: 0xa55a4a6f15cc8e24b33b20de, - limb2: 0x9c7dfcb3b060f2cf35769782, - limb3: 0x880099328c8d71cfcbb6640 + limb0: 0x4e955be131680457999a786e, + limb1: 0xb8a3466d1f50dc841f50dd53, + limb2: 0x75efb94692f6d5de57fc8609, + limb3: 0x1550761b0b00c8008522c3d0 }, r0a1: u384 { - limb0: 0xdd3a9f9530c57265d94ba021, - limb1: 0x25e60565503071a605ea8a40, - limb2: 0xd81696b208c9a7db76cce860, - limb3: 0x14421c23a34d0587522a19be + limb0: 0xdf2281afe41938a9891e0f2, + limb1: 0x7338e84c16f4c1a3141c1382, + limb2: 0x7269a9e69889291d5395227a, + limb3: 0x16cbd178015a8098509e1caa }, r1a0: u384 { - limb0: 0x9e272f84ad279ffd423aa90a, - limb1: 0xffd52b06d9aeb61925379bb2, - limb2: 0x31af171a7cb6464a385e47e2, - limb3: 0xa4e9a54e661afc9e6e135f4 + limb0: 0x1cef06bbd9e71d4438a5052f, + limb1: 0xf045d3479ad9aa40b16601de, + limb2: 0xcedb3a06e3bf3805919beac, + limb3: 0x664dfb89dd2e293c30d8a80 }, r1a1: u384 { - limb0: 0x928f9c95fe7d6765f22c997c, - limb1: 0x43316765e27a8ac2ddcd76ec, - limb2: 0x789f86f87ca0687b29599acd, - limb3: 0x3648fd2adc25e5260340bf7 + limb0: 0x80e3d05acac0a472fad04f82, + limb1: 0x583269e3d734e9b15cebbc7d, + limb2: 0xea7477948d00c61ec92b10b7, + limb3: 0x163a27a5089d314ab8d8cf34 } }, G2Line { r0a0: u384 { - limb0: 0xb8733d5c17825e39a6245f32, - limb1: 0xa55a4a6f15cc8e24b33b20de, - limb2: 0x9c7dfcb3b060f2cf35769782, - limb3: 0x880099328c8d71cfcbb6640 + limb0: 0x4e955be131680457999a786e, + limb1: 0xb8a3466d1f50dc841f50dd53, + limb2: 0x75efb94692f6d5de57fc8609, + limb3: 0x1550761b0b00c8008522c3d0 }, r0a1: u384 { - limb0: 0xdd3a9f9530c57265d94ba021, - limb1: 0x25e60565503071a605ea8a40, - limb2: 0xd81696b208c9a7db76cce860, - limb3: 0x14421c23a34d0587522a19be + limb0: 0xdf2281afe41938a9891e0f2, + limb1: 0x7338e84c16f4c1a3141c1382, + limb2: 0x7269a9e69889291d5395227a, + limb3: 0x16cbd178015a8098509e1caa }, r1a0: u384 { - limb0: 0x9e272f84ad279ffd423aa90a, - limb1: 0xffd52b06d9aeb61925379bb2, - limb2: 0x31af171a7cb6464a385e47e2, - limb3: 0xa4e9a54e661afc9e6e135f4 + limb0: 0x1cef06bbd9e71d4438a5052f, + limb1: 0xf045d3479ad9aa40b16601de, + limb2: 0xcedb3a06e3bf3805919beac, + limb3: 0x664dfb89dd2e293c30d8a80 }, r1a1: u384 { - limb0: 0x928f9c95fe7d6765f22c997c, - limb1: 0x43316765e27a8ac2ddcd76ec, - limb2: 0x789f86f87ca0687b29599acd, - limb3: 0x3648fd2adc25e5260340bf7 + limb0: 0x80e3d05acac0a472fad04f82, + limb1: 0x583269e3d734e9b15cebbc7d, + limb2: 0xea7477948d00c61ec92b10b7, + limb3: 0x163a27a5089d314ab8d8cf34 } }, G2Line { r0a0: u384 { - limb0: 0xf1a918c6da331badb2e951d2, - limb1: 0xf16f76325d2c954074269c43, - limb2: 0x12bdf656b102851888dbd1da, - limb3: 0xcd4239f520efae36205d878 + limb0: 0x7a8b2f99201cf6096d4d4b86, + limb1: 0xa896e5b0f4e93d49e8a2691b, + limb2: 0xd5d910d71a5706a6f897976c, + limb3: 0x10913202008b672fafa4272b }, r0a1: u384 { - limb0: 0xed92e5a054290912c2f58fdc, - limb1: 0x9cee15289cefbe5cef05403, - limb2: 0xc5375412adfe56fc9b45dfba, - limb3: 0x8ba1567b2374fcd941f2d02 + limb0: 0xbcabe4aba3fd969494c6f463, + limb1: 0x416f6d51b78dc628bacd84c1, + limb2: 0xb92836a7855f2590720a01c6, + limb3: 0x19b605e839e9850b48d8ec2c }, r1a0: u384 { - limb0: 0x89ba6f45d5ade641fb4fe681, - limb1: 0xee221fe37d14cfc7db866277, - limb2: 0x2f567d1a383d108dd7a206d8, - limb3: 0x26316b73edf3a4b74ac8ca0 + limb0: 0x49620f3d26493fcd7396493b, + limb1: 0x17313fc388a7ac05a8b111bb, + limb2: 0x292e458d09c07af68fcfc74e, + limb3: 0x3a6acacd6cbc411d7eb7947 }, r1a1: u384 { - limb0: 0xef1bf43406fd811d3923b64e, - limb1: 0xe60218148e13fb16187781d8, - limb2: 0xf0623243b832ab262ae2bd53, - limb3: 0x14ec3680120f2c2b4b9c73bb + limb0: 0xd0fdcd4eeaeb1a6ecccc011b, + limb1: 0x40e42fe4d7574bcb53834b69, + limb2: 0x799946d2b7b28b127a821e57, + limb3: 0x351c5a26dcce6ce7fca6249 } }, G2Line { r0a0: u384 { - limb0: 0xf1a918c6da331badb2e951d2, - limb1: 0xf16f76325d2c954074269c43, - limb2: 0x12bdf656b102851888dbd1da, - limb3: 0xcd4239f520efae36205d878 + limb0: 0x7a8b2f99201cf6096d4d4b86, + limb1: 0xa896e5b0f4e93d49e8a2691b, + limb2: 0xd5d910d71a5706a6f897976c, + limb3: 0x10913202008b672fafa4272b }, r0a1: u384 { - limb0: 0xed92e5a054290912c2f58fdc, - limb1: 0x9cee15289cefbe5cef05403, - limb2: 0xc5375412adfe56fc9b45dfba, - limb3: 0x8ba1567b2374fcd941f2d02 + limb0: 0xbcabe4aba3fd969494c6f463, + limb1: 0x416f6d51b78dc628bacd84c1, + limb2: 0xb92836a7855f2590720a01c6, + limb3: 0x19b605e839e9850b48d8ec2c }, r1a0: u384 { - limb0: 0x89ba6f45d5ade641fb4fe681, - limb1: 0xee221fe37d14cfc7db866277, - limb2: 0x2f567d1a383d108dd7a206d8, - limb3: 0x26316b73edf3a4b74ac8ca0 + limb0: 0x49620f3d26493fcd7396493b, + limb1: 0x17313fc388a7ac05a8b111bb, + limb2: 0x292e458d09c07af68fcfc74e, + limb3: 0x3a6acacd6cbc411d7eb7947 }, r1a1: u384 { - limb0: 0xef1bf43406fd811d3923b64e, - limb1: 0xe60218148e13fb16187781d8, - limb2: 0xf0623243b832ab262ae2bd53, - limb3: 0x14ec3680120f2c2b4b9c73bb + limb0: 0xd0fdcd4eeaeb1a6ecccc011b, + limb1: 0x40e42fe4d7574bcb53834b69, + limb2: 0x799946d2b7b28b127a821e57, + limb3: 0x351c5a26dcce6ce7fca6249 } }, G2Line { r0a0: u384 { - limb0: 0x8a52a39107a0ec10b8344191, - limb1: 0x62271773d04707e777ef384a, - limb2: 0x542571bdc55955faffd48ae3, - limb3: 0x159babcf86f178dd3b05db0c + limb0: 0x56de0d67449950f9a27e88fa, + limb1: 0xce138b184f06c8f264650446, + limb2: 0x31ca7924a667107cb9380709, + limb3: 0x17960cbcef34dc014292ac06 }, r0a1: u384 { - limb0: 0x1de09c02242d5d15e6ae653f, - limb1: 0x4394847acee312c8908b60f3, - limb2: 0xac48e5dde8cba73894a0a583, - limb3: 0x10ff2a6e917ac68a76e210f7 + limb0: 0x31295353150179142d6ddbc1, + limb1: 0x2fafe4eb2df7753c10441bf, + limb2: 0x403786f898262dcd349b2eb5, + limb3: 0x131cc0205e7c06e7d7dfe573 }, r1a0: u384 { - limb0: 0x1743256d4776de623ae41e0f, - limb1: 0xa321f02e18e0e34a0c8e2902, - limb2: 0xa26dfa1e821c3313944961c2, - limb3: 0xe9e246cbb6bf85e62b7fbc1 + limb0: 0xd79406d46f1c9d7137fcc172, + limb1: 0x84793aeb8b5ca9891e9a6563, + limb2: 0x4b1ab7811bfafaf6dfb745fc, + limb3: 0x17c50d8fcd5f550d4a2a64ae }, r1a1: u384 { - limb0: 0x69181258cdd25a4cc7dd77c9, - limb1: 0xbd425539e0bb572f3c7c0d7b, - limb2: 0xbbfbf769a5334ea223cd755a, - limb3: 0xddbb0fea81f0f2e78bed8ac + limb0: 0x5c3d7e34c90dc48a32c70868, + limb1: 0x4e1b7bc28d0de9519e604184, + limb2: 0xf258c4f3f3ba0baaccfac11b, + limb3: 0x11ec2c0924dee1e8967b559a } }, G2Line { r0a0: u384 { - limb0: 0x8a52a39107a0ec10b8344191, - limb1: 0x62271773d04707e777ef384a, - limb2: 0x542571bdc55955faffd48ae3, - limb3: 0x159babcf86f178dd3b05db0c + limb0: 0x56de0d67449950f9a27e88fa, + limb1: 0xce138b184f06c8f264650446, + limb2: 0x31ca7924a667107cb9380709, + limb3: 0x17960cbcef34dc014292ac06 }, r0a1: u384 { - limb0: 0x1de09c02242d5d15e6ae653f, - limb1: 0x4394847acee312c8908b60f3, - limb2: 0xac48e5dde8cba73894a0a583, - limb3: 0x10ff2a6e917ac68a76e210f7 + limb0: 0x31295353150179142d6ddbc1, + limb1: 0x2fafe4eb2df7753c10441bf, + limb2: 0x403786f898262dcd349b2eb5, + limb3: 0x131cc0205e7c06e7d7dfe573 }, r1a0: u384 { - limb0: 0x1743256d4776de623ae41e0f, - limb1: 0xa321f02e18e0e34a0c8e2902, - limb2: 0xa26dfa1e821c3313944961c2, - limb3: 0xe9e246cbb6bf85e62b7fbc1 + limb0: 0xd79406d46f1c9d7137fcc172, + limb1: 0x84793aeb8b5ca9891e9a6563, + limb2: 0x4b1ab7811bfafaf6dfb745fc, + limb3: 0x17c50d8fcd5f550d4a2a64ae }, r1a1: u384 { - limb0: 0x69181258cdd25a4cc7dd77c9, - limb1: 0xbd425539e0bb572f3c7c0d7b, - limb2: 0xbbfbf769a5334ea223cd755a, - limb3: 0xddbb0fea81f0f2e78bed8ac + limb0: 0x5c3d7e34c90dc48a32c70868, + limb1: 0x4e1b7bc28d0de9519e604184, + limb2: 0xf258c4f3f3ba0baaccfac11b, + limb3: 0x11ec2c0924dee1e8967b559a } }, G2Line { r0a0: u384 { - limb0: 0xe9bfb367a0db832b0d1c26db, - limb1: 0xa48c428e5b08ba15f650dbed, - limb2: 0xd916f689b93e37f1927e257c, - limb3: 0x224b5c7dd8f51a0b2861a69 + limb0: 0xe60081576a59a2679221795e, + limb1: 0x99ee512fdfcd346784f34a48, + limb2: 0x735b00cd677e6e1ba38c009f, + limb3: 0x178d4accb6fb9b6cbf9df577 }, r0a1: u384 { - limb0: 0x7e9b1b5701d09a782224612a, - limb1: 0x3f67130bb4d3e352fa03761a, - limb2: 0x8de6921d9f950ad8f590150f, - limb3: 0xd41227ac7bf2822c782355e + limb0: 0xcd7b2447c71a9e9b8b9db98, + limb1: 0x97d5028ae6c2f7027ced11b2, + limb2: 0xf8ea35a3d06f6aca9cffd3b, + limb3: 0xbec0ed2f513414494bd0f6d }, r1a0: u384 { - limb0: 0x1bf8f3da6407cf1084f5a645, - limb1: 0x1c66926201504bcae8d94538, - limb2: 0x212e24b9469b5f1da5a273ca, - limb3: 0x152bd7ba7802d3a4fe4eea68 + limb0: 0xca6aca5778f88316e121b6f2, + limb1: 0x23c098f55746b7d1c5e168f9, + limb2: 0x4be5fc4f8b81d965ec4cd861, + limb3: 0x6c156b4f517a9156e82cb14 }, r1a1: u384 { - limb0: 0x4eac0f6bde521243da1a0d0f, - limb1: 0xf819d7e262593bdb181c0790, - limb2: 0x9c075e5eb03bb34aeaf3ddaf, - limb3: 0xb860c68a9ed844ef4e218da + limb0: 0x59e184cdff8a20200dee525d, + limb1: 0x12327d5b5691bb513688bda3, + limb2: 0xa653bf47392176e8a509eb6b, + limb3: 0x6302b0d5f33fc6d3799728d } }, G2Line { r0a0: u384 { - limb0: 0xe9bfb367a0db832b0d1c26db, - limb1: 0xa48c428e5b08ba15f650dbed, - limb2: 0xd916f689b93e37f1927e257c, - limb3: 0x224b5c7dd8f51a0b2861a69 + limb0: 0xe60081576a59a2679221795e, + limb1: 0x99ee512fdfcd346784f34a48, + limb2: 0x735b00cd677e6e1ba38c009f, + limb3: 0x178d4accb6fb9b6cbf9df577 }, r0a1: u384 { - limb0: 0x7e9b1b5701d09a782224612a, - limb1: 0x3f67130bb4d3e352fa03761a, - limb2: 0x8de6921d9f950ad8f590150f, - limb3: 0xd41227ac7bf2822c782355e + limb0: 0xcd7b2447c71a9e9b8b9db98, + limb1: 0x97d5028ae6c2f7027ced11b2, + limb2: 0xf8ea35a3d06f6aca9cffd3b, + limb3: 0xbec0ed2f513414494bd0f6d }, r1a0: u384 { - limb0: 0x1bf8f3da6407cf1084f5a645, - limb1: 0x1c66926201504bcae8d94538, - limb2: 0x212e24b9469b5f1da5a273ca, - limb3: 0x152bd7ba7802d3a4fe4eea68 + limb0: 0xca6aca5778f88316e121b6f2, + limb1: 0x23c098f55746b7d1c5e168f9, + limb2: 0x4be5fc4f8b81d965ec4cd861, + limb3: 0x6c156b4f517a9156e82cb14 }, r1a1: u384 { - limb0: 0x4eac0f6bde521243da1a0d0f, - limb1: 0xf819d7e262593bdb181c0790, - limb2: 0x9c075e5eb03bb34aeaf3ddaf, - limb3: 0xb860c68a9ed844ef4e218da + limb0: 0x59e184cdff8a20200dee525d, + limb1: 0x12327d5b5691bb513688bda3, + limb2: 0xa653bf47392176e8a509eb6b, + limb3: 0x6302b0d5f33fc6d3799728d } }, G2Line { r0a0: u384 { - limb0: 0x6bd519469c0a6db70833ab59, - limb1: 0x85d4d9ac3f772687e047b38b, - limb2: 0xf772d3b9bc792831f8dc4da0, - limb3: 0x83ad4ea2e572323c5ed4cae + limb0: 0x8289ee9e6820add91b6e9f3c, + limb1: 0x161cccd4985697fa09846edf, + limb2: 0x7a16c4169c620eab78a54ae0, + limb3: 0xb43112e6bf81d6bf3265d2a }, r0a1: u384 { - limb0: 0xda51516f555646564a5c763f, - limb1: 0xe2e61f63fd1b2ec441e13edc, - limb2: 0xee9acd1de7e13ea5f7612615, - limb3: 0xe17ce0bf64cb2d5d0687027 + limb0: 0xa19c344f64ea5350f0a08f3c, + limb1: 0x4b3b0b1f34d7db6b30ab1be3, + limb2: 0xdd3563e987285c49a9c0ea5f, + limb3: 0xa5797654377bf54d8992f94 }, r1a0: u384 { - limb0: 0x46432e99c8d88b233d4b56e1, - limb1: 0x2176899ab708478710bb559f, - limb2: 0xf1596a22deef10f396ccb4d0, - limb3: 0x104170ed422177535e2b83c1 + limb0: 0xa65f6f3c877ce8e73a114724, + limb1: 0x5b64b753040c29a75a01e69b, + limb2: 0x628c82c1c0e09f1aaab0a61, + limb3: 0x1017f0dd39c644eb0e392947 }, r1a1: u384 { - limb0: 0x1397bda781065e8713557d91, - limb1: 0x46acd993603b042971d606a5, - limb2: 0x56672e297d9a7e6432222c6a, - limb3: 0x13c3e2eacfd4f03083771057 + limb0: 0xf8a5bcf4817c937d81f315d1, + limb1: 0x21f7d8e74be6d6410e62f9e1, + limb2: 0xbeafe32cf1ec912b9927be97, + limb3: 0x1074d4a9995442048f5dc552 } }, G2Line { r0a0: u384 { - limb0: 0x6bd519469c0a6db70833ab59, - limb1: 0x85d4d9ac3f772687e047b38b, - limb2: 0xf772d3b9bc792831f8dc4da0, - limb3: 0x83ad4ea2e572323c5ed4cae + limb0: 0x8289ee9e6820add91b6e9f3c, + limb1: 0x161cccd4985697fa09846edf, + limb2: 0x7a16c4169c620eab78a54ae0, + limb3: 0xb43112e6bf81d6bf3265d2a }, r0a1: u384 { - limb0: 0xda51516f555646564a5c763f, - limb1: 0xe2e61f63fd1b2ec441e13edc, - limb2: 0xee9acd1de7e13ea5f7612615, - limb3: 0xe17ce0bf64cb2d5d0687027 + limb0: 0xa19c344f64ea5350f0a08f3c, + limb1: 0x4b3b0b1f34d7db6b30ab1be3, + limb2: 0xdd3563e987285c49a9c0ea5f, + limb3: 0xa5797654377bf54d8992f94 }, r1a0: u384 { - limb0: 0x46432e99c8d88b233d4b56e1, - limb1: 0x2176899ab708478710bb559f, - limb2: 0xf1596a22deef10f396ccb4d0, - limb3: 0x104170ed422177535e2b83c1 + limb0: 0xa65f6f3c877ce8e73a114724, + limb1: 0x5b64b753040c29a75a01e69b, + limb2: 0x628c82c1c0e09f1aaab0a61, + limb3: 0x1017f0dd39c644eb0e392947 }, r1a1: u384 { - limb0: 0x1397bda781065e8713557d91, - limb1: 0x46acd993603b042971d606a5, - limb2: 0x56672e297d9a7e6432222c6a, - limb3: 0x13c3e2eacfd4f03083771057 + limb0: 0xf8a5bcf4817c937d81f315d1, + limb1: 0x21f7d8e74be6d6410e62f9e1, + limb2: 0xbeafe32cf1ec912b9927be97, + limb3: 0x1074d4a9995442048f5dc552 } }, G2Line { r0a0: u384 { - limb0: 0x469ac5fc1ac00ce9ff5d6896, - limb1: 0xed1a968d5437d83198eb7a35, - limb2: 0x628c707fd4b54e163d242e7f, - limb3: 0x133da77ba17de20bbb751230 + limb0: 0xf5f0bc431d8e3c80c9af43ec, + limb1: 0xe1bfd26afc9cc39a0566ce43, + limb2: 0x56e0dd02d42fee35ff65330b, + limb3: 0xcb5a49bf5f851b8dfe3526c }, r0a1: u384 { - limb0: 0x813447c71991ae21740e91c3, - limb1: 0x7b494f96f2ff34993ba63fd2, - limb2: 0x2d553fb9f14105dfcff00edb, - limb3: 0x87fc96e18fd564074828ce6 + limb0: 0x1b9c89ae090424c785c6201e, + limb1: 0x9aa7a9da8db576af296e542a, + limb2: 0xf2e8447430a25ab638a55680, + limb3: 0xa10904e10bf2511e4345039 }, r1a0: u384 { - limb0: 0xe5c72a4b29e05d9864262a90, - limb1: 0x725897e08baa364db3104e96, - limb2: 0x1fef3ee8df44319b941a0711, - limb3: 0x1238ad6245e98702afd9fa0d + limb0: 0x71a9bbb204d330d58a16fddc, + limb1: 0xc0b0adcf1611ff894f97933e, + limb2: 0x835a3a6abbb86ab551ceb573, + limb3: 0x634ccea2a60cdbd34c941c1 }, r1a1: u384 { - limb0: 0xe8ddbe5a3f8ff5b33183f0a, - limb1: 0x2229e588e2a4974c2ccd3187, - limb2: 0xb1cc300fc8e28c90baf4d38b, - limb3: 0x188b93baa142124027ee0cd6 + limb0: 0xb5ff392b31c0d3eaba4cd272, + limb1: 0x160f3e778181730bdfd887c7, + limb2: 0xea813bbe8c520a16b1e7a2c3, + limb3: 0x14d73adeb7fdf6a4a22c9ffd } }, G2Line { r0a0: u384 { - limb0: 0x469ac5fc1ac00ce9ff5d6896, - limb1: 0xed1a968d5437d83198eb7a35, - limb2: 0x628c707fd4b54e163d242e7f, - limb3: 0x133da77ba17de20bbb751230 + limb0: 0xf5f0bc431d8e3c80c9af43ec, + limb1: 0xe1bfd26afc9cc39a0566ce43, + limb2: 0x56e0dd02d42fee35ff65330b, + limb3: 0xcb5a49bf5f851b8dfe3526c }, r0a1: u384 { - limb0: 0x813447c71991ae21740e91c3, - limb1: 0x7b494f96f2ff34993ba63fd2, - limb2: 0x2d553fb9f14105dfcff00edb, - limb3: 0x87fc96e18fd564074828ce6 + limb0: 0x1b9c89ae090424c785c6201e, + limb1: 0x9aa7a9da8db576af296e542a, + limb2: 0xf2e8447430a25ab638a55680, + limb3: 0xa10904e10bf2511e4345039 }, r1a0: u384 { - limb0: 0xe5c72a4b29e05d9864262a90, - limb1: 0x725897e08baa364db3104e96, - limb2: 0x1fef3ee8df44319b941a0711, - limb3: 0x1238ad6245e98702afd9fa0d + limb0: 0x71a9bbb204d330d58a16fddc, + limb1: 0xc0b0adcf1611ff894f97933e, + limb2: 0x835a3a6abbb86ab551ceb573, + limb3: 0x634ccea2a60cdbd34c941c1 }, r1a1: u384 { - limb0: 0xe8ddbe5a3f8ff5b33183f0a, - limb1: 0x2229e588e2a4974c2ccd3187, - limb2: 0xb1cc300fc8e28c90baf4d38b, - limb3: 0x188b93baa142124027ee0cd6 + limb0: 0xb5ff392b31c0d3eaba4cd272, + limb1: 0x160f3e778181730bdfd887c7, + limb2: 0xea813bbe8c520a16b1e7a2c3, + limb3: 0x14d73adeb7fdf6a4a22c9ffd } }, G2Line { r0a0: u384 { - limb0: 0x60b6f478c5fb570555c652f7, - limb1: 0x8432f575fc231ffa8ba44ee3, - limb2: 0x4cbf173d818c6d864159c368, - limb3: 0x152ca19b4d1497a8e3b8e71 + limb0: 0xe99af5be34cdf3b6cd722b90, + limb1: 0x43bcb5a3050d0fc3f1656016, + limb2: 0xd9565b1e5e510b6264471bfa, + limb3: 0x12ee7303ded06b9853cbddbe }, r0a1: u384 { - limb0: 0xc6b533d62a7bc4778ee8a933, - limb1: 0x423d4f5366d5b00528cecfe6, - limb2: 0x6c1c52cb8dcb264601888581, - limb3: 0x130a21a4d9d2dd3d3058ad26 + limb0: 0x640c586fa840c267f3b5d99, + limb1: 0x9584c14b56c506ef287a149c, + limb2: 0x317fe0a92bd878e9d86b616d, + limb3: 0x12c415a497b04dbe9c645460 }, r1a0: u384 { - limb0: 0xe2c69f6437a35d936e13e350, - limb1: 0x8a05f7e5c8a2d5665083f, - limb2: 0x22bdd9e34209618e08527413, - limb3: 0x12238ad8c565cfc0e7624156 + limb0: 0x3b85dd33ea6b3619236bb988, + limb1: 0x7ce7ce7d9b2c5af2cc87a08a, + limb2: 0x677951177d5a61f6d3531b7b, + limb3: 0x188a8c03315728f1526806d2 }, r1a1: u384 { - limb0: 0x2afaf399d5d442ece155591f, - limb1: 0xb8babb480c6af14d74465993, - limb2: 0x3cc1d540c091d036a56f0435, - limb3: 0x867fdac4a5a9bd3d239c0ae + limb0: 0xa585bcb857e792c9af8ddec8, + limb1: 0x78f2e972ccd3af64b49ff79b, + limb2: 0x10be9acf81fad9cf48dc3e12, + limb3: 0x11a11578232a8dd660eaf5b6 } }, G2Line { r0a0: u384 { - limb0: 0x60b6f478c5fb570555c652f7, - limb1: 0x8432f575fc231ffa8ba44ee3, - limb2: 0x4cbf173d818c6d864159c368, - limb3: 0x152ca19b4d1497a8e3b8e71 + limb0: 0xe99af5be34cdf3b6cd722b90, + limb1: 0x43bcb5a3050d0fc3f1656016, + limb2: 0xd9565b1e5e510b6264471bfa, + limb3: 0x12ee7303ded06b9853cbddbe }, r0a1: u384 { - limb0: 0xc6b533d62a7bc4778ee8a933, - limb1: 0x423d4f5366d5b00528cecfe6, - limb2: 0x6c1c52cb8dcb264601888581, - limb3: 0x130a21a4d9d2dd3d3058ad26 + limb0: 0x640c586fa840c267f3b5d99, + limb1: 0x9584c14b56c506ef287a149c, + limb2: 0x317fe0a92bd878e9d86b616d, + limb3: 0x12c415a497b04dbe9c645460 }, r1a0: u384 { - limb0: 0xe2c69f6437a35d936e13e350, - limb1: 0x8a05f7e5c8a2d5665083f, - limb2: 0x22bdd9e34209618e08527413, - limb3: 0x12238ad8c565cfc0e7624156 + limb0: 0x3b85dd33ea6b3619236bb988, + limb1: 0x7ce7ce7d9b2c5af2cc87a08a, + limb2: 0x677951177d5a61f6d3531b7b, + limb3: 0x188a8c03315728f1526806d2 }, r1a1: u384 { - limb0: 0x2afaf399d5d442ece155591f, - limb1: 0xb8babb480c6af14d74465993, - limb2: 0x3cc1d540c091d036a56f0435, - limb3: 0x867fdac4a5a9bd3d239c0ae + limb0: 0xa585bcb857e792c9af8ddec8, + limb1: 0x78f2e972ccd3af64b49ff79b, + limb2: 0x10be9acf81fad9cf48dc3e12, + limb3: 0x11a11578232a8dd660eaf5b6 } }, G2Line { r0a0: u384 { - limb0: 0xe37e00937ba65924a8b608b7, - limb1: 0xba45df44bd8478ad81474084, - limb2: 0xbc3fe2e78b0df7e9c055574f, - limb3: 0x17a606ebbc91ba782360669f + limb0: 0xc7c0d285262c1b32ca6bc7c3, + limb1: 0x66824fd1b6de7089b82d478a, + limb2: 0x5e4beb5c4833b2e8f008208a, + limb3: 0x11c059b33ca3f500c11ee495 }, r0a1: u384 { - limb0: 0xfe59384820e675ed432fabc8, - limb1: 0xe13bddf4bc2c221229963724, - limb2: 0x5e6a1335be2405acdfc89f95, - limb3: 0x17efea7192c3b49e732185e4 + limb0: 0x66e0f227a61baa52b945ec8a, + limb1: 0x6906fbc82d5fd92075ef1513, + limb2: 0x55d0fec8a6600cb65d06bdb3, + limb3: 0x179aabda1a2af5b5e7777d9a }, r1a0: u384 { - limb0: 0x8d89d5f9a596495a9ed86723, - limb1: 0x37d884514dcdfe6330f16aeb, - limb2: 0xfbe2d93aae0cc87ec63792cc, - limb3: 0x5cb6d33a8fb5620f529e224 + limb0: 0xcb7dee20a686dcfcda3ddff8, + limb1: 0xfb1119a7914a33be6cb2a22d, + limb2: 0xda5c49c13a9c6084ad1ca51d, + limb3: 0x105195896eb7f46d1ac77d49 }, r1a1: u384 { - limb0: 0xf8b3f36c4710db2813109e3d, - limb1: 0x9fbcd8223cee401d6f69756, - limb2: 0xb5edc3a5a3953470cd2d154c, - limb3: 0x9a1f37f12a86190fbd3fae8 + limb0: 0xe1ae9ed15c3335b8f8b45b63, + limb1: 0xd7d2b2b828960267ff16d106, + limb2: 0x5fb6174880cb32afa5171325, + limb3: 0x73634ad3a80542b79db8125 } }, G2Line { r0a0: u384 { - limb0: 0xe37e00937ba65924a8b608b7, - limb1: 0xba45df44bd8478ad81474084, - limb2: 0xbc3fe2e78b0df7e9c055574f, - limb3: 0x17a606ebbc91ba782360669f + limb0: 0xc7c0d285262c1b32ca6bc7c3, + limb1: 0x66824fd1b6de7089b82d478a, + limb2: 0x5e4beb5c4833b2e8f008208a, + limb3: 0x11c059b33ca3f500c11ee495 }, r0a1: u384 { - limb0: 0xfe59384820e675ed432fabc8, - limb1: 0xe13bddf4bc2c221229963724, - limb2: 0x5e6a1335be2405acdfc89f95, - limb3: 0x17efea7192c3b49e732185e4 + limb0: 0x66e0f227a61baa52b945ec8a, + limb1: 0x6906fbc82d5fd92075ef1513, + limb2: 0x55d0fec8a6600cb65d06bdb3, + limb3: 0x179aabda1a2af5b5e7777d9a }, r1a0: u384 { - limb0: 0x8d89d5f9a596495a9ed86723, - limb1: 0x37d884514dcdfe6330f16aeb, - limb2: 0xfbe2d93aae0cc87ec63792cc, - limb3: 0x5cb6d33a8fb5620f529e224 + limb0: 0xcb7dee20a686dcfcda3ddff8, + limb1: 0xfb1119a7914a33be6cb2a22d, + limb2: 0xda5c49c13a9c6084ad1ca51d, + limb3: 0x105195896eb7f46d1ac77d49 }, r1a1: u384 { - limb0: 0xf8b3f36c4710db2813109e3d, - limb1: 0x9fbcd8223cee401d6f69756, - limb2: 0xb5edc3a5a3953470cd2d154c, - limb3: 0x9a1f37f12a86190fbd3fae8 + limb0: 0xe1ae9ed15c3335b8f8b45b63, + limb1: 0xd7d2b2b828960267ff16d106, + limb2: 0x5fb6174880cb32afa5171325, + limb3: 0x73634ad3a80542b79db8125 } }, G2Line { r0a0: u384 { - limb0: 0xf572a9254aab7d02e6e18e12, - limb1: 0x25f6a58a4ac6b2e5aa9e30fd, - limb2: 0x291d3ffd1882f554f7eb9030, - limb3: 0x14492ff41dabf1a3446a8bc + limb0: 0x7f6dc6043db1a0981ac8da53, + limb1: 0x3faeabcc298b965b8d17dcdc, + limb2: 0x41f566c0fb60863429f76f85, + limb3: 0xcb0b6d856433854a3196109 }, r0a1: u384 { - limb0: 0x496fa0c3a067ea0723bc8b04, - limb1: 0x235705d25abd810b4c0ab2d2, - limb2: 0xc904ea670d327a4da355254b, - limb3: 0xc5286ff6a01f80644909741 + limb0: 0xffba8b95da973789308c3dc5, + limb1: 0xbd1b17fcc64e96fca67718a8, + limb2: 0xba92704a60c4841667b06ceb, + limb3: 0xa0b2c0bbf592c14ec7e5fb }, r1a0: u384 { - limb0: 0xd2503834642cb86e2fd8e955, - limb1: 0xcb32eeb05d7c4619579c337, - limb2: 0xda6b97434d6356b07a5682d0, - limb3: 0x17d7a5ae75b00f8a6be0869d + limb0: 0x92beda1eba9dc43fc36a6079, + limb1: 0x91bbd7dad0ab28fca77a03a0, + limb2: 0x44f752b68348b2e3a24d3786, + limb3: 0x43b6a504a9015e8b46e81f4 }, r1a1: u384 { - limb0: 0xf6c18e9852a61741d1a58a71, - limb1: 0xbcb6992562146b15de7020cf, - limb2: 0x6a935df6b073126e40278764, - limb3: 0x43b43fd178daff064b160a7 + limb0: 0xc907c48da1cd91064530e901, + limb1: 0xe87af685a6b1fb6ad930fc15, + limb2: 0x4a5990c65cd9027b2c676e6e, + limb3: 0x11cde272cfa72574425da27 } }, G2Line { r0a0: u384 { - limb0: 0xf572a9254aab7d02e6e18e12, - limb1: 0x25f6a58a4ac6b2e5aa9e30fd, - limb2: 0x291d3ffd1882f554f7eb9030, - limb3: 0x14492ff41dabf1a3446a8bc + limb0: 0x7f6dc6043db1a0981ac8da53, + limb1: 0x3faeabcc298b965b8d17dcdc, + limb2: 0x41f566c0fb60863429f76f85, + limb3: 0xcb0b6d856433854a3196109 }, r0a1: u384 { - limb0: 0x496fa0c3a067ea0723bc8b04, - limb1: 0x235705d25abd810b4c0ab2d2, - limb2: 0xc904ea670d327a4da355254b, - limb3: 0xc5286ff6a01f80644909741 + limb0: 0xffba8b95da973789308c3dc5, + limb1: 0xbd1b17fcc64e96fca67718a8, + limb2: 0xba92704a60c4841667b06ceb, + limb3: 0xa0b2c0bbf592c14ec7e5fb }, r1a0: u384 { - limb0: 0xd2503834642cb86e2fd8e955, - limb1: 0xcb32eeb05d7c4619579c337, - limb2: 0xda6b97434d6356b07a5682d0, - limb3: 0x17d7a5ae75b00f8a6be0869d + limb0: 0x92beda1eba9dc43fc36a6079, + limb1: 0x91bbd7dad0ab28fca77a03a0, + limb2: 0x44f752b68348b2e3a24d3786, + limb3: 0x43b6a504a9015e8b46e81f4 }, r1a1: u384 { - limb0: 0xf6c18e9852a61741d1a58a71, - limb1: 0xbcb6992562146b15de7020cf, - limb2: 0x6a935df6b073126e40278764, - limb3: 0x43b43fd178daff064b160a7 + limb0: 0xc907c48da1cd91064530e901, + limb1: 0xe87af685a6b1fb6ad930fc15, + limb2: 0x4a5990c65cd9027b2c676e6e, + limb3: 0x11cde272cfa72574425da27 } }, G2Line { r0a0: u384 { - limb0: 0xf6319d592a5694bc46696337, - limb1: 0x451f2ed5bfd3336ad0d8ba97, - limb2: 0x7e1cebcedbdf77784260add0, - limb3: 0x132eaf25f317bb4157b8f15c + limb0: 0xdaf1249cec25e1591d0f9329, + limb1: 0x5531582b2fcbc58c12130411, + limb2: 0xd5683ab0df6813a370dced9d, + limb3: 0x16c61ae7af165d87be0cc2d5 }, r0a1: u384 { - limb0: 0x71c53170de382d079a96ff3, - limb1: 0xa38b8a791b34753e5cdb937, - limb2: 0xc28b4ec5173206100e5ebe66, - limb3: 0x184445c3b15e7e79225dbd30 + limb0: 0xb1c04d8f03fb3b2344ac4be5, + limb1: 0xb587962043ba3348ccce1f0f, + limb2: 0x5dd0fb61f2bcee0210d0af13, + limb3: 0x17804c1f2c60a8a7264b6047 }, r1a0: u384 { - limb0: 0x48a4c907af3c04d409af2b54, - limb1: 0x5ba9409869910df2721c4194, - limb2: 0x54edfb6d8e9d7166b4dd184e, - limb3: 0x22d50e6a0fc341969081f03 + limb0: 0xbb63ccb83f7ed4931470b669, + limb1: 0x7fd71cdcbf8b588e2169e56, + limb2: 0x497e41bd5035df06befd3d7e, + limb3: 0x1106425b52985ab1472f75a9 }, r1a1: u384 { - limb0: 0xb04646ff3f005ff50c9e18df, - limb1: 0x93f971f4287a88184972225f, - limb2: 0x15a689815939015e72535806, - limb3: 0x19fd611f130b5d1e8ede166f + limb0: 0xf6dcb781ff977354cbaeca11, + limb1: 0x69d27ee516fa1a11f4b63914, + limb2: 0x9c9d283771507f24855df134, + limb3: 0xf2cfee6977693a3f2b5332c } }, G2Line { r0a0: u384 { - limb0: 0xf6319d592a5694bc46696337, - limb1: 0x451f2ed5bfd3336ad0d8ba97, - limb2: 0x7e1cebcedbdf77784260add0, - limb3: 0x132eaf25f317bb4157b8f15c + limb0: 0xdaf1249cec25e1591d0f9329, + limb1: 0x5531582b2fcbc58c12130411, + limb2: 0xd5683ab0df6813a370dced9d, + limb3: 0x16c61ae7af165d87be0cc2d5 }, r0a1: u384 { - limb0: 0x71c53170de382d079a96ff3, - limb1: 0xa38b8a791b34753e5cdb937, - limb2: 0xc28b4ec5173206100e5ebe66, - limb3: 0x184445c3b15e7e79225dbd30 + limb0: 0xb1c04d8f03fb3b2344ac4be5, + limb1: 0xb587962043ba3348ccce1f0f, + limb2: 0x5dd0fb61f2bcee0210d0af13, + limb3: 0x17804c1f2c60a8a7264b6047 }, r1a0: u384 { - limb0: 0x48a4c907af3c04d409af2b54, - limb1: 0x5ba9409869910df2721c4194, - limb2: 0x54edfb6d8e9d7166b4dd184e, - limb3: 0x22d50e6a0fc341969081f03 + limb0: 0xbb63ccb83f7ed4931470b669, + limb1: 0x7fd71cdcbf8b588e2169e56, + limb2: 0x497e41bd5035df06befd3d7e, + limb3: 0x1106425b52985ab1472f75a9 }, r1a1: u384 { - limb0: 0xb04646ff3f005ff50c9e18df, - limb1: 0x93f971f4287a88184972225f, - limb2: 0x15a689815939015e72535806, - limb3: 0x19fd611f130b5d1e8ede166f + limb0: 0xf6dcb781ff977354cbaeca11, + limb1: 0x69d27ee516fa1a11f4b63914, + limb2: 0x9c9d283771507f24855df134, + limb3: 0xf2cfee6977693a3f2b5332c } }, G2Line { r0a0: u384 { - limb0: 0x4af66b41351181b331ea3976, - limb1: 0xdf686d1dfa279c5d955d69f8, - limb2: 0xf224539293baa97ba91472c8, - limb3: 0x181f9a5deeefeb729ee64ef3 + limb0: 0x565aac3d5efc089a31139283, + limb1: 0x4272752a854538f0b555ac04, + limb2: 0x86a5055ded31515c6ec89ebc, + limb3: 0x110c5f73e6b0b5c68282aa1a }, r0a1: u384 { - limb0: 0xf94c654eb0dcbb11daf5dd12, - limb1: 0xb7895ee3b2e22e4a2d8f112b, - limb2: 0xf1924a889450458e43d53bbf, - limb3: 0x130e2c572546f4d1e95aae48 + limb0: 0x6eb8fad61d6a608c85cf557f, + limb1: 0x2f27ec0ec22fc4a9d189e192, + limb2: 0xcce849442e970449a41aee87, + limb3: 0x3388dc06a8286446a95bb74 }, r1a0: u384 { - limb0: 0x14818b38cd680cdb9b9fd318, - limb1: 0x9d59e4aace6a4fa54918e52, - limb2: 0x943c5ea01fc056693a13a1dc, - limb3: 0x1d208479b5a2ba789c1c49c + limb0: 0x29822e7214d3ae3a1eaf0881, + limb1: 0xb04e459e8d569063d2f1ff84, + limb2: 0x61aa79235620ec5c6168cd13, + limb3: 0xdb46da5506f25a0ddd9d25e }, r1a1: u384 { - limb0: 0xc95627db420a1769985c65a, - limb1: 0x28114e69cc6b1e6610686034, - limb2: 0x684dba5818cd9567cd3eb1d5, - limb3: 0x8b2f4bfbb76f7bbe06fa3fb + limb0: 0x4004047d6627ef4e8a047aeb, + limb1: 0x73a8ed1ba044e04a43a99564, + limb2: 0x664eedf108865fac5ebba6e1, + limb3: 0xe6e3025f09bb9df597b5128 } }, G2Line { r0a0: u384 { - limb0: 0xa3f965892619fa2d5f100a90, - limb1: 0x91ac9f1860e2c0784cc09f2e, - limb2: 0x5d0d3a1daee694dd540e2be8, - limb3: 0x135b1b1e627752d4225fe38f + limb0: 0x6acae548b9042589a17cc95f, + limb1: 0x217f1e1c11c3011715774d4d, + limb2: 0x11a9fb5766b39d430b1c15d0, + limb3: 0xe612d859df24842ce33c9d6 }, r0a1: u384 { - limb0: 0x4a3bbb3eb2650c54b67cb3e6, - limb1: 0xdbc39eac3f79cdd03bf8c447, - limb2: 0xf6e59f6ab4d2f09c29a4d6a6, - limb3: 0x1569cfa6c576cb41e0abab8e + limb0: 0x599285819346fb9c3c28793d, + limb1: 0x4d0d0826c6e08cf5059cdc19, + limb2: 0xf39b4a96ce83040bf10716ac, + limb3: 0xd5c0c7d757310fec39173c7 }, r1a0: u384 { - limb0: 0xd3fc9075971fe3ac2ac0ee27, - limb1: 0x160bd9673609e08f18d29a2a, - limb2: 0x6036d235fbac166426b89e79, - limb3: 0x8dce438a963a69aff1172f9 + limb0: 0x473dcb1b1a73099f9b3d95d2, + limb1: 0x7a7ef1c6db2665dfba32be7b, + limb2: 0xccb92790901c2f7ceb7fd861, + limb3: 0x1015a3839453343c9b0cbc45 }, r1a1: u384 { - limb0: 0xeec2b40db63bc7ec5d2964b, - limb1: 0x55dda0ccc259984398ae15c, - limb2: 0xc6b82e182877a6a5d0b90a8d, - limb3: 0x6a18a2cb4b051e7cf08daf6 + limb0: 0x12d333d5723a566d13e3b9ab, + limb1: 0xf96f0e52139baea4bbd3f509, + limb2: 0xf775f6c4aa01956effc7bac1, + limb3: 0x14f9ac263962844d5d7bfd58 } }, G2Line { r0a0: u384 { - limb0: 0x4af66b41351181b331ea3976, - limb1: 0xdf686d1dfa279c5d955d69f8, - limb2: 0xf224539293baa97ba91472c8, - limb3: 0x181f9a5deeefeb729ee64ef3 + limb0: 0x565aac3d5efc089a31139283, + limb1: 0x4272752a854538f0b555ac04, + limb2: 0x86a5055ded31515c6ec89ebc, + limb3: 0x110c5f73e6b0b5c68282aa1a }, r0a1: u384 { - limb0: 0xf94c654eb0dcbb11daf5dd12, - limb1: 0xb7895ee3b2e22e4a2d8f112b, - limb2: 0xf1924a889450458e43d53bbf, - limb3: 0x130e2c572546f4d1e95aae48 + limb0: 0x6eb8fad61d6a608c85cf557f, + limb1: 0x2f27ec0ec22fc4a9d189e192, + limb2: 0xcce849442e970449a41aee87, + limb3: 0x3388dc06a8286446a95bb74 }, r1a0: u384 { - limb0: 0x14818b38cd680cdb9b9fd318, - limb1: 0x9d59e4aace6a4fa54918e52, - limb2: 0x943c5ea01fc056693a13a1dc, - limb3: 0x1d208479b5a2ba789c1c49c + limb0: 0x29822e7214d3ae3a1eaf0881, + limb1: 0xb04e459e8d569063d2f1ff84, + limb2: 0x61aa79235620ec5c6168cd13, + limb3: 0xdb46da5506f25a0ddd9d25e }, r1a1: u384 { - limb0: 0xc95627db420a1769985c65a, - limb1: 0x28114e69cc6b1e6610686034, - limb2: 0x684dba5818cd9567cd3eb1d5, - limb3: 0x8b2f4bfbb76f7bbe06fa3fb + limb0: 0x4004047d6627ef4e8a047aeb, + limb1: 0x73a8ed1ba044e04a43a99564, + limb2: 0x664eedf108865fac5ebba6e1, + limb3: 0xe6e3025f09bb9df597b5128 } }, G2Line { r0a0: u384 { - limb0: 0xa3f965892619fa2d5f100a90, - limb1: 0x91ac9f1860e2c0784cc09f2e, - limb2: 0x5d0d3a1daee694dd540e2be8, - limb3: 0x135b1b1e627752d4225fe38f + limb0: 0x6acae548b9042589a17cc95f, + limb1: 0x217f1e1c11c3011715774d4d, + limb2: 0x11a9fb5766b39d430b1c15d0, + limb3: 0xe612d859df24842ce33c9d6 }, r0a1: u384 { - limb0: 0x4a3bbb3eb2650c54b67cb3e6, - limb1: 0xdbc39eac3f79cdd03bf8c447, - limb2: 0xf6e59f6ab4d2f09c29a4d6a6, - limb3: 0x1569cfa6c576cb41e0abab8e + limb0: 0x599285819346fb9c3c28793d, + limb1: 0x4d0d0826c6e08cf5059cdc19, + limb2: 0xf39b4a96ce83040bf10716ac, + limb3: 0xd5c0c7d757310fec39173c7 }, r1a0: u384 { - limb0: 0xd3fc9075971fe3ac2ac0ee27, - limb1: 0x160bd9673609e08f18d29a2a, - limb2: 0x6036d235fbac166426b89e79, - limb3: 0x8dce438a963a69aff1172f9 + limb0: 0x473dcb1b1a73099f9b3d95d2, + limb1: 0x7a7ef1c6db2665dfba32be7b, + limb2: 0xccb92790901c2f7ceb7fd861, + limb3: 0x1015a3839453343c9b0cbc45 }, r1a1: u384 { - limb0: 0xeec2b40db63bc7ec5d2964b, - limb1: 0x55dda0ccc259984398ae15c, - limb2: 0xc6b82e182877a6a5d0b90a8d, - limb3: 0x6a18a2cb4b051e7cf08daf6 + limb0: 0x12d333d5723a566d13e3b9ab, + limb1: 0xf96f0e52139baea4bbd3f509, + limb2: 0xf775f6c4aa01956effc7bac1, + limb3: 0x14f9ac263962844d5d7bfd58 } }, G2Line { r0a0: u384 { - limb0: 0x7eb8b667e108389abcdbaaf6, - limb1: 0xf531fcd8df038d93a189e6d3, - limb2: 0x721eeae149af3e91bf8919fa, - limb3: 0x14bbc2d4ec94ecfbbbe55338 + limb0: 0x324273979b43f236c1b6d4b3, + limb1: 0x6a44d55ac56823beb8c5cd4d, + limb2: 0xf187e87ac0dea83abd11b631, + limb3: 0xedbe290b2884e1a7816b064 }, r0a1: u384 { - limb0: 0x2f13d75f13a2babe4e969db7, - limb1: 0xfd9489784f2965cc46d0566f, - limb2: 0x84d7ac80ce36d619d8d8376e, - limb3: 0x5b5cf98e7897838d047fd4 + limb0: 0xb9c0ebcef8295a5127fabfde, + limb1: 0xd8abaec351082a47e7dd0d50, + limb2: 0xf7b036dd84a0f094aab5c7c, + limb3: 0x14ba1a361d4fb86acc0430ff }, r1a0: u384 { - limb0: 0x836f1573b93409ebd410dd7d, - limb1: 0x1c80f8caabfd78714d16f31b, - limb2: 0xd6c3be262aacbd8ee9bffb64, - limb3: 0x404cb670f104f7bc6ac6ce1 + limb0: 0xd6a92564eca59a717cccc180, + limb1: 0x7ec4e553b132cfe520138b91, + limb2: 0x968b7ccf08d0a2377a2b5d51, + limb3: 0x1486effacc4cfe9a2a925700 }, r1a1: u384 { - limb0: 0xb6d7a510819438b506657d01, - limb1: 0xcd0718e98198254ac1159b0f, - limb2: 0xdafb78b219c112c6cbed0850, - limb3: 0x36b81a5a46d3abd8707f175 + limb0: 0xda73fa2984bbcd83191b529c, + limb1: 0x3d2797caffd2a9f90addeb7d, + limb2: 0x6ae8b01c177a54b6029803c4, + limb3: 0x19cd64299c633b6e74933f98 } }, G2Line { r0a0: u384 { - limb0: 0x7eb8b667e108389abcdbaaf6, - limb1: 0xf531fcd8df038d93a189e6d3, - limb2: 0x721eeae149af3e91bf8919fa, - limb3: 0x14bbc2d4ec94ecfbbbe55338 + limb0: 0x324273979b43f236c1b6d4b3, + limb1: 0x6a44d55ac56823beb8c5cd4d, + limb2: 0xf187e87ac0dea83abd11b631, + limb3: 0xedbe290b2884e1a7816b064 }, r0a1: u384 { - limb0: 0x2f13d75f13a2babe4e969db7, - limb1: 0xfd9489784f2965cc46d0566f, - limb2: 0x84d7ac80ce36d619d8d8376e, - limb3: 0x5b5cf98e7897838d047fd4 + limb0: 0xb9c0ebcef8295a5127fabfde, + limb1: 0xd8abaec351082a47e7dd0d50, + limb2: 0xf7b036dd84a0f094aab5c7c, + limb3: 0x14ba1a361d4fb86acc0430ff }, r1a0: u384 { - limb0: 0x836f1573b93409ebd410dd7d, - limb1: 0x1c80f8caabfd78714d16f31b, - limb2: 0xd6c3be262aacbd8ee9bffb64, - limb3: 0x404cb670f104f7bc6ac6ce1 + limb0: 0xd6a92564eca59a717cccc180, + limb1: 0x7ec4e553b132cfe520138b91, + limb2: 0x968b7ccf08d0a2377a2b5d51, + limb3: 0x1486effacc4cfe9a2a925700 }, r1a1: u384 { - limb0: 0xb6d7a510819438b506657d01, - limb1: 0xcd0718e98198254ac1159b0f, - limb2: 0xdafb78b219c112c6cbed0850, - limb3: 0x36b81a5a46d3abd8707f175 + limb0: 0xda73fa2984bbcd83191b529c, + limb1: 0x3d2797caffd2a9f90addeb7d, + limb2: 0x6ae8b01c177a54b6029803c4, + limb3: 0x19cd64299c633b6e74933f98 } }, G2Line { r0a0: u384 { - limb0: 0xc67f0cf174bce99c3a1c8171, - limb1: 0xbda456379da0bcf7227567d0, - limb2: 0xa8a13ec9cbaa6fc33c080750, - limb3: 0x10ac69558879504fe43611a3 + limb0: 0xdb2681a0ef5cfd0962c48f6b, + limb1: 0x1a2279a74c79a6421bd26c6c, + limb2: 0xc48814ce2e29b2263da82a5, + limb3: 0x2e3e25f56d91932935f20d }, r0a1: u384 { - limb0: 0x5a4c29402ec1639461a54ee2, - limb1: 0x7898004551bee30b5326443c, - limb2: 0x3d00cecf3abb75ba0687577e, - limb3: 0x1828692e25ec610d628831ec + limb0: 0xd677f32fe7da9736c43634f2, + limb1: 0x4285e9705dd9ce8d698d1fe0, + limb2: 0x2c7dd9009c4c58184aca558c, + limb3: 0x3dcbe4e5594c6ab2d10c16d }, r1a0: u384 { - limb0: 0x54ee51feb5fe0d6d6977ce0f, - limb1: 0xa567961df73e459c513fdf53, - limb2: 0xbb32926a29ceaa2f89298be5, - limb3: 0x1398c2c93d90b8c305d12b82 + limb0: 0x86e822ce6a692777d529f773, + limb1: 0xf92f4c24dd2d1a1ab77fcfe7, + limb2: 0xc7f1f61538f225ee52b89f48, + limb3: 0x7a08b05e3201602d9216d2d }, r1a1: u384 { - limb0: 0x662200af896a2132c18553d9, - limb1: 0xfbbc9bb64462ebd0d5592c37, - limb2: 0x70aff8c371b32e87daa99378, - limb3: 0x1393f172bfdc9d6159b69b7 + limb0: 0x220cfbe9c10884461876ae23, + limb1: 0x9e752d4b5482e4c5bbd57488, + limb2: 0x72d39a1d6f520311fd389c37, + limb3: 0x52542fd6c39f0d99bd6bbd9 } }, G2Line { r0a0: u384 { - limb0: 0xc67f0cf174bce99c3a1c8171, - limb1: 0xbda456379da0bcf7227567d0, - limb2: 0xa8a13ec9cbaa6fc33c080750, - limb3: 0x10ac69558879504fe43611a3 + limb0: 0xdb2681a0ef5cfd0962c48f6b, + limb1: 0x1a2279a74c79a6421bd26c6c, + limb2: 0xc48814ce2e29b2263da82a5, + limb3: 0x2e3e25f56d91932935f20d }, r0a1: u384 { - limb0: 0x5a4c29402ec1639461a54ee2, - limb1: 0x7898004551bee30b5326443c, - limb2: 0x3d00cecf3abb75ba0687577e, - limb3: 0x1828692e25ec610d628831ec + limb0: 0xd677f32fe7da9736c43634f2, + limb1: 0x4285e9705dd9ce8d698d1fe0, + limb2: 0x2c7dd9009c4c58184aca558c, + limb3: 0x3dcbe4e5594c6ab2d10c16d }, r1a0: u384 { - limb0: 0x54ee51feb5fe0d6d6977ce0f, - limb1: 0xa567961df73e459c513fdf53, - limb2: 0xbb32926a29ceaa2f89298be5, - limb3: 0x1398c2c93d90b8c305d12b82 + limb0: 0x86e822ce6a692777d529f773, + limb1: 0xf92f4c24dd2d1a1ab77fcfe7, + limb2: 0xc7f1f61538f225ee52b89f48, + limb3: 0x7a08b05e3201602d9216d2d }, r1a1: u384 { - limb0: 0x662200af896a2132c18553d9, - limb1: 0xfbbc9bb64462ebd0d5592c37, - limb2: 0x70aff8c371b32e87daa99378, - limb3: 0x1393f172bfdc9d6159b69b7 + limb0: 0x220cfbe9c10884461876ae23, + limb1: 0x9e752d4b5482e4c5bbd57488, + limb2: 0x72d39a1d6f520311fd389c37, + limb3: 0x52542fd6c39f0d99bd6bbd9 } }, G2Line { r0a0: u384 { - limb0: 0x419bd83d86eb9b48fe76e908, - limb1: 0x7ec8a4a508d9dd8d9f0cbc7b, - limb2: 0x1d157efa166e4febf963514c, - limb3: 0x1420bba65d2104b6119d2c4 + limb0: 0xd2833c6e80915aa802028d91, + limb1: 0x74d22878ec75474650117b32, + limb2: 0x6cb76ac504f45d442506c3b9, + limb3: 0x19a572ff9f78c5689f7e9 }, r0a1: u384 { - limb0: 0x8830d2087d44cfe993746df0, - limb1: 0xdfef5c81ebf6ebc03bec9cc6, - limb2: 0xe7905948e5114e4596ff5f60, - limb3: 0x6e1ae64e8927dfa21004749 + limb0: 0x46249614d83af7e171c6172a, + limb1: 0xd2a4f206fa6b7c9dc6276a1d, + limb2: 0x1d37284645aeccfa7e55914e, + limb3: 0xea73b1772fdeb0d8a80a54 }, r1a0: u384 { - limb0: 0xefaa36295da267644963c6d, - limb1: 0x78a7e15f56f557c1fcbc7ca5, - limb2: 0xb767608dd17af71487652221, - limb3: 0xc78320f16929d767e3d821b + limb0: 0x985a081123f14663474d6128, + limb1: 0x787c1d2cef0eaf6c17b95fa8, + limb2: 0xf13630ecc0448c07d7ec98e1, + limb3: 0xcd42fb0bd6ca63acd78405b }, r1a1: u384 { - limb0: 0xfefc0a1166505acd55fa1631, - limb1: 0x378919952b23d95a013db919, - limb2: 0x4effd8054d15deeab8826b64, - limb3: 0x176a34096cb7158d0cef3c3c + limb0: 0xf78e5391e95d1455d6dd1c83, + limb1: 0xb1164967a264030c2d76d419, + limb2: 0xe1a6bcb4b4b9ee8fddc7315c, + limb3: 0x173465e64e00f1cdec28f131 } }, G2Line { r0a0: u384 { - limb0: 0x419bd83d86eb9b48fe76e908, - limb1: 0x7ec8a4a508d9dd8d9f0cbc7b, - limb2: 0x1d157efa166e4febf963514c, - limb3: 0x1420bba65d2104b6119d2c4 + limb0: 0xd2833c6e80915aa802028d91, + limb1: 0x74d22878ec75474650117b32, + limb2: 0x6cb76ac504f45d442506c3b9, + limb3: 0x19a572ff9f78c5689f7e9 }, r0a1: u384 { - limb0: 0x8830d2087d44cfe993746df0, - limb1: 0xdfef5c81ebf6ebc03bec9cc6, - limb2: 0xe7905948e5114e4596ff5f60, - limb3: 0x6e1ae64e8927dfa21004749 + limb0: 0x46249614d83af7e171c6172a, + limb1: 0xd2a4f206fa6b7c9dc6276a1d, + limb2: 0x1d37284645aeccfa7e55914e, + limb3: 0xea73b1772fdeb0d8a80a54 }, r1a0: u384 { - limb0: 0xefaa36295da267644963c6d, - limb1: 0x78a7e15f56f557c1fcbc7ca5, - limb2: 0xb767608dd17af71487652221, - limb3: 0xc78320f16929d767e3d821b + limb0: 0x985a081123f14663474d6128, + limb1: 0x787c1d2cef0eaf6c17b95fa8, + limb2: 0xf13630ecc0448c07d7ec98e1, + limb3: 0xcd42fb0bd6ca63acd78405b }, r1a1: u384 { - limb0: 0xfefc0a1166505acd55fa1631, - limb1: 0x378919952b23d95a013db919, - limb2: 0x4effd8054d15deeab8826b64, - limb3: 0x176a34096cb7158d0cef3c3c + limb0: 0xf78e5391e95d1455d6dd1c83, + limb1: 0xb1164967a264030c2d76d419, + limb2: 0xe1a6bcb4b4b9ee8fddc7315c, + limb3: 0x173465e64e00f1cdec28f131 } }, G2Line { r0a0: u384 { - limb0: 0x7b88b524da914a1f772f35ae, - limb1: 0xfd1848ce315a9c3752a60924, - limb2: 0x99ce0565c9e2ce7e0f035981, - limb3: 0xc6041b85ac77652b5988bcf + limb0: 0x5a92b83a440860b31ecb39ab, + limb1: 0x6bc88b2098e8aa4f2cbabe29, + limb2: 0xa344268cee55846c0d67fc57, + limb3: 0xbb3d9a3fd7f583599bea6c8 }, r0a1: u384 { - limb0: 0xe523275236f4583af6eeaefa, - limb1: 0x650f16313ed6cabca4754fa1, - limb2: 0xcd36d4eb569ea862c7af7455, - limb3: 0x2fe9ab09130587a7800420c + limb0: 0x3a6a9d0f4e52f138fe7e33f8, + limb1: 0x51afc01b9494c61c5bd1b11e, + limb2: 0x3172b05abc177e9cce4b4f0, + limb3: 0x17d8ca31211b957fcb12e805 }, r1a0: u384 { - limb0: 0x4e1e2e29fcded125b398e1fe, - limb1: 0xc90219c4198d53fe6cb96001, - limb2: 0xb380b169215a71a3f045eedb, - limb3: 0x5579d5b88fb5581d447345e + limb0: 0x6343ff0635ec4e9c9fb709b9, + limb1: 0x68e8d08a9f5be219dd16fe6f, + limb2: 0xf0fed78a781578b59788720b, + limb3: 0xbe842e6fff90d6b069cb70 }, r1a1: u384 { - limb0: 0x452a54b953fd0750e0f43789, - limb1: 0xb0baf5e9db5674ab6715c233, - limb2: 0x5f52e0f7b6fc6c4244aa746c, - limb3: 0xc282524800b40c6e9d7d09e + limb0: 0xd037592f81aa53124684abf0, + limb1: 0xe52aeb7217c82e488907f68e, + limb2: 0x3bddbeccd2fae9aedaa083b6, + limb3: 0xcdd8a9e7fe7cc350a576aaa } }, G2Line { r0a0: u384 { - limb0: 0x7b88b524da914a1f772f35ae, - limb1: 0xfd1848ce315a9c3752a60924, - limb2: 0x99ce0565c9e2ce7e0f035981, - limb3: 0xc6041b85ac77652b5988bcf + limb0: 0x5a92b83a440860b31ecb39ab, + limb1: 0x6bc88b2098e8aa4f2cbabe29, + limb2: 0xa344268cee55846c0d67fc57, + limb3: 0xbb3d9a3fd7f583599bea6c8 }, r0a1: u384 { - limb0: 0xe523275236f4583af6eeaefa, - limb1: 0x650f16313ed6cabca4754fa1, - limb2: 0xcd36d4eb569ea862c7af7455, - limb3: 0x2fe9ab09130587a7800420c + limb0: 0x3a6a9d0f4e52f138fe7e33f8, + limb1: 0x51afc01b9494c61c5bd1b11e, + limb2: 0x3172b05abc177e9cce4b4f0, + limb3: 0x17d8ca31211b957fcb12e805 }, r1a0: u384 { - limb0: 0x4e1e2e29fcded125b398e1fe, - limb1: 0xc90219c4198d53fe6cb96001, - limb2: 0xb380b169215a71a3f045eedb, - limb3: 0x5579d5b88fb5581d447345e + limb0: 0x6343ff0635ec4e9c9fb709b9, + limb1: 0x68e8d08a9f5be219dd16fe6f, + limb2: 0xf0fed78a781578b59788720b, + limb3: 0xbe842e6fff90d6b069cb70 }, r1a1: u384 { - limb0: 0x452a54b953fd0750e0f43789, - limb1: 0xb0baf5e9db5674ab6715c233, - limb2: 0x5f52e0f7b6fc6c4244aa746c, - limb3: 0xc282524800b40c6e9d7d09e + limb0: 0xd037592f81aa53124684abf0, + limb1: 0xe52aeb7217c82e488907f68e, + limb2: 0x3bddbeccd2fae9aedaa083b6, + limb3: 0xcdd8a9e7fe7cc350a576aaa } }, G2Line { r0a0: u384 { - limb0: 0x8da7be93d265fae7f78ea33b, - limb1: 0x3cfa6d6e558e13e96c9334cf, - limb2: 0xb1c81766cbfad8e142cdb6a3, - limb3: 0x131f36155651b8afb4ebd5e8 + limb0: 0x6ab1f6647ba9ba736f0839ad, + limb1: 0xe8204b773672d624630e2384, + limb2: 0x9ecdf669a827c29c74daf71b, + limb3: 0x2627dd5786ccd48891b28cb }, r0a1: u384 { - limb0: 0xc76fbd197e5e22abf4dd0e8c, - limb1: 0x237273a153a717caef3efe4f, - limb2: 0x2ddcdfe400ff8dfbac82d72a, - limb3: 0x19de6f563931c8d091104ac6 + limb0: 0xd65bc63d35cc0bfb66c2fbf5, + limb1: 0xb658ffd3e2b02102a72560b5, + limb2: 0x4831f5285ece22bc1c6a1869, + limb3: 0x1721967f7d4fc728f65b501c }, r1a0: u384 { - limb0: 0x53d221c09aa2967ab460b527, - limb1: 0x5636dea540c5558443acc1da, - limb2: 0xbd4279f5254520786ba7b9b5, - limb3: 0x340cf1396c7e30a89d8ffba + limb0: 0x6794d4f4801a0974d863a911, + limb1: 0xbecbc2ac5e4c8d8ccf656991, + limb2: 0x9ec1f54cdfcb10932d199399, + limb3: 0x2406219596075a45c6e0806 }, r1a1: u384 { - limb0: 0x7909a524aeb96b8445fc2ba9, - limb1: 0x7fa36fa405fc2aff90e328e4, - limb2: 0xe01fb6a79a3da842de275483, - limb3: 0xbc3928a2d1bbdbfd58d1443 + limb0: 0xe78dbc09e2db8d9605dc8f23, + limb1: 0xc9303fa646a2966cfd79288, + limb2: 0xa61763bd756d1d418bd83966, + limb3: 0x198617a89efe66f0fd26cf06 } }, G2Line { r0a0: u384 { - limb0: 0x8da7be93d265fae7f78ea33b, - limb1: 0x3cfa6d6e558e13e96c9334cf, - limb2: 0xb1c81766cbfad8e142cdb6a3, - limb3: 0x131f36155651b8afb4ebd5e8 + limb0: 0x6ab1f6647ba9ba736f0839ad, + limb1: 0xe8204b773672d624630e2384, + limb2: 0x9ecdf669a827c29c74daf71b, + limb3: 0x2627dd5786ccd48891b28cb }, r0a1: u384 { - limb0: 0xc76fbd197e5e22abf4dd0e8c, - limb1: 0x237273a153a717caef3efe4f, - limb2: 0x2ddcdfe400ff8dfbac82d72a, - limb3: 0x19de6f563931c8d091104ac6 + limb0: 0xd65bc63d35cc0bfb66c2fbf5, + limb1: 0xb658ffd3e2b02102a72560b5, + limb2: 0x4831f5285ece22bc1c6a1869, + limb3: 0x1721967f7d4fc728f65b501c }, r1a0: u384 { - limb0: 0x53d221c09aa2967ab460b527, - limb1: 0x5636dea540c5558443acc1da, - limb2: 0xbd4279f5254520786ba7b9b5, - limb3: 0x340cf1396c7e30a89d8ffba + limb0: 0x6794d4f4801a0974d863a911, + limb1: 0xbecbc2ac5e4c8d8ccf656991, + limb2: 0x9ec1f54cdfcb10932d199399, + limb3: 0x2406219596075a45c6e0806 }, r1a1: u384 { - limb0: 0x7909a524aeb96b8445fc2ba9, - limb1: 0x7fa36fa405fc2aff90e328e4, - limb2: 0xe01fb6a79a3da842de275483, - limb3: 0xbc3928a2d1bbdbfd58d1443 + limb0: 0xe78dbc09e2db8d9605dc8f23, + limb1: 0xc9303fa646a2966cfd79288, + limb2: 0xa61763bd756d1d418bd83966, + limb3: 0x198617a89efe66f0fd26cf06 } }, G2Line { r0a0: u384 { - limb0: 0xfed92e64132d7808ab35d1fc, - limb1: 0xa5784a062c564da6ee71abe7, - limb2: 0x2551dc5a3d3074f4cc7882f2, - limb3: 0x129ab035c8ebffedda4c586 + limb0: 0x3d1d195f552c9f18d8d5c535, + limb1: 0x1323b299172854615a455e4a, + limb2: 0xf7d398cbadc32d691ed52bd6, + limb3: 0x659beaad32fe55ba9df44d9 }, r0a1: u384 { - limb0: 0xdce4385190d2bb34ca0b8ad6, - limb1: 0xc7df3ac196a4cb1dfc5e7437, - limb2: 0x94c50e4e111832c570fa3298, - limb3: 0x38aba1f3ea34888af767da0 + limb0: 0x98c06f5573cfa234289b62d8, + limb1: 0xe515dd299c6e00bc6df14c34, + limb2: 0x23b66fe012eb1a443038cb88, + limb3: 0x12f810746c2c45af5360d9bc }, r1a0: u384 { - limb0: 0xb38b0bc04b6a06d7c5efd768, - limb1: 0x8b51653a436eaccb81c08780, - limb2: 0x442039371bedc47893d7f4d4, - limb3: 0xb21d39e91bb21eb3481ec8d + limb0: 0x3aae5b2af57f0c9c94bb32, + limb1: 0x777a7e6bbc9962ab6be81f76, + limb2: 0x14cbce88a915fc5331313d21, + limb3: 0x13a52e8a1ac3c04b42218be1 }, r1a1: u384 { - limb0: 0x8a3462042e7f468dbfeccc6d, - limb1: 0x25765010a8f78b662b8b24ed, - limb2: 0xd4b6f584392eefe683f4f32, - limb3: 0xb613c19dda8c4f85f3d18fc + limb0: 0xd2b673a0bae8bfb28cff0c45, + limb1: 0xf95ff65fcc89601198dc8f91, + limb2: 0xd77322bf8488715eef3f6fb1, + limb3: 0xf1277bfb59098f10a9131b5 } }, G2Line { r0a0: u384 { - limb0: 0xfed92e64132d7808ab35d1fc, - limb1: 0xa5784a062c564da6ee71abe7, - limb2: 0x2551dc5a3d3074f4cc7882f2, - limb3: 0x129ab035c8ebffedda4c586 + limb0: 0x3d1d195f552c9f18d8d5c535, + limb1: 0x1323b299172854615a455e4a, + limb2: 0xf7d398cbadc32d691ed52bd6, + limb3: 0x659beaad32fe55ba9df44d9 }, r0a1: u384 { - limb0: 0xdce4385190d2bb34ca0b8ad6, - limb1: 0xc7df3ac196a4cb1dfc5e7437, - limb2: 0x94c50e4e111832c570fa3298, - limb3: 0x38aba1f3ea34888af767da0 + limb0: 0x98c06f5573cfa234289b62d8, + limb1: 0xe515dd299c6e00bc6df14c34, + limb2: 0x23b66fe012eb1a443038cb88, + limb3: 0x12f810746c2c45af5360d9bc }, r1a0: u384 { - limb0: 0xb38b0bc04b6a06d7c5efd768, - limb1: 0x8b51653a436eaccb81c08780, - limb2: 0x442039371bedc47893d7f4d4, - limb3: 0xb21d39e91bb21eb3481ec8d + limb0: 0x3aae5b2af57f0c9c94bb32, + limb1: 0x777a7e6bbc9962ab6be81f76, + limb2: 0x14cbce88a915fc5331313d21, + limb3: 0x13a52e8a1ac3c04b42218be1 }, r1a1: u384 { - limb0: 0x8a3462042e7f468dbfeccc6d, - limb1: 0x25765010a8f78b662b8b24ed, - limb2: 0xd4b6f584392eefe683f4f32, - limb3: 0xb613c19dda8c4f85f3d18fc + limb0: 0xd2b673a0bae8bfb28cff0c45, + limb1: 0xf95ff65fcc89601198dc8f91, + limb2: 0xd77322bf8488715eef3f6fb1, + limb3: 0xf1277bfb59098f10a9131b5 } }, G2Line { r0a0: u384 { - limb0: 0x48ea9e6794dbc8abc50ef769, - limb1: 0x5cdf2a4b1f1c50ec3bbab62a, - limb2: 0x43108c47d023911948b36790, - limb3: 0x64e0f2f7bbafbe7254182c2 + limb0: 0x994b3340947e0dfc5f4449bf, + limb1: 0xf2a54d7464f1f50b95abe9d8, + limb2: 0xaa05f45202de8ae127c3d64b, + limb3: 0x105819b4d71c03790bfeb092 }, r0a1: u384 { - limb0: 0xe94d02e2722ddb7d521febb1, - limb1: 0xd6e1c846b0f958c2566af832, - limb2: 0xd81e1ce8139e3c88eb642059, - limb3: 0x134785636dfddc539f24ec23 + limb0: 0xdbca0a627c296fe7aad607f1, + limb1: 0x7a8255ce902319b92cd065be, + limb2: 0x7b50bc220077a52b59ce5307, + limb3: 0xf9e05915fae54c347b88c1e }, r1a0: u384 { - limb0: 0x45f8069bac4659c6d3ffb518, - limb1: 0x3892bbc70847ba7b0caf4394, - limb2: 0xf8ca9091f93a710632e5ff0c, - limb3: 0x824cf5703ca0bd307c43a5e + limb0: 0x2cac98351a30b0b82a54b79e, + limb1: 0xed07531e9f2463331277b6f3, + limb2: 0x12b3ebca243e04ae826f6c33, + limb3: 0x12969325aa2fdc65900e8a68 }, r1a1: u384 { - limb0: 0x7ede71434dba8a474f34b4bd, - limb1: 0x2fc2f8c048e418f86203bbdf, - limb2: 0x203ae3ef17ecd4217d27b5ee, - limb3: 0x1cee1174128faaa5b41afac + limb0: 0xb0799b5a24a5ceb48429df27, + limb1: 0x2ee6d0a37a7ddc7798f3bc77, + limb2: 0x63ec626451e43c56ff92bafb, + limb3: 0x50818d39d6234b4dc233a38 } }, G2Line { r0a0: u384 { - limb0: 0x48ea9e6794dbc8abc50ef769, - limb1: 0x5cdf2a4b1f1c50ec3bbab62a, - limb2: 0x43108c47d023911948b36790, - limb3: 0x64e0f2f7bbafbe7254182c2 + limb0: 0x994b3340947e0dfc5f4449bf, + limb1: 0xf2a54d7464f1f50b95abe9d8, + limb2: 0xaa05f45202de8ae127c3d64b, + limb3: 0x105819b4d71c03790bfeb092 }, r0a1: u384 { - limb0: 0xe94d02e2722ddb7d521febb1, - limb1: 0xd6e1c846b0f958c2566af832, - limb2: 0xd81e1ce8139e3c88eb642059, - limb3: 0x134785636dfddc539f24ec23 + limb0: 0xdbca0a627c296fe7aad607f1, + limb1: 0x7a8255ce902319b92cd065be, + limb2: 0x7b50bc220077a52b59ce5307, + limb3: 0xf9e05915fae54c347b88c1e }, r1a0: u384 { - limb0: 0x45f8069bac4659c6d3ffb518, - limb1: 0x3892bbc70847ba7b0caf4394, - limb2: 0xf8ca9091f93a710632e5ff0c, - limb3: 0x824cf5703ca0bd307c43a5e + limb0: 0x2cac98351a30b0b82a54b79e, + limb1: 0xed07531e9f2463331277b6f3, + limb2: 0x12b3ebca243e04ae826f6c33, + limb3: 0x12969325aa2fdc65900e8a68 }, r1a1: u384 { - limb0: 0x7ede71434dba8a474f34b4bd, - limb1: 0x2fc2f8c048e418f86203bbdf, - limb2: 0x203ae3ef17ecd4217d27b5ee, - limb3: 0x1cee1174128faaa5b41afac + limb0: 0xb0799b5a24a5ceb48429df27, + limb1: 0x2ee6d0a37a7ddc7798f3bc77, + limb2: 0x63ec626451e43c56ff92bafb, + limb3: 0x50818d39d6234b4dc233a38 } }, G2Line { r0a0: u384 { - limb0: 0x34d0ff2199a36ffb68433265, - limb1: 0x640ed7347ad5353958b78447, - limb2: 0x52f00ed40ebc20f8142b3b4a, - limb3: 0x171dfa9b4c0beef6d9b7a8aa + limb0: 0xb67cc5f083f96e39a134d194, + limb1: 0xaf9e780b6c4a7184061027d7, + limb2: 0xdcda4477070e92cdf3397d43, + limb3: 0x6a696f2522cc9af3d082748 }, r0a1: u384 { - limb0: 0x293af26d027cf14acbdeadf5, - limb1: 0xbf6945ba97845546655cc5b3, - limb2: 0x3fafeac6f07bdc3a0f5282e0, - limb3: 0xf934b1ebe63e6b3ff7ed953 + limb0: 0x392c02806e22eca0d48618e7, + limb1: 0x8aba49a57d2d347b3df198c6, + limb2: 0x754cc050d1a93ac3f85ce805, + limb3: 0xe759f363f34e4784dc65a71 }, r1a0: u384 { - limb0: 0xb268b112fe50663ebefc462f, - limb1: 0x65ea246d3f57a53929c566c3, - limb2: 0xf6f1acec8b216a759551ef23, - limb3: 0x7ea7981226f28866a638a10 + limb0: 0xd34741277335bd3799ea321e, + limb1: 0xdd6641b8fbd73a1428f041ea, + limb2: 0xe38c8915296a5c201145b868, + limb3: 0x105d879c98b5261f00ea9de9 }, r1a1: u384 { - limb0: 0xd8c41d9dccfe679612af6f3f, - limb1: 0x18e8b663036a6bcc598c2eec, - limb2: 0xba4fb9893f92638c0878adc0, - limb3: 0x5e434ba461270fb9c9e1767 + limb0: 0x5c96d186d5a39ffc6149aefc, + limb1: 0xe4f274d1b18b7edb57fc9918, + limb2: 0xea1f8cfaa190965fbae29234, + limb3: 0x110e5f288f9b57423dcde8a7 } }, G2Line { r0a0: u384 { - limb0: 0x34d0ff2199a36ffb68433265, - limb1: 0x640ed7347ad5353958b78447, - limb2: 0x52f00ed40ebc20f8142b3b4a, - limb3: 0x171dfa9b4c0beef6d9b7a8aa + limb0: 0xb67cc5f083f96e39a134d194, + limb1: 0xaf9e780b6c4a7184061027d7, + limb2: 0xdcda4477070e92cdf3397d43, + limb3: 0x6a696f2522cc9af3d082748 }, r0a1: u384 { - limb0: 0x293af26d027cf14acbdeadf5, - limb1: 0xbf6945ba97845546655cc5b3, - limb2: 0x3fafeac6f07bdc3a0f5282e0, - limb3: 0xf934b1ebe63e6b3ff7ed953 + limb0: 0x392c02806e22eca0d48618e7, + limb1: 0x8aba49a57d2d347b3df198c6, + limb2: 0x754cc050d1a93ac3f85ce805, + limb3: 0xe759f363f34e4784dc65a71 }, r1a0: u384 { - limb0: 0xb268b112fe50663ebefc462f, - limb1: 0x65ea246d3f57a53929c566c3, - limb2: 0xf6f1acec8b216a759551ef23, - limb3: 0x7ea7981226f28866a638a10 + limb0: 0xd34741277335bd3799ea321e, + limb1: 0xdd6641b8fbd73a1428f041ea, + limb2: 0xe38c8915296a5c201145b868, + limb3: 0x105d879c98b5261f00ea9de9 }, r1a1: u384 { - limb0: 0xd8c41d9dccfe679612af6f3f, - limb1: 0x18e8b663036a6bcc598c2eec, - limb2: 0xba4fb9893f92638c0878adc0, - limb3: 0x5e434ba461270fb9c9e1767 + limb0: 0x5c96d186d5a39ffc6149aefc, + limb1: 0xe4f274d1b18b7edb57fc9918, + limb2: 0xea1f8cfaa190965fbae29234, + limb3: 0x110e5f288f9b57423dcde8a7 } }, G2Line { r0a0: u384 { - limb0: 0xef96197612181ab06928cec6, - limb1: 0x458de6a5370193193dd000ec, - limb2: 0x427f47055aef7963d1ecade7, - limb3: 0x1955f48009a7185c26d8d6b7 + limb0: 0xfd988b3fefee9bec8d580624, + limb1: 0xea8b268179a0cff5e5a733de, + limb2: 0xc3261de3bb0dae36dd3a12d1, + limb3: 0xe0311c57778716dd26ec448 }, r0a1: u384 { - limb0: 0x2a3400147ba99f14163f66c9, - limb1: 0x707fb60013ac43c3eeb16717, - limb2: 0xa1341f3f7a674dd231569ff2, - limb3: 0xd1bf9b6cea07015dd1732d3 + limb0: 0xbd3bb91f6aebae19c756f359, + limb1: 0x8ddb3cfc5cbb0a427decde5c, + limb2: 0xa3ee67368948da84ef76cc9c, + limb3: 0x386b903ec5f7b21375b440b }, r1a0: u384 { - limb0: 0x324ced360e1b6821be307c61, - limb1: 0xb6fc1c3a2e46f2cbedb61baa, - limb2: 0xccc6b66e2c94c9fbc4c6cd05, - limb3: 0x17642529940f22b24f5f8c20 + limb0: 0xf101c44cc5023657f2d800ce, + limb1: 0xe3c33e1823e3fbd36e6ec7f3, + limb2: 0xb72b4d93169a4b6f53c98bd8, + limb3: 0xfe4e73b7283c84a94493193 }, r1a1: u384 { - limb0: 0x4e3269814ec6c42223fc2007, - limb1: 0x3b44204dc45ba230453eaa17, - limb2: 0x816eb035608279fef41c816b, - limb3: 0x9ce00eddf6dbd60f984662f + limb0: 0x72d680350e90ad8a1b951514, + limb1: 0xbcc457b76fcdb17ec8734b67, + limb2: 0xc2f60e7bf5f241b7e5cee4a0, + limb3: 0x16aaebbc648697f433c2261d } }, G2Line { r0a0: u384 { - limb0: 0xef96197612181ab06928cec6, - limb1: 0x458de6a5370193193dd000ec, - limb2: 0x427f47055aef7963d1ecade7, - limb3: 0x1955f48009a7185c26d8d6b7 + limb0: 0xfd988b3fefee9bec8d580624, + limb1: 0xea8b268179a0cff5e5a733de, + limb2: 0xc3261de3bb0dae36dd3a12d1, + limb3: 0xe0311c57778716dd26ec448 }, r0a1: u384 { - limb0: 0x2a3400147ba99f14163f66c9, - limb1: 0x707fb60013ac43c3eeb16717, - limb2: 0xa1341f3f7a674dd231569ff2, - limb3: 0xd1bf9b6cea07015dd1732d3 + limb0: 0xbd3bb91f6aebae19c756f359, + limb1: 0x8ddb3cfc5cbb0a427decde5c, + limb2: 0xa3ee67368948da84ef76cc9c, + limb3: 0x386b903ec5f7b21375b440b }, r1a0: u384 { - limb0: 0x324ced360e1b6821be307c61, - limb1: 0xb6fc1c3a2e46f2cbedb61baa, - limb2: 0xccc6b66e2c94c9fbc4c6cd05, - limb3: 0x17642529940f22b24f5f8c20 + limb0: 0xf101c44cc5023657f2d800ce, + limb1: 0xe3c33e1823e3fbd36e6ec7f3, + limb2: 0xb72b4d93169a4b6f53c98bd8, + limb3: 0xfe4e73b7283c84a94493193 }, r1a1: u384 { - limb0: 0x4e3269814ec6c42223fc2007, - limb1: 0x3b44204dc45ba230453eaa17, - limb2: 0x816eb035608279fef41c816b, - limb3: 0x9ce00eddf6dbd60f984662f + limb0: 0x72d680350e90ad8a1b951514, + limb1: 0xbcc457b76fcdb17ec8734b67, + limb2: 0xc2f60e7bf5f241b7e5cee4a0, + limb3: 0x16aaebbc648697f433c2261d } }, G2Line { r0a0: u384 { - limb0: 0xb196a6791908f85ce25103, - limb1: 0x79ee02cfddf43e28120fe318, - limb2: 0x9a3655b9beb63075e5e5ec4b, - limb3: 0x4be87bc3958380dc14d9b12 + limb0: 0x6f85133f411d25e0b5f35e4e, + limb1: 0xc638badc6521e71c561777f7, + limb2: 0x8353d2452d7ab56d813e41e4, + limb3: 0x10bc8e7f6b5289bdc1c5fa9f }, r0a1: u384 { - limb0: 0x47ba7d8e7b41cff500b921db, - limb1: 0xc056ec39db623cf55d970a58, - limb2: 0xbcdc1f36dd1bca9c7fb4540a, - limb3: 0xd2bf2c4e6c3d08808c7339c + limb0: 0xab5f1742cb30521d01daacc0, + limb1: 0x9e56c445377075119d1596a4, + limb2: 0xa72211611536639fe4976d69, + limb3: 0x11f238149a22f79fa16cb32b }, r1a0: u384 { - limb0: 0xb220a39ce064de206d15a50, - limb1: 0xb8bba5ed9ccca0abad42b968, - limb2: 0xd8181c62d72647eee1d81c8c, - limb3: 0x703c9dfed780e69b235d80f + limb0: 0x8367fe7274231c74704c80ff, + limb1: 0xa8e2ad1a7f0c36a34b48cd88, + limb2: 0x7faca91a72963d25472465c, + limb3: 0x1311fd26e3b83c10952fb826 }, r1a1: u384 { - limb0: 0x7286ebcc64a71cb27dc42513, - limb1: 0xe8d38889491ed78be2254919, - limb2: 0x86d69ea6af08d2f6aa002e42, - limb3: 0x10635004a19d3147afb9b49d + limb0: 0xae246df1f149439c747384f1, + limb1: 0x68a615ee2f9d7f8d56f2174b, + limb2: 0xf64d48e37e9111200271d2ee, + limb3: 0x2daa9898e27bc3d9ce26195 } }, G2Line { r0a0: u384 { - limb0: 0xb196a6791908f85ce25103, - limb1: 0x79ee02cfddf43e28120fe318, - limb2: 0x9a3655b9beb63075e5e5ec4b, - limb3: 0x4be87bc3958380dc14d9b12 + limb0: 0x6f85133f411d25e0b5f35e4e, + limb1: 0xc638badc6521e71c561777f7, + limb2: 0x8353d2452d7ab56d813e41e4, + limb3: 0x10bc8e7f6b5289bdc1c5fa9f }, r0a1: u384 { - limb0: 0x47ba7d8e7b41cff500b921db, - limb1: 0xc056ec39db623cf55d970a58, - limb2: 0xbcdc1f36dd1bca9c7fb4540a, - limb3: 0xd2bf2c4e6c3d08808c7339c + limb0: 0xab5f1742cb30521d01daacc0, + limb1: 0x9e56c445377075119d1596a4, + limb2: 0xa72211611536639fe4976d69, + limb3: 0x11f238149a22f79fa16cb32b }, r1a0: u384 { - limb0: 0xb220a39ce064de206d15a50, - limb1: 0xb8bba5ed9ccca0abad42b968, - limb2: 0xd8181c62d72647eee1d81c8c, - limb3: 0x703c9dfed780e69b235d80f + limb0: 0x8367fe7274231c74704c80ff, + limb1: 0xa8e2ad1a7f0c36a34b48cd88, + limb2: 0x7faca91a72963d25472465c, + limb3: 0x1311fd26e3b83c10952fb826 }, r1a1: u384 { - limb0: 0x7286ebcc64a71cb27dc42513, - limb1: 0xe8d38889491ed78be2254919, - limb2: 0x86d69ea6af08d2f6aa002e42, - limb3: 0x10635004a19d3147afb9b49d + limb0: 0xae246df1f149439c747384f1, + limb1: 0x68a615ee2f9d7f8d56f2174b, + limb2: 0xf64d48e37e9111200271d2ee, + limb3: 0x2daa9898e27bc3d9ce26195 } }, G2Line { r0a0: u384 { - limb0: 0xc1d73f616b5e4248769bd7ca, - limb1: 0xce884334140ae3947b4a1788, - limb2: 0xd1bd54f4c2f9ec4d889bd498, - limb3: 0x8a0c009b64ab265b93abbca + limb0: 0x293cdab968151d9a88ba8197, + limb1: 0x91e20a097317fbf539a50489, + limb2: 0x60d594dea296004ee2824b62, + limb3: 0x190b7e72bd6ee0ed0faf4962 }, r0a1: u384 { - limb0: 0xabaaa6c4d3cd968da037e28e, - limb1: 0xbee067e413e69a5fce1e9c27, - limb2: 0x472888119c0d1b0564ea6fb9, - limb3: 0x4b1298ea9d4a0cb1707f74b + limb0: 0xb5b5a519c745663a2d0a6a22, + limb1: 0xe8d8005fede56d9bb7f102ac, + limb2: 0x1534acc00cf17be37afd327d, + limb3: 0xb3c34b4025f50c09d86ccf1 }, r1a0: u384 { - limb0: 0x5a6bfb7fbf286ce171ad124b, - limb1: 0xea3e1416e2cc90bddd3ab336, - limb2: 0xa31c20ea649b928d96adf3f1, - limb3: 0x8e52d671b19b19007103cf7 + limb0: 0x8a28c9f5c487242be3157d10, + limb1: 0x35adb9f220d3910e8e7e628a, + limb2: 0x8a53a50706970f599abb8b1, + limb3: 0x1813805985492b229d25c9c0 }, r1a1: u384 { - limb0: 0x621489d3bb07f1f1a76c317a, - limb1: 0x35fe9e2d67eae9cfb201b80d, - limb2: 0x539a78631690cc930aeb0d06, - limb3: 0x17c2910a45e92a5d189a5647 + limb0: 0x53f421abc7375d7ef5f4ea15, + limb1: 0x3453e28c8b88718a6bd2122c, + limb2: 0x181dbbb6144062890a582400, + limb3: 0xe27d7ff293c8253269fc184 } }, G2Line { r0a0: u384 { - limb0: 0xc1d73f616b5e4248769bd7ca, - limb1: 0xce884334140ae3947b4a1788, - limb2: 0xd1bd54f4c2f9ec4d889bd498, - limb3: 0x8a0c009b64ab265b93abbca + limb0: 0x293cdab968151d9a88ba8197, + limb1: 0x91e20a097317fbf539a50489, + limb2: 0x60d594dea296004ee2824b62, + limb3: 0x190b7e72bd6ee0ed0faf4962 }, r0a1: u384 { - limb0: 0xabaaa6c4d3cd968da037e28e, - limb1: 0xbee067e413e69a5fce1e9c27, - limb2: 0x472888119c0d1b0564ea6fb9, - limb3: 0x4b1298ea9d4a0cb1707f74b + limb0: 0xb5b5a519c745663a2d0a6a22, + limb1: 0xe8d8005fede56d9bb7f102ac, + limb2: 0x1534acc00cf17be37afd327d, + limb3: 0xb3c34b4025f50c09d86ccf1 }, r1a0: u384 { - limb0: 0x5a6bfb7fbf286ce171ad124b, - limb1: 0xea3e1416e2cc90bddd3ab336, - limb2: 0xa31c20ea649b928d96adf3f1, - limb3: 0x8e52d671b19b19007103cf7 + limb0: 0x8a28c9f5c487242be3157d10, + limb1: 0x35adb9f220d3910e8e7e628a, + limb2: 0x8a53a50706970f599abb8b1, + limb3: 0x1813805985492b229d25c9c0 }, r1a1: u384 { - limb0: 0x621489d3bb07f1f1a76c317a, - limb1: 0x35fe9e2d67eae9cfb201b80d, - limb2: 0x539a78631690cc930aeb0d06, - limb3: 0x17c2910a45e92a5d189a5647 + limb0: 0x53f421abc7375d7ef5f4ea15, + limb1: 0x3453e28c8b88718a6bd2122c, + limb2: 0x181dbbb6144062890a582400, + limb3: 0xe27d7ff293c8253269fc184 } }, G2Line { r0a0: u384 { - limb0: 0xfaceea5f122c096784323f83, - limb1: 0x1deec935cb246963ddd96d1e, - limb2: 0x7f29c1f62f11e21fd58e51ce, - limb3: 0x1367aaabe913dd0a66ed5767 + limb0: 0x788ac954b6de3b9ef5a6c12c, + limb1: 0xe13873c4ba9728c89be70b9a, + limb2: 0x5d6b9d45c0985f271595d4c9, + limb3: 0x1954917fe709faff9865ebc3 }, r0a1: u384 { - limb0: 0x14c1e34ded96d0070324c84, - limb1: 0xb8be1d3d384648b4141db4a2, - limb2: 0x8b68de67c802b180d0c3d451, - limb3: 0x1097b5d801eacd1a66f92b10 + limb0: 0x93fca181f0664865a2fc75fe, + limb1: 0x535e2e42a4a967f7ca763127, + limb2: 0xce90cca6dfec0e2e8fae9e3, + limb3: 0xd086b29c92aaddb7245299d }, r1a0: u384 { - limb0: 0x27bdb95d09954e39a6983141, - limb1: 0xbb3bdddc9bed42b3e5dbb3f8, - limb2: 0x9aa4e1fa99a7c28715227dc, - limb3: 0xac433ff4473f03c6e72cf13 + limb0: 0x4ef1ed09cae08920a78f3bd7, + limb1: 0x6714e095d8cc53e3829f2b5a, + limb2: 0x9022123e8d70a0049ccb62a6, + limb3: 0xef311f53ea87dc5da3ddd33 }, r1a1: u384 { - limb0: 0x6b084f8598c57e772da2634e, - limb1: 0xe0903bf0de2f4a06236b5377, - limb2: 0x84ee76cb98d95314a474af01, - limb3: 0x1784aaabcc3b5125a141e45d + limb0: 0xbc5ec58d4c68ebde3ce5d6af, + limb1: 0x91f1285170fbc3c4d812f3aa, + limb2: 0x13eec60eefd5588477e432d8, + limb3: 0x74a34dc5c8359340c5fe4f1 } }, G2Line { r0a0: u384 { - limb0: 0xfaceea5f122c096784323f83, - limb1: 0x1deec935cb246963ddd96d1e, - limb2: 0x7f29c1f62f11e21fd58e51ce, - limb3: 0x1367aaabe913dd0a66ed5767 + limb0: 0x788ac954b6de3b9ef5a6c12c, + limb1: 0xe13873c4ba9728c89be70b9a, + limb2: 0x5d6b9d45c0985f271595d4c9, + limb3: 0x1954917fe709faff9865ebc3 }, r0a1: u384 { - limb0: 0x14c1e34ded96d0070324c84, - limb1: 0xb8be1d3d384648b4141db4a2, - limb2: 0x8b68de67c802b180d0c3d451, - limb3: 0x1097b5d801eacd1a66f92b10 + limb0: 0x93fca181f0664865a2fc75fe, + limb1: 0x535e2e42a4a967f7ca763127, + limb2: 0xce90cca6dfec0e2e8fae9e3, + limb3: 0xd086b29c92aaddb7245299d }, r1a0: u384 { - limb0: 0x27bdb95d09954e39a6983141, - limb1: 0xbb3bdddc9bed42b3e5dbb3f8, - limb2: 0x9aa4e1fa99a7c28715227dc, - limb3: 0xac433ff4473f03c6e72cf13 + limb0: 0x4ef1ed09cae08920a78f3bd7, + limb1: 0x6714e095d8cc53e3829f2b5a, + limb2: 0x9022123e8d70a0049ccb62a6, + limb3: 0xef311f53ea87dc5da3ddd33 }, r1a1: u384 { - limb0: 0x6b084f8598c57e772da2634e, - limb1: 0xe0903bf0de2f4a06236b5377, - limb2: 0x84ee76cb98d95314a474af01, - limb3: 0x1784aaabcc3b5125a141e45d + limb0: 0xbc5ec58d4c68ebde3ce5d6af, + limb1: 0x91f1285170fbc3c4d812f3aa, + limb2: 0x13eec60eefd5588477e432d8, + limb3: 0x74a34dc5c8359340c5fe4f1 } }, G2Line { r0a0: u384 { - limb0: 0x6eff9ba7f60c670242d1fa57, - limb1: 0x8626d7d1944294b3c2a48a74, - limb2: 0xacaef8a92308b7a109d1aed5, - limb3: 0x93d7b0e6a9d68ea32a48f43 + limb0: 0x46d409dd77b17a23fc402a34, + limb1: 0x26d0e70f78ec18c019c2f074, + limb2: 0x98d531c6d1b75c297e5f3c9, + limb3: 0x3a571d848cc57291ff2ffa }, r0a1: u384 { - limb0: 0x757fca706b4ed5a5c9281465, - limb1: 0x69d2db3c5f3a1266550f4f19, - limb2: 0x63e6c584e0d8dc9429256c5c, - limb3: 0x17d7b7796eae9d82ccffd464 + limb0: 0x9220d2160322f603fa59c76, + limb1: 0xf7811520cd515d496363e693, + limb2: 0x2c5614352975026f33861c37, + limb3: 0x17644f4fbe80675d0953c99d }, r1a0: u384 { - limb0: 0x43a686d2ca2b993b4bebb6ac, - limb1: 0xf1122be2f9df7216cc50c8df, - limb2: 0x8bb9d13919909f2b7d0947f9, - limb3: 0x177a9240a6cff7f13acb31ba + limb0: 0x4aaca6cc8c9d33c63c0f1d1b, + limb1: 0xe45b1fa9442911a2857ec8fa, + limb2: 0x32c9f0ff272cf03afd720f7d, + limb3: 0x1e0242dad0177697c8a0aff }, r1a1: u384 { - limb0: 0x2101fbd360aa7d0d0ee19f99, - limb1: 0xec5aaaf3a2040aca8dd59ad9, - limb2: 0xa70d1db451439a4642fc46f3, - limb3: 0x13bcd6d4ad34b858ffb045f6 + limb0: 0x728463c48b5aea9ca697e90b, + limb1: 0x7b8f08b990bfcb2db30c3193, + limb2: 0x7232cfafe8d7566719d9c4af, + limb3: 0x5f1c40f1c28ca2cf8f83994 } }, G2Line { r0a0: u384 { - limb0: 0x6eff9ba7f60c670242d1fa57, - limb1: 0x8626d7d1944294b3c2a48a74, - limb2: 0xacaef8a92308b7a109d1aed5, - limb3: 0x93d7b0e6a9d68ea32a48f43 + limb0: 0x46d409dd77b17a23fc402a34, + limb1: 0x26d0e70f78ec18c019c2f074, + limb2: 0x98d531c6d1b75c297e5f3c9, + limb3: 0x3a571d848cc57291ff2ffa }, r0a1: u384 { - limb0: 0x757fca706b4ed5a5c9281465, - limb1: 0x69d2db3c5f3a1266550f4f19, - limb2: 0x63e6c584e0d8dc9429256c5c, - limb3: 0x17d7b7796eae9d82ccffd464 + limb0: 0x9220d2160322f603fa59c76, + limb1: 0xf7811520cd515d496363e693, + limb2: 0x2c5614352975026f33861c37, + limb3: 0x17644f4fbe80675d0953c99d }, r1a0: u384 { - limb0: 0x43a686d2ca2b993b4bebb6ac, - limb1: 0xf1122be2f9df7216cc50c8df, - limb2: 0x8bb9d13919909f2b7d0947f9, - limb3: 0x177a9240a6cff7f13acb31ba + limb0: 0x4aaca6cc8c9d33c63c0f1d1b, + limb1: 0xe45b1fa9442911a2857ec8fa, + limb2: 0x32c9f0ff272cf03afd720f7d, + limb3: 0x1e0242dad0177697c8a0aff }, r1a1: u384 { - limb0: 0x2101fbd360aa7d0d0ee19f99, - limb1: 0xec5aaaf3a2040aca8dd59ad9, - limb2: 0xa70d1db451439a4642fc46f3, - limb3: 0x13bcd6d4ad34b858ffb045f6 + limb0: 0x728463c48b5aea9ca697e90b, + limb1: 0x7b8f08b990bfcb2db30c3193, + limb2: 0x7232cfafe8d7566719d9c4af, + limb3: 0x5f1c40f1c28ca2cf8f83994 } }, G2Line { r0a0: u384 { - limb0: 0x3b2cb59fddb1960ab13e9e47, - limb1: 0xa8331c5308735a1e3e49a5c4, - limb2: 0x798c692a5373e07345f9496d, - limb3: 0x17b75c299b830b7db1e55e00 + limb0: 0xf6913070c37af578aa1b9a37, + limb1: 0x664781917f37151d3a0d627a, + limb2: 0x9d5cd2ddf7dd66c044a101e6, + limb3: 0x13cc21b4e1f7c288d1b899ad }, r0a1: u384 { - limb0: 0xc5d2dc6039e61debb0100d54, - limb1: 0x41e6a2cfdb897c652a232e4d, - limb2: 0xc91d7b4bb5ee0dc2989beca, - limb3: 0x68e3168773aa1cb0ed80ec9 + limb0: 0x5607928bdfad47c77f840a3, + limb1: 0xdd3d8bf376d25ba8b3a926aa, + limb2: 0x35c034874a2ccd33ec0fedad, + limb3: 0x176b6eb4cbcedd0416d8b2e9 }, r1a0: u384 { - limb0: 0x50f2e6f8d9cc279a8e295cdf, - limb1: 0xd348136bc5decdf30fadc609, - limb2: 0xc089b8f1ebf729e48385f0c4, - limb3: 0xcd6d031b4ff56300cc3646f + limb0: 0x1f81c4f93cff2721578a1cd7, + limb1: 0x7908a9522938e77f3e279a41, + limb2: 0x7fdc79ff7c835d873ab01ed2, + limb3: 0x11e3d19be097dc7e63b49b10 }, r1a1: u384 { - limb0: 0xe0e11f880e696bd2ea185c76, - limb1: 0xd6e53f643160fe740c366d36, - limb2: 0xc2fca2f2e46f1c9c3be8b840, - limb3: 0xdb6cd7345898cb48b4572ab + limb0: 0x235b99292b27c9efd6a59ff4, + limb1: 0x82cb49f680a93e6e718e3689, + limb2: 0x710cd7d6390eca09a291ad52, + limb3: 0xf60ffe1a70c2771c44ee20f } }, G2Line { r0a0: u384 { - limb0: 0x3b2cb59fddb1960ab13e9e47, - limb1: 0xa8331c5308735a1e3e49a5c4, - limb2: 0x798c692a5373e07345f9496d, - limb3: 0x17b75c299b830b7db1e55e00 + limb0: 0xf6913070c37af578aa1b9a37, + limb1: 0x664781917f37151d3a0d627a, + limb2: 0x9d5cd2ddf7dd66c044a101e6, + limb3: 0x13cc21b4e1f7c288d1b899ad }, r0a1: u384 { - limb0: 0xc5d2dc6039e61debb0100d54, - limb1: 0x41e6a2cfdb897c652a232e4d, - limb2: 0xc91d7b4bb5ee0dc2989beca, - limb3: 0x68e3168773aa1cb0ed80ec9 + limb0: 0x5607928bdfad47c77f840a3, + limb1: 0xdd3d8bf376d25ba8b3a926aa, + limb2: 0x35c034874a2ccd33ec0fedad, + limb3: 0x176b6eb4cbcedd0416d8b2e9 }, r1a0: u384 { - limb0: 0x50f2e6f8d9cc279a8e295cdf, - limb1: 0xd348136bc5decdf30fadc609, - limb2: 0xc089b8f1ebf729e48385f0c4, - limb3: 0xcd6d031b4ff56300cc3646f + limb0: 0x1f81c4f93cff2721578a1cd7, + limb1: 0x7908a9522938e77f3e279a41, + limb2: 0x7fdc79ff7c835d873ab01ed2, + limb3: 0x11e3d19be097dc7e63b49b10 }, r1a1: u384 { - limb0: 0xe0e11f880e696bd2ea185c76, - limb1: 0xd6e53f643160fe740c366d36, - limb2: 0xc2fca2f2e46f1c9c3be8b840, - limb3: 0xdb6cd7345898cb48b4572ab + limb0: 0x235b99292b27c9efd6a59ff4, + limb1: 0x82cb49f680a93e6e718e3689, + limb2: 0x710cd7d6390eca09a291ad52, + limb3: 0xf60ffe1a70c2771c44ee20f } }, G2Line { r0a0: u384 { - limb0: 0x28b275816cb8ba43b50ec028, - limb1: 0x5ce530495945847da04b55f6, - limb2: 0x7acd93a2ccbd5e5bb9712a5c, - limb3: 0x16ad6d9166af8ca8c52cb8c5 + limb0: 0x8b2d5026a69128c8dcd7fa01, + limb1: 0xa28af7e6845ec126ce674de3, + limb2: 0x74618fcee9375eaffe329a57, + limb3: 0xd495764b344945c1bbf2528 }, r0a1: u384 { - limb0: 0xe05ee7b14b2fce35ec0c53be, - limb1: 0xf03092a5c26a199c8d502199, - limb2: 0xfea3beed2144e1bf2dd05135, - limb3: 0x116c1b86c61d213ccb9090a + limb0: 0xc7191fe7d9c67d8956440c8e, + limb1: 0x9886e12a6f751b086c256b4e, + limb2: 0x2d800e1229e7acc62268ce86, + limb3: 0x8a1766c3924e9fe41995f27 }, r1a0: u384 { - limb0: 0xef6fca3afb318378c59ad323, - limb1: 0x972f11ea5910f9ca77e13abe, - limb2: 0xdb85b36c5d1f7fd8b2a3b92, - limb3: 0xd55bb338be5e6136853adb4 + limb0: 0xe95730415bdae7fa69798292, + limb1: 0x550a77eda4e6fd2f0bea1e69, + limb2: 0xad91cd00e401b4c4d699ac6, + limb3: 0x147171fe6dce69e5291e5d4 }, r1a1: u384 { - limb0: 0x766e4946311f5bf63976ff84, - limb1: 0x9c3c71aaa6c5350b67b847aa, - limb2: 0x67ec9354b2f012c09d252371, - limb3: 0x11b7f0c3dc91200cd85b0005 + limb0: 0x3950881f65abb4ae1b59bbca, + limb1: 0x588580a38b689b30f05b80bd, + limb2: 0x77cb4489a340d3748044c17c, + limb3: 0xda658ea95a6fefe83fa39d1 } }, G2Line { r0a0: u384 { - limb0: 0x28b275816cb8ba43b50ec028, - limb1: 0x5ce530495945847da04b55f6, - limb2: 0x7acd93a2ccbd5e5bb9712a5c, - limb3: 0x16ad6d9166af8ca8c52cb8c5 + limb0: 0x8b2d5026a69128c8dcd7fa01, + limb1: 0xa28af7e6845ec126ce674de3, + limb2: 0x74618fcee9375eaffe329a57, + limb3: 0xd495764b344945c1bbf2528 }, r0a1: u384 { - limb0: 0xe05ee7b14b2fce35ec0c53be, - limb1: 0xf03092a5c26a199c8d502199, - limb2: 0xfea3beed2144e1bf2dd05135, - limb3: 0x116c1b86c61d213ccb9090a + limb0: 0xc7191fe7d9c67d8956440c8e, + limb1: 0x9886e12a6f751b086c256b4e, + limb2: 0x2d800e1229e7acc62268ce86, + limb3: 0x8a1766c3924e9fe41995f27 }, r1a0: u384 { - limb0: 0xef6fca3afb318378c59ad323, - limb1: 0x972f11ea5910f9ca77e13abe, - limb2: 0xdb85b36c5d1f7fd8b2a3b92, - limb3: 0xd55bb338be5e6136853adb4 + limb0: 0xe95730415bdae7fa69798292, + limb1: 0x550a77eda4e6fd2f0bea1e69, + limb2: 0xad91cd00e401b4c4d699ac6, + limb3: 0x147171fe6dce69e5291e5d4 }, r1a1: u384 { - limb0: 0x766e4946311f5bf63976ff84, - limb1: 0x9c3c71aaa6c5350b67b847aa, - limb2: 0x67ec9354b2f012c09d252371, - limb3: 0x11b7f0c3dc91200cd85b0005 + limb0: 0x3950881f65abb4ae1b59bbca, + limb1: 0x588580a38b689b30f05b80bd, + limb2: 0x77cb4489a340d3748044c17c, + limb3: 0xda658ea95a6fefe83fa39d1 } }, G2Line { r0a0: u384 { - limb0: 0x16fc514c294eac843c08592a, - limb1: 0xda9527dae73a0e154ff3db33, - limb2: 0x5aef459310199025e097f4a5, - limb3: 0xeb4765b58e95f01d0240e70 + limb0: 0xfb36382a07a0546177544af4, + limb1: 0x98af0f0579819a56ea21677c, + limb2: 0xaba237656261d369d5d808d6, + limb3: 0xc9fb6adc6528d40d93c0da4 }, r0a1: u384 { - limb0: 0xea643701247010db3eff71c2, - limb1: 0x5d53397580685dd8d04e2290, - limb2: 0x9a253e39b83e3176960ada21, - limb3: 0xa8634b16c2c46c2c7623199 + limb0: 0x5c117b9250db1f77095f3f80, + limb1: 0xda15f91e9282ff6deb2a2558, + limb2: 0xaa820f7393229d9126ae7b62, + limb3: 0x110c5e918c554c126361e32e }, r1a0: u384 { - limb0: 0xe4e3f3b472df1cc7eb866172, - limb1: 0xd8a227c37f8705f2a370971a, - limb2: 0x6b9f94021e2cfa7fab5512aa, - limb3: 0xc411dba802de0b2246ec749 + limb0: 0xac056d30f948e924aa511f05, + limb1: 0x31318c843660bb21180267e1, + limb2: 0xb22b2d85ae7080079ab0bc7e, + limb3: 0x14941dda97edcedd3d32ad23 }, r1a1: u384 { - limb0: 0x21b408b759ae5a17672ea255, - limb1: 0x9ca99cc099b6bfa8e7946dda, - limb2: 0xb40bee9f38c669b93a45df80, - limb3: 0xb3eeb149beb16cf033387ee + limb0: 0x876fd0749511e318e84cc37e, + limb1: 0x71b4a1c6b941f0bd7731cf3a, + limb2: 0x54e1fb48d3305bd534e5132f, + limb3: 0x262c905d8278be2f7a9d1ea } }, G2Line { r0a0: u384 { - limb0: 0x16fc514c294eac843c08592a, - limb1: 0xda9527dae73a0e154ff3db33, - limb2: 0x5aef459310199025e097f4a5, - limb3: 0xeb4765b58e95f01d0240e70 + limb0: 0xfb36382a07a0546177544af4, + limb1: 0x98af0f0579819a56ea21677c, + limb2: 0xaba237656261d369d5d808d6, + limb3: 0xc9fb6adc6528d40d93c0da4 }, r0a1: u384 { - limb0: 0xea643701247010db3eff71c2, - limb1: 0x5d53397580685dd8d04e2290, - limb2: 0x9a253e39b83e3176960ada21, - limb3: 0xa8634b16c2c46c2c7623199 + limb0: 0x5c117b9250db1f77095f3f80, + limb1: 0xda15f91e9282ff6deb2a2558, + limb2: 0xaa820f7393229d9126ae7b62, + limb3: 0x110c5e918c554c126361e32e }, r1a0: u384 { - limb0: 0xe4e3f3b472df1cc7eb866172, - limb1: 0xd8a227c37f8705f2a370971a, - limb2: 0x6b9f94021e2cfa7fab5512aa, - limb3: 0xc411dba802de0b2246ec749 + limb0: 0xac056d30f948e924aa511f05, + limb1: 0x31318c843660bb21180267e1, + limb2: 0xb22b2d85ae7080079ab0bc7e, + limb3: 0x14941dda97edcedd3d32ad23 }, r1a1: u384 { - limb0: 0x21b408b759ae5a17672ea255, - limb1: 0x9ca99cc099b6bfa8e7946dda, - limb2: 0xb40bee9f38c669b93a45df80, - limb3: 0xb3eeb149beb16cf033387ee + limb0: 0x876fd0749511e318e84cc37e, + limb1: 0x71b4a1c6b941f0bd7731cf3a, + limb2: 0x54e1fb48d3305bd534e5132f, + limb3: 0x262c905d8278be2f7a9d1ea } }, ] @@ -20646,1604 +20656,1599 @@ mod pairing_tests { let hint = MPCheckHintBLS12_381 { lambda_root_inverse: E12D { w0: u384 { - limb0: 0x15ea218ae2dd0b70ae80962b, - limb1: 0x30a0e961075bec8169d117eb, - limb2: 0xc52b486fb91cc5660aa2d4b0, - limb3: 0x70129590f4fcaa739ca958c + limb0: 0x574f81910b9dae474ac5260e, + limb1: 0x17281f777fb4c39c4cfc05d2, + limb2: 0xdc96cf6beaabc20f8c84fa77, + limb3: 0x792041575e3d59c0387f4c4 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x3eb1be4ffcc7538dd54c4992, - limb1: 0xd3d23e09a961da903cda0ae7, - limb2: 0x864d8203097173c828cdf3b4, - limb3: 0xf38444063b4c14cc94497f4 + limb0: 0xdce1ed5f8993fe6d54e5c192, + limb1: 0x23f61a800cc644f5cb1f8f38, + limb2: 0x9459c43980149ee6efdc418c, + limb3: 0xf47c69614c7525b1cc9e937 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x659de328dae2cb700f8f939d, - limb1: 0x1e9d1123e7b92d01c531e34c, - limb2: 0x70a2dc1960e442407fd3d51d, - limb3: 0xb2382307eb1a459e5a484b3 + limb0: 0xc58f391bfa0464a0169e0999, + limb1: 0x729876ed4e5e7870f42f3544, + limb2: 0x9f0e7a72e8fe6d328533b33e, + limb3: 0xd703ace32a590416f0d2d76 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x3aadabb773e1d4d3ad9ea425, - limb1: 0x5b10016bf5db66bc8ef3152a, - limb2: 0x9bee66ddbb6f357729ab5448, - limb3: 0x1fe7f0e5d087abe2a8b5caf + limb0: 0x3ec8b46c59144fab9646bacd, + limb1: 0x974db77dd229bb77cd129b76, + limb2: 0x4a5a894c5a9cb956c61f34a2, + limb3: 0x8eb345c14324e02b20f099c }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0xccf280abef694ffee7ad41b3, - limb1: 0xbc3de178e7898c5d02481878, - limb2: 0x8d81a68dfdd46dfe1970d992, - limb3: 0x4c5d11aa6376f94a9d45b4e + limb0: 0xd4e2d7f4267f0738fe6bdfd2, + limb1: 0x8d88f0aa865c1cba70f3ff, + limb2: 0x5337462afacd0c2486c7ce88, + limb3: 0x1894ad60f4756826427dd3ba }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x30b4945e77090502ddb40e83, - limb1: 0xb20792de2ad2be74fc4c0dd, - limb2: 0x359faa986af4d532e2d05d2a, - limb3: 0x4d4b1edc006f38fd89ec7f4 + limb0: 0x4f55c5688f089cde0717bb2d, + limb1: 0x5bc21b6bf52f6fe5c757ba6d, + limb2: 0x868ea22a61f91f23b96bdc25, + limb3: 0x2eb7d10af4a397331bf7f31 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, w: MillerLoopResultScalingFactor { - w0: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, - w2: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, - w4: u384 { - limb0: 0xd66db49ac6e4ff2f249c8a09, - limb1: 0x64d41909401fe745ab96f557, - limb2: 0xeed6d08deadc64b30a9fc856, - limb3: 0x15744e39455f8f825efa7e5 + w0: u384 { + limb0: 0x50abdec3b8a2028c4fe9033b, + limb1: 0xbf58bae95463d1d9270755e5, + limb2: 0xaa43b98aeff63d4c78d3fb6, + limb3: 0x19aa1256a26e73d60317f078 }, + w2: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, + w4: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, - w10: u384 { - limb0: 0xdae64b64f31a00d0db6320a2, - limb1: 0x25cb997b6910ede73150aa6, - limb2: 0x5474dc49799ae6d1e8e54a69, - limb3: 0x18a9cd06a529eda2252bffd0 - } + w10: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, Ris: array![ E12D { w0: u384 { - limb0: 0xc35501bff375107cfcf00615, - limb1: 0xbce93fa2449d606a71b1f916, - limb2: 0xedfe402885ef136b3cc370e, - limb3: 0xeac7a808d282045675e84e5 + limb0: 0x3f21fc0e8d46353f2a2957d8, + limb1: 0xdb41b461d0d8e7c6cfd4e699, + limb2: 0x3f0458297b1cdb569010b36c, + limb3: 0x179d7baa607582505df3373c }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x789aceb1433fec25f8501309, - limb1: 0x6c9f7bffec4d8bc3664d7855, - limb2: 0xbcd0a3e1566b24f4463ba62c, - limb3: 0x187b7b60a6df5be7dd11bb4d + limb0: 0x45de8f9b11515424138cdd88, + limb1: 0xb6357fa8f1f8193cd356cc46, + limb2: 0x8408667be7ca43b12a71631d, + limb3: 0xe0c75d10c9af6e8f012c1e6 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x13a3d8dc8df193bd737e9b7c, - limb1: 0xad1eabbafb5e1d6ca2d29542, - limb2: 0x1a2f877e4c0b995194e5c8e6, - limb3: 0xc3056eba19226d4d41c252d + limb0: 0x2df19f37df16bcdc347d1f85, + limb1: 0x6ab3fc10c331dafa369d124e, + limb2: 0x86a1b4895a89240f16f1f9e1, + limb3: 0x199e3292c5bf0646f7f28888 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x57054a66e7c0a087861847cc, - limb1: 0x7760a060f9c6b8c95e12943b, - limb2: 0x9bac76d38deac70c962ac0cf, - limb3: 0x9b5cd222615f98519f36a35 + limb0: 0x771aa50ba96176a6a3df43e1, + limb1: 0x8f8cc7ae9d8cb04c1a8eba4a, + limb2: 0x9152e38380a86c8b23d46b97, + limb3: 0xaaa3894da52f1185d24ecc8 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x19a1cf48f337de5521a278c, - limb1: 0x9a8542627e4424e0ad149e74, - limb2: 0x85926ba6b10346c407a0ce2c, - limb3: 0x13819f6961afab89f849ae0d + limb0: 0x508823683415771b3907690b, + limb1: 0x589f15f9555a9bc5faf2f4d2, + limb2: 0x5f464ea84181f51804004f0c, + limb3: 0x8a86fdd0a6450bec0e6faeb }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0xf052f523631e205b32078bf3, - limb1: 0xd3adf7700a28f55ce7a031cd, - limb2: 0x25d0d5bc5353e82d2cf65e30, - limb3: 0x18977d8b585cd22684782adf + limb0: 0x8301a2a3233769f5b62c8ec2, + limb1: 0xc18c018ea143d378be3f3d0e, + limb2: 0xe5af03bb41577c760831f9ce, + limb3: 0x8e9b8226d627e7763bd1f13 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xba72004f3ac6ae3a0be2b3c6, - limb1: 0x10df0383db6d864f8f411dc7, - limb2: 0x7e5ca0b6127e31dc2b857391, - limb3: 0x1568dff23bf282e40e449672 + limb0: 0x5768102d84473371afc34ddb, + limb1: 0xef150a807cb0a4ad8cbf85d1, + limb2: 0x9f5b8e8cfdbc86aa40308a38, + limb3: 0x364840ebbf4d73b5f780666 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0xf412709c7fb88e97d22c7e37, - limb1: 0x3d3bd706553b505d38f60b2a, - limb2: 0x12b2d435ce9a138a73afcc4e, - limb3: 0x6c9108ea0558b4ee23de717 + limb0: 0x7557ec70e7f02b83789b4c6d, + limb1: 0xf377b9577be9df169f7245fb, + limb2: 0x9633cbdfe94bb13c49e8d4d, + limb3: 0x12ed625e4aaa64127cae2c76 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xd8aadfae7ba18f54fa6472b2, - limb1: 0x8670dc4178de04dbd72810e9, - limb2: 0xfde5533953e6bae1be18f9c6, - limb3: 0x1a006922e335f056710b8d1a + limb0: 0xfa0f59e6e22f8c928e8e1e7d, + limb1: 0x93ec12bddf40932001a2e004, + limb2: 0x322de8a1f8db365e9f3662c6, + limb3: 0x1886c86b3b2a9fd7085facab }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x841b4473e449c5c4b3c9eaf2, - limb1: 0x9c1574295b024a6bf2fbfb17, - limb2: 0x7b31c4d939d33cb654c3e96e, - limb3: 0x18e8b36e94eb85df9a01fada + limb0: 0xaf6b9888da73c4f983209278, + limb1: 0x60973f05aa327dd18bc3886b, + limb2: 0x7324203a90b15540505b7904, + limb3: 0x963c3722b2ce69cbdb92714 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0xc967edc548ce3e8a2dd2d490, - limb1: 0x3f3522daa70fa2b793fc3e60, - limb2: 0xf3f27f36daf2ae137457f91d, - limb3: 0xc99c2e451b3227b9a8bdf5d + limb0: 0x295596c16f55c38ba5077cfd, + limb1: 0xb6716e9398a06c2b865b357d, + limb2: 0x854c642fd0e2cc6eb204f094, + limb3: 0x872758e305a5b0520f0d27d }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x9703413845e725a0ed6e5b8c, - limb1: 0xc25fa619524a28aca1b9df3, - limb2: 0x7027f03665f3232c39903c9f, - limb3: 0x11ba54ac30e8a500257b05f5 + limb0: 0x533bc0c522f9116070ee15ca, + limb1: 0x524d53ad2ad4ec622936238, + limb2: 0xd5a09397ce1c90e637766a7a, + limb3: 0x73ff0c8a0dfd408b1d37276 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xcc54415245758c17c0a14ba0, - limb1: 0x24afa55d81440aae4cd1ed90, - limb2: 0x4a718bc02f1bb907f8b8c685, - limb3: 0x12ba42049394e7ef9c343d3a + limb0: 0xe38b876cd434577ba1a74c79, + limb1: 0x2574949674fd52f5e2f9f5db, + limb2: 0x548e320eb07cf7ea10699e1c, + limb3: 0x7622a5b295d999e7a6aeb4e }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x25cd47d8ab5acfb3a6f6d88c, - limb1: 0x20888e804f184dae20d62b77, - limb2: 0xebdf6711e5b04f02d67ec3f1, - limb3: 0x4a7a738d76f6042ef1eaeca + limb0: 0xaf89b1e22db78c3b2eed61c9, + limb1: 0x1d33fe15cb23f439cd853b9a, + limb2: 0xa3e60975588ea9740baa2445, + limb3: 0x14641d3663c832cceaf7758f }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x9ede392dad858b347753b0c0, - limb1: 0xfd5f1f02d5cc404f396c870b, - limb2: 0x3f151d1ea51ed2161c8bf68e, - limb3: 0x16fa4ebe34be08acfda768cd + limb0: 0xdc7688fbb3998096c4587a9, + limb1: 0xc0d6d3cddeb314ff1d03a7b1, + limb2: 0xba8ef69344badf0f7c7eb6b3, + limb3: 0x16b7ed25cf55797e769bc13d }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x49aafc24b62ae95a9cc33b6c, - limb1: 0x7f722be15406933b10f7b007, - limb2: 0xdbf023af51bad36e1f25a1d1, - limb3: 0x903d236a69c9cfb74cd9b5b + limb0: 0x7df7bae3a74449bf69fdd1a4, + limb1: 0x270cc08d814e6520e359a6a6, + limb2: 0x809db30960a16fe6a67eed01, + limb3: 0xbf1d3684ec1cef1de25b2f6 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0xb06a264e630769be162515bc, - limb1: 0xf284a9f20a2d0cc1ca1fe836, - limb2: 0xe05b135524742bb9a1b5641f, - limb3: 0x9fb0cba0ae6e8413c10f0ee + limb0: 0x55e2da1c4fbe7f674ed63273, + limb1: 0x494f7234013e0a300154c1c9, + limb2: 0x1697a10e1020ee2a988ab97a, + limb3: 0x18f439bdb7315f36ec3533d }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0xfb8683d121b2a3a6df78737d, - limb1: 0x7f0c313a8dd5d2d85ac303f0, - limb2: 0xc4026e0b831e8d097b10ee1c, - limb3: 0xdecbc57c010d5c73671ddd5 + limb0: 0x2ae17cdf3d591deb5b14725c, + limb1: 0x11672964724f10df5e7895f2, + limb2: 0x4c88280bdb30eb2bf9fc8cc6, + limb3: 0x12d86050f183225b6d63d28b }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xd5726b1cd2a087c6bf7c08a5, - limb1: 0xb0563110e4ddb8abbf0ccaa9, - limb2: 0x6d6c62786d58f68a51911e5d, - limb3: 0x19df2ce4f9820ef8b050a0b0 + limb0: 0x49b5f6b51eb657bbbfd0f8aa, + limb1: 0x1daa247f8e4bb561d1d668b7, + limb2: 0xd38ac2d6cc83a72e86bca3fc, + limb3: 0x16de90251e3db38c4b9ed83 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x3d1aa9040c8392234fb55ac8, - limb1: 0x9f98774c764c7c5cc1e23066, - limb2: 0xbb71c8591ae14a1dade1b8da, - limb3: 0x50cdeb39a04b4d85a461903 + limb0: 0x42569be7d1cc22e7ca906956, + limb1: 0x56161c85aba8dccc378b8fad, + limb2: 0x695f2e39ebfbaef96ce4b573, + limb3: 0x1e2f52b5c85322c664fc34 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x8335cb43d2645235f57e0161, - limb1: 0x2948962a356e506430bfc1fd, - limb2: 0xe61791c88f55208be2cb3aa8, - limb3: 0xa34fe2ebb25c83f6b44498c + limb0: 0x9c0fd43cf4c1c3b174fd33c6, + limb1: 0x7cc2ecc1eec274e64ceec187, + limb2: 0xf5a8c4b0c72365eae70be063, + limb3: 0x1136429f95d8e211bc4737f1 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0xc80c5ba3f710d9422a097ca, - limb1: 0xc78fab03aae88b574838cce2, - limb2: 0x213ce9f58b9eda1025fed092, - limb3: 0xb4ca3be13c455698ab299c9 + limb0: 0xc7f7cd00396c92138e4a2d3, + limb1: 0xb0a587a6465184d35140802a, + limb2: 0x1c36e66ac3f3a643fc88fafe, + limb3: 0x5a572df7258e88751fa7683 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x5573a029cf3f354ea2344a58, - limb1: 0x84e31e3cf97c930ab88b2c6c, - limb2: 0x942d0b62ff75b584cbe32161, - limb3: 0x19469b394780d965cc63ee12 + limb0: 0x3d5e4e11de41f7bf7a5c684c, + limb1: 0xcf5ebdc072dfa4f5cc3511d5, + limb2: 0xaeedf233290025536178df8d, + limb3: 0x55ac44a0436546f00ceabd3 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x5fcbe217029ecc0feb353506, - limb1: 0xf960d5c181e705a31f75e330, - limb2: 0x203ac3b4d78b01b2f0b7b965, - limb3: 0x142eb0dff3708fb77ebc9485 + limb0: 0xcb9122fb3054826b54b094d3, + limb1: 0x833543e61b6f028f020666d, + limb2: 0xdd8710d00f74be6ecaa9634b, + limb3: 0x2b9aa74b8f325835e6fbedd }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x1c8eb450e7708b960ea1abdd, - limb1: 0x9f4219f5e8b73cbc7fb42f6a, - limb2: 0x8e2e43a4519bbde08f529acc, - limb3: 0xffe14c820752a568994959f + limb0: 0xc810ab36e3314fb92e413552, + limb1: 0xc4264cc68743ee58c37fabf8, + limb2: 0xd7cadda10c7b70538446f9b8, + limb3: 0x18b87f6af6872bb924fbca22 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0xc8160fd1c84bd73c632b1624, - limb1: 0x605fb17440ae7551a447d366, - limb2: 0x9fbbc78b25313fddf680355a, - limb3: 0x11a2e76a3ad353b9d5a3322 + limb0: 0xdcee5e1a4775251b7ee1ce22, + limb1: 0xfb4c913ca67a528508b39625, + limb2: 0x4611dab1a57d69df35457a6d, + limb3: 0x18e132dc494b6ce347185f9 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x424edf3d631d37cbc077ad96, - limb1: 0xa92010b76f85b484aa828086, - limb2: 0x8195803adfcf04d588abc721, - limb3: 0x9e19e91f519c33c39d4b0c + limb0: 0xde9adcf1b53a355da0d0a676, + limb1: 0x34f818d91c06459727536e2f, + limb2: 0x840b085fb0f3c1aa0b71abd8, + limb3: 0x19a08842b04297208a9f2045 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x74dcf380e398861a9de824b6, - limb1: 0x3b76dc083b26eae0f2cd3cc6, - limb2: 0xbb82a36fd3e2f5deeaf55227, - limb3: 0x6df43a0c0563fcd5cb1e9d2 + limb0: 0x491d66a6a4ae097665d29651, + limb1: 0x4b3aeccd0b71a3b7166323f3, + limb2: 0x6c8095b621901684c67d708c, + limb3: 0xf063f0cb991d30f05f97cac }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x92b18016774f1ba890d21b0c, - limb1: 0x13c0d4727b7df0fc4a72e393, - limb2: 0x7d5c8ece3d566999d176fe00, - limb3: 0x10dbb3c388e3809c14eab838 + limb0: 0x376ba2aa7c4a199a818127e2, + limb1: 0x895ea17d1e4a3c22e7d7ba40, + limb2: 0xcb9aaa496c9190fc2114c9b0, + limb3: 0x7f0568cadf5570daacf1f7a }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x9107ac7ccd4137f1d4b59be, - limb1: 0xa4135a2a2704c00414e30f5d, - limb2: 0xb12aaaf67560e35c34b20e51, - limb3: 0x177ac776fd536ed14164b60f + limb0: 0xe05021fe3ac2a246328cbda1, + limb1: 0xcd598895c35b6eaac4601f33, + limb2: 0x697b0ab754956978048f76be, + limb3: 0x114d23b1736334f6fc8fb8ef }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x5012ea91261685e342d6ba4, - limb1: 0x5c6c4756bd96bd273364fb91, - limb2: 0xd6e275de657b3fc77aa49da2, - limb3: 0x6585d32d36777b2cad5f5aa + limb0: 0x1c034d0f47f9d410b7847a34, + limb1: 0xb018005ce3fdf0ae23ab91ea, + limb2: 0xa79ccb8c0e25d7b5b6937c95, + limb3: 0xbef6bbb2e32bf12d9f78201 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0xd14ee1f50099f4704e6a0b32, - limb1: 0x1db62df2e6cf64acdd7eb82e, - limb2: 0x75b8e2d086ebada7fa67e91d, - limb3: 0x9083de63a596194465554fd + limb0: 0xaeccf27da0164ee7b16d17aa, + limb1: 0xe96baebdd55c781b610e3928, + limb2: 0x78d35d8db856d1d79f1f98ca, + limb3: 0x5c12d714b0cc7c8180c408b }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xbecee0390e9f460baad9da7d, - limb1: 0xf2522b9caff80102c54605d3, - limb2: 0x791e7a15bf7a43f139d3ecb0, - limb3: 0x3647b467d071e35c56ffb9c + limb0: 0x12b6fb253f8111bfc644a0dd, + limb1: 0xd7c39a55fcd7734c983b495f, + limb2: 0x4344f6f6ac7afa7544cfe9b3, + limb3: 0x20ff61b54e64920ad04f94e }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x5676e48a820c41a268f4de20, - limb1: 0xcbf35a9e94b63440934bd008, - limb2: 0x31ca9e6c2d60ee8cd876dd88, - limb3: 0x154f5f1194dbe82ce57ea826 + limb0: 0x9de41ae1a9323de2eef654fb, + limb1: 0xe30d1e8d50c63cb96a5ee149, + limb2: 0x718172ff0508308adc0d4163, + limb3: 0xe02a52196a796217375dc7 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x4ea9c13790b6f5ce6add3313, - limb1: 0xca492a6e73e77b0944ab409b, - limb2: 0x817c18ef869ec9afa8ea6f66, - limb3: 0x18498f22f1ddf79be1afced0 + limb0: 0x80031268bbc86b3989cb2ccc, + limb1: 0xab6b89eac5eaca54f227a5e4, + limb2: 0x9411bc914a10b0e8bdba13c5, + limb3: 0xefebdabcfeb2de7e448729 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x6d20a40797fa9a066f263170, - limb1: 0x2f41dc0d20ec85b376455fb1, - limb2: 0xa9facb44143dd2c8058760de, - limb3: 0x77dca0fc73485f61f2acf62 + limb0: 0x514a24fb8b4a76db39956064, + limb1: 0xde7c1001fea0c83f610061dc, + limb2: 0xd05e1594572792a3d72344a9, + limb3: 0xd554bac7c3f477e3799e97b }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xc1102a70feb30542b7aa94f3, - limb1: 0x894cfecd2598cf15df3c3092, - limb2: 0x267764af358a347d9586cae5, - limb3: 0xb3b4a26aa8ab17b256d60c2 + limb0: 0x44b183c37dc323fb6ab3aed3, + limb1: 0xf0af67bc67b753fc35614372, + limb2: 0xe0374275022a60aa4cf92e05, + limb3: 0x955e98f3cda21b60ce8ad89 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x384292ce696a6a3f7705785, - limb1: 0x989a6b234c05f1595a6de078, - limb2: 0xf3026d0c482cdb84209f2617, - limb3: 0x124640bd5b84e56cbb68e7ca + limb0: 0x2da869d763f96f14a6c6ce32, + limb1: 0xc30fe7b1b66cabd3bbfc5212, + limb2: 0x13a5f77222bbd6af1272e530, + limb3: 0x15c4ab35f97fedea34893422 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xbf6a342802bc146aef47ecc4, - limb1: 0xbb0d3d6cd872db183924f69d, - limb2: 0x90f13a12de18000a44849e93, - limb3: 0x18c292f758c62f40c19ae44e + limb0: 0xf1b97f3be4a042baa8461289, + limb1: 0x974c0ba087254ae1861da80a, + limb2: 0xacd5a465eab5e887b4f15cba, + limb3: 0x19eb9a5239b42398e7fa3c2d }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x46eac658adc2ae7ded26a4d8, - limb1: 0x5e726690af75eb499c93bb81, - limb2: 0x43868ca8e67b50862759c6b1, - limb3: 0xbd9cf13bc2a74653a4e7632 + limb0: 0x99a8accc6c1e6b537006d6ce, + limb1: 0x89c63ce9e441f42449400132, + limb2: 0xe973b127dfaa6c3831f7324e, + limb3: 0xbafd1ffb8619658165166b6 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0xf98ba014a3b59dc98ea22859, - limb1: 0x84db1fff712ae39396f91643, - limb2: 0xd4e7783ef7efd46a4055b186, - limb3: 0x13daa762e026c831324be2a5 + limb0: 0x5c203e62d50674f1e64d97ed, + limb1: 0x28cdcdcf4651469675e10aae, + limb2: 0xb528fa051c3d6fac8aad9665, + limb3: 0x12fcdad988d7d7c036dd2640 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0xda132ea9f2329de8c6e9b674, - limb1: 0x36e87482958c2fdcae17f981, - limb2: 0x95d217ca782c98fbe62edb28, - limb3: 0xbf94f20b7865c61a9f8e886 + limb0: 0x3b7626b25e37bdcc40e42ee8, + limb1: 0x1d4a78cd727e3188ee0df14, + limb2: 0x9523e28de010e20260612094, + limb3: 0x145c8935070d4dc57724f331 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xb3f07519f6ade562f0b86e92, - limb1: 0xc10588d321c1179059e76cf7, - limb2: 0x858c712c1d1f5912addc0312, - limb3: 0x174f291dc313c2a0df182b42 + limb0: 0xa286288dfbe1ba5e29569cda, + limb1: 0x74860dcc982cea3ce54b490d, + limb2: 0xcede7bc087d31049fb019b87, + limb3: 0x175cee2457c373f7f43f198 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0xca84ed722b659efe3c44936b, - limb1: 0x76adcf6055158f4e120b957a, - limb2: 0x77c8bbfe43549e242ba5adf7, - limb3: 0x11d286d11ee6031323c148c5 + limb0: 0x808b3e58b8f77a24a5a3f75, + limb1: 0x9f666ff3df8075fdcea7a64b, + limb2: 0xa7ab3aa98c2e18ca45dcabc8, + limb3: 0xf1a77bb0e521ed2cd92e2d }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x44ea5f537eecfa73371ba1f8, - limb1: 0x5673213f60f52e7857cbf601, - limb2: 0x449de1a0673950af40ca0dd7, - limb3: 0x194b1b44a5960e56f102e111 + limb0: 0x7c4f496f626aeee6082be90a, + limb1: 0xdc418e9017549aea70339d7, + limb2: 0x32749afac8f80959990fba06, + limb3: 0x851025f9887f64003c0554c }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0xd0214e144fd758a9b0a1910, - limb1: 0xe5db4911e2d489b15c83026a, - limb2: 0x72be2b58f9f8c39042d1e5f7, - limb3: 0x14eb3049de4c470f12527c65 + limb0: 0x70cc71abbe16e66ec2ce01b4, + limb1: 0x6d9f0c8607a1617706c6d7e0, + limb2: 0x83b7ea1827b6a46ae5da646e, + limb3: 0xeadc5eeaf6ca08e15fcdefa }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x7d253c0fa9ac50e76b1298b6, - limb1: 0xc826096154f96e205a871de5, - limb2: 0x1b943e254fc05f650cd9e3c5, - limb3: 0xfecb29dc1567a521b242c60 + limb0: 0xb20bd5a11776b90903cd6f7f, + limb1: 0x4adbf9f7f8b646f2f2afd0d, + limb2: 0x203a150d0598976aba2dd58e, + limb3: 0x166b096847c7233384c88754 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x946be728409f9b6ea6b2a035, - limb1: 0xab7315c870bc3bd243982fe, - limb2: 0x8ffd50cf7cf4b43ce96f7a2, - limb3: 0xdc17eaf52ad490e2ad8e47a + limb0: 0x73f910e158a1851c417822f8, + limb1: 0x79a9f85e524abd37cc173306, + limb2: 0x6cd8c6a6a76fbfdd6f569d54, + limb3: 0x1153e57e1da3582bab3869bc }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xe294e1bbb7165cc0cafd242d, - limb1: 0xb87e967aa5c56bf291c496e0, - limb2: 0x4410e2e2d8e14a26b84aa962, - limb3: 0x94cb54593ece799c20945aa + limb0: 0x72123eceeace9264adf585c, + limb1: 0xe1fbca52fc5278247671b708, + limb2: 0x3d035534af66a0855724909b, + limb3: 0xdd503fea160f2318f02e929 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x4a55640c1a8694dad8fb19f3, - limb1: 0x1beb9e956f85b24c6e424213, - limb2: 0x23c07f6d80c01b797439db28, - limb3: 0x154459cf554b6126f430a431 + limb0: 0xa0a77fd326c574ce1073c934, + limb1: 0x3625d8a810e6d6c6efe0234b, + limb2: 0x1b39cec61acf2a41656260f0, + limb3: 0x187c8f93ea9c24901cbf9b1d }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xde88e4d03f0887a556688f18, - limb1: 0x2f642d154c7c924ef6b0dbc, - limb2: 0x14fbb47e0d1e91f8e68d40d9, - limb3: 0x47d5e7a012866f014da5d5d + limb0: 0x42a8d8cdbc36adf42acb29be, + limb1: 0xf42202108af9eb30d7482a3b, + limb2: 0x6f0e1b7894267dce4a92ca54, + limb3: 0x37008586b231b2ef8cbeed9 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x93267b8f2b3e432d686a4139, - limb1: 0x28239535ff8577f71808c45f, - limb2: 0xe89503771e0a5e7d31f9515a, - limb3: 0x1bff4c732cded3354fb0aa2 + limb0: 0xb66e5aa61a287afdd0ac54e, + limb1: 0xbe563abe6828a67cb9fe6be4, + limb2: 0x2541be17c81fce7632639aec, + limb3: 0x158972f4bef7bedc22e2cd4b }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0xc381de5c6dfc72c36010baff, - limb1: 0x3dbdfad11f8482b322673bf4, - limb2: 0x3b810d379b7f32e60d925fb4, - limb3: 0x15bfd40d9b516d55af3d04bf + limb0: 0xb8cc445e6f6e3e569f4e3721, + limb1: 0x5777a708b4b2205402cacc8a, + limb2: 0xb775e271bf5545cf59bdd89c, + limb3: 0x182cc6b1180fa837dd5a365e }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x6e86068a90af692ab7e1f024, - limb1: 0x2d8b6a35d3befa9da627d342, - limb2: 0x94cd32d7e48c000f981dbfff, - limb3: 0xe8b860d0d76fa2d3981e21d + limb0: 0x911523a4d0229a9d630700f2, + limb1: 0xd20cdcf03df5090c222d3b2f, + limb2: 0x1924e96dacd347ed10b0af33, + limb3: 0x40fcc8f9ed26638bc26dc60 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x35219dd235ce766891ab3d40, - limb1: 0x7d929fcb7f52afbacb0039f1, - limb2: 0x6df3df0045fe30a0aa7b3503, - limb3: 0xa3e11c3ebf085c21553c1ba + limb0: 0x73069536b31978fa56465bb0, + limb1: 0x457f05619381fd6dda643e3b, + limb2: 0xca6142fbe30ea8b62b81874f, + limb3: 0x1be89c5ed1a4f17f9f48885 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x556a337b7ff0f796e86b4eb7, - limb1: 0x853d4d9174860507394191d8, - limb2: 0x1f24bdcfe1df8c889f5be5a9, - limb3: 0x130ced681654378eb5914de6 + limb0: 0xe019a87c537b6fc9a86f97ed, + limb1: 0xd492bdcc4f66be6481357af9, + limb2: 0x8b57f75900173f0c21703b25, + limb3: 0xec78960c6dda78d14b210c2 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x8eb49111aa45e457aeb6200f, - limb1: 0x992e104229cf0d6f2ce91332, - limb2: 0x715ddeff77fa4bf56029a7e3, - limb3: 0xd085d726299500fae24fd0a + limb0: 0xedbd4d40fcceda9dbc0ee83, + limb1: 0x6ed4f53e3ec4579aea7c2e38, + limb2: 0xa5f22c228446387b92bc2bb0, + limb3: 0x76da3540d117b62da9a1d89 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0xc9f7b27f7c057b9b61359639, - limb1: 0xd733df5aaee68adaa330f058, - limb2: 0xf3371f5dfa668e9dc3f64efd, - limb3: 0xf4c297de2329009abca7596 + limb0: 0xd295fd03726c0108de2c3e2f, + limb1: 0x49105382af2ad9c46a6fb5ae, + limb2: 0xded90c7fcb662cae671b9f7d, + limb3: 0x821f1dca4ba94ae9ceec9ae }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0xa17bd18e4b5dda97347be7bb, - limb1: 0xd84bbfa6b700f2509546097b, - limb2: 0x27007bd3a22bf20891885e7, - limb3: 0x2ab4e686d5aa26e81eb0a1b + limb0: 0xe6963a9b2a82885a017d5bee, + limb1: 0xb60682a2ebdfe04d04aff53f, + limb2: 0xfcee055076ecae5f30e0f0e, + limb3: 0xacdbcb0fd2378f64fc884c7 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x2675b8156b5b9c7840fc6d5d, - limb1: 0xd158f9551d42a43052e16d51, - limb2: 0xef38659c9bd9c6a757f3c6b4, - limb3: 0xeef573d52c9aeb3ec98718a + limb0: 0x6261167eaf4cdb939e617718, + limb1: 0xc69e6d944565cf71dcabfdba, + limb2: 0x71c2966cb986a2088c8ec6fa, + limb3: 0x25ea9124e6460b4a1ac1652 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x429db5947d00354fb828e35c, - limb1: 0xa7f4eecbe1f9f6c79739c3db, - limb2: 0xab64f3e05b3e5e4828f05571, - limb3: 0x124638f2242da1ea9e499628 + limb0: 0x8c1d72ff94ef5cec83c382ce, + limb1: 0xb65c206c0671a229fd6fd056, + limb2: 0x93eb6f055d5e295dda0c2dd4, + limb3: 0x44118c9d497a288bcb2cfb1 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x3e2cecfa458f82a02ebb351d, - limb1: 0xed6ee2da6190047e147255a1, - limb2: 0xd6c7e25e702dd621852e2374, - limb3: 0xdf4e80711a783a630f0701a + limb0: 0x98564ab45c06b599a2b8fb1e, + limb1: 0x864e578df25c08f811d3254, + limb2: 0xdc3b4de575b3c28fd4d24bf3, + limb3: 0xb9f0c68beea4004b1584bb3 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x94adb122f8eeb4ea8f41bf42, - limb1: 0xed1a924d4923e4a9821c89df, - limb2: 0x5097b9a2fb9c912aa44e3d68, - limb3: 0x852f6fc04cc084ecaf189db + limb0: 0xa6785addc642ae94e9b2bafa, + limb1: 0x74f583d6ab6ef76e2c61d05, + limb2: 0xfe79a073cedcd012a88ad395, + limb3: 0x91bc105e5a29312c2bce11b }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x725e89fe0c535c1820e1b7eb, - limb1: 0x8766bf6cec1b71307b2cf6d7, - limb2: 0x75eb5a2fe327ae6347e32e5b, - limb3: 0x9920990c0320dd3e26f1db6 + limb0: 0x70d2ccffdbba38830e0ad7a3, + limb1: 0x7513c62af012d0bfb4be8842, + limb2: 0xb99db8a7274744baf4a15a8b, + limb3: 0xfb027f31de10bbd317dd0f4 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x799409b8fa0a7b729cf8c38, - limb1: 0xb933dd281fa5691abd8342a0, - limb2: 0xea979962d81ea656d1cb571c, - limb3: 0x2cebf888194c60d2de14d0b + limb0: 0xed100c97a5846bc8dd742089, + limb1: 0xa00c33a2fe4f3141a108109f, + limb2: 0xf78dff404995b979c0fc0a1b, + limb3: 0x144fe2a562ed9fba3fa0162 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x157728bb900c1c9ec53efdf7, - limb1: 0x8d3c3faaba29f73b808c0c87, - limb2: 0xf1b386cd659936c614bae9ee, - limb3: 0x3289f30d424d5b03cf8a92a + limb0: 0xc4c4e6dda7c6e164496f6d7f, + limb1: 0x74a1d2dd31ac014e45f89901, + limb2: 0xfb5531020f9203f128040a2a, + limb3: 0xf5431438d7dfa45d6e3ce62 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xcabf0dec228560b64d1d8593, - limb1: 0x4dc785095455cab658487fea, - limb2: 0xac0e40ef90f910a7e06f05e6, - limb3: 0x18a79a2a01f670e6caa9f058 + limb0: 0xf23a503304f672bbd3ab57eb, + limb1: 0xdbe51dbf022b20aa2ab5a248, + limb2: 0x24d91db106d8afbaa3603028, + limb3: 0x17f3a23d9642ef16985ada71 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x89a8d2308fd35d5d72a61aaf, - limb1: 0xed51bec09768897dba90364e, - limb2: 0x687a8a9b753e22f50ada2348, - limb3: 0x3fa0087a9cf512b8829dd17 + limb0: 0x72989b46b9e9f5f7f979c326, + limb1: 0x92f260fa59f3bd6fa86492ed, + limb2: 0x67e2c9b958052b196e7eb835, + limb3: 0x98e49f1d5e1d16908052b19 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x576d632e79aff9be0bd4b1a9, - limb1: 0x3e8195ab4a5337a23531dfbf, - limb2: 0xf084d9a661cb615daa003da5, - limb3: 0xc697b8c21c3ab85b290d9cf + limb0: 0xa20c6d0bbaa727c4c687b30f, + limb1: 0xfbbcf3011f7f8005e2b334c5, + limb2: 0xacebd66b0c9a235dfe198794, + limb3: 0x100dd8896c2e4302ae106b74 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x7e4174fdb815f8d52e81c1a3, - limb1: 0x56ff9623e19f909e81718863, - limb2: 0xe75d89613b443ed475544bc3, - limb3: 0x1190ca9c97c0b28647901ddc + limb0: 0x6418e373c68293d5f28de8e5, + limb1: 0xeaf34a642739d78c5d117d31, + limb2: 0xc29f656a522b35af47cf3bef, + limb3: 0x1d9ff7a8d3d6b3be6ff7325 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x8f12195893b55da243f7f489, - limb1: 0x997220b1c5790c1fb5ac8877, - limb2: 0xdbcb70517759783df6ef3967, - limb3: 0x59a9ae69bff9f713e9abc4d + limb0: 0xdbf0e307bcb59bca040f2276, + limb1: 0xd330a9fa49a9ccaa46943dd0, + limb2: 0x9db39c0cb3fdeb80c6406b38, + limb3: 0x91c967e69cac22c9ff52a48 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x2721eea68d792fae7e22229c, - limb1: 0xe7f7205ed05d66fcf6779f, - limb2: 0x39974d948e0e4655a38a44a5, - limb3: 0x87f5cd614b38845d3b7e8d7 + limb0: 0xb77baeac268c4cebb320b2ef, + limb1: 0x9c2f92a849ae735d5c99102e, + limb2: 0x2d534bbeaa0a78b2c2f9e164, + limb3: 0x148910136221ba66ce871fd0 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x6fb23acb6a179f67c847ca4c, - limb1: 0x3454297274300dc501dc8771, - limb2: 0xb11ffcd282841594e5e4b81c, - limb3: 0xfdf857dd5f3abd6b84dbed6 + limb0: 0x52dd4742f7b26cb4a76c6344, + limb1: 0x1c4d46ac5d502d7b7b9b8834, + limb2: 0xb0900761166c72b74fac0130, + limb3: 0xf5df9caa5bdce5ccb42fffd }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x9c5980c867a01dd21c2abf7e, - limb1: 0x2a80ea26e4a16eda104da0e8, - limb2: 0x2d14e49ddad6b4d60c94a775, - limb3: 0x16a3d1f34d070023e904be30 + limb0: 0x549eab8d56cdcd04c8633abe, + limb1: 0xf5a654076b5cc4fcf20b6e67, + limb2: 0x7cc0bbfb631fb1f0824bc44, + limb3: 0x12b96df67b6de907cf9cb3df }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xc8f993c655d7e4d97263d39c, - limb1: 0x794a33d811c5b3c2970f6b20, - limb2: 0x50889ac948ae84bc3be7c565, - limb3: 0x1626f0d8a64bad91f15b7cea + limb0: 0xec03ef65457521996ed2e4b7, + limb1: 0x5819e84576d5cdc37f6e9119, + limb2: 0x2f8aa1e1666ab7e56771c199, + limb3: 0x19b7b1bd17d4c43073ccc8d2 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0xd520aaa785f162aa3f90bc42, - limb1: 0xa2acdbbc45b9f4dd30d63839, - limb2: 0x50ac3649de38f9ce824c36a6, - limb3: 0x53c27131466e03af09e8652 + limb0: 0x5f0be369b0c2434970aca439, + limb1: 0x140ea4ec8e2337189409c265, + limb2: 0x4c182271fd5f3725bde4ff57, + limb3: 0x12f161a027c1e8e7003a89aa }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0xd6f16654ac831921b54c6905, - limb1: 0xba71681dfd6e1a85d294a847, - limb2: 0xb4b5e766b210aa47d1611177, - limb3: 0x70805b4044c591293c8c605 + limb0: 0x48f371f42fc1eb1abf312ae6, + limb1: 0x4f2ae3b83ef6e9b3d96bedfd, + limb2: 0x7b6df1e5f4ec879b6dd72e0f, + limb3: 0x70fa5936c48f1fbd855fa00 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x2b932eabc8f93d30ebc054be, - limb1: 0x5c3077e7f1c42128f98d80d3, - limb2: 0x6820652d6a55354ba9576972, - limb3: 0xd0a70958a357ebff0699536 + limb0: 0xe9a165a2c3e55feafe96b10e, + limb1: 0xc51fb6033b4091936193f49d, + limb2: 0xc1262ca5b92f6e7d27d0389f, + limb3: 0xea6be2ccd5194b32a5db3df }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x869e8019c01c83fbe6987477, - limb1: 0x5d72570d962d40852e4ec5dc, - limb2: 0x96facf30e4f215f5724282db, - limb3: 0x18feb8fd804d7922152e8923 + limb0: 0x8c956870464c4edb2cfcad38, + limb1: 0x5a43965fce7474815870de3d, + limb2: 0xed6c1772c76d2b3d25fba5cf, + limb3: 0x75e49b13ed16c28d765e62b }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x107e1491e4f74342fff67a58, - limb1: 0x94a57ccd1c01e36549d3961b, - limb2: 0x9639f0e68436c7d4b0617b0a, - limb3: 0xace01e20d0bfa12c197089a + limb0: 0xfa01a7a8e1f035211e039754, + limb1: 0x2ac33e807275478f5729e212, + limb2: 0xa9c880975813d158890b4d9b, + limb3: 0x591ea432e2773038dff2f60 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x2677b332c01bb365722fbdd8, - limb1: 0x8cd4c8564f0fe9fd9ee1a32f, - limb2: 0x8f32e41ddeb6662de5244ebc, - limb3: 0x6314dbaec50b16ea0b7dc2e + limb0: 0xe5c98f8fceefdda2d4668f45, + limb1: 0x2d336f664a5b380a50e37fc1, + limb2: 0xe3d92c3a9eadc6795161348e, + limb3: 0x148f699e046616d9e9632694 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x1552a69a3040e9f521151459, - limb1: 0xb20d9d75fdd4e4df3589c5f6, - limb2: 0x775de32928380ce66e676eb6, - limb3: 0x444c7ba5a4787965c9103b8 + limb0: 0xca5fb1a753780e13a1d61e69, + limb1: 0xb74e1d64f68bf1d9aa9a7ef8, + limb2: 0x14c9be9b70d5d4f5bd378aa2, + limb3: 0x2f14db789144986b82d08d9 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0xe03c5c42d93ed44b724bc2ba, - limb1: 0xfd074871845a491291a9ee5b, - limb2: 0x1c05acf185928665ec5c422a, - limb3: 0xaba50aee76e8b4c33ebc65a + limb0: 0x99cee60394ae696d92a1d4a8, + limb1: 0x53db5c8ab8be81d776fa936c, + limb2: 0xe746604044c7ff4157056978, + limb3: 0xccc89c5be1f97a44b4913c7 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x1acdab1197ea468c57a60ce0, - limb1: 0xcd9d91dfea07e35f9fa7eade, - limb2: 0x5151f9ae4cad17ad9d1ae759, - limb3: 0xc8462b131c73c77f24c386 + limb0: 0x177ed1b0c2faa2298c19d936, + limb1: 0x440e19f2cc2ceacaf2a3b37f, + limb2: 0x361039764ddfc0cf8dab92d8, + limb3: 0x12198b4bb2019bacab333b06 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x2100b2b8913213e5caff6269, - limb1: 0x1af5240375ca074953474479, - limb2: 0x84ce54b63411ea4c103039, - limb3: 0x1ed027efa8c48ef7082bb93 + limb0: 0x95c22eb67d6f7499eddc5e5f, + limb1: 0x5bd5fe4943a6b5ff7ab17386, + limb2: 0x9fe786af0645e1dd00d3a70e, + limb3: 0xec864f357c07e6d06e86afa }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x5e8b3940b44558a3952b1fc6, - limb1: 0x95283dc36890024b524e47e8, - limb2: 0xddfee5c491ff3fdd346b11f2, - limb3: 0x538c1b6d2df56d32fa90324 + limb0: 0x88e3361e4f6a8445cc027b18, + limb1: 0xfe08fe28c4416368731e5901, + limb2: 0xf2578e2b86273cebdbfc5aa2, + limb3: 0xa753be87b9b669fc1585965 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xdfb07a5aad95c9c77e4ddf84, - limb1: 0xa3ccbb237ec3ec0f6ee454b, - limb2: 0xac06c0840ec6e33dd0cab4a9, - limb3: 0x200a64827ad453b2fd6ec3d + limb0: 0xfa3bb12a8840cc5360228847, + limb1: 0x99266d2fa534a145ffca869c, + limb2: 0x7526b9d97d260771ddab2364, + limb3: 0xf6289aae6c27ff966855175 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0xbfe37e793050b1bbc76da1f2, - limb1: 0x19bcf1bff0b05aa3675c5564, - limb2: 0xe27945cb7c0091eaff620327, - limb3: 0x5ba6b7ef6c4ce44f394f198 + limb0: 0xf61c92ee2a610d34938092b2, + limb1: 0x93ed0cc1ce4e44b4bd9111e8, + limb2: 0xf1e99e6fcc6f6adb61a0d552, + limb3: 0x15f77bdb77c1741fd90a09ae }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0xf8c6d07cad448c21695c039e, - limb1: 0x67453db67d77abfba4c98fd7, - limb2: 0x71b7bcf028840a03ad62e30b, - limb3: 0xb69828555319ab95e7acb5d + limb0: 0x9ee5e7758f6376652301448e, + limb1: 0x19d97c6a5773cc81ae2931ab, + limb2: 0x85d6f0d6f32299d4ff94d5db, + limb3: 0x7aced3f949e769d3566e6d8 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x7805572e153eaa2615d2916f, - limb1: 0xe7deec2d3a99a2ae6cc186b1, - limb2: 0xe2fd56534e858445ee180ee4, - limb3: 0x19d26a50e091bc42779c4440 + limb0: 0x1cf3bc3ccb80216ec4f02a7f, + limb1: 0x9978be15a8e913c8ee401d76, + limb2: 0x110f0d566b45a3bec7a63982, + limb3: 0xde1a9f2e17d6a5e69be8bf5 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xa7449b4c186ba2b727efbef4, - limb1: 0x30e2ba9c7d7f082bb9a8ab8, - limb2: 0xc7e5850882b95d8d6702e269, - limb3: 0x13c7e35d336ec1db7d7ef792 + limb0: 0x79c6ba3b129c17aa2501c7be, + limb1: 0xe95ed93c7aec0e2345341767, + limb2: 0xf87c9e06e082655ebb7a8892, + limb3: 0xbc3638d10b79a2ab2522b6b }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x50431c869753f64940bcc61, - limb1: 0x67eb7f3ac52b4072b628855c, - limb2: 0x29d18eff9286d4909d3aff6f, - limb3: 0x17f0929c862a0f5debd8ce92 + limb0: 0xd47fa52726b1a631db58c931, + limb1: 0xdefecbc48b94692fc58a1ca4, + limb2: 0x4fa71bfd5e2caf42bf19c5ee, + limb3: 0x13c79abbcb164ec2007e0f7f }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xdc02f2082167d694f6a83837, - limb1: 0x16a957c0cf6ad245885738c9, - limb2: 0x454f7bf22e340da14f24355a, - limb3: 0xba1022f93796803b8e46d56 + limb0: 0x99cfbc499ef99e2bf17c9ffb, + limb1: 0x15c2ea1a2c6e397ba8acbc31, + limb2: 0xdc921090971eb49759ebfca7, + limb3: 0x16b284e8229d85a0d0f8bf66 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x88f033219901702db63cf93c, - limb1: 0x5f8adcad5fdb0a083fa11e90, - limb2: 0x202412c5857dfed13bca23f8, - limb3: 0x87047a0ea53855ca7c0e283 + limb0: 0xd837779fbda9f04120266957, + limb1: 0xfdc487f2e15c35574026c24f, + limb2: 0xe6a0ce2e51b7b7036023ba62, + limb3: 0x170690386a17350de5278120 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0xc36d4f0d7d5405575e2ff795, - limb1: 0x74b01276ebfc3817a48d34e0, - limb2: 0x66a220ae45d8716d85ef6b, - limb3: 0x54120f620bdc68bfa952c4c + limb0: 0xe256b845a65c9db04c8c85ea, + limb1: 0x6dc551a8cd5b58e41b29e024, + limb2: 0xafccb8f077eed31e46564c71, + limb3: 0x3995e5333adba6b2536c94a }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0xe1c517269089cec348d06835, - limb1: 0xbe8ca63c3e6873608d9d2917, - limb2: 0x4cc668a266a7a0d9692d658f, - limb3: 0x1011cf4bdb33fe54d9542caf + limb0: 0xe0c333240e0110dc3fd933c0, + limb1: 0xe6eca84217dde87385190b2c, + limb2: 0xa280f676a8fba2c43f44259e, + limb3: 0xcd6dc250847eb7e9323091 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x5345a45c7da7fccee0a93dfc, - limb1: 0x9a98eebae396db600830f7cb, - limb2: 0x8638f0cb92ba3a7321bb71df, - limb3: 0x464432a16003fc31c1528fc + limb0: 0x3f1ac2ec77d7a34d2d15a084, + limb1: 0xe89ee970a0f79beb8e060801, + limb2: 0x9ec9d0546ca5470fb10438d9, + limb3: 0x4cb8ab32ae8b6e34f17053d }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x1e8d48ff4667c6824039d97e, - limb1: 0xe52c1b3e82951ae83143a19a, - limb2: 0x5b90d68b96225988c110d44a, - limb3: 0x100c5c910c3da29058f24996 + limb0: 0xfef40183e7b6a3354e29f26, + limb1: 0x37a41c038bad6626a7a020ad, + limb2: 0xd0fb96b09dff4b219b8b170, + limb3: 0x64ae5eb666ba0c95874a6ae }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x5a8b81f9a9877a7abac74a65, - limb1: 0x1f7b6e59e1b008a41da205fb, - limb2: 0x8ad5d0aa3a5f483dd0f5cac2, - limb3: 0x19e99988907857809e2f8fc9 + limb0: 0xdc308ca678b5e74454f0e542, + limb1: 0x6c95487c3a571e1f8075fc73, + limb2: 0xa4d6ce300d6258493a1d74bb, + limb3: 0xe13b073cbc0fb1f9dbfca07 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0xe5489a49b3658afce8c1bb93, - limb1: 0x204b78cd6541b55626826d2a, - limb2: 0x361db82bf46b4f5d1b280323, - limb3: 0x292669f79baa0cd52a4f561 + limb0: 0x6f47b3d751a3157f7c355152, + limb1: 0xd73bcecc5fc36080a38d9cfe, + limb2: 0x6aff4a8c115ac0e080019dff, + limb3: 0x14f66000a6cdc5e24163cb1a }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0xaafdc5448dc46faaf341f908, - limb1: 0xecac5d36c64608cd5efaad16, - limb2: 0xc5429a7358faec1e8263d5fc, - limb3: 0x13fc811aaa1e7c425bd22213 + limb0: 0x78e273512f2fdb93da2e48e9, + limb1: 0x58857e95b9726fa86f115555, + limb2: 0x6a7d0d75f94e4f0850761327, + limb3: 0x126eb811e9d3189c8cba13d0 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0xc8e45065b5c2ff2131fd88b1, - limb1: 0xd8b2944903cbca60cd14f080, - limb2: 0xdc3ca16ac5e28072a175729e, - limb3: 0x1308f870b6922979ad557855 + limb0: 0xf6e0bf9d47089621d8f6a183, + limb1: 0xd668b803dcf0e0e8fec969f9, + limb2: 0x22f4e1335c10d4b12ef7079f, + limb3: 0x13f2cb4f822124632565b55c }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x34ec060276dc80d2ed7b5874, - limb1: 0xe21c391c43b7b35c71ac0ee8, - limb2: 0x6828f1543e9ed4a9d9937ed0, - limb3: 0x199cbec82d5a417f29691022 + limb0: 0x43d2530036706a3ced01b47e, + limb1: 0x4ae823dc4feab03961dde44f, + limb2: 0x3d979b62d3b62557555d0fd4, + limb3: 0x112f2609a80d43a55eb71302 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0xf95dacbe74529db509be372f, - limb1: 0x9631634cf8cfff1d5fd74259, - limb2: 0xdcc242d998b3b117747e1f50, - limb3: 0xf33fef62a4adafecd953f0b + limb0: 0xf58f39c9a87c3ee7162ce586, + limb1: 0x44e184324ef4093f87d2db4e, + limb2: 0x712db3000b7416f6629036d0, + limb3: 0x10c7397e4aba98941be7b5b9 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xfd7a4a51cc55f2f030514618, - limb1: 0x5b254688418cc08e3d39a20e, - limb2: 0x21cb1808b9c159eb5ea17aa, - limb3: 0xcb2cc840e425c97478baed4 + limb0: 0x75d9b12a55144a71f7fdcfe1, + limb1: 0xa9ea4bb128f743e6ac3ce76c, + limb2: 0xee0fd8c53813db367f47566a, + limb3: 0x196c5a77140a5205fd693494 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x39e608d30990d746074f5ca7, - limb1: 0xdd1cc50cf606620f50448430, - limb2: 0x3d2f58628828588470cf8b8f, - limb3: 0xe0444bd2c49fc1ed59053db + limb0: 0xa36fd34377c8d61feebcc6ed, + limb1: 0xb0b5a686217fcbea43ecd81a, + limb2: 0x528d97b9703f6fbed6a347fb, + limb3: 0x478795ad14b8b2fc7fef7c5 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x93281ef3a091c69a362726f5, - limb1: 0x6d2bbc36f88c8d0b304f23d0, - limb2: 0xb6e64e7224298c18d7706a27, - limb3: 0xeeb75f3ce4f7d6f70164a62 + limb0: 0x228f2c48412c9db0ac24e661, + limb1: 0x3188d53499ae64452bb9f110, + limb2: 0x68512247b44c586293bb54e3, + limb3: 0x3c021b302acb11bb6be3de5 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x43667b6531cb45b237a7762a, - limb1: 0x64fcf230c27e3c90055ae77b, - limb2: 0x5326e369129a64540fbec456, - limb3: 0xc2e01f9ce208ed35229442c + limb0: 0xa5dd107effab91078986ad30, + limb1: 0xdd7e7469d3f0e295963768ac, + limb2: 0x4fd9db6ad36f8b640dafdc3f, + limb3: 0x565812ec8b9f55999d983f9 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xa0c4bc43519bccfd167d48f1, - limb1: 0xcfeccde2f41e13ac0a943ff0, - limb2: 0x5e4aa994f9c5c8c07284743f, - limb3: 0x16a7ea7e1e8fcec66bb603b9 + limb0: 0xce973f03457cf6e20980d552, + limb1: 0x4ad2eb33fdfc15c8d14d3825, + limb2: 0xf2d8f25809482bb6c0aa580a, + limb3: 0x29d2cddf371732b9260f4fd }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x8e18aa720f65ae10618006f3, - limb1: 0xf48ad3a236358f6fc95f448b, - limb2: 0x6bb0930430a784e26dff78f5, - limb3: 0x831724783efc3d459ce2741 + limb0: 0x1d0a3a707e7e57d7ce6562dc, + limb1: 0x9845c9e6ebc1542174867a2e, + limb2: 0x2f8eedc38b2238c46a62bc8d, + limb3: 0x3e7c64f08dde5a0046d816c }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x9c0626f4d5ac3cf3fa377d44, - limb1: 0x8c22ce645fbb73feff1b5a57, - limb2: 0x5a072a30bf043889f2c72a8f, - limb3: 0xfde30b21e4f1bdc9471dce5 + limb0: 0x2ff4186d72266917517f7b83, + limb1: 0x36b7fc7cfce8676039ab5b50, + limb2: 0x454d841628b46f7fa3bde193, + limb3: 0xa805c327ad443c8e0f22d53 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x4a1718004c55d2721d8a25e, - limb1: 0xe6be4146323d14bfb088cd5c, - limb2: 0xed07c53d73e0c06b54eae303, - limb3: 0x1393b34faaa214a5cff04df0 + limb0: 0xc66f4d806206819541919432, + limb1: 0xd286a83a4cff58c857f7576e, + limb2: 0x6a3e20535ee115dd1e8e71ef, + limb3: 0xd69cef520ae24a830b9e58b }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0xa7d2073b61ab6eef6fd58d2d, - limb1: 0x8c6e0f693dee0c85bfb40f4b, - limb2: 0x94fb9fb37e0120ec0e1c897b, - limb3: 0x95abf644fd90248c6b62849 + limb0: 0x4b368e0dac8983aeb3d460e2, + limb1: 0x1043ff043e1434045b830d99, + limb2: 0x23649b532125617fc8eec460, + limb3: 0x1644958911e0eb5af9251bc4 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x851c554526b00dc6e8549416, - limb1: 0x4046a31ae20e20f33c750d25, - limb2: 0x48c347ac1d56dc03010d6442, - limb3: 0x784fc6bfbe71f9e742612ab + limb0: 0xd5b4402ee77fbf5d94f36016, + limb1: 0xabe24c9dd51a2e9107afd2fd, + limb2: 0x852f26c298667608a3d0f225, + limb3: 0xb3353920735e2a08ffc45ef }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x4f9f0f40dfdae25e4a552537, - limb1: 0x957884e42dcfeb2d2831381c, - limb2: 0x6e4b71861146a514fc2d5f3e, - limb3: 0xdf11f603143b869a45e9c + limb0: 0xc3913bb0665fb8760677aaa7, + limb1: 0x11ee624c584454fc074ba688, + limb2: 0x6f5be7c70ed50c397e71d6cb, + limb3: 0x19b616eed633283ef06fc40f }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0xf887779cc7492ea46f79d3db, - limb1: 0x2da3f3e12c78313bfdec5146, - limb2: 0xb306b5c54da3bbede84897c6, - limb3: 0x59d9e675bf17a0bd027cd98 + limb0: 0xd566d05a5a648a649bbc7d5, + limb1: 0xb70e946f20e73891156ced52, + limb2: 0x92f2acca26446bf7d14db0c6, + limb3: 0x10798275f5c01401729de7a9 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x657425a5cf624f175e89afc8, - limb1: 0x9198bd8c0898dbefa75cdfe4, - limb2: 0x8f3ebe6429ae4d23144d8c04, - limb3: 0x133564fd25ef2530776b3dd2 + limb0: 0xd4ce1967660336638be307f3, + limb1: 0x8434bd6a19954aced1a682ca, + limb2: 0xb0baaf9515d390ca2a2e2201, + limb3: 0x98fca53b7044140d9b72e09 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x7adcd54ec65a7f66f762daed, - limb1: 0xff712ed5f7a7fe39240acb38, - limb2: 0xd42c9c734e3b37c3ef50f79d, - limb3: 0xb3a65ac89140aa95a15549c + limb0: 0x25529f87106939b8512328ef, + limb1: 0xfa078e7fd25ad75ab3ae3c93, + limb2: 0xebb6330beec59b0a631e22ed, + limb3: 0x7522a29b4a5ed560862125f }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x6b1f5c60495c74dd25b350c6, - limb1: 0x6c4aac91e78ace7acb21c031, - limb2: 0x645fb89f89816d920c2e3ab3, - limb3: 0xcd31a6334b9f1e4b35156b1 + limb0: 0x94946c534a89f0a609bcfeb4, + limb1: 0x79f957b98efa1a29dad5b4bb, + limb2: 0xafdb9f451c7bcf71e9fac3dc, + limb3: 0x12fb35c2992790fb08b4cb73 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0xfa617084cefe231a2a7cc24a, - limb1: 0xc022b59c8438de009bf5dca6, - limb2: 0x2a3f3bcdeff5f51f0f10c6fd, - limb3: 0x88c0583cb8ec8789a80e3a1 + limb0: 0xcbba64dd1b69e6b254e3bac8, + limb1: 0x319592dde12209f7c8e21936, + limb2: 0xb01f7b48a67871ad05be6095, + limb3: 0x6e1091d080bb3de7dc7c51 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x3fc2b5be0e86925c58dacddb, - limb1: 0xf81ac2859ed855487cd48226, - limb2: 0x837bc943d54b05c1dcebba0e, - limb3: 0x1745e90c1718525d855ada0c + limb0: 0x15877965213e83fa177401ce, + limb1: 0x312ee919dfd8b9b041b14791, + limb2: 0xecde936e1d6c6a05a913f53d, + limb3: 0x15b092871e432d3d3d83536 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0xa4ba24edfc19028d041a495a, - limb1: 0xe3dc4fafba87fd5bbca7bf40, - limb2: 0x9335dc9b4e421facf95142ea, - limb3: 0xd26f97bc50cfbf758d21c33 + limb0: 0x4204a80632fdafc20b7053cf, + limb1: 0xf08812f539b46cf3fee9bdf, + limb2: 0xef1a7b6309d7d8f44ac7273d, + limb3: 0x16481d6c1d8039c7e3b9d528 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xf15620e4816ed81df769a20d, - limb1: 0x40944bd4352edeb611c59b4a, - limb2: 0xde3d958298055f76357ed81b, - limb3: 0xb31bbe9cb5d1b5b8f6be16b + limb0: 0x833c6cdf34eadfa681ef226e, + limb1: 0x21351ad2a1a629e892def743, + limb2: 0xb95bea608e87a0089d1d6028, + limb3: 0x18dd873d6ec4f97f11ec4c10 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0xb51c7db9a61b39d0713340d3, - limb1: 0x1a4051c5c0924487cfe4836c, - limb2: 0x577a22ba4c6eb071ed773b27, - limb3: 0x913a9e8bdbd695de9ecd1f1 + limb0: 0xe7e8c78b67c47166ea88ef86, + limb1: 0x3c49ed3e030f9db372425970, + limb2: 0x86156c5ec2a1e97822cd2933, + limb3: 0x2098827c19e2ac5d8e8a8d8 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x99d336d181c6c430d908b04e, - limb1: 0x3d879ef9ae249f9dfb15cfaa, - limb2: 0x29cb97073093bf704f568e90, - limb3: 0xa1b833675bee8ac7b5e8fd7 + limb0: 0x361c974906b985d8ba3e1d4c, + limb1: 0xf41b880bb8a1f15789dd1990, + limb2: 0x234c102ef58231be0d04dca9, + limb3: 0x1b80ab570479c0004c639fe }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x1c3b16ed1404f904c1d9f6cd, - limb1: 0xdebf12a4bed9f1bc3ba8087c, - limb2: 0x8d5f5d03a2637fe990014912, - limb3: 0xcbc972ab4369b23a6b7bd04 + limb0: 0x5db9b9dca2fae2e3bd384a59, + limb1: 0x3061a1b3f9889c3a0c14d468, + limb2: 0xcf98ea40f64f0d604b67841d, + limb3: 0x2128ffeed008d0763952511 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xaf977a0ef3b92752c0346b06, - limb1: 0x29c85a4d1d422534cdc38ca0, - limb2: 0x599a48d6eb47695c2554f52c, - limb3: 0x5696f16d14131a5af4a8f02 + limb0: 0x5922320826e3db31e432b238, + limb1: 0x3a5955f285e0a00d03c7c847, + limb2: 0x78b4d3a2cae224f2c4343582, + limb3: 0x63d194b5725e598b8c86bde }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x81d1892db0c7d2edc5cbd413, - limb1: 0x7e181547c0c63d94c9411c9f, - limb2: 0x7118d73fe18a62f3c96caa98, - limb3: 0xb6bb1bf34fd98976c5c87ba + limb0: 0x1373da40b7fe507c52f030e2, + limb1: 0x964f795d64bd7bf959dce670, + limb2: 0x113128d013ff31e370a00c74, + limb3: 0x19fc04211bf9729d5e6fa8ec }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x73e29451880f497413f200e8, - limb1: 0x23c7313d90d231de6e5de70a, - limb2: 0xeffafce06c64f000091ab2ab, - limb3: 0x1328ccfe2910ea1df21e9067 + limb0: 0x4cb40ce360dbe5bd809403e6, + limb1: 0xd7e2a4627efed32752730ba7, + limb2: 0x56595a08f0e9117b4e9e2097, + limb3: 0xaae07c3cddd56ccac34d99d }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0xf6094aef4a51f62512444900, - limb1: 0x23e6975bc4fc8014f4011b88, - limb2: 0x2e29f97b3280bd09c2e2023e, - limb3: 0xe0e125b0bcac507463c03 + limb0: 0x2078c220fec314df35462198, + limb1: 0xfa9236ff4cad9b586395eaba, + limb2: 0x1b6553825a2a858a4199c321, + limb3: 0xaafe9054af35fdba2b543cb }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x8d9b0fa36c23e30391e79428, - limb1: 0xb669c7ec74e101e568ec077c, - limb2: 0x206f00468e78b5459dde59e9, - limb3: 0x15e5ddcd1f9c9e43d5b1642c + limb0: 0x8819d76bc28cdb9f518586a6, + limb1: 0xfef175a1cb1db7d1062d8c33, + limb2: 0xb3a78b654f0cd2459822eff4, + limb3: 0x8b32b00e2335f16abcfa5c5 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x6cac17cca3ac1c5e399e2fad, - limb1: 0xf1bd61b8833908cc1efc732f, - limb2: 0x28244792e650ea94cbb0b040, - limb3: 0x17c1f8eeb439dee8686e18d1 + limb0: 0x77fa57fb94c1e9a2de66fae7, + limb1: 0x4acdfa3d361d0897aa199b86, + limb2: 0x1e33fa152708dda5a8d32f90, + limb3: 0xaefbd5b7b36852653d56592 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xbb7d701872aba0f7553de172, - limb1: 0xde432e97e2009bed43f210a9, - limb2: 0xdc91a3d9e41074bed8ab43f3, - limb3: 0x5b2d72ee2223cb8d32cf720 + limb0: 0xe24750725cf7abb97bd0cd00, + limb1: 0xea68892f8a305117e0f91909, + limb2: 0x245c670a943cff371c46de29, + limb3: 0x429ba1d13b17a5ce4badaf0 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x421761229ead2074fe31f3f5, - limb1: 0x5044ab0b1e61597745de5e, - limb2: 0x58979c79a06051070ba50cef, - limb3: 0x464706fdb0c77f28fe290a2 + limb0: 0xe61f2768c701b00894914dfe, + limb1: 0x4be906847d69cbe04279cbde, + limb2: 0x45c48f41973c8b1fc3bab1a5, + limb3: 0x85cd27a5e1b13af95553ebc }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xaa634e0417fa33a1c2173272, - limb1: 0xd76ba321159cd7db1f4fed62, - limb2: 0x3207e4f37a4b32deaf578682, - limb3: 0x257a591eb9d4e9b9c589e80 + limb0: 0x4a20700ff04c5100a82513f8, + limb1: 0xe5947b9a5862d78b532c8935, + limb2: 0x9c90aae27c633a6e41ebad38, + limb3: 0xc22080f74f3f0d9842c68bd }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0xf43c42be4dcf5c0bdc53ecc6, - limb1: 0x208afdcef0f35a816ad070ad, - limb2: 0x330d68a69b2d6e420a044eb, - limb3: 0x11467881ff7aeb27a0ba7ddb + limb0: 0xc043f1abe3834f5e41fa1475, + limb1: 0x931ebf09888733e622615444, + limb2: 0x8b26da74c3de78c8fd230205, + limb3: 0xf4846ebca2b4aff9487b72d }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x23bbbff90de9ca1c735734af, - limb1: 0x1f774f8e726a334fe5fbad8a, - limb2: 0x7bb21099971af08086f15383, - limb3: 0x1489a4bb14d4f2980f288e18 + limb0: 0x5ad8dca4e6a013e125f0d58f, + limb1: 0x77b737f4d6cacb4e39dc99bc, + limb2: 0x1eb6a4d8579e729d0fdac174, + limb3: 0xa6b6853f14567661b072a36 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x948e5d8058c33e42c6df9aa, - limb1: 0xc3d3dd57fd24ab4f410c82c6, - limb2: 0xac63ec2985e0b31249e9c9f1, - limb3: 0x312a990b43f88d73c7a940f + limb0: 0x705a1722a83f1aacb320c89d, + limb1: 0x53d73853760af4e7d0df4101, + limb2: 0x28d4a3f010eb2aafb70b8a, + limb3: 0x113f5a065a48f327929d113a }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xcc1647b9484d069989a90051, - limb1: 0xd6dbfd8b737a5d32f2e4904c, - limb2: 0x85d7ee7ad1176d8700d435fb, - limb3: 0x8a7ad385c0a6f390d1f6ffe + limb0: 0x1d19213fea4db6cd354c1908, + limb1: 0x323e97bbf924462ca48d2cc0, + limb2: 0xa1199032970492898731939f, + limb3: 0x4d9784d6073986dd95398a8 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0xaf9a072cb178c9595a4ee06a, - limb1: 0x9265abc84c4b99daffd4a46f, - limb2: 0x14ee8e51ff889b46486665ba, - limb3: 0xd73a1c71a7f331f55c69e79 + limb0: 0x664c335453491325b2029d31, + limb1: 0x4c0dca02dccd6c9eb17a125e, + limb2: 0xed1cdfc5d47235356f526b8e, + limb3: 0x6f580bf2037c92f882ab126 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x746882e35b5f0b451ac881fa, - limb1: 0xc8184e382f7afbfb72e005c3, - limb2: 0x7bb54cdf081c183d00383db3, - limb3: 0x1622e5e7517c5b00b926274b + limb0: 0x1e7d3df6543ea1e37f814c16, + limb1: 0xb7a659ecf79dc963e0d64109, + limb2: 0x86b9e127226feb3a1d702482, + limb3: 0x133f1c3b0170f10f30cbb974 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x4105a4c603388e46f901cb8e, - limb1: 0xc5a3d8508dcdcc3009795f5b, - limb2: 0xb7729b9a940d3153b997c312, - limb3: 0x1598d89934c2115f2c018a59 + limb0: 0x1b7f12af9e2d13dbe43f5e0c, + limb1: 0x803e241c043dd85a4250265c, + limb2: 0xa258a9554c30bce1050a5391, + limb3: 0xe8154694c579c971cb4281b }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x996835b5a008ba4f3b56b2dc, - limb1: 0x858720bf478c93255e0fdd97, - limb2: 0xeed3afdc8bdf10035f0a3e0b, - limb3: 0x1913aaaa08c5a091560e141e + limb0: 0xfc515130a0bba41cd88c986d, + limb1: 0x5f8c673a611481b8c345280a, + limb2: 0x6c607f8680932b570a02d09c, + limb3: 0x16273f601061510822411e56 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x1cc471841c56e977e59c0651, - limb1: 0x116787e20c1825ec187e36e6, - limb2: 0x5189f8ee82dc420246304b3f, - limb3: 0x18ff781fb1b9976ea02eed49 + limb0: 0x407f6565da512c2966e0e6b, + limb1: 0x89cceef575099b571d84ea7e, + limb2: 0xec304146494a19987ed56e03, + limb3: 0x47f7ae7a28b8a2859653c2f }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x8e05946fda04fe5939b2414b, - limb1: 0x86ab06c618b90390086d2a28, - limb2: 0xba72ded7a2ef71756fa44676, - limb3: 0x140bf82a10cc8a38689da2dc + limb0: 0xcd839edac306213db0ceea2, + limb1: 0x8fa26f45ef0a3f5e59ae3128, + limb2: 0xf337beb7d47edc45713ea4d5, + limb3: 0xad55a1af9503abb3665a7bb }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x22196b49d3ec8eb739d077a, - limb1: 0x5972357496f58410fe22efa4, - limb2: 0x12f806c80c6e276db9347619, - limb3: 0xcf97a8c4730942aebfd4449 + limb0: 0x8c4b3899e7891bb31d3c76c6, + limb1: 0x2703be08c9504f6d2a646e8d, + limb2: 0x8b42e3bb2dbf12ab906520f5, + limb3: 0x6ea5ebcde8dd8293b997f40 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xa30a984c70d30f21ae390d78, - limb1: 0x5df153a35a3a354ba5d15b49, - limb2: 0x813405d557c311c7fcfc587b, - limb3: 0xb2d8a60830625870fe339e2 + limb0: 0xacf11f085c6dde052adfef62, + limb1: 0xda1b2304293127165acf6e0b, + limb2: 0x3e38b8714fa25c181711f728, + limb3: 0x5b3e125d7fc930ce4641902 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x34ad4b4f61b41ecbfd07c443, - limb1: 0xd139e591424d66bd83769ba2, - limb2: 0x421211676a2134ce607e22d1, - limb3: 0x8a74ce9bf78140277809c27 + limb0: 0xccf9ce9d73cb34a0335a567f, + limb1: 0x611a545d81fccbf9537561b7, + limb2: 0xb79bdd2ac1a1b3eedff40155, + limb3: 0xd3ad800b36708f78b4cb48c }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0xbfde825274c6a88dc044823b, - limb1: 0xabde1302c0189597ab8524bf, - limb2: 0xd8ddbea882b9cdd1c77c1ce9, - limb3: 0x5d52ff363ffd54c3e4ee377 + limb0: 0x99f80cb7fe7167294ee20f2, + limb1: 0x5ac68ecbffb463d462a9c0f0, + limb2: 0x2c00fb1ba65af6e33f293944, + limb3: 0xe77a59274e7946fe4644e38 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0xbc3265bff3253ceefaf88e38, - limb1: 0x1ddb18daab6e24b87348b9ec, - limb2: 0xa188820e36202b3072cacf87, - limb3: 0x5981fa6cd3387635152c69 + limb0: 0x4b33a94fcc3e8cf5904e462e, + limb1: 0x22046962a051724638d09eab, + limb2: 0x6e9b544dff17ba5f7418c7ce, + limb3: 0xdcad69a62dd44afb6f2970b }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xab183e7ea65aa9e8d9ef726d, - limb1: 0x224810d01e50e0e98a545f59, - limb2: 0x82ce637ab408367e312e3486, - limb3: 0xfbcd919dba519cdc042a630 + limb0: 0x2bd71777adbb3102aaa85eae, + limb1: 0x1effe8d23b00204bf394bcdc, + limb2: 0x9766043735738e6e79a6317e, + limb3: 0x5f8eb0f0bba8403ee53e4c5 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x3174297efcf700b50e95c337, - limb1: 0x6b7660d6e1cd1d0994292d2a, - limb2: 0x65d30566ba23597072b7b809, - limb3: 0x9d2c7202567336f7be24d1a + limb0: 0x25c1177ad9995fb47061ab4f, + limb1: 0x69e0030368a752a5e6a9a1f2, + limb2: 0xddc7f7815e5ead421c247f4f, + limb3: 0x1631474fb80f026cee41df10 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x66e3e778986758c56de4a52c, - limb1: 0xd6bd6cc1e1b455feb414b33b, - limb2: 0x865451a180ec456498d189e1, - limb3: 0x3a47ea29caef704f0f91d9 + limb0: 0x12855904ca3c6b5d2779fc40, + limb1: 0xaae7191b609a461fce31f396, + limb2: 0x7c4983a1886456a818e340e2, + limb3: 0xd63ae83a227688959055be8 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x38f5a4f506825fc9e37ea329, - limb1: 0x7e7c1b09a98493f5e2f0c19d, - limb2: 0x5d42e176dc15d506f4dd5b16, - limb3: 0x6119838912d71260ff0ef8d + limb0: 0x45f5e26be77c3f9e05cbaf4a, + limb1: 0x6e2af1a0e0a94b69589e4422, + limb2: 0xbe253ce0da0b2dff457b78b3, + limb3: 0x162a7d0865b2698e9e55ac4c }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x1baea5c83e52d170f4939106, - limb1: 0xc670f8881c3d397668e29d59, - limb2: 0xddb7950100fe389ed7f978fb, - limb3: 0xda69b32f59dd9292373632f + limb0: 0x9958ad16b9836d6d9c06407f, + limb1: 0x7d3a0835290c187c0440e56e, + limb2: 0x763a5748781de2847875fb9e, + limb3: 0x1167468f1272932f7439b6c5 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0xa89f8c323bb08a5ab46711a4, - limb1: 0x1333bb1310fae2bf86d19b51, - limb2: 0xbdf9887b2fb35059f6b245, - limb3: 0xa64a05f41253ed43aaf57bf + limb0: 0xbe2405d0cd1510d957cd0442, + limb1: 0xd967b88a18928b91c4aa2b8b, + limb2: 0x858c0447ec159d48b4ffa90c, + limb3: 0xaf3c17794d9207220ea447f }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x50a08f04fa0fde22e80a073c, - limb1: 0xe32affda85b10d9078adce31, - limb2: 0xf18d4d83781c9b2cc6be7f88, - limb3: 0x14c23f8298ed92f7b4218b53 + limb0: 0x4a6885434d33e9bf69444a5c, + limb1: 0xb05baef81680b17a89b9ff53, + limb2: 0xe1a86fa820ea6be4c9879248, + limb3: 0xb2acb20510032dfd3a235aa }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0xcb5592a14153efb4f364fb26, - limb1: 0xf6f84cbdceb6cb95e18e748, - limb2: 0x4d9b3baba932b1d0baf13b74, - limb3: 0x536f9a75c9faf57ec2b6edd + limb0: 0x32ebea5e755c5ee2ee2b98f0, + limb1: 0x78e9bbca6ed819cf5ed2bb36, + limb2: 0x1d4796b2208b0289a7c68c0c, + limb3: 0x10bd9297e6edd36836134eba }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xb19baa2b134bbaa73e28fc7a, - limb1: 0x667603f2203e9cb0bd6609e4, - limb2: 0x5cd6ea478ad243beb8cb15f2, - limb3: 0x17e36d2abdf3a4a004efb7bb + limb0: 0xd0dc1657ce98253a8ead0218, + limb1: 0xb379dcd2451dd97ede4d8579, + limb2: 0xbb7222d51404dfc71fde3f56, + limb3: 0x12cf7dd5248bcdd0039154a }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x61f647476f52258e6dbee879, - limb1: 0xe84046f99aabe7ea5c58535a, - limb2: 0x5bde127ea9913955765a9453, - limb3: 0x35df867ea2b306915fbd889 + limb0: 0xf42ae7eadc3777057768fe9b, + limb1: 0xf60e9fe8ff81346be6b8bd93, + limb2: 0xabe95b2e83163e4f5d341b00, + limb3: 0x523cee0a3a4d15068fd7cb3 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x7d32d0ecc3f240a3cb4244a9, - limb1: 0x7e12df0c1261fd053abe66c2, - limb2: 0x27db05b7420c925de01e816, - limb3: 0x18650e88c382f60b28f849c0 + limb0: 0x5463c7f0012cbb8f8b0b76ef, + limb1: 0x671de63b37f37474f3ffb874, + limb2: 0x855e645ee32667fc11c9d8bf, + limb3: 0xa9cc650a5d7c1ddd7111af5 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x825149cd25ca051bd5914d45, - limb1: 0x848d3e567c9624db1dc823bc, - limb2: 0x65cc852e7f90f5de8c9c22ea, - limb3: 0x3330660fb9b679fdb140273 + limb0: 0xc49b04efdeda072511cf0bf2, + limb1: 0xddccee13ef0bee7f1f4c8019, + limb2: 0x874a12618242e53e95bf2b48, + limb3: 0x8334c0a5f3d5750664d0a6b }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xb5c96fa1ebe5be28a6688db2, - limb1: 0x42f40556de942b3c56d85342, - limb2: 0xc3229d78953f7a05dfc75aa6, - limb3: 0x18afb23c09c235d2ffdfc5ad + limb0: 0xafabc6cdd0e460f724cca75b, + limb1: 0x459c0ea28b88fc481dfac257, + limb2: 0x7944d26e6c46afaeb0ed2254, + limb3: 0x161c0728f78e8b1310b4c807 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x6d2facfc47d6ccd35421458f, - limb1: 0x1ab5b58b56c1e3eb1c436af6, - limb2: 0x42dfa137bb51fff148551856, - limb3: 0x6087c5bd1de124d6ae028f1 + limb0: 0x77d8ba13296d623e74704905, + limb1: 0x7b79851e55330431c8603150, + limb2: 0xecef278839e4d574401d0687, + limb3: 0x1466fc5e9a8860ae598db208 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x6ced69221348cbc8b5b7c77b, - limb1: 0xc0aa988468fe68af6fced0ca, - limb2: 0x9b349ece3e6b6e5fe13df582, - limb3: 0xdae218951c88285d7f6253a + limb0: 0x50f76bbdf88a124f90fd8619, + limb1: 0xd865c595c20db2acd1eca276, + limb2: 0xc7477d873cdac9a8c0a1a678, + limb3: 0x73c3fd1ce5b21b848ed659b }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x3bbd3fddd15568ffab6960c, - limb1: 0x102abe5a1d08d463f507b3ff, - limb2: 0x2794f7e7d5b90da7632362d1, - limb3: 0x17656a07ee1ac3bb55b833b7 + limb0: 0x7bcab6548ba6dc7912247898, + limb1: 0xd57166f997ef831e3536e694, + limb2: 0xd5bb5ac93e28281b43a5b4e3, + limb3: 0xbe0cc24aa8a8eeb2a98c6b4 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x8cf3443030db366bb86809a1, - limb1: 0x6a72fa0c917e54ebabf94ae2, - limb2: 0x3bdf5f57774f2c7d358cba0e, - limb3: 0x18238ea01205cefc95453547 + limb0: 0xa73ce6499e0faf56bd469df3, + limb1: 0xfb531674f0fcac546337fe60, + limb2: 0xf9ed0e6058241f12960d5342, + limb3: 0x15ec58ee81e027e3c639f9a2 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x2423e967137b7536c4d17f07, - limb1: 0x13e82c9152f898f4805d1da8, - limb2: 0xe7ac1ae3719b3ed55bd66a59, - limb3: 0x13ec53647e5cde4f0e523dc + limb0: 0xfff06c47876a3c878c8fbfec, + limb1: 0xf73c36a11412075e2bae94ac, + limb2: 0x7f911ae020b3b5548c3ac50c, + limb3: 0xff6254fa012f7b48a822743 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x7ab8580c959a57f3e2df22d8, - limb1: 0x427501beb82f8dc698f65f4b, - limb2: 0x608e19e3dc284018e8848b33, - limb3: 0x395418ede4b1612afe26005 + limb0: 0xa311683c2dd808ab1ecb652e, + limb1: 0x5f1bd2eb4e257f4138c58e02, + limb2: 0x4e4f9ec683b9783146f46df6, + limb3: 0x1e4a6a41595501261e7a9cd }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x45d27023f9a693b11e739e56, - limb1: 0xf035f37217cfe043bd10f24e, - limb2: 0x1161d10360dce7237688edc1, - limb3: 0x1311acc656de18bdbbc8dcdd + limb0: 0xb9a9374dd5355ffb065ac382, + limb1: 0xe6d6dff5f748ae29ca5fba42, + limb2: 0x819f04f94ad5a18b64645d75, + limb3: 0xcd7045d7b142badf7e2dd00 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xbafff5aacfff9b7d239c0918, - limb1: 0x22f82a9850a6d270217755e0, - limb2: 0x72ce36ec57009ed26f20843d, - limb3: 0x238f6fc96481cd115f7b4b7 + limb0: 0xf8a8377a51ce37a6636568d3, + limb1: 0x91dd25d8e525e728a5f3509c, + limb2: 0x2c3186ebd4facdaf8ab43e5e, + limb3: 0xe5286b916cebbcf47edcc3b }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x1567026770004adeb36e98f7, - limb1: 0x5f8b495d32ec2e86374143c4, - limb2: 0xdb64b4beb78deee6edee965d, - limb3: 0x544aa0b1adf5e0a2d4887cb + limb0: 0x763ca8851136047219caabc2, + limb1: 0x5d8c5292ee97205c0fbb8e38, + limb2: 0x6e7ec9756cd3516fd435708d, + limb3: 0x17ceea734f032a7bd7b41497 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x47d52d3f1e42f9ef6f02ebcf, - limb1: 0x158d8df966615e221ff93d74, - limb2: 0xab8b611331ebee5e669de2f1, - limb3: 0x162da62d43ab57f4a15cfec + limb0: 0x100dd744ff8be19755073a66, + limb1: 0xccdd9da55b02a48919780be0, + limb2: 0x6279230e4bd0b038f67a0aa9, + limb3: 0x19d4aa3cde545f27fda41212 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0xfc969801008e3bc079247803, - limb1: 0xd5ff102701a877e35be879ff, - limb2: 0x7fe7891f2a5317eeb87e237a, - limb3: 0x13214571502c8c2a7c671668 + limb0: 0x8046e13cafeb76869a2f0f69, + limb1: 0x4ed8e4bb7beae9a465bbcf2b, + limb2: 0x8c3ab82f7b63b53a2a4c48f5, + limb3: 0x36b8f8c298046e7fe5b3e14 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xd7421a259efbe435938adc51, - limb1: 0xfd227c7960ff4c8c6fd95a46, - limb2: 0x9a15a18019cc4179e4b47298, - limb3: 0x195b30dbf9aacaf1e41aee3e + limb0: 0xe9582fc2b192c0b675df6274, + limb1: 0x68d99ad33877331db0106d93, + limb2: 0xf38ceb8b31a3bf9dc28565d3, + limb3: 0x1318f40c4377d3c47c2c49e }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0xee10c2565cf63e88ec519d1a, - limb1: 0x608f4f4854e59dc15b63baa5, - limb2: 0x28ef009fc5ce5d891314d477, - limb3: 0x1646de9b899a9e096f21cb30 + limb0: 0x97026c6a900ade7a125e1f32, + limb1: 0xc286dd4ca65c7452be7abcb3, + limb2: 0xa418d06a2a3ec45a0daeb553, + limb3: 0x68e5bf3c3562be17c5eacf }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x315f29484a493faabeb9f64e, - limb1: 0xe99954a3867df64f0e84371, - limb2: 0xd08a58a2624cd9faa79cc4fb, - limb3: 0x6f8dd486644fc57a5591991 + limb0: 0xcd8b9a58207efcea8b8d51f8, + limb1: 0x4e3fb9eb0c626184aff86b69, + limb2: 0x220e6b15d92c57b808658986, + limb3: 0x194268d4736d16bebb4ca7ec }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x52212bcccdbbe8b6de0ab905, - limb1: 0x5f0a02f27d21286dba5f8721, - limb2: 0x31f89625739306fe2580d1f2, - limb3: 0xdc43dfbe33733b7e2956d2e + limb0: 0x414c7a942ac5fe66c7573466, + limb1: 0x8553a1ccb627bc1b7043fae4, + limb2: 0xc7cf65b73e861133f252c585, + limb3: 0x68fec2bde2d7a7fbfaeafa8 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0xf9321b9bfaa2d3e7c9f50e83, - limb1: 0xd2098a8f83a173c4084f8e53, - limb2: 0xfd4f6ec28bbd2ce180e72522, - limb3: 0x177bd6afc540c9de1a7d940 + limb0: 0x485c42e40a0a63f4b640967a, + limb1: 0xc9935c4d88b2f9786927ac13, + limb2: 0x48a480df81bc53f6a246eeb4, + limb3: 0xd0bea8e5f86c59e6c9eb435 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x23b0d420d9c9eaac5b5091d5, - limb1: 0x2ad30e6b15eb33ac18dc7409, - limb2: 0x3f74ea5c82861edd749ad729, - limb3: 0xdc9b3c81ea5b602c607838e + limb0: 0xfe424427e5a49e876a093393, + limb1: 0x63585628e8f376b0a70faab7, + limb2: 0xbc1b9f4adbf4800d78a849df, + limb3: 0x1121d0f06bf7009c72effff1 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xb859bcdcfa033e4baa752391, - limb1: 0xa4ad79a939c27629ba010061, - limb2: 0x3fa62ae6a33f3cbd99b0cd2b, - limb3: 0x190acabb02e8c34bf1879496 + limb0: 0x35c33946090a3bd2f2569edd, + limb1: 0x1e5da5de7c79c630b5fbe133, + limb2: 0x5591552fa1df07bce5a407c2, + limb3: 0xaffa37eb90eec3c5b0e74f6 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x67959e9b4ef37a6129847ef4, - limb1: 0x5f032dc3943dab8d5453f8a0, - limb2: 0xe61591d0aebe37a4c77b3a71, - limb3: 0xc2805f7d8bdfd39ae97c081 + limb0: 0x7c154bb87818541b97e06bb, + limb1: 0xc309a4102d3076fd04e55ef, + limb2: 0xcbc9bd863911653a10efd61b, + limb3: 0xb2959f5dc16ab457282dc08 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x289f842988b4b3a815bb0d7a, - limb1: 0x84e571afdf76c51a130a7b2e, - limb2: 0xd42094f1a600c35f66ffe7c, - limb3: 0x68fc04c762f27f55aa6de07 + limb0: 0xfba073fa483c4e7f2d639b11, + limb1: 0x2162ede471ae0304b02ddb1d, + limb2: 0x748167cece0261f037af0d44, + limb3: 0x2060005583a6b38429bec50 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0xba2f5fe1530aad7cf4aa3f62, - limb1: 0x415741daf6055523faac7c90, - limb2: 0x85196fe803bcc9f4e256cc93, - limb3: 0xa3d90ada97abccf302e34d5 + limb0: 0x94b254b6a5ce0460a350f7f1, + limb1: 0x17102f29b5946cb8335c56ad, + limb2: 0x61f15a9e65fbb257594cddc0, + limb3: 0xf408e11e9c1c5048e515ce0 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0xa4910be14a3085d74ef62230, - limb1: 0x63cfa3cb97615707772ba716, - limb2: 0x2b7ca0bce12dd53b3d58238c, - limb3: 0x14e6ff93bd4722a9611d7c15 + limb0: 0x953f5292e73b99014844df44, + limb1: 0x281f68896363bae4ba0b71b3, + limb2: 0x17f514139734f823021305c, + limb3: 0x101d9f97d150952b1d3adfc8 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0xdd8dfcf8ec028af7f5bfc435, - limb1: 0x2593ee3f68f94b8ec2566c0d, - limb2: 0xadd0663762911081744e482c, - limb3: 0xd8e605644ab8906638c3982 + limb0: 0x1ab7afd1a327c0ba50c04a90, + limb1: 0xcb946eda2b6393c27e3482d4, + limb2: 0xdfe1e1fadca70ab654b22af8, + limb3: 0x17c22e361c87c4c0c3014304 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x591744cef2854ba597bd1a25, - limb1: 0x96c7474f0070800c74145cb9, - limb2: 0x236b3654a58d046bae3bc097, - limb3: 0xd45d7f62f903f525af22de2 + limb0: 0x5c4db7a81b61ab0401b7845c, + limb1: 0xad62fb3acadc346df15fb15f, + limb2: 0xaa8181705bd0b8919c21eca2, + limb3: 0x104034e48db96bfbb1ae49a5 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0xdcda56c1874b99b2fa80d784, - limb1: 0x68794ef49bbd83664f2fcbbe, - limb2: 0x85a1a0a0d8a9e672b04da153, - limb3: 0x5b2eae2ca039959c3c2f566 + limb0: 0x576d1a6159cb84538eb79de, + limb1: 0x5895ee8be6f718b45e0302d, + limb2: 0x48b96e3507026b49c5eabdd6, + limb3: 0x177a71c62263eec5bfd88deb }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x385464edd6c0488febcaa287, - limb1: 0x95ea4adc58bc0649b3998462, - limb2: 0xd87694645a0d174db348a3dd, - limb3: 0x16e1cbdf95b50ff0ab493e19 + limb0: 0x72be499d84893b50a1068fcb, + limb1: 0xb79d72f2c241218e6ef21d8f, + limb2: 0x30222a4edbdd8d36a70a8646, + limb3: 0x9551139dda19d573a2b1b4c }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0xfff402840b0a821c43855c77, - limb1: 0xe7b00bff15230fa87f62c0ba, - limb2: 0x4b586d858e030e99c9c4cc81, - limb3: 0x10f05dcb3e0736abb5c9c123 + limb0: 0xea89e6066bfa7050b57fbaf2, + limb1: 0x4554565fe484e6b4130ec621, + limb2: 0x844c185359befa04a7fb8338, + limb3: 0x18dc56daf5b57df2f8973097 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x7843e43484514a6757cd7254, - limb1: 0x3e52a1a5480fdada334b7d47, - limb2: 0x91e7e3696e7e2e5b788033e7, - limb3: 0xa6172b9f0e980120bc96c12 + limb0: 0xd2ae5811ffe4e35121fc75f0, + limb1: 0xbb9b60d67e1dcf8c30d2e800, + limb2: 0x9e912c50b9324ba93d335c0a, + limb3: 0x66220bb64e33ad2fc964757 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0xeaf5003bf9fd4a0039713bb4, - limb1: 0xdc22995764d6bcea186a5b16, - limb2: 0x7b270db9cbeb91bc755298ce, - limb3: 0xf25f391274c6c690aafdc7f + limb0: 0x5948b6189d5085ab8d95f1b1, + limb1: 0xedafa179f301297b478085b4, + limb2: 0xe6a2dc26f258f9bfcb133131, + limb3: 0x3d8b0d9f38fa02ccd770273 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xcb7cae46614384ae82e35b7, - limb1: 0x33b367ef2e4675c488931406, - limb2: 0xfcf6babe49ff9d1be117f532, - limb3: 0xa81f5a0041f373c1fddad92 + limb0: 0xb7392a6ab42bcc137a6aedd5, + limb1: 0x922fbc8aae3d0f156b929227, + limb2: 0x7720041856a015d7c644ac77, + limb3: 0x8acfb05aa536fb99a971d02 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0xf216e99c6b6cce0f676e14e2, - limb1: 0xa660798fc7de3c7623cb782e, - limb2: 0x4f00460875a7b7328ac8ae9e, - limb3: 0x18cbc1fb83525ef244830dd5 + limb0: 0xaddaafd36f66de7a53489501, + limb1: 0x1d7a6d6d92ddefb2eba88082, + limb2: 0xbbe1b15983f4156769b46abf, + limb3: 0xb83fc4611a27ae0666402ee }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0xa8e39db17ea0d7e289ced5c4, - limb1: 0x777b85ca6a577c4684aa2cce, - limb2: 0x21a265c5600bad9b3fce0ea4, - limb3: 0x9dc87eeb2a28806d081830 + limb0: 0xc970b4450050a9535c7b8204, + limb1: 0x48564b065d7649746493cb05, + limb2: 0x26dda52e17cd300610cab08b, + limb3: 0x198d3356f2f851f019a5a011 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0xf8cc0989b193bc313a589185, - limb1: 0x1576bc0de39141404169db32, - limb2: 0xb363721d513ca47807627de3, - limb3: 0x12310cb856fbff08f7cb2af4 + limb0: 0x5934dfebaa4e2142377a6d02, + limb1: 0x97ed46e11d895823d18f708b, + limb2: 0x329eb104573d457a81e5e91e, + limb3: 0x134a2ebb1ee1b32a67aab96c }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x13a84ad4ae0395d4e1b51ebf, - limb1: 0x74d83adeb892c587c0e75990, - limb2: 0x1e936322dc03bd08c7cb52f7, - limb3: 0x285710837396e4a286ea2b9 + limb0: 0x94a302f6d6ad0c9bdd0008c9, + limb1: 0xe4c81d25b80815ae1da2df71, + limb2: 0xa7464a27dc962528e8ff669c, + limb3: 0x960ec42c25cc81f312324e4 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x7ce35be78bc35ed07f6a294e, - limb1: 0xcc9e0c2ac2fc41521a7fedd1, - limb2: 0x6ab501ed70c720f5ea86321, - limb3: 0x10f11fe22209eceff0e72526 + limb0: 0xd2341ba3fab2df59d2fb6c9e, + limb1: 0x974b25f7bb352cb478e5d56e, + limb2: 0x93d511aba4068a7f8eb725e3, + limb3: 0xc9f0352eca946d431df1d45 }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0xd50d4134485d6bf115403567, - limb1: 0xa06fa5c940938af875344d8c, - limb2: 0xdb5a32bd04ef2923b1424105, - limb3: 0x5993bc710900f5b7ad2d838 + limb0: 0xa71dc292831cd0044d3deda4, + limb1: 0x2b7d82111fb3c384d82b710c, + limb2: 0x15d1d05c13c0737d1f2ea0d0, + limb3: 0x162a63d6a05cb6d9affa2069 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x134b6a6dce5ccd98a9080634, - limb1: 0xb049282cd61459f3958fa296, - limb2: 0xd26df4c0cae878084baf776e, - limb3: 0x19079907d76759e3766f09d5 + limb0: 0xabe36743122f7e8eb628c7e3, + limb1: 0x45a4a25c7a911feaadd04a1a, + limb2: 0x9407ef872618d0d2dbf90249, + limb3: 0x4b41a315ec522194b9277f6 }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x80968a26f0ea0a03468f662d, - limb1: 0x7c4ace0f3df1c7c4cbfe5731, - limb2: 0x966a096055885d30c87dc2a3, - limb3: 0x9b022d605e8e6b69cae4bc1 + limb0: 0xa731b4a8ec95d8590efee354, + limb1: 0x28e6d9306f041d5e86293a3c, + limb2: 0xa8b441475aa9fb206e0dbc16, + limb3: 0xeec36ea24df01f2d5deb3a5 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0xbd6517a4153e08d5013f3d57, - limb1: 0xcc72fcf0d5ae2ca34a398ff0, - limb2: 0x559bf5ed801dceedd0d2d2be, - limb3: 0x17eb378527b803a6662def91 + limb0: 0xccde2999d1fae75bc7af36ad, + limb1: 0x50cecce4a5e06b30e70df16a, + limb2: 0x9a9f720072ec2fbfd75bf902, + limb3: 0x161b88b4489b54ddd39ebf68 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x16d201dda52b073b55aa2b9d, - limb1: 0xd33b94c146f2f20ab33a27ea, - limb2: 0x57c2156e762f74f23e03c295, - limb3: 0xd27d383d049c2a49a71b00 + limb0: 0x84df2d225a653ab1f40c3e9d, + limb1: 0xe314fee0aa259bc9acfcde64, + limb2: 0x3ee58d7bbdbcd31891ed4e4b, + limb3: 0xeaa5946fdab28e90e7d61fe }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x680224246439051193211059, - limb1: 0x91ff0eb4ceb7260926597806, - limb2: 0xe09d253a651f73010e292f87, - limb3: 0x59e6d6de53566193cb79826 + limb0: 0x1b7ffbd66e8494b242036d8c, + limb1: 0xa0b5b9e6f29d4b308249b032, + limb2: 0x46cb3681dae1fb8fa5142d3, + limb3: 0x3901ca5a82af8bde023189c }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, E12D { w0: u384 { - limb0: 0x57857f4b73a3b0b88b3ea013, - limb1: 0x37017ae0cc032222290de39a, - limb2: 0x2176e8f26554e0989e26f2cd, - limb3: 0x7e37dcbf972e6e4498ae07c + limb0: 0x1be3a21ea8a09f241412db78, + limb1: 0xb739bada1014908b179b4436, + limb2: 0x35f3b1c4b5eeb8e9aeec01d0, + limb3: 0x189c678c451667bb0a5c3721 }, w1: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { - limb0: 0x6e873bcc1d8ba277a047d281, - limb1: 0xcbb9057ce4bf6554bfe40768, - limb2: 0xd381164ec87f16345d932e67, - limb3: 0x5f0ebff1fd81b1268466937 + limb0: 0xb6d03943e4e5be88b7d7ccba, + limb1: 0x1123a9be05de527e33b100a7, + limb2: 0x4ab12fe3fdfdb4fde61acd23, + limb3: 0x15006cfd6f3808d519e655df }, w3: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { - limb0: 0x2508308cd5ffa5b9e30f9435, - limb1: 0x58bde2aa594812216e43136f, - limb2: 0xfbb5003277183c8247fce892, - limb3: 0x6d3ba15057b8c30fdb9dae3 + limb0: 0x79ae24fee8ed54f2cd256ec2, + limb1: 0x815f3d6651816a72526f57c7, + limb2: 0x3de32203cc46c6d511d0be06, + limb3: 0xb669dda4dcf846d9acfb733 }, w5: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { - limb0: 0x7d47d147f3d333dd63c42e37, - limb1: 0xef4296d9c6e4ad139e36923b, - limb2: 0x812a1278b1710cf5d783fd7e, - limb3: 0x8417cf42ed3da1c234e582 + limb0: 0xd2e1f8f0f1becc39727f8c4d, + limb1: 0x7b1e3628d18b3f3f6ac04561, + limb2: 0xca65bea8d0e0914184b0332a, + limb3: 0x76d82e84836d4c348d71419 }, w7: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w8: u384 { - limb0: 0x6d55a0068bf1f30e21485374, - limb1: 0x540e8d653531fbebce50f4a5, - limb2: 0x7c994cb9e959aecd4f2ad1dc, - limb3: 0x224bc69a4b3f0bd00cdd3d8 + limb0: 0x7805500525380bb48b4c697d, + limb1: 0x3736f1a26cab1ec29aea1809, + limb2: 0x23d5b8c38eb15d32e765fd69, + limb3: 0x177bf1aa6262fe941ff2024 }, w9: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w10: u384 { - limb0: 0x3223edf9efc18eb80998556d, - limb1: 0x43a7ef879bc76f96d774f86, - limb2: 0x367c93f98e678864d39394fc, - limb3: 0x19b84377a3b9951c1774fd92 + limb0: 0xcf22b9572c3e01599391b7d7, + limb1: 0xda190009f2633305f7620c14, + limb2: 0xcb2d6b2972fcbc658d476efb, + limb3: 0x1f344704f3f317b10ddacfd }, w11: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, @@ -22265,276 +22270,276 @@ mod pairing_tests { .span(), big_Q: array![ u384 { - limb0: 0xe0d769b9d7c800a0b4029195, - limb1: 0x14b5f04639916fb071b5359, - limb2: 0x31d5da85142658797420b8be, - limb3: 0x11022870fd8b156c2d82a7f1 + limb0: 0x357b540de4d5b1bf1d922b56, + limb1: 0x43bb6209dc9e305842f78e71, + limb2: 0x33602e39719bee2738407b22, + limb3: 0x11b9563b461e5fd17634a411 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x6754c60299bf9fe420d9a68a, - limb1: 0x6b66f29868f8236a73099d8e, - limb2: 0x6e1bebd5c1a3d0036ae4a6d7, - limb3: 0x5276c926c0c97a47b61456 + limb0: 0x28959a3ea043fc1e06ec182c, + limb1: 0x9af347229f0c5b3992e6ed1d, + limb2: 0xbfd083d4282c9e3813d942c4, + limb3: 0xd46bbdc7b624435e97232ed }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x59aa313838007a6efb797df0, - limb1: 0xbb59f32f5a43244363668e60, - limb2: 0x30bbff2fd3a4d5e65e7b8f4a, - limb3: 0x1700348e84fa5fd77af3739 + limb0: 0xcc66399d4625ebd2f829b9cf, + limb1: 0x14fa3b5b4061f35040622df8, + limb2: 0xca4427cf67c5e77b11a0fa7b, + limb3: 0xa41284c5413aa9b1dfa53cd }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xffc18e18e167c2e5d2f7d703, - limb1: 0x2bc637b93f5d6a81420f83fa, - limb2: 0xb3ef3d5cc8fa71c35e753aab, - limb3: 0x14db89e34b68fe18e40091f0 + limb0: 0x2d1bcf60eff2f049d7579a4f, + limb1: 0xc172143b012d33d31f454b4d, + limb2: 0x7e508e968f1fb81b36d31ae4, + limb3: 0x2d9ba651ba1bab218d502ec }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x479692c126ce248036ac6674, - limb1: 0xc7fa578f6a9887efe112fb87, - limb2: 0x4401d374bf146079c796a902, - limb3: 0x16fc6052dc92ca9adf3334ba + limb0: 0x7f41a060b028f80c5dd0a9f4, + limb1: 0xbca0d571eef438c3a419b1c6, + limb2: 0xa94f6dac113bcd53b0a95a2e, + limb3: 0x543c0034e91304ca9dce7f }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x20769d967b1034597e060026, - limb1: 0x8a8241f334d016a4f9c6abd7, - limb2: 0xeaa73047366a82b91fb368f9, - limb3: 0xb9168e323220bb6ba483f26 + limb0: 0x4ddad367b3b5f4ea2ef843e1, + limb1: 0x60f447f1a63b71a206ec8501, + limb2: 0xe8c18328209a9c5c14c9d459, + limb3: 0x1372f4ad8ac07138af27dfd8 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xe56c014af9c371343baba2a, - limb1: 0xdef2f4171296ca3332aa4aef, - limb2: 0xb4f1539ade76e9c782245e59, - limb3: 0xc1a79ed8475258431d29aee + limb0: 0x26a728222bc2bca517f38538, + limb1: 0x484bedf938ae180b06e21e35, + limb2: 0x6884c84593cee13575674f97, + limb3: 0x18b047315aa10b9f9e308fb8 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xb9a7e7394cc40015632278ce, - limb1: 0x5b65eff948afbc62d5691b0a, - limb2: 0xa16e631834b2e881f7d7f0fb, - limb3: 0x15d1ddce1c9fa1618cc51419 + limb0: 0x9d1e6fb06ad46d66962cd7c2, + limb1: 0x5c7f3cb38d18181fe461041a, + limb2: 0xeee381a43f77eef304713e2f, + limb3: 0x1561d0095977428359738086 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x13186e9a039b67b15fcbb7a0, - limb1: 0x5126a0bf9dfcadc15c562040, - limb2: 0xf06e43e79da3420e69d16223, - limb3: 0x187753733c7d2a34762b7cc0 + limb0: 0xec7bf8148f2f75a52573b71c, + limb1: 0x649ed2ba35f76ba5a35a7493, + limb2: 0xb94e3b445ff6e711209ac90d, + limb3: 0x68ecf9cb7a14b85c90c9f32 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x872671381a9e22ba1443ffdb, - limb1: 0x9f787242967d5cfdc59c5885, - limb2: 0x5fb41de0cedeb00a69de2de4, - limb3: 0x635cbc93c10cfa2e7cb2bde + limb0: 0xb8f14b2b762ccffc3c90061c, + limb1: 0xb79e6e99e99679564c3b8f4c, + limb2: 0xb57b4db6a2598d47bd130cc, + limb3: 0xfe9dbf211e55c641cc42119 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x99f6a4b98ca1ce6baa7765ff, - limb1: 0x4d0473c45749c86ab7a5d29d, - limb2: 0xd630fb2ebc0d0f120908d6d, - limb3: 0x177ce0c1b47d02254acdd899 + limb0: 0x1b331cf0c7cbdb4aa8dfc7ac, + limb1: 0xfa1499831c9d463675743159, + limb2: 0xbfc09f50e96577e3b4a3fc3d, + limb3: 0x14a27aaf6b2f429e7891876f }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x475a7925dd4cc4500137af6b, - limb1: 0x3e8b6336dc7ab1c58816370, - limb2: 0x881b8d563ff4526542d572c9, - limb3: 0x15da467747dc4afc1c874180 + limb0: 0xd6900d22e96a026018544402, + limb1: 0xc0132906f5794384442fba82, + limb2: 0x4df7627d284dbb092b0c6d41, + limb3: 0xea148da975cca5a5077ad92 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x85bc6036946ebd977480d9bb, - limb1: 0x8ae6974930d35df4ad44fc2a, - limb2: 0x4472b2dae704141ae45fe9c, - limb3: 0x5ddd30502211d608b951d09 + limb0: 0x37020091b7f77383ae55e09a, + limb1: 0x5e9e2f558af2468a672299c3, + limb2: 0x6da77f7d6d206198f8f4bdc5, + limb3: 0x169fb42862058af2a0de0fa8 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xb4cdf77d7568766a8b7e48d2, - limb1: 0xfc1a73446092e9b82e80552b, - limb2: 0x9c09bf9353fbdfbace9e232a, - limb3: 0x931492387219b80c1aac4f8 + limb0: 0xeba45787c5642f11252beb78, + limb1: 0xce3b0fa1c668a8da5b9e508, + limb2: 0x84d21a4f29a8aa994fe8c0df, + limb3: 0x11d5c74a3a99ab1fe97ad0f7 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xf6c3b32c40b45c076b1dcfc6, - limb1: 0x91d6fec59a67bf509e1de640, - limb2: 0xc4fd8b375a9659490c5a1f61, - limb3: 0x14d85ec07e2b137816bd7447 + limb0: 0x418552a0b1620af877056b23, + limb1: 0x8b4bb9885625e52bcddd2daf, + limb2: 0xe6839b6b957ceea7dd426a0, + limb3: 0x18dbcdc78f1132db2bb49a25 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x60d1bb89bc4cf43df2db4fa1, - limb1: 0x2dbfb5732d5c272dff35bdc, - limb2: 0x580620f007c7ada7360c9a30, - limb3: 0x11ba8065507a7da06323bff0 + limb0: 0x61d363fc647790a97e84a780, + limb1: 0x9b72c0ad47dc9aba90d2c466, + limb2: 0x65d64bbceceeaf720dab9b36, + limb3: 0x1232a14b014c87772c8f2e91 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x7f6a8f6e8dfdce211d7a7697, - limb1: 0xa234457a21695902f9f2cfd, - limb2: 0xfdaaa4cd6546e8cf55b5bcde, - limb3: 0x12e98aecef4ee8f73e8cd33a + limb0: 0xb3918fbac1a1a1d41e8d0c93, + limb1: 0x47fb7fea8e036516b84e0e9f, + limb2: 0x5af04e63fa59b753d6a0fd60, + limb3: 0xaa2ec682ffa0f2e958ca714 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xd26fe941d1d160cfcbe021ed, - limb1: 0x60f70390af786c35c75c320, - limb2: 0xb46202bf111ab145709ff154, - limb3: 0xbff525bba731d1bdaacc635 + limb0: 0x391626fb70d189a37a5aeb15, + limb1: 0x94f9b191851c9f48bc6ccff5, + limb2: 0xb1734befecf1bfc874e0bacf, + limb3: 0xb9da76c4bfeba7f23fae050 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x55fb61b1e694937bf5ceabed, - limb1: 0x902e99d041d395506acf7209, - limb2: 0xd50aca3a3ecdbe7f9df02b8b, - limb3: 0xffd88eba6032105fc57e58 + limb0: 0xbd6a8d1de57c64a81a563e1e, + limb1: 0xed7db489e474aa99a9d8d443, + limb2: 0xfa654e085b3c724f5cac3421, + limb3: 0x12efb84c039778ee5fa44c24 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x19cd8182332f57b8ea35687, - limb1: 0x69fcfe6b01a9e0add332ca5b, - limb2: 0x396f3982433e2624f3a6f880, - limb3: 0x6489f5bd27c7ce23049ed52 + limb0: 0x600be38e3098bf1075fbd003, + limb1: 0x5ef114ecb97bf7c21958c61, + limb2: 0x97404b360bc6f39524d97f0c, + limb3: 0x14853c59d572b79549e30eb7 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x6a4714f44b267134b7f4bc69, - limb1: 0xa43442bf03345f6c1936f050, - limb2: 0x4802990e967a56aa2fbb9116, - limb3: 0x19ce00d91c5a9e2646e3b96a + limb0: 0x42d95e47d39aea43b79c782f, + limb1: 0xcf7401a55258142faed2af7b, + limb2: 0xcf6354a463b54d08aaed2e7b, + limb3: 0x9eab60a774fd389bf89fae6 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x587ac8f8651bc7a5033a0d89, - limb1: 0xc3dbd6582fe884d70b17af88, - limb2: 0x6e869cf3872c0e698d04631e, - limb3: 0x12b561437822dd79f22871a8 + limb0: 0x6b13c062eb499b5527e5b701, + limb1: 0x23dc3b87da13ea3c0390bce9, + limb2: 0xb732865e746ce30f0cb0225b, + limb3: 0x17a3855e47d2fba1ba55c3b }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x7dec68c5c511da1136456be2, - limb1: 0xa3ea5b4de08fe38d4d22698c, - limb2: 0x83e0f7abef59d055a8e2591e, - limb3: 0x16f429c475d91b2302819dd + limb0: 0x4a45b677ab060e82a8fe2948, + limb1: 0xf3485f34f8668e973211803b, + limb2: 0xd60bc8ec1f5826e8ec74afec, + limb3: 0x111b4161385ae74bb7ddd4f3 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x578bef0082be255482d5287d, - limb1: 0x1a69f85d4025a134f0872f4f, - limb2: 0xd488c49cff192a5c2c9ed395, - limb3: 0x54878d4bdfe8ba10b417c84 + limb0: 0x2400760e22bfd743ce9deafd, + limb1: 0xbccdc39d700d366d78efd391, + limb2: 0x82ed2d57f93ffb138cfbcc9d, + limb3: 0x5bb863591c92371d2685699 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x7607ba14130e207ae84c90b3, - limb1: 0xcf7db67e0fd1cdbcb67ea293, - limb2: 0xce21f5c827ed0b63683a86a1, - limb3: 0x93d235b4febde02666918a5 + limb0: 0x2f1a57963edee26831903d94, + limb1: 0x4070e237aa2241559c7c053c, + limb2: 0xc2f0d4cfe2ec64a939775a, + limb3: 0x1617ed9087daba2900fb2acf }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xc4c28bc41486b95a0c091540, - limb1: 0x53fad4e71767076e277ae8c7, - limb2: 0x680cbd4864cecdf309ad3ea4, - limb3: 0x166b64fd9fcb1dc882ba8d6e + limb0: 0xc68c2821a3442a7d80f9284e, + limb1: 0xd08f2ff17e8e9d003c2112d9, + limb2: 0xae72ab6651609faf1857239b, + limb3: 0x3ef981c9d981e6447041a4b }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x756d568154f4fbd205367e61, - limb1: 0xa05aeb96541118b2c7d833bb, - limb2: 0x4636c3cb46a90c7e9b7ecdd3, - limb3: 0x7444b1d9ea23844d66de0b0 + limb0: 0xfe03aed7155eb00550254e94, + limb1: 0x39849c21044457e3c7d8551f, + limb2: 0xadd4d31c29e0e1ee8acafcd7, + limb3: 0x119215b16910a1633b4f624b }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x7930292c9986feba866df8dd, - limb1: 0x7c7ab0557e6231b4c4e3129, - limb2: 0x5f2179e484a745aa7d49b40c, - limb3: 0x16c60976d0f7a6a8a9053c32 + limb0: 0xf77cd6b33f76e10cd6b00ddc, + limb1: 0x137b99ccb5d32da727d8513d, + limb2: 0x4dfda414366413a9142a89b0, + limb3: 0xe74517e36e9a7bf7f04d417 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x48dc15bdf55b39ea0806a9da, - limb1: 0x29483ce67f4e9f28d7908a0b, - limb2: 0x155bd1fd39cf30b93bad1fc, - limb3: 0x1072dfc9eaec6f1a9b2cb87e + limb0: 0x7f6181108a6860a354439278, + limb1: 0xbcf749b04698d8ad368d3911, + limb2: 0x4715aaedf0c534323f918292, + limb3: 0x188b5a536717ea6785eb543f }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x8b0f92f604215f844db1b155, - limb1: 0xc1b915a24db3abe4457206f1, - limb2: 0xce2f5ad0a3a44e7c49be4e88, - limb3: 0x59b0a02eaaf3a96290afa30 + limb0: 0x724416d65039b1e3ceea0f36, + limb1: 0x7608457b8c1a3eb0a08cecc9, + limb2: 0x7c95c770728f89f573d8910c, + limb3: 0x15933288aba73848fabbbdcf }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xe7c364805f7c18f2e9dbea13, - limb1: 0x813d21446e7b170c9fd0c928, - limb2: 0xe669a971edba2c7aa9136cd3, - limb3: 0xd05bbd7877cc36034cd58d0 + limb0: 0xe9cd6303711bf2cd20a1570c, + limb1: 0x2a4ddea3d591979383a01c4e, + limb2: 0x17f4ae699b478009d3b4c026, + limb3: 0x1770fe84401792d2b71e0a6b }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x39883cdb58ac8bfe7e8c2527, - limb1: 0x9184297925f83a4965a8038d, - limb2: 0x789493f13941dd20a965b838, - limb3: 0xd809125e0884646becd5984 + limb0: 0xdb49f8933110f86fc01e2a7f, + limb1: 0xe37565d5f081edf93b48dc32, + limb2: 0xcff2fc01a216e50fb5bd1bd5, + limb3: 0xa4b34b230c8b022481ca4b0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x8706fc0c43117df79808a3e5, - limb1: 0x93f6598a60026e25a0189465, - limb2: 0xdcd099a906e7142beb822ed5, - limb3: 0xc054be08eec23f094ba1324 + limb0: 0x3c81d8a09a13f964b3a82279, + limb1: 0xfb9786149d84314e9854e05d, + limb2: 0x11900c77f0b3d040678858b2, + limb3: 0xc6a6d6cf615815b25d647d3 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xa50089977afb97bc24568ed3, - limb1: 0xac0c7b138d4027edc997e147, - limb2: 0x4cb942db0707293074682669, - limb3: 0x12032ae8058be7d16e27c019 + limb0: 0x4f113eedccdd97e8411d0467, + limb1: 0xec4d9822cf659f9b6cd5932a, + limb2: 0x73771fa30fd33ada2184ebda, + limb3: 0x9ddf7c4c8c45d3fd6db4818 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x7b05b9edd0334fac735c5750, - limb1: 0x71a09c7482a802f418477a1f, - limb2: 0xe351fa0a875ebf77cd64145e, - limb3: 0x740a458ac534013b7a5a72d + limb0: 0xcbbde9523f3a26c4522406e7, + limb1: 0x4584306f500dd9e1e2d2d48d, + limb2: 0xb055a962520cb1f324309fa4, + limb3: 0x20a832c9175b833fb6fd7ae }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x4f6faf7716dd4d56cdeabdf5, - limb1: 0x5d3bef725b405cf8e88a04ca, - limb2: 0x590314ec4e725e832be8a946, - limb3: 0xa57d233b0dc202c2a14b649 + limb0: 0x6eaa151e3b8d2e64c4de2177, + limb1: 0x3f0eb545ae76f970fc32926f, + limb2: 0xc7ce96bc2e044d0fb7fd1898, + limb3: 0xd2f4ade1293769747b44403 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0xf687f9d64b1cf62a966ccbee, - limb1: 0x638353d32913a355d84112cc, - limb2: 0xd3edcc632978139b403ab9f0, - limb3: 0x10be0de95c88a07cf95ab1ba + limb0: 0x38eea2adeb8b34e8af632a9e, + limb1: 0x173746c2e7ab6f266c362af2, + limb2: 0xeb264591fd645e3f8260621f, + limb3: 0x13b39c266454a8f28c2ff19a }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x6bfa0d62bfe9ee7912d086f5, - limb1: 0x82a1845db3d7ef17d5d66cb7, - limb2: 0xcf94cabf7a4e3bff6a64ad2, - limb3: 0x10f19d1cc739af313dea54b5 + limb0: 0x8c42a4da02de6fa3661504eb, + limb1: 0x3619403f77850cc8c1e62da, + limb2: 0xf2b11156a9afd4badcbd9de6, + limb3: 0x2cb21fddcab594bd74e08b2 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { - limb0: 0x8b2d55855e730cda4f792e7, - limb1: 0xe560d4f917a5b97d2eac3140, - limb2: 0xd2180093dac0682bea80aa2b, - limb3: 0x3c425ee703ba837622bd016 + limb0: 0xf2f1cc2c91912b38e54afeea, + limb1: 0x472df9847bc3f0b5b1d6777f, + limb2: 0xdce197bda62dc65f4c970379, + limb3: 0xb9c25432ad7dd02816fcabe }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, @@ -22552,3738 +22557,3738 @@ mod pairing_tests { let pair0: G1G2Pair = G1G2Pair { p: G1Point { x: u384 { - limb0: 0xd57f5c6faa6b7b91aee3d411, - limb1: 0xa3ca76748b7c9cac10144464, - limb2: 0x46dfa519e66746960ea2d222, - limb3: 0x7d776334825cc7b41610a45 + limb0: 0xe4f817e54aede0613c17035c, + limb1: 0xdff1f15010392a6da1f95a6, + limb2: 0xbed78d3d341e911d49f15454, + limb3: 0x18154782ce0913b21588066d }, y: u384 { - limb0: 0xbdea2cc87c7d8172962cabc3, - limb1: 0xefdd816d6c27c8582c99e293, - limb2: 0x7f7d62c357a17ef96e518b21, - limb3: 0xea903f281282aee9a39ebba + limb0: 0x3d77d61326ef5a9a5a681757, + limb1: 0xd3070afd4f0e121de7fcee60, + limb2: 0xdf9ef4088763fe611fb85858, + limb3: 0x11a612bdd0bc09562856a70 } }, q: G2Point { x0: u384 { - limb0: 0xce1c178f17c4edcdc1b8621a, - limb1: 0xf8d9ee912a70cc5eb32bde00, - limb2: 0x3c62799045dbc6079ad752b, - limb3: 0x15ef183119a6c96ffb87a23c + limb0: 0x30d2fddc2fa171cdd4d31a55, + limb1: 0x92fab4f255a20d09700542e5, + limb2: 0x4d92a8c02d22b8cea4ff21ab, + limb3: 0x120a838699abaae7ed948194 }, x1: u384 { - limb0: 0x30fb4cd9f33ef2f5d524d0a2, - limb1: 0x77c902c9b0d953efe4e470b1, - limb2: 0x1c132e7c2b8b1f3e6be2fb56, - limb3: 0x433fb93711c6e05ee997385 + limb0: 0x51cd5fdc71cf4557ef606935, + limb1: 0x92e1b13e2c93fc9957b17841, + limb2: 0x6143a906b63b7f3476ad6819, + limb3: 0x158186f6f2dd04cfa4e78547 }, y0: u384 { - limb0: 0xd7c589d352fa17cae59bfd97, - limb1: 0x56499ec187765b833d40063f, - limb2: 0x755412b531d477a7fe9b453b, - limb3: 0x110df890cda301440e69e58d + limb0: 0x9f1c7dcdbe4574f05d0c093b, + limb1: 0xcde395f3ee4e353cf25a2e21, + limb2: 0x6a44c4a6d642c3dd98128703, + limb3: 0x2bd32fdfe26d866771e2180 }, y1: u384 { - limb0: 0xb0328b81930386f66db05ee4, - limb1: 0xe5aab9ef8f982b82a7565c2b, - limb2: 0x916bbdddfd22de41445ba513, - limb3: 0x19b1edac961e1056b535db2f + limb0: 0x7060005397ea11f7e9a26050, + limb1: 0xeb8540654b533da9b594fc27, + limb2: 0xfc83cf9d283b7231df1db3f9, + limb3: 0x7ff9623d918ca12e0ff6cce } } }; let pair1: G1G2Pair = G1G2Pair { p: G1Point { x: u384 { - limb0: 0xd57f5c6faa6b7b91aee3d411, - limb1: 0xa3ca76748b7c9cac10144464, - limb2: 0x46dfa519e66746960ea2d222, - limb3: 0x7d776334825cc7b41610a45 + limb0: 0xe4f817e54aede0613c17035c, + limb1: 0xdff1f15010392a6da1f95a6, + limb2: 0xbed78d3d341e911d49f15454, + limb3: 0x18154782ce0913b21588066d }, y: u384 { - limb0: 0xbdea2cc87c7d8172962cabc3, - limb1: 0xefdd816d6c27c8582c99e293, - limb2: 0x7f7d62c357a17ef96e518b21, - limb3: 0xea903f281282aee9a39ebba + limb0: 0x3d77d61326ef5a9a5a681757, + limb1: 0xd3070afd4f0e121de7fcee60, + limb2: 0xdf9ef4088763fe611fb85858, + limb3: 0x11a612bdd0bc09562856a70 } }, q: G2Point { x0: u384 { - limb0: 0xce1c178f17c4edcdc1b8621a, - limb1: 0xf8d9ee912a70cc5eb32bde00, - limb2: 0x3c62799045dbc6079ad752b, - limb3: 0x15ef183119a6c96ffb87a23c + limb0: 0x30d2fddc2fa171cdd4d31a55, + limb1: 0x92fab4f255a20d09700542e5, + limb2: 0x4d92a8c02d22b8cea4ff21ab, + limb3: 0x120a838699abaae7ed948194 }, x1: u384 { - limb0: 0x30fb4cd9f33ef2f5d524d0a2, - limb1: 0x77c902c9b0d953efe4e470b1, - limb2: 0x1c132e7c2b8b1f3e6be2fb56, - limb3: 0x433fb93711c6e05ee997385 + limb0: 0x51cd5fdc71cf4557ef606935, + limb1: 0x92e1b13e2c93fc9957b17841, + limb2: 0x6143a906b63b7f3476ad6819, + limb3: 0x158186f6f2dd04cfa4e78547 }, y0: u384 { - limb0: 0xd7c589d352fa17cae59bfd97, - limb1: 0x56499ec187765b833d40063f, - limb2: 0x755412b531d477a7fe9b453b, - limb3: 0x110df890cda301440e69e58d + limb0: 0x9f1c7dcdbe4574f05d0c093b, + limb1: 0xcde395f3ee4e353cf25a2e21, + limb2: 0x6a44c4a6d642c3dd98128703, + limb3: 0x2bd32fdfe26d866771e2180 }, y1: u384 { - limb0: 0xb0328b81930386f66db05ee4, - limb1: 0xe5aab9ef8f982b82a7565c2b, - limb2: 0x916bbdddfd22de41445ba513, - limb3: 0x19b1edac961e1056b535db2f + limb0: 0x7060005397ea11f7e9a26050, + limb1: 0xeb8540654b533da9b594fc27, + limb2: 0xfc83cf9d283b7231df1db3f9, + limb3: 0x7ff9623d918ca12e0ff6cce } } }; let pair2: G1G2Pair = G1G2Pair { p: G1Point { x: u384 { - limb0: 0xd57f5c6faa6b7b91aee3d411, - limb1: 0xa3ca76748b7c9cac10144464, - limb2: 0x46dfa519e66746960ea2d222, - limb3: 0x7d776334825cc7b41610a45 + limb0: 0xe4f817e54aede0613c17035c, + limb1: 0xdff1f15010392a6da1f95a6, + limb2: 0xbed78d3d341e911d49f15454, + limb3: 0x18154782ce0913b21588066d }, y: u384 { - limb0: 0xbdea2cc87c7d8172962cabc3, - limb1: 0xefdd816d6c27c8582c99e293, - limb2: 0x7f7d62c357a17ef96e518b21, - limb3: 0xea903f281282aee9a39ebba + limb0: 0x3d77d61326ef5a9a5a681757, + limb1: 0xd3070afd4f0e121de7fcee60, + limb2: 0xdf9ef4088763fe611fb85858, + limb3: 0x11a612bdd0bc09562856a70 } }, q: G2Point { x0: u384 { - limb0: 0xce1c178f17c4edcdc1b8621a, - limb1: 0xf8d9ee912a70cc5eb32bde00, - limb2: 0x3c62799045dbc6079ad752b, - limb3: 0x15ef183119a6c96ffb87a23c + limb0: 0x30d2fddc2fa171cdd4d31a55, + limb1: 0x92fab4f255a20d09700542e5, + limb2: 0x4d92a8c02d22b8cea4ff21ab, + limb3: 0x120a838699abaae7ed948194 }, x1: u384 { - limb0: 0x30fb4cd9f33ef2f5d524d0a2, - limb1: 0x77c902c9b0d953efe4e470b1, - limb2: 0x1c132e7c2b8b1f3e6be2fb56, - limb3: 0x433fb93711c6e05ee997385 + limb0: 0x51cd5fdc71cf4557ef606935, + limb1: 0x92e1b13e2c93fc9957b17841, + limb2: 0x6143a906b63b7f3476ad6819, + limb3: 0x158186f6f2dd04cfa4e78547 }, y0: u384 { - limb0: 0xd7c589d352fa17cae59bfd97, - limb1: 0x56499ec187765b833d40063f, - limb2: 0x755412b531d477a7fe9b453b, - limb3: 0x110df890cda301440e69e58d + limb0: 0x9f1c7dcdbe4574f05d0c093b, + limb1: 0xcde395f3ee4e353cf25a2e21, + limb2: 0x6a44c4a6d642c3dd98128703, + limb3: 0x2bd32fdfe26d866771e2180 }, y1: u384 { - limb0: 0xb0328b81930386f66db05ee4, - limb1: 0xe5aab9ef8f982b82a7565c2b, - limb2: 0x916bbdddfd22de41445ba513, - limb3: 0x19b1edac961e1056b535db2f + limb0: 0x7060005397ea11f7e9a26050, + limb1: 0xeb8540654b533da9b594fc27, + limb2: 0xfc83cf9d283b7231df1db3f9, + limb3: 0x7ff9623d918ca12e0ff6cce } } }; let precomputed_miller_loop_result = E12D { w0: u384 { - limb0: 0xeba179f6752ae3487c17fe76, - limb1: 0x427aec34941cd762dee8ee2a, - limb2: 0x51d1e6cd2edf652154ab0bbf, - limb3: 0x17ed9eba9a4d94f7f71a6437 + limb0: 0xb911c83d732e7d278eca2b2, + limb1: 0x371bde647281b4f0753c7b54, + limb2: 0x32f3136b6412048dad82afcf, + limb3: 0x276d8a09b1ef471d61e1fe9 }, w1: u384 { - limb0: 0x21276fe4e9ed01c1bf9def83, - limb1: 0x1c1c21947a6b1861ab29cfb7, - limb2: 0xc09f19e0dcf0a8c4067d7f0a, - limb3: 0x59099d73255b322a9ccc08f + limb0: 0x2d08819331e98c628ad7e6a4, + limb1: 0xf78975823557a6eaed403568, + limb2: 0xd357bcaa08f3bcf837b69302, + limb3: 0x84dc8eb534426c70fdeb97a }, w2: u384 { - limb0: 0xdcae6cab9d20983a14070473, - limb1: 0xd2677838cd383457e3c327b2, - limb2: 0xcb60f4d3a8efaa2b13a54f70, - limb3: 0x1aa1ffc5fc03133f1d4468e + limb0: 0xd8ab7356837a3539e775e8a4, + limb1: 0xeac85ffce2bc7b2518fb953c, + limb2: 0xdb2e7f9897c5d9aac15601e7, + limb3: 0xad1ecf602d65fe881eaa6e0 }, w3: u384 { - limb0: 0x342824953c81273eb5efe0cb, - limb1: 0xb8bbf34446e5778af563d217, - limb2: 0x8eafa818fa361b808e0a3749, - limb3: 0x6085fb1d382b7981155a5df + limb0: 0xb4bbd298bab0e4881a5ebb34, + limb1: 0x14d8b2b539c52b38e862bb30, + limb2: 0xc1ba1386389c858a2803bf51, + limb3: 0xc44713fa939be012d57473a }, w4: u384 { - limb0: 0x4598d7bf01cf2577d6a17027, - limb1: 0x1836ed0dcd8770b4fc432207, - limb2: 0x9bb255b0f194561312478230, - limb3: 0x409e29b415beaf21190ceb + limb0: 0x8c8a60ac405578242750266c, + limb1: 0x1f6ed0fc4768c4d33ae5bde9, + limb2: 0x74356664cf5f284c5d9047dd, + limb3: 0x17d27924032bad1b96b038a7 }, w5: u384 { - limb0: 0x85c822d102f0824243736405, - limb1: 0x6a3cb76f73600ac10e64d3d2, - limb2: 0x9034d3217a6228d940e64c2a, - limb3: 0xe6215bcbe003cd569056526 + limb0: 0xdca890b5c14238be57f05981, + limb1: 0x5d5411099e394511d4bf5f21, + limb2: 0x529d5c8a74ead9d439593056, + limb3: 0x252d46d43966352b46ef871 }, w6: u384 { - limb0: 0x3c312210efff02972467048d, - limb1: 0x935c00f1d99971416822e056, - limb2: 0xb6d8972fc98a2ad8d37d7f9e, - limb3: 0x1c6de96a83a169d28a8347a + limb0: 0x1e65e90c6094915aaef973cd, + limb1: 0x606ac452167328657347b203, + limb2: 0x6198bb2924ef03ae600f7222, + limb3: 0xdb2280eeda7144c402dfe7f }, w7: u384 { - limb0: 0x951644b420bf60f1dfb2444e, - limb1: 0xdf5ada21ef332fce2b2acbe7, - limb2: 0xfa3265de90109d3e5fc23cb0, - limb3: 0x23d82b793bb667b8f107a38 + limb0: 0x71c5034bc18b6d1c45a03c30, + limb1: 0x31f94b4bb159c235c039f752, + limb2: 0xdf1e1ed1387d8c002c5f3a20, + limb3: 0x190ab4a19e1f1b981b892bae }, w8: u384 { - limb0: 0x7067345b0210197d147404c1, - limb1: 0x37f0345731cf9f11b206da9, - limb2: 0x11bc44715f487dccb654dd4c, - limb3: 0x4b9ad2616f6468afb6a163c + limb0: 0xf00e883b8262021a004b9fc8, + limb1: 0x369f48c0083f000e7eeec362, + limb2: 0x9170f7ea386763607860320a, + limb3: 0x16e03a19b04611cdff78c5fd }, w9: u384 { - limb0: 0xb461e5bcefe27a7915f41c5f, - limb1: 0xb336212f6d495ef23b207b21, - limb2: 0x478c0292c1e8dbc667ab0a05, - limb3: 0x111b6b81d96f2a123a0bb978 + limb0: 0xf3b76b5dfdcf84760b96fa0c, + limb1: 0x4ba7b263cc869557904c59cf, + limb2: 0xbed73f63ea723c5eca33d491, + limb3: 0x128d8d88c3c8616ff326a554 }, w10: u384 { - limb0: 0xdff51429d74fe16928334b52, - limb1: 0xecbd39755999046174ca9a41, - limb2: 0x243213049a3d0be5dda52911, - limb3: 0x17459f7bfe5f54bc7458ec42 + limb0: 0x4380616825a3a723a4dc2b5c, + limb1: 0x712262fd5e7ddfa653a4708e, + limb2: 0x303031f5c1bf5e2f73d4750a, + limb3: 0x36d2ef1d9b923357234e298 }, w11: u384 { - limb0: 0xc9bc7c8a895d362344b483ba, - limb1: 0xda77bd46afceb7bf63b08d02, - limb2: 0x9441e0596c0ed5fcc32c5628, - limb3: 0x1043b4482a7b8e8f625e6e8a + limb0: 0xbe53e886831d35b55f343069, + limb1: 0x34b2a5b11f48e46a872245a2, + limb2: 0x6afab08a2bc52479f09c105f, + limb3: 0x329f18e7852fa05613e9204 } }; let lines = array![ G2Line { r0a0: u384 { - limb0: 0x7838d88fb10582ae234dbf82, - limb1: 0x2afe4e1ed10275812604bad0, - limb2: 0x706ec7cfd05644bc0b36e9ed, - limb3: 0x25d2b4a340b1cdd42ca9bdb + limb0: 0xa5165654d48ad38da89955b2, + limb1: 0x36388a52d2379c53735285c1, + limb2: 0xb1cba90b5a7d592a905913f6, + limb3: 0xf04eef4de6a895d29865a33 }, r0a1: u384 { - limb0: 0x55eb081fd9b9ac6777197ec5, - limb1: 0x362786a12556753f404477ab, - limb2: 0xe2bedaeba74904cc08e2f33a, - limb3: 0x1596b1c5aa61ce00a5f497aa + limb0: 0x11170525e014139da401da13, + limb1: 0xdfc4d38dc6621f61b8834990, + limb2: 0xb86906ab9966ab43169ba396, + limb3: 0x104b8a575e67290a4d8e5d0 }, r1a0: u384 { - limb0: 0xf4501577c9d50d745b7e57ba, - limb1: 0x3123adc07593daff2ccf1113, - limb2: 0x794ea9569cc5b8e18440540f, - limb3: 0x6d3881ec00e712803b5a831 + limb0: 0x2fddaa92e366f11a886242bb, + limb1: 0xf7255a5c3e06de681d21207f, + limb2: 0x544afd5f8c149ed0980ad33f, + limb3: 0x18ff3a5ad5398470eec050cd }, r1a1: u384 { - limb0: 0x8d6d8e0b27870d1bd6e79b5c, - limb1: 0x8de9308eadbadd3b4cee8a8d, - limb2: 0x5617ec9fc88e5037e43289a1, - limb3: 0x5d253cd3aadabdcf510e0c9 + limb0: 0x5ebc8ff3cef71a1b2b0ce5d9, + limb1: 0xf4093ee74d1a5714b4562355, + limb2: 0xe6d400f1614d23e5b0b3831f, + limb3: 0x4e3cba1ec100020f137797e } }, G2Line { r0a0: u384 { - limb0: 0x7e9763d47e79d435cd0a23ba, - limb1: 0x96a761a8fdfa6d1c741c04ba, - limb2: 0x3f245e8ebff4d912c0febd69, - limb3: 0x160a2f414fb7c2651868de9f + limb0: 0xcf94aa0961ba244fb7b34f8, + limb1: 0x9eedbbaadfb34c820b7b9046, + limb2: 0xdfdb0674b62b2c9622a321e9, + limb3: 0x18745455fc3b957175dbaaab }, r0a1: u384 { - limb0: 0xc38b3ab9f3dfab7faaf80b40, - limb1: 0xad49ed09ed3933f1e51c4349, - limb2: 0xd24b15e4f30096ed0a1459b0, - limb3: 0x16aef89ba35c4cb502e034a1 + limb0: 0xb18b9b496c7e76d19d0476a3, + limb1: 0x532e40e737e71a727e36699d, + limb2: 0x1173a4db0c906464c9c6dfe5, + limb3: 0x14436970af87927ca25ab397 }, r1a0: u384 { - limb0: 0x9d609046fb4d3bf09acf9613, - limb1: 0xe3f2b35132bcc4e3c12bb7b3, - limb2: 0x951d270ce6419c40be4cbff8, - limb3: 0x1241c70f365975bd0b057ce9 + limb0: 0x2b8bedf7ace9601914137555, + limb1: 0x8e5a6616ba6b5a7c0a4b60cc, + limb2: 0xeed2fb7a6b6951d08720afd2, + limb3: 0x6e20b841803b78a54cb51f0 }, r1a1: u384 { - limb0: 0x358a2dd384946e0ca093a11a, - limb1: 0xce16eeafe5e59e8495f9bcf2, - limb2: 0x47b5514a2edfad2fd965ebd5, - limb3: 0x59d46bccc9fb91ffee76168 + limb0: 0xe2f3cc1d38637307df479c33, + limb1: 0x553fbfecff64b0f8513ea53, + limb2: 0xc35e934c2f0dd0dfc36fb764, + limb3: 0xfe253f73265563f5da37bf0 } }, G2Line { r0a0: u384 { - limb0: 0x7838d88fb10582ae234dbf82, - limb1: 0x2afe4e1ed10275812604bad0, - limb2: 0x706ec7cfd05644bc0b36e9ed, - limb3: 0x25d2b4a340b1cdd42ca9bdb + limb0: 0xa5165654d48ad38da89955b2, + limb1: 0x36388a52d2379c53735285c1, + limb2: 0xb1cba90b5a7d592a905913f6, + limb3: 0xf04eef4de6a895d29865a33 }, r0a1: u384 { - limb0: 0x55eb081fd9b9ac6777197ec5, - limb1: 0x362786a12556753f404477ab, - limb2: 0xe2bedaeba74904cc08e2f33a, - limb3: 0x1596b1c5aa61ce00a5f497aa + limb0: 0x11170525e014139da401da13, + limb1: 0xdfc4d38dc6621f61b8834990, + limb2: 0xb86906ab9966ab43169ba396, + limb3: 0x104b8a575e67290a4d8e5d0 }, r1a0: u384 { - limb0: 0xf4501577c9d50d745b7e57ba, - limb1: 0x3123adc07593daff2ccf1113, - limb2: 0x794ea9569cc5b8e18440540f, - limb3: 0x6d3881ec00e712803b5a831 + limb0: 0x2fddaa92e366f11a886242bb, + limb1: 0xf7255a5c3e06de681d21207f, + limb2: 0x544afd5f8c149ed0980ad33f, + limb3: 0x18ff3a5ad5398470eec050cd }, r1a1: u384 { - limb0: 0x8d6d8e0b27870d1bd6e79b5c, - limb1: 0x8de9308eadbadd3b4cee8a8d, - limb2: 0x5617ec9fc88e5037e43289a1, - limb3: 0x5d253cd3aadabdcf510e0c9 + limb0: 0x5ebc8ff3cef71a1b2b0ce5d9, + limb1: 0xf4093ee74d1a5714b4562355, + limb2: 0xe6d400f1614d23e5b0b3831f, + limb3: 0x4e3cba1ec100020f137797e } }, G2Line { r0a0: u384 { - limb0: 0x7e9763d47e79d435cd0a23ba, - limb1: 0x96a761a8fdfa6d1c741c04ba, - limb2: 0x3f245e8ebff4d912c0febd69, - limb3: 0x160a2f414fb7c2651868de9f + limb0: 0xcf94aa0961ba244fb7b34f8, + limb1: 0x9eedbbaadfb34c820b7b9046, + limb2: 0xdfdb0674b62b2c9622a321e9, + limb3: 0x18745455fc3b957175dbaaab }, r0a1: u384 { - limb0: 0xc38b3ab9f3dfab7faaf80b40, - limb1: 0xad49ed09ed3933f1e51c4349, - limb2: 0xd24b15e4f30096ed0a1459b0, - limb3: 0x16aef89ba35c4cb502e034a1 + limb0: 0xb18b9b496c7e76d19d0476a3, + limb1: 0x532e40e737e71a727e36699d, + limb2: 0x1173a4db0c906464c9c6dfe5, + limb3: 0x14436970af87927ca25ab397 }, r1a0: u384 { - limb0: 0x9d609046fb4d3bf09acf9613, - limb1: 0xe3f2b35132bcc4e3c12bb7b3, - limb2: 0x951d270ce6419c40be4cbff8, - limb3: 0x1241c70f365975bd0b057ce9 + limb0: 0x2b8bedf7ace9601914137555, + limb1: 0x8e5a6616ba6b5a7c0a4b60cc, + limb2: 0xeed2fb7a6b6951d08720afd2, + limb3: 0x6e20b841803b78a54cb51f0 }, r1a1: u384 { - limb0: 0x358a2dd384946e0ca093a11a, - limb1: 0xce16eeafe5e59e8495f9bcf2, - limb2: 0x47b5514a2edfad2fd965ebd5, - limb3: 0x59d46bccc9fb91ffee76168 + limb0: 0xe2f3cc1d38637307df479c33, + limb1: 0x553fbfecff64b0f8513ea53, + limb2: 0xc35e934c2f0dd0dfc36fb764, + limb3: 0xfe253f73265563f5da37bf0 } }, G2Line { r0a0: u384 { - limb0: 0x71c338bbe6749f3a0c794e3b, - limb1: 0xd60036ee7e00e1bc1daaa28c, - limb2: 0x80c9c29a1c9cd39071a76a73, - limb3: 0x1691a74f3c611d47565bab81 + limb0: 0xf63d5adf98504eb919404838, + limb1: 0x322c7fec39e0dbb7e3fab671, + limb2: 0x66a7d9554b938f680e363589, + limb3: 0x168b865e60bf25b5f80efdba }, r0a1: u384 { - limb0: 0x3739ddaa1c4ac1cd71676f44, - limb1: 0x6cdae549a2e3b9e74bed6617, - limb2: 0x6d82ae923a587e458bf9e071, - limb3: 0x5bd8b1ae5478de8f7960475 + limb0: 0xa19475051f484344fbfcb94, + limb1: 0xecab432b31e20fd481ef1641, + limb2: 0x9aef0e4871833b8e86498442, + limb3: 0xbfbebd5fe20e6b34cd10d52 }, r1a0: u384 { - limb0: 0xe7b8e10907491c1b869cc6e6, - limb1: 0x8cfdeb806efb1538850097ce, - limb2: 0xe136cf799d4ca7d8af88b264, - limb3: 0xe94a1681636bf224e4b0691 + limb0: 0x3034c4ead4a9ecca97ef227f, + limb1: 0x3ff722abdd9b1b4fb2ed76a2, + limb2: 0x89478f4e3e947df714a9fb5e, + limb3: 0xf7d15d762bc99988f9d789d }, r1a1: u384 { - limb0: 0x94edd8ecaa284e2f201cb0bc, - limb1: 0xbb7214e0be5dffb26b5f4617, - limb2: 0x7b7c3d57928d6320156e0c9b, - limb3: 0xf0d3839b029f06faa43502f + limb0: 0xe7309c91453760cefb576bc9, + limb1: 0xc04e0c62e92a4efd0f9d9c3b, + limb2: 0xada0f0a505209353f4b17f24, + limb3: 0x185b2e9615659da43b50282e } }, G2Line { r0a0: u384 { - limb0: 0x71c338bbe6749f3a0c794e3b, - limb1: 0xd60036ee7e00e1bc1daaa28c, - limb2: 0x80c9c29a1c9cd39071a76a73, - limb3: 0x1691a74f3c611d47565bab81 + limb0: 0xf63d5adf98504eb919404838, + limb1: 0x322c7fec39e0dbb7e3fab671, + limb2: 0x66a7d9554b938f680e363589, + limb3: 0x168b865e60bf25b5f80efdba }, r0a1: u384 { - limb0: 0x3739ddaa1c4ac1cd71676f44, - limb1: 0x6cdae549a2e3b9e74bed6617, - limb2: 0x6d82ae923a587e458bf9e071, - limb3: 0x5bd8b1ae5478de8f7960475 + limb0: 0xa19475051f484344fbfcb94, + limb1: 0xecab432b31e20fd481ef1641, + limb2: 0x9aef0e4871833b8e86498442, + limb3: 0xbfbebd5fe20e6b34cd10d52 }, r1a0: u384 { - limb0: 0xe7b8e10907491c1b869cc6e6, - limb1: 0x8cfdeb806efb1538850097ce, - limb2: 0xe136cf799d4ca7d8af88b264, - limb3: 0xe94a1681636bf224e4b0691 + limb0: 0x3034c4ead4a9ecca97ef227f, + limb1: 0x3ff722abdd9b1b4fb2ed76a2, + limb2: 0x89478f4e3e947df714a9fb5e, + limb3: 0xf7d15d762bc99988f9d789d }, r1a1: u384 { - limb0: 0x94edd8ecaa284e2f201cb0bc, - limb1: 0xbb7214e0be5dffb26b5f4617, - limb2: 0x7b7c3d57928d6320156e0c9b, - limb3: 0xf0d3839b029f06faa43502f + limb0: 0xe7309c91453760cefb576bc9, + limb1: 0xc04e0c62e92a4efd0f9d9c3b, + limb2: 0xada0f0a505209353f4b17f24, + limb3: 0x185b2e9615659da43b50282e } }, G2Line { r0a0: u384 { - limb0: 0x6d43e7332bbfcfbee5c5376b, - limb1: 0x27ece7bba37027f5999add07, - limb2: 0x637dbf333584164a23c17169, - limb3: 0x12d4b80150a8a22e6952e448 + limb0: 0xacd0c846fbba57a06a86174d, + limb1: 0xb3559bb08ff796c300ff2163, + limb2: 0xb7ebbcfa41b1f30d02874a61, + limb3: 0x7a87f7612c63af0969932c }, r0a1: u384 { - limb0: 0x8e441a0dbb6a62694a2a3c4a, - limb1: 0xa74e3e1a07fd41d9e61bab3a, - limb2: 0x93f13250db97416e49b7a2b8, - limb3: 0xae73a13b05f49355e20cbfc + limb0: 0xd4f55c22c625dddb92b73bd7, + limb1: 0x681facc4bfa2b130fcf3dacd, + limb2: 0x3bd92d164662bbb7f99c1b5a, + limb3: 0x12ac7263968961adecde567f }, r1a0: u384 { - limb0: 0xaab4ddae0158677b87dcf85f, - limb1: 0x862ff02ea5df2c83154f9bf4, - limb2: 0xbd8d14a20d5450f579b18a5d, - limb3: 0x19d88287fa3718efba69753c + limb0: 0x81f5ef562d3dfd1fe4780fbf, + limb1: 0xcb396419628f7f02f0f0e2f8, + limb2: 0x3012e01dd8fc025163ad5e2a, + limb3: 0x1c053f246178e26fa6d3dea }, r1a1: u384 { - limb0: 0x6228ef66253437223d061818, - limb1: 0x149a7b06d4f6e82c5f61bea6, - limb2: 0x26a9e0795c834bc8a7692d62, - limb3: 0x6c65186880284d32688774b + limb0: 0xc81f62215d8116e0b580ac54, + limb1: 0xef2e48f58ffbbafac5b2b827, + limb2: 0xe22598ad9700d53d0ab24440, + limb3: 0xeec459ce4be55ed92aa3f08 } }, G2Line { r0a0: u384 { - limb0: 0x9ac2c4e82f76005ac86b6a68, - limb1: 0x825b11a2fb75fa3393d592d2, - limb2: 0x8a51f027e8af5ddcc56634ca, - limb3: 0x455fd4d8092e90871498047 + limb0: 0x628192ce61515a10db139388, + limb1: 0xdf2fbc87bd9658e30ab5ca96, + limb2: 0x81420786279bf4a2c17ecbee, + limb3: 0x7cd8317980fac457217aa73 }, r0a1: u384 { - limb0: 0x74a9d748f6e18dbd47946fd3, - limb1: 0x589f7136b41d11506b1f4b16, - limb2: 0x637f5fc297c98105f3250b10, - limb3: 0xc00b94290db7d57cf174d26 + limb0: 0xad2f18fc2c832eedc6828d6a, + limb1: 0x2c62b1d26ffe93fb41fbf6a6, + limb2: 0x54a6928b6b6cb48d95627389, + limb3: 0x155b45f029858968773bd77a }, r1a0: u384 { - limb0: 0x539e910889e8369e1adab904, - limb1: 0x8ae0cb6a75d0421b50aca3b6, - limb2: 0x692425462875faf0b951065c, - limb3: 0xb07166a05f0c152c3d18c17 + limb0: 0x3a4649b4ea519194273b8413, + limb1: 0x39ed13d914c220a2a8621253, + limb2: 0xb2c2fe85ccf72ab37ef6d3e8, + limb3: 0x2f73caef28adb638d772f51 }, r1a1: u384 { - limb0: 0x4f5e1191e124da74ea971656, - limb1: 0x9ce7cd48b4ac295efb2a8f7f, - limb2: 0x93bee1ccd612f2928289c907, - limb3: 0x181bf3fba2f28016281ab009 + limb0: 0x9a5228bb86ec7a83fc86d719, + limb1: 0x7b209838f6c5a27f3b13850e, + limb2: 0x2f682efc7c8f9d868bb155a0, + limb3: 0x14e1ffb93bd477d5824891f6 } }, G2Line { r0a0: u384 { - limb0: 0x6d43e7332bbfcfbee5c5376b, - limb1: 0x27ece7bba37027f5999add07, - limb2: 0x637dbf333584164a23c17169, - limb3: 0x12d4b80150a8a22e6952e448 + limb0: 0xacd0c846fbba57a06a86174d, + limb1: 0xb3559bb08ff796c300ff2163, + limb2: 0xb7ebbcfa41b1f30d02874a61, + limb3: 0x7a87f7612c63af0969932c }, r0a1: u384 { - limb0: 0x8e441a0dbb6a62694a2a3c4a, - limb1: 0xa74e3e1a07fd41d9e61bab3a, - limb2: 0x93f13250db97416e49b7a2b8, - limb3: 0xae73a13b05f49355e20cbfc + limb0: 0xd4f55c22c625dddb92b73bd7, + limb1: 0x681facc4bfa2b130fcf3dacd, + limb2: 0x3bd92d164662bbb7f99c1b5a, + limb3: 0x12ac7263968961adecde567f }, r1a0: u384 { - limb0: 0xaab4ddae0158677b87dcf85f, - limb1: 0x862ff02ea5df2c83154f9bf4, - limb2: 0xbd8d14a20d5450f579b18a5d, - limb3: 0x19d88287fa3718efba69753c + limb0: 0x81f5ef562d3dfd1fe4780fbf, + limb1: 0xcb396419628f7f02f0f0e2f8, + limb2: 0x3012e01dd8fc025163ad5e2a, + limb3: 0x1c053f246178e26fa6d3dea }, r1a1: u384 { - limb0: 0x6228ef66253437223d061818, - limb1: 0x149a7b06d4f6e82c5f61bea6, - limb2: 0x26a9e0795c834bc8a7692d62, - limb3: 0x6c65186880284d32688774b + limb0: 0xc81f62215d8116e0b580ac54, + limb1: 0xef2e48f58ffbbafac5b2b827, + limb2: 0xe22598ad9700d53d0ab24440, + limb3: 0xeec459ce4be55ed92aa3f08 } }, G2Line { r0a0: u384 { - limb0: 0x9ac2c4e82f76005ac86b6a68, - limb1: 0x825b11a2fb75fa3393d592d2, - limb2: 0x8a51f027e8af5ddcc56634ca, - limb3: 0x455fd4d8092e90871498047 + limb0: 0x628192ce61515a10db139388, + limb1: 0xdf2fbc87bd9658e30ab5ca96, + limb2: 0x81420786279bf4a2c17ecbee, + limb3: 0x7cd8317980fac457217aa73 }, r0a1: u384 { - limb0: 0x74a9d748f6e18dbd47946fd3, - limb1: 0x589f7136b41d11506b1f4b16, - limb2: 0x637f5fc297c98105f3250b10, - limb3: 0xc00b94290db7d57cf174d26 + limb0: 0xad2f18fc2c832eedc6828d6a, + limb1: 0x2c62b1d26ffe93fb41fbf6a6, + limb2: 0x54a6928b6b6cb48d95627389, + limb3: 0x155b45f029858968773bd77a }, r1a0: u384 { - limb0: 0x539e910889e8369e1adab904, - limb1: 0x8ae0cb6a75d0421b50aca3b6, - limb2: 0x692425462875faf0b951065c, - limb3: 0xb07166a05f0c152c3d18c17 + limb0: 0x3a4649b4ea519194273b8413, + limb1: 0x39ed13d914c220a2a8621253, + limb2: 0xb2c2fe85ccf72ab37ef6d3e8, + limb3: 0x2f73caef28adb638d772f51 }, r1a1: u384 { - limb0: 0x4f5e1191e124da74ea971656, - limb1: 0x9ce7cd48b4ac295efb2a8f7f, - limb2: 0x93bee1ccd612f2928289c907, - limb3: 0x181bf3fba2f28016281ab009 + limb0: 0x9a5228bb86ec7a83fc86d719, + limb1: 0x7b209838f6c5a27f3b13850e, + limb2: 0x2f682efc7c8f9d868bb155a0, + limb3: 0x14e1ffb93bd477d5824891f6 } }, G2Line { r0a0: u384 { - limb0: 0xa3b7f1aeca1eb8e5228cfe24, - limb1: 0xb1d4870d2df3e7f8c0303e0, - limb2: 0x7d2d13fd39dfa6b49cf34444, - limb3: 0x18dda000c5ebc56872662b94 + limb0: 0x1aade009b16b47d1f727828e, + limb1: 0xc03ad66ffa3eb3facb3162dd, + limb2: 0x89fc57933c577fcb302abd31, + limb3: 0x14a7ae423327b8eb4258ddc7 }, r0a1: u384 { - limb0: 0x88fa6eead0de120bd40926d, - limb1: 0xd52110c4f01d3301401bbcdd, - limb2: 0xc6fd2d571c66836ac2991d93, - limb3: 0x16a57592a40c4539c5942b30 + limb0: 0xb11c5c536b7a01248a05036e, + limb1: 0x4b63f65385cbfd77dd0c6b99, + limb2: 0xfc1bd30c87ae38746b0ea7ed, + limb3: 0xb343c5f6d66a234c16e751f }, r1a0: u384 { - limb0: 0xfac7483d9aeb80ccaedfb58a, - limb1: 0xa65ec1711b36c95437152f5a, - limb2: 0x5a07debf96bee8e47e1faec5, - limb3: 0x14268c14cf7097633798f51f + limb0: 0xbfc9b6d848bfcfc1500c9e92, + limb1: 0xe6aca7c5d29a818829b8fcd6, + limb2: 0xf14399d2c3b586fa7369ef82, + limb3: 0x16fe63f10adc6d94ef6ac666 }, r1a1: u384 { - limb0: 0x3755f3f5cfe715f9099ef4e1, - limb1: 0x95a84557becbe80f27b9c186, - limb2: 0xd9b09f3fb00efd37867d67f7, - limb3: 0x8245d6085830e3afa2755ad + limb0: 0x788c4a6c2cc0d6d1431f8fe0, + limb1: 0x6fbb017725bc437f59472864, + limb2: 0x7af112586422e8b451fff86f, + limb3: 0x8f33c7c0369d6bf05923ec6 } }, G2Line { r0a0: u384 { - limb0: 0xa3b7f1aeca1eb8e5228cfe24, - limb1: 0xb1d4870d2df3e7f8c0303e0, - limb2: 0x7d2d13fd39dfa6b49cf34444, - limb3: 0x18dda000c5ebc56872662b94 + limb0: 0x1aade009b16b47d1f727828e, + limb1: 0xc03ad66ffa3eb3facb3162dd, + limb2: 0x89fc57933c577fcb302abd31, + limb3: 0x14a7ae423327b8eb4258ddc7 }, r0a1: u384 { - limb0: 0x88fa6eead0de120bd40926d, - limb1: 0xd52110c4f01d3301401bbcdd, - limb2: 0xc6fd2d571c66836ac2991d93, - limb3: 0x16a57592a40c4539c5942b30 + limb0: 0xb11c5c536b7a01248a05036e, + limb1: 0x4b63f65385cbfd77dd0c6b99, + limb2: 0xfc1bd30c87ae38746b0ea7ed, + limb3: 0xb343c5f6d66a234c16e751f }, r1a0: u384 { - limb0: 0xfac7483d9aeb80ccaedfb58a, - limb1: 0xa65ec1711b36c95437152f5a, - limb2: 0x5a07debf96bee8e47e1faec5, - limb3: 0x14268c14cf7097633798f51f + limb0: 0xbfc9b6d848bfcfc1500c9e92, + limb1: 0xe6aca7c5d29a818829b8fcd6, + limb2: 0xf14399d2c3b586fa7369ef82, + limb3: 0x16fe63f10adc6d94ef6ac666 }, r1a1: u384 { - limb0: 0x3755f3f5cfe715f9099ef4e1, - limb1: 0x95a84557becbe80f27b9c186, - limb2: 0xd9b09f3fb00efd37867d67f7, - limb3: 0x8245d6085830e3afa2755ad + limb0: 0x788c4a6c2cc0d6d1431f8fe0, + limb1: 0x6fbb017725bc437f59472864, + limb2: 0x7af112586422e8b451fff86f, + limb3: 0x8f33c7c0369d6bf05923ec6 } }, G2Line { r0a0: u384 { - limb0: 0x8d00e16d9be63918c1397e81, - limb1: 0x81930ed4b260df3d51c15b5f, - limb2: 0xc235a3a7ababa1cec1b44cdb, - limb3: 0x15142167355366c0554c8cf7 + limb0: 0xc8e72714e847363877b7a8f7, + limb1: 0xe3e3fa798cae86df2a30d4aa, + limb2: 0x7459f8d7d611e2cb2ec54a0e, + limb3: 0x152cd68e17604069ec445769 }, r0a1: u384 { - limb0: 0x834eef21abff8fe5037b5263, - limb1: 0xb8222b6ba8925f62798307b3, - limb2: 0x1936ba42cf07ce260ba0a1d9, - limb3: 0x13f7a4840980f7a08d2a7f3a + limb0: 0x8314b69d7f735267593148b, + limb1: 0xee63002a2560cba68706d4d8, + limb2: 0xfaa3112fa6d55883c688d4cb, + limb3: 0x14bb5f09c9b3530802a1e99f }, r1a0: u384 { - limb0: 0xd543f562663b71bee0995f4d, - limb1: 0x3cd18e9c3fec928aea1d2d36, - limb2: 0x6fc20bec1d1011db93edcc23, - limb3: 0x15a907e20aa728dc6947dff4 + limb0: 0x5f0624eb82fb7ea0161d7d4f, + limb1: 0xd71eb5753a71df931abdea02, + limb2: 0x7e9d29717cc3a362d2351d9a, + limb3: 0x10bb67b2ea7e11fa4f644370 }, r1a1: u384 { - limb0: 0xbe1e8374e98f2267ca36c49e, - limb1: 0xdebc0cb3b1ad1c03950d61ad, - limb2: 0xfb0533728087596ad45c6500, - limb3: 0x2c45dad6f7a7e061c0a2692 + limb0: 0xca7b1c09d30828e75c7c7281, + limb1: 0x5c8c1483d8402202dd0de198, + limb2: 0x2228fda9f92014d9870c7f11, + limb3: 0x6e2f5953b1cc17a41a0cf1b } }, G2Line { r0a0: u384 { - limb0: 0x8d00e16d9be63918c1397e81, - limb1: 0x81930ed4b260df3d51c15b5f, - limb2: 0xc235a3a7ababa1cec1b44cdb, - limb3: 0x15142167355366c0554c8cf7 + limb0: 0xc8e72714e847363877b7a8f7, + limb1: 0xe3e3fa798cae86df2a30d4aa, + limb2: 0x7459f8d7d611e2cb2ec54a0e, + limb3: 0x152cd68e17604069ec445769 }, r0a1: u384 { - limb0: 0x834eef21abff8fe5037b5263, - limb1: 0xb8222b6ba8925f62798307b3, - limb2: 0x1936ba42cf07ce260ba0a1d9, - limb3: 0x13f7a4840980f7a08d2a7f3a + limb0: 0x8314b69d7f735267593148b, + limb1: 0xee63002a2560cba68706d4d8, + limb2: 0xfaa3112fa6d55883c688d4cb, + limb3: 0x14bb5f09c9b3530802a1e99f }, r1a0: u384 { - limb0: 0xd543f562663b71bee0995f4d, - limb1: 0x3cd18e9c3fec928aea1d2d36, - limb2: 0x6fc20bec1d1011db93edcc23, - limb3: 0x15a907e20aa728dc6947dff4 + limb0: 0x5f0624eb82fb7ea0161d7d4f, + limb1: 0xd71eb5753a71df931abdea02, + limb2: 0x7e9d29717cc3a362d2351d9a, + limb3: 0x10bb67b2ea7e11fa4f644370 }, r1a1: u384 { - limb0: 0xbe1e8374e98f2267ca36c49e, - limb1: 0xdebc0cb3b1ad1c03950d61ad, - limb2: 0xfb0533728087596ad45c6500, - limb3: 0x2c45dad6f7a7e061c0a2692 + limb0: 0xca7b1c09d30828e75c7c7281, + limb1: 0x5c8c1483d8402202dd0de198, + limb2: 0x2228fda9f92014d9870c7f11, + limb3: 0x6e2f5953b1cc17a41a0cf1b } }, G2Line { r0a0: u384 { - limb0: 0xa0c014a08ac1d2a306211d8b, - limb1: 0xa33fa10d6f5ba13228ba7304, - limb2: 0x749d962ecb642d3f58639a49, - limb3: 0x174a313218725a0cc75ee281 + limb0: 0xc9b70b573ab2dbee53352a96, + limb1: 0xcc8c7eca86c99d50d3e90936, + limb2: 0x7d70aa72c271b1f8c15ad43e, + limb3: 0xe499ea04ed9644c9f31ff2c }, r0a1: u384 { - limb0: 0x6bc80233768f9e8ebdc0686, - limb1: 0xca18f802757f90d4eacce988, - limb2: 0x9224a07c14269b98055ee478, - limb3: 0x16eaa4fc6c991cd485e078ea + limb0: 0xa0f9073cb60f9d948336700a, + limb1: 0xbcba195f8a338d4cfe326b7d, + limb2: 0x830451f120569c1ba8a262fc, + limb3: 0x7d35ad7c0095f289f76c6bd }, r1a0: u384 { - limb0: 0xf69ec877d896ca7704fbed49, - limb1: 0xf340e7b5e58946b82f5682a2, - limb2: 0x3923d14a3994f5dc5bd94570, - limb3: 0x15e555c716f95e605a7febe6 + limb0: 0x6ef4a7e1adac7589cf5b1154, + limb1: 0xaca7ecc39f53183948238de2, + limb2: 0x7b65183abb9d2d0be2a6d539, + limb3: 0x63e7285b3dc806c2788d0e8 }, r1a1: u384 { - limb0: 0xcdfa8542620253c16455772, - limb1: 0x7d98932fff862d2c2a295dcc, - limb2: 0xfce18ccaa051eee0521d1bd2, - limb3: 0xb407ab9ff872d66432c3b5b + limb0: 0x263affe0370ee6f1853c2fb0, + limb1: 0xc73621e485f5fef86ded3d9, + limb2: 0x4a9c22bbb63a9b67c98dc2df, + limb3: 0x10a59819d699abac0f845268 } }, G2Line { r0a0: u384 { - limb0: 0x584ae3d80ee825e67b6fd8f9, - limb1: 0x72e42a443795e04ce800bea, - limb2: 0xa208fe6299541f4504c15e1d, - limb3: 0x10f4319457ac58835a0050cc + limb0: 0x842113d6568cc4a0ff417952, + limb1: 0xbf9bf6040bcf98685b071730, + limb2: 0xc764bd69e11c73f3ecaf8d07, + limb3: 0xd587218a1496f9351f01e73 }, r0a1: u384 { - limb0: 0xcea34f037c032c4542c6a991, - limb1: 0xcb1d1c58c236e0836ff98341, - limb2: 0xb0cac49f1a324a414f139b26, - limb3: 0xecf90a882783268e3235139 + limb0: 0xbc9127de7d6cf406424d7f15, + limb1: 0x8168235c896874ad54d9512, + limb2: 0xdcf79d8a1a168ae1c6dfa2e4, + limb3: 0xf95426d8e89954dee065f67 }, r1a0: u384 { - limb0: 0xca8b141e24ba66e9685558c9, - limb1: 0xf841b355795132e39dd17e84, - limb2: 0xf2353600d1ecd5adf17c0d54, - limb3: 0x8821343bc8d2180ace57d82 + limb0: 0x229ab89c13125cc2bf25a72d, + limb1: 0xd5a7df3aaaa0c0353dcac5a7, + limb2: 0x7c94527fabc77777ff2464ab, + limb3: 0x110918e757ed869ea437e672 }, r1a1: u384 { - limb0: 0x14aa77c6ae913de8263e425f, - limb1: 0x273d83c0f020843fae955eec, - limb2: 0x26553593e08e36dd5f6a75bb, - limb3: 0x102af6f4cdf7db4c677043fc + limb0: 0xe982d22571f2f17aa68f712c, + limb1: 0xa48a9b75c7c89bfab5f5d1eb, + limb2: 0x1b89a01e72668b0a30e747fb, + limb3: 0xaa126ea871c3e3ca7d0b445 } }, G2Line { r0a0: u384 { - limb0: 0xa0c014a08ac1d2a306211d8b, - limb1: 0xa33fa10d6f5ba13228ba7304, - limb2: 0x749d962ecb642d3f58639a49, - limb3: 0x174a313218725a0cc75ee281 + limb0: 0xc9b70b573ab2dbee53352a96, + limb1: 0xcc8c7eca86c99d50d3e90936, + limb2: 0x7d70aa72c271b1f8c15ad43e, + limb3: 0xe499ea04ed9644c9f31ff2c }, r0a1: u384 { - limb0: 0x6bc80233768f9e8ebdc0686, - limb1: 0xca18f802757f90d4eacce988, - limb2: 0x9224a07c14269b98055ee478, - limb3: 0x16eaa4fc6c991cd485e078ea + limb0: 0xa0f9073cb60f9d948336700a, + limb1: 0xbcba195f8a338d4cfe326b7d, + limb2: 0x830451f120569c1ba8a262fc, + limb3: 0x7d35ad7c0095f289f76c6bd }, r1a0: u384 { - limb0: 0xf69ec877d896ca7704fbed49, - limb1: 0xf340e7b5e58946b82f5682a2, - limb2: 0x3923d14a3994f5dc5bd94570, - limb3: 0x15e555c716f95e605a7febe6 + limb0: 0x6ef4a7e1adac7589cf5b1154, + limb1: 0xaca7ecc39f53183948238de2, + limb2: 0x7b65183abb9d2d0be2a6d539, + limb3: 0x63e7285b3dc806c2788d0e8 }, r1a1: u384 { - limb0: 0xcdfa8542620253c16455772, - limb1: 0x7d98932fff862d2c2a295dcc, - limb2: 0xfce18ccaa051eee0521d1bd2, - limb3: 0xb407ab9ff872d66432c3b5b + limb0: 0x263affe0370ee6f1853c2fb0, + limb1: 0xc73621e485f5fef86ded3d9, + limb2: 0x4a9c22bbb63a9b67c98dc2df, + limb3: 0x10a59819d699abac0f845268 } }, G2Line { r0a0: u384 { - limb0: 0x584ae3d80ee825e67b6fd8f9, - limb1: 0x72e42a443795e04ce800bea, - limb2: 0xa208fe6299541f4504c15e1d, - limb3: 0x10f4319457ac58835a0050cc + limb0: 0x842113d6568cc4a0ff417952, + limb1: 0xbf9bf6040bcf98685b071730, + limb2: 0xc764bd69e11c73f3ecaf8d07, + limb3: 0xd587218a1496f9351f01e73 }, r0a1: u384 { - limb0: 0xcea34f037c032c4542c6a991, - limb1: 0xcb1d1c58c236e0836ff98341, - limb2: 0xb0cac49f1a324a414f139b26, - limb3: 0xecf90a882783268e3235139 + limb0: 0xbc9127de7d6cf406424d7f15, + limb1: 0x8168235c896874ad54d9512, + limb2: 0xdcf79d8a1a168ae1c6dfa2e4, + limb3: 0xf95426d8e89954dee065f67 }, r1a0: u384 { - limb0: 0xca8b141e24ba66e9685558c9, - limb1: 0xf841b355795132e39dd17e84, - limb2: 0xf2353600d1ecd5adf17c0d54, - limb3: 0x8821343bc8d2180ace57d82 + limb0: 0x229ab89c13125cc2bf25a72d, + limb1: 0xd5a7df3aaaa0c0353dcac5a7, + limb2: 0x7c94527fabc77777ff2464ab, + limb3: 0x110918e757ed869ea437e672 }, r1a1: u384 { - limb0: 0x14aa77c6ae913de8263e425f, - limb1: 0x273d83c0f020843fae955eec, - limb2: 0x26553593e08e36dd5f6a75bb, - limb3: 0x102af6f4cdf7db4c677043fc + limb0: 0xe982d22571f2f17aa68f712c, + limb1: 0xa48a9b75c7c89bfab5f5d1eb, + limb2: 0x1b89a01e72668b0a30e747fb, + limb3: 0xaa126ea871c3e3ca7d0b445 } }, G2Line { r0a0: u384 { - limb0: 0xfdbeae987574005d3bbeba79, - limb1: 0xcf371d870e47f4622149a11a, - limb2: 0x11bf363e6a204b8703727c56, - limb3: 0x5403038afe4d371b52896ca + limb0: 0x8856fcd611eaccb5398098b3, + limb1: 0xf99e4037ab06eee76202c0a7, + limb2: 0x661b47fbe6e707a1da016abb, + limb3: 0x14d41350bc68e30131fda152 }, r0a1: u384 { - limb0: 0x54d5a4c14c73e0ef0275ac35, - limb1: 0x26f6c41df22d3e1063c0edf5, - limb2: 0xfe12df7705ded311286f136b, - limb3: 0x80fcee07336b1d4fd054632 + limb0: 0xa330e089de7e62d03d0d8381, + limb1: 0xb89bc0fa83c738dbed74992b, + limb2: 0x76e01692ebe0ab4a7bbc1cdf, + limb3: 0x119ff3df49b55e97212b9137 }, r1a0: u384 { - limb0: 0xf0939c1416fe851d53e3646c, - limb1: 0xc9a12afc9f8db790c7ca2c01, - limb2: 0x9dd95e0b6b120cf4d75a8773, - limb3: 0x80f311daa3d03414a9e6da7 + limb0: 0x17f35432949ee63be1b62fb4, + limb1: 0x558e84d6438f3f13cb52798, + limb2: 0x49ae9bb91dbd154524d0b491, + limb3: 0xa4ecb322f18755a2d7de6cb }, r1a1: u384 { - limb0: 0x818478702af93d8a49dd855f, - limb1: 0x71d852e84d0234f63a203244, - limb2: 0xbc97ff363643af58cc34499e, - limb3: 0xc20ef3f50ea59d51f8df639 + limb0: 0x16493c6765e497627871029a, + limb1: 0x31a7d00a47e2cdb224ef5050, + limb2: 0x140290a6f2fa5cb13477f571, + limb3: 0x1846bb57be1afd1089f8faa2 } }, G2Line { r0a0: u384 { - limb0: 0xfdbeae987574005d3bbeba79, - limb1: 0xcf371d870e47f4622149a11a, - limb2: 0x11bf363e6a204b8703727c56, - limb3: 0x5403038afe4d371b52896ca + limb0: 0x8856fcd611eaccb5398098b3, + limb1: 0xf99e4037ab06eee76202c0a7, + limb2: 0x661b47fbe6e707a1da016abb, + limb3: 0x14d41350bc68e30131fda152 }, r0a1: u384 { - limb0: 0x54d5a4c14c73e0ef0275ac35, - limb1: 0x26f6c41df22d3e1063c0edf5, - limb2: 0xfe12df7705ded311286f136b, - limb3: 0x80fcee07336b1d4fd054632 + limb0: 0xa330e089de7e62d03d0d8381, + limb1: 0xb89bc0fa83c738dbed74992b, + limb2: 0x76e01692ebe0ab4a7bbc1cdf, + limb3: 0x119ff3df49b55e97212b9137 }, r1a0: u384 { - limb0: 0xf0939c1416fe851d53e3646c, - limb1: 0xc9a12afc9f8db790c7ca2c01, - limb2: 0x9dd95e0b6b120cf4d75a8773, - limb3: 0x80f311daa3d03414a9e6da7 + limb0: 0x17f35432949ee63be1b62fb4, + limb1: 0x558e84d6438f3f13cb52798, + limb2: 0x49ae9bb91dbd154524d0b491, + limb3: 0xa4ecb322f18755a2d7de6cb }, r1a1: u384 { - limb0: 0x818478702af93d8a49dd855f, - limb1: 0x71d852e84d0234f63a203244, - limb2: 0xbc97ff363643af58cc34499e, - limb3: 0xc20ef3f50ea59d51f8df639 + limb0: 0x16493c6765e497627871029a, + limb1: 0x31a7d00a47e2cdb224ef5050, + limb2: 0x140290a6f2fa5cb13477f571, + limb3: 0x1846bb57be1afd1089f8faa2 } }, G2Line { r0a0: u384 { - limb0: 0xfa4eceb20a352380ce1c70ea, - limb1: 0x36cf7b4358eb186bc9113fd5, - limb2: 0xc31dc270d0521f599b13ec66, - limb3: 0xc9d60e53be93821889ac981 + limb0: 0xcab2483e7d8dd3fc04231f3e, + limb1: 0x6e798d52173fbcf7011727cf, + limb2: 0x3aa288e6664238899e96388, + limb3: 0xbed7f1cb0f29dbd779eb4db }, r0a1: u384 { - limb0: 0x90488e7391faf90f411cd2a, - limb1: 0x5bcaad9fc4245315f1f20516, - limb2: 0x3d7de55eb608678e2ec5e6bc, - limb3: 0x906fb623299db0166997836 + limb0: 0xda17dc08cb341a88d345029c, + limb1: 0xca9a84bc1b03f8ae6f50eb29, + limb2: 0xfab0923470c6c01cd53037f7, + limb3: 0x11b814eb656959f8bcd55260 }, r1a0: u384 { - limb0: 0x4420ed14435d7bb810ab52c3, - limb1: 0xd8125e826a5912dbfb1b634e, - limb2: 0x5e7b24f141de49177da4593b, - limb3: 0x19933fb82b9d9cbe0ced909d + limb0: 0x2f5c03f8edc8ef9851eca211, + limb1: 0xb8f62bffa8430def4963177c, + limb2: 0x285721fd3cb9239504693349, + limb3: 0x19697adae2f920497006cf60 }, r1a1: u384 { - limb0: 0x5b474fad8e1b18b5523ec77, - limb1: 0xbe5d4fef6b99cb12d4179692, - limb2: 0x57f22f2d142a6f9ac1ec50d6, - limb3: 0xf8acd8933f9dc504f5ad959 + limb0: 0x8ba36c1c6a84f64c58779c66, + limb1: 0xd8d040c366aee8415c83abc5, + limb2: 0x80bdb025a81cc5fca162bc55, + limb3: 0x132455e68b47f0c80c186c5e } }, G2Line { r0a0: u384 { - limb0: 0xfa4eceb20a352380ce1c70ea, - limb1: 0x36cf7b4358eb186bc9113fd5, - limb2: 0xc31dc270d0521f599b13ec66, - limb3: 0xc9d60e53be93821889ac981 + limb0: 0xcab2483e7d8dd3fc04231f3e, + limb1: 0x6e798d52173fbcf7011727cf, + limb2: 0x3aa288e6664238899e96388, + limb3: 0xbed7f1cb0f29dbd779eb4db }, r0a1: u384 { - limb0: 0x90488e7391faf90f411cd2a, - limb1: 0x5bcaad9fc4245315f1f20516, - limb2: 0x3d7de55eb608678e2ec5e6bc, - limb3: 0x906fb623299db0166997836 + limb0: 0xda17dc08cb341a88d345029c, + limb1: 0xca9a84bc1b03f8ae6f50eb29, + limb2: 0xfab0923470c6c01cd53037f7, + limb3: 0x11b814eb656959f8bcd55260 }, r1a0: u384 { - limb0: 0x4420ed14435d7bb810ab52c3, - limb1: 0xd8125e826a5912dbfb1b634e, - limb2: 0x5e7b24f141de49177da4593b, - limb3: 0x19933fb82b9d9cbe0ced909d + limb0: 0x2f5c03f8edc8ef9851eca211, + limb1: 0xb8f62bffa8430def4963177c, + limb2: 0x285721fd3cb9239504693349, + limb3: 0x19697adae2f920497006cf60 }, r1a1: u384 { - limb0: 0x5b474fad8e1b18b5523ec77, - limb1: 0xbe5d4fef6b99cb12d4179692, - limb2: 0x57f22f2d142a6f9ac1ec50d6, - limb3: 0xf8acd8933f9dc504f5ad959 + limb0: 0x8ba36c1c6a84f64c58779c66, + limb1: 0xd8d040c366aee8415c83abc5, + limb2: 0x80bdb025a81cc5fca162bc55, + limb3: 0x132455e68b47f0c80c186c5e } }, G2Line { r0a0: u384 { - limb0: 0x5e06a1aae94775fc6b1d06e5, - limb1: 0xe4ebd01ac38105e060015075, - limb2: 0xf2aeaa34cceecef19b7fbe3, - limb3: 0x9a067e939e6d2436e24b1e3 + limb0: 0xc339cdf7e4e5e3a44dbaacae, + limb1: 0xf7b3d92dcf1e19226487efff, + limb2: 0xeebbb6f12ddfff580bdaf23e, + limb3: 0x885c7a835866bb3f2618531 }, r0a1: u384 { - limb0: 0x450581df6ab539251c6ad226, - limb1: 0xc984ee21bde3676cfbd99747, - limb2: 0xf8705bd1e20b73c14c3788d8, - limb3: 0x10aff0a145300f180835a438 + limb0: 0xfd8a9b43a96749b067da9ea7, + limb1: 0x1a45ef3bc3a624fa6a875a42, + limb2: 0x871092b7aae86db98a4839e3, + limb3: 0x42fdd240a03c256c99338a4 }, r1a0: u384 { - limb0: 0xed4d2394401ce1cf4b5c36f4, - limb1: 0x5e08068a2363059c48b2ab6a, - limb2: 0xf8713c971feaa5c81b1b132f, - limb3: 0x13526bd0f791307f89c43ed1 + limb0: 0x34fac230b4cd059f4d142d09, + limb1: 0x578becad930850ec442c0499, + limb2: 0xdb467db9f5beceb2b12f240b, + limb3: 0x8715bbc83d753dac30ee064 }, r1a1: u384 { - limb0: 0xa48064dcc778929c687c639b, - limb1: 0xfe5684230d4b419fad7268cb, - limb2: 0x2a70b77608eca8deeac8cbc6, - limb3: 0xa1da6e373baba0c4f39ca79 + limb0: 0xbe4bacb87a4297599bed4a75, + limb1: 0x15bab163a1bec103441823b0, + limb2: 0xf6b498ea628259382f611e1, + limb3: 0x25cec6e6bc8e2b0ac8eaa18 } }, G2Line { r0a0: u384 { - limb0: 0x5e06a1aae94775fc6b1d06e5, - limb1: 0xe4ebd01ac38105e060015075, - limb2: 0xf2aeaa34cceecef19b7fbe3, - limb3: 0x9a067e939e6d2436e24b1e3 + limb0: 0xc339cdf7e4e5e3a44dbaacae, + limb1: 0xf7b3d92dcf1e19226487efff, + limb2: 0xeebbb6f12ddfff580bdaf23e, + limb3: 0x885c7a835866bb3f2618531 }, r0a1: u384 { - limb0: 0x450581df6ab539251c6ad226, - limb1: 0xc984ee21bde3676cfbd99747, - limb2: 0xf8705bd1e20b73c14c3788d8, - limb3: 0x10aff0a145300f180835a438 + limb0: 0xfd8a9b43a96749b067da9ea7, + limb1: 0x1a45ef3bc3a624fa6a875a42, + limb2: 0x871092b7aae86db98a4839e3, + limb3: 0x42fdd240a03c256c99338a4 }, r1a0: u384 { - limb0: 0xed4d2394401ce1cf4b5c36f4, - limb1: 0x5e08068a2363059c48b2ab6a, - limb2: 0xf8713c971feaa5c81b1b132f, - limb3: 0x13526bd0f791307f89c43ed1 + limb0: 0x34fac230b4cd059f4d142d09, + limb1: 0x578becad930850ec442c0499, + limb2: 0xdb467db9f5beceb2b12f240b, + limb3: 0x8715bbc83d753dac30ee064 }, r1a1: u384 { - limb0: 0xa48064dcc778929c687c639b, - limb1: 0xfe5684230d4b419fad7268cb, - limb2: 0x2a70b77608eca8deeac8cbc6, - limb3: 0xa1da6e373baba0c4f39ca79 + limb0: 0xbe4bacb87a4297599bed4a75, + limb1: 0x15bab163a1bec103441823b0, + limb2: 0xf6b498ea628259382f611e1, + limb3: 0x25cec6e6bc8e2b0ac8eaa18 } }, G2Line { r0a0: u384 { - limb0: 0x5bb0b2b0e21f10e47482c7c3, - limb1: 0xafb95e4a8189bb7e60f1cf0b, - limb2: 0xcd9c09d7451cd3f9e216bc58, - limb3: 0xd7df03fab3684b14c712203 + limb0: 0x62ac6bd3e467b6012ed51077, + limb1: 0xba3ff2d1e2f398b07962d460, + limb2: 0x5f87a3069c6c9317d90fe448, + limb3: 0x17828eef82575ad624b7eb8 }, r0a1: u384 { - limb0: 0x5f92638801105477afd49e07, - limb1: 0x4a2f991467ddd4e77bb5fdba, - limb2: 0x4f678fd8621d032de63fd2da, - limb3: 0x29963e086a1872143753c25 + limb0: 0x60f822b2434ac1915436b6a2, + limb1: 0xc280dfe322af22994c4f583a, + limb2: 0x2eb22edf843a31f56924e264, + limb3: 0xaa3dff436448f24891ce347 }, r1a0: u384 { - limb0: 0x276f0d328faf1a29e64e43d, - limb1: 0xeb64e9ecaab0944b5dcc5e54, - limb2: 0xaa1cef79fbeed1facb12f0dd, - limb3: 0xf47a6828d885a743e860037 + limb0: 0xc957369365d1f757dc7e1b60, + limb1: 0xf8fe29b2dfecfb3445695b50, + limb2: 0x93b4be33129e250ba6e9d713, + limb3: 0x54e2b0392e3280c73e25db7 }, r1a1: u384 { - limb0: 0x2872098d61f53ecedca0f507, - limb1: 0xe56215c4dca782b850e6c878, - limb2: 0x9aac187813aff2bc0b0eb740, - limb3: 0x62854a741d93a9cda1cdeae + limb0: 0x147632c4b781c87049f2585a, + limb1: 0xb96a476595a9eec08470167a, + limb2: 0xa692b500ee1328d089d355c9, + limb3: 0xe3b9ccbcbf1842377715224 } }, G2Line { r0a0: u384 { - limb0: 0x5bb0b2b0e21f10e47482c7c3, - limb1: 0xafb95e4a8189bb7e60f1cf0b, - limb2: 0xcd9c09d7451cd3f9e216bc58, - limb3: 0xd7df03fab3684b14c712203 + limb0: 0x62ac6bd3e467b6012ed51077, + limb1: 0xba3ff2d1e2f398b07962d460, + limb2: 0x5f87a3069c6c9317d90fe448, + limb3: 0x17828eef82575ad624b7eb8 }, r0a1: u384 { - limb0: 0x5f92638801105477afd49e07, - limb1: 0x4a2f991467ddd4e77bb5fdba, - limb2: 0x4f678fd8621d032de63fd2da, - limb3: 0x29963e086a1872143753c25 + limb0: 0x60f822b2434ac1915436b6a2, + limb1: 0xc280dfe322af22994c4f583a, + limb2: 0x2eb22edf843a31f56924e264, + limb3: 0xaa3dff436448f24891ce347 }, r1a0: u384 { - limb0: 0x276f0d328faf1a29e64e43d, - limb1: 0xeb64e9ecaab0944b5dcc5e54, - limb2: 0xaa1cef79fbeed1facb12f0dd, - limb3: 0xf47a6828d885a743e860037 + limb0: 0xc957369365d1f757dc7e1b60, + limb1: 0xf8fe29b2dfecfb3445695b50, + limb2: 0x93b4be33129e250ba6e9d713, + limb3: 0x54e2b0392e3280c73e25db7 }, r1a1: u384 { - limb0: 0x2872098d61f53ecedca0f507, - limb1: 0xe56215c4dca782b850e6c878, - limb2: 0x9aac187813aff2bc0b0eb740, - limb3: 0x62854a741d93a9cda1cdeae + limb0: 0x147632c4b781c87049f2585a, + limb1: 0xb96a476595a9eec08470167a, + limb2: 0xa692b500ee1328d089d355c9, + limb3: 0xe3b9ccbcbf1842377715224 } }, G2Line { r0a0: u384 { - limb0: 0x33d2bc721226b7a2ab7fb5d7, - limb1: 0xe5ead653011f7e542a0c7d25, - limb2: 0x1410d098aa8104b7d1e452e0, - limb3: 0x127f391154f0af79380abc68 + limb0: 0x64d16d41b66a102c9b553ea3, + limb1: 0x295cac58ddcb86c19d5085a6, + limb2: 0x7e2cd8cb5856d2d8e7eed046, + limb3: 0x15dbe6d70fdbc55ae84afa69 }, r0a1: u384 { - limb0: 0xb983dada86d653a3b6dba8df, - limb1: 0xdae3f0ab61b2919bb85a8100, - limb2: 0xb4b8d9ede169bae06c6196c, - limb3: 0x9bfb91f584e61a6064dcd48 + limb0: 0x54565b8fd91f675d7f4459f2, + limb1: 0x272f73f709855d58fb90690e, + limb2: 0x55e2996b05c2d49f2a82120c, + limb3: 0xec904bbad282fc6edb48286 }, r1a0: u384 { - limb0: 0x2dd3a6ef83d110ccfc1bdeaa, - limb1: 0x46d76e759974eb2d55f171ee, - limb2: 0x4dcf4fa43920c3eb6ae41bbe, - limb3: 0x9792ae88c5988af9e21422 + limb0: 0xb8bb51ac0ae45391324c34ee, + limb1: 0x1eed107f37cd128849f36954, + limb2: 0xee5c6663ab2ffe95b57e90a0, + limb3: 0x10059eac9c018522626ea231 }, r1a1: u384 { - limb0: 0xda4a4e5d8da986bf970d9caa, - limb1: 0x1202776f70242ad93fd5949a, - limb2: 0x5475dfc633357390bfd0a589, - limb3: 0x179df6d6e304f868e3c4a78b + limb0: 0xe2ccd1c7748f1dad4aa6574, + limb1: 0x3f7f644aea9f5ef5c21d6b1d, + limb2: 0x78437a492823073bab9f2f24, + limb3: 0x154ca2c1025881bb42f419c9 } }, G2Line { r0a0: u384 { - limb0: 0x33d2bc721226b7a2ab7fb5d7, - limb1: 0xe5ead653011f7e542a0c7d25, - limb2: 0x1410d098aa8104b7d1e452e0, - limb3: 0x127f391154f0af79380abc68 + limb0: 0x64d16d41b66a102c9b553ea3, + limb1: 0x295cac58ddcb86c19d5085a6, + limb2: 0x7e2cd8cb5856d2d8e7eed046, + limb3: 0x15dbe6d70fdbc55ae84afa69 }, r0a1: u384 { - limb0: 0xb983dada86d653a3b6dba8df, - limb1: 0xdae3f0ab61b2919bb85a8100, - limb2: 0xb4b8d9ede169bae06c6196c, - limb3: 0x9bfb91f584e61a6064dcd48 + limb0: 0x54565b8fd91f675d7f4459f2, + limb1: 0x272f73f709855d58fb90690e, + limb2: 0x55e2996b05c2d49f2a82120c, + limb3: 0xec904bbad282fc6edb48286 }, r1a0: u384 { - limb0: 0x2dd3a6ef83d110ccfc1bdeaa, - limb1: 0x46d76e759974eb2d55f171ee, - limb2: 0x4dcf4fa43920c3eb6ae41bbe, - limb3: 0x9792ae88c5988af9e21422 + limb0: 0xb8bb51ac0ae45391324c34ee, + limb1: 0x1eed107f37cd128849f36954, + limb2: 0xee5c6663ab2ffe95b57e90a0, + limb3: 0x10059eac9c018522626ea231 }, r1a1: u384 { - limb0: 0xda4a4e5d8da986bf970d9caa, - limb1: 0x1202776f70242ad93fd5949a, - limb2: 0x5475dfc633357390bfd0a589, - limb3: 0x179df6d6e304f868e3c4a78b + limb0: 0xe2ccd1c7748f1dad4aa6574, + limb1: 0x3f7f644aea9f5ef5c21d6b1d, + limb2: 0x78437a492823073bab9f2f24, + limb3: 0x154ca2c1025881bb42f419c9 } }, G2Line { r0a0: u384 { - limb0: 0x671aaf8408f43f2755d809cf, - limb1: 0x9fa1f6e9f4939b878a561d9d, - limb2: 0xd65188aa9abeb5a3a54f45d7, - limb3: 0x1714715c3aaafabd80a66739 + limb0: 0xa148fed9dcfdb8471e37e2cf, + limb1: 0x33498344be66beb21dacb6cc, + limb2: 0xdb2dab4272dd7e03d560ec7c, + limb3: 0x11377cdcdb4dce503806d536 }, r0a1: u384 { - limb0: 0x6ba870262236e8b3a454b63d, - limb1: 0xec468fb87efb19c6d8e17c1e, - limb2: 0x34d6950dd4e82fce5b3f2579, - limb3: 0x12a07f5a39b3e75aecec93ec + limb0: 0x4bdd4af2794e5ba563dea99d, + limb1: 0xb686ccbe1211bc916075f1f0, + limb2: 0x8275da72cc81642b581cd3c, + limb3: 0xdc4f2a881416ee0d2a76b19 }, r1a0: u384 { - limb0: 0x92c7c213f994b07880db95ff, - limb1: 0x697f44b51adc2c8a9c0d9e93, - limb2: 0x73d426aadf2d31f894152c62, - limb3: 0xd5d0ccf152fbae435bed896 + limb0: 0xd911cc786bf78185445a5728, + limb1: 0xc4fc6828294ec360441828a0, + limb2: 0x5710cbd08f34cb4b1d311efd, + limb3: 0x10911287680bf76d68b048fa }, r1a1: u384 { - limb0: 0x6d5b97ec988dcefdbdc05e85, - limb1: 0xb2b443ed5a8e2b371ba4bc91, - limb2: 0x7a780a5d7851d6d2ef3f4b2d, - limb3: 0xf5ebb5235418b73960bdfbf + limb0: 0xa06d07ee3f35ed581feb7120, + limb1: 0x7ec15bc93962ff96203e99ef, + limb2: 0x6459955c3f1acf888a31b71c, + limb3: 0x163cfbb725456b1e3f8a2a52 } }, G2Line { r0a0: u384 { - limb0: 0x671aaf8408f43f2755d809cf, - limb1: 0x9fa1f6e9f4939b878a561d9d, - limb2: 0xd65188aa9abeb5a3a54f45d7, - limb3: 0x1714715c3aaafabd80a66739 + limb0: 0xa148fed9dcfdb8471e37e2cf, + limb1: 0x33498344be66beb21dacb6cc, + limb2: 0xdb2dab4272dd7e03d560ec7c, + limb3: 0x11377cdcdb4dce503806d536 }, r0a1: u384 { - limb0: 0x6ba870262236e8b3a454b63d, - limb1: 0xec468fb87efb19c6d8e17c1e, - limb2: 0x34d6950dd4e82fce5b3f2579, - limb3: 0x12a07f5a39b3e75aecec93ec + limb0: 0x4bdd4af2794e5ba563dea99d, + limb1: 0xb686ccbe1211bc916075f1f0, + limb2: 0x8275da72cc81642b581cd3c, + limb3: 0xdc4f2a881416ee0d2a76b19 }, r1a0: u384 { - limb0: 0x92c7c213f994b07880db95ff, - limb1: 0x697f44b51adc2c8a9c0d9e93, - limb2: 0x73d426aadf2d31f894152c62, - limb3: 0xd5d0ccf152fbae435bed896 + limb0: 0xd911cc786bf78185445a5728, + limb1: 0xc4fc6828294ec360441828a0, + limb2: 0x5710cbd08f34cb4b1d311efd, + limb3: 0x10911287680bf76d68b048fa }, r1a1: u384 { - limb0: 0x6d5b97ec988dcefdbdc05e85, - limb1: 0xb2b443ed5a8e2b371ba4bc91, - limb2: 0x7a780a5d7851d6d2ef3f4b2d, - limb3: 0xf5ebb5235418b73960bdfbf + limb0: 0xa06d07ee3f35ed581feb7120, + limb1: 0x7ec15bc93962ff96203e99ef, + limb2: 0x6459955c3f1acf888a31b71c, + limb3: 0x163cfbb725456b1e3f8a2a52 } }, G2Line { r0a0: u384 { - limb0: 0x40026ad615b158d2e9990c29, - limb1: 0x9e2242a306633dbe623493dd, - limb2: 0xddd7549928702d938d2668fc, - limb3: 0xf8ea69fcd9b21a34ab19fd5 + limb0: 0xe681d22feda4a7f061e8f6b3, + limb1: 0xad9da9a0f9e44384ff71b25a, + limb2: 0x25b7987299c14b92935df59b, + limb3: 0xe18539ac218e8292f772d49 }, r0a1: u384 { - limb0: 0xb4fc35121bc88778cab2917a, - limb1: 0x330581078bddaf4081868abc, - limb2: 0xd36d12d7fbd411304b17cd1a, - limb3: 0x116d1e42d92dac0455850296 + limb0: 0xbbab4a0c7d4380e59aaf4a14, + limb1: 0x92300d61ef168a3b7f078369, + limb2: 0x88740486a05e8355a2f396a6, + limb3: 0x1312ea288e7ab2c682515d55 }, r1a0: u384 { - limb0: 0xed700c3d759aa1cd06f5aaad, - limb1: 0xfb3e206ae908a6a288122c56, - limb2: 0xb259599bd6c5853b5d3b6558, - limb3: 0xadcfbfb31152c7a6b0ffbfc + limb0: 0x5cf20f4d699d245a06e981a4, + limb1: 0x4ada2dc6c16584036497194a, + limb2: 0x69d2a6a56d565893c5dc5cee, + limb3: 0xe83ade7bf2df02d06d669f9 }, r1a1: u384 { - limb0: 0x2904015a6f8b20fcac1e9a24, - limb1: 0x443a3f98ed4a7bc16efe7090, - limb2: 0xdf8339aedeb9565002c6d2d, - limb3: 0xee949068cce39e16110f33e + limb0: 0xdde1fccec9bcee2c65bb7113, + limb1: 0xbd3a4889309b7b362a350027, + limb2: 0xab1aabdde55d523dd61bd16a, + limb3: 0x8e64666e47f311366b84b22 } }, G2Line { r0a0: u384 { - limb0: 0x40026ad615b158d2e9990c29, - limb1: 0x9e2242a306633dbe623493dd, - limb2: 0xddd7549928702d938d2668fc, - limb3: 0xf8ea69fcd9b21a34ab19fd5 + limb0: 0xe681d22feda4a7f061e8f6b3, + limb1: 0xad9da9a0f9e44384ff71b25a, + limb2: 0x25b7987299c14b92935df59b, + limb3: 0xe18539ac218e8292f772d49 }, r0a1: u384 { - limb0: 0xb4fc35121bc88778cab2917a, - limb1: 0x330581078bddaf4081868abc, - limb2: 0xd36d12d7fbd411304b17cd1a, - limb3: 0x116d1e42d92dac0455850296 + limb0: 0xbbab4a0c7d4380e59aaf4a14, + limb1: 0x92300d61ef168a3b7f078369, + limb2: 0x88740486a05e8355a2f396a6, + limb3: 0x1312ea288e7ab2c682515d55 }, r1a0: u384 { - limb0: 0xed700c3d759aa1cd06f5aaad, - limb1: 0xfb3e206ae908a6a288122c56, - limb2: 0xb259599bd6c5853b5d3b6558, - limb3: 0xadcfbfb31152c7a6b0ffbfc + limb0: 0x5cf20f4d699d245a06e981a4, + limb1: 0x4ada2dc6c16584036497194a, + limb2: 0x69d2a6a56d565893c5dc5cee, + limb3: 0xe83ade7bf2df02d06d669f9 }, r1a1: u384 { - limb0: 0x2904015a6f8b20fcac1e9a24, - limb1: 0x443a3f98ed4a7bc16efe7090, - limb2: 0xdf8339aedeb9565002c6d2d, - limb3: 0xee949068cce39e16110f33e + limb0: 0xdde1fccec9bcee2c65bb7113, + limb1: 0xbd3a4889309b7b362a350027, + limb2: 0xab1aabdde55d523dd61bd16a, + limb3: 0x8e64666e47f311366b84b22 } }, G2Line { r0a0: u384 { - limb0: 0xefa89f5a680a4da7299482d4, - limb1: 0xf5f8d6bf96a54ce1b68322b4, - limb2: 0xf79a179425be6040f3cc42cd, - limb3: 0x15d8cd58f8a23e99088623a5 + limb0: 0xf9b090fdb3bf0f5be038a031, + limb1: 0xec03d47d7f362f2f46b88120, + limb2: 0xcf4ea7dfdbf684e0c9c3c73, + limb3: 0x11dd63055f71654adf72fdf4 }, r0a1: u384 { - limb0: 0xb76521e7dcf6259e936f360, - limb1: 0xc8d95e25b11f53db53661bad, - limb2: 0x46d06de39edc96f10454e18d, - limb3: 0x17ca7261de6fe238eb9ec712 + limb0: 0x9eb8ba348aa55966b2360dbb, + limb1: 0x48dd21f65324b91c93beb3f, + limb2: 0x79f6c38f8f7656836cb1317d, + limb3: 0x108bdc14fca7e6d3304b3f3b }, r1a0: u384 { - limb0: 0x13a2280eec6ec2d0bf942aa6, - limb1: 0x408ceff88e9c95aa800dd39f, - limb2: 0x388e1b459c897afa1a579634, - limb3: 0xc43294048ca8f4e35bd6862 + limb0: 0xbf74876b9993b6ea79d756e1, + limb1: 0xd5e5d391946b6572594a23d1, + limb2: 0xf16cf2d26319a001b024184f, + limb3: 0xe47f5f42a8c539bf4c4aabc }, r1a1: u384 { - limb0: 0xb95e7b878e80dfcf7aeb2b8a, - limb1: 0xe97781f572f8ce4928b1d7f6, - limb2: 0xa2bb709078b8ecf559775cf6, - limb3: 0x1331f80f38cafa8566c7c4 + limb0: 0xd16c2d990821fee62aea0c7, + limb1: 0x9fcd17773a83125f41a6e06e, + limb2: 0x97ed32a632508ccadf843b41, + limb3: 0xb98f51a6d9ef1cf288747c5 } }, G2Line { r0a0: u384 { - limb0: 0xefa89f5a680a4da7299482d4, - limb1: 0xf5f8d6bf96a54ce1b68322b4, - limb2: 0xf79a179425be6040f3cc42cd, - limb3: 0x15d8cd58f8a23e99088623a5 + limb0: 0xf9b090fdb3bf0f5be038a031, + limb1: 0xec03d47d7f362f2f46b88120, + limb2: 0xcf4ea7dfdbf684e0c9c3c73, + limb3: 0x11dd63055f71654adf72fdf4 }, r0a1: u384 { - limb0: 0xb76521e7dcf6259e936f360, - limb1: 0xc8d95e25b11f53db53661bad, - limb2: 0x46d06de39edc96f10454e18d, - limb3: 0x17ca7261de6fe238eb9ec712 + limb0: 0x9eb8ba348aa55966b2360dbb, + limb1: 0x48dd21f65324b91c93beb3f, + limb2: 0x79f6c38f8f7656836cb1317d, + limb3: 0x108bdc14fca7e6d3304b3f3b }, r1a0: u384 { - limb0: 0x13a2280eec6ec2d0bf942aa6, - limb1: 0x408ceff88e9c95aa800dd39f, - limb2: 0x388e1b459c897afa1a579634, - limb3: 0xc43294048ca8f4e35bd6862 + limb0: 0xbf74876b9993b6ea79d756e1, + limb1: 0xd5e5d391946b6572594a23d1, + limb2: 0xf16cf2d26319a001b024184f, + limb3: 0xe47f5f42a8c539bf4c4aabc }, r1a1: u384 { - limb0: 0xb95e7b878e80dfcf7aeb2b8a, - limb1: 0xe97781f572f8ce4928b1d7f6, - limb2: 0xa2bb709078b8ecf559775cf6, - limb3: 0x1331f80f38cafa8566c7c4 + limb0: 0xd16c2d990821fee62aea0c7, + limb1: 0x9fcd17773a83125f41a6e06e, + limb2: 0x97ed32a632508ccadf843b41, + limb3: 0xb98f51a6d9ef1cf288747c5 } }, G2Line { r0a0: u384 { - limb0: 0x570e2bb46ed8df40fd9a5b31, - limb1: 0xee208deb6696f9384975cbe0, - limb2: 0x825a933b6b2362568c4e8b1a, - limb3: 0x12e321da6ee9dc0cb683603a + limb0: 0xc04588c9f09fa499106bc8c9, + limb1: 0x7a64ff03080c6dd7d7e9eac2, + limb2: 0xf4f302730238d347b951a1f3, + limb3: 0xbc95c23d2aa850d9637039c }, r0a1: u384 { - limb0: 0xc71652b3aecb78ab9b1e1b62, - limb1: 0x405dcabe10d57df6b4dfe82d, - limb2: 0x7b9852ccd8f74874cf847fd8, - limb3: 0x7aeb486f31847c7fccf8346 + limb0: 0x982410511881122d237bcf90, + limb1: 0x69908a3359202333b8494da3, + limb2: 0xd8845b29dfc85657a12e1e6b, + limb3: 0x861225fbc10126c68b47fbb }, r1a0: u384 { - limb0: 0x10161849878b146fb770b2be, - limb1: 0x2cea02623e5de7907568b083, - limb2: 0xf3bcc7f61e58c082848dad9d, - limb3: 0x11708a50b5f621ce6879a491 + limb0: 0x307f66feb496a692288ee79c, + limb1: 0xea2a865ce7b1a83eb71f516e, + limb2: 0x3acfdeb605537b1db464d091, + limb3: 0x199bcae152e692669ca36f70 }, r1a1: u384 { - limb0: 0x9cf2c035fc50c5562f775620, - limb1: 0xfccce4d63d0053334f6f1457, - limb2: 0xa022e367acdda812b0f2dc06, - limb3: 0x622182af16687312ea03f25 + limb0: 0x67ed8bd9d8b3671bc52dd01a, + limb1: 0xa128cb4f4b3fb9f78826fa5c, + limb2: 0xdc60b2aeb8989c43359f9ee4, + limb3: 0x154183d7ad332d63192fd716 } }, G2Line { r0a0: u384 { - limb0: 0x493f3dd74555bc639d4252da, - limb1: 0x588962fa2f1ec6130e26cc35, - limb2: 0x7bff95ed2e72ff3557ede522, - limb3: 0x185ecbf54853f83a1b27b32e + limb0: 0x4c1b7c692bcb90fc6da4682a, + limb1: 0xdee0840ffe02e6822d2fbc52, + limb2: 0x76f9d61c6685c1019409e2e6, + limb3: 0x131589c0f041ca383a010a65 }, r0a1: u384 { - limb0: 0x6e52f357da806e447be2b3f, - limb1: 0xcbe61d7f7db8bc770eea05af, - limb2: 0xe8475ead73a06a551b652526, - limb3: 0xd6ad3fbb07f6d1d5e3ca1ea + limb0: 0x5f44efbb5a56642b645b251d, + limb1: 0xcc0b6a435e33cf7e66f796ef, + limb2: 0x2afead4ba783ddd084a2de2, + limb3: 0x14fb18cfb114fe90def3b975 }, r1a0: u384 { - limb0: 0x501d2a8ab5eff582fbbbf51d, - limb1: 0x20813dc890fb0bb9cb44bded, - limb2: 0x5e56521cb379226e6fb5bd50, - limb3: 0x756b3505cf5ac65ba1aeb2c + limb0: 0x6738569610d2c81b6648b199, + limb1: 0x3d70fbe299588075a3c0cd65, + limb2: 0x9fb99753b8fe3603ef293640, + limb3: 0xb0c1cb2bfa9049055dc042a }, r1a1: u384 { - limb0: 0xaf8723908022bf6c469ff1fd, - limb1: 0xd046aa176624f0f718fc8f1e, - limb2: 0xa60422b2f3b2f26978331f86, - limb3: 0x422c14867032ee453cdce35 + limb0: 0xcf4196c9021ca7f093cfb891, + limb1: 0xdc602f37532b7f244f265bb4, + limb2: 0x2eda24acdd8ac91dba31011a, + limb3: 0x831f465b19f5e211770a330 } }, G2Line { r0a0: u384 { - limb0: 0x570e2bb46ed8df40fd9a5b31, - limb1: 0xee208deb6696f9384975cbe0, - limb2: 0x825a933b6b2362568c4e8b1a, - limb3: 0x12e321da6ee9dc0cb683603a + limb0: 0xc04588c9f09fa499106bc8c9, + limb1: 0x7a64ff03080c6dd7d7e9eac2, + limb2: 0xf4f302730238d347b951a1f3, + limb3: 0xbc95c23d2aa850d9637039c }, r0a1: u384 { - limb0: 0xc71652b3aecb78ab9b1e1b62, - limb1: 0x405dcabe10d57df6b4dfe82d, - limb2: 0x7b9852ccd8f74874cf847fd8, - limb3: 0x7aeb486f31847c7fccf8346 + limb0: 0x982410511881122d237bcf90, + limb1: 0x69908a3359202333b8494da3, + limb2: 0xd8845b29dfc85657a12e1e6b, + limb3: 0x861225fbc10126c68b47fbb }, r1a0: u384 { - limb0: 0x10161849878b146fb770b2be, - limb1: 0x2cea02623e5de7907568b083, - limb2: 0xf3bcc7f61e58c082848dad9d, - limb3: 0x11708a50b5f621ce6879a491 + limb0: 0x307f66feb496a692288ee79c, + limb1: 0xea2a865ce7b1a83eb71f516e, + limb2: 0x3acfdeb605537b1db464d091, + limb3: 0x199bcae152e692669ca36f70 }, r1a1: u384 { - limb0: 0x9cf2c035fc50c5562f775620, - limb1: 0xfccce4d63d0053334f6f1457, - limb2: 0xa022e367acdda812b0f2dc06, - limb3: 0x622182af16687312ea03f25 + limb0: 0x67ed8bd9d8b3671bc52dd01a, + limb1: 0xa128cb4f4b3fb9f78826fa5c, + limb2: 0xdc60b2aeb8989c43359f9ee4, + limb3: 0x154183d7ad332d63192fd716 } }, G2Line { r0a0: u384 { - limb0: 0x493f3dd74555bc639d4252da, - limb1: 0x588962fa2f1ec6130e26cc35, - limb2: 0x7bff95ed2e72ff3557ede522, - limb3: 0x185ecbf54853f83a1b27b32e + limb0: 0x4c1b7c692bcb90fc6da4682a, + limb1: 0xdee0840ffe02e6822d2fbc52, + limb2: 0x76f9d61c6685c1019409e2e6, + limb3: 0x131589c0f041ca383a010a65 }, r0a1: u384 { - limb0: 0x6e52f357da806e447be2b3f, - limb1: 0xcbe61d7f7db8bc770eea05af, - limb2: 0xe8475ead73a06a551b652526, - limb3: 0xd6ad3fbb07f6d1d5e3ca1ea + limb0: 0x5f44efbb5a56642b645b251d, + limb1: 0xcc0b6a435e33cf7e66f796ef, + limb2: 0x2afead4ba783ddd084a2de2, + limb3: 0x14fb18cfb114fe90def3b975 }, r1a0: u384 { - limb0: 0x501d2a8ab5eff582fbbbf51d, - limb1: 0x20813dc890fb0bb9cb44bded, - limb2: 0x5e56521cb379226e6fb5bd50, - limb3: 0x756b3505cf5ac65ba1aeb2c + limb0: 0x6738569610d2c81b6648b199, + limb1: 0x3d70fbe299588075a3c0cd65, + limb2: 0x9fb99753b8fe3603ef293640, + limb3: 0xb0c1cb2bfa9049055dc042a }, r1a1: u384 { - limb0: 0xaf8723908022bf6c469ff1fd, - limb1: 0xd046aa176624f0f718fc8f1e, - limb2: 0xa60422b2f3b2f26978331f86, - limb3: 0x422c14867032ee453cdce35 + limb0: 0xcf4196c9021ca7f093cfb891, + limb1: 0xdc602f37532b7f244f265bb4, + limb2: 0x2eda24acdd8ac91dba31011a, + limb3: 0x831f465b19f5e211770a330 } }, G2Line { r0a0: u384 { - limb0: 0xc0611436dd90e63d1ca50003, - limb1: 0x3f177b653ffe14d44f6b5268, - limb2: 0x8a2d07cb1f87e18fef8bb5c, - limb3: 0x14c15a686ed0fadefc245cd8 + limb0: 0xbead4997832000eec2d23426, + limb1: 0x70326bda198a624d79fe5b6e, + limb2: 0x34320ab5d9d57a16f9b3335d, + limb3: 0x15ed7fcb0bbd153b17bd9ab7 }, r0a1: u384 { - limb0: 0x47da3bfa6d39ddff944d7186, - limb1: 0xbc1b8433ed1ed18ce5bca840, - limb2: 0x10b030a93712ca194d5c0496, - limb3: 0xa042c723ab40639b3828387 + limb0: 0xeef082656c66bb5b7891e0fa, + limb1: 0x5c3a8513f52f57cb1b0c7958, + limb2: 0xcd1545fd6d3fca90cca7ddbf, + limb3: 0x14a5d26055e3895cc2078189 }, r1a0: u384 { - limb0: 0x9a7a5a27d8d96388f36b52be, - limb1: 0xbc449f0d1ecc204067cf31b0, - limb2: 0x95b427bf6177b8ccdbd9bf4b, - limb3: 0x10d1a684f2fed22850ad84c9 + limb0: 0x51fd450f49e14cf29994d0d8, + limb1: 0x352df17adf32a543695add5b, + limb2: 0x620770f7a8734b83419a0015, + limb3: 0x3bed8150b4306f815c54ae0 }, r1a1: u384 { - limb0: 0xa9c12d8f163e2c7706c5d01d, - limb1: 0xd86388e029ee3a3e2a4c235b, - limb2: 0xe875331eb8c750a2663463d4, - limb3: 0xa67113fa0c53e2863664669 + limb0: 0xdcda7311d4becff3df733d35, + limb1: 0x6d1b5d403a8a86fa9c0ad26b, + limb2: 0x41249656cda2d1314833048c, + limb3: 0x18fa645f04346cb55df845ec } }, G2Line { r0a0: u384 { - limb0: 0xc0611436dd90e63d1ca50003, - limb1: 0x3f177b653ffe14d44f6b5268, - limb2: 0x8a2d07cb1f87e18fef8bb5c, - limb3: 0x14c15a686ed0fadefc245cd8 + limb0: 0xbead4997832000eec2d23426, + limb1: 0x70326bda198a624d79fe5b6e, + limb2: 0x34320ab5d9d57a16f9b3335d, + limb3: 0x15ed7fcb0bbd153b17bd9ab7 }, r0a1: u384 { - limb0: 0x47da3bfa6d39ddff944d7186, - limb1: 0xbc1b8433ed1ed18ce5bca840, - limb2: 0x10b030a93712ca194d5c0496, - limb3: 0xa042c723ab40639b3828387 + limb0: 0xeef082656c66bb5b7891e0fa, + limb1: 0x5c3a8513f52f57cb1b0c7958, + limb2: 0xcd1545fd6d3fca90cca7ddbf, + limb3: 0x14a5d26055e3895cc2078189 }, r1a0: u384 { - limb0: 0x9a7a5a27d8d96388f36b52be, - limb1: 0xbc449f0d1ecc204067cf31b0, - limb2: 0x95b427bf6177b8ccdbd9bf4b, - limb3: 0x10d1a684f2fed22850ad84c9 + limb0: 0x51fd450f49e14cf29994d0d8, + limb1: 0x352df17adf32a543695add5b, + limb2: 0x620770f7a8734b83419a0015, + limb3: 0x3bed8150b4306f815c54ae0 }, r1a1: u384 { - limb0: 0xa9c12d8f163e2c7706c5d01d, - limb1: 0xd86388e029ee3a3e2a4c235b, - limb2: 0xe875331eb8c750a2663463d4, - limb3: 0xa67113fa0c53e2863664669 + limb0: 0xdcda7311d4becff3df733d35, + limb1: 0x6d1b5d403a8a86fa9c0ad26b, + limb2: 0x41249656cda2d1314833048c, + limb3: 0x18fa645f04346cb55df845ec } }, G2Line { r0a0: u384 { - limb0: 0x36646f97fe1188e02d6cf838, - limb1: 0xeac5e64075a7abc81043c68f, - limb2: 0x96728e6d9358afc3ed74ba4c, - limb3: 0xdc42cdbd7b2b92570931504 + limb0: 0xd9186b9c733a20289999898e, + limb1: 0x6de39966328adffa7073a300, + limb2: 0xf15f1d47e489cb0211ae9365, + limb3: 0x130c5531b0d8c306969ed394 }, r0a1: u384 { - limb0: 0x82f9bdde42f2f8a9665bc768, - limb1: 0x23c8404fc61bf9acdfa14df9, - limb2: 0x55732e6cb7bd2a804c16550a, - limb3: 0x2b4eb8db1be11375bddf5e3 + limb0: 0xdb40370c9fc08d2498113f0e, + limb1: 0x52a13a99df87505995085459, + limb2: 0xef9d808d7ee6f27a05e1b801, + limb3: 0x50452f33ca7e399a6020469 }, r1a0: u384 { - limb0: 0x9982e10d15e300cfd8d68776, - limb1: 0x70b58432321aec231832c50d, - limb2: 0x2668317449e2202668fcd561, - limb3: 0x14882bfddd95ce2d288b6ecd + limb0: 0x36def0c15c3f8e182c9ea44d, + limb1: 0x326195297234c6d7a93109a7, + limb2: 0x87a1563a69011deff0488ae7, + limb3: 0x132a2fc3be8766a1177e52aa }, r1a1: u384 { - limb0: 0x3f5b1a3085c44dcb84b9c0c8, - limb1: 0xeb5b9be908981cec3f54d648, - limb2: 0x7a193ea1a65c38f53d486a50, - limb3: 0x19b822dd548e13c098c72f8a + limb0: 0x62378fa1506521802106b7e5, + limb1: 0xd8cc0cff92a519c933c28a36, + limb2: 0xa1102e8ae53eaf25f786453b, + limb3: 0x9a64df029f7f27d39d0dc0e } }, G2Line { r0a0: u384 { - limb0: 0x36646f97fe1188e02d6cf838, - limb1: 0xeac5e64075a7abc81043c68f, - limb2: 0x96728e6d9358afc3ed74ba4c, - limb3: 0xdc42cdbd7b2b92570931504 + limb0: 0xd9186b9c733a20289999898e, + limb1: 0x6de39966328adffa7073a300, + limb2: 0xf15f1d47e489cb0211ae9365, + limb3: 0x130c5531b0d8c306969ed394 }, r0a1: u384 { - limb0: 0x82f9bdde42f2f8a9665bc768, - limb1: 0x23c8404fc61bf9acdfa14df9, - limb2: 0x55732e6cb7bd2a804c16550a, - limb3: 0x2b4eb8db1be11375bddf5e3 + limb0: 0xdb40370c9fc08d2498113f0e, + limb1: 0x52a13a99df87505995085459, + limb2: 0xef9d808d7ee6f27a05e1b801, + limb3: 0x50452f33ca7e399a6020469 }, r1a0: u384 { - limb0: 0x9982e10d15e300cfd8d68776, - limb1: 0x70b58432321aec231832c50d, - limb2: 0x2668317449e2202668fcd561, - limb3: 0x14882bfddd95ce2d288b6ecd + limb0: 0x36def0c15c3f8e182c9ea44d, + limb1: 0x326195297234c6d7a93109a7, + limb2: 0x87a1563a69011deff0488ae7, + limb3: 0x132a2fc3be8766a1177e52aa }, r1a1: u384 { - limb0: 0x3f5b1a3085c44dcb84b9c0c8, - limb1: 0xeb5b9be908981cec3f54d648, - limb2: 0x7a193ea1a65c38f53d486a50, - limb3: 0x19b822dd548e13c098c72f8a + limb0: 0x62378fa1506521802106b7e5, + limb1: 0xd8cc0cff92a519c933c28a36, + limb2: 0xa1102e8ae53eaf25f786453b, + limb3: 0x9a64df029f7f27d39d0dc0e } }, G2Line { r0a0: u384 { - limb0: 0x7fdf0e56a1c1d3110ba4260d, - limb1: 0xd7b8c4a9fe5a6e9b44210924, - limb2: 0x2bfba36b4954158eb4c73b22, - limb3: 0xacb07907bdcee849367f937 + limb0: 0x25ea37848e0ac8549a3cfea4, + limb1: 0x4769da5b3fdb93516843dcc4, + limb2: 0x25c2fee69d51e108950ee66c, + limb3: 0xcbe02237fb28faee0f0f322 }, r0a1: u384 { - limb0: 0x768c8e90c36b2890abca51dd, - limb1: 0xcd07d9d3bccf2a4f5027d33c, - limb2: 0x7cbb12139e4b5bf8ba947f0, - limb3: 0x5c2617a8208cdb2b642beeb + limb0: 0xeb04a575e069162f1fbffeac, + limb1: 0x70a494b054c8efcb93da1757, + limb2: 0x47f9c06eaaca8c969afabd71, + limb3: 0x161220a792413bbe47629580 }, r1a0: u384 { - limb0: 0x9e8c9253e3c8023a2f2aa66f, - limb1: 0x3194df8addbcbab5ecfa8b5c, - limb2: 0xa436bd1a206b054f497d66e4, - limb3: 0x4f188382916484a5bf6a96c + limb0: 0xdcd325a8ba5cef5390f5d151, + limb1: 0xcdc42d134b74aa1a5062ce50, + limb2: 0x60be437e1aa4a9878448da68, + limb3: 0x3afadaca8a96f634f1a416c }, r1a1: u384 { - limb0: 0x7609e06b959844df28542750, - limb1: 0x8ca7a27304fe438fd5153ca0, - limb2: 0xad919b625bb21d78bab24e69, - limb3: 0x121fd65b618e8f232fa5d543 + limb0: 0x2a305361b67f6592fa2a5b23, + limb1: 0x60950369afb1c2180ac6372, + limb2: 0x18abd84df73559c2ec121d5d, + limb3: 0x30f5ef160b1fd967f8015ab } }, G2Line { r0a0: u384 { - limb0: 0x7fdf0e56a1c1d3110ba4260d, - limb1: 0xd7b8c4a9fe5a6e9b44210924, - limb2: 0x2bfba36b4954158eb4c73b22, - limb3: 0xacb07907bdcee849367f937 + limb0: 0x25ea37848e0ac8549a3cfea4, + limb1: 0x4769da5b3fdb93516843dcc4, + limb2: 0x25c2fee69d51e108950ee66c, + limb3: 0xcbe02237fb28faee0f0f322 }, r0a1: u384 { - limb0: 0x768c8e90c36b2890abca51dd, - limb1: 0xcd07d9d3bccf2a4f5027d33c, - limb2: 0x7cbb12139e4b5bf8ba947f0, - limb3: 0x5c2617a8208cdb2b642beeb + limb0: 0xeb04a575e069162f1fbffeac, + limb1: 0x70a494b054c8efcb93da1757, + limb2: 0x47f9c06eaaca8c969afabd71, + limb3: 0x161220a792413bbe47629580 }, r1a0: u384 { - limb0: 0x9e8c9253e3c8023a2f2aa66f, - limb1: 0x3194df8addbcbab5ecfa8b5c, - limb2: 0xa436bd1a206b054f497d66e4, - limb3: 0x4f188382916484a5bf6a96c + limb0: 0xdcd325a8ba5cef5390f5d151, + limb1: 0xcdc42d134b74aa1a5062ce50, + limb2: 0x60be437e1aa4a9878448da68, + limb3: 0x3afadaca8a96f634f1a416c }, r1a1: u384 { - limb0: 0x7609e06b959844df28542750, - limb1: 0x8ca7a27304fe438fd5153ca0, - limb2: 0xad919b625bb21d78bab24e69, - limb3: 0x121fd65b618e8f232fa5d543 + limb0: 0x2a305361b67f6592fa2a5b23, + limb1: 0x60950369afb1c2180ac6372, + limb2: 0x18abd84df73559c2ec121d5d, + limb3: 0x30f5ef160b1fd967f8015ab } }, G2Line { r0a0: u384 { - limb0: 0x7777d2394e4f18a5d99b51db, - limb1: 0xd9e8abb0173ed5208964c127, - limb2: 0x82cac7aee8e30278ef5cbc09, - limb3: 0xbbde0839a75a4cf4a4c1fef + limb0: 0x57e9ad17c997b15ffbad6d82, + limb1: 0xb58a8d3786323d96d83553ef, + limb2: 0x7ebd9eee07a5e594ba52aa95, + limb3: 0x111e440bd97eda09284f64eb }, r0a1: u384 { - limb0: 0x2f85513ab5b05d6113edbb43, - limb1: 0xbf1efed0c6a578f2bb24a7b, - limb2: 0x5a5eda3726099aa87965325b, - limb3: 0xe1e3124312b82cfc6b217f1 + limb0: 0xd3b88ae51c3481402eba34a1, + limb1: 0x2d45a1eeba9f7b3b15c0f834, + limb2: 0xf01e42935934d35517d5917f, + limb3: 0x17873198e39dea6b3fe5129f }, r1a0: u384 { - limb0: 0x4f4d38c4873e2cf2bd2633e7, - limb1: 0xe4511a2f3d747298bac26e42, - limb2: 0x8715a0465400e72db2a63977, - limb3: 0x2f8071d7247b5f7bea65ea0 + limb0: 0x2f6c420e2c5b378a9412c0d0, + limb1: 0x955d38483a2f278270b22268, + limb2: 0x51a730b71b201f7aae89b10b, + limb3: 0x1085c28c787add8dcd06245a }, r1a1: u384 { - limb0: 0x6bf4e0d2bf19e5cafbedd17b, - limb1: 0xedf09ebbe9440879ea5f1215, - limb2: 0xf986f14e06b41134d52c81d6, - limb3: 0x223887ca9c0245f4140cffa + limb0: 0x6e0644b1126aa50e5b4773e6, + limb1: 0xdcbb3ddbc7340820e35af7a2, + limb2: 0x92c56f71378f46d9681bc464, + limb3: 0x14e782a8eeff9d9dd580cc4 } }, G2Line { r0a0: u384 { - limb0: 0x7777d2394e4f18a5d99b51db, - limb1: 0xd9e8abb0173ed5208964c127, - limb2: 0x82cac7aee8e30278ef5cbc09, - limb3: 0xbbde0839a75a4cf4a4c1fef + limb0: 0x57e9ad17c997b15ffbad6d82, + limb1: 0xb58a8d3786323d96d83553ef, + limb2: 0x7ebd9eee07a5e594ba52aa95, + limb3: 0x111e440bd97eda09284f64eb }, r0a1: u384 { - limb0: 0x2f85513ab5b05d6113edbb43, - limb1: 0xbf1efed0c6a578f2bb24a7b, - limb2: 0x5a5eda3726099aa87965325b, - limb3: 0xe1e3124312b82cfc6b217f1 + limb0: 0xd3b88ae51c3481402eba34a1, + limb1: 0x2d45a1eeba9f7b3b15c0f834, + limb2: 0xf01e42935934d35517d5917f, + limb3: 0x17873198e39dea6b3fe5129f }, r1a0: u384 { - limb0: 0x4f4d38c4873e2cf2bd2633e7, - limb1: 0xe4511a2f3d747298bac26e42, - limb2: 0x8715a0465400e72db2a63977, - limb3: 0x2f8071d7247b5f7bea65ea0 + limb0: 0x2f6c420e2c5b378a9412c0d0, + limb1: 0x955d38483a2f278270b22268, + limb2: 0x51a730b71b201f7aae89b10b, + limb3: 0x1085c28c787add8dcd06245a }, r1a1: u384 { - limb0: 0x6bf4e0d2bf19e5cafbedd17b, - limb1: 0xedf09ebbe9440879ea5f1215, - limb2: 0xf986f14e06b41134d52c81d6, - limb3: 0x223887ca9c0245f4140cffa + limb0: 0x6e0644b1126aa50e5b4773e6, + limb1: 0xdcbb3ddbc7340820e35af7a2, + limb2: 0x92c56f71378f46d9681bc464, + limb3: 0x14e782a8eeff9d9dd580cc4 } }, G2Line { r0a0: u384 { - limb0: 0x556f9d2a0ab73fe551363214, - limb1: 0x8a3b1c85360a55a0ffafc1c3, - limb2: 0x317646051a03e24fc653cdab, - limb3: 0x13d28c06cb2f2bb1e7883dc2 + limb0: 0xa17319d2ed4a91226b6d3089, + limb1: 0x1d8f224ab570fde86c7f2048, + limb2: 0xd622960850d94ec99de711af, + limb3: 0x124395d2fa862d11c431fefa }, r0a1: u384 { - limb0: 0x5f0b08a7365340a3c8b75dc2, - limb1: 0x57b4399817c86f17d7577624, - limb2: 0x48096e1c30fbf91be427a218, - limb3: 0x180ac39e5bee59bf9aa2a4f0 + limb0: 0x6ddb45f997e48b97942d9c3f, + limb1: 0x3d8b7f429593a772eb589e3a, + limb2: 0xbd411a9a2e3bafe120332263, + limb3: 0x4ae24dd579f310ebebb670a }, r1a0: u384 { - limb0: 0x9be051426e477304016d1e55, - limb1: 0xfa2f361d5b04827827c02fbd, - limb2: 0x1d438d1a2ad19fa30a7e38b4, - limb3: 0xa1888fa2112627d9831c11f + limb0: 0x700c5258e540544c8801a1d2, + limb1: 0x40032ac207f46794aacd4702, + limb2: 0x664658ab49940041c676ae29, + limb3: 0xbba2393a3187f3acdec0862 }, r1a1: u384 { - limb0: 0xd941e4486a728f0dedefc716, - limb1: 0x1c109b8f53ecba35b52c4693, - limb2: 0x8f0972e58c139cb8f54cfc55, - limb3: 0x923913cd439c6a8613fd04f + limb0: 0x1fb806ee192d153b8c48f37f, + limb1: 0xd8d017e6d2d0a8aade0c5570, + limb2: 0x8e857d4ca13adcefbf7a644c, + limb3: 0x5eeb6818a540c068177383c } }, G2Line { r0a0: u384 { - limb0: 0x556f9d2a0ab73fe551363214, - limb1: 0x8a3b1c85360a55a0ffafc1c3, - limb2: 0x317646051a03e24fc653cdab, - limb3: 0x13d28c06cb2f2bb1e7883dc2 + limb0: 0xa17319d2ed4a91226b6d3089, + limb1: 0x1d8f224ab570fde86c7f2048, + limb2: 0xd622960850d94ec99de711af, + limb3: 0x124395d2fa862d11c431fefa }, r0a1: u384 { - limb0: 0x5f0b08a7365340a3c8b75dc2, - limb1: 0x57b4399817c86f17d7577624, - limb2: 0x48096e1c30fbf91be427a218, - limb3: 0x180ac39e5bee59bf9aa2a4f0 + limb0: 0x6ddb45f997e48b97942d9c3f, + limb1: 0x3d8b7f429593a772eb589e3a, + limb2: 0xbd411a9a2e3bafe120332263, + limb3: 0x4ae24dd579f310ebebb670a }, r1a0: u384 { - limb0: 0x9be051426e477304016d1e55, - limb1: 0xfa2f361d5b04827827c02fbd, - limb2: 0x1d438d1a2ad19fa30a7e38b4, - limb3: 0xa1888fa2112627d9831c11f + limb0: 0x700c5258e540544c8801a1d2, + limb1: 0x40032ac207f46794aacd4702, + limb2: 0x664658ab49940041c676ae29, + limb3: 0xbba2393a3187f3acdec0862 }, r1a1: u384 { - limb0: 0xd941e4486a728f0dedefc716, - limb1: 0x1c109b8f53ecba35b52c4693, - limb2: 0x8f0972e58c139cb8f54cfc55, - limb3: 0x923913cd439c6a8613fd04f + limb0: 0x1fb806ee192d153b8c48f37f, + limb1: 0xd8d017e6d2d0a8aade0c5570, + limb2: 0x8e857d4ca13adcefbf7a644c, + limb3: 0x5eeb6818a540c068177383c } }, G2Line { r0a0: u384 { - limb0: 0xe18e5aab6316a2e6fff04479, - limb1: 0x5bc82a7660d3e0d96a08348, - limb2: 0xe311fe7fd20ffc8bac75767, - limb3: 0x121a9dd300bf31d06152f338 + limb0: 0x7ad0e4fa558ef8b11384085e, + limb1: 0x4329afaeac994168fe5e0cd7, + limb2: 0xb34e8702ef6b72f9a6008fa, + limb3: 0x99d918594ec79185a3f5298 }, r0a1: u384 { - limb0: 0x590212f6eb73ae83c8421d59, - limb1: 0xf7163fdef0dcc7eb8c52c09, - limb2: 0x7f351d3e3a7cd3ca02268f06, - limb3: 0x90fe23552205d334f424a0d + limb0: 0xbf74c3bbc5fa4f115e66c539, + limb1: 0x7da649aab4c450a071647d9d, + limb2: 0x3de1249ed9c917ba907ae87e, + limb3: 0x17fb63a54ba4b99d958c47f5 }, r1a0: u384 { - limb0: 0x336421284716d869c81cf464, - limb1: 0x837739bdd48a0d6e0a1f8887, - limb2: 0x7d8469e30a5c94abf87150d8, - limb3: 0x364b9ead996ca9b0f588ca3 + limb0: 0x29a111bd2ddf9b91308af11b, + limb1: 0xc6f5fc9404a96ca03bae4905, + limb2: 0x4cf974b0c052477bbda2b847, + limb3: 0x1825483020fd8780c86b1015 }, r1a1: u384 { - limb0: 0xe1a1b9378ec2f8a72e13ee71, - limb1: 0x28b53f2fba9a46f6808b4a52, - limb2: 0x9bf7a1255a66a2b7c9d9aaab, - limb3: 0x4155ae0717f1a22e6003658 + limb0: 0xbc7ecc69f7efad3e70b125e4, + limb1: 0x91fecbb081beb006bf85d061, + limb2: 0xc0eb86316968cc75b5960f2b, + limb3: 0xe38ff44ac8be45215c49ab0 } }, G2Line { r0a0: u384 { - limb0: 0xe18e5aab6316a2e6fff04479, - limb1: 0x5bc82a7660d3e0d96a08348, - limb2: 0xe311fe7fd20ffc8bac75767, - limb3: 0x121a9dd300bf31d06152f338 + limb0: 0x7ad0e4fa558ef8b11384085e, + limb1: 0x4329afaeac994168fe5e0cd7, + limb2: 0xb34e8702ef6b72f9a6008fa, + limb3: 0x99d918594ec79185a3f5298 }, r0a1: u384 { - limb0: 0x590212f6eb73ae83c8421d59, - limb1: 0xf7163fdef0dcc7eb8c52c09, - limb2: 0x7f351d3e3a7cd3ca02268f06, - limb3: 0x90fe23552205d334f424a0d + limb0: 0xbf74c3bbc5fa4f115e66c539, + limb1: 0x7da649aab4c450a071647d9d, + limb2: 0x3de1249ed9c917ba907ae87e, + limb3: 0x17fb63a54ba4b99d958c47f5 }, r1a0: u384 { - limb0: 0x336421284716d869c81cf464, - limb1: 0x837739bdd48a0d6e0a1f8887, - limb2: 0x7d8469e30a5c94abf87150d8, - limb3: 0x364b9ead996ca9b0f588ca3 + limb0: 0x29a111bd2ddf9b91308af11b, + limb1: 0xc6f5fc9404a96ca03bae4905, + limb2: 0x4cf974b0c052477bbda2b847, + limb3: 0x1825483020fd8780c86b1015 }, r1a1: u384 { - limb0: 0xe1a1b9378ec2f8a72e13ee71, - limb1: 0x28b53f2fba9a46f6808b4a52, - limb2: 0x9bf7a1255a66a2b7c9d9aaab, - limb3: 0x4155ae0717f1a22e6003658 + limb0: 0xbc7ecc69f7efad3e70b125e4, + limb1: 0x91fecbb081beb006bf85d061, + limb2: 0xc0eb86316968cc75b5960f2b, + limb3: 0xe38ff44ac8be45215c49ab0 } }, G2Line { r0a0: u384 { - limb0: 0x171f9cb304514c6721303900, - limb1: 0x97bf3f7115e6050dc111679c, - limb2: 0xc7c222e7a0aea39d56b8845c, - limb3: 0x2280a70f31e3773648a36e6 + limb0: 0xceb6d3ab08b373dc22ba995f, + limb1: 0x43d108be275c4c77ddb43e08, + limb2: 0xe516383196fb48b7d3febb1d, + limb3: 0xe4c3290d4c9ba0a816475d3 }, r0a1: u384 { - limb0: 0x20063ecf0ce1b895db1208a2, - limb1: 0x18c15cfea29e44959811a05, - limb2: 0x41932028d8b8df5687382c97, - limb3: 0x1938329909bc6e8d978e5fa9 + limb0: 0xd1fc69b97fb0e00d2934ae95, + limb1: 0xfc2f8a30bfd324e8dba3d887, + limb2: 0x160584b561794cc64271dc15, + limb3: 0x1009e338dbc724df50993a65 }, r1a0: u384 { - limb0: 0x6f3b64608aa63d3e10fec8b6, - limb1: 0x8f53f52eeca6646136030bef, - limb2: 0x1b4a0dc4501f77ea626edbe4, - limb3: 0xe0d0a0a8b6cff33e91a55ba + limb0: 0x475f046f42faf48c326b4bf1, + limb1: 0xb713074989c0643fceb94c0f, + limb2: 0xe26638cb83c9c26a954a45d9, + limb3: 0x1754c6aae904e4e80cd79f52 }, r1a1: u384 { - limb0: 0xc7c01f87f16016db8c8983ec, - limb1: 0x90c846f48f09a05ea9d488eb, - limb2: 0x94aa5f50050f824f841150f8, - limb3: 0x161bdd9e9e44c7bc790b7d9f + limb0: 0xd7db51e3579f8a30ee0b70aa, + limb1: 0x25e0748f0cfe2d0aa5c0c8a0, + limb2: 0x6d0c3361c1683f7dc395ddf0, + limb3: 0x1348bfc584e6abb75e34a3a6 } }, G2Line { r0a0: u384 { - limb0: 0x171f9cb304514c6721303900, - limb1: 0x97bf3f7115e6050dc111679c, - limb2: 0xc7c222e7a0aea39d56b8845c, - limb3: 0x2280a70f31e3773648a36e6 + limb0: 0xceb6d3ab08b373dc22ba995f, + limb1: 0x43d108be275c4c77ddb43e08, + limb2: 0xe516383196fb48b7d3febb1d, + limb3: 0xe4c3290d4c9ba0a816475d3 }, r0a1: u384 { - limb0: 0x20063ecf0ce1b895db1208a2, - limb1: 0x18c15cfea29e44959811a05, - limb2: 0x41932028d8b8df5687382c97, - limb3: 0x1938329909bc6e8d978e5fa9 + limb0: 0xd1fc69b97fb0e00d2934ae95, + limb1: 0xfc2f8a30bfd324e8dba3d887, + limb2: 0x160584b561794cc64271dc15, + limb3: 0x1009e338dbc724df50993a65 }, r1a0: u384 { - limb0: 0x6f3b64608aa63d3e10fec8b6, - limb1: 0x8f53f52eeca6646136030bef, - limb2: 0x1b4a0dc4501f77ea626edbe4, - limb3: 0xe0d0a0a8b6cff33e91a55ba + limb0: 0x475f046f42faf48c326b4bf1, + limb1: 0xb713074989c0643fceb94c0f, + limb2: 0xe26638cb83c9c26a954a45d9, + limb3: 0x1754c6aae904e4e80cd79f52 }, r1a1: u384 { - limb0: 0xc7c01f87f16016db8c8983ec, - limb1: 0x90c846f48f09a05ea9d488eb, - limb2: 0x94aa5f50050f824f841150f8, - limb3: 0x161bdd9e9e44c7bc790b7d9f + limb0: 0xd7db51e3579f8a30ee0b70aa, + limb1: 0x25e0748f0cfe2d0aa5c0c8a0, + limb2: 0x6d0c3361c1683f7dc395ddf0, + limb3: 0x1348bfc584e6abb75e34a3a6 } }, G2Line { r0a0: u384 { - limb0: 0x81601eb23cd40850588b9fc9, - limb1: 0x77fa411493cbdde689043915, - limb2: 0x66f3b03c202a23b0d0ea4370, - limb3: 0x2bc1652696fc5b1a9a912db + limb0: 0xb50d817096bd5c150cd6a82b, + limb1: 0x6bcc034040210fda6c8b4cff, + limb2: 0x9be137b6cb13d4ebe5a30e0e, + limb3: 0x84b37e667ea19363ed3ffd0 }, r0a1: u384 { - limb0: 0x4f23b14f7305313300851b87, - limb1: 0x9c6e6dde8910bfebca6cd4a3, - limb2: 0xd06d66dfb8948490c172080f, - limb3: 0x1793e66f9606aaa2fff627ea + limb0: 0x11c9654f31306495f8e6bc94, + limb1: 0xba6a2171d247ebe2b0f7f696, + limb2: 0xa6d4bf1963b95bcfb7c93d93, + limb3: 0x15ac996599cf39209a84ea5a }, r1a0: u384 { - limb0: 0xad4c61e92b709cc3d2f0307, - limb1: 0xac728b0e867a1b0fc0e62861, - limb2: 0x6d39493fdaf9fc8dc16803c2, - limb3: 0xc7281bcae3b9a09a2ad8bdd + limb0: 0x8d27e960a12b8ec9372cca66, + limb1: 0xaaba63010526c24d3c2840b7, + limb2: 0xaa25dc5b42e3ed60c93463ce, + limb3: 0x7fe44d4a1e4791800b1e0fa }, r1a1: u384 { - limb0: 0x55970e7cdff864bbf31a0105, - limb1: 0xcef779022a78d8a1b396cf98, - limb2: 0x555b1475fefd61eaab373aa6, - limb3: 0x2b6958cd42505b8543b6340 + limb0: 0xfc3e99620792c110703978d5, + limb1: 0xf4db1062eef1c755a07fbde6, + limb2: 0xf570179ead4983a489316019, + limb3: 0x46aaa91f573494bb66d079 } }, G2Line { r0a0: u384 { - limb0: 0x81601eb23cd40850588b9fc9, - limb1: 0x77fa411493cbdde689043915, - limb2: 0x66f3b03c202a23b0d0ea4370, - limb3: 0x2bc1652696fc5b1a9a912db + limb0: 0xb50d817096bd5c150cd6a82b, + limb1: 0x6bcc034040210fda6c8b4cff, + limb2: 0x9be137b6cb13d4ebe5a30e0e, + limb3: 0x84b37e667ea19363ed3ffd0 }, r0a1: u384 { - limb0: 0x4f23b14f7305313300851b87, - limb1: 0x9c6e6dde8910bfebca6cd4a3, - limb2: 0xd06d66dfb8948490c172080f, - limb3: 0x1793e66f9606aaa2fff627ea + limb0: 0x11c9654f31306495f8e6bc94, + limb1: 0xba6a2171d247ebe2b0f7f696, + limb2: 0xa6d4bf1963b95bcfb7c93d93, + limb3: 0x15ac996599cf39209a84ea5a }, r1a0: u384 { - limb0: 0xad4c61e92b709cc3d2f0307, - limb1: 0xac728b0e867a1b0fc0e62861, - limb2: 0x6d39493fdaf9fc8dc16803c2, - limb3: 0xc7281bcae3b9a09a2ad8bdd + limb0: 0x8d27e960a12b8ec9372cca66, + limb1: 0xaaba63010526c24d3c2840b7, + limb2: 0xaa25dc5b42e3ed60c93463ce, + limb3: 0x7fe44d4a1e4791800b1e0fa }, r1a1: u384 { - limb0: 0x55970e7cdff864bbf31a0105, - limb1: 0xcef779022a78d8a1b396cf98, - limb2: 0x555b1475fefd61eaab373aa6, - limb3: 0x2b6958cd42505b8543b6340 + limb0: 0xfc3e99620792c110703978d5, + limb1: 0xf4db1062eef1c755a07fbde6, + limb2: 0xf570179ead4983a489316019, + limb3: 0x46aaa91f573494bb66d079 } }, G2Line { r0a0: u384 { - limb0: 0x67068eee99d3ecc49bb56857, - limb1: 0xdb7677c4aa22569099f2be9c, - limb2: 0x9fd7de4747c30f16c1f85c71, - limb3: 0xc70d26c56b98ababe9a2a5 + limb0: 0xe9f685c65bd9792c8adee32, + limb1: 0xecc42b0c513df20e80dfcb0c, + limb2: 0xf97767f63bec29912643b18c, + limb3: 0x658e5d9dd13b65d9d50e485 }, r0a1: u384 { - limb0: 0x29a9894b17dcb46fe3415343, - limb1: 0xf61b45e97e240a20caf0fd11, - limb2: 0x9ee0767db6b47fe85a2cfd38, - limb3: 0x5d6a93e292110fcdcff1ac7 + limb0: 0xd80080e976138f1d433aee10, + limb1: 0xd60db98a0a46712bf28de887, + limb2: 0x9ec4a90a9b07bdfb9a8f9cac, + limb3: 0x1269ede044c4c6361453dbd4 }, r1a0: u384 { - limb0: 0x8ff88a300f1bf3e071f1dc84, - limb1: 0xc6511034401c5fabc0030fab, - limb2: 0x573001457d3e217db60cb64, - limb3: 0x247999b38e7adcfa43d5ed1 + limb0: 0x33266d196827c62d12d911f5, + limb1: 0x3273f6ca8f6ac372356ac475, + limb2: 0x3dbd80e6d1898f8e7cefbbd8, + limb3: 0x17b88f8e9c438e00a591eb3 }, r1a1: u384 { - limb0: 0x40ba9bb59ae7699a5ab1e5a0, - limb1: 0xcab3e88958351eae1a47a51f, - limb2: 0x255c2105e645950f7578acc, - limb3: 0x13b8761c49cd7a07712bec62 + limb0: 0x6bf73b94433c19c358c705da, + limb1: 0xa52a6f1848089194d82c9450, + limb2: 0x41a0fcd2736929e504cab889, + limb3: 0xe660555872f31d5085b6c20 } }, G2Line { r0a0: u384 { - limb0: 0x67068eee99d3ecc49bb56857, - limb1: 0xdb7677c4aa22569099f2be9c, - limb2: 0x9fd7de4747c30f16c1f85c71, - limb3: 0xc70d26c56b98ababe9a2a5 + limb0: 0xe9f685c65bd9792c8adee32, + limb1: 0xecc42b0c513df20e80dfcb0c, + limb2: 0xf97767f63bec29912643b18c, + limb3: 0x658e5d9dd13b65d9d50e485 }, r0a1: u384 { - limb0: 0x29a9894b17dcb46fe3415343, - limb1: 0xf61b45e97e240a20caf0fd11, - limb2: 0x9ee0767db6b47fe85a2cfd38, - limb3: 0x5d6a93e292110fcdcff1ac7 + limb0: 0xd80080e976138f1d433aee10, + limb1: 0xd60db98a0a46712bf28de887, + limb2: 0x9ec4a90a9b07bdfb9a8f9cac, + limb3: 0x1269ede044c4c6361453dbd4 }, r1a0: u384 { - limb0: 0x8ff88a300f1bf3e071f1dc84, - limb1: 0xc6511034401c5fabc0030fab, - limb2: 0x573001457d3e217db60cb64, - limb3: 0x247999b38e7adcfa43d5ed1 + limb0: 0x33266d196827c62d12d911f5, + limb1: 0x3273f6ca8f6ac372356ac475, + limb2: 0x3dbd80e6d1898f8e7cefbbd8, + limb3: 0x17b88f8e9c438e00a591eb3 }, r1a1: u384 { - limb0: 0x40ba9bb59ae7699a5ab1e5a0, - limb1: 0xcab3e88958351eae1a47a51f, - limb2: 0x255c2105e645950f7578acc, - limb3: 0x13b8761c49cd7a07712bec62 + limb0: 0x6bf73b94433c19c358c705da, + limb1: 0xa52a6f1848089194d82c9450, + limb2: 0x41a0fcd2736929e504cab889, + limb3: 0xe660555872f31d5085b6c20 } }, G2Line { r0a0: u384 { - limb0: 0x880d3bd4ccf9a0fe968e8789, - limb1: 0xa0711d2ba345e231aaa713a0, - limb2: 0x7aa1f1aac9417674a581278b, - limb3: 0xdcc73a29237984356e9fb8a + limb0: 0xade8d05561fb99ceb1b398dc, + limb1: 0x9e365afb0af81213414cfaf7, + limb2: 0x7f77a69390559e530043141a, + limb3: 0xc209c5c88e6c6f2b043351b }, r0a1: u384 { - limb0: 0xf6a6d3c56a77192fb2c758b4, - limb1: 0x45dd2f0e70c486a3fe65156, - limb2: 0xd09059fcb6597094a52474c, - limb3: 0xbddfc89a6ea77681408e2a4 + limb0: 0x7565700ffe842d640fc1ead7, + limb1: 0xd7a72ca686ca6e365e66674f, + limb2: 0x74d23c8889d674ed594cdeba, + limb3: 0x3b785972f83859804ba7b9f }, r1a0: u384 { - limb0: 0x2c86f978acc27b031356a741, - limb1: 0x44cca98efe5f36f4bacf262c, - limb2: 0x609261dcca85611963c6e1eb, - limb3: 0x171898b7c8de046ec04fe57c + limb0: 0x6762e6916c0e2c81f7508214, + limb1: 0xd0d08610571c6228f47f1451, + limb2: 0x81ec1b03edd35c515bf8d1cd, + limb3: 0x41a7141598d94d8d557ea13 }, r1a1: u384 { - limb0: 0xc685220f17669cc13e570e2e, - limb1: 0xff3f939748e717e405ca648e, - limb2: 0xde8f8801350a0975673698fc, - limb3: 0x86cd8199be5cf10b013e537 + limb0: 0xc76846d9fc76bba55279cd97, + limb1: 0xf475886e2b2e07119618d34c, + limb2: 0x7cbf7dfaa9bdf3f6b1b6add8, + limb3: 0xe697b86b1a1a256ea1fc7bd } }, G2Line { r0a0: u384 { - limb0: 0x880d3bd4ccf9a0fe968e8789, - limb1: 0xa0711d2ba345e231aaa713a0, - limb2: 0x7aa1f1aac9417674a581278b, - limb3: 0xdcc73a29237984356e9fb8a + limb0: 0xade8d05561fb99ceb1b398dc, + limb1: 0x9e365afb0af81213414cfaf7, + limb2: 0x7f77a69390559e530043141a, + limb3: 0xc209c5c88e6c6f2b043351b }, r0a1: u384 { - limb0: 0xf6a6d3c56a77192fb2c758b4, - limb1: 0x45dd2f0e70c486a3fe65156, - limb2: 0xd09059fcb6597094a52474c, - limb3: 0xbddfc89a6ea77681408e2a4 + limb0: 0x7565700ffe842d640fc1ead7, + limb1: 0xd7a72ca686ca6e365e66674f, + limb2: 0x74d23c8889d674ed594cdeba, + limb3: 0x3b785972f83859804ba7b9f }, r1a0: u384 { - limb0: 0x2c86f978acc27b031356a741, - limb1: 0x44cca98efe5f36f4bacf262c, - limb2: 0x609261dcca85611963c6e1eb, - limb3: 0x171898b7c8de046ec04fe57c + limb0: 0x6762e6916c0e2c81f7508214, + limb1: 0xd0d08610571c6228f47f1451, + limb2: 0x81ec1b03edd35c515bf8d1cd, + limb3: 0x41a7141598d94d8d557ea13 }, r1a1: u384 { - limb0: 0xc685220f17669cc13e570e2e, - limb1: 0xff3f939748e717e405ca648e, - limb2: 0xde8f8801350a0975673698fc, - limb3: 0x86cd8199be5cf10b013e537 + limb0: 0xc76846d9fc76bba55279cd97, + limb1: 0xf475886e2b2e07119618d34c, + limb2: 0x7cbf7dfaa9bdf3f6b1b6add8, + limb3: 0xe697b86b1a1a256ea1fc7bd } }, G2Line { r0a0: u384 { - limb0: 0x2b6428454548c0190366213a, - limb1: 0x3e3544fc8419633d652850e2, - limb2: 0x88eb1dfe0139085d74d1d2c, - limb3: 0x181954091b061016af7561f7 + limb0: 0x3e2bda3bb882029aa8c68c07, + limb1: 0xa0a7e087ad38e14e08cef273, + limb2: 0x5808f126af4a19c3133f879a, + limb3: 0x19bd29ab402e8d268fcb24d2 }, r0a1: u384 { - limb0: 0xa57485995c10c639ef0d2920, - limb1: 0x568a647012dec6277296aaf1, - limb2: 0xcbf03ae9f55b5ab12ca787f7, - limb3: 0xdeaf7d0b57b07347a51d1c5 + limb0: 0xcd0ea0d4ee5a1532a9730806, + limb1: 0x7845796a605b0f7861d95340, + limb2: 0x89ef8948802539a10a58b812, + limb3: 0x1053849b92ac68c309e109c1 }, r1a0: u384 { - limb0: 0xc242889b9f1dd238037b4882, - limb1: 0xed9bc19af6c6415499772fc3, - limb2: 0x90b9fdc6818d6b1c7ea49cb0, - limb3: 0x5e40de9e6122f0a5de2d09e + limb0: 0xa3815eaa263de8563f27a5a9, + limb1: 0xde94b962e70316398ed6dca9, + limb2: 0xa87f14f61a4ac2b9e62df692, + limb3: 0x252bb6ddefddda543bb5ffd }, r1a1: u384 { - limb0: 0x9bd94b666295b8f2a3f2176b, - limb1: 0xa59876c08e22a3e1c7a824d7, - limb2: 0x14575edbbc267b0ec0e6d689, - limb3: 0x1123a0734a97e69f73c5347c + limb0: 0x60d60e0da595356015916692, + limb1: 0x4b828f50f32b12b44b33e235, + limb2: 0x769ed0c50fe7fa25ffdc245a, + limb3: 0x6e387748806b8214f1b79e3 } }, G2Line { r0a0: u384 { - limb0: 0x2b6428454548c0190366213a, - limb1: 0x3e3544fc8419633d652850e2, - limb2: 0x88eb1dfe0139085d74d1d2c, - limb3: 0x181954091b061016af7561f7 + limb0: 0x3e2bda3bb882029aa8c68c07, + limb1: 0xa0a7e087ad38e14e08cef273, + limb2: 0x5808f126af4a19c3133f879a, + limb3: 0x19bd29ab402e8d268fcb24d2 }, r0a1: u384 { - limb0: 0xa57485995c10c639ef0d2920, - limb1: 0x568a647012dec6277296aaf1, - limb2: 0xcbf03ae9f55b5ab12ca787f7, - limb3: 0xdeaf7d0b57b07347a51d1c5 + limb0: 0xcd0ea0d4ee5a1532a9730806, + limb1: 0x7845796a605b0f7861d95340, + limb2: 0x89ef8948802539a10a58b812, + limb3: 0x1053849b92ac68c309e109c1 }, r1a0: u384 { - limb0: 0xc242889b9f1dd238037b4882, - limb1: 0xed9bc19af6c6415499772fc3, - limb2: 0x90b9fdc6818d6b1c7ea49cb0, - limb3: 0x5e40de9e6122f0a5de2d09e + limb0: 0xa3815eaa263de8563f27a5a9, + limb1: 0xde94b962e70316398ed6dca9, + limb2: 0xa87f14f61a4ac2b9e62df692, + limb3: 0x252bb6ddefddda543bb5ffd }, r1a1: u384 { - limb0: 0x9bd94b666295b8f2a3f2176b, - limb1: 0xa59876c08e22a3e1c7a824d7, - limb2: 0x14575edbbc267b0ec0e6d689, - limb3: 0x1123a0734a97e69f73c5347c + limb0: 0x60d60e0da595356015916692, + limb1: 0x4b828f50f32b12b44b33e235, + limb2: 0x769ed0c50fe7fa25ffdc245a, + limb3: 0x6e387748806b8214f1b79e3 } }, G2Line { r0a0: u384 { - limb0: 0x34e8cb198eace82121bc7c27, - limb1: 0x736cd48794b372be307b50ce, - limb2: 0x35343b387964ae3a3a000b07, - limb3: 0x1e4f8f3259be5e7ea6e5c1c + limb0: 0xfd057da0cb173025ce2f998a, + limb1: 0x9e4d6149a2fc05606e592731, + limb2: 0x8b1847b9941797009134cfa1, + limb3: 0x18da833da14d6db1d7986937 }, r0a1: u384 { - limb0: 0xeb720db4b70393977b0590f5, - limb1: 0x281ea010a33bbcc0f60b1010, - limb2: 0x850fdb0c6c5985e350b0594b, - limb3: 0xdccb3239aef9fb3ea99925c + limb0: 0x5eb7e3f27b2ab2f1c56f91cb, + limb1: 0x3b6645812dc68a27333141f2, + limb2: 0xfb06e0ba9a36c40cbd2837b9, + limb3: 0xb998d9cd4e1fdb1c7673a4d }, r1a0: u384 { - limb0: 0x11ad841cbc930345696d571, - limb1: 0xc07c51bf9f61e486567931c3, - limb2: 0x8393343949c8d5beec6566df, - limb3: 0x10940a12b57177b3ac1a153b + limb0: 0xea6b77d2854c6efa8751c13, + limb1: 0x2a8bc25dab4cbfb0083ad510, + limb2: 0xc394a4e0f3acd2aa2f2e5029, + limb3: 0x4737c2c084ac35ec59d139d }, r1a1: u384 { - limb0: 0x4653b6e99e52101cd422766d, - limb1: 0x427722f626a1dfc2d8c986ad, - limb2: 0xc804620e50af95d375861be0, - limb3: 0x87ab7b6d29766eda6303b59 + limb0: 0xaff0146957bcf99d6005201c, + limb1: 0x5cc5e1fb8259ea6e5ffe87dc, + limb2: 0xd9372a44e3423a7331ac2435, + limb3: 0x15d0e555bcdc0d8d48cad595 } }, G2Line { r0a0: u384 { - limb0: 0x34e8cb198eace82121bc7c27, - limb1: 0x736cd48794b372be307b50ce, - limb2: 0x35343b387964ae3a3a000b07, - limb3: 0x1e4f8f3259be5e7ea6e5c1c + limb0: 0xfd057da0cb173025ce2f998a, + limb1: 0x9e4d6149a2fc05606e592731, + limb2: 0x8b1847b9941797009134cfa1, + limb3: 0x18da833da14d6db1d7986937 }, r0a1: u384 { - limb0: 0xeb720db4b70393977b0590f5, - limb1: 0x281ea010a33bbcc0f60b1010, - limb2: 0x850fdb0c6c5985e350b0594b, - limb3: 0xdccb3239aef9fb3ea99925c + limb0: 0x5eb7e3f27b2ab2f1c56f91cb, + limb1: 0x3b6645812dc68a27333141f2, + limb2: 0xfb06e0ba9a36c40cbd2837b9, + limb3: 0xb998d9cd4e1fdb1c7673a4d }, r1a0: u384 { - limb0: 0x11ad841cbc930345696d571, - limb1: 0xc07c51bf9f61e486567931c3, - limb2: 0x8393343949c8d5beec6566df, - limb3: 0x10940a12b57177b3ac1a153b + limb0: 0xea6b77d2854c6efa8751c13, + limb1: 0x2a8bc25dab4cbfb0083ad510, + limb2: 0xc394a4e0f3acd2aa2f2e5029, + limb3: 0x4737c2c084ac35ec59d139d }, r1a1: u384 { - limb0: 0x4653b6e99e52101cd422766d, - limb1: 0x427722f626a1dfc2d8c986ad, - limb2: 0xc804620e50af95d375861be0, - limb3: 0x87ab7b6d29766eda6303b59 + limb0: 0xaff0146957bcf99d6005201c, + limb1: 0x5cc5e1fb8259ea6e5ffe87dc, + limb2: 0xd9372a44e3423a7331ac2435, + limb3: 0x15d0e555bcdc0d8d48cad595 } }, G2Line { r0a0: u384 { - limb0: 0x9c8b6e9a08eeeac9bd0192ac, - limb1: 0x900ddadd276dd8918c715b06, - limb2: 0x5fee3630aa0f5a1b6349f662, - limb3: 0x571366d8d4a8a29802bafcc + limb0: 0x828425fca9d6cd76f222c299, + limb1: 0x2b0db667ad7776a32372e139, + limb2: 0x7ff7fb851413603a6f0d2fef, + limb3: 0x166c41ed7430420750164f1a }, r0a1: u384 { - limb0: 0xc55d0c8cd8e5b844ed0e9597, - limb1: 0xd903e49834da0723f7dc71ae, - limb2: 0x9a1929c2c5482c0ccbd3c1e4, - limb3: 0x15a86f4427e03193ee05977b + limb0: 0xe3788c1577b092a1a89686b2, + limb1: 0x5fdf8356c68add3572e76a25, + limb2: 0x37115b7994287a9b345dd0ed, + limb3: 0xffcc588c7d1b96c86dc3aaf }, r1a0: u384 { - limb0: 0xc218d6ff8e758eaa9701096e, - limb1: 0x4d3dad3ea10d6b7158021305, - limb2: 0x6baa4fb24382d5558044a8f3, - limb3: 0xc1acad482bd36419a1789a + limb0: 0xbc7e65f493e052b119a9c84f, + limb1: 0x11aa017bcbfc878c46a18c52, + limb2: 0xa65af0bdbf93483836c11b4d, + limb3: 0xd2f8087436fff404d7e6bc }, r1a1: u384 { - limb0: 0x1511c691e271f96e5dda69d7, - limb1: 0xa8516f29b76b3e9df6da2694, - limb2: 0x68a8aa8a39b5d2e3f25f419b, - limb3: 0x7fc4bbf6a85913856d20ab6 + limb0: 0xc171d5e78129decdde583c1f, + limb1: 0x300b7521c43311b00cb16b80, + limb2: 0xbccbe679495d33a3fcb98e54, + limb3: 0x13fe5206e449d407a961a9d0 } }, G2Line { r0a0: u384 { - limb0: 0x9c8b6e9a08eeeac9bd0192ac, - limb1: 0x900ddadd276dd8918c715b06, - limb2: 0x5fee3630aa0f5a1b6349f662, - limb3: 0x571366d8d4a8a29802bafcc + limb0: 0x828425fca9d6cd76f222c299, + limb1: 0x2b0db667ad7776a32372e139, + limb2: 0x7ff7fb851413603a6f0d2fef, + limb3: 0x166c41ed7430420750164f1a }, r0a1: u384 { - limb0: 0xc55d0c8cd8e5b844ed0e9597, - limb1: 0xd903e49834da0723f7dc71ae, - limb2: 0x9a1929c2c5482c0ccbd3c1e4, - limb3: 0x15a86f4427e03193ee05977b + limb0: 0xe3788c1577b092a1a89686b2, + limb1: 0x5fdf8356c68add3572e76a25, + limb2: 0x37115b7994287a9b345dd0ed, + limb3: 0xffcc588c7d1b96c86dc3aaf }, r1a0: u384 { - limb0: 0xc218d6ff8e758eaa9701096e, - limb1: 0x4d3dad3ea10d6b7158021305, - limb2: 0x6baa4fb24382d5558044a8f3, - limb3: 0xc1acad482bd36419a1789a + limb0: 0xbc7e65f493e052b119a9c84f, + limb1: 0x11aa017bcbfc878c46a18c52, + limb2: 0xa65af0bdbf93483836c11b4d, + limb3: 0xd2f8087436fff404d7e6bc }, r1a1: u384 { - limb0: 0x1511c691e271f96e5dda69d7, - limb1: 0xa8516f29b76b3e9df6da2694, - limb2: 0x68a8aa8a39b5d2e3f25f419b, - limb3: 0x7fc4bbf6a85913856d20ab6 + limb0: 0xc171d5e78129decdde583c1f, + limb1: 0x300b7521c43311b00cb16b80, + limb2: 0xbccbe679495d33a3fcb98e54, + limb3: 0x13fe5206e449d407a961a9d0 } }, G2Line { r0a0: u384 { - limb0: 0xb34f751dec1ef8dc2f2782b7, - limb1: 0x22aa7baef23a8f4e88a8e7dd, - limb2: 0xf1def2ce51b85fc6e7fe172d, - limb3: 0x18029bf4ca55e59cc1ed9c3a + limb0: 0xe075c3e46497811318f1aafc, + limb1: 0xc9ee6637a1f378458c67a6a2, + limb2: 0x584f8f6bff2beb100c77bbaa, + limb3: 0xcabbaeccf33edbba456b3aa }, r0a1: u384 { - limb0: 0x3c4ae4af7b0a9b4d40a1e7c8, - limb1: 0x731c8bfdc23929b96388f212, - limb2: 0x21834907a02f60bf62c0cbbb, - limb3: 0x15f74b484259f238cc258db8 + limb0: 0xf15b790c2edf5b3c99fe4876, + limb1: 0x875fb1351df4569cb81efb59, + limb2: 0xfacb5e54e4995b34f5ea8a9d, + limb3: 0x498c1832574b066e7f66b65 }, r1a0: u384 { - limb0: 0xce70896bd751d792fa6e66ef, - limb1: 0xa9733370fa0fa1f632b9ba6d, - limb2: 0x1062d33c7106fdebf0a2213e, - limb3: 0x7b7769a0a01150e92fa770d + limb0: 0xd7010c92fd3eb8bf086d7a51, + limb1: 0x43899406a876ca11b6a17538, + limb2: 0x3c5f51da0ddee80dbc5b343b, + limb3: 0xf44ad67280e30f4d6191d23 }, r1a1: u384 { - limb0: 0xb806509799453fb653288a6d, - limb1: 0xd65f1f7d6e2fba3f1df98725, - limb2: 0x3ed17d13fa9147db08a432bf, - limb3: 0x11ed65840b0616c76524b9d7 + limb0: 0xb622b3289749d00b16b02f9d, + limb1: 0xbc460741ba8c03787b256be9, + limb2: 0x53b5ac101f741bc6ba3a412f, + limb3: 0x14610dd7fe56661dc12e7017 } }, G2Line { r0a0: u384 { - limb0: 0xb34f751dec1ef8dc2f2782b7, - limb1: 0x22aa7baef23a8f4e88a8e7dd, - limb2: 0xf1def2ce51b85fc6e7fe172d, - limb3: 0x18029bf4ca55e59cc1ed9c3a + limb0: 0xe075c3e46497811318f1aafc, + limb1: 0xc9ee6637a1f378458c67a6a2, + limb2: 0x584f8f6bff2beb100c77bbaa, + limb3: 0xcabbaeccf33edbba456b3aa }, r0a1: u384 { - limb0: 0x3c4ae4af7b0a9b4d40a1e7c8, - limb1: 0x731c8bfdc23929b96388f212, - limb2: 0x21834907a02f60bf62c0cbbb, - limb3: 0x15f74b484259f238cc258db8 + limb0: 0xf15b790c2edf5b3c99fe4876, + limb1: 0x875fb1351df4569cb81efb59, + limb2: 0xfacb5e54e4995b34f5ea8a9d, + limb3: 0x498c1832574b066e7f66b65 }, r1a0: u384 { - limb0: 0xce70896bd751d792fa6e66ef, - limb1: 0xa9733370fa0fa1f632b9ba6d, - limb2: 0x1062d33c7106fdebf0a2213e, - limb3: 0x7b7769a0a01150e92fa770d + limb0: 0xd7010c92fd3eb8bf086d7a51, + limb1: 0x43899406a876ca11b6a17538, + limb2: 0x3c5f51da0ddee80dbc5b343b, + limb3: 0xf44ad67280e30f4d6191d23 }, r1a1: u384 { - limb0: 0xb806509799453fb653288a6d, - limb1: 0xd65f1f7d6e2fba3f1df98725, - limb2: 0x3ed17d13fa9147db08a432bf, - limb3: 0x11ed65840b0616c76524b9d7 + limb0: 0xb622b3289749d00b16b02f9d, + limb1: 0xbc460741ba8c03787b256be9, + limb2: 0x53b5ac101f741bc6ba3a412f, + limb3: 0x14610dd7fe56661dc12e7017 } }, G2Line { r0a0: u384 { - limb0: 0x4d0a2eef416100af47f14e34, - limb1: 0x8dd821f9fde4ae6ed497ab78, - limb2: 0x4eab7582054e3f5c408c4885, - limb3: 0x1315201d72ce40fa6b1805c0 + limb0: 0x3289f694418a3355784156cd, + limb1: 0x9e5388d5b5d0a75275470869, + limb2: 0x8a84b134b920014341616e0c, + limb3: 0x17e7c92f7ff289ec1b0eb4a4 }, r0a1: u384 { - limb0: 0x6585a84bb01c0094343f9c9, - limb1: 0x8ddf986955cef8d4ae4c4840, - limb2: 0xd09ea0d426194c3895389574, - limb3: 0x4a54350b8370de7408d00b + limb0: 0xfb2bdc0a4813315c10592f30, + limb1: 0xfe0a10e2cefd8e957736628b, + limb2: 0x968cc921ed9abec9269b5786, + limb3: 0xb36f790715d65f359921941 }, r1a0: u384 { - limb0: 0x5e6db4a155d7df7c74759a70, - limb1: 0x2769e382c942d6975f3f7c93, - limb2: 0x88d0b31f250abaa3ca56d54f, - limb3: 0xd789d564683477e02f431a5 + limb0: 0xf9994278889345a5e3e525b, + limb1: 0x8279eab2379884433bc2637e, + limb2: 0x73d76c8ecc39d1f8cc458824, + limb3: 0xd3fe945a75801d2acc3134a }, r1a1: u384 { - limb0: 0x780538a6d243204538dc1fc8, - limb1: 0xe978843d1de05a33f6fb88d4, - limb2: 0x3d06c9b2c457ebeed7599974, - limb3: 0x114b7053a2cbd04ca16cd569 + limb0: 0x55d20208b88794ff0fe6ff65, + limb1: 0xc346b74aab2344fca9ff5c62, + limb2: 0x9dde8f58210d2b715eb4384, + limb3: 0x6ab0c2780fd0aadedb1ffa6 } }, G2Line { r0a0: u384 { - limb0: 0x4d0a2eef416100af47f14e34, - limb1: 0x8dd821f9fde4ae6ed497ab78, - limb2: 0x4eab7582054e3f5c408c4885, - limb3: 0x1315201d72ce40fa6b1805c0 + limb0: 0x3289f694418a3355784156cd, + limb1: 0x9e5388d5b5d0a75275470869, + limb2: 0x8a84b134b920014341616e0c, + limb3: 0x17e7c92f7ff289ec1b0eb4a4 }, r0a1: u384 { - limb0: 0x6585a84bb01c0094343f9c9, - limb1: 0x8ddf986955cef8d4ae4c4840, - limb2: 0xd09ea0d426194c3895389574, - limb3: 0x4a54350b8370de7408d00b + limb0: 0xfb2bdc0a4813315c10592f30, + limb1: 0xfe0a10e2cefd8e957736628b, + limb2: 0x968cc921ed9abec9269b5786, + limb3: 0xb36f790715d65f359921941 }, r1a0: u384 { - limb0: 0x5e6db4a155d7df7c74759a70, - limb1: 0x2769e382c942d6975f3f7c93, - limb2: 0x88d0b31f250abaa3ca56d54f, - limb3: 0xd789d564683477e02f431a5 + limb0: 0xf9994278889345a5e3e525b, + limb1: 0x8279eab2379884433bc2637e, + limb2: 0x73d76c8ecc39d1f8cc458824, + limb3: 0xd3fe945a75801d2acc3134a }, r1a1: u384 { - limb0: 0x780538a6d243204538dc1fc8, - limb1: 0xe978843d1de05a33f6fb88d4, - limb2: 0x3d06c9b2c457ebeed7599974, - limb3: 0x114b7053a2cbd04ca16cd569 + limb0: 0x55d20208b88794ff0fe6ff65, + limb1: 0xc346b74aab2344fca9ff5c62, + limb2: 0x9dde8f58210d2b715eb4384, + limb3: 0x6ab0c2780fd0aadedb1ffa6 } }, G2Line { r0a0: u384 { - limb0: 0x7bf30d63fb42dad3c8217048, - limb1: 0xea76a199fe539dbfaeda1e20, - limb2: 0x18ea3e640aef4651c2bd095c, - limb3: 0x140a138b59722d6a4f3e0a2d + limb0: 0x5a3e5e1697e09425b898db66, + limb1: 0xbc1396eefa2c96a1be6ba4c4, + limb2: 0x94851b8964323d7c8ed145f7, + limb3: 0x89a8fd1fd59927115c38ef8 }, r0a1: u384 { - limb0: 0xf34161555fc3649879abc424, - limb1: 0xd848b352485e56905d3e3b4d, - limb2: 0x73b773ec4b89403e786f7753, - limb3: 0x145ee4f638d6f413d88b13a1 + limb0: 0xa410a6b40708300c5ff93622, + limb1: 0x9f8390f98fd525a678892dda, + limb2: 0xa799373de5c454a11e12b305, + limb3: 0x101747fa8b1d04dee8f363b0 }, r1a0: u384 { - limb0: 0xb604ff986f4652b2cf4fa884, - limb1: 0x7f1904daa4ff8c0ef99e19ac, - limb2: 0xfe453ad9e9265684bcbe3395, - limb3: 0xddb246eb5a88b1f58e5bcf2 + limb0: 0xa807f8a5b13ceb81cda82fa8, + limb1: 0xb2f165c491d5c47bfe65453, + limb2: 0x215cdd59a4776d378aa1dcd3, + limb3: 0x19a8a47644e2d5c48fb32261 }, r1a1: u384 { - limb0: 0x7dec7a712dfdfdc310de61e, - limb1: 0xe299af5fa63ea7a347bc8efa, - limb2: 0x74679586f7a477f41035814e, - limb3: 0x8d3c1701fcbccd25f7ed828 + limb0: 0xacb3c56efc35cb7292cd16e7, + limb1: 0x290fd760f9c8ecd7cecb08dd, + limb2: 0x41a779eb8cecbc69db519618, + limb3: 0x185772d8ebcc6861748d643b } }, G2Line { r0a0: u384 { - limb0: 0x7bf30d63fb42dad3c8217048, - limb1: 0xea76a199fe539dbfaeda1e20, - limb2: 0x18ea3e640aef4651c2bd095c, - limb3: 0x140a138b59722d6a4f3e0a2d + limb0: 0x5a3e5e1697e09425b898db66, + limb1: 0xbc1396eefa2c96a1be6ba4c4, + limb2: 0x94851b8964323d7c8ed145f7, + limb3: 0x89a8fd1fd59927115c38ef8 }, r0a1: u384 { - limb0: 0xf34161555fc3649879abc424, - limb1: 0xd848b352485e56905d3e3b4d, - limb2: 0x73b773ec4b89403e786f7753, - limb3: 0x145ee4f638d6f413d88b13a1 + limb0: 0xa410a6b40708300c5ff93622, + limb1: 0x9f8390f98fd525a678892dda, + limb2: 0xa799373de5c454a11e12b305, + limb3: 0x101747fa8b1d04dee8f363b0 }, r1a0: u384 { - limb0: 0xb604ff986f4652b2cf4fa884, - limb1: 0x7f1904daa4ff8c0ef99e19ac, - limb2: 0xfe453ad9e9265684bcbe3395, - limb3: 0xddb246eb5a88b1f58e5bcf2 + limb0: 0xa807f8a5b13ceb81cda82fa8, + limb1: 0xb2f165c491d5c47bfe65453, + limb2: 0x215cdd59a4776d378aa1dcd3, + limb3: 0x19a8a47644e2d5c48fb32261 }, r1a1: u384 { - limb0: 0x7dec7a712dfdfdc310de61e, - limb1: 0xe299af5fa63ea7a347bc8efa, - limb2: 0x74679586f7a477f41035814e, - limb3: 0x8d3c1701fcbccd25f7ed828 + limb0: 0xacb3c56efc35cb7292cd16e7, + limb1: 0x290fd760f9c8ecd7cecb08dd, + limb2: 0x41a779eb8cecbc69db519618, + limb3: 0x185772d8ebcc6861748d643b } }, G2Line { r0a0: u384 { - limb0: 0x99df2a930b5c6f99531c93f1, - limb1: 0x8ed1fd1a8dc4b56105269003, - limb2: 0xd4a4e032a951f2bc0b9fc5ae, - limb3: 0x187f43ceb3c3c9f6b3a7dc1 + limb0: 0x11845c8f378370c5ea1988eb, + limb1: 0x1a26c58a1b5b3e9927e386f7, + limb2: 0x1614136e352ccbeb1a708bc6, + limb3: 0x14b59d16f3f82c70a6dc9542 }, r0a1: u384 { - limb0: 0x76bb77dfc0affc622a2b6f6e, - limb1: 0x4024d70db09178c054327462, - limb2: 0xa665430d70b64ea361b164e0, - limb3: 0x76bf24185407ddb48857729 + limb0: 0xa6251ffb4e4ec02c6eb099d4, + limb1: 0xa1486c797b3c5efa056554a9, + limb2: 0x951b07cb2f028ead174faf1d, + limb3: 0x16995470027165033faaff45 }, r1a0: u384 { - limb0: 0xdfa89b0e41374546ae0d1a7b, - limb1: 0xd14c257abb8647a74eba67e7, - limb2: 0x1306d0e776f98342103af22b, - limb3: 0x115e60a2ae9e72fd932aa894 + limb0: 0x831c44b21a6d609bdeec639d, + limb1: 0xe2f69c85767b04a7d61fe433, + limb2: 0x9639ab56e254ed60a9ec5dc3, + limb3: 0x176c34a0e3901325d8694c42 }, r1a1: u384 { - limb0: 0x47e690f1f3039df28412e44f, - limb1: 0x8a3a2189f84d715a8d7d65e9, - limb2: 0x562b385025dc77b1ef923bfb, - limb3: 0xc5e6c241961e555ca0d7354 + limb0: 0xd41f8075420515c9666697e6, + limb1: 0xf8df73883c6237c933f15eb5, + limb2: 0xb1ed39ecead4669251ce42d2, + limb3: 0x1bbe08120ec3b54286df6bc } }, G2Line { r0a0: u384 { - limb0: 0x99df2a930b5c6f99531c93f1, - limb1: 0x8ed1fd1a8dc4b56105269003, - limb2: 0xd4a4e032a951f2bc0b9fc5ae, - limb3: 0x187f43ceb3c3c9f6b3a7dc1 + limb0: 0x11845c8f378370c5ea1988eb, + limb1: 0x1a26c58a1b5b3e9927e386f7, + limb2: 0x1614136e352ccbeb1a708bc6, + limb3: 0x14b59d16f3f82c70a6dc9542 }, r0a1: u384 { - limb0: 0x76bb77dfc0affc622a2b6f6e, - limb1: 0x4024d70db09178c054327462, - limb2: 0xa665430d70b64ea361b164e0, - limb3: 0x76bf24185407ddb48857729 + limb0: 0xa6251ffb4e4ec02c6eb099d4, + limb1: 0xa1486c797b3c5efa056554a9, + limb2: 0x951b07cb2f028ead174faf1d, + limb3: 0x16995470027165033faaff45 }, r1a0: u384 { - limb0: 0xdfa89b0e41374546ae0d1a7b, - limb1: 0xd14c257abb8647a74eba67e7, - limb2: 0x1306d0e776f98342103af22b, - limb3: 0x115e60a2ae9e72fd932aa894 + limb0: 0x831c44b21a6d609bdeec639d, + limb1: 0xe2f69c85767b04a7d61fe433, + limb2: 0x9639ab56e254ed60a9ec5dc3, + limb3: 0x176c34a0e3901325d8694c42 }, r1a1: u384 { - limb0: 0x47e690f1f3039df28412e44f, - limb1: 0x8a3a2189f84d715a8d7d65e9, - limb2: 0x562b385025dc77b1ef923bfb, - limb3: 0xc5e6c241961e555ca0d7354 + limb0: 0xd41f8075420515c9666697e6, + limb1: 0xf8df73883c6237c933f15eb5, + limb2: 0xb1ed39ecead4669251ce42d2, + limb3: 0x1bbe08120ec3b54286df6bc } }, G2Line { r0a0: u384 { - limb0: 0x1a2414c000ddc2cecc4ace45, - limb1: 0x4357fe38372254979fa022b1, - limb2: 0x61d6637cee8780a17a7081e0, - limb3: 0x4eea5d3fbef1a5dd09cc955 + limb0: 0x3b2682846d33d1bb2910ba03, + limb1: 0x6a05f306d95cf531380ee7da, + limb2: 0x21435eb65c2bd413387d1df3, + limb3: 0x1982379e444b697d0a073d6e }, r0a1: u384 { - limb0: 0xd5b139e74748094bfebb3ae6, - limb1: 0x901c685eb5d4fee19ed28ae5, - limb2: 0x356defa1ba992ae72b86f44f, - limb3: 0xc8040a5e738fe7a1d3a2024 + limb0: 0x8bd63863d4cfeee42b281a67, + limb1: 0x53c8de84ace44e226eb06d6d, + limb2: 0xe55bb6fa2841cb1731cb6a13, + limb3: 0x348ea88fa28ae0657275530 }, r1a0: u384 { - limb0: 0x87552afc6d716807e2faf69f, - limb1: 0xfb088330ba4d8a5bbf847dbb, - limb2: 0x260b190844603d1e003e3d59, - limb3: 0x137a87bb90e7772bfdc1baec + limb0: 0xdc0ab5703b9d7522611edee2, + limb1: 0xd6e26d354a07ecb4e30de6a8, + limb2: 0xbb971530e7c8c7526b599c64, + limb3: 0x12e92020be3b6b2a54440bb3 }, r1a1: u384 { - limb0: 0x7e42f969e1c7a725c44d0f5e, - limb1: 0xd7c022cceded4676494db300, - limb2: 0x29e6509f724821f489057d0, - limb3: 0x185646a40479750a995f9cd3 + limb0: 0x419847bd7c1f542e3a38b0ee, + limb1: 0x6d81da9fd456c7699ec5a02d, + limb2: 0x7bb02418a48065d4a6fbcdd0, + limb3: 0x2158e75b3ad1be8adc4f2fd } }, G2Line { r0a0: u384 { - limb0: 0x1a2414c000ddc2cecc4ace45, - limb1: 0x4357fe38372254979fa022b1, - limb2: 0x61d6637cee8780a17a7081e0, - limb3: 0x4eea5d3fbef1a5dd09cc955 + limb0: 0x3b2682846d33d1bb2910ba03, + limb1: 0x6a05f306d95cf531380ee7da, + limb2: 0x21435eb65c2bd413387d1df3, + limb3: 0x1982379e444b697d0a073d6e }, r0a1: u384 { - limb0: 0xd5b139e74748094bfebb3ae6, - limb1: 0x901c685eb5d4fee19ed28ae5, - limb2: 0x356defa1ba992ae72b86f44f, - limb3: 0xc8040a5e738fe7a1d3a2024 + limb0: 0x8bd63863d4cfeee42b281a67, + limb1: 0x53c8de84ace44e226eb06d6d, + limb2: 0xe55bb6fa2841cb1731cb6a13, + limb3: 0x348ea88fa28ae0657275530 }, r1a0: u384 { - limb0: 0x87552afc6d716807e2faf69f, - limb1: 0xfb088330ba4d8a5bbf847dbb, - limb2: 0x260b190844603d1e003e3d59, - limb3: 0x137a87bb90e7772bfdc1baec + limb0: 0xdc0ab5703b9d7522611edee2, + limb1: 0xd6e26d354a07ecb4e30de6a8, + limb2: 0xbb971530e7c8c7526b599c64, + limb3: 0x12e92020be3b6b2a54440bb3 }, r1a1: u384 { - limb0: 0x7e42f969e1c7a725c44d0f5e, - limb1: 0xd7c022cceded4676494db300, - limb2: 0x29e6509f724821f489057d0, - limb3: 0x185646a40479750a995f9cd3 + limb0: 0x419847bd7c1f542e3a38b0ee, + limb1: 0x6d81da9fd456c7699ec5a02d, + limb2: 0x7bb02418a48065d4a6fbcdd0, + limb3: 0x2158e75b3ad1be8adc4f2fd } }, G2Line { r0a0: u384 { - limb0: 0xd04819dd9ed56b4bab27f047, - limb1: 0xd23a46842e3a42d6caece3a8, - limb2: 0x48a25dab2e3e2b7e64aba217, - limb3: 0xe0ee3dd85b24387ad3a206a + limb0: 0x9ed5874a93e2a5c1167bd832, + limb1: 0xb42afdb134b0481e8259c82a, + limb2: 0xbb060f82ea760a3b744f9fd6, + limb3: 0xdaf9adced467ce2101b44a9 }, r0a1: u384 { - limb0: 0xf9473adbb4786a9162ae5da3, - limb1: 0x8283f3b93f191a7f392ac774, - limb2: 0x8f27bc653cb0e3d50eacae8a, - limb3: 0x165963f57f884654bd219fba + limb0: 0x41f8b3d63ecc95fe95813c68, + limb1: 0xc4b8e88e7bab1ed199210b24, + limb2: 0x74c13644333ee583f9faa830, + limb3: 0x893b33fb2141519964b7dd0 }, r1a0: u384 { - limb0: 0x61dff59bc6e37a675cc86e42, - limb1: 0x54f12c871f457e5f5a838828, - limb2: 0xfc7bfafc5adb80e04e2ad125, - limb3: 0xfc335ea4ebe19862d9f305c + limb0: 0x748cf4d3df15043e0ae8f99e, + limb1: 0x4766d8800a6ffc614d6443ab, + limb2: 0x5aee246adbf4dda2ea418cbf, + limb3: 0x9bc3664485ae5aecc3971ae }, r1a1: u384 { - limb0: 0xef3bb3e00cf5de556fe91f0a, - limb1: 0x850952bb24a6fc4ed03ec7ff, - limb2: 0xb4ed2e264916ebbc8287e87c, - limb3: 0x135b19fd7cb1a640ed5ece8d + limb0: 0x5983d25e0767a793c41206ca, + limb1: 0xde625e19387d9ffd33198b83, + limb2: 0xa98eec8506c321eaaeb033aa, + limb3: 0x13fb86041982c5d065bd87e9 } }, G2Line { r0a0: u384 { - limb0: 0xd04819dd9ed56b4bab27f047, - limb1: 0xd23a46842e3a42d6caece3a8, - limb2: 0x48a25dab2e3e2b7e64aba217, - limb3: 0xe0ee3dd85b24387ad3a206a + limb0: 0x9ed5874a93e2a5c1167bd832, + limb1: 0xb42afdb134b0481e8259c82a, + limb2: 0xbb060f82ea760a3b744f9fd6, + limb3: 0xdaf9adced467ce2101b44a9 }, r0a1: u384 { - limb0: 0xf9473adbb4786a9162ae5da3, - limb1: 0x8283f3b93f191a7f392ac774, - limb2: 0x8f27bc653cb0e3d50eacae8a, - limb3: 0x165963f57f884654bd219fba + limb0: 0x41f8b3d63ecc95fe95813c68, + limb1: 0xc4b8e88e7bab1ed199210b24, + limb2: 0x74c13644333ee583f9faa830, + limb3: 0x893b33fb2141519964b7dd0 }, r1a0: u384 { - limb0: 0x61dff59bc6e37a675cc86e42, - limb1: 0x54f12c871f457e5f5a838828, - limb2: 0xfc7bfafc5adb80e04e2ad125, - limb3: 0xfc335ea4ebe19862d9f305c + limb0: 0x748cf4d3df15043e0ae8f99e, + limb1: 0x4766d8800a6ffc614d6443ab, + limb2: 0x5aee246adbf4dda2ea418cbf, + limb3: 0x9bc3664485ae5aecc3971ae }, r1a1: u384 { - limb0: 0xef3bb3e00cf5de556fe91f0a, - limb1: 0x850952bb24a6fc4ed03ec7ff, - limb2: 0xb4ed2e264916ebbc8287e87c, - limb3: 0x135b19fd7cb1a640ed5ece8d + limb0: 0x5983d25e0767a793c41206ca, + limb1: 0xde625e19387d9ffd33198b83, + limb2: 0xa98eec8506c321eaaeb033aa, + limb3: 0x13fb86041982c5d065bd87e9 } }, G2Line { r0a0: u384 { - limb0: 0x8937b152c3b908a50f9ae998, - limb1: 0xbb950d7dd309998b46e7efdf, - limb2: 0x61c44378c4d61e673a6969e6, - limb3: 0x1313c9ded72d787690c4f541 + limb0: 0xf43059462494151b4ab2087e, + limb1: 0x5cd28f7ec6fd9d6b4b086f39, + limb2: 0x30dd2311b5bafb9250d116c1, + limb3: 0xfc6edf74dff631a32fca3fa }, r0a1: u384 { - limb0: 0xfcaeba566ad94bb14d3b23e9, - limb1: 0x47494f5e89d3dc0d2b5d19f3, - limb2: 0x89dbbed580fdbe0da1ed5b66, - limb3: 0x7493cdf00ef3104441fc23f + limb0: 0x22cbcd3ea9f0d0132809d8af, + limb1: 0x4cb242156a7cdc2991ee9c0e, + limb2: 0x1fe80337fb837a5476523f5c, + limb3: 0x7f64410e73c5db773ca6b66 }, r1a0: u384 { - limb0: 0x4a3160797b28791f2044cd4e, - limb1: 0x9c415696131e21d2e5e51623, - limb2: 0xb488ac26dc83b2a89afd797f, - limb3: 0x174adbaf53f5d3568d742c09 + limb0: 0x32c05aa3eaefba532df15a8, + limb1: 0x7bee89a662e4138e44da3c9a, + limb2: 0xc92ee59d9405d5a905cf2fdb, + limb3: 0x163a2f67158e242bfbb18c52 }, r1a1: u384 { - limb0: 0x63d387b272b7248bfbc6150c, - limb1: 0xcabdc152437f73e2a7eebf55, - limb2: 0xdfcff61afed4b09cba4f0799, - limb3: 0x16741a0f360a31a2064dded + limb0: 0x55506de03a538ff69b9622a1, + limb1: 0x1883fbdba6795d64f7791ed5, + limb2: 0x8d52a259f76a0498bb3b877f, + limb3: 0x2cff61e78b0054925baa456 } }, G2Line { r0a0: u384 { - limb0: 0x8937b152c3b908a50f9ae998, - limb1: 0xbb950d7dd309998b46e7efdf, - limb2: 0x61c44378c4d61e673a6969e6, - limb3: 0x1313c9ded72d787690c4f541 + limb0: 0xf43059462494151b4ab2087e, + limb1: 0x5cd28f7ec6fd9d6b4b086f39, + limb2: 0x30dd2311b5bafb9250d116c1, + limb3: 0xfc6edf74dff631a32fca3fa }, r0a1: u384 { - limb0: 0xfcaeba566ad94bb14d3b23e9, - limb1: 0x47494f5e89d3dc0d2b5d19f3, - limb2: 0x89dbbed580fdbe0da1ed5b66, - limb3: 0x7493cdf00ef3104441fc23f + limb0: 0x22cbcd3ea9f0d0132809d8af, + limb1: 0x4cb242156a7cdc2991ee9c0e, + limb2: 0x1fe80337fb837a5476523f5c, + limb3: 0x7f64410e73c5db773ca6b66 }, r1a0: u384 { - limb0: 0x4a3160797b28791f2044cd4e, - limb1: 0x9c415696131e21d2e5e51623, - limb2: 0xb488ac26dc83b2a89afd797f, - limb3: 0x174adbaf53f5d3568d742c09 + limb0: 0x32c05aa3eaefba532df15a8, + limb1: 0x7bee89a662e4138e44da3c9a, + limb2: 0xc92ee59d9405d5a905cf2fdb, + limb3: 0x163a2f67158e242bfbb18c52 }, r1a1: u384 { - limb0: 0x63d387b272b7248bfbc6150c, - limb1: 0xcabdc152437f73e2a7eebf55, - limb2: 0xdfcff61afed4b09cba4f0799, - limb3: 0x16741a0f360a31a2064dded + limb0: 0x55506de03a538ff69b9622a1, + limb1: 0x1883fbdba6795d64f7791ed5, + limb2: 0x8d52a259f76a0498bb3b877f, + limb3: 0x2cff61e78b0054925baa456 } }, G2Line { r0a0: u384 { - limb0: 0xf34de146a3ad76e403324db9, - limb1: 0x9b39ef7ccc3e9500c55b203d, - limb2: 0x7db39c6c9b3f1a47c239c87a, - limb3: 0xf3928428a2e0afafaf9f613 + limb0: 0x5468cccd649f5f50828f6f59, + limb1: 0x2ff2349d16035594b6932990, + limb2: 0x3a5195f740987d342be92f18, + limb3: 0xa20f374eb29e01db8f41902 }, r0a1: u384 { - limb0: 0x7c121e80e74692d7f14934ff, - limb1: 0xa4f4b5ee8db58f14be1d76db, - limb2: 0xfbb4c90d8cfa3089e78b109f, - limb3: 0x4b285b2786431b738851ec6 + limb0: 0xd98a436aeb477edb61c5262d, + limb1: 0xc89b894c7895fd21e86b51f7, + limb2: 0x926eb138e4aa840edc0e677e, + limb3: 0x461388814e94e8fa2a15e40 }, r1a0: u384 { - limb0: 0xd2f569d4e847ba9b0e2e1af3, - limb1: 0x2957ae130d933aead5e97f53, - limb2: 0x68cdecf70795de5d5531cf36, - limb3: 0x1357f8e520338f0933cf7bb2 + limb0: 0x684e1f1e2e72619d41ad8eb7, + limb1: 0xd6782445423e580f3476f9f9, + limb2: 0x235a44500a9d160446a5bddc, + limb3: 0xd00713abd0c5f631c36c5e6 }, r1a1: u384 { - limb0: 0x493e27601dbba0d015c6ae5b, - limb1: 0xad021779849e87c2a014274c, - limb2: 0xf5256ee91c45d0a9f8ed1e6d, - limb3: 0x180717505375cf32cce66144 + limb0: 0xf07a607d3ecf101d58fc2489, + limb1: 0xcd22610bafa804a71cdce810, + limb2: 0x6a02abac5a58c663011aa1f, + limb3: 0x29de1350b9fa34cc4874766 } }, G2Line { r0a0: u384 { - limb0: 0xf34de146a3ad76e403324db9, - limb1: 0x9b39ef7ccc3e9500c55b203d, - limb2: 0x7db39c6c9b3f1a47c239c87a, - limb3: 0xf3928428a2e0afafaf9f613 + limb0: 0x5468cccd649f5f50828f6f59, + limb1: 0x2ff2349d16035594b6932990, + limb2: 0x3a5195f740987d342be92f18, + limb3: 0xa20f374eb29e01db8f41902 }, r0a1: u384 { - limb0: 0x7c121e80e74692d7f14934ff, - limb1: 0xa4f4b5ee8db58f14be1d76db, - limb2: 0xfbb4c90d8cfa3089e78b109f, - limb3: 0x4b285b2786431b738851ec6 + limb0: 0xd98a436aeb477edb61c5262d, + limb1: 0xc89b894c7895fd21e86b51f7, + limb2: 0x926eb138e4aa840edc0e677e, + limb3: 0x461388814e94e8fa2a15e40 }, r1a0: u384 { - limb0: 0xd2f569d4e847ba9b0e2e1af3, - limb1: 0x2957ae130d933aead5e97f53, - limb2: 0x68cdecf70795de5d5531cf36, - limb3: 0x1357f8e520338f0933cf7bb2 + limb0: 0x684e1f1e2e72619d41ad8eb7, + limb1: 0xd6782445423e580f3476f9f9, + limb2: 0x235a44500a9d160446a5bddc, + limb3: 0xd00713abd0c5f631c36c5e6 }, r1a1: u384 { - limb0: 0x493e27601dbba0d015c6ae5b, - limb1: 0xad021779849e87c2a014274c, - limb2: 0xf5256ee91c45d0a9f8ed1e6d, - limb3: 0x180717505375cf32cce66144 + limb0: 0xf07a607d3ecf101d58fc2489, + limb1: 0xcd22610bafa804a71cdce810, + limb2: 0x6a02abac5a58c663011aa1f, + limb3: 0x29de1350b9fa34cc4874766 } }, G2Line { r0a0: u384 { - limb0: 0x38d0fc9792645a15c4c052ca, - limb1: 0x3c496443605341f90571d5b9, - limb2: 0x6ca5920eb2f9aae2e434b5d2, - limb3: 0x178c7db07e7f27f8250ce41f + limb0: 0x4e955be131680457999a786e, + limb1: 0xb8a3466d1f50dc841f50dd53, + limb2: 0x75efb94692f6d5de57fc8609, + limb3: 0x1550761b0b00c8008522c3d0 }, r0a1: u384 { - limb0: 0x8fe93edb8505713c865a3d86, - limb1: 0x173457b5370bc83e101afbb2, - limb2: 0xda6a7320c3b79d518768462c, - limb3: 0x912de6207e9a4aee0aea47d + limb0: 0xdf2281afe41938a9891e0f2, + limb1: 0x7338e84c16f4c1a3141c1382, + limb2: 0x7269a9e69889291d5395227a, + limb3: 0x16cbd178015a8098509e1caa }, r1a0: u384 { - limb0: 0x40b9c4bef3653ba42121fa72, - limb1: 0x532261a7b85509c760a3425a, - limb2: 0xbc4193a07487cfb1f5dc0502, - limb3: 0xdd5e2338c5c5967ba2fee70 + limb0: 0x1cef06bbd9e71d4438a5052f, + limb1: 0xf045d3479ad9aa40b16601de, + limb2: 0xcedb3a06e3bf3805919beac, + limb3: 0x664dfb89dd2e293c30d8a80 }, r1a1: u384 { - limb0: 0xcce7e4fa97235f637482a82c, - limb1: 0x28b2d7aeaa120f7977655b45, - limb2: 0xa49962f65b00cb3f9ae2482f, - limb3: 0x19b58e57c04607bef6e69750 + limb0: 0x80e3d05acac0a472fad04f82, + limb1: 0x583269e3d734e9b15cebbc7d, + limb2: 0xea7477948d00c61ec92b10b7, + limb3: 0x163a27a5089d314ab8d8cf34 } }, G2Line { r0a0: u384 { - limb0: 0x38d0fc9792645a15c4c052ca, - limb1: 0x3c496443605341f90571d5b9, - limb2: 0x6ca5920eb2f9aae2e434b5d2, - limb3: 0x178c7db07e7f27f8250ce41f + limb0: 0x4e955be131680457999a786e, + limb1: 0xb8a3466d1f50dc841f50dd53, + limb2: 0x75efb94692f6d5de57fc8609, + limb3: 0x1550761b0b00c8008522c3d0 }, r0a1: u384 { - limb0: 0x8fe93edb8505713c865a3d86, - limb1: 0x173457b5370bc83e101afbb2, - limb2: 0xda6a7320c3b79d518768462c, - limb3: 0x912de6207e9a4aee0aea47d + limb0: 0xdf2281afe41938a9891e0f2, + limb1: 0x7338e84c16f4c1a3141c1382, + limb2: 0x7269a9e69889291d5395227a, + limb3: 0x16cbd178015a8098509e1caa }, r1a0: u384 { - limb0: 0x40b9c4bef3653ba42121fa72, - limb1: 0x532261a7b85509c760a3425a, - limb2: 0xbc4193a07487cfb1f5dc0502, - limb3: 0xdd5e2338c5c5967ba2fee70 + limb0: 0x1cef06bbd9e71d4438a5052f, + limb1: 0xf045d3479ad9aa40b16601de, + limb2: 0xcedb3a06e3bf3805919beac, + limb3: 0x664dfb89dd2e293c30d8a80 }, r1a1: u384 { - limb0: 0xcce7e4fa97235f637482a82c, - limb1: 0x28b2d7aeaa120f7977655b45, - limb2: 0xa49962f65b00cb3f9ae2482f, - limb3: 0x19b58e57c04607bef6e69750 + limb0: 0x80e3d05acac0a472fad04f82, + limb1: 0x583269e3d734e9b15cebbc7d, + limb2: 0xea7477948d00c61ec92b10b7, + limb3: 0x163a27a5089d314ab8d8cf34 } }, G2Line { r0a0: u384 { - limb0: 0xad76854a457dc90e5d0a3f8a, - limb1: 0xcc7719378ae14d09eb97d00d, - limb2: 0x197dbeb8470a6d8b8c3f2f42, - limb3: 0x136df25a10175bf15d960a4c + limb0: 0x7a8b2f99201cf6096d4d4b86, + limb1: 0xa896e5b0f4e93d49e8a2691b, + limb2: 0xd5d910d71a5706a6f897976c, + limb3: 0x10913202008b672fafa4272b }, r0a1: u384 { - limb0: 0x9222affc8caeb5fad7ca4707, - limb1: 0xac0bbad60e9937f12683eb72, - limb2: 0x1435947b66a9aa706719df85, - limb3: 0xe69b3d98f53b3796529884a + limb0: 0xbcabe4aba3fd969494c6f463, + limb1: 0x416f6d51b78dc628bacd84c1, + limb2: 0xb92836a7855f2590720a01c6, + limb3: 0x19b605e839e9850b48d8ec2c }, r1a0: u384 { - limb0: 0xe89aaf06da8223dd907d68ec, - limb1: 0x6ce1f0d0cf3b87821b9b57dd, - limb2: 0xb5abb02cf0ca16a9bafeafce, - limb3: 0x95f7632aa27f864cb273710 + limb0: 0x49620f3d26493fcd7396493b, + limb1: 0x17313fc388a7ac05a8b111bb, + limb2: 0x292e458d09c07af68fcfc74e, + limb3: 0x3a6acacd6cbc411d7eb7947 }, r1a1: u384 { - limb0: 0xab8a5a77528537076486a44c, - limb1: 0x1e17c55720972d99ebd632a3, - limb2: 0xc46baed0da2913b1df4a2834, - limb3: 0x1398bee25c9e972cfbc27cb1 + limb0: 0xd0fdcd4eeaeb1a6ecccc011b, + limb1: 0x40e42fe4d7574bcb53834b69, + limb2: 0x799946d2b7b28b127a821e57, + limb3: 0x351c5a26dcce6ce7fca6249 } }, G2Line { r0a0: u384 { - limb0: 0xad76854a457dc90e5d0a3f8a, - limb1: 0xcc7719378ae14d09eb97d00d, - limb2: 0x197dbeb8470a6d8b8c3f2f42, - limb3: 0x136df25a10175bf15d960a4c + limb0: 0x7a8b2f99201cf6096d4d4b86, + limb1: 0xa896e5b0f4e93d49e8a2691b, + limb2: 0xd5d910d71a5706a6f897976c, + limb3: 0x10913202008b672fafa4272b }, r0a1: u384 { - limb0: 0x9222affc8caeb5fad7ca4707, - limb1: 0xac0bbad60e9937f12683eb72, - limb2: 0x1435947b66a9aa706719df85, - limb3: 0xe69b3d98f53b3796529884a + limb0: 0xbcabe4aba3fd969494c6f463, + limb1: 0x416f6d51b78dc628bacd84c1, + limb2: 0xb92836a7855f2590720a01c6, + limb3: 0x19b605e839e9850b48d8ec2c }, r1a0: u384 { - limb0: 0xe89aaf06da8223dd907d68ec, - limb1: 0x6ce1f0d0cf3b87821b9b57dd, - limb2: 0xb5abb02cf0ca16a9bafeafce, - limb3: 0x95f7632aa27f864cb273710 + limb0: 0x49620f3d26493fcd7396493b, + limb1: 0x17313fc388a7ac05a8b111bb, + limb2: 0x292e458d09c07af68fcfc74e, + limb3: 0x3a6acacd6cbc411d7eb7947 }, r1a1: u384 { - limb0: 0xab8a5a77528537076486a44c, - limb1: 0x1e17c55720972d99ebd632a3, - limb2: 0xc46baed0da2913b1df4a2834, - limb3: 0x1398bee25c9e972cfbc27cb1 + limb0: 0xd0fdcd4eeaeb1a6ecccc011b, + limb1: 0x40e42fe4d7574bcb53834b69, + limb2: 0x799946d2b7b28b127a821e57, + limb3: 0x351c5a26dcce6ce7fca6249 } }, G2Line { r0a0: u384 { - limb0: 0xe2f84b4a260f2eff8a005c54, - limb1: 0x24460cbaed3e073043e009e6, - limb2: 0x8cab1fbfd4206560214d9044, - limb3: 0xbb2d541e010797dc9c63c0c + limb0: 0x56de0d67449950f9a27e88fa, + limb1: 0xce138b184f06c8f264650446, + limb2: 0x31ca7924a667107cb9380709, + limb3: 0x17960cbcef34dc014292ac06 }, r0a1: u384 { - limb0: 0x4c4e7878cb1cd5eac0c92236, - limb1: 0x5f31e42f5fcb86cfe85b4de0, - limb2: 0x6591ed1f4d3b5ea643cc7c88, - limb3: 0x16afef5514b05d5754490fc6 + limb0: 0x31295353150179142d6ddbc1, + limb1: 0x2fafe4eb2df7753c10441bf, + limb2: 0x403786f898262dcd349b2eb5, + limb3: 0x131cc0205e7c06e7d7dfe573 }, r1a0: u384 { - limb0: 0x3db8acae4cb434d8a3b76580, - limb1: 0xf3abec5e85cbc0832ef7d101, - limb2: 0xad65d445c8a4410aad7b75dc, - limb3: 0x7ab4b701a7bc730f7ae2231 + limb0: 0xd79406d46f1c9d7137fcc172, + limb1: 0x84793aeb8b5ca9891e9a6563, + limb2: 0x4b1ab7811bfafaf6dfb745fc, + limb3: 0x17c50d8fcd5f550d4a2a64ae }, r1a1: u384 { - limb0: 0x562b2c4e6556cd5a2e5818ed, - limb1: 0x9f6d68232407d6f7ca7fb16b, - limb2: 0xf3d1d6d9ed4a97df8f5d67d3, - limb3: 0x588824a49bb38a4b099d810 + limb0: 0x5c3d7e34c90dc48a32c70868, + limb1: 0x4e1b7bc28d0de9519e604184, + limb2: 0xf258c4f3f3ba0baaccfac11b, + limb3: 0x11ec2c0924dee1e8967b559a } }, G2Line { r0a0: u384 { - limb0: 0xe2f84b4a260f2eff8a005c54, - limb1: 0x24460cbaed3e073043e009e6, - limb2: 0x8cab1fbfd4206560214d9044, - limb3: 0xbb2d541e010797dc9c63c0c + limb0: 0x56de0d67449950f9a27e88fa, + limb1: 0xce138b184f06c8f264650446, + limb2: 0x31ca7924a667107cb9380709, + limb3: 0x17960cbcef34dc014292ac06 }, r0a1: u384 { - limb0: 0x4c4e7878cb1cd5eac0c92236, - limb1: 0x5f31e42f5fcb86cfe85b4de0, - limb2: 0x6591ed1f4d3b5ea643cc7c88, - limb3: 0x16afef5514b05d5754490fc6 + limb0: 0x31295353150179142d6ddbc1, + limb1: 0x2fafe4eb2df7753c10441bf, + limb2: 0x403786f898262dcd349b2eb5, + limb3: 0x131cc0205e7c06e7d7dfe573 }, r1a0: u384 { - limb0: 0x3db8acae4cb434d8a3b76580, - limb1: 0xf3abec5e85cbc0832ef7d101, - limb2: 0xad65d445c8a4410aad7b75dc, - limb3: 0x7ab4b701a7bc730f7ae2231 + limb0: 0xd79406d46f1c9d7137fcc172, + limb1: 0x84793aeb8b5ca9891e9a6563, + limb2: 0x4b1ab7811bfafaf6dfb745fc, + limb3: 0x17c50d8fcd5f550d4a2a64ae }, r1a1: u384 { - limb0: 0x562b2c4e6556cd5a2e5818ed, - limb1: 0x9f6d68232407d6f7ca7fb16b, - limb2: 0xf3d1d6d9ed4a97df8f5d67d3, - limb3: 0x588824a49bb38a4b099d810 + limb0: 0x5c3d7e34c90dc48a32c70868, + limb1: 0x4e1b7bc28d0de9519e604184, + limb2: 0xf258c4f3f3ba0baaccfac11b, + limb3: 0x11ec2c0924dee1e8967b559a } }, G2Line { r0a0: u384 { - limb0: 0xcca39f82bb74ae8680cc081d, - limb1: 0xeaaa21ffc7a4df74358d0281, - limb2: 0xd65e6077db7eb5b14773d396, - limb3: 0x76f8e7592c2f42f291b8e1d + limb0: 0xe60081576a59a2679221795e, + limb1: 0x99ee512fdfcd346784f34a48, + limb2: 0x735b00cd677e6e1ba38c009f, + limb3: 0x178d4accb6fb9b6cbf9df577 }, r0a1: u384 { - limb0: 0xa9bace40fa450a257ebb1243, - limb1: 0xc8cf22d88fa4207edab86f82, - limb2: 0x20b1dbfcc2e20eb7d6149b6e, - limb3: 0x85a6392c120c008705f91ce + limb0: 0xcd7b2447c71a9e9b8b9db98, + limb1: 0x97d5028ae6c2f7027ced11b2, + limb2: 0xf8ea35a3d06f6aca9cffd3b, + limb3: 0xbec0ed2f513414494bd0f6d }, r1a0: u384 { - limb0: 0x3295ba86f37db24a03e9453d, - limb1: 0xf2b977973bd46ab8992bdb0f, - limb2: 0xae06def54d7d467eff474192, - limb3: 0x11370cf5fffc2f6e71c1e758 + limb0: 0xca6aca5778f88316e121b6f2, + limb1: 0x23c098f55746b7d1c5e168f9, + limb2: 0x4be5fc4f8b81d965ec4cd861, + limb3: 0x6c156b4f517a9156e82cb14 }, r1a1: u384 { - limb0: 0xf6d8571051ee6c510b2770ee, - limb1: 0xae3fab77b3c27afd7c351f29, - limb2: 0xb9311965cdf8136e4076cf53, - limb3: 0x9400852f9adfcbf9d3cf4e1 + limb0: 0x59e184cdff8a20200dee525d, + limb1: 0x12327d5b5691bb513688bda3, + limb2: 0xa653bf47392176e8a509eb6b, + limb3: 0x6302b0d5f33fc6d3799728d } }, G2Line { r0a0: u384 { - limb0: 0xcca39f82bb74ae8680cc081d, - limb1: 0xeaaa21ffc7a4df74358d0281, - limb2: 0xd65e6077db7eb5b14773d396, - limb3: 0x76f8e7592c2f42f291b8e1d + limb0: 0xe60081576a59a2679221795e, + limb1: 0x99ee512fdfcd346784f34a48, + limb2: 0x735b00cd677e6e1ba38c009f, + limb3: 0x178d4accb6fb9b6cbf9df577 }, r0a1: u384 { - limb0: 0xa9bace40fa450a257ebb1243, - limb1: 0xc8cf22d88fa4207edab86f82, - limb2: 0x20b1dbfcc2e20eb7d6149b6e, - limb3: 0x85a6392c120c008705f91ce + limb0: 0xcd7b2447c71a9e9b8b9db98, + limb1: 0x97d5028ae6c2f7027ced11b2, + limb2: 0xf8ea35a3d06f6aca9cffd3b, + limb3: 0xbec0ed2f513414494bd0f6d }, r1a0: u384 { - limb0: 0x3295ba86f37db24a03e9453d, - limb1: 0xf2b977973bd46ab8992bdb0f, - limb2: 0xae06def54d7d467eff474192, - limb3: 0x11370cf5fffc2f6e71c1e758 + limb0: 0xca6aca5778f88316e121b6f2, + limb1: 0x23c098f55746b7d1c5e168f9, + limb2: 0x4be5fc4f8b81d965ec4cd861, + limb3: 0x6c156b4f517a9156e82cb14 }, r1a1: u384 { - limb0: 0xf6d8571051ee6c510b2770ee, - limb1: 0xae3fab77b3c27afd7c351f29, - limb2: 0xb9311965cdf8136e4076cf53, - limb3: 0x9400852f9adfcbf9d3cf4e1 + limb0: 0x59e184cdff8a20200dee525d, + limb1: 0x12327d5b5691bb513688bda3, + limb2: 0xa653bf47392176e8a509eb6b, + limb3: 0x6302b0d5f33fc6d3799728d } }, G2Line { r0a0: u384 { - limb0: 0x9d8549b5c14aa39780685fb5, - limb1: 0x14198426aec9122084eff7bf, - limb2: 0xe6963ef32a40cba3a8fb3a47, - limb3: 0x115f28504bd025dd4499ce56 + limb0: 0x8289ee9e6820add91b6e9f3c, + limb1: 0x161cccd4985697fa09846edf, + limb2: 0x7a16c4169c620eab78a54ae0, + limb3: 0xb43112e6bf81d6bf3265d2a }, r0a1: u384 { - limb0: 0x2ff194416d8fc758747b5e7d, - limb1: 0xdc4a74924a9244d5fb33fd59, - limb2: 0x82d81e382ce69a9622fc3ea7, - limb3: 0xb57bfc908086bb508868a90 + limb0: 0xa19c344f64ea5350f0a08f3c, + limb1: 0x4b3b0b1f34d7db6b30ab1be3, + limb2: 0xdd3563e987285c49a9c0ea5f, + limb3: 0xa5797654377bf54d8992f94 }, r1a0: u384 { - limb0: 0xf0d790846378420aafab107b, - limb1: 0xac90770da460454c9c02ec83, - limb2: 0x2e5a7f0be686741b2ef01a27, - limb3: 0xbb1f84e0a85387debf15c77 + limb0: 0xa65f6f3c877ce8e73a114724, + limb1: 0x5b64b753040c29a75a01e69b, + limb2: 0x628c82c1c0e09f1aaab0a61, + limb3: 0x1017f0dd39c644eb0e392947 }, r1a1: u384 { - limb0: 0x154829560d2743b5971e29a4, - limb1: 0x5f6c0f1802fc05571c70ff62, - limb2: 0xb88abc5cb11794d455517360, - limb3: 0xfd91ce6564def5f73a9c59 + limb0: 0xf8a5bcf4817c937d81f315d1, + limb1: 0x21f7d8e74be6d6410e62f9e1, + limb2: 0xbeafe32cf1ec912b9927be97, + limb3: 0x1074d4a9995442048f5dc552 } }, G2Line { r0a0: u384 { - limb0: 0x9d8549b5c14aa39780685fb5, - limb1: 0x14198426aec9122084eff7bf, - limb2: 0xe6963ef32a40cba3a8fb3a47, - limb3: 0x115f28504bd025dd4499ce56 + limb0: 0x8289ee9e6820add91b6e9f3c, + limb1: 0x161cccd4985697fa09846edf, + limb2: 0x7a16c4169c620eab78a54ae0, + limb3: 0xb43112e6bf81d6bf3265d2a }, r0a1: u384 { - limb0: 0x2ff194416d8fc758747b5e7d, - limb1: 0xdc4a74924a9244d5fb33fd59, - limb2: 0x82d81e382ce69a9622fc3ea7, - limb3: 0xb57bfc908086bb508868a90 + limb0: 0xa19c344f64ea5350f0a08f3c, + limb1: 0x4b3b0b1f34d7db6b30ab1be3, + limb2: 0xdd3563e987285c49a9c0ea5f, + limb3: 0xa5797654377bf54d8992f94 }, r1a0: u384 { - limb0: 0xf0d790846378420aafab107b, - limb1: 0xac90770da460454c9c02ec83, - limb2: 0x2e5a7f0be686741b2ef01a27, - limb3: 0xbb1f84e0a85387debf15c77 + limb0: 0xa65f6f3c877ce8e73a114724, + limb1: 0x5b64b753040c29a75a01e69b, + limb2: 0x628c82c1c0e09f1aaab0a61, + limb3: 0x1017f0dd39c644eb0e392947 }, r1a1: u384 { - limb0: 0x154829560d2743b5971e29a4, - limb1: 0x5f6c0f1802fc05571c70ff62, - limb2: 0xb88abc5cb11794d455517360, - limb3: 0xfd91ce6564def5f73a9c59 + limb0: 0xf8a5bcf4817c937d81f315d1, + limb1: 0x21f7d8e74be6d6410e62f9e1, + limb2: 0xbeafe32cf1ec912b9927be97, + limb3: 0x1074d4a9995442048f5dc552 } }, G2Line { r0a0: u384 { - limb0: 0x5a16faabfb0906c9260f7c26, - limb1: 0x82bbb5defbb65255c6ddb347, - limb2: 0x22a379db953f8eea30e4877d, - limb3: 0xf274a33c3d784d415822eff + limb0: 0xf5f0bc431d8e3c80c9af43ec, + limb1: 0xe1bfd26afc9cc39a0566ce43, + limb2: 0x56e0dd02d42fee35ff65330b, + limb3: 0xcb5a49bf5f851b8dfe3526c }, r0a1: u384 { - limb0: 0x35983b41a34381843d2e2a93, - limb1: 0x9d7aaf55609144144deee539, - limb2: 0x73b09c6ccb26087cfdae47c, - limb3: 0xac41ef5dcb45b53742ef884 + limb0: 0x1b9c89ae090424c785c6201e, + limb1: 0x9aa7a9da8db576af296e542a, + limb2: 0xf2e8447430a25ab638a55680, + limb3: 0xa10904e10bf2511e4345039 }, r1a0: u384 { - limb0: 0xe20469e69a33b316a749c601, - limb1: 0xa14bc099f06d7ea0d7be9c8b, - limb2: 0x366fa9aa7fd1d60ffe396f8a, - limb3: 0xf20f1c1526e122c41e584ab + limb0: 0x71a9bbb204d330d58a16fddc, + limb1: 0xc0b0adcf1611ff894f97933e, + limb2: 0x835a3a6abbb86ab551ceb573, + limb3: 0x634ccea2a60cdbd34c941c1 }, r1a1: u384 { - limb0: 0xf5d419d09ece46239a94a549, - limb1: 0x2eadbcc2c8e251ba6a8b5c0, - limb2: 0x70cd433f4f131140f76c2f74, - limb3: 0xee5d93818b7a5bb921fbb08 + limb0: 0xb5ff392b31c0d3eaba4cd272, + limb1: 0x160f3e778181730bdfd887c7, + limb2: 0xea813bbe8c520a16b1e7a2c3, + limb3: 0x14d73adeb7fdf6a4a22c9ffd } }, G2Line { r0a0: u384 { - limb0: 0x5a16faabfb0906c9260f7c26, - limb1: 0x82bbb5defbb65255c6ddb347, - limb2: 0x22a379db953f8eea30e4877d, - limb3: 0xf274a33c3d784d415822eff + limb0: 0xf5f0bc431d8e3c80c9af43ec, + limb1: 0xe1bfd26afc9cc39a0566ce43, + limb2: 0x56e0dd02d42fee35ff65330b, + limb3: 0xcb5a49bf5f851b8dfe3526c }, r0a1: u384 { - limb0: 0x35983b41a34381843d2e2a93, - limb1: 0x9d7aaf55609144144deee539, - limb2: 0x73b09c6ccb26087cfdae47c, - limb3: 0xac41ef5dcb45b53742ef884 + limb0: 0x1b9c89ae090424c785c6201e, + limb1: 0x9aa7a9da8db576af296e542a, + limb2: 0xf2e8447430a25ab638a55680, + limb3: 0xa10904e10bf2511e4345039 }, r1a0: u384 { - limb0: 0xe20469e69a33b316a749c601, - limb1: 0xa14bc099f06d7ea0d7be9c8b, - limb2: 0x366fa9aa7fd1d60ffe396f8a, - limb3: 0xf20f1c1526e122c41e584ab + limb0: 0x71a9bbb204d330d58a16fddc, + limb1: 0xc0b0adcf1611ff894f97933e, + limb2: 0x835a3a6abbb86ab551ceb573, + limb3: 0x634ccea2a60cdbd34c941c1 }, r1a1: u384 { - limb0: 0xf5d419d09ece46239a94a549, - limb1: 0x2eadbcc2c8e251ba6a8b5c0, - limb2: 0x70cd433f4f131140f76c2f74, - limb3: 0xee5d93818b7a5bb921fbb08 + limb0: 0xb5ff392b31c0d3eaba4cd272, + limb1: 0x160f3e778181730bdfd887c7, + limb2: 0xea813bbe8c520a16b1e7a2c3, + limb3: 0x14d73adeb7fdf6a4a22c9ffd } }, G2Line { r0a0: u384 { - limb0: 0x6a8a89e8e4923b428d69842c, - limb1: 0x199bccc6d00899b259c09e38, - limb2: 0x41eb5587a4af620c378b3f8e, - limb3: 0x1977f83df4ef374aadaa18fa + limb0: 0xe99af5be34cdf3b6cd722b90, + limb1: 0x43bcb5a3050d0fc3f1656016, + limb2: 0xd9565b1e5e510b6264471bfa, + limb3: 0x12ee7303ded06b9853cbddbe }, r0a1: u384 { - limb0: 0x27c99155434e4be26df981a7, - limb1: 0xe391b34bb64f4b2e69849346, - limb2: 0xd47d9919fe0896ad0f3c4045, - limb3: 0xd90fb6f09fde454d5aa5c12 + limb0: 0x640c586fa840c267f3b5d99, + limb1: 0x9584c14b56c506ef287a149c, + limb2: 0x317fe0a92bd878e9d86b616d, + limb3: 0x12c415a497b04dbe9c645460 }, r1a0: u384 { - limb0: 0x1788f0c1ff368cf23468d8e, - limb1: 0x6a94900aaec2ceeff8dbdf15, - limb2: 0xb873689a9b5d4df1d85072b3, - limb3: 0x143d77234069b8e1ef7e7ee5 + limb0: 0x3b85dd33ea6b3619236bb988, + limb1: 0x7ce7ce7d9b2c5af2cc87a08a, + limb2: 0x677951177d5a61f6d3531b7b, + limb3: 0x188a8c03315728f1526806d2 }, r1a1: u384 { - limb0: 0xe826c820b56bfdd35c0aa46f, - limb1: 0x7f0b84a899bef05c98316f0c, - limb2: 0x70cf60589887903abae84c6a, - limb3: 0x1958886aeceff1268f9696c1 + limb0: 0xa585bcb857e792c9af8ddec8, + limb1: 0x78f2e972ccd3af64b49ff79b, + limb2: 0x10be9acf81fad9cf48dc3e12, + limb3: 0x11a11578232a8dd660eaf5b6 } }, G2Line { r0a0: u384 { - limb0: 0x6a8a89e8e4923b428d69842c, - limb1: 0x199bccc6d00899b259c09e38, - limb2: 0x41eb5587a4af620c378b3f8e, - limb3: 0x1977f83df4ef374aadaa18fa + limb0: 0xe99af5be34cdf3b6cd722b90, + limb1: 0x43bcb5a3050d0fc3f1656016, + limb2: 0xd9565b1e5e510b6264471bfa, + limb3: 0x12ee7303ded06b9853cbddbe }, r0a1: u384 { - limb0: 0x27c99155434e4be26df981a7, - limb1: 0xe391b34bb64f4b2e69849346, - limb2: 0xd47d9919fe0896ad0f3c4045, - limb3: 0xd90fb6f09fde454d5aa5c12 + limb0: 0x640c586fa840c267f3b5d99, + limb1: 0x9584c14b56c506ef287a149c, + limb2: 0x317fe0a92bd878e9d86b616d, + limb3: 0x12c415a497b04dbe9c645460 }, r1a0: u384 { - limb0: 0x1788f0c1ff368cf23468d8e, - limb1: 0x6a94900aaec2ceeff8dbdf15, - limb2: 0xb873689a9b5d4df1d85072b3, - limb3: 0x143d77234069b8e1ef7e7ee5 + limb0: 0x3b85dd33ea6b3619236bb988, + limb1: 0x7ce7ce7d9b2c5af2cc87a08a, + limb2: 0x677951177d5a61f6d3531b7b, + limb3: 0x188a8c03315728f1526806d2 }, r1a1: u384 { - limb0: 0xe826c820b56bfdd35c0aa46f, - limb1: 0x7f0b84a899bef05c98316f0c, - limb2: 0x70cf60589887903abae84c6a, - limb3: 0x1958886aeceff1268f9696c1 + limb0: 0xa585bcb857e792c9af8ddec8, + limb1: 0x78f2e972ccd3af64b49ff79b, + limb2: 0x10be9acf81fad9cf48dc3e12, + limb3: 0x11a11578232a8dd660eaf5b6 } }, G2Line { r0a0: u384 { - limb0: 0x8fd1028fb4bb97542eed7534, - limb1: 0xf389329a62986aca004915ec, - limb2: 0xf17f4e588b52a318958b086a, - limb3: 0xb327a5c1b493b5a12c89930 + limb0: 0xc7c0d285262c1b32ca6bc7c3, + limb1: 0x66824fd1b6de7089b82d478a, + limb2: 0x5e4beb5c4833b2e8f008208a, + limb3: 0x11c059b33ca3f500c11ee495 }, r0a1: u384 { - limb0: 0x314d9f0cdbbd767ef972e3df, - limb1: 0x3044d4e32f899fda11ebdff, - limb2: 0xfd5bd7bd8a7570c158117d67, - limb3: 0x10009e599182a050a5daf72f + limb0: 0x66e0f227a61baa52b945ec8a, + limb1: 0x6906fbc82d5fd92075ef1513, + limb2: 0x55d0fec8a6600cb65d06bdb3, + limb3: 0x179aabda1a2af5b5e7777d9a }, r1a0: u384 { - limb0: 0xdcd63bc7205736f83f53c912, - limb1: 0x1091710b97a27329ed0aa7d6, - limb2: 0xaaf05ac9f3b1d7ca6d90a55b, - limb3: 0x59d50d49cacc568223ca4 + limb0: 0xcb7dee20a686dcfcda3ddff8, + limb1: 0xfb1119a7914a33be6cb2a22d, + limb2: 0xda5c49c13a9c6084ad1ca51d, + limb3: 0x105195896eb7f46d1ac77d49 }, r1a1: u384 { - limb0: 0xe2499d4c022ecde1378c964c, - limb1: 0x77163dc787dd602f6cc1b513, - limb2: 0x85c853d921f3ffc726bd16e8, - limb3: 0x5a97e70c11e95d709646de5 + limb0: 0xe1ae9ed15c3335b8f8b45b63, + limb1: 0xd7d2b2b828960267ff16d106, + limb2: 0x5fb6174880cb32afa5171325, + limb3: 0x73634ad3a80542b79db8125 } }, G2Line { r0a0: u384 { - limb0: 0x8fd1028fb4bb97542eed7534, - limb1: 0xf389329a62986aca004915ec, - limb2: 0xf17f4e588b52a318958b086a, - limb3: 0xb327a5c1b493b5a12c89930 + limb0: 0xc7c0d285262c1b32ca6bc7c3, + limb1: 0x66824fd1b6de7089b82d478a, + limb2: 0x5e4beb5c4833b2e8f008208a, + limb3: 0x11c059b33ca3f500c11ee495 }, r0a1: u384 { - limb0: 0x314d9f0cdbbd767ef972e3df, - limb1: 0x3044d4e32f899fda11ebdff, - limb2: 0xfd5bd7bd8a7570c158117d67, - limb3: 0x10009e599182a050a5daf72f + limb0: 0x66e0f227a61baa52b945ec8a, + limb1: 0x6906fbc82d5fd92075ef1513, + limb2: 0x55d0fec8a6600cb65d06bdb3, + limb3: 0x179aabda1a2af5b5e7777d9a }, r1a0: u384 { - limb0: 0xdcd63bc7205736f83f53c912, - limb1: 0x1091710b97a27329ed0aa7d6, - limb2: 0xaaf05ac9f3b1d7ca6d90a55b, - limb3: 0x59d50d49cacc568223ca4 + limb0: 0xcb7dee20a686dcfcda3ddff8, + limb1: 0xfb1119a7914a33be6cb2a22d, + limb2: 0xda5c49c13a9c6084ad1ca51d, + limb3: 0x105195896eb7f46d1ac77d49 }, r1a1: u384 { - limb0: 0xe2499d4c022ecde1378c964c, - limb1: 0x77163dc787dd602f6cc1b513, - limb2: 0x85c853d921f3ffc726bd16e8, - limb3: 0x5a97e70c11e95d709646de5 + limb0: 0xe1ae9ed15c3335b8f8b45b63, + limb1: 0xd7d2b2b828960267ff16d106, + limb2: 0x5fb6174880cb32afa5171325, + limb3: 0x73634ad3a80542b79db8125 } }, G2Line { r0a0: u384 { - limb0: 0xa8e2acdd54c2a37fac399ae9, - limb1: 0x5f08b0cf9bb1722187d769df, - limb2: 0x5e60192d1178a427870ee92f, - limb3: 0xc58f19a368eb7e9dd650898 + limb0: 0x7f6dc6043db1a0981ac8da53, + limb1: 0x3faeabcc298b965b8d17dcdc, + limb2: 0x41f566c0fb60863429f76f85, + limb3: 0xcb0b6d856433854a3196109 }, r0a1: u384 { - limb0: 0xed1dd351bacca4efdab076ef, - limb1: 0xf4784603e0f63203da587f21, - limb2: 0x510d3d7906f864a2feadc2b4, - limb3: 0x179b9381f10efa43e47a1a66 + limb0: 0xffba8b95da973789308c3dc5, + limb1: 0xbd1b17fcc64e96fca67718a8, + limb2: 0xba92704a60c4841667b06ceb, + limb3: 0xa0b2c0bbf592c14ec7e5fb }, r1a0: u384 { - limb0: 0x8245046dcb9600675589169d, - limb1: 0x6831f84ee6d65a0357c05dbd, - limb2: 0x3613b80f618d93972e155a77, - limb3: 0xfffaf6c60f8520ac2b5cc6a + limb0: 0x92beda1eba9dc43fc36a6079, + limb1: 0x91bbd7dad0ab28fca77a03a0, + limb2: 0x44f752b68348b2e3a24d3786, + limb3: 0x43b6a504a9015e8b46e81f4 }, r1a1: u384 { - limb0: 0xd689218b1fc75758343055d7, - limb1: 0x571c90b843a3d2f914c2f1a, - limb2: 0xe0ae60005acc6eb5b5fec303, - limb3: 0x110f132ede7c4cd7f5b3809a + limb0: 0xc907c48da1cd91064530e901, + limb1: 0xe87af685a6b1fb6ad930fc15, + limb2: 0x4a5990c65cd9027b2c676e6e, + limb3: 0x11cde272cfa72574425da27 } }, G2Line { r0a0: u384 { - limb0: 0xa8e2acdd54c2a37fac399ae9, - limb1: 0x5f08b0cf9bb1722187d769df, - limb2: 0x5e60192d1178a427870ee92f, - limb3: 0xc58f19a368eb7e9dd650898 + limb0: 0x7f6dc6043db1a0981ac8da53, + limb1: 0x3faeabcc298b965b8d17dcdc, + limb2: 0x41f566c0fb60863429f76f85, + limb3: 0xcb0b6d856433854a3196109 }, r0a1: u384 { - limb0: 0xed1dd351bacca4efdab076ef, - limb1: 0xf4784603e0f63203da587f21, - limb2: 0x510d3d7906f864a2feadc2b4, - limb3: 0x179b9381f10efa43e47a1a66 + limb0: 0xffba8b95da973789308c3dc5, + limb1: 0xbd1b17fcc64e96fca67718a8, + limb2: 0xba92704a60c4841667b06ceb, + limb3: 0xa0b2c0bbf592c14ec7e5fb }, r1a0: u384 { - limb0: 0x8245046dcb9600675589169d, - limb1: 0x6831f84ee6d65a0357c05dbd, - limb2: 0x3613b80f618d93972e155a77, - limb3: 0xfffaf6c60f8520ac2b5cc6a + limb0: 0x92beda1eba9dc43fc36a6079, + limb1: 0x91bbd7dad0ab28fca77a03a0, + limb2: 0x44f752b68348b2e3a24d3786, + limb3: 0x43b6a504a9015e8b46e81f4 }, r1a1: u384 { - limb0: 0xd689218b1fc75758343055d7, - limb1: 0x571c90b843a3d2f914c2f1a, - limb2: 0xe0ae60005acc6eb5b5fec303, - limb3: 0x110f132ede7c4cd7f5b3809a + limb0: 0xc907c48da1cd91064530e901, + limb1: 0xe87af685a6b1fb6ad930fc15, + limb2: 0x4a5990c65cd9027b2c676e6e, + limb3: 0x11cde272cfa72574425da27 } }, G2Line { r0a0: u384 { - limb0: 0xd536acb66357a016210f7d7d, - limb1: 0x2bc95e16fe773ad4e709e601, - limb2: 0x24a0fcfa925f696c169d8655, - limb3: 0x1222af87ade519511ad8d79f + limb0: 0xdaf1249cec25e1591d0f9329, + limb1: 0x5531582b2fcbc58c12130411, + limb2: 0xd5683ab0df6813a370dced9d, + limb3: 0x16c61ae7af165d87be0cc2d5 }, r0a1: u384 { - limb0: 0x84492062aebc9d8637c2b51, - limb1: 0x515ce8775b15ba3c8a9597a1, - limb2: 0x240e27fc63657b602e0dac0f, - limb3: 0x6b532c5cf958c24cc51ff8a + limb0: 0xb1c04d8f03fb3b2344ac4be5, + limb1: 0xb587962043ba3348ccce1f0f, + limb2: 0x5dd0fb61f2bcee0210d0af13, + limb3: 0x17804c1f2c60a8a7264b6047 }, r1a0: u384 { - limb0: 0xf8a0cb8136a24baa51586cd5, - limb1: 0x53eacc3a46f52d27f22e0a13, - limb2: 0x4d0ffe943187c0c967112cdc, - limb3: 0xa6da7f4bd1c05b07f70cbfa + limb0: 0xbb63ccb83f7ed4931470b669, + limb1: 0x7fd71cdcbf8b588e2169e56, + limb2: 0x497e41bd5035df06befd3d7e, + limb3: 0x1106425b52985ab1472f75a9 }, r1a1: u384 { - limb0: 0x8a3d6eed02f1c0fb81ca8bfd, - limb1: 0xa05451008a9c3a519d5205e9, - limb2: 0xc1fc9ec3dcd6e921a3e34415, - limb3: 0xd1188cde1504d69c0b057e9 + limb0: 0xf6dcb781ff977354cbaeca11, + limb1: 0x69d27ee516fa1a11f4b63914, + limb2: 0x9c9d283771507f24855df134, + limb3: 0xf2cfee6977693a3f2b5332c } }, G2Line { r0a0: u384 { - limb0: 0xd536acb66357a016210f7d7d, - limb1: 0x2bc95e16fe773ad4e709e601, - limb2: 0x24a0fcfa925f696c169d8655, - limb3: 0x1222af87ade519511ad8d79f + limb0: 0xdaf1249cec25e1591d0f9329, + limb1: 0x5531582b2fcbc58c12130411, + limb2: 0xd5683ab0df6813a370dced9d, + limb3: 0x16c61ae7af165d87be0cc2d5 }, r0a1: u384 { - limb0: 0x84492062aebc9d8637c2b51, - limb1: 0x515ce8775b15ba3c8a9597a1, - limb2: 0x240e27fc63657b602e0dac0f, - limb3: 0x6b532c5cf958c24cc51ff8a + limb0: 0xb1c04d8f03fb3b2344ac4be5, + limb1: 0xb587962043ba3348ccce1f0f, + limb2: 0x5dd0fb61f2bcee0210d0af13, + limb3: 0x17804c1f2c60a8a7264b6047 }, r1a0: u384 { - limb0: 0xf8a0cb8136a24baa51586cd5, - limb1: 0x53eacc3a46f52d27f22e0a13, - limb2: 0x4d0ffe943187c0c967112cdc, - limb3: 0xa6da7f4bd1c05b07f70cbfa + limb0: 0xbb63ccb83f7ed4931470b669, + limb1: 0x7fd71cdcbf8b588e2169e56, + limb2: 0x497e41bd5035df06befd3d7e, + limb3: 0x1106425b52985ab1472f75a9 }, r1a1: u384 { - limb0: 0x8a3d6eed02f1c0fb81ca8bfd, - limb1: 0xa05451008a9c3a519d5205e9, - limb2: 0xc1fc9ec3dcd6e921a3e34415, - limb3: 0xd1188cde1504d69c0b057e9 + limb0: 0xf6dcb781ff977354cbaeca11, + limb1: 0x69d27ee516fa1a11f4b63914, + limb2: 0x9c9d283771507f24855df134, + limb3: 0xf2cfee6977693a3f2b5332c } }, G2Line { r0a0: u384 { - limb0: 0x7074f3ecc969bc59ce44f35, - limb1: 0x93b14676dc506a2d7d806852, - limb2: 0x8be52043f203bbc6bba8a218, - limb3: 0x1752bad4b27b2960826d8161 + limb0: 0x565aac3d5efc089a31139283, + limb1: 0x4272752a854538f0b555ac04, + limb2: 0x86a5055ded31515c6ec89ebc, + limb3: 0x110c5f73e6b0b5c68282aa1a }, r0a1: u384 { - limb0: 0x9972baee6d19dc41388bd51d, - limb1: 0xe9a4e539319900b525068979, - limb2: 0x713c3ba1f40735d04fb0db89, - limb3: 0xc91963fc9f0b4be62e5c7a2 + limb0: 0x6eb8fad61d6a608c85cf557f, + limb1: 0x2f27ec0ec22fc4a9d189e192, + limb2: 0xcce849442e970449a41aee87, + limb3: 0x3388dc06a8286446a95bb74 }, r1a0: u384 { - limb0: 0x45771947aa8a51a8348d89a3, - limb1: 0x460b1638eb2517c5c5c5ba55, - limb2: 0x828bff4d5a0ae90f818ac5c, - limb3: 0x16c37fe7fba99e67a1b825bb + limb0: 0x29822e7214d3ae3a1eaf0881, + limb1: 0xb04e459e8d569063d2f1ff84, + limb2: 0x61aa79235620ec5c6168cd13, + limb3: 0xdb46da5506f25a0ddd9d25e }, r1a1: u384 { - limb0: 0xe3869ae464521ca1e8bd8d10, - limb1: 0x63bfecb8080fe056cfafab6f, - limb2: 0x5d9c244123ae745eaf80a8, - limb3: 0xd2694b440aa18960e41dbc6 + limb0: 0x4004047d6627ef4e8a047aeb, + limb1: 0x73a8ed1ba044e04a43a99564, + limb2: 0x664eedf108865fac5ebba6e1, + limb3: 0xe6e3025f09bb9df597b5128 } }, G2Line { r0a0: u384 { - limb0: 0x6932e9682877f80ef4bc8f8b, - limb1: 0x242bb746df0432dfdef77df2, - limb2: 0xbafd6550599f9bbd7033f0cd, - limb3: 0xb4b6bd606a34a94e40095c4 + limb0: 0x6acae548b9042589a17cc95f, + limb1: 0x217f1e1c11c3011715774d4d, + limb2: 0x11a9fb5766b39d430b1c15d0, + limb3: 0xe612d859df24842ce33c9d6 }, r0a1: u384 { - limb0: 0x8220ec6f78f561d99460fe87, - limb1: 0x82bf0b150cd769a323962a3f, - limb2: 0x1ebcc0582b2a5c59cd795258, - limb3: 0x3b66aa7bdfe40cae341ba27 + limb0: 0x599285819346fb9c3c28793d, + limb1: 0x4d0d0826c6e08cf5059cdc19, + limb2: 0xf39b4a96ce83040bf10716ac, + limb3: 0xd5c0c7d757310fec39173c7 }, r1a0: u384 { - limb0: 0x275de02321bb336a0ac8e249, - limb1: 0x50c42a49e9240e0aac17ee21, - limb2: 0xeec0d2f07cadfe2773906b65, - limb3: 0x16d747cde0d71ffd63b4fc2d + limb0: 0x473dcb1b1a73099f9b3d95d2, + limb1: 0x7a7ef1c6db2665dfba32be7b, + limb2: 0xccb92790901c2f7ceb7fd861, + limb3: 0x1015a3839453343c9b0cbc45 }, r1a1: u384 { - limb0: 0xcc7c0d989ca07a7e726e6abd, - limb1: 0x6292c8d6d8c2a8481b4a845e, - limb2: 0xcf748e4dc4ce0358272b2e36, - limb3: 0x15eb67ca1107545ca1fc6f3b + limb0: 0x12d333d5723a566d13e3b9ab, + limb1: 0xf96f0e52139baea4bbd3f509, + limb2: 0xf775f6c4aa01956effc7bac1, + limb3: 0x14f9ac263962844d5d7bfd58 } }, G2Line { r0a0: u384 { - limb0: 0x7074f3ecc969bc59ce44f35, - limb1: 0x93b14676dc506a2d7d806852, - limb2: 0x8be52043f203bbc6bba8a218, - limb3: 0x1752bad4b27b2960826d8161 + limb0: 0x565aac3d5efc089a31139283, + limb1: 0x4272752a854538f0b555ac04, + limb2: 0x86a5055ded31515c6ec89ebc, + limb3: 0x110c5f73e6b0b5c68282aa1a }, r0a1: u384 { - limb0: 0x9972baee6d19dc41388bd51d, - limb1: 0xe9a4e539319900b525068979, - limb2: 0x713c3ba1f40735d04fb0db89, - limb3: 0xc91963fc9f0b4be62e5c7a2 + limb0: 0x6eb8fad61d6a608c85cf557f, + limb1: 0x2f27ec0ec22fc4a9d189e192, + limb2: 0xcce849442e970449a41aee87, + limb3: 0x3388dc06a8286446a95bb74 }, r1a0: u384 { - limb0: 0x45771947aa8a51a8348d89a3, - limb1: 0x460b1638eb2517c5c5c5ba55, - limb2: 0x828bff4d5a0ae90f818ac5c, - limb3: 0x16c37fe7fba99e67a1b825bb + limb0: 0x29822e7214d3ae3a1eaf0881, + limb1: 0xb04e459e8d569063d2f1ff84, + limb2: 0x61aa79235620ec5c6168cd13, + limb3: 0xdb46da5506f25a0ddd9d25e }, r1a1: u384 { - limb0: 0xe3869ae464521ca1e8bd8d10, - limb1: 0x63bfecb8080fe056cfafab6f, - limb2: 0x5d9c244123ae745eaf80a8, - limb3: 0xd2694b440aa18960e41dbc6 + limb0: 0x4004047d6627ef4e8a047aeb, + limb1: 0x73a8ed1ba044e04a43a99564, + limb2: 0x664eedf108865fac5ebba6e1, + limb3: 0xe6e3025f09bb9df597b5128 } }, G2Line { r0a0: u384 { - limb0: 0x6932e9682877f80ef4bc8f8b, - limb1: 0x242bb746df0432dfdef77df2, - limb2: 0xbafd6550599f9bbd7033f0cd, - limb3: 0xb4b6bd606a34a94e40095c4 + limb0: 0x6acae548b9042589a17cc95f, + limb1: 0x217f1e1c11c3011715774d4d, + limb2: 0x11a9fb5766b39d430b1c15d0, + limb3: 0xe612d859df24842ce33c9d6 }, r0a1: u384 { - limb0: 0x8220ec6f78f561d99460fe87, - limb1: 0x82bf0b150cd769a323962a3f, - limb2: 0x1ebcc0582b2a5c59cd795258, - limb3: 0x3b66aa7bdfe40cae341ba27 + limb0: 0x599285819346fb9c3c28793d, + limb1: 0x4d0d0826c6e08cf5059cdc19, + limb2: 0xf39b4a96ce83040bf10716ac, + limb3: 0xd5c0c7d757310fec39173c7 }, r1a0: u384 { - limb0: 0x275de02321bb336a0ac8e249, - limb1: 0x50c42a49e9240e0aac17ee21, - limb2: 0xeec0d2f07cadfe2773906b65, - limb3: 0x16d747cde0d71ffd63b4fc2d + limb0: 0x473dcb1b1a73099f9b3d95d2, + limb1: 0x7a7ef1c6db2665dfba32be7b, + limb2: 0xccb92790901c2f7ceb7fd861, + limb3: 0x1015a3839453343c9b0cbc45 }, r1a1: u384 { - limb0: 0xcc7c0d989ca07a7e726e6abd, - limb1: 0x6292c8d6d8c2a8481b4a845e, - limb2: 0xcf748e4dc4ce0358272b2e36, - limb3: 0x15eb67ca1107545ca1fc6f3b + limb0: 0x12d333d5723a566d13e3b9ab, + limb1: 0xf96f0e52139baea4bbd3f509, + limb2: 0xf775f6c4aa01956effc7bac1, + limb3: 0x14f9ac263962844d5d7bfd58 } }, G2Line { r0a0: u384 { - limb0: 0xb14db0f8d860ddd5c362f312, - limb1: 0x5d9654f4b05829441f7e907b, - limb2: 0x5686ff5096dd570bb611f2bc, - limb3: 0xc516f5daf0a5b17200119a9 + limb0: 0x324273979b43f236c1b6d4b3, + limb1: 0x6a44d55ac56823beb8c5cd4d, + limb2: 0xf187e87ac0dea83abd11b631, + limb3: 0xedbe290b2884e1a7816b064 }, r0a1: u384 { - limb0: 0xe5902dc99f38a8bdefc2d797, - limb1: 0xdbd912ca50e87f794f1215b3, - limb2: 0x68f83fdf3f1f447bd9681f00, - limb3: 0x168fab08ad87825af50268cb + limb0: 0xb9c0ebcef8295a5127fabfde, + limb1: 0xd8abaec351082a47e7dd0d50, + limb2: 0xf7b036dd84a0f094aab5c7c, + limb3: 0x14ba1a361d4fb86acc0430ff }, r1a0: u384 { - limb0: 0x34a3a02a8e94d3f30e01c69c, - limb1: 0x7aaa72ed06772b52384ac30e, - limb2: 0xee952c0ef91a33ab3929e290, - limb3: 0x8f7a4c04fb36ebff2191ea0 + limb0: 0xd6a92564eca59a717cccc180, + limb1: 0x7ec4e553b132cfe520138b91, + limb2: 0x968b7ccf08d0a2377a2b5d51, + limb3: 0x1486effacc4cfe9a2a925700 }, r1a1: u384 { - limb0: 0xcfbacfea506bffd321cb3c52, - limb1: 0x2c9f59605a2f314d8571b78c, - limb2: 0x630f5a12c9ac866977f61ca0, - limb3: 0x9ba8715978bd2546f911c34 + limb0: 0xda73fa2984bbcd83191b529c, + limb1: 0x3d2797caffd2a9f90addeb7d, + limb2: 0x6ae8b01c177a54b6029803c4, + limb3: 0x19cd64299c633b6e74933f98 } }, G2Line { r0a0: u384 { - limb0: 0xb14db0f8d860ddd5c362f312, - limb1: 0x5d9654f4b05829441f7e907b, - limb2: 0x5686ff5096dd570bb611f2bc, - limb3: 0xc516f5daf0a5b17200119a9 + limb0: 0x324273979b43f236c1b6d4b3, + limb1: 0x6a44d55ac56823beb8c5cd4d, + limb2: 0xf187e87ac0dea83abd11b631, + limb3: 0xedbe290b2884e1a7816b064 }, r0a1: u384 { - limb0: 0xe5902dc99f38a8bdefc2d797, - limb1: 0xdbd912ca50e87f794f1215b3, - limb2: 0x68f83fdf3f1f447bd9681f00, - limb3: 0x168fab08ad87825af50268cb + limb0: 0xb9c0ebcef8295a5127fabfde, + limb1: 0xd8abaec351082a47e7dd0d50, + limb2: 0xf7b036dd84a0f094aab5c7c, + limb3: 0x14ba1a361d4fb86acc0430ff }, r1a0: u384 { - limb0: 0x34a3a02a8e94d3f30e01c69c, - limb1: 0x7aaa72ed06772b52384ac30e, - limb2: 0xee952c0ef91a33ab3929e290, - limb3: 0x8f7a4c04fb36ebff2191ea0 + limb0: 0xd6a92564eca59a717cccc180, + limb1: 0x7ec4e553b132cfe520138b91, + limb2: 0x968b7ccf08d0a2377a2b5d51, + limb3: 0x1486effacc4cfe9a2a925700 }, r1a1: u384 { - limb0: 0xcfbacfea506bffd321cb3c52, - limb1: 0x2c9f59605a2f314d8571b78c, - limb2: 0x630f5a12c9ac866977f61ca0, - limb3: 0x9ba8715978bd2546f911c34 + limb0: 0xda73fa2984bbcd83191b529c, + limb1: 0x3d2797caffd2a9f90addeb7d, + limb2: 0x6ae8b01c177a54b6029803c4, + limb3: 0x19cd64299c633b6e74933f98 } }, G2Line { r0a0: u384 { - limb0: 0x63f64afd8a446817e42a39e4, - limb1: 0xc21092ca67db1632fccfbabb, - limb2: 0xcaffb81d61961333989b20a4, - limb3: 0xb15289c1b0975a9bc358315 + limb0: 0xdb2681a0ef5cfd0962c48f6b, + limb1: 0x1a2279a74c79a6421bd26c6c, + limb2: 0xc48814ce2e29b2263da82a5, + limb3: 0x2e3e25f56d91932935f20d }, r0a1: u384 { - limb0: 0xb475eab8a6f97129eedf077f, - limb1: 0xf05c662c68bc5856c089662d, - limb2: 0x12bf705b4904ab0404faabcf, - limb3: 0x387c47f36f3fe51b1e051a + limb0: 0xd677f32fe7da9736c43634f2, + limb1: 0x4285e9705dd9ce8d698d1fe0, + limb2: 0x2c7dd9009c4c58184aca558c, + limb3: 0x3dcbe4e5594c6ab2d10c16d }, r1a0: u384 { - limb0: 0x148e6fc442c32b6f49f6d09d, - limb1: 0x682526a488b58edd862f62f3, - limb2: 0xbb6bc408694ab8c2b5c662e, - limb3: 0x17c82ecb1ba96dcf4e2cf2e4 + limb0: 0x86e822ce6a692777d529f773, + limb1: 0xf92f4c24dd2d1a1ab77fcfe7, + limb2: 0xc7f1f61538f225ee52b89f48, + limb3: 0x7a08b05e3201602d9216d2d }, r1a1: u384 { - limb0: 0x3c0f3d0860171debf4f10680, - limb1: 0x8abafdbc71274663617b54ab, - limb2: 0x4afc06c377742662e4f0a46e, - limb3: 0x192445c55928e8a2aef23390 + limb0: 0x220cfbe9c10884461876ae23, + limb1: 0x9e752d4b5482e4c5bbd57488, + limb2: 0x72d39a1d6f520311fd389c37, + limb3: 0x52542fd6c39f0d99bd6bbd9 } }, G2Line { r0a0: u384 { - limb0: 0x63f64afd8a446817e42a39e4, - limb1: 0xc21092ca67db1632fccfbabb, - limb2: 0xcaffb81d61961333989b20a4, - limb3: 0xb15289c1b0975a9bc358315 + limb0: 0xdb2681a0ef5cfd0962c48f6b, + limb1: 0x1a2279a74c79a6421bd26c6c, + limb2: 0xc48814ce2e29b2263da82a5, + limb3: 0x2e3e25f56d91932935f20d }, r0a1: u384 { - limb0: 0xb475eab8a6f97129eedf077f, - limb1: 0xf05c662c68bc5856c089662d, - limb2: 0x12bf705b4904ab0404faabcf, - limb3: 0x387c47f36f3fe51b1e051a + limb0: 0xd677f32fe7da9736c43634f2, + limb1: 0x4285e9705dd9ce8d698d1fe0, + limb2: 0x2c7dd9009c4c58184aca558c, + limb3: 0x3dcbe4e5594c6ab2d10c16d }, r1a0: u384 { - limb0: 0x148e6fc442c32b6f49f6d09d, - limb1: 0x682526a488b58edd862f62f3, - limb2: 0xbb6bc408694ab8c2b5c662e, - limb3: 0x17c82ecb1ba96dcf4e2cf2e4 + limb0: 0x86e822ce6a692777d529f773, + limb1: 0xf92f4c24dd2d1a1ab77fcfe7, + limb2: 0xc7f1f61538f225ee52b89f48, + limb3: 0x7a08b05e3201602d9216d2d }, r1a1: u384 { - limb0: 0x3c0f3d0860171debf4f10680, - limb1: 0x8abafdbc71274663617b54ab, - limb2: 0x4afc06c377742662e4f0a46e, - limb3: 0x192445c55928e8a2aef23390 + limb0: 0x220cfbe9c10884461876ae23, + limb1: 0x9e752d4b5482e4c5bbd57488, + limb2: 0x72d39a1d6f520311fd389c37, + limb3: 0x52542fd6c39f0d99bd6bbd9 } }, G2Line { r0a0: u384 { - limb0: 0x2f68c4c744894d7ad0aa12bc, - limb1: 0xbe68ba303884aedc25eff0c6, - limb2: 0xa242b55a96e40cdc4610e5de, - limb3: 0x16e0cb8c9fcbe135452c84f5 + limb0: 0xd2833c6e80915aa802028d91, + limb1: 0x74d22878ec75474650117b32, + limb2: 0x6cb76ac504f45d442506c3b9, + limb3: 0x19a572ff9f78c5689f7e9 }, r0a1: u384 { - limb0: 0xa80bb63ff93f2ff9b832d740, - limb1: 0x82684407dac5ff0da820767d, - limb2: 0x676a91107d1e19ed2bae9b1e, - limb3: 0x1526db7fa3f7b6f566295ada + limb0: 0x46249614d83af7e171c6172a, + limb1: 0xd2a4f206fa6b7c9dc6276a1d, + limb2: 0x1d37284645aeccfa7e55914e, + limb3: 0xea73b1772fdeb0d8a80a54 }, r1a0: u384 { - limb0: 0xd0e175145fb68e9e0c88a, - limb1: 0x5155d026042704414e7bba96, - limb2: 0x8602d96869bd565ae5c7bce4, - limb3: 0x790d64f6c0bec981fedc77f + limb0: 0x985a081123f14663474d6128, + limb1: 0x787c1d2cef0eaf6c17b95fa8, + limb2: 0xf13630ecc0448c07d7ec98e1, + limb3: 0xcd42fb0bd6ca63acd78405b }, r1a1: u384 { - limb0: 0x701e757bcfa55387e376328d, - limb1: 0x7dc5ea85707bb7d685d3b957, - limb2: 0xc2dab595b3937916682be5ab, - limb3: 0x3c93ab5b049350ebb4d9c43 + limb0: 0xf78e5391e95d1455d6dd1c83, + limb1: 0xb1164967a264030c2d76d419, + limb2: 0xe1a6bcb4b4b9ee8fddc7315c, + limb3: 0x173465e64e00f1cdec28f131 } }, G2Line { r0a0: u384 { - limb0: 0x2f68c4c744894d7ad0aa12bc, - limb1: 0xbe68ba303884aedc25eff0c6, - limb2: 0xa242b55a96e40cdc4610e5de, - limb3: 0x16e0cb8c9fcbe135452c84f5 + limb0: 0xd2833c6e80915aa802028d91, + limb1: 0x74d22878ec75474650117b32, + limb2: 0x6cb76ac504f45d442506c3b9, + limb3: 0x19a572ff9f78c5689f7e9 }, r0a1: u384 { - limb0: 0xa80bb63ff93f2ff9b832d740, - limb1: 0x82684407dac5ff0da820767d, - limb2: 0x676a91107d1e19ed2bae9b1e, - limb3: 0x1526db7fa3f7b6f566295ada + limb0: 0x46249614d83af7e171c6172a, + limb1: 0xd2a4f206fa6b7c9dc6276a1d, + limb2: 0x1d37284645aeccfa7e55914e, + limb3: 0xea73b1772fdeb0d8a80a54 }, r1a0: u384 { - limb0: 0xd0e175145fb68e9e0c88a, - limb1: 0x5155d026042704414e7bba96, - limb2: 0x8602d96869bd565ae5c7bce4, - limb3: 0x790d64f6c0bec981fedc77f + limb0: 0x985a081123f14663474d6128, + limb1: 0x787c1d2cef0eaf6c17b95fa8, + limb2: 0xf13630ecc0448c07d7ec98e1, + limb3: 0xcd42fb0bd6ca63acd78405b }, r1a1: u384 { - limb0: 0x701e757bcfa55387e376328d, - limb1: 0x7dc5ea85707bb7d685d3b957, - limb2: 0xc2dab595b3937916682be5ab, - limb3: 0x3c93ab5b049350ebb4d9c43 + limb0: 0xf78e5391e95d1455d6dd1c83, + limb1: 0xb1164967a264030c2d76d419, + limb2: 0xe1a6bcb4b4b9ee8fddc7315c, + limb3: 0x173465e64e00f1cdec28f131 } }, G2Line { r0a0: u384 { - limb0: 0xf65ac160449408076d538cf3, - limb1: 0x3ce3d4a2640d40d46c8698a7, - limb2: 0xd4d6c7eb1ff94f0885a8e527, - limb3: 0x15b6a699e8045657b282c951 + limb0: 0x5a92b83a440860b31ecb39ab, + limb1: 0x6bc88b2098e8aa4f2cbabe29, + limb2: 0xa344268cee55846c0d67fc57, + limb3: 0xbb3d9a3fd7f583599bea6c8 }, r0a1: u384 { - limb0: 0xe6ba76a2f69a47f160675430, - limb1: 0xf28ba5df2cc9054c42ea51c6, - limb2: 0x52ad14ac3962092467a70248, - limb3: 0x689f4a7ae98593b137a511c + limb0: 0x3a6a9d0f4e52f138fe7e33f8, + limb1: 0x51afc01b9494c61c5bd1b11e, + limb2: 0x3172b05abc177e9cce4b4f0, + limb3: 0x17d8ca31211b957fcb12e805 }, r1a0: u384 { - limb0: 0xe7f9351a232747b370ecbfad, - limb1: 0xb19e25e4125c1ae4514188c8, - limb2: 0x4485faa60025dfd4f0fc18e6, - limb3: 0x52e70e05339a86edfac13f5 + limb0: 0x6343ff0635ec4e9c9fb709b9, + limb1: 0x68e8d08a9f5be219dd16fe6f, + limb2: 0xf0fed78a781578b59788720b, + limb3: 0xbe842e6fff90d6b069cb70 }, r1a1: u384 { - limb0: 0xdc42c2b34f8cc1b6669e847a, - limb1: 0x309fac4721819756017e59a1, - limb2: 0x56b057160c59ee07690f66b2, - limb3: 0x176d40c594a154c396fef950 + limb0: 0xd037592f81aa53124684abf0, + limb1: 0xe52aeb7217c82e488907f68e, + limb2: 0x3bddbeccd2fae9aedaa083b6, + limb3: 0xcdd8a9e7fe7cc350a576aaa } }, G2Line { r0a0: u384 { - limb0: 0xf65ac160449408076d538cf3, - limb1: 0x3ce3d4a2640d40d46c8698a7, - limb2: 0xd4d6c7eb1ff94f0885a8e527, - limb3: 0x15b6a699e8045657b282c951 + limb0: 0x5a92b83a440860b31ecb39ab, + limb1: 0x6bc88b2098e8aa4f2cbabe29, + limb2: 0xa344268cee55846c0d67fc57, + limb3: 0xbb3d9a3fd7f583599bea6c8 }, r0a1: u384 { - limb0: 0xe6ba76a2f69a47f160675430, - limb1: 0xf28ba5df2cc9054c42ea51c6, - limb2: 0x52ad14ac3962092467a70248, - limb3: 0x689f4a7ae98593b137a511c + limb0: 0x3a6a9d0f4e52f138fe7e33f8, + limb1: 0x51afc01b9494c61c5bd1b11e, + limb2: 0x3172b05abc177e9cce4b4f0, + limb3: 0x17d8ca31211b957fcb12e805 }, r1a0: u384 { - limb0: 0xe7f9351a232747b370ecbfad, - limb1: 0xb19e25e4125c1ae4514188c8, - limb2: 0x4485faa60025dfd4f0fc18e6, - limb3: 0x52e70e05339a86edfac13f5 + limb0: 0x6343ff0635ec4e9c9fb709b9, + limb1: 0x68e8d08a9f5be219dd16fe6f, + limb2: 0xf0fed78a781578b59788720b, + limb3: 0xbe842e6fff90d6b069cb70 }, r1a1: u384 { - limb0: 0xdc42c2b34f8cc1b6669e847a, - limb1: 0x309fac4721819756017e59a1, - limb2: 0x56b057160c59ee07690f66b2, - limb3: 0x176d40c594a154c396fef950 + limb0: 0xd037592f81aa53124684abf0, + limb1: 0xe52aeb7217c82e488907f68e, + limb2: 0x3bddbeccd2fae9aedaa083b6, + limb3: 0xcdd8a9e7fe7cc350a576aaa } }, G2Line { r0a0: u384 { - limb0: 0x9c6e85e6a77538fa560fd462, - limb1: 0x9fb82c0685a3c27a1bf90ba7, - limb2: 0x493994f8fce59e945c485c28, - limb3: 0x3766b43e7a08257ed2354ed + limb0: 0x6ab1f6647ba9ba736f0839ad, + limb1: 0xe8204b773672d624630e2384, + limb2: 0x9ecdf669a827c29c74daf71b, + limb3: 0x2627dd5786ccd48891b28cb }, r0a1: u384 { - limb0: 0x854e18b7612609711346fef6, - limb1: 0xf4057e2cfc6dcbf656d4ac9c, - limb2: 0xe0179710ad38518ff2118bc4, - limb3: 0xd257c30e6286c26ffdbee02 + limb0: 0xd65bc63d35cc0bfb66c2fbf5, + limb1: 0xb658ffd3e2b02102a72560b5, + limb2: 0x4831f5285ece22bc1c6a1869, + limb3: 0x1721967f7d4fc728f65b501c }, r1a0: u384 { - limb0: 0x96a6b71a83c77aee100e530d, - limb1: 0xc6153a5f37b78ee455e52d5f, - limb2: 0xd2d97fc6614ca2f3bb9ee87f, - limb3: 0x168ec4820db83d5e8a6c9ef + limb0: 0x6794d4f4801a0974d863a911, + limb1: 0xbecbc2ac5e4c8d8ccf656991, + limb2: 0x9ec1f54cdfcb10932d199399, + limb3: 0x2406219596075a45c6e0806 }, r1a1: u384 { - limb0: 0xad2ce1bfa6711a5edd09977f, - limb1: 0x96cbcc960eb483b672649ce6, - limb2: 0xd2a8f121e34371fdb96cbd6c, - limb3: 0xeb3de344858ace964e05255 + limb0: 0xe78dbc09e2db8d9605dc8f23, + limb1: 0xc9303fa646a2966cfd79288, + limb2: 0xa61763bd756d1d418bd83966, + limb3: 0x198617a89efe66f0fd26cf06 } }, G2Line { r0a0: u384 { - limb0: 0x9c6e85e6a77538fa560fd462, - limb1: 0x9fb82c0685a3c27a1bf90ba7, - limb2: 0x493994f8fce59e945c485c28, - limb3: 0x3766b43e7a08257ed2354ed + limb0: 0x6ab1f6647ba9ba736f0839ad, + limb1: 0xe8204b773672d624630e2384, + limb2: 0x9ecdf669a827c29c74daf71b, + limb3: 0x2627dd5786ccd48891b28cb }, r0a1: u384 { - limb0: 0x854e18b7612609711346fef6, - limb1: 0xf4057e2cfc6dcbf656d4ac9c, - limb2: 0xe0179710ad38518ff2118bc4, - limb3: 0xd257c30e6286c26ffdbee02 + limb0: 0xd65bc63d35cc0bfb66c2fbf5, + limb1: 0xb658ffd3e2b02102a72560b5, + limb2: 0x4831f5285ece22bc1c6a1869, + limb3: 0x1721967f7d4fc728f65b501c }, r1a0: u384 { - limb0: 0x96a6b71a83c77aee100e530d, - limb1: 0xc6153a5f37b78ee455e52d5f, - limb2: 0xd2d97fc6614ca2f3bb9ee87f, - limb3: 0x168ec4820db83d5e8a6c9ef + limb0: 0x6794d4f4801a0974d863a911, + limb1: 0xbecbc2ac5e4c8d8ccf656991, + limb2: 0x9ec1f54cdfcb10932d199399, + limb3: 0x2406219596075a45c6e0806 }, r1a1: u384 { - limb0: 0xad2ce1bfa6711a5edd09977f, - limb1: 0x96cbcc960eb483b672649ce6, - limb2: 0xd2a8f121e34371fdb96cbd6c, - limb3: 0xeb3de344858ace964e05255 + limb0: 0xe78dbc09e2db8d9605dc8f23, + limb1: 0xc9303fa646a2966cfd79288, + limb2: 0xa61763bd756d1d418bd83966, + limb3: 0x198617a89efe66f0fd26cf06 } }, G2Line { r0a0: u384 { - limb0: 0xfdef7fccc66ed18219fbc45f, - limb1: 0xd0f6421d89eac7d103436a7e, - limb2: 0x3fae04610eca3b863d25d41, - limb3: 0x7faf7cb3c233d6fa66353e5 + limb0: 0x3d1d195f552c9f18d8d5c535, + limb1: 0x1323b299172854615a455e4a, + limb2: 0xf7d398cbadc32d691ed52bd6, + limb3: 0x659beaad32fe55ba9df44d9 }, r0a1: u384 { - limb0: 0xe2e3987622b6d399fd1d8cf0, - limb1: 0x3cce79c88a07edc34644a666, - limb2: 0x703e264197ee5f0b2aef830c, - limb3: 0x61f1ef1b9fefd9a2419788b + limb0: 0x98c06f5573cfa234289b62d8, + limb1: 0xe515dd299c6e00bc6df14c34, + limb2: 0x23b66fe012eb1a443038cb88, + limb3: 0x12f810746c2c45af5360d9bc }, r1a0: u384 { - limb0: 0xa315bb3433ddbe80ad895586, - limb1: 0x707338d0048c919ea39b8591, - limb2: 0xf07947c8a4bccccaf2ec7001, - limb3: 0x1694b12c04ec620596660bc7 + limb0: 0x3aae5b2af57f0c9c94bb32, + limb1: 0x777a7e6bbc9962ab6be81f76, + limb2: 0x14cbce88a915fc5331313d21, + limb3: 0x13a52e8a1ac3c04b42218be1 }, r1a1: u384 { - limb0: 0xccd3fbe95f71f12f38f7228e, - limb1: 0x433fe25846ac52cae1b379bd, - limb2: 0xbc75223acebf2d47b0678df2, - limb3: 0x81bdc3e10bc9b41d2d6313b + limb0: 0xd2b673a0bae8bfb28cff0c45, + limb1: 0xf95ff65fcc89601198dc8f91, + limb2: 0xd77322bf8488715eef3f6fb1, + limb3: 0xf1277bfb59098f10a9131b5 } }, G2Line { r0a0: u384 { - limb0: 0xfdef7fccc66ed18219fbc45f, - limb1: 0xd0f6421d89eac7d103436a7e, - limb2: 0x3fae04610eca3b863d25d41, - limb3: 0x7faf7cb3c233d6fa66353e5 + limb0: 0x3d1d195f552c9f18d8d5c535, + limb1: 0x1323b299172854615a455e4a, + limb2: 0xf7d398cbadc32d691ed52bd6, + limb3: 0x659beaad32fe55ba9df44d9 }, r0a1: u384 { - limb0: 0xe2e3987622b6d399fd1d8cf0, - limb1: 0x3cce79c88a07edc34644a666, - limb2: 0x703e264197ee5f0b2aef830c, - limb3: 0x61f1ef1b9fefd9a2419788b + limb0: 0x98c06f5573cfa234289b62d8, + limb1: 0xe515dd299c6e00bc6df14c34, + limb2: 0x23b66fe012eb1a443038cb88, + limb3: 0x12f810746c2c45af5360d9bc }, r1a0: u384 { - limb0: 0xa315bb3433ddbe80ad895586, - limb1: 0x707338d0048c919ea39b8591, - limb2: 0xf07947c8a4bccccaf2ec7001, - limb3: 0x1694b12c04ec620596660bc7 + limb0: 0x3aae5b2af57f0c9c94bb32, + limb1: 0x777a7e6bbc9962ab6be81f76, + limb2: 0x14cbce88a915fc5331313d21, + limb3: 0x13a52e8a1ac3c04b42218be1 }, r1a1: u384 { - limb0: 0xccd3fbe95f71f12f38f7228e, - limb1: 0x433fe25846ac52cae1b379bd, - limb2: 0xbc75223acebf2d47b0678df2, - limb3: 0x81bdc3e10bc9b41d2d6313b + limb0: 0xd2b673a0bae8bfb28cff0c45, + limb1: 0xf95ff65fcc89601198dc8f91, + limb2: 0xd77322bf8488715eef3f6fb1, + limb3: 0xf1277bfb59098f10a9131b5 } }, G2Line { r0a0: u384 { - limb0: 0xfa2a48365e288401bed22356, - limb1: 0xb758b95f5d94d30e1c23bcf9, - limb2: 0x10e9f1ea194b07feb87ad6e9, - limb3: 0x1015b8e3fa22a6d854c23c25 + limb0: 0x994b3340947e0dfc5f4449bf, + limb1: 0xf2a54d7464f1f50b95abe9d8, + limb2: 0xaa05f45202de8ae127c3d64b, + limb3: 0x105819b4d71c03790bfeb092 }, r0a1: u384 { - limb0: 0xaec5e185788c4a9753570719, - limb1: 0xa3ab0c87a361dc5543785d2d, - limb2: 0x60e25571914a7f16944c0b67, - limb3: 0x1db3643fcfca8081c398bdc + limb0: 0xdbca0a627c296fe7aad607f1, + limb1: 0x7a8255ce902319b92cd065be, + limb2: 0x7b50bc220077a52b59ce5307, + limb3: 0xf9e05915fae54c347b88c1e }, r1a0: u384 { - limb0: 0xff97723a85c1453651460606, - limb1: 0xe76638687ec62a042aec8c36, - limb2: 0x28b572655137c3f3c7aec8c2, - limb3: 0x525af862c7a6cfa46c61947 + limb0: 0x2cac98351a30b0b82a54b79e, + limb1: 0xed07531e9f2463331277b6f3, + limb2: 0x12b3ebca243e04ae826f6c33, + limb3: 0x12969325aa2fdc65900e8a68 }, r1a1: u384 { - limb0: 0xdf9fe9c404c4d19aa9d6ebd4, - limb1: 0x40330d8ff2e399772d1242d6, - limb2: 0x700f07e5a33f296a4d2dd399, - limb3: 0x1281b6e7edc328d6124997ee + limb0: 0xb0799b5a24a5ceb48429df27, + limb1: 0x2ee6d0a37a7ddc7798f3bc77, + limb2: 0x63ec626451e43c56ff92bafb, + limb3: 0x50818d39d6234b4dc233a38 } }, G2Line { r0a0: u384 { - limb0: 0xfa2a48365e288401bed22356, - limb1: 0xb758b95f5d94d30e1c23bcf9, - limb2: 0x10e9f1ea194b07feb87ad6e9, - limb3: 0x1015b8e3fa22a6d854c23c25 + limb0: 0x994b3340947e0dfc5f4449bf, + limb1: 0xf2a54d7464f1f50b95abe9d8, + limb2: 0xaa05f45202de8ae127c3d64b, + limb3: 0x105819b4d71c03790bfeb092 }, r0a1: u384 { - limb0: 0xaec5e185788c4a9753570719, - limb1: 0xa3ab0c87a361dc5543785d2d, - limb2: 0x60e25571914a7f16944c0b67, - limb3: 0x1db3643fcfca8081c398bdc + limb0: 0xdbca0a627c296fe7aad607f1, + limb1: 0x7a8255ce902319b92cd065be, + limb2: 0x7b50bc220077a52b59ce5307, + limb3: 0xf9e05915fae54c347b88c1e }, r1a0: u384 { - limb0: 0xff97723a85c1453651460606, - limb1: 0xe76638687ec62a042aec8c36, - limb2: 0x28b572655137c3f3c7aec8c2, - limb3: 0x525af862c7a6cfa46c61947 + limb0: 0x2cac98351a30b0b82a54b79e, + limb1: 0xed07531e9f2463331277b6f3, + limb2: 0x12b3ebca243e04ae826f6c33, + limb3: 0x12969325aa2fdc65900e8a68 }, r1a1: u384 { - limb0: 0xdf9fe9c404c4d19aa9d6ebd4, - limb1: 0x40330d8ff2e399772d1242d6, - limb2: 0x700f07e5a33f296a4d2dd399, - limb3: 0x1281b6e7edc328d6124997ee + limb0: 0xb0799b5a24a5ceb48429df27, + limb1: 0x2ee6d0a37a7ddc7798f3bc77, + limb2: 0x63ec626451e43c56ff92bafb, + limb3: 0x50818d39d6234b4dc233a38 } }, G2Line { r0a0: u384 { - limb0: 0x95f3d826c05179b13655ef29, - limb1: 0xf2e9c2cbf0e9d7d137cc5ae6, - limb2: 0x134cb9c83d1f6d72ae0db7f4, - limb3: 0x7695cdfd7fc226478f399ca + limb0: 0xb67cc5f083f96e39a134d194, + limb1: 0xaf9e780b6c4a7184061027d7, + limb2: 0xdcda4477070e92cdf3397d43, + limb3: 0x6a696f2522cc9af3d082748 }, r0a1: u384 { - limb0: 0xa9fecf51ff6c6fe3d57a7d8b, - limb1: 0x8fb00714c39594fa3de30bbd, - limb2: 0x88c4834a4681af9c74c56a4d, - limb3: 0x16a9816333cc838d77b8dbe7 + limb0: 0x392c02806e22eca0d48618e7, + limb1: 0x8aba49a57d2d347b3df198c6, + limb2: 0x754cc050d1a93ac3f85ce805, + limb3: 0xe759f363f34e4784dc65a71 }, r1a0: u384 { - limb0: 0xc5cbdb4a9a252db0678000bf, - limb1: 0xb7d711c3302a59f737d2934e, - limb2: 0x9c717bc598aefce5190a7fe2, - limb3: 0xe022f63b445943df72ebfec + limb0: 0xd34741277335bd3799ea321e, + limb1: 0xdd6641b8fbd73a1428f041ea, + limb2: 0xe38c8915296a5c201145b868, + limb3: 0x105d879c98b5261f00ea9de9 }, r1a1: u384 { - limb0: 0xd89a0ac06dc78463c39dc0c2, - limb1: 0x774e2c35170a4adef076992f, - limb2: 0x47e149c468565c6342f2ee9, - limb3: 0x18a3b9c0766b12f8aed8ed93 + limb0: 0x5c96d186d5a39ffc6149aefc, + limb1: 0xe4f274d1b18b7edb57fc9918, + limb2: 0xea1f8cfaa190965fbae29234, + limb3: 0x110e5f288f9b57423dcde8a7 } }, G2Line { r0a0: u384 { - limb0: 0x95f3d826c05179b13655ef29, - limb1: 0xf2e9c2cbf0e9d7d137cc5ae6, - limb2: 0x134cb9c83d1f6d72ae0db7f4, - limb3: 0x7695cdfd7fc226478f399ca + limb0: 0xb67cc5f083f96e39a134d194, + limb1: 0xaf9e780b6c4a7184061027d7, + limb2: 0xdcda4477070e92cdf3397d43, + limb3: 0x6a696f2522cc9af3d082748 }, r0a1: u384 { - limb0: 0xa9fecf51ff6c6fe3d57a7d8b, - limb1: 0x8fb00714c39594fa3de30bbd, - limb2: 0x88c4834a4681af9c74c56a4d, - limb3: 0x16a9816333cc838d77b8dbe7 + limb0: 0x392c02806e22eca0d48618e7, + limb1: 0x8aba49a57d2d347b3df198c6, + limb2: 0x754cc050d1a93ac3f85ce805, + limb3: 0xe759f363f34e4784dc65a71 }, r1a0: u384 { - limb0: 0xc5cbdb4a9a252db0678000bf, - limb1: 0xb7d711c3302a59f737d2934e, - limb2: 0x9c717bc598aefce5190a7fe2, - limb3: 0xe022f63b445943df72ebfec + limb0: 0xd34741277335bd3799ea321e, + limb1: 0xdd6641b8fbd73a1428f041ea, + limb2: 0xe38c8915296a5c201145b868, + limb3: 0x105d879c98b5261f00ea9de9 }, r1a1: u384 { - limb0: 0xd89a0ac06dc78463c39dc0c2, - limb1: 0x774e2c35170a4adef076992f, - limb2: 0x47e149c468565c6342f2ee9, - limb3: 0x18a3b9c0766b12f8aed8ed93 + limb0: 0x5c96d186d5a39ffc6149aefc, + limb1: 0xe4f274d1b18b7edb57fc9918, + limb2: 0xea1f8cfaa190965fbae29234, + limb3: 0x110e5f288f9b57423dcde8a7 } }, G2Line { r0a0: u384 { - limb0: 0xb7534a62cdc162c2de58979b, - limb1: 0x9ff2cd37a1c558b67e2f5678, - limb2: 0xc0e6ce575334ae3a8de17dd7, - limb3: 0x19501226077b75a37538c451 + limb0: 0xfd988b3fefee9bec8d580624, + limb1: 0xea8b268179a0cff5e5a733de, + limb2: 0xc3261de3bb0dae36dd3a12d1, + limb3: 0xe0311c57778716dd26ec448 }, r0a1: u384 { - limb0: 0x3a943d7b1e53666b8e6b3e51, - limb1: 0x787903b401e45a380479512d, - limb2: 0xef748f6f0090f0066456c847, - limb3: 0x3c4cab4abd941d78878ed2c + limb0: 0xbd3bb91f6aebae19c756f359, + limb1: 0x8ddb3cfc5cbb0a427decde5c, + limb2: 0xa3ee67368948da84ef76cc9c, + limb3: 0x386b903ec5f7b21375b440b }, r1a0: u384 { - limb0: 0xca80127688190d2ed06a1eeb, - limb1: 0x15a695fca449f3f31d3e1bac, - limb2: 0xfe0997c8a0d4374443426786, - limb3: 0xba9b807d434c97abe206772 + limb0: 0xf101c44cc5023657f2d800ce, + limb1: 0xe3c33e1823e3fbd36e6ec7f3, + limb2: 0xb72b4d93169a4b6f53c98bd8, + limb3: 0xfe4e73b7283c84a94493193 }, r1a1: u384 { - limb0: 0x1a0cf25cdbb9c4b1e256dc8b, - limb1: 0x9f91c6e80f821cb0636864c0, - limb2: 0xa9422df77effb37a0b3ef745, - limb3: 0x17bac78702d14cd59e508221 + limb0: 0x72d680350e90ad8a1b951514, + limb1: 0xbcc457b76fcdb17ec8734b67, + limb2: 0xc2f60e7bf5f241b7e5cee4a0, + limb3: 0x16aaebbc648697f433c2261d } }, G2Line { r0a0: u384 { - limb0: 0xb7534a62cdc162c2de58979b, - limb1: 0x9ff2cd37a1c558b67e2f5678, - limb2: 0xc0e6ce575334ae3a8de17dd7, - limb3: 0x19501226077b75a37538c451 + limb0: 0xfd988b3fefee9bec8d580624, + limb1: 0xea8b268179a0cff5e5a733de, + limb2: 0xc3261de3bb0dae36dd3a12d1, + limb3: 0xe0311c57778716dd26ec448 }, r0a1: u384 { - limb0: 0x3a943d7b1e53666b8e6b3e51, - limb1: 0x787903b401e45a380479512d, - limb2: 0xef748f6f0090f0066456c847, - limb3: 0x3c4cab4abd941d78878ed2c + limb0: 0xbd3bb91f6aebae19c756f359, + limb1: 0x8ddb3cfc5cbb0a427decde5c, + limb2: 0xa3ee67368948da84ef76cc9c, + limb3: 0x386b903ec5f7b21375b440b }, r1a0: u384 { - limb0: 0xca80127688190d2ed06a1eeb, - limb1: 0x15a695fca449f3f31d3e1bac, - limb2: 0xfe0997c8a0d4374443426786, - limb3: 0xba9b807d434c97abe206772 + limb0: 0xf101c44cc5023657f2d800ce, + limb1: 0xe3c33e1823e3fbd36e6ec7f3, + limb2: 0xb72b4d93169a4b6f53c98bd8, + limb3: 0xfe4e73b7283c84a94493193 }, r1a1: u384 { - limb0: 0x1a0cf25cdbb9c4b1e256dc8b, - limb1: 0x9f91c6e80f821cb0636864c0, - limb2: 0xa9422df77effb37a0b3ef745, - limb3: 0x17bac78702d14cd59e508221 + limb0: 0x72d680350e90ad8a1b951514, + limb1: 0xbcc457b76fcdb17ec8734b67, + limb2: 0xc2f60e7bf5f241b7e5cee4a0, + limb3: 0x16aaebbc648697f433c2261d } }, G2Line { r0a0: u384 { - limb0: 0xde23a40ddc2e63839659d6af, - limb1: 0x7236dd37933aa6a347c8f801, - limb2: 0x452e0c75c947915c9dea0129, - limb3: 0x187f7dd4a4bd686f310b36ca + limb0: 0x6f85133f411d25e0b5f35e4e, + limb1: 0xc638badc6521e71c561777f7, + limb2: 0x8353d2452d7ab56d813e41e4, + limb3: 0x10bc8e7f6b5289bdc1c5fa9f }, r0a1: u384 { - limb0: 0x92280529c2ac31341c108544, - limb1: 0x12a0412b12fa0664dc6c2f63, - limb2: 0x3dd83fefe01546994474e8fc, - limb3: 0xa2dbbad0a4becd08ef85397 + limb0: 0xab5f1742cb30521d01daacc0, + limb1: 0x9e56c445377075119d1596a4, + limb2: 0xa72211611536639fe4976d69, + limb3: 0x11f238149a22f79fa16cb32b }, r1a0: u384 { - limb0: 0xd075ee9c871d4dd8354e6c16, - limb1: 0x6e120403cf59229b2959e140, - limb2: 0xcc5744bdf052e9582845c1d2, - limb3: 0x7fb777d4cef9c7fed055188 + limb0: 0x8367fe7274231c74704c80ff, + limb1: 0xa8e2ad1a7f0c36a34b48cd88, + limb2: 0x7faca91a72963d25472465c, + limb3: 0x1311fd26e3b83c10952fb826 }, r1a1: u384 { - limb0: 0xeef57aa4869b173f6b70ac7e, - limb1: 0x88e47b20b141ef90714c2f48, - limb2: 0x43fe27404db53d71a35ab859, - limb3: 0xd9707dfbecc83b5bf190616 + limb0: 0xae246df1f149439c747384f1, + limb1: 0x68a615ee2f9d7f8d56f2174b, + limb2: 0xf64d48e37e9111200271d2ee, + limb3: 0x2daa9898e27bc3d9ce26195 } }, G2Line { r0a0: u384 { - limb0: 0xde23a40ddc2e63839659d6af, - limb1: 0x7236dd37933aa6a347c8f801, - limb2: 0x452e0c75c947915c9dea0129, - limb3: 0x187f7dd4a4bd686f310b36ca + limb0: 0x6f85133f411d25e0b5f35e4e, + limb1: 0xc638badc6521e71c561777f7, + limb2: 0x8353d2452d7ab56d813e41e4, + limb3: 0x10bc8e7f6b5289bdc1c5fa9f }, r0a1: u384 { - limb0: 0x92280529c2ac31341c108544, - limb1: 0x12a0412b12fa0664dc6c2f63, - limb2: 0x3dd83fefe01546994474e8fc, - limb3: 0xa2dbbad0a4becd08ef85397 + limb0: 0xab5f1742cb30521d01daacc0, + limb1: 0x9e56c445377075119d1596a4, + limb2: 0xa72211611536639fe4976d69, + limb3: 0x11f238149a22f79fa16cb32b }, r1a0: u384 { - limb0: 0xd075ee9c871d4dd8354e6c16, - limb1: 0x6e120403cf59229b2959e140, - limb2: 0xcc5744bdf052e9582845c1d2, - limb3: 0x7fb777d4cef9c7fed055188 + limb0: 0x8367fe7274231c74704c80ff, + limb1: 0xa8e2ad1a7f0c36a34b48cd88, + limb2: 0x7faca91a72963d25472465c, + limb3: 0x1311fd26e3b83c10952fb826 }, r1a1: u384 { - limb0: 0xeef57aa4869b173f6b70ac7e, - limb1: 0x88e47b20b141ef90714c2f48, - limb2: 0x43fe27404db53d71a35ab859, - limb3: 0xd9707dfbecc83b5bf190616 + limb0: 0xae246df1f149439c747384f1, + limb1: 0x68a615ee2f9d7f8d56f2174b, + limb2: 0xf64d48e37e9111200271d2ee, + limb3: 0x2daa9898e27bc3d9ce26195 } }, G2Line { r0a0: u384 { - limb0: 0x6d6a72660f57c436776eda35, - limb1: 0xeafcdca6e1a8e83e00a7f0ef, - limb2: 0xd033eaf2ad6e66cc37d0ec8e, - limb3: 0xef93525e6741eb730be0a46 + limb0: 0x293cdab968151d9a88ba8197, + limb1: 0x91e20a097317fbf539a50489, + limb2: 0x60d594dea296004ee2824b62, + limb3: 0x190b7e72bd6ee0ed0faf4962 }, r0a1: u384 { - limb0: 0x9c51378ae6350f902a4c2c7a, - limb1: 0xa3b25fa5bcd02bba9a026049, - limb2: 0x7afc819b216ebc5974672907, - limb3: 0x350dcd8d9858b308df51913 + limb0: 0xb5b5a519c745663a2d0a6a22, + limb1: 0xe8d8005fede56d9bb7f102ac, + limb2: 0x1534acc00cf17be37afd327d, + limb3: 0xb3c34b4025f50c09d86ccf1 }, r1a0: u384 { - limb0: 0xea0ef61f198a1552fc1141bd, - limb1: 0xe9a70f4e7d1ba1bbbd4bf1cc, - limb2: 0xfe1d0c44657f4b2eb85cee10, - limb3: 0xbbfa1411259082d34cfc9fe + limb0: 0x8a28c9f5c487242be3157d10, + limb1: 0x35adb9f220d3910e8e7e628a, + limb2: 0x8a53a50706970f599abb8b1, + limb3: 0x1813805985492b229d25c9c0 }, r1a1: u384 { - limb0: 0x931fc0ebba476b19b572abd6, - limb1: 0x69d3410ed34dec5ae85c7f02, - limb2: 0x9601b3f844749e86a6c9ebbb, - limb3: 0x68245eea0f50d874408cff + limb0: 0x53f421abc7375d7ef5f4ea15, + limb1: 0x3453e28c8b88718a6bd2122c, + limb2: 0x181dbbb6144062890a582400, + limb3: 0xe27d7ff293c8253269fc184 } }, G2Line { r0a0: u384 { - limb0: 0x6d6a72660f57c436776eda35, - limb1: 0xeafcdca6e1a8e83e00a7f0ef, - limb2: 0xd033eaf2ad6e66cc37d0ec8e, - limb3: 0xef93525e6741eb730be0a46 + limb0: 0x293cdab968151d9a88ba8197, + limb1: 0x91e20a097317fbf539a50489, + limb2: 0x60d594dea296004ee2824b62, + limb3: 0x190b7e72bd6ee0ed0faf4962 }, r0a1: u384 { - limb0: 0x9c51378ae6350f902a4c2c7a, - limb1: 0xa3b25fa5bcd02bba9a026049, - limb2: 0x7afc819b216ebc5974672907, - limb3: 0x350dcd8d9858b308df51913 + limb0: 0xb5b5a519c745663a2d0a6a22, + limb1: 0xe8d8005fede56d9bb7f102ac, + limb2: 0x1534acc00cf17be37afd327d, + limb3: 0xb3c34b4025f50c09d86ccf1 }, r1a0: u384 { - limb0: 0xea0ef61f198a1552fc1141bd, - limb1: 0xe9a70f4e7d1ba1bbbd4bf1cc, - limb2: 0xfe1d0c44657f4b2eb85cee10, - limb3: 0xbbfa1411259082d34cfc9fe + limb0: 0x8a28c9f5c487242be3157d10, + limb1: 0x35adb9f220d3910e8e7e628a, + limb2: 0x8a53a50706970f599abb8b1, + limb3: 0x1813805985492b229d25c9c0 }, r1a1: u384 { - limb0: 0x931fc0ebba476b19b572abd6, - limb1: 0x69d3410ed34dec5ae85c7f02, - limb2: 0x9601b3f844749e86a6c9ebbb, - limb3: 0x68245eea0f50d874408cff + limb0: 0x53f421abc7375d7ef5f4ea15, + limb1: 0x3453e28c8b88718a6bd2122c, + limb2: 0x181dbbb6144062890a582400, + limb3: 0xe27d7ff293c8253269fc184 } }, G2Line { r0a0: u384 { - limb0: 0x2ea5ca03ed5c36adea6aaf97, - limb1: 0xcfe448e1bf8e79789c8f9e4f, - limb2: 0x7a2ac401950406d62342c352, - limb3: 0xc7fcd80ab661bcd2ad9b57d + limb0: 0x788ac954b6de3b9ef5a6c12c, + limb1: 0xe13873c4ba9728c89be70b9a, + limb2: 0x5d6b9d45c0985f271595d4c9, + limb3: 0x1954917fe709faff9865ebc3 }, r0a1: u384 { - limb0: 0x14d191c991a5c5108df463f7, - limb1: 0x6f95a3fc4a463d9b04327b28, - limb2: 0x36c2b7700e9fce73bd6bff6f, - limb3: 0x92bfb6a6ad5cf6fd3a7dcd5 + limb0: 0x93fca181f0664865a2fc75fe, + limb1: 0x535e2e42a4a967f7ca763127, + limb2: 0xce90cca6dfec0e2e8fae9e3, + limb3: 0xd086b29c92aaddb7245299d }, r1a0: u384 { - limb0: 0x836e5966d59a9fc769c823b0, - limb1: 0x5942c66126c653b6acfd2812, - limb2: 0x8d8b35a3568c0d2937f9dc8b, - limb3: 0x1462a7d94f5d4b49856a1808 + limb0: 0x4ef1ed09cae08920a78f3bd7, + limb1: 0x6714e095d8cc53e3829f2b5a, + limb2: 0x9022123e8d70a0049ccb62a6, + limb3: 0xef311f53ea87dc5da3ddd33 }, r1a1: u384 { - limb0: 0xf61001b7080797f2aebe1884, - limb1: 0x97731b9c760f92ff1f08129c, - limb2: 0xbd7a61eefd4d30d7f0ed27ff, - limb3: 0x21a0b715cacee49f7a3d5b7 + limb0: 0xbc5ec58d4c68ebde3ce5d6af, + limb1: 0x91f1285170fbc3c4d812f3aa, + limb2: 0x13eec60eefd5588477e432d8, + limb3: 0x74a34dc5c8359340c5fe4f1 } }, G2Line { r0a0: u384 { - limb0: 0x2ea5ca03ed5c36adea6aaf97, - limb1: 0xcfe448e1bf8e79789c8f9e4f, - limb2: 0x7a2ac401950406d62342c352, - limb3: 0xc7fcd80ab661bcd2ad9b57d + limb0: 0x788ac954b6de3b9ef5a6c12c, + limb1: 0xe13873c4ba9728c89be70b9a, + limb2: 0x5d6b9d45c0985f271595d4c9, + limb3: 0x1954917fe709faff9865ebc3 }, r0a1: u384 { - limb0: 0x14d191c991a5c5108df463f7, - limb1: 0x6f95a3fc4a463d9b04327b28, - limb2: 0x36c2b7700e9fce73bd6bff6f, - limb3: 0x92bfb6a6ad5cf6fd3a7dcd5 + limb0: 0x93fca181f0664865a2fc75fe, + limb1: 0x535e2e42a4a967f7ca763127, + limb2: 0xce90cca6dfec0e2e8fae9e3, + limb3: 0xd086b29c92aaddb7245299d }, r1a0: u384 { - limb0: 0x836e5966d59a9fc769c823b0, - limb1: 0x5942c66126c653b6acfd2812, - limb2: 0x8d8b35a3568c0d2937f9dc8b, - limb3: 0x1462a7d94f5d4b49856a1808 + limb0: 0x4ef1ed09cae08920a78f3bd7, + limb1: 0x6714e095d8cc53e3829f2b5a, + limb2: 0x9022123e8d70a0049ccb62a6, + limb3: 0xef311f53ea87dc5da3ddd33 }, r1a1: u384 { - limb0: 0xf61001b7080797f2aebe1884, - limb1: 0x97731b9c760f92ff1f08129c, - limb2: 0xbd7a61eefd4d30d7f0ed27ff, - limb3: 0x21a0b715cacee49f7a3d5b7 + limb0: 0xbc5ec58d4c68ebde3ce5d6af, + limb1: 0x91f1285170fbc3c4d812f3aa, + limb2: 0x13eec60eefd5588477e432d8, + limb3: 0x74a34dc5c8359340c5fe4f1 } }, G2Line { r0a0: u384 { - limb0: 0xae2153b03216f8ff4d9afb94, - limb1: 0x94b81d0c2de4d8296411abbe, - limb2: 0x1f7b494bcf87ca4773a7837c, - limb3: 0x13ee11dec4b2434d342a4f74 + limb0: 0x46d409dd77b17a23fc402a34, + limb1: 0x26d0e70f78ec18c019c2f074, + limb2: 0x98d531c6d1b75c297e5f3c9, + limb3: 0x3a571d848cc57291ff2ffa }, r0a1: u384 { - limb0: 0x5e68462a69915862df3eee14, - limb1: 0x91746a7e4c0e25d00dad2a85, - limb2: 0x4a19882a1fc3f62a66300844, - limb3: 0x169cb62b895d143ec81e60a8 + limb0: 0x9220d2160322f603fa59c76, + limb1: 0xf7811520cd515d496363e693, + limb2: 0x2c5614352975026f33861c37, + limb3: 0x17644f4fbe80675d0953c99d }, r1a0: u384 { - limb0: 0xa1c4515a7cfe14acd62705b3, - limb1: 0xcc6115ad6a7ca3d7c59829d9, - limb2: 0x4ffa72033158db734db9c470, - limb3: 0x14bc0bc6ccdff33788d582df + limb0: 0x4aaca6cc8c9d33c63c0f1d1b, + limb1: 0xe45b1fa9442911a2857ec8fa, + limb2: 0x32c9f0ff272cf03afd720f7d, + limb3: 0x1e0242dad0177697c8a0aff }, r1a1: u384 { - limb0: 0x2042c507aa68a1787be9581, - limb1: 0x42c41a0867c5b3a5060fcd7a, - limb2: 0x7dee7a6d07580bcbc630b367, - limb3: 0x342504553cfd3daccb699c4 + limb0: 0x728463c48b5aea9ca697e90b, + limb1: 0x7b8f08b990bfcb2db30c3193, + limb2: 0x7232cfafe8d7566719d9c4af, + limb3: 0x5f1c40f1c28ca2cf8f83994 } }, G2Line { r0a0: u384 { - limb0: 0xae2153b03216f8ff4d9afb94, - limb1: 0x94b81d0c2de4d8296411abbe, - limb2: 0x1f7b494bcf87ca4773a7837c, - limb3: 0x13ee11dec4b2434d342a4f74 + limb0: 0x46d409dd77b17a23fc402a34, + limb1: 0x26d0e70f78ec18c019c2f074, + limb2: 0x98d531c6d1b75c297e5f3c9, + limb3: 0x3a571d848cc57291ff2ffa }, r0a1: u384 { - limb0: 0x5e68462a69915862df3eee14, - limb1: 0x91746a7e4c0e25d00dad2a85, - limb2: 0x4a19882a1fc3f62a66300844, - limb3: 0x169cb62b895d143ec81e60a8 + limb0: 0x9220d2160322f603fa59c76, + limb1: 0xf7811520cd515d496363e693, + limb2: 0x2c5614352975026f33861c37, + limb3: 0x17644f4fbe80675d0953c99d }, r1a0: u384 { - limb0: 0xa1c4515a7cfe14acd62705b3, - limb1: 0xcc6115ad6a7ca3d7c59829d9, - limb2: 0x4ffa72033158db734db9c470, - limb3: 0x14bc0bc6ccdff33788d582df + limb0: 0x4aaca6cc8c9d33c63c0f1d1b, + limb1: 0xe45b1fa9442911a2857ec8fa, + limb2: 0x32c9f0ff272cf03afd720f7d, + limb3: 0x1e0242dad0177697c8a0aff }, r1a1: u384 { - limb0: 0x2042c507aa68a1787be9581, - limb1: 0x42c41a0867c5b3a5060fcd7a, - limb2: 0x7dee7a6d07580bcbc630b367, - limb3: 0x342504553cfd3daccb699c4 + limb0: 0x728463c48b5aea9ca697e90b, + limb1: 0x7b8f08b990bfcb2db30c3193, + limb2: 0x7232cfafe8d7566719d9c4af, + limb3: 0x5f1c40f1c28ca2cf8f83994 } }, G2Line { r0a0: u384 { - limb0: 0x41a49a066bb1a761e1ae588b, - limb1: 0x1671e2255b4f64ea8a5b7a9, - limb2: 0xf0e5bb3b2a2333aafb799d6e, - limb3: 0x192f0f2de636afd8f9e91021 + limb0: 0xf6913070c37af578aa1b9a37, + limb1: 0x664781917f37151d3a0d627a, + limb2: 0x9d5cd2ddf7dd66c044a101e6, + limb3: 0x13cc21b4e1f7c288d1b899ad }, r0a1: u384 { - limb0: 0xc1fcfa2372efda138dd8e1bf, - limb1: 0x758d91573301b48c3554d5cd, - limb2: 0x3944ef84b3aa37c4297d8622, - limb3: 0x106469e1f4398aab394889c2 + limb0: 0x5607928bdfad47c77f840a3, + limb1: 0xdd3d8bf376d25ba8b3a926aa, + limb2: 0x35c034874a2ccd33ec0fedad, + limb3: 0x176b6eb4cbcedd0416d8b2e9 }, r1a0: u384 { - limb0: 0xc7a487c958f09657cf2b6fc1, - limb1: 0x58559553cfd46444fd5468ee, - limb2: 0xa9537a7a3cac71995f1da997, - limb3: 0x9cbd98497bf64d3e62d125b + limb0: 0x1f81c4f93cff2721578a1cd7, + limb1: 0x7908a9522938e77f3e279a41, + limb2: 0x7fdc79ff7c835d873ab01ed2, + limb3: 0x11e3d19be097dc7e63b49b10 }, r1a1: u384 { - limb0: 0x8230616acaa6828f65511a42, - limb1: 0xb1fb7b2f5cbaf1560e2838f9, - limb2: 0x50c5a52012f6ed8d62932eec, - limb3: 0xf022e79f93d6205fbe499d5 + limb0: 0x235b99292b27c9efd6a59ff4, + limb1: 0x82cb49f680a93e6e718e3689, + limb2: 0x710cd7d6390eca09a291ad52, + limb3: 0xf60ffe1a70c2771c44ee20f } }, G2Line { r0a0: u384 { - limb0: 0x41a49a066bb1a761e1ae588b, - limb1: 0x1671e2255b4f64ea8a5b7a9, - limb2: 0xf0e5bb3b2a2333aafb799d6e, - limb3: 0x192f0f2de636afd8f9e91021 + limb0: 0xf6913070c37af578aa1b9a37, + limb1: 0x664781917f37151d3a0d627a, + limb2: 0x9d5cd2ddf7dd66c044a101e6, + limb3: 0x13cc21b4e1f7c288d1b899ad }, r0a1: u384 { - limb0: 0xc1fcfa2372efda138dd8e1bf, - limb1: 0x758d91573301b48c3554d5cd, - limb2: 0x3944ef84b3aa37c4297d8622, - limb3: 0x106469e1f4398aab394889c2 + limb0: 0x5607928bdfad47c77f840a3, + limb1: 0xdd3d8bf376d25ba8b3a926aa, + limb2: 0x35c034874a2ccd33ec0fedad, + limb3: 0x176b6eb4cbcedd0416d8b2e9 }, r1a0: u384 { - limb0: 0xc7a487c958f09657cf2b6fc1, - limb1: 0x58559553cfd46444fd5468ee, - limb2: 0xa9537a7a3cac71995f1da997, - limb3: 0x9cbd98497bf64d3e62d125b + limb0: 0x1f81c4f93cff2721578a1cd7, + limb1: 0x7908a9522938e77f3e279a41, + limb2: 0x7fdc79ff7c835d873ab01ed2, + limb3: 0x11e3d19be097dc7e63b49b10 }, r1a1: u384 { - limb0: 0x8230616acaa6828f65511a42, - limb1: 0xb1fb7b2f5cbaf1560e2838f9, - limb2: 0x50c5a52012f6ed8d62932eec, - limb3: 0xf022e79f93d6205fbe499d5 + limb0: 0x235b99292b27c9efd6a59ff4, + limb1: 0x82cb49f680a93e6e718e3689, + limb2: 0x710cd7d6390eca09a291ad52, + limb3: 0xf60ffe1a70c2771c44ee20f } }, G2Line { r0a0: u384 { - limb0: 0x123fd78d7149b43d19f5ac55, - limb1: 0xaab4f64bb2528a0f3eb72180, - limb2: 0x3c40d10c96553078314f950d, - limb3: 0xec5707badb168f0c99a38b5 + limb0: 0x8b2d5026a69128c8dcd7fa01, + limb1: 0xa28af7e6845ec126ce674de3, + limb2: 0x74618fcee9375eaffe329a57, + limb3: 0xd495764b344945c1bbf2528 }, r0a1: u384 { - limb0: 0xc7d4c6b5f590ad1fa6b310a2, - limb1: 0xea43c02ea9fd5c7126e9d636, - limb2: 0x8758964bf0bf411445b77088, - limb3: 0xf592774d23f83b8623cab30 + limb0: 0xc7191fe7d9c67d8956440c8e, + limb1: 0x9886e12a6f751b086c256b4e, + limb2: 0x2d800e1229e7acc62268ce86, + limb3: 0x8a1766c3924e9fe41995f27 }, r1a0: u384 { - limb0: 0x85301ab54e5964ccb209f367, - limb1: 0x3a40d1407148ba4cffcd2c25, - limb2: 0x13cb9ecf2735452ff17785b, - limb3: 0x1aa79e73200a10b802cdd3 + limb0: 0xe95730415bdae7fa69798292, + limb1: 0x550a77eda4e6fd2f0bea1e69, + limb2: 0xad91cd00e401b4c4d699ac6, + limb3: 0x147171fe6dce69e5291e5d4 }, r1a1: u384 { - limb0: 0x4307b9fee75d0c923a4493b5, - limb1: 0x7d0538dc491e033b716995ae, - limb2: 0x409a7ef32839ab3c3cffd48d, - limb3: 0x191d70d7453f06e06c9265dc + limb0: 0x3950881f65abb4ae1b59bbca, + limb1: 0x588580a38b689b30f05b80bd, + limb2: 0x77cb4489a340d3748044c17c, + limb3: 0xda658ea95a6fefe83fa39d1 } }, G2Line { r0a0: u384 { - limb0: 0x123fd78d7149b43d19f5ac55, - limb1: 0xaab4f64bb2528a0f3eb72180, - limb2: 0x3c40d10c96553078314f950d, - limb3: 0xec5707badb168f0c99a38b5 + limb0: 0x8b2d5026a69128c8dcd7fa01, + limb1: 0xa28af7e6845ec126ce674de3, + limb2: 0x74618fcee9375eaffe329a57, + limb3: 0xd495764b344945c1bbf2528 }, r0a1: u384 { - limb0: 0xc7d4c6b5f590ad1fa6b310a2, - limb1: 0xea43c02ea9fd5c7126e9d636, - limb2: 0x8758964bf0bf411445b77088, - limb3: 0xf592774d23f83b8623cab30 + limb0: 0xc7191fe7d9c67d8956440c8e, + limb1: 0x9886e12a6f751b086c256b4e, + limb2: 0x2d800e1229e7acc62268ce86, + limb3: 0x8a1766c3924e9fe41995f27 }, r1a0: u384 { - limb0: 0x85301ab54e5964ccb209f367, - limb1: 0x3a40d1407148ba4cffcd2c25, - limb2: 0x13cb9ecf2735452ff17785b, - limb3: 0x1aa79e73200a10b802cdd3 + limb0: 0xe95730415bdae7fa69798292, + limb1: 0x550a77eda4e6fd2f0bea1e69, + limb2: 0xad91cd00e401b4c4d699ac6, + limb3: 0x147171fe6dce69e5291e5d4 }, r1a1: u384 { - limb0: 0x4307b9fee75d0c923a4493b5, - limb1: 0x7d0538dc491e033b716995ae, - limb2: 0x409a7ef32839ab3c3cffd48d, - limb3: 0x191d70d7453f06e06c9265dc + limb0: 0x3950881f65abb4ae1b59bbca, + limb1: 0x588580a38b689b30f05b80bd, + limb2: 0x77cb4489a340d3748044c17c, + limb3: 0xda658ea95a6fefe83fa39d1 } }, G2Line { r0a0: u384 { - limb0: 0x65bd13f5b7aae326d67e0f56, - limb1: 0x9ac79185ff9e63331bcba1ff, - limb2: 0x9ee04c0db424904e785d4151, - limb3: 0x45bc0f6e4a929effa452f0d + limb0: 0xfb36382a07a0546177544af4, + limb1: 0x98af0f0579819a56ea21677c, + limb2: 0xaba237656261d369d5d808d6, + limb3: 0xc9fb6adc6528d40d93c0da4 }, r0a1: u384 { - limb0: 0x28ff0d8e8e1538cf4c9e73c4, - limb1: 0x7add687656b82520bbdd44a8, - limb2: 0xaf5d9f0044a6c9d1f7df15e2, - limb3: 0x195c77872b843ba1039e17d0 + limb0: 0x5c117b9250db1f77095f3f80, + limb1: 0xda15f91e9282ff6deb2a2558, + limb2: 0xaa820f7393229d9126ae7b62, + limb3: 0x110c5e918c554c126361e32e }, r1a0: u384 { - limb0: 0x4e562ba6b68bc97487c145cf, - limb1: 0x44fa1579ed5e377e29e7c60c, - limb2: 0x385467d3076eff517c72223a, - limb3: 0x181d912ec2891b59876db278 + limb0: 0xac056d30f948e924aa511f05, + limb1: 0x31318c843660bb21180267e1, + limb2: 0xb22b2d85ae7080079ab0bc7e, + limb3: 0x14941dda97edcedd3d32ad23 }, r1a1: u384 { - limb0: 0xfc250e34500ace00533ad2ab, - limb1: 0xa3fd626b1d9e937eb4e12bc8, - limb2: 0x173e4bf1145c4c961202caa5, - limb3: 0x12606c90f340bb5bbae9ff37 + limb0: 0x876fd0749511e318e84cc37e, + limb1: 0x71b4a1c6b941f0bd7731cf3a, + limb2: 0x54e1fb48d3305bd534e5132f, + limb3: 0x262c905d8278be2f7a9d1ea } }, G2Line { r0a0: u384 { - limb0: 0x65bd13f5b7aae326d67e0f56, - limb1: 0x9ac79185ff9e63331bcba1ff, - limb2: 0x9ee04c0db424904e785d4151, - limb3: 0x45bc0f6e4a929effa452f0d + limb0: 0xfb36382a07a0546177544af4, + limb1: 0x98af0f0579819a56ea21677c, + limb2: 0xaba237656261d369d5d808d6, + limb3: 0xc9fb6adc6528d40d93c0da4 }, r0a1: u384 { - limb0: 0x28ff0d8e8e1538cf4c9e73c4, - limb1: 0x7add687656b82520bbdd44a8, - limb2: 0xaf5d9f0044a6c9d1f7df15e2, - limb3: 0x195c77872b843ba1039e17d0 + limb0: 0x5c117b9250db1f77095f3f80, + limb1: 0xda15f91e9282ff6deb2a2558, + limb2: 0xaa820f7393229d9126ae7b62, + limb3: 0x110c5e918c554c126361e32e }, r1a0: u384 { - limb0: 0x4e562ba6b68bc97487c145cf, - limb1: 0x44fa1579ed5e377e29e7c60c, - limb2: 0x385467d3076eff517c72223a, - limb3: 0x181d912ec2891b59876db278 + limb0: 0xac056d30f948e924aa511f05, + limb1: 0x31318c843660bb21180267e1, + limb2: 0xb22b2d85ae7080079ab0bc7e, + limb3: 0x14941dda97edcedd3d32ad23 }, r1a1: u384 { - limb0: 0xfc250e34500ace00533ad2ab, - limb1: 0xa3fd626b1d9e937eb4e12bc8, - limb2: 0x173e4bf1145c4c961202caa5, - limb3: 0x12606c90f340bb5bbae9ff37 + limb0: 0x876fd0749511e318e84cc37e, + limb1: 0x71b4a1c6b941f0bd7731cf3a, + limb2: 0x54e1fb48d3305bd534e5132f, + limb3: 0x262c905d8278be2f7a9d1ea } }, ] @@ -26291,3457 +26296,3457 @@ mod pairing_tests { let hint = MPCheckHintBLS12_381 { lambda_root_inverse: E12D { w0: u384 { - limb0: 0x2d3d9e0f247685018455fff8, - limb1: 0x38495873bf1d8812328b0637, - limb2: 0x268cb19549085d5cf8adf3ad, - limb3: 0x104385d46d1de84bdd222aa + limb0: 0x8bdaa3278720844c37567039, + limb1: 0xd2f1409607d64c54b73d78aa, + limb2: 0x2f6a4e683585d4ccc465352a, + limb3: 0x105016815aeab4c1b10cba42 }, w1: u384 { - limb0: 0x1cb76cfce56b3829c217f90, - limb1: 0x4ee8a8d7ada0e8f1e4d49f, - limb2: 0x6576fd8f3f70088c6ba854dc, - limb3: 0xd8a3e577c85a5cbb487f60c + limb0: 0xf14f1369d17825c133efc2d6, + limb1: 0xece7f8c4810788c9023c2ad2, + limb2: 0x8a7a3dca8c8fe5ccf68c0b23, + limb3: 0xe11367a38a9da9df3424073 }, w2: u384 { - limb0: 0x87c09d81a997fd8527ec9f48, - limb1: 0x9f0dbf1c1272e583400ab3c7, - limb2: 0xc5718629ac9cd025ef336d0, - limb3: 0x187b0c468b6da0adb62d3fbc + limb0: 0xbf3c140b105713ed07834b4a, + limb1: 0x31325aee1b1dbae62f7c153, + limb2: 0xf1712c06213e43c0272585dc, + limb3: 0x13e42c3e0801ac2144a06fb }, w3: u384 { - limb0: 0x1802ec9724670f13ecc11b98, - limb1: 0xd019c9ebf77049499b82c9f1, - limb2: 0xa47f69b56bd7afa2d855c6d9, - limb3: 0x15b9c90041c0f3bd22acbcb5 + limb0: 0x713b362105bba1e8fcbb94a0, + limb1: 0x7336f37c2c0d759c4ff697bf, + limb2: 0xc61d5ab0a8dc2dffbaa7e2dc, + limb3: 0xc759210484ca64b6a064096 }, w4: u384 { - limb0: 0x748b77ceb52f8ec14dad0074, - limb1: 0x79725268df88b7bfa593a8b3, - limb2: 0x8bd1128220add9729b19ab77, - limb3: 0x924c402b326674ef2eb6261 + limb0: 0xdb2b0eb950e9144b7f2f02fa, + limb1: 0x83f2d1513c7ce01407cbcbeb, + limb2: 0x3acef2763be703fa77d90506, + limb3: 0xd6a3922a006a5ac269f1105 }, w5: u384 { - limb0: 0xc44d871c0c9151a640aee4e7, - limb1: 0xe1e9efd3efb405a549b5321f, - limb2: 0x48dee13bd89853eda982d0af, - limb3: 0x63657722a38adb5dbeda3f2 + limb0: 0xd7a563e564895cf2511754e1, + limb1: 0xc5ec4b01df1cb55da421916c, + limb2: 0x6a17068bd9eb8099e645e126, + limb3: 0xde779332fd6d9f465b20e6a }, w6: u384 { - limb0: 0xe8ac224046298abec34fca10, - limb1: 0x3e835dd5f1f453e18b97fcf4, - limb2: 0x2b82aad4d6aca3ec0fd14a49, - limb3: 0x115f7423bc1b5767785ccd59 + limb0: 0x62b4676a303984e5006cae4a, + limb1: 0xf48de62916116cc249eda468, + limb2: 0x30355b613eab563b9cb9b14a, + limb3: 0x92dc96c5c90e4a4e20a4cc8 }, w7: u384 { - limb0: 0x402831e0e16e38fe8b13ab4f, - limb1: 0xca3f1859c91500e17612aaaa, - limb2: 0xf1592271e331a89cb2e9d355, - limb3: 0xbf4d818bb8f763ba7cd8ffe + limb0: 0x2adef7cf0ce5e70667934f1c, + limb1: 0x49df16aef14c96dda3795592, + limb2: 0x90675022b9d62cbd8685978d, + limb3: 0xe6467206b01d8ecaea8fdd }, w8: u384 { - limb0: 0xc4fb3b6c7ea3f93ae9c181b0, - limb1: 0xc56afb7821dc3860b3ae346c, - limb2: 0xf11e9f912758ae7d838a4c95, - limb3: 0xab618539c3f2fa37317a7a3 + limb0: 0x5a0918f6778263817954d908, + limb1: 0xf1cea39accc8cc574af25807, + limb2: 0xeb067bfcab205abe6c371677, + limb3: 0x33f8a5722e1821e1f8c5f4a }, w9: u384 { - limb0: 0x77e6a2b62b827858482aee96, - limb1: 0x82da3ea53abc46a23bdd03a7, - limb2: 0xacadf7dbf6a38cf00665cc04, - limb3: 0x180e3b209a0647cfc4b3939d + limb0: 0x5bec5a38ecbb7806f62dcc79, + limb1: 0xcf4fd2a6884e312f05ffe06b, + limb2: 0x59da93e49907f3bcb160ed13, + limb3: 0x130fe108a81a7753e3f765d5 }, w10: u384 { - limb0: 0xfa313164b0e147edad33de48, - limb1: 0xe578c916b83e747212be4431, - limb2: 0xf1654f08d1934f12ff95c525, - limb3: 0x18b3cc1e90ce4fa487b2ed6e + limb0: 0x675bac7aed2b433f922616d3, + limb1: 0x2f2f405981e6aca41db75f4d, + limb2: 0x5c5e051f326dbaef7f17399b, + limb3: 0xcd24160fefddfaa66c9468a }, w11: u384 { - limb0: 0xab37c0514544a712571ec7b8, - limb1: 0xbd7311aa5449fe0eca68eba1, - limb2: 0xcb176d9b8ca8b1de6c6b51c0, - limb3: 0x143744cf5d3196dcb1a138c0 + limb0: 0x82d362ba811d62d7264e9909, + limb1: 0x6e0c09afc5dbcf4dffd7fc05, + limb2: 0x30ce07f0ccb46385c2b2b40a, + limb3: 0x17f2b41158bbf2cb53644eae } }, w: MillerLoopResultScalingFactor { - w0: u384 { - limb0: 0x2bd1d72da5a9fb6ee0c4d44c, - limb1: 0x66fd39f2143f534e3175633e, - limb2: 0x941c3c219190de9f0f6d0f6e, - limb3: 0xe690a8773fac0b20b23cf11 - }, + w0: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w2: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w4: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, w6: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, - w8: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 }, + w8: u384 { + limb0: 0x79b43033d2c6148ace378dd, + limb1: 0xc6a64d7c9213ad89ad6e2940, + limb2: 0x6935c3e1b9cf1af588eafb63, + limb3: 0x66ba50e8c99edbeedf33b87 + }, w10: u384 { limb0: 0x0, limb1: 0x0, limb2: 0x0, limb3: 0x0 } }, Ris: array![ E12D { w0: u384 { - limb0: 0xcddd3440006d64546bec7249, - limb1: 0xee2d136a8cced95a0099109e, - limb2: 0x4fdf977a7d2907a9f555a6f4, - limb3: 0x28155395c7686b8b756da02 + limb0: 0x5e87a33f78e1f9158930afbe, + limb1: 0xb03343f0ba8a9f2239714f7b, + limb2: 0x9b36f2ea6a63c232dd98cdfc, + limb3: 0x12fa722de4e2d3218998c810 }, w1: u384 { - limb0: 0x39fd2f08d1d7b0dec70e18a6, - limb1: 0x4847214fb940be5fc4c22a1a, - limb2: 0x7e6b6056606a6b37f867a337, - limb3: 0x9902c42c69bf63bfaed0620 + limb0: 0xc9f693551a877941adc4d9e5, + limb1: 0x55a0971be122dcda5e5c3c8, + limb2: 0x7c004df041a155e3b48cdf91, + limb3: 0x959ea623e7d5b6f547c34aa }, w2: u384 { - limb0: 0x5fdf8e195d557e8775b6df1f, - limb1: 0x8e5297ab1f4ff8dff83443f6, - limb2: 0xc086e8ea72283429af7fe223, - limb3: 0xa05087a81f4abce0fa71da8 + limb0: 0x7b00e2956467ad946b1cbad4, + limb1: 0xb3dddc7d363c4618d35bbfd0, + limb2: 0x67f8fcf4c55fc2cd48e50cff, + limb3: 0x155823e0d57749245ea41a2d }, w3: u384 { - limb0: 0x77068061632c44a1e2b63160, - limb1: 0xe3cf9dfdb5c66508698ab24d, - limb2: 0x33c269009e86a49885c029ed, - limb3: 0x12824334c406e41e7ea20049 + limb0: 0xac48c31201b554c29ed60ab6, + limb1: 0xd5f6cd8404db4fba9b6b1908, + limb2: 0x2a12dd0e1ba2a2c71c111daa, + limb3: 0xeec9f4d9359e16042385ce1 }, w4: u384 { - limb0: 0x60f2ed6db0c0e420e8aa4617, - limb1: 0x684d7599b63b39951a600848, - limb2: 0xa0c15191ec54b2db00457a42, - limb3: 0x28419f0a751a284220b7c3f + limb0: 0x612b6944bb47d6ef40f0a521, + limb1: 0x8d9728d2c62f0e796f49eef1, + limb2: 0xef1cf82ad9649cdaf92b4dad, + limb3: 0x16338f7d8ffc1e1319fc335b }, w5: u384 { - limb0: 0xe59712484987dc29befa7ac2, - limb1: 0xe298055b3165be2fc7ef0edd, - limb2: 0xf851605895a6d17951cbad18, - limb3: 0x14bde40ea2c93349858bf07 + limb0: 0x9ea8de19e0e2a79e3da646e8, + limb1: 0x71979065bb38d55f71156ee4, + limb2: 0x8f7025473478c1bc198be805, + limb3: 0x187985494ec2b58fdcbde38d }, w6: u384 { - limb0: 0x4b6587f0181349e8960e4643, - limb1: 0x306c02d15eb292605456c027, - limb2: 0x64e6c5eab3ecac01d6e0164b, - limb3: 0x90967e726dfbf16b080ce89 + limb0: 0x96686495d190b64a7ea79e6e, + limb1: 0x89a11b76e803f02eb0d472b0, + limb2: 0x6528eebe102cbb5374fe497f, + limb3: 0xd3cc49ff4fec483e733e76d }, w7: u384 { - limb0: 0x22431f6b4b95a45cd59dbeac, - limb1: 0xf19e383eb03e10891f693be, - limb2: 0xa463c98aec3985ef0c4d4d7f, - limb3: 0xc8cfb9dac126c104e02655e + limb0: 0x82a3ef2511fe244c62bd5677, + limb1: 0x52f0c10aafffafc1cf866828, + limb2: 0x3cfe5bcd4718b63e76a65b17, + limb3: 0x2e63847fb6ea974a63e85df }, w8: u384 { - limb0: 0x8f42084c471c2c50d0e1f5a1, - limb1: 0x3a65ff0615ac002ca85a2b20, - limb2: 0x63889e42e1e99225e975f6ce, - limb3: 0x114e36180dfbe8456b77b570 + limb0: 0xe04c4235ae17a9fab047b993, + limb1: 0x9ade428b70a43c53f180123c, + limb2: 0x892fce8b94f415a31260f4a5, + limb3: 0x14939c716e672d2e4f93049d }, w9: u384 { - limb0: 0x3594b49008a6617447b101f1, - limb1: 0xc0b9aac38eaa3a78d68e41f0, - limb2: 0x706b797318126b33565142d7, - limb3: 0x889a798d75eeb9c380e5b90 + limb0: 0x2076170f69cca61e8266cf77, + limb1: 0xa94c356ff22eb446d1816afa, + limb2: 0x7b5ee869ff77574fbd075e32, + limb3: 0x18c4c735d8759f9d05c97b53 }, w10: u384 { - limb0: 0x9fe7d38ff76a2373dc98f4fd, - limb1: 0x258fd71b3dffb5d06eaa9498, - limb2: 0xe0efcad7052c725655ce57bb, - limb3: 0x541fe50770ee81ad2ced2f0 + limb0: 0x87b2d06f00ce9210f880f777, + limb1: 0x270fa1aa87ff48d0c7029e08, + limb2: 0xd7a0a067fdef49ae272a9cee, + limb3: 0x2670fa59b1931a9f41abca2 }, w11: u384 { - limb0: 0x3bb11a9b9f63ea546a34ead, - limb1: 0x4784402d921378ecf24c0e15, - limb2: 0x9d5f962af7a77d59294ba2ef, - limb3: 0x34bd0fe1086e94f6bdc49e5 + limb0: 0x1d6670cd3b34ffaf62d4d572, + limb1: 0x2a6da26183af5ba37e45e771, + limb2: 0x2a68a3421c934fb0eb0a917c, + limb3: 0x51f182c87581744f24c2335 } }, E12D { w0: u384 { - limb0: 0x64caf02af7c9830c728a14cd, - limb1: 0x45e7316f2518539f9803506e, - limb2: 0x65a5e66e49c909724952a40, - limb3: 0xaf3deea03c9d1fdf5ee962a + limb0: 0xa5f19f0768085bfad6e01cd4, + limb1: 0xdb5ba1fd09ac91a4ae47652f, + limb2: 0x2b13b3f3a78d5dc5c4d512a1, + limb3: 0x8ce9c32b58bdfd51336a482 }, w1: u384 { - limb0: 0x2cffca5e077fa43a941e12c2, - limb1: 0xfb7eb5bf7c0778db2d576d2b, - limb2: 0x875860fa8fd2cc5724be00b6, - limb3: 0x597e3c8570abe082770f2f7 + limb0: 0xe2f45c49eb706f9f80de75ea, + limb1: 0x2f2a290fef99d780bdbb0c7a, + limb2: 0xde3a67d7d6bc965776584229, + limb3: 0xddda4d389f0c2b9300d301a }, w2: u384 { - limb0: 0x8192c1c1f9dc70e03a6872a7, - limb1: 0x7d58f0059302e3dac0c25471, - limb2: 0x36db9fd5921b973883db2c06, - limb3: 0x18ef5892ffd2299cd0f20deb + limb0: 0x48376e71dfcc68f658e47c4c, + limb1: 0xcac6cb5c19f8d13b4df976d, + limb2: 0x84384bb472feb3909e7ed3f8, + limb3: 0xa4c6d75fd40944d23efad65 }, w3: u384 { - limb0: 0x297bf8f9cd56b320eb7f499e, - limb1: 0x17d06cdf5ab024c25f1e16f5, - limb2: 0xffb2eacefd3321e536343e61, - limb3: 0xc26905950fa5ef2b18d3629 + limb0: 0x5706ae17c1b9f75e69a7e787, + limb1: 0xc7cec8901103a5ee7bbd04d7, + limb2: 0x8ddb584192f1250140b1ee3, + limb3: 0x13d733d54618baa778469263 }, w4: u384 { - limb0: 0xa3da091ddc2c115af14471ac, - limb1: 0x79ae79c73c67e474be3bd858, - limb2: 0xce1ad6c30d505d57c9047353, - limb3: 0x7295f0404fe1f97d4e96b73 + limb0: 0x9050e16d385573cfaaf7154a, + limb1: 0x82794a915ed9862237629b23, + limb2: 0xa64cea16d0c28ec3f2bf97df, + limb3: 0xa9ea911e3c1f16f11159bbe }, w5: u384 { - limb0: 0xd0a26ca398864f582f13042c, - limb1: 0xd1bbe50d10ab36976babd2fe, - limb2: 0xa04ce9e9a8b227fd6bd89b00, - limb3: 0xcf7e0bd2c61d18be93f82e0 + limb0: 0x7e65b51d042ee4735403a47b, + limb1: 0x319fb8dfee0f546bd682f411, + limb2: 0xc23d64d72ebcfddc3ea548e2, + limb3: 0x111a1b915b3b25c5b9ec5052 }, w6: u384 { - limb0: 0xe4eaf4c38ca542959d9cbbff, - limb1: 0x56045060f0e215dca152e550, - limb2: 0x9a83c7ed923dbc12cd2a9081, - limb3: 0xd490ea0f1d7d88ac8025907 + limb0: 0x7bd1cf57624895a0b3032653, + limb1: 0x4961831e7409f7db175def7a, + limb2: 0xb306db9676eef0f14180f0b4, + limb3: 0x125ee887fc0eef7011ad0bbb }, w7: u384 { - limb0: 0x82817fae31934d0ce7edae38, - limb1: 0x7ee260aab145d6d9e071081c, - limb2: 0x8f75153a07015fd4db56e829, - limb3: 0x19e86a9587afc31944a1ba86 + limb0: 0x116cbb348fef5002aab5a1a0, + limb1: 0xb1c8c7d1d9cff958a4004f0c, + limb2: 0xb84a0ac8e21027d24b14ddc4, + limb3: 0x1169229cdff8901d09902cb5 }, w8: u384 { - limb0: 0xb464f527d310c24b2bff8c2c, - limb1: 0xdd27419594930a4b397857ee, - limb2: 0xfe2291a4ec73af13dd08c679, - limb3: 0xbdd34f1e1b5114725851615 + limb0: 0x1046697d16f72172bef7ed16, + limb1: 0xdb516839f9a0cbcbcc73b40b, + limb2: 0xda4b81ca7038c6e7899437b4, + limb3: 0x898ffff0cbbee98eed4ddfa }, w9: u384 { - limb0: 0x7c2c5ee0f949121726d12e1e, - limb1: 0xd1876eb78c0dbad89b9b6cee, - limb2: 0xb8e0b1898cbfd838242b2ebc, - limb3: 0x9e3d417a83d8aafb7e61815 + limb0: 0xc57fc0dc768cc4566d475c1c, + limb1: 0xcd5963a848c0b4c0417f5a2e, + limb2: 0x73ecaffe0aae8b6dbac48037, + limb3: 0x79fd45ff01f26c32e1a83da }, w10: u384 { - limb0: 0x7e8adae1ca6ff89bf8c9da63, - limb1: 0x79541b2d5f7da894d712da35, - limb2: 0xa701af1c03dcca876bed8003, - limb3: 0x19705016c83aaf30f34e9439 + limb0: 0x1d5fdcdedff07d7317cb5f87, + limb1: 0xfed3411e06c703dee8b6e5c7, + limb2: 0xb5edc0395ade200d535f84ab, + limb3: 0x3b6c9db7c2bec65f7929ef8 }, w11: u384 { - limb0: 0x9df422a2dbd0f4bef47b57a0, - limb1: 0x85ce05588ad92f513dfc99c, - limb2: 0x4d8f4689d264c1e201894a5e, - limb3: 0x6d715265ae97145c5111bdc + limb0: 0x835a3107a27c76602bb8a4e9, + limb1: 0x9f1a745144ee7c13c69cd736, + limb2: 0xad8ace8310aa4a6b8e6fd789, + limb3: 0x142320e4351ea7b89b1ea055 } }, E12D { w0: u384 { - limb0: 0x154b76b951a59b05bd42872d, - limb1: 0x8d7ab5833a4f4885a766a190, - limb2: 0xf92571002d615e5c8e0cfa89, - limb3: 0x52f805072889f7b4332b379 + limb0: 0xe94b430873c2411e6cd80043, + limb1: 0xe30be01010b7d9c627c228d, + limb2: 0x51c2c7c9b4365780e79dc3c0, + limb3: 0x6f3bceeb9b996819b8ca685 }, w1: u384 { - limb0: 0x4c281cd6fb91afa72a30ee14, - limb1: 0x968991bbd3adf5d6e5f5034a, - limb2: 0xa5d270f68e81ebf72e938368, - limb3: 0x122ba67cc4606bc0bfd415e2 + limb0: 0x95c356530e86a107434237b9, + limb1: 0x4aa9d2df5c497600a1e350a1, + limb2: 0x59381ea2332d5b1974e07ee9, + limb3: 0x3049a4a61599e5e8113f1fe }, w2: u384 { - limb0: 0x246c5595a90df136d4f16026, - limb1: 0xaf7366ef9d2113f543d522c3, - limb2: 0x40f76247fcee6ec3be525522, - limb3: 0xf87fba13211cc24893df268 + limb0: 0xae504a32d9b39dfef2a23777, + limb1: 0xd9da3a1a5469845953c6d4d7, + limb2: 0x207cdf567143514f2d7f3fc8, + limb3: 0x12974191549a6a396beba2bf }, w3: u384 { - limb0: 0x8698df70290af7427688d909, - limb1: 0x67ac49f0a0ffc9d1b0f998f, - limb2: 0x9c3c1e71e685e92b1b12effe, - limb3: 0xe22f06442e7329c0167a4ea + limb0: 0xa112cd0e530a494b22dfca4f, + limb1: 0x18ea6ce26c166e7a7d78de70, + limb2: 0x9cb0e03de354d7bf6282702a, + limb3: 0x909b63c04423c5894538c19 }, w4: u384 { - limb0: 0x87db953a65a3afe5b01cec66, - limb1: 0x1e65de73c470786470e2174a, - limb2: 0xcf72e1dda3833b04ff7c77d, - limb3: 0x5df2f92656dda01bc6b3a5c + limb0: 0x686333c3d129ac16d5d0ad66, + limb1: 0xb15463f680076cd25cc96a52, + limb2: 0x208b9c263e7d649bb3ac2736, + limb3: 0x48c5ece6bb71a9d77de1d17 }, w5: u384 { - limb0: 0x8396e9c789f9e41b4f673609, - limb1: 0xb354e6e5863aecd6154ebfd2, - limb2: 0xb3501bf539b4e1f32bf6c206, - limb3: 0x87a1b32e731a62340846402 + limb0: 0x57e69dc9f02cc1dde9971341, + limb1: 0xa7297c6bef065a6a9b542e82, + limb2: 0xc886c7dab888b9c5b38236bc, + limb3: 0xdebc617818a9847334705f1 }, w6: u384 { - limb0: 0x3e6655137f67dd7c28801ad0, - limb1: 0x42c269182f1e82062d2cca00, - limb2: 0x7995a71558aba594a2089d05, - limb3: 0x1480def5cc1805c02106b8db + limb0: 0xe6056f10696a9817a2425aec, + limb1: 0xeb0c85f199cd35e58fe7cbcf, + limb2: 0xa246425777e777880b8a125d, + limb3: 0xda706ead9599d92c2d65149 }, w7: u384 { - limb0: 0xae28cb4d33133434e0fa7fec, - limb1: 0x816b941a3fa447c4c07f7830, - limb2: 0xff0a6f04fd00ae475a803153, - limb3: 0xdaa2ef432e6ffe06831f47d + limb0: 0x9bf16e33aedf71df2d4615be, + limb1: 0xefff1d4d74d22cd6cfaa0d54, + limb2: 0x8f7e66896dad6c69fb46b6a0, + limb3: 0x6025284a12405855f01f281 }, w8: u384 { - limb0: 0xe77a263feff8bc3b43256a8b, - limb1: 0xae406e0985a7f9c6b3648bc5, - limb2: 0x32eca1a902374a1446fe94c3, - limb3: 0x34990fe1c97ca1358ac91d1 + limb0: 0xc7aa07b19da3addbc2b2a7ac, + limb1: 0x89af564addcf5ac140968e42, + limb2: 0xb0f94c85c9d1a1140317c3f9, + limb3: 0x16ffce50f413f24cc8399c64 }, w9: u384 { - limb0: 0x3a28b99f4b1bdae90cb01655, - limb1: 0x945b5e7d23ad5fc860847456, - limb2: 0xf7a46aaa97b1d16ae94d8f4d, - limb3: 0x10ffd38aef57f6c19068ae07 + limb0: 0xc11681d83427ac2c574dd74e, + limb1: 0xa76eee7857186b0aeae75d7e, + limb2: 0xeccab02a3412fbf189e977ac, + limb3: 0x184a0251d3a98256bf42b0eb }, w10: u384 { - limb0: 0xb3d533d1d5ce38516dea5be3, - limb1: 0xd38fd27901b15b9f9dc5c5f4, - limb2: 0xe71744517624de9bcd3ec72b, - limb3: 0x19b0dbf00c2bdb15a2d8810d + limb0: 0x2c07fdd1036592df4a6f3498, + limb1: 0x10f649a440ac4b37266f2219, + limb2: 0x22a63f7af99b416d9bb930a5, + limb3: 0x115fdf891425fbf6a4362dd6 }, w11: u384 { - limb0: 0x80659b917d69b8c2ac3fa80e, - limb1: 0xf07d1ee1280113fb2bee1595, - limb2: 0x1019ec272f652b2c885c6eb, - limb3: 0x909d6c9b506da6f99fb8ec1 + limb0: 0x411ed4c1110386e3d69aaad8, + limb1: 0xc92f854a1d0559c20cdf125e, + limb2: 0x948d25f76bb996b92261cdc2, + limb3: 0xe201b9e13565fa18bba4420 } }, E12D { w0: u384 { - limb0: 0x967367e1d10dfd9d401635a0, - limb1: 0xa229126412331409ad53d24f, - limb2: 0xce33bf587a58f52332dc7aa5, - limb3: 0x10388c3da4479bd3332d2e29 + limb0: 0x2ee816637d0ff936afb8192a, + limb1: 0x771b55e7479b197971b078f1, + limb2: 0x809429f842e6085d43c2dfd8, + limb3: 0x12623c6450560ceb87d1c6ad }, w1: u384 { - limb0: 0x1ed9a4ba9e25bac998937921, - limb1: 0x70ba51e331115b65ac55608b, - limb2: 0x7eb110fff5b89a441205bd4, - limb3: 0x5cba51d9501ef4e021bfa4a + limb0: 0xeb6d6091ca6ac5b35b99eba4, + limb1: 0xa6a7a574ab4b881d5074fc7d, + limb2: 0x43a56d15e2274855ea77e5a1, + limb3: 0x16be7b0f604c838b37f1e747 }, w2: u384 { - limb0: 0x4b4cad8387c625feb0fd8017, - limb1: 0xdb41514b580d6deb3c184169, - limb2: 0x2f1cab4aea904314ea1674da, - limb3: 0x11a53a0a31611d411dca2183 + limb0: 0x555b0c9f5c07106cbb3f5fc5, + limb1: 0xef42d2fe6dacaee0528364c4, + limb2: 0xbd41cc43f3df8706302622af, + limb3: 0xe2dcea4824247cacbfc4297 }, w3: u384 { - limb0: 0xf6f113dd943f7ee2798ac319, - limb1: 0xa4ef1030006d949f29adff8c, - limb2: 0x1016f86d4b228836db1e5d3, - limb3: 0x155cea482606039636fa386a + limb0: 0x93fb255d08dc8e71b39fb796, + limb1: 0x1da87c5554ed815d4aac7141, + limb2: 0xbaf8fdb0836e7741b324217f, + limb3: 0x19e568ec730b0d8fd4db5525 }, w4: u384 { - limb0: 0xde10b24a0c215c6817f110b, - limb1: 0x9077d0b15751595dd0da8595, - limb2: 0x50de80e8e917495144fa87ca, - limb3: 0x1255908901fb40639e081855 + limb0: 0x200e327ef349bbef548d1776, + limb1: 0xb2d456abe3bf1e04b5899611, + limb2: 0xae05f54f4449a81f4604671, + limb3: 0x162689b2975c2604e0a4685c }, w5: u384 { - limb0: 0x6d1ad5bd23eff151b6f0e1bb, - limb1: 0xebc4771a9f17ce2fc5a03042, - limb2: 0x5d1dc325365bc5aef400fb96, - limb3: 0x9b418f5ffd0dd10031f7acb + limb0: 0xc6b02b729ad74be636166fc8, + limb1: 0x2cfefc55cda91fd7a951573a, + limb2: 0x8867af21f665b7a7fd8a6f02, + limb3: 0x176cd52f992ba8fed217c160 }, w6: u384 { - limb0: 0x2d20e1d234fa27d28660d903, - limb1: 0x5bc382217497f49129b9ed45, - limb2: 0x28f0182f71aa21e20c8621a5, - limb3: 0x18a83f111bf4b0dc0c7bb3d2 + limb0: 0x6c354775c20d8791793669d2, + limb1: 0xf380243d419f9aec61c9e9e4, + limb2: 0x24ab6a5a78f417f251ab18b2, + limb3: 0x19f302018bfc588d7199c144 }, w7: u384 { - limb0: 0x9e3ddd96ec716316bd3b9485, - limb1: 0x2c3ceccf9cb5a2bf4056b86e, - limb2: 0xd8977d208fc3ca76b377be92, - limb3: 0x18a44f9049e5bab091787bad + limb0: 0x52f43e2d2f77df98fb709a0c, + limb1: 0x294172d5620df7163a2e150e, + limb2: 0xf24eacdd84d1f5d70b8b68c1, + limb3: 0x162d18d8dab6547e5a096d2f }, w8: u384 { - limb0: 0x7391926655e361643836cceb, - limb1: 0xf444de1cc4774a98274592e2, - limb2: 0x263b3a136b4340717dd99e7e, - limb3: 0xb257907dc8bf8a84db2e2c4 + limb0: 0x892c129896da39f99f72f0e2, + limb1: 0x2c40af61fe531cc67546a683, + limb2: 0xbccbe0a4026db352047dffba, + limb3: 0x8a6b4810628e934e1415956 }, w9: u384 { - limb0: 0x66e2155111c94abaf03fcabd, - limb1: 0x7498e9a69c20dc922120ec63, - limb2: 0xcdc569000d517607ea4e7f5e, - limb3: 0x18ec67c200b11a589303de9 + limb0: 0xa206e84f0a4d23df6ff06511, + limb1: 0x8cbf6576156d7285ec9f1b68, + limb2: 0x116d55d1a59d130f52984060, + limb3: 0x15d4804fc77d3471b7bf1405 }, w10: u384 { - limb0: 0x96d05e3dedc4609dba5ad49d, - limb1: 0x3aa573709bd8b69f887ce255, - limb2: 0xae7834eb53714ac33dc9917b, - limb3: 0x14115ab7af7512b71e00eab3 + limb0: 0x531e0c7406043a22ea3e34ad, + limb1: 0x8d1faf249e41a0a2e8ac800f, + limb2: 0xad7bce015e4d3978fb0cdda1, + limb3: 0xf30f8063668661ca0ebd8c2 }, w11: u384 { - limb0: 0xdc3de8d6e1fde16bf06163b1, - limb1: 0x8000a811710ef3e9ffcc6d34, - limb2: 0x4f04f338c95809ea5d86b337, - limb3: 0x8d48d95b20555a3971dbd63 + limb0: 0x1533da47d1c4ea429dfd2495, + limb1: 0x1c5bdfdd4dc1b9d6e11ffb51, + limb2: 0x853362ef8f300727f4ea8d73, + limb3: 0x2619aecebc65f8daf270bae } }, E12D { w0: u384 { - limb0: 0xa72ef9a762bea19fecd88c45, - limb1: 0xdeafea2057c04892ac9a4694, - limb2: 0xdadba97994a473dca4c26f39, - limb3: 0x24ddc3af1a80a4e0dcd63fd + limb0: 0x616ca54bea5ef71f6286e9db, + limb1: 0x6ce5a76d2b62972a2ab13707, + limb2: 0x32b53a08c2162aa1ee95a837, + limb3: 0x128bfd33226c297592d19ded }, w1: u384 { - limb0: 0x74dea6614fd88284695d0e6b, - limb1: 0x4ab2819b7829c7869653e72f, - limb2: 0xbf8aad0d9657967db33c137, - limb3: 0x8699b5a857c7917b52e7adc + limb0: 0xcc4facfcbbb91a1e3c3a9aba, + limb1: 0xa590e0a709daa71b0d6fd371, + limb2: 0x906ab38c0a9cfc5bd91564f2, + limb3: 0x14da16be5a21292efdfabb0c }, w2: u384 { - limb0: 0xe6c5ee872c3fbe2e0947fb09, - limb1: 0xa04132bba7a6a4a961c8c67d, - limb2: 0xdbb97953160c9f77b8389640, - limb3: 0xe55afc3754231ecde4e29c5 + limb0: 0x81a973e5217a805d0f888a36, + limb1: 0x58274f5c6f509cde4b0f4e5a, + limb2: 0xc2440a9e7e7a7a859779f0ba, + limb3: 0x14521550f97d6648241075e6 }, w3: u384 { - limb0: 0x1cc03a02f22eb42bd317faac, - limb1: 0x550339595957c5bcf98ee65f, - limb2: 0x6a726ba563f4ba7a02f0745b, - limb3: 0xb2ab59ce5005f8a1c1ee765 + limb0: 0xb2a9bd1fcaf992c0021668eb, + limb1: 0x9ccf56b74f1ab26b6d6ab9be, + limb2: 0x816fe549db002a04eedb9e09, + limb3: 0x169e5ef8091dccbfaa89609f }, w4: u384 { - limb0: 0x3a4ba1469bcae2b9defc20a6, - limb1: 0xa2cd98d92e545ca147b4097d, - limb2: 0x83cf3c8155db56721e907173, - limb3: 0x3a78cb7f074a037085915a8 + limb0: 0x71582a7c30020dc2781a23de, + limb1: 0xfa09bff3c0432c74e8fb9782, + limb2: 0xc060bc37bb18f1f165fe9f21, + limb3: 0xd0d60bbfe488a8943c7382 }, w5: u384 { - limb0: 0xf80a9748a52c83af2d3cab8f, - limb1: 0xe94e8bbb0830c10805c962cb, - limb2: 0xc25d62d0f1756b99cd864ff5, - limb3: 0x11327a880cc0215e68343e5d + limb0: 0xe51c7d600a303222b1443dd5, + limb1: 0x2c421d1581bad4b1ce684362, + limb2: 0x240e5e597ff47e268342bc08, + limb3: 0x2ae81d2fb3dbf1912e36c66 }, w6: u384 { - limb0: 0x5a95fce8afc2ed8054a08f81, - limb1: 0xdf58cfe3643896f37db9333c, - limb2: 0x289316b38fb7954b1c2fa398, - limb3: 0x7052488e21cba32d7e9cb79 + limb0: 0xf0cc1dc4593248465748b59c, + limb1: 0x9a31a99ab145a54bccce7dea, + limb2: 0xed2c2e4617c78555f7d61215, + limb3: 0x5e6d735233a245b22780211 }, w7: u384 { - limb0: 0x82f52ef679f13c4ab9a3a56b, - limb1: 0x78cae9d11e1bade0dd484364, - limb2: 0x80807acab160d660fd735e67, - limb3: 0x11fb17e7518137d67edc843f + limb0: 0x88de0b5fd8db35069051139b, + limb1: 0x52bcf4adb04aae5a93d1eb1a, + limb2: 0x5860e277e6ce67cd26925a08, + limb3: 0x1541095aedd2a87a36fce5cb }, w8: u384 { - limb0: 0xd0168bebf4954879057cdf40, - limb1: 0x6066c16e501c21fa13560240, - limb2: 0x319db6c8fb9f7dc0a2c46e, - limb3: 0x6269a7cb3eadbc905794662 + limb0: 0xb79b773a3df8822db5cc474e, + limb1: 0x17206d8a558c6ec7b445f402, + limb2: 0x5aeeec6a9815c02665ce217e, + limb3: 0x10abc052332b3bb7fc3fadd4 }, w9: u384 { - limb0: 0x7739f5c59e904b49b9ef1d0c, - limb1: 0x75808fcd13f533d21acb7cc9, - limb2: 0xeaeb32872352bf69a05d409d, - limb3: 0xa5f1f5162d42e5daf6bbf70 + limb0: 0xeaa86f676206f32bf7169228, + limb1: 0x4432637a0bd250d8204fafdb, + limb2: 0xc1396d9dfe01fbec380c12d9, + limb3: 0xeae8fbe6d882b3953e92e72 }, w10: u384 { - limb0: 0xe89ba490c819875be0d2227b, - limb1: 0x9287088a5ec8c57fd59efd2, - limb2: 0x71132a481324fa89b7317ddd, - limb3: 0xf0d973263112a9b65d6356b + limb0: 0xf618e52b9429f1e88d3f1251, + limb1: 0x1c25dcfe5d75ecd687176354, + limb2: 0xf37879c40f1da5f52a2cdb38, + limb3: 0x81232dec101c7c15928ab21 }, w11: u384 { - limb0: 0x1060bcfd723c1283e43626b, - limb1: 0xc79ec692f038143adb4a6b9e, - limb2: 0x233f7b925c0b22880a2a1bb0, - limb3: 0x19bac4dc992e5c97a82cd0f6 + limb0: 0x40b603d2425b79cd710ee557, + limb1: 0xdbb0b89a3646397437da8f84, + limb2: 0x60e361e4ee2f67acda38b14e, + limb3: 0x88d292cadc4d714c0f31fc7 } }, E12D { w0: u384 { - limb0: 0xef8d837c05d6282bb2219922, - limb1: 0x8a499034ac97e036bb811bf0, - limb2: 0x1f525ed3a2d8fe31a4c4613d, - limb3: 0xec959a6d723ccb3b0d64619 + limb0: 0xfde925b26590efd93b29dc21, + limb1: 0x79fa334e9e39f1cf6d597f85, + limb2: 0x351ca1e01bd6f669cfc33a39, + limb3: 0xaacd403561cecaae25da3e8 }, w1: u384 { - limb0: 0x711902d527c9d93eadca932a, - limb1: 0xb24a0bf8c803a40e63e73a59, - limb2: 0xfa2376fa645484f46a739b0f, - limb3: 0x12542f0116eb9dba58a74576 + limb0: 0xfbf49b1ca286c7f34ca70db4, + limb1: 0x52ae3e3ca34e2a102d3e8acb, + limb2: 0xee70f348286b4f214b7e2a44, + limb3: 0x19adc6e6dd23e9b87918f0d3 }, w2: u384 { - limb0: 0x9eb80bed83110ffb32b2a296, - limb1: 0x3f70b5c06334f6f43f05d010, - limb2: 0x3e907840f86f4d06b9d98106, - limb3: 0x125c3b13b513bb4451135f31 + limb0: 0x360cc29b8f16a161f0bb5695, + limb1: 0xe23f0c483bc3484ccfbbf75, + limb2: 0x544f00069e83cfa220de35a4, + limb3: 0x145f89ec3fbc9c19593fae68 }, w3: u384 { - limb0: 0x56510c6b7dd3fe15f453f3af, - limb1: 0x82a083cb56afda648e837008, - limb2: 0x78bff2a4975bd948d81217db, - limb3: 0xc0bacd685d82ba4770098ab + limb0: 0x32d82fd5786426e4f0249f0e, + limb1: 0xaac0cc9febb225961afd999e, + limb2: 0xbfd0b5657b2f0e275599ec2d, + limb3: 0x64ea70d1faa0e80ec792a74 }, w4: u384 { - limb0: 0x3e63bc71ce61c5c6e226ce52, - limb1: 0xe54c4d274ed0f803bd0ce18a, - limb2: 0xe2016b24bf43493a02f144c8, - limb3: 0xe99cf492efb26aa4c4ea54d + limb0: 0x836319c6483c95a22c9308b9, + limb1: 0x9d0fcdd8c80002b659c474b7, + limb2: 0xc44e2984149175f867392f06, + limb3: 0x13fdf1738cceefd7c77fccba }, w5: u384 { - limb0: 0xae82b67960446fcde2bdbea1, - limb1: 0xc9f2c1597f7c3b7567d06a9d, - limb2: 0x90a34fa6ebf0f5e37e9a51ec, - limb3: 0xe68cc6d594e6c95af4f0c1f + limb0: 0x38b69c65caedae1d60f4a6b, + limb1: 0x476a63341944240588cd40a, + limb2: 0x2c822ad9edb35cdb9398c48a, + limb3: 0xfbd30b4e1561b17fad5975c }, w6: u384 { - limb0: 0x9b524162305af3f43a616184, - limb1: 0xc7a9ec045b46e2f4f902bb95, - limb2: 0x51c4fa769c892a9a55d3f488, - limb3: 0x417c0d6365cabcf2704c822 + limb0: 0xaa5dda2031d51398be5cdaa, + limb1: 0x838072096046591839743da0, + limb2: 0x4b2dbad7c26ef3e750e7e8da, + limb3: 0xeda6a14042c9d4e7bf9b02f }, w7: u384 { - limb0: 0xfa21b81eda8f29794e5d129a, - limb1: 0x14c80250c3d2b8470954a1cf, - limb2: 0x7763d46540b006a3b30ae5f2, - limb3: 0xc453c7061d0984f0b213f86 + limb0: 0xfcc892c0fbf45ec567cf21aa, + limb1: 0xad6b081ad539e5b3f081e6ea, + limb2: 0x9e60e7c195d26421d13f4687, + limb3: 0xe642044d3f37f6ea8897f42 }, w8: u384 { - limb0: 0x3b3c42b024dd06cb6e24245b, - limb1: 0x43405f8697bdc013967720cf, - limb2: 0x46b21b8df49560e1d4cac064, - limb3: 0xa52f5ce151aed331aa3a9c8 + limb0: 0x9d04e86c9b4834f0738e451a, + limb1: 0xd9105203107ce7a46d995976, + limb2: 0x9706b8693910cb373cb60d32, + limb3: 0x14d8f8c68cdab040e35a108a }, w9: u384 { - limb0: 0x97d0feff9eda8f2d6772acb7, - limb1: 0xd1873781159f1728529688b4, - limb2: 0xa44a7e720fe4db8a90a1de9c, - limb3: 0x2753ebfdf7955ffe07d1726 + limb0: 0x9210fb0d45f1817d93bd99fc, + limb1: 0x23c86949a3759639599da994, + limb2: 0xdda9c2a5d34994981322c82b, + limb3: 0xb4dc029e7276741f11943fc }, w10: u384 { - limb0: 0x470a4f1d4c1e247941161033, - limb1: 0x9d2cc39aebe31a23b8a6899c, - limb2: 0x5966fa55e1edebce978a0453, - limb3: 0x120a210f9a0e75850c16158b + limb0: 0xe89745492c1f82b80e23c8d0, + limb1: 0xb9c873781b1837885be73f64, + limb2: 0x77070c688a2a77abbe11888, + limb3: 0x86daf906e8a95c38a3b481b }, w11: u384 { - limb0: 0x23d35a2f0e8ba9462f483d4b, - limb1: 0x40c5f47e9165d551e11162a6, - limb2: 0x19ae425b79b0079d6702fa49, - limb3: 0xd3c336734e9e079beec52ec + limb0: 0x72251fa4e076caba8d7e2596, + limb1: 0xe91daee82b59abd08a9cb5ac, + limb2: 0xc5e4c8122cacedd33cea5be8, + limb3: 0x2fb080bcdfe8c56c90fca2c } }, E12D { w0: u384 { - limb0: 0xfe4e71febf753e6923295803, - limb1: 0x1dce3e09ce9dd48854321606, - limb2: 0xc6422aca79e05842fe8510a2, - limb3: 0x16e9ab0dbaca378a81364481 + limb0: 0x6cdf3812d7d2ec500440d2bb, + limb1: 0xcde664d9abf0e6043be0c188, + limb2: 0x16e42aa6f1a259a62ebff4b, + limb3: 0x144527f2e63badeffe2607e }, w1: u384 { - limb0: 0xd8cff29d6f275f204b8e5136, - limb1: 0xb1f551a23dc3d7199ea4fb38, - limb2: 0x78d77ed2a78691708926943, - limb3: 0x5428a58f9644db93970f8e6 + limb0: 0xc82526bfc5a307f2b9e9e30b, + limb1: 0xdf63ab3c0f39d7908dde39ce, + limb2: 0x257aa1bc6dc3a1e2b2cb1136, + limb3: 0x4f7492f6a900520c078efba }, w2: u384 { - limb0: 0x19a2beaa8052d41b6ce8a254, - limb1: 0x76c4e0656dbdcb1aa5dccc98, - limb2: 0x782a0b3e383831c94cf6c980, - limb3: 0xc78c3a5e8d24a1aaa7ad7f7 + limb0: 0x5ae59b52a5576a972231e4f4, + limb1: 0x6fdf79c79aaa7ee533f448ae, + limb2: 0x9a6dd69f434272d73d12bd40, + limb3: 0xbaa39a35a43b44bce2325d5 }, w3: u384 { - limb0: 0xbed03383ac44be3cc75955bb, - limb1: 0xb0926408be87febc85c50e4f, - limb2: 0xc0ced0b1b68a50a6112d3e1d, - limb3: 0xec1dfe7b9fd4b6a5f61f02f + limb0: 0xe504a48ed83f8bcd77382d00, + limb1: 0x1fdb6ea298ac1c3c0af7522d, + limb2: 0x56227bf372218d4677e592a8, + limb3: 0xcaec0e91d882a292e585313 }, w4: u384 { - limb0: 0x1458b6f2c0a3ee37b315572a, - limb1: 0x2339dd783bddb77d9ec5d6ed, - limb2: 0xb57c90ac12453e641a9fc924, - limb3: 0x318bbc8ce20747969db678f + limb0: 0x4f8be2e79b7ba3a3ac9da613, + limb1: 0x7219bc5c36dcdeea294b1d83, + limb2: 0x9f27e9cd48a9ee4d3e2c6383, + limb3: 0x308909137cc1584e7cb9186 }, w5: u384 { - limb0: 0xc1c9ffca5d1a0b4dc08cd187, - limb1: 0x8ae497f3e9856c6f7b1cedc2, - limb2: 0xebd676d9f37567a9fe3c48d7, - limb3: 0x13b626593a20e8823aca0c34 + limb0: 0x7834a99d69b1f3e2b42bdcd3, + limb1: 0x300aced389ad9948ca1d8c39, + limb2: 0xfe3f888a08ed761acee1b1c, + limb3: 0xdd41de0f3e2890eefbaaf79 }, w6: u384 { - limb0: 0x2cdcd4baf6d8f70698990c92, - limb1: 0x1878c8402a6a5e60e84a092b, - limb2: 0xdeb5d24e471e837925ecd624, - limb3: 0x5ba6e137da7b23d169f299 + limb0: 0xca9ab9a1739b5f5137d4ac40, + limb1: 0x9ba2e33a23bc2b27e91bc510, + limb2: 0xdc366bc48c0a8720af349c88, + limb3: 0xc940b71841009914f7f29dd }, w7: u384 { - limb0: 0xbc868b368b9cf63118f8ebbf, - limb1: 0x94921d7bf82d1dccc60af5cf, - limb2: 0x61e2272fe117938147851257, - limb3: 0x16c6d03fa48652a31e6c9a2a + limb0: 0x7711c3dd44d84334bd207762, + limb1: 0xba355253aea149c9d273461c, + limb2: 0x8a45011ad06e5acfea138ae1, + limb3: 0xd1b7d2bb8587892435f528e }, w8: u384 { - limb0: 0xeb04c8e7647dbcc2948971b2, - limb1: 0x1f59a96b1e31ae9ad9e400f8, - limb2: 0x37657ec6f957b8ddee3afdba, - limb3: 0xd78a7bc9e19f636f8bd0cee + limb0: 0xd5c10f3e091a9acaf0886474, + limb1: 0x626c2a14805abbb07cae8876, + limb2: 0x66356be50aa68d09b54f071c, + limb3: 0x3f1c0a601bbe3f6575e7477 }, w9: u384 { - limb0: 0xec059d5c335b6bd12a7753ee, - limb1: 0xbb669ab7f1dce6f54ddc6452, - limb2: 0x4bdc37eac7e86ca717dd31a0, - limb3: 0xe40782394ea33ce3166a375 + limb0: 0xfb4552ccdf1883dbe077d13e, + limb1: 0xd8b4b21222a465176a4c7744, + limb2: 0x7347818431aab5489408c638, + limb3: 0xf9d77cf7abe38162019e8df }, w10: u384 { - limb0: 0x27d81cd0360d97df48de5a4c, - limb1: 0xf6049b49f49c1b79aa8ac54e, - limb2: 0x47d012706e5913c532dc18d1, - limb3: 0x1679fb9ae510ed6d0b22daec + limb0: 0x81aadeeb9df873401f32a628, + limb1: 0xb93520f726c2d052f5b116d5, + limb2: 0xd00b2c5d62680f3fc93d9a6, + limb3: 0x17b559291ebbfe6e0574534c }, w11: u384 { - limb0: 0x1e5ac147b346d69b50592867, - limb1: 0x799f4579438a89dcbfd8c4a7, - limb2: 0x81a3f6967601aaecef747d4b, - limb3: 0x2d290b088122e2942fc57e8 + limb0: 0x9ad70ac80ce3b8527270dc24, + limb1: 0x5fbd9b265250614247c4f157, + limb2: 0xf0322eaaa789d68a0f83c8f6, + limb3: 0x1323275b562dca758c81b1d4 } }, E12D { w0: u384 { - limb0: 0x343402597e5f821f37a64163, - limb1: 0x89c80a2f94aad60898a39162, - limb2: 0x136e26c1f072b42daedab749, - limb3: 0x72d212083bb468caecba106 + limb0: 0xaba7980a06ebfac9ddd04a09, + limb1: 0x26ef9c306f336efa100b11ba, + limb2: 0x40393c1afce51c8f52083a5b, + limb3: 0x88c312a356277e9545f6421 }, w1: u384 { - limb0: 0x5259c13dc072066bb2b768d0, - limb1: 0xf8c13540fe1fa8a8fbf17b6d, - limb2: 0xf56aab8d6e30425d506b6830, - limb3: 0x184f95624a0a0cdd83b12ac1 + limb0: 0x50fe671710174daa78e31dcf, + limb1: 0x5a2428575d62b8bbdc6bdce1, + limb2: 0x18dbe1b6cdb06e3ecd5497b2, + limb3: 0x63e9335b2697eb47a466830 }, w2: u384 { - limb0: 0xec1b01fcbb7d61bba6b6a1a3, - limb1: 0xc37fad78e5f632ec601d4fde, - limb2: 0xab6f752311ef26e406bdaf0b, - limb3: 0xefeac12566d4ca4a3492e5b + limb0: 0x243fcb55d2e8070937b2e5f2, + limb1: 0xb3f0fd54bf8cd30335f72fb8, + limb2: 0xdc36b46d1bd1ccd2d5c317e6, + limb3: 0x54fa05e31dcddca0b10647b }, w3: u384 { - limb0: 0x1e0d15a7eeac47044c9f1f00, - limb1: 0xe1a88b41776a3d7ff5476163, - limb2: 0x6891a23bcb1c41ac01cfcf5b, - limb3: 0x134e836d23f5a2fdd0ed80f9 + limb0: 0x178a369ede0d5f33b4088124, + limb1: 0x688173ffe450814fda34adaf, + limb2: 0x679b60cfa4fa68f7064b124, + limb3: 0x5c210fb56be682d3515a22c }, w4: u384 { - limb0: 0x49540da6d54ed0254f46843d, - limb1: 0xfbcaeee254916a4def9b994a, - limb2: 0x1360ba01197aff6fa9fc52a6, - limb3: 0xe92992f904b40f072f52a13 + limb0: 0x80e33e3e2bde4084c4ecc31b, + limb1: 0xcc13974ef64aef9cde3aa9f3, + limb2: 0x9f66e9c5ad97d198a2226f6d, + limb3: 0x25b15dff2c6064ec8a6bc71 }, w5: u384 { - limb0: 0xe87b70b5da4fc91be069dabe, - limb1: 0x961cdd7607d29c9846fc6277, - limb2: 0xdc598388076563ea52bd7d41, - limb3: 0x496ad7bc6ae02054fecb01e + limb0: 0xfefac90d2c27ea76fadfbdb6, + limb1: 0xe6bcda36951c314c5fd2ca9d, + limb2: 0x6b32e67596b531b9529cf2e9, + limb3: 0x652300a58d5cd6e4e248a96 }, w6: u384 { - limb0: 0x4d2819cca301dc63235df594, - limb1: 0x2b558340c942b3410e73219b, - limb2: 0xd9412dfce5278c822e5398a2, - limb3: 0x19c17e90261580d374f4b0a5 + limb0: 0xb39dcebf1162dc60631b50e, + limb1: 0x9a904262c61ce054c078710b, + limb2: 0xcc950e9965a1b3d7a42d94ac, + limb3: 0x83f7f8554815facc18fdac1 }, w7: u384 { - limb0: 0x39db822bd2a3ce3f5d530cbb, - limb1: 0xcd479c0a4983d574f8b1eae6, - limb2: 0x5295b501d9ba556573547dcf, - limb3: 0x13def907a6883d5ad4380159 + limb0: 0x4628f9c8fe8de0ab7b878521, + limb1: 0xd4e2dc674f4251bb6dcab9c7, + limb2: 0x5e6b8ac26ebd553eca2d6af9, + limb3: 0xa69e14fdd6b8c0a24bc8494 }, w8: u384 { - limb0: 0x328c77c916d27663420497b1, - limb1: 0xf9f97f901262839f1b74b567, - limb2: 0x6321ed6267555aff488b3ce5, - limb3: 0x19b0b13be3e63b7ae2d95a2d + limb0: 0xdcddcf1a486e8fa5de038782, + limb1: 0xda495c8e9a173872cff839fe, + limb2: 0xd503a115971a590b4ca5c531, + limb3: 0x140f92b94c08399b9f00c46 }, w9: u384 { - limb0: 0xea0bd353ec9a9aeaa409796a, - limb1: 0x8c5fd30c9817878055d42b8f, - limb2: 0xf226434a303f21e9fcb51d88, - limb3: 0x184166af733ba06dfc89c070 + limb0: 0xf45410cf50b2db223627396f, + limb1: 0x518dc7a16e20322edfd1dff7, + limb2: 0xb0ad958b70aea0c767e3cf28, + limb3: 0x8d2d63cfd448ce80af04fbf }, w10: u384 { - limb0: 0x7c40df659074ffcc56c758f7, - limb1: 0x30ed6bb1dd4c22aacacab3c3, - limb2: 0x39bfa7c7ffa7d5f29acc26b0, - limb3: 0x120dc0cde31b5cb7433f64ce + limb0: 0xa26f24a5d5acdbebb6ae2597, + limb1: 0xa754c3d093f65f02627ef393, + limb2: 0xc700c9fe30406f4b29029911, + limb3: 0x13f157503df37670cdec5bb5 }, w11: u384 { - limb0: 0xb120c0e701834efc0abe5502, - limb1: 0xccfe966cd7dd1852324a68ea, - limb2: 0xe79f28cfd1466b792a635744, - limb3: 0x806d85e290b78fb460def1c + limb0: 0xf73127358c0f9e89e02146ec, + limb1: 0xee6055a98cfdb3d7bbfb9469, + limb2: 0x5e382cbaff9a0c1e152cfde9, + limb3: 0xd2db85a3b0103b4fd8b4beb } }, E12D { w0: u384 { - limb0: 0x31aca8fe14f4958dac90e827, - limb1: 0xcd48b75cf4cf8fb03e172177, - limb2: 0xca1cc4c9cbeec99c6a66ab84, - limb3: 0xe8dfca18fd7645567018fa7 + limb0: 0xb0034c0dc0470e3bd056c655, + limb1: 0x68739ef9acf49ed16185f94b, + limb2: 0xe5397364df8b3c4eccbd060e, + limb3: 0x12bc87cbeb825883cab4c21f }, w1: u384 { - limb0: 0x7145c2715a1065ba819c41cd, - limb1: 0xf6fb4409604d4ef7a160466, - limb2: 0x357e855ca9492489e6bfd815, - limb3: 0xb6d6095607bd8fe60bef462 + limb0: 0x9a4f283376c9c46e6f449d80, + limb1: 0x3f034aefed75e2faacf1d862, + limb2: 0x7716ffd86a4f3673375706fb, + limb3: 0x3346cfcd71ef93e7f3e58ec }, w2: u384 { - limb0: 0xeb66fb731a5462157c307455, - limb1: 0xe5d8455cbe3d21e40feb739f, - limb2: 0xfd0d69d4a4026422b28889ae, - limb3: 0x17545c5c00d89a89cabfd084 + limb0: 0x752d55436d4f77575db3ba3a, + limb1: 0x4b21615ce3a76f38e73528e1, + limb2: 0x2a79467dd6ca41febd836ed5, + limb3: 0xe7558f44fcb9ba3b991a46d }, w3: u384 { - limb0: 0xfdeef9a8d95337448ebb1fd9, - limb1: 0xd55b663aa7db558e0de06390, - limb2: 0xe45c41be4b720b56a9b1d065, - limb3: 0x155a44409396ccb02f6dd4cb + limb0: 0x90b74252285317a40a980d51, + limb1: 0xf625a1046957406fd64d36a3, + limb2: 0xdd287597f3eb9e33e82d2677, + limb3: 0x19d79ac4ee250bd2e0f365fd }, w4: u384 { - limb0: 0x439a48a59f4784f44f2fb63b, - limb1: 0xd0d1f2c55a1fb82739f7acd2, - limb2: 0xeb9bd0defe4d8617d46ca281, - limb3: 0x7d54b71053a85179a7ec436 + limb0: 0xe7b8ebf0928a50cdc097ca80, + limb1: 0x1c75acb67a4fbd8038084a85, + limb2: 0x6700cd4270fb401157a956ef, + limb3: 0x11c418010389f02167f7d294 }, w5: u384 { - limb0: 0x7ed0783ef840cd0f2f1fc45e, - limb1: 0x88df433dae99d68bb092850, - limb2: 0x1f350f26588e6f19d204c15d, - limb3: 0x14a2843f02f82a431d0cb73a + limb0: 0xe7311b3c007c2ffeaf935df6, + limb1: 0x3a969f26bacb20feb532ccae, + limb2: 0xad9c7997e6a29e0dae2f57c1, + limb3: 0x31d45316bbd38e161892ba1 }, w6: u384 { - limb0: 0x859542db4f831a65e2217fc9, - limb1: 0xef528c92cc94adc525d7878b, - limb2: 0x20463c4ecf50cd1110782b17, - limb3: 0x1027352b6f51448e91b4ff38 + limb0: 0xb836ac5fff285b97a9cfaf8a, + limb1: 0x11e79fa6603cfd51966395a6, + limb2: 0x241907be43b9b971573a8e1, + limb3: 0x50b992346863b906e942433 }, w7: u384 { - limb0: 0x671e563025efaefbe53582d4, - limb1: 0x211f381de5e7445809538aa2, - limb2: 0xd1f3177f9d7eb624e8399e75, - limb3: 0x11425fecadaf7f371e9ac830 + limb0: 0x77884fb393767a1d533c0b8a, + limb1: 0x75a3dfc2b4ed6292b7de2d3, + limb2: 0x8db56997d672b7b27505e3ff, + limb3: 0xfd375b7c1ed070088edeb4b }, w8: u384 { - limb0: 0x2988a3a8ef6f3aa8350c9127, - limb1: 0xdd6a43f3fe681ec5ea58d40a, - limb2: 0x8eeb94ed732d6f0e108bbf6e, - limb3: 0x116723f0eb33b66230c82a20 + limb0: 0x217ce46babc14c3e6f804698, + limb1: 0x8d2f38976a56c1930e0f9ef2, + limb2: 0x206cf46bdd9bb85ec1788dfb, + limb3: 0x69879bad0032e0b666ef550 }, w9: u384 { - limb0: 0x193f1e3ce028cd99b7637981, - limb1: 0xf2500f64fdcaedc9192cd70e, - limb2: 0xec02f10c8d8bd29532b12177, - limb3: 0x93291dce26ef85c44f935de + limb0: 0xfa6e30d2ab6ea25256a7006d, + limb1: 0xad6c71121a695eeb476a4cbe, + limb2: 0x9ded25624cae3f7bfed45fa7, + limb3: 0xbdc0cac28fed44c8a9974a6 }, w10: u384 { - limb0: 0xe7388ed724136104025bac2c, - limb1: 0x5d07a2d8b2542f7655a2f58d, - limb2: 0xbd9fb171b974e2e7997e7180, - limb3: 0x12c4d18cf1508e93890c43ba + limb0: 0x5f32e37fb43e4fbcd4382886, + limb1: 0x25a8be4ff2142fae23203a90, + limb2: 0x141071f19b469cc0cdbf36e4, + limb3: 0x152a566ca9d531e91f06c8d3 }, w11: u384 { - limb0: 0x62ca8943b2bdc5c7ac51e02c, - limb1: 0xc4968055813e698dc9d7de13, - limb2: 0x414ca05dd8bf9e680e721c4e, - limb3: 0x2570fd00e5880e57af34fd4 + limb0: 0xa9e30bf7189793c3dae917d9, + limb1: 0xcecc2f8cf114f38941cc16e7, + limb2: 0x55a8efcb2983963fd1c5d7ea, + limb3: 0xe0d3178bc1e4a9281acc39d } }, E12D { w0: u384 { - limb0: 0x5d78eae5fb50fcf7333f3b09, - limb1: 0x2157eaaf4af01639bc5badfa, - limb2: 0x80f33e3863f79d67851dcf40, - limb3: 0x16478419f14b674f8c773558 + limb0: 0x85d69f2d431d2c6f1afe22b3, + limb1: 0xeb3b3ba1d64653e590a78169, + limb2: 0xf2df045d48326a6371a5bffa, + limb3: 0x120ea922564a9885abce0f6e }, w1: u384 { - limb0: 0x3eed39af10805c2f7d5f5c3, - limb1: 0xf3c066dd1186419214b2ebf3, - limb2: 0xf6392f4af0790c263affdbdb, - limb3: 0xc75f0e313a575fb66a475de + limb0: 0x5de8b63bf3968b010da3bef4, + limb1: 0xd788608863c1a08d747106fa, + limb2: 0xde6d5d9aae8e97f0c2158038, + limb3: 0x1832c580f19d3f73da7dd439 }, w2: u384 { - limb0: 0xc0b3121844630aeddea24d3e, - limb1: 0xbf61f59cd6cd56584c22101a, - limb2: 0xc102c08952ef40f4546ce8e7, - limb3: 0x1e75da15ef82e516421b1bf + limb0: 0xf2a1d0325fe6caa419acdc37, + limb1: 0x90897834506f8faa6976e0b9, + limb2: 0x200e730ee8dba54a64266bdb, + limb3: 0x3f427d2880d6471c9b2cec4 }, w3: u384 { - limb0: 0xd830b64b1db899bb64824746, - limb1: 0xfc0682ca064b476befff0476, - limb2: 0x7debb2ac8ca66901c2ba11fb, - limb3: 0x595cfaaa9cf863f1a62f0c8 + limb0: 0x854fb7b9e02882e8e2d3461e, + limb1: 0xc7211649b2fbdb298e6b4935, + limb2: 0xaa8bc4976bc2349ad9bb313c, + limb3: 0x1557211bab3b60506b310219 }, w4: u384 { - limb0: 0xb37904181621eefe8610f2b, - limb1: 0x8790f2880310a0f6e8610832, - limb2: 0xe5449d509c134bb3e59b4677, - limb3: 0x13906cb026b9a44e357b3b45 + limb0: 0x485d0305732c8c1f4d6b6f2a, + limb1: 0xfed07e935e4f20dda4935b1, + limb2: 0x2504416e43da5cbf988bf0c, + limb3: 0xfd13a11b696f3d323002b0a }, w5: u384 { - limb0: 0x427d8836b06f89df5a42468, - limb1: 0xc89c6e9720a6b788f5f3999, - limb2: 0x11a23d7002ef09bd8617ad6, - limb3: 0x143f86db3f4400e8d4149470 + limb0: 0xb39dcfe5381fa64cbe569124, + limb1: 0xfcc10e3db88ee4c11ab8b90c, + limb2: 0x7f3dc79e449233c3c05cd4cc, + limb3: 0x1a68d8218a4a298083c7ac2 }, w6: u384 { - limb0: 0xf7d4cd3c1353c58834877900, - limb1: 0x29d3c1564a87eeaa55cc6f29, - limb2: 0xed032476aa81994b80a2485f, - limb3: 0x72075703733a0e7221baa31 + limb0: 0x402d97fd8c450137963dc715, + limb1: 0xbaabab131fbf75f84b8c4d09, + limb2: 0xeac1634a2ef470848b63e082, + limb3: 0x18020a7c33b6e6def47b23a7 }, w7: u384 { - limb0: 0xbb2575d98de8d307c681d6e2, - limb1: 0xe398ef5396173032395e823d, - limb2: 0xc273c01b744b2fd87c76550b, - limb3: 0x17edee62daaef02a4ceb0830 + limb0: 0x40747eb2ed38084318c5fd6a, + limb1: 0x79c80f12fd1e9512f4c815d1, + limb2: 0x3a48a5fc5d3e961ef0543995, + limb3: 0x5c22e5ce258b23d32382246 }, w8: u384 { - limb0: 0xbae9957669dd4100b03bea14, - limb1: 0x8514cc84c8f70a811d7972c9, - limb2: 0xd41201c67d17e8fda1e7bf01, - limb3: 0x7c4bba03f85d0453e508c4 + limb0: 0x58fdf5cf39bed59b75a08248, + limb1: 0xf73f318ea3a19e93473249fa, + limb2: 0x302354c7cec45c0f4e22be73, + limb3: 0x45dc87c70a7f4551180d0af }, w9: u384 { - limb0: 0xf29a0c509a6e02526929db9e, - limb1: 0x1a2a52e4817c6b090c148aeb, - limb2: 0xb89e403d55eac8051b0d7665, - limb3: 0x9f641530117991cfa83b1da + limb0: 0xea611623da31b1471f9b932, + limb1: 0x32719fa75ff0141d7348d0e9, + limb2: 0xb45905063c07e8c33fb9b2e9, + limb3: 0x687c2df9d7f663be99d9468 }, w10: u384 { - limb0: 0x1a17570de4f339f738cbca3e, - limb1: 0x3551f69967719ae3d55af405, - limb2: 0x10d763fd95986de9f2d5fbb6, - limb3: 0xd0c922f2071c73b7c9362e2 + limb0: 0xf1d27eab29c68003c6c210e1, + limb1: 0xb8843060c4bc968cb7982d1b, + limb2: 0xeea7620d6be4c290ade9a4fa, + limb3: 0x18fe77343f6e8206f89b9744 }, w11: u384 { - limb0: 0x5e8f7c4eb255ca426ffc618d, - limb1: 0xb7ee5a2227d921985e50ed24, - limb2: 0x99c28933d36dfe0edbc7a981, - limb3: 0xbe7d78d2cc0ad28b9d00330 + limb0: 0xa444a56f7e397cfafb6930c8, + limb1: 0xdae564fe2862cf1cdcad16c0, + limb2: 0xbc4f53f2efefa51fdfac4891, + limb3: 0x551ab423ade813eabb16804 } }, E12D { w0: u384 { - limb0: 0x2ecb6db6c5f8f96f00fc801e, - limb1: 0x87339ccffe010b4ec2eb8253, - limb2: 0x36ece0b247bf2149237953b, - limb3: 0x1488d0cf4ce94f233420b898 + limb0: 0x5e957ccda4f73f9215fb110d, + limb1: 0xdc36a49661989b5a3b5d79ee, + limb2: 0xdec6eba0b4700511ff1300cc, + limb3: 0x124c0cd615ff328b360ee2b9 }, w1: u384 { - limb0: 0xceaed80a5b775fc85d3709a4, - limb1: 0x89e0264effa12b4f280326b9, - limb2: 0xea2c463cd5cb116da97ba954, - limb3: 0xeb142dce3997dbf0eeb94ea + limb0: 0xb236047e323f07b02f2ec515, + limb1: 0x583e5738966fa3a8aad40f7f, + limb2: 0xccd1bc05a2119220b4544232, + limb3: 0x780b2230acf081408bbcdda }, w2: u384 { - limb0: 0x507d4ceb0ae361356c9ccded, - limb1: 0xbebd4155591c7af2f84e7c2c, - limb2: 0x7b4f48f1be9feb591f17bbf6, - limb3: 0x8a9db7d48405b4f332b2e84 + limb0: 0x260e2e2d6b359ac7810e7275, + limb1: 0xbd1696a0a3bd92fa7fc31844, + limb2: 0x742ff3c39bf81cbb48fa4a4b, + limb3: 0xfe258a1791cd92b4ef3e60e }, w3: u384 { - limb0: 0x69ff2cbd0fb2e4ef7bc58c11, - limb1: 0x54017f276b910f8db0019274, - limb2: 0x90cebbe171f67d7e9f3df994, - limb3: 0x1196783802931ad2b779cc9b + limb0: 0x54d88d0d9b96f02414851b3f, + limb1: 0x55334650ffc5ec8e900a1d3b, + limb2: 0xad3cb70cc267b5f757f7cef6, + limb3: 0x794700e48a5eb285c05ed22 }, w4: u384 { - limb0: 0x92bc9066a351469658d5f22d, - limb1: 0x607b3ecc2058e29c71583cc5, - limb2: 0x7e12c0cf26513c154277f89d, - limb3: 0x13ed7a4f32d7197f32bf4f9c + limb0: 0x1b66b0589fd79fc234125121, + limb1: 0xbda857f94889f518fe44cf86, + limb2: 0x9370106e7bd9937a478134d4, + limb3: 0x167eb12b6b3572f0a3aca9d2 }, w5: u384 { - limb0: 0xbbc169f813602c3e1973b99d, - limb1: 0xd4ff078691f5a8c46db38ac2, - limb2: 0xa1992fd43d8924ff8842084f, - limb3: 0x3a23b41aded3ed3adef15c3 + limb0: 0x375981f086e8cb4ef19fc188, + limb1: 0xbdbe1a3fc397484a93a2b29c, + limb2: 0x7a02a3f5fa8210e8f14b2276, + limb3: 0xc67f4b31546be3553dd2985 }, w6: u384 { - limb0: 0x49f40a4438bb431173d7eb9e, - limb1: 0x1435141f5a97c348eb872fab, - limb2: 0xde2b1eba376cc980c0c45539, - limb3: 0x2143d9d3672e0e73b187df8 + limb0: 0x600f009107ab2a1da4997be, + limb1: 0x69994acdcbfbe38056baf6f5, + limb2: 0x11ccdd90a6781a41f22c760f, + limb3: 0x13c5f50c127cb29bc0d17999 }, w7: u384 { - limb0: 0x335f23683e43f50d0eac2cf3, - limb1: 0x24cd49063ef060f38442d33, - limb2: 0xe504b4ce082893d5c043940e, - limb3: 0xac3eaa38db2279a00a1f393 + limb0: 0xffe9f03f0aa94835f9525c88, + limb1: 0xfdde4a867496327c5043cc57, + limb2: 0x3f6144c573c696e50855fc1, + limb3: 0x6b94fcad15ff18a3c2f248f }, w8: u384 { - limb0: 0x9beae5b1fb72d6cf6d40fc46, - limb1: 0xffbc6fb2c86c290dcf6fdb9a, - limb2: 0xa04705416cb58de3d9a6395c, - limb3: 0x156b2ba9b17a475066b083d + limb0: 0x8884346bdd2a3341fc7322cd, + limb1: 0x93ab61c19fa719030de7cc2a, + limb2: 0xc757ba65e13b170ca901db80, + limb3: 0x100f6a0711ba91a6f1b251b2 }, w9: u384 { - limb0: 0xdd87517cc97917518410e85d, - limb1: 0x74971b6d4ab3797fd01abe7e, - limb2: 0x1b9f242e6248152887adab9d, - limb3: 0x8b0e479070aa08315fd1d89 + limb0: 0x12a6e600d76166876d9b3f52, + limb1: 0x414068fe6847dd8ebae8539, + limb2: 0xa76a533d9740918d76a56dcd, + limb3: 0x5dc91d58b53e3e96acd6def }, w10: u384 { - limb0: 0xa1e1c7748b34b53b3463697e, - limb1: 0xed3d940028dcf79670d2c230, - limb2: 0x4b07f69d54732a7380d8991e, - limb3: 0x1d7e52982415e5c8e73014 + limb0: 0x718ec50c1dac99c6d874f4e7, + limb1: 0x16d6a04ccba7bbefb03d6951, + limb2: 0xeb4c2625dd73b31f645168c4, + limb3: 0x6afd115d3d01e4b290b84e5 }, w11: u384 { - limb0: 0x77729599aa3facb8b7539264, - limb1: 0x7f7270db952f0a3bbb5c9ac4, - limb2: 0xa9566701e3d82cb0c0876dc9, - limb3: 0xdfee7765d28eca5261d1584 + limb0: 0x52b5c082cd25730db3a34738, + limb1: 0x6967f7eb2ca4e4a712dc0131, + limb2: 0x5c5e6c3183d02ccca35ce987, + limb3: 0x757bb566047196e238a8b26 } }, E12D { w0: u384 { - limb0: 0x81afb4842a38ad927c1ab186, - limb1: 0xb2c216f696b37737c11f74cc, - limb2: 0x74fc5ae4371d554587984b46, - limb3: 0xc67a18bcc6b941334d158cb + limb0: 0x7c9854d25a3cb0be4d2f40d7, + limb1: 0x43fd00e1f4a86259c11e88ef, + limb2: 0xe994cfcb5001b763f7901bb1, + limb3: 0x86155b09edadffde4dfbbd7 }, w1: u384 { - limb0: 0x2b53b8596e3c8b80b5a98d5, - limb1: 0x223040df0075251ea4873c2b, - limb2: 0x3a5f14a32a3529ba7e243077, - limb3: 0x1100bea6af8870a50d5897c9 + limb0: 0x304a578df65f91fee6b573c4, + limb1: 0xec0472b755f143bbb562ab87, + limb2: 0x7277a095088372ca3f0a1d27, + limb3: 0x197e53f43b82cae3374c44d8 }, w2: u384 { - limb0: 0x51a79d068b942f4dd2bff24b, - limb1: 0x129c77cfb1f89a0c152ce3ff, - limb2: 0x2dd8f9fe02f234e9eeb1ce28, - limb3: 0x1656973ed041b860288e65ae + limb0: 0xe11977e635d061e6b989c868, + limb1: 0x1e500845921807459e23651b, + limb2: 0xbec3e77afae83a1c5ea6abfb, + limb3: 0x14e286717a22a735ed2bc0ee }, w3: u384 { - limb0: 0x7ee681ab1ba4078584dafbe2, - limb1: 0xefc4edba982fa50a91bdbee3, - limb2: 0xf8541f3564f46449d5ea33e0, - limb3: 0x686dafc0778c6769d962515 + limb0: 0xa1e676b1afa2d9ce1870874d, + limb1: 0x7091d51696fde538628c1f6a, + limb2: 0x96df8da6c99457376c4a33a9, + limb3: 0x8e98a801b4c9ab4aa5d063f }, w4: u384 { - limb0: 0x2d7cfba00f8a7d1acaf31f75, - limb1: 0xaee86935621099a6464c3ac, - limb2: 0xc975df16e161b90fb3731eea, - limb3: 0x993d3686e1b8e519d33ee8b + limb0: 0xc02c8f24e55e6d222f17ca30, + limb1: 0x76dd4ee9d6b6332479504760, + limb2: 0x197e8f329510abb24930400a, + limb3: 0x16a154ff6848bf4bfdb82d9 }, w5: u384 { - limb0: 0x6f342d7b4f908d7a6a23b43f, - limb1: 0x2744a1a4ad666c13e7c15d91, - limb2: 0xfacdb3793ef2c5b61438520f, - limb3: 0x192db9bbebbca4b1f2abd89a + limb0: 0xbba922639ae8bf28d410a19c, + limb1: 0x3086e9cd8bb7de09c46ea5d1, + limb2: 0x38963f320b7441e9d6a77a5a, + limb3: 0x12abf3a5df31ef34b735b45b }, w6: u384 { - limb0: 0xa97cc1a314acc475ef793920, - limb1: 0xf22017d3f3dacfa3ea68c551, - limb2: 0x501872f17d32ef83090712e0, - limb3: 0xc0a18df67313b70da749f5a + limb0: 0x8a1312c4fa12d188aa5a2fc5, + limb1: 0xc1a534c21fe8d43d46d061c4, + limb2: 0x19cca041bdb84797c38dd77c, + limb3: 0x90f272bc677afbf4ea47fdb }, w7: u384 { - limb0: 0x1e8eefd6b19f925a21545548, - limb1: 0xe45063616095762a3cb8388b, - limb2: 0x7bef506149d94ddc3946529f, - limb3: 0x1387f917af3f8551b6ed2cee + limb0: 0x742fc53d89d385243fcac586, + limb1: 0x9f1522d5dee448f1ea0bd110, + limb2: 0xa6e48bd6c1d03e300f33a7be, + limb3: 0x14f218097b54f125db0fa277 }, w8: u384 { - limb0: 0xe6765fdd5536a1ad0cc8f1b0, - limb1: 0xb6c682c4e820c36ff1d7d5f8, - limb2: 0xf558ea175b556ad35a3b7f6a, - limb3: 0x18e595c06ee58d58c5233cee + limb0: 0x4e8d1c9d0611bff11b73be65, + limb1: 0x1d75932dc0fd9604caeee1db, + limb2: 0xc738ab9f0ad9baad911e4207, + limb3: 0x6e45511232a9e5d4095e985 }, w9: u384 { - limb0: 0xef379c213f6dd1d0dd33cb88, - limb1: 0xc36634e765101a34f7d05096, - limb2: 0x80075bda276ae4f5ea067aa0, - limb3: 0xa9998a9f09a84e7f954aa57 + limb0: 0xd52cce486c7f42104e9f3b7a, + limb1: 0x58b30b3f567ae170e66d8aa9, + limb2: 0x5e34ff47bd1c3c1eeda2872d, + limb3: 0xe250f5f3302568adb516219 }, w10: u384 { - limb0: 0x7451fb9e60c0eae8fdd5b148, - limb1: 0xcb38718e77aa1e81583aff0b, - limb2: 0xeef984bec8e36e76753cca94, - limb3: 0x10d081c95d0a9f47973b23ef + limb0: 0x7c9a5e6eca301db139ad106, + limb1: 0xc2b3cc3e715be6a7efe28f96, + limb2: 0xd6d1ca55ddaaf9abf16efb04, + limb3: 0x10c5de68ac532bc3f398aed4 }, w11: u384 { - limb0: 0x9da2825fe7ade08d9cd95b3d, - limb1: 0x16e0b420241a2bf68dabe73b, - limb2: 0x7909443cb42c972919fd0c38, - limb3: 0x682549a9dd3333a8c140cb3 + limb0: 0x5256c2f9aaa56fdfffc2caff, + limb1: 0x90c30061f644a4c3d03f5830, + limb2: 0x851db2eca15852453ab2d70e, + limb3: 0x201ae57b8bd651a9a211245 } }, E12D { w0: u384 { - limb0: 0x8d48b838435bb40e2533a6f8, - limb1: 0x16e1b3c416ebf6d4b2054c9c, - limb2: 0x36ec48df2680eeaf913841f8, - limb3: 0x4eb5d558912cff8a473b752 + limb0: 0x107a402a8e5fd3d6694e2491, + limb1: 0x2fcd3a87cd5349af3c857428, + limb2: 0x5e7694bbf0930a85be56591b, + limb3: 0x7d93547fc3384cad47215e5 }, w1: u384 { - limb0: 0x40a998c8b3eb7deb1766b916, - limb1: 0x3577680d16b229e4c8e1e64d, - limb2: 0xeedd7b064bc286bf7f2f49d5, - limb3: 0x90bc729037793b4b518f32c + limb0: 0x2d9484d3a15699a7a1f5cdb8, + limb1: 0xf1552b9e00277c8adf417bff, + limb2: 0x797fa3b98f9243d4b02d9431, + limb3: 0xee3f7dfe449d9914888e159 }, w2: u384 { - limb0: 0x415bd6e13852d46d3ad48752, - limb1: 0x325a68237e16a060e77606c8, - limb2: 0x1c35eccb32c19ac49fbed4f1, - limb3: 0x7c2c59b186f25401f72282a + limb0: 0x8cb567b9cd6c029b00fc4e41, + limb1: 0xa86ba8941e760df1c880b78e, + limb2: 0xe39f860fa3f881c589990047, + limb3: 0xcd133ff0a3d963a38f16788 }, w3: u384 { - limb0: 0x407d43da43e651163ccd1085, - limb1: 0x4af2439488539cda0bdb806b, - limb2: 0x890125188b5c5a007e4bc1d7, - limb3: 0x189257dcc604c3f1984eab99 + limb0: 0x6e71601b16aa6640cfd5d5de, + limb1: 0x1e4d16be3edc7039f570f547, + limb2: 0xe015353d569f8688f394214f, + limb3: 0x59546e8ca3e361bfa7f3414 }, w4: u384 { - limb0: 0x10c3bda49225f0593a3a6cdc, - limb1: 0x77309fe5df864aad489d33c9, - limb2: 0xa5434aae566847a63f1359d4, - limb3: 0x54fdafe683af1b1ff74aace + limb0: 0xcba11f8010fcb1b7018d4942, + limb1: 0x1936e2410861c27516ef1950, + limb2: 0xba1a67208cba4d4c43b6eb14, + limb3: 0xf3d199823dda0ca4ce0f913 }, w5: u384 { - limb0: 0x2e0d58d425e72828046c1605, - limb1: 0x9405642e3c9b14f6b626d62, - limb2: 0xd757bd5034d905d73350bbe5, - limb3: 0x6ca2578f30190ecace3b1ce + limb0: 0x4141a8ab05e48332c7a97101, + limb1: 0xc11b08f6a7ade95596c91b9d, + limb2: 0xc60f61f46ada4e329659dad5, + limb3: 0xc713a291ca63d714b43b773 }, w6: u384 { - limb0: 0x7053d7c87e571b4cfffc4022, - limb1: 0xa048cf5e899a197aa88db09a, - limb2: 0xac17a7a66629042ef020749e, - limb3: 0x12fedc3d993ed8d1f5845370 + limb0: 0xfd82de6406270dbaa131943c, + limb1: 0xd30c660ecf76e1ca4ca5df67, + limb2: 0x7a3ac1af7f68fe980f73984f, + limb3: 0x51b9df004712c0a919c1021 }, w7: u384 { - limb0: 0x3c41091f167eb34c9e3b1146, - limb1: 0xd490ab926098e15a5f54e6b, - limb2: 0x2d6aea8229990b9cef22ea2d, - limb3: 0x44d82cb5374471e47a86810 + limb0: 0xca9fe85418e99c70b24bfbc9, + limb1: 0x6c09ab753fa1bd7e5eb72928, + limb2: 0x29ac58579f2e59649b78e304, + limb3: 0x19bd14410529841d8976139b }, w8: u384 { - limb0: 0x24a4d7ad31c480f9bd92bbe7, - limb1: 0xf419253ba1e1576f694029c7, - limb2: 0xcf868a92b9c45b723dbd72c8, - limb3: 0x1835a4245442efdbba0ac6f1 + limb0: 0x24dbe1d4f02d7ef87c2cb830, + limb1: 0x16bd5c02c49e80904866a252, + limb2: 0xaf1a9309f3303d6c367356ea, + limb3: 0x1e19bba8cf8459f8f4dfd36 }, w9: u384 { - limb0: 0xe0525ff5beff52bc43631361, - limb1: 0x5dde51eea9d41e0ebd1e5e80, - limb2: 0x3ba19a015d84bd60591dc09a, - limb3: 0x12ffa7a972f6618f5e5d6e90 + limb0: 0x2d779d40ef68e8d88e174d50, + limb1: 0x3e8cddfef78f63c6b4492711, + limb2: 0xcc77ab33895f03cb0526a45f, + limb3: 0x125fdd8cf5eb4cbf87136c28 }, w10: u384 { - limb0: 0x868685fe762f58842a1fc124, - limb1: 0xa1084666c88a1447445116fc, - limb2: 0x54b39d1ab429a5f26b834e40, - limb3: 0x13b52b7fcad576f040771d1c + limb0: 0xdc1c3be866980e02cb6c6552, + limb1: 0xa95aa3b3e5bd3b4f9e44b20d, + limb2: 0xb044b29c621e7b2dad2234c1, + limb3: 0xce6623d2aafe10b6e17cfdf }, w11: u384 { - limb0: 0x8a9d2dd18e779f34440b03b0, - limb1: 0xfa858d4a9fd8506dd90f42f8, - limb2: 0x3a3f3f79e34c20511104b084, - limb3: 0x2d86a0aebfe68c6b5ead312 + limb0: 0x60124efd5e01a25ae6df0508, + limb1: 0x721f5b9120ddb48b58c45e92, + limb2: 0x1dd4bdf5f24d952ff670777d, + limb3: 0x19f4d3c0a17c210e64fdc0d0 } }, E12D { w0: u384 { - limb0: 0x85a2f1a1d384f98c2a25f3b8, - limb1: 0xde6ffc83ff34a754f0ce666f, - limb2: 0x8bfa4e32fd98441c6a2ef8da, - limb3: 0x19fd540c0f47fa1a3b8df887 + limb0: 0x840e3de720a4548f1da7be6e, + limb1: 0x3ac07781ccebe03234a3c070, + limb2: 0x60a15844dc5503c9619d9185, + limb3: 0xabb0efbdafc1bf8dba79909 }, w1: u384 { - limb0: 0xaaa6a01b3ca9a82adb5ce86b, - limb1: 0x7d83fc11a8400fb872435960, - limb2: 0x19fe66cd2a70d00424537fe3, - limb3: 0x6b63f3014f753574be379df + limb0: 0x35e738bdafcef08554231156, + limb1: 0x152ec5c04b5d82140676dcb, + limb2: 0x92b8cdb4123580d2823f3463, + limb3: 0x6c6271bd78c3dc0ad928081 }, w2: u384 { - limb0: 0x6fff993c8d33d4bd6b83cca5, - limb1: 0xa721aed8a7e9656ab2584045, - limb2: 0xe9d79a3345efbebc964b9cc, - limb3: 0xd8f044b91900e365f2c8bb1 + limb0: 0xc0885cc50b00d5788f6bfe71, + limb1: 0xe0e2e4020c8e3d3aad0bb4fc, + limb2: 0xa03d4b3f246f40eb91edbd0a, + limb3: 0x2ad754c710d3c5a0a9c8aa7 }, w3: u384 { - limb0: 0x510c50c1f0927ec38171680b, - limb1: 0x97ee761763d11cbbf8b9fbc, - limb2: 0x36d96f9081e6a6ca240ca416, - limb3: 0xad5a61fdc16ef120c1e3b4f + limb0: 0x150f44c02d8d2ece9cc20e89, + limb1: 0xbe88ea3462b0ac825a3f7683, + limb2: 0x392c7bdfbcadea15c9ec3776, + limb3: 0xcf868bdeb3044866e335299 }, w4: u384 { - limb0: 0xd822b0069475045df22d975c, - limb1: 0x6766ca55695994cb494feea5, - limb2: 0x8578e861f9d2cba58b48c950, - limb3: 0x45931adc535681d4e0e6241 + limb0: 0x5e373df33b60f49f245eeeae, + limb1: 0x32ccc0c3ab265f108c87af10, + limb2: 0x24b304890cb346fddc8baecb, + limb3: 0xa5602cbb5588e7a5347043 }, w5: u384 { - limb0: 0xf2e064ac373350d18dec2cfd, - limb1: 0x9cdef78f140edf547b366413, - limb2: 0xe96f318d71111fbff73e98e9, - limb3: 0xaff0804fb364324606478f7 + limb0: 0x79a45fc3a6b3476edccb39ef, + limb1: 0x699737a3f0a37ccbf1351d50, + limb2: 0x628e055199d024aaae669c51, + limb3: 0xb7a54344f41ac4806f963c }, w6: u384 { - limb0: 0xe64b1d6af779fe158c25afcc, - limb1: 0x3b4eb6dc136352c8e58d700f, - limb2: 0x346465cd1cb4c583c97a57a1, - limb3: 0x84423e273f348f4010d6d5e + limb0: 0x56763ce8241e2e4c4ebbfdf, + limb1: 0xc7e7f096be44dfd4045256dc, + limb2: 0x59d483ad26bd43de0be0f89b, + limb3: 0x115650afb40f7cc9bfc41d67 }, w7: u384 { - limb0: 0xef736ce0b2a201533de534d8, - limb1: 0x2374bcb22ab095309c212e16, - limb2: 0x2ae77bfae2fdabcdc1c1b95b, - limb3: 0x11d1927cb785618eb830e1de + limb0: 0xf761296c383bc157c0dc74d2, + limb1: 0xf7ae69719276fa4a8f45a7b1, + limb2: 0x9519a049398c825b8591fd3e, + limb3: 0x116c67cb21786e95c1a81a42 }, w8: u384 { - limb0: 0x1053725bb5ab1b3b2ca787be, - limb1: 0x9712c7487cb925957a63ded0, - limb2: 0x8dd9250d707a94fc82b3a219, - limb3: 0x18f3ed6828f5262f1cc344d + limb0: 0xf88348b16f829f538445e4ae, + limb1: 0x5c59ddf4cb31896b683c0532, + limb2: 0x34a2ed13f5d41b79207f2bb2, + limb3: 0xf05b669ee27d19d64a44624 }, w9: u384 { - limb0: 0x7467e8ea9e3d74cc16d36f3b, - limb1: 0x2c25f8ce243c22680f624bef, - limb2: 0xfa071f6f5cff0a8419da15d9, - limb3: 0xdf5f2a12dcfcab273294c04 + limb0: 0x60c0435be32f160a839128b2, + limb1: 0x5da4368729030e6e45435c2, + limb2: 0xc3225b269d34d229f0daabe4, + limb3: 0x16bd338ab123444102821db2 }, w10: u384 { - limb0: 0xc42e91528966e6f06faadef0, - limb1: 0xdfbd8da521c9528a0ef99f20, - limb2: 0x61d26d145df7539e2b45f430, - limb3: 0x128217865a2dc031d053695e + limb0: 0xbe99f7a76adf1a39fcd16614, + limb1: 0x455ad4d2c342a9150c205cdf, + limb2: 0x6c7129df025ad6c248cc3e23, + limb3: 0x117d45dac2232adcc3a58865 }, w11: u384 { - limb0: 0x163a352b2d720210c72fc8f7, - limb1: 0xc85d9b2a0ff8f15dcf98ddbd, - limb2: 0x6d484aefaca31efd9fd3256a, - limb3: 0x12ba37168d6e08fe08982e3 + limb0: 0xe7227b87d84291616d163423, + limb1: 0x62f024ba3b1eeea3201b342a, + limb2: 0xdba6e933ce41754f118a7c3, + limb3: 0xb03ee9bfce34be38e903aa0 } }, E12D { w0: u384 { - limb0: 0x38b43e9be1bcb64476d51e00, - limb1: 0x8602e36aa994b3214d90e0ff, - limb2: 0x586c18b613bfddfcaf25fc27, - limb3: 0x132124dd09b9eec63b659332 + limb0: 0xacbe4cc978644dd3b66d1251, + limb1: 0x8b0827e7f460731253c48669, + limb2: 0xce9fb3a4b707ceedf9e4ccd5, + limb3: 0x13601ecdfe890ac5b6394083 }, w1: u384 { - limb0: 0x5ddb7bdf84073bc063efe98c, - limb1: 0xa64a852d18129412ce162484, - limb2: 0x152e9daa8834ebdb59e7ddf7, - limb3: 0x7bf9c1701e60fd253751faf + limb0: 0xf7595a279ff9c75a51e66dfd, + limb1: 0xc142b5880c07598137eae9b6, + limb2: 0x7a5bc2021f658c6a85627610, + limb3: 0x132b8e30cfd8515a3df346f7 }, w2: u384 { - limb0: 0xc598970049645344235e53da, - limb1: 0xe7b5436e4b12683991c2f283, - limb2: 0xb9c56c5b5e5f5e2fd1786e9d, - limb3: 0x18ee7022bf6a2649a88e97b4 + limb0: 0xf6ba0f17bd64a508a34ff8cf, + limb1: 0x74707c027b3fe929fc806de9, + limb2: 0x22d365a315971b9f0c206a82, + limb3: 0x19dbbd0c7f94d1f4ee79356 }, w3: u384 { - limb0: 0xf3a0a1ce61ed489a0117e8de, - limb1: 0x671bb54bbc2570f671a62839, - limb2: 0xe32f1eb95b795fdaeed4863e, - limb3: 0x14f40d12c18d83f3e084d7e0 + limb0: 0x3f626447ce3814e02b1ec0d7, + limb1: 0x5c8f6f2fcf4e7e35083554c4, + limb2: 0x8dbaacc8bf9b1754dfc5c7a, + limb3: 0xb35d9b7d542e11dc9367339 }, w4: u384 { - limb0: 0x19c06b919c8e20bfc4745ff2, - limb1: 0x15c1b998582c8a654e3de231, - limb2: 0x4d67e1c49398b3b4603d582f, - limb3: 0x68f601f1bd96633b753b202 + limb0: 0xe625bd4cf03325a6336ecd5d, + limb1: 0xc3e56498d973b972df22643, + limb2: 0x4da8a81d2cb2053b00ea8fcd, + limb3: 0xa642ca8b89b6a1c4e9877db }, w5: u384 { - limb0: 0xa41920419e5cd8441d3b929d, - limb1: 0x99845a476fb5604c29f09071, - limb2: 0x82d9ee512bf3d8dd54bfde9a, - limb3: 0x30e0503a3f5f823f2dac2d4 + limb0: 0x90a8380dd53bc5b94dbe3c0f, + limb1: 0x2903c25cab059c295574f591, + limb2: 0xb2377f88137b3e6b90d7ef37, + limb3: 0xb7c1e72e24735bde787a674 }, w6: u384 { - limb0: 0x9ba94c4d17be45c5a85860f7, - limb1: 0xac1b99d5e015730a0297cbd5, - limb2: 0x1c0573f35c9e34fb710ac84b, - limb3: 0x19fba1205c03913b6d9ea77d + limb0: 0x4773b12414a16ce9d033310f, + limb1: 0x9df89f470a41a445b7748c4e, + limb2: 0xa96cdf868e25c1dfa2eae25a, + limb3: 0x160d60066e34bef4bf67e8ba }, w7: u384 { - limb0: 0xe1a29cdad7ccf8f8dd3cc8ab, - limb1: 0xa907a22d5b08cf3d551f73ba, - limb2: 0xedd1eb1353c24cb5b3f6ecdc, - limb3: 0x91ac1902452dc34c9d46eb4 + limb0: 0x97741dddbadcd502d93d1ada, + limb1: 0x91f945eb520c5683d7d835be, + limb2: 0x3acf7014131ff4db19eab525, + limb3: 0xeefb54325e312a77579cfb4 }, w8: u384 { - limb0: 0xc7bd0638e476f9b762b90573, - limb1: 0x58a98285280d49dcba5adb29, - limb2: 0xb2e8d3592861cb3d1375bb4a, - limb3: 0x199f441640ca6511d4705b7c + limb0: 0x9d6c29377b2addb30bb07eb6, + limb1: 0x99fdbae79fab5cf167aff047, + limb2: 0x5ade5a8e1c7b6bc090eab03b, + limb3: 0x11d79b9562108c1f05e613e1 }, w9: u384 { - limb0: 0xd3e98386501156f850e813c9, - limb1: 0xd54af5baa084bd46ce5beb3b, - limb2: 0x3b6fea259bd8ebd6d476fd64, - limb3: 0x10d805bd3fe1eb9c154bdc12 + limb0: 0x2a7b85423fcc9846cbd9fe8f, + limb1: 0xd29258a1f3d53096b5ef7341, + limb2: 0x6962bcbf5cd737335faf272c, + limb3: 0xbcf4003e7213cf0a16d92a8 }, w10: u384 { - limb0: 0x4c1385a4e3149a48a846cd9e, - limb1: 0x6441109daf4da660e2660ea0, - limb2: 0x2c95c34d5cd6ef7af17d064a, - limb3: 0xf189be170992556a9cc4854 + limb0: 0x283fa69586ab328da624f05a, + limb1: 0xe538df54e03534989f032f90, + limb2: 0x8def2c7d92aeadbb57db8dd5, + limb3: 0x1023a83a0bc5f302bc4918a8 }, w11: u384 { - limb0: 0x9cbd44ed51bae3cf1a875ba7, - limb1: 0xe3f48e0ef0324903810528c, - limb2: 0xe03bb67b3a525c1f68cd17b9, - limb3: 0x17169b4001eed44aff7ebf2f + limb0: 0xf0dd374565f0c70e62ab7914, + limb1: 0xdfb1156b56c464fa271bea64, + limb2: 0xfb31d547c72f0e06b7e95d05, + limb3: 0x199fffdc2a5a3333d46c2722 } }, E12D { w0: u384 { - limb0: 0x52c1f97972fa85a57fac4f0, - limb1: 0xef4d9580fb64681ed3bbfd7c, - limb2: 0x46ae1fcc21a4691a49a52e0d, - limb3: 0x18ce594ed7b1002081d6b91b + limb0: 0x8f76261cf238884bdcac039c, + limb1: 0xf1a631914c8ee95d8d563038, + limb2: 0x7ad15fcf82a1de05d7ca78c4, + limb3: 0x17d503bf7c0186f31fb87cac }, w1: u384 { - limb0: 0xdf60dab7d5b40d1c83cbf2a0, - limb1: 0x19097bf9f28dcac33783100, - limb2: 0xee42aad7b9d22a8e1431f43e, - limb3: 0x1179ff361e3dcb6339108228 + limb0: 0x12c73d43b1d6e5e93cffbda9, + limb1: 0xc8f8aebf2cdb43903aaf1fa8, + limb2: 0x5f1bb59cf75e973628df5a3c, + limb3: 0x133637214037ed72a089671b }, w2: u384 { - limb0: 0xece00adc05cc3980b24fb46e, - limb1: 0xdae881c70db161f95ab4b1b2, - limb2: 0xc83f4d753996362d447d788, - limb3: 0x15a40fdab9d598c4028120ba + limb0: 0x99b289b7c895e0389505ae3e, + limb1: 0x807d96bb7abc61490b0b2ae9, + limb2: 0xe901e5c6b224704f999bc014, + limb3: 0xb1762e3a5ab01513e934471 }, w3: u384 { - limb0: 0x77561e79aa550b92aafe0615, - limb1: 0xb1c3cf0df46e7fa329a876b0, - limb2: 0x2be6c481773e02d5c462c19f, - limb3: 0x142c625bd0b27ad645020f2a + limb0: 0xc2991401ebd01d353eff0e10, + limb1: 0x3f78a46de2ae77e99130d6c4, + limb2: 0xe8076c850bd55b9dc399ef14, + limb3: 0x1959a68b64e006097eedd9ca }, w4: u384 { - limb0: 0xa6ba578b2fb7dc94333f7ab5, - limb1: 0xc9b96b1070fd6277997948c4, - limb2: 0x94755a7b20016dafcbecc0ec, - limb3: 0x100feeccfd2d832d07bc230c + limb0: 0x31f962a10ef81a0e881e9412, + limb1: 0xed29acc9384952f5e68bda38, + limb2: 0x5ad6682fe35e6be9e495e035, + limb3: 0x53290025191e515d71e6a4f }, w5: u384 { - limb0: 0xad92cd493f7143f010cf39fb, - limb1: 0xddbf653398edbc3533fa4cd7, - limb2: 0xf0f44b8a70fa28240699d251, - limb3: 0x5c54487d43c82895bfca43f + limb0: 0x1826298b7042b45f2484b705, + limb1: 0xf7754a63c6f36ead9c0722a6, + limb2: 0x3e19ea5d2569e83b367df44e, + limb3: 0x117cde4851820ba5a6d323a7 }, w6: u384 { - limb0: 0xe2555378a3e278131ad09b28, - limb1: 0xdf6fd7205379e58dcbebba59, - limb2: 0x629b6162da80ed9ba5e4888, - limb3: 0x180982d0ac7535b3c6dd738e + limb0: 0xb2c4b66f8d495051b1e92716, + limb1: 0xebf594dc49b44c3275b03925, + limb2: 0x3e1e370a07e830d358d9d527, + limb3: 0x17f0f608ef7e255a7740e438 }, w7: u384 { - limb0: 0x9cce88b40b9053cee9efea6f, - limb1: 0x618ce5d847bc6aa3891dbe35, - limb2: 0x19393c0d123330b6b9556c22, - limb3: 0xff3a0bf43d7faa8f30a5cd8 + limb0: 0xf7eb9970e3d485405ed26e6f, + limb1: 0x55504e6108e307d4c105fb01, + limb2: 0x37e5a48b0089379bc4d3a960, + limb3: 0x15542f45dbe73bde5df32e74 }, w8: u384 { - limb0: 0xc14baaa4d15f963a32a17621, - limb1: 0x2da50ed98b1de3f23f629301, - limb2: 0x464744ad690daa3d33ec3cda, - limb3: 0x1460f13ca596a8321f2e5df + limb0: 0xfc2e20fbd6973e5782d582f7, + limb1: 0xb0d924870a4c93a0ee8de35d, + limb2: 0x554637f24083718a82311c10, + limb3: 0x12764367f85796814078b42 }, w9: u384 { - limb0: 0xcc1608b7813b235dacda3f2e, - limb1: 0xf72f07e4a6f654c07f414a9a, - limb2: 0xca54f6bc28b1e10774e16482, - limb3: 0x1724cfe4d74f782d5a2acb46 + limb0: 0x8fd5bd83ed527a4d26c45fe3, + limb1: 0x43b7d218d10ff081da67bf2b, + limb2: 0xf9fc937c157ca5ee08088e73, + limb3: 0x119362054157e7dc5658fc69 }, w10: u384 { - limb0: 0x259d28f196d457a807c651a, - limb1: 0x8ef035c5022e5b482b2ac155, - limb2: 0x7b727b9969853667c2d38986, - limb3: 0x27f65a16c9b1d044a00b188 + limb0: 0xcd2d08d72116be874d6ee56d, + limb1: 0x77c4f1eefb4d35ef0221d5b0, + limb2: 0xacf3b9162ffc9c289bbf6928, + limb3: 0x2e08e8400c38ac22655b3d3 }, w11: u384 { - limb0: 0x30993d99b4f6a9166f542681, - limb1: 0xbc5e15a23182da11474fd8bf, - limb2: 0x4a951478c0115730a4cb100f, - limb3: 0x14dfc1cc5f5d956a132d437f + limb0: 0xf4d15b649f3d55ead568462e, + limb1: 0xb567200eda805f6453c250d7, + limb2: 0x7be6abfce3538971d5c5f487, + limb3: 0x9d5f5b42216ceaf147ac21a } }, E12D { w0: u384 { - limb0: 0x9be1d2b72a9407c63f2b7476, - limb1: 0x1df7a34a12068f8a64359f6b, - limb2: 0xe006c022210275f2083b9036, - limb3: 0x19fe737804c7f3dd8725cc0a + limb0: 0xd347ed30451ff201af63eeca, + limb1: 0xad5110b2aeba89322b006323, + limb2: 0xf82434189453d69149a0c0a6, + limb3: 0x80326dc5e35502bbce7ac6c }, w1: u384 { - limb0: 0x505d2f8845ff7403bce2c3e3, - limb1: 0xf9851b9751d48633ad2bc574, - limb2: 0x2c2ac412d7acb8a334a10284, - limb3: 0x17ed1fdd70e403e54f9d3435 + limb0: 0xc83c82247fb95b58a4ee3810, + limb1: 0x31a8674c7e68d35d98762cae, + limb2: 0x9cfbb7fec0c26829164628ce, + limb3: 0x16bbaaedd62985c32f4e076 }, w2: u384 { - limb0: 0x2e845182d86399f40f1c7bfa, - limb1: 0xc18acfd3240c15cef6b12729, - limb2: 0xe752a732e278893e04aac70f, - limb3: 0x2eed4ecca3ae924f399fb66 + limb0: 0x2fa6372a48bfbaadfa13763e, + limb1: 0x5e40bda6de39b49e34b6cddb, + limb2: 0x112c3d354dca6adf2dca4bbd, + limb3: 0x31f3d996a2adee764770117 }, w3: u384 { - limb0: 0x4355a6924660655c3140acc8, - limb1: 0x43afcc2ba7ade1411de59a74, - limb2: 0x45704567a4261da019289302, - limb3: 0x72769edf57045cfa25b7401 + limb0: 0xff3ed33234b352e29be10777, + limb1: 0xa48ea598a7173580b764c4b2, + limb2: 0x4f673c656ed817dd15a35331, + limb3: 0x2789ee0833b95e2a631106b }, w4: u384 { - limb0: 0xea41d91acc679f930556818b, - limb1: 0x1d64714162c34d32c8c10531, - limb2: 0x1500162a2aa8ccbf39ee5988, - limb3: 0x64c77e1606e12c3714f1f9c + limb0: 0x9ac4d1b96cb51db76fdbee0b, + limb1: 0x803a0ddd0255fcf6dab7617c, + limb2: 0xd6b0af076d77742457695aff, + limb3: 0x43761452a76341901155087 }, w5: u384 { - limb0: 0x5ba9af51a2b1bcbc88902531, - limb1: 0xd388ea23dd58bc01f34a1359, - limb2: 0xf6a7c708ac612dccbd65bed3, - limb3: 0x755b923305cc2c8bcedbe79 + limb0: 0xbe44dbd432d048dd243c8bc3, + limb1: 0x98d9d4bdc6a8954684fcdf2d, + limb2: 0xcfba6c2b4124b837319047eb, + limb3: 0x8a9e73497aafaafe182bc19 }, w6: u384 { - limb0: 0xf0e4ad19d2b43434a6781f39, - limb1: 0x8d7f671b8d34bc726856e533, - limb2: 0x5fe9d04ff9a272bb531be6c5, - limb3: 0xe102b5e153b82b5885925c8 + limb0: 0x8a3b064f566cf7a95dbe7548, + limb1: 0x3a7f64c477a6e83e434ce861, + limb2: 0x9ba7cae92f44149908673e10, + limb3: 0x45103051f125fedb866d95b }, w7: u384 { - limb0: 0xf9823bed0df5e3cbf3488a74, - limb1: 0x5e9496ab1490fb41b1bf5423, - limb2: 0xed8719560f9b9076fcc1a941, - limb3: 0xcc2d9f15dd1e11bfed20d7e + limb0: 0x5ee818e7234e7272ec07f3d1, + limb1: 0xdd4bc27187a7d422aa6df86c, + limb2: 0xcbb7f78d9fe849c55f5caf73, + limb3: 0x1862b91a119174f1c7aff149 }, w8: u384 { - limb0: 0x45896d78df9c595fd0aa1481, - limb1: 0x92b084464369f4efae9c29cb, - limb2: 0x9b4bd00eb4b197520811fdf0, - limb3: 0x3ba422d77f327d3494ae3ff + limb0: 0xd08c79a7c7850cbda627d11c, + limb1: 0x9d4f4f86dbf4a4ac0d4606f2, + limb2: 0xd464fb70944a1feb5e7f92f0, + limb3: 0xd5b0522da04c9aeca0608e6 }, w9: u384 { - limb0: 0x4e9f49dadb3929e506593052, - limb1: 0x19cc6515cdb29c910ddc0f8a, - limb2: 0xdb73bebde4638102d2c1ae9d, - limb3: 0x158f9db0b6393b5eb8658c30 + limb0: 0x3dbd70f614fc2d3eb4edbcb8, + limb1: 0xcc386604b029681e5d5de15a, + limb2: 0xa03d1c9d026d090768bf5861, + limb3: 0x55ff5a76816f6d652fd986a }, w10: u384 { - limb0: 0x66b4d5a940a8a75e9c908d02, - limb1: 0x17d31a20a8fa18e0eb20db01, - limb2: 0xfff0eb753b1d852d457e977f, - limb3: 0x851a2d9a5693649993869be + limb0: 0x9d633d1f35aea7549904415e, + limb1: 0xb6d0d361ca6497edc9faa721, + limb2: 0x6d5289bb547465b3be8c6ad9, + limb3: 0x985850e8cd4013c4b6d95cc }, w11: u384 { - limb0: 0x56dd580f25fdee1803ddcb22, - limb1: 0x8466aec0ca6ed7bf089f0449, - limb2: 0x1dd19f9484a47e326b4b321b, - limb3: 0x13d0fdf3fc29a1693008120d + limb0: 0x7cb50dc102dcb28e77742892, + limb1: 0xe2437d8286205ad782d6b72e, + limb2: 0xda1f62195f31b4783bab661d, + limb3: 0x15ecca5677df076e39049bb8 } }, E12D { w0: u384 { - limb0: 0x2547fa5e4b605ed91545a014, - limb1: 0xff004726f1cf325199db09eb, - limb2: 0x23b404d8deb5a6b260301b18, - limb3: 0x4682d2901a306ac658193a2 + limb0: 0x9d72d5db64cb7507239422e0, + limb1: 0x264e7e57b7260676a8bb7688, + limb2: 0x7344113fcc925f1d30d06dcb, + limb3: 0x18de0ecba8fd3371b8aa34ca }, w1: u384 { - limb0: 0xb48d760ca21a1d8979b27963, - limb1: 0x2e8eebcb7dcb3cdaa74db171, - limb2: 0x34646edcc2308b3fb4e26bf8, - limb3: 0x9b361ea1a6fc526f137c796 + limb0: 0x1861183cc4b2f46d87979e5c, + limb1: 0x6e0a01a25c6ebaf9464e11e, + limb2: 0x7f2de4bc5dd520e1c25ddd85, + limb3: 0xe800e85c928ae4a62b295f1 }, w2: u384 { - limb0: 0xa7e2e2a3c85b516f07346772, - limb1: 0xf93f347516292538f1ffed1f, - limb2: 0x22d4b4221c76a81b323b190e, - limb3: 0x2c9f055be523726809fc7b9 + limb0: 0x947b7670a81523ba7d89ed92, + limb1: 0x14b12adacd332e3d09706640, + limb2: 0x11e97f9c6bc126a2f82ea1e6, + limb3: 0x10624939def344ec8c1b3cf4 }, w3: u384 { - limb0: 0xf4114419504d3cc4627166dd, - limb1: 0x98485d7fe090bf44680a7a62, - limb2: 0x557a4172a4a247fcb7d44a65, - limb3: 0x13c8557de883b13b87e900bc + limb0: 0x3b6a7bcdd62aecc44c37866d, + limb1: 0x4f090d678ea45519842d182d, + limb2: 0xcebc7bf7f3c10bfd2e6639e9, + limb3: 0x1631faf829d85ac9c61de59f }, w4: u384 { - limb0: 0x310737cce3d96f92d177f0d2, - limb1: 0xebf7a4e421b6ac3b2d0a4ac, - limb2: 0x7a2bf2a993d3d23011f58b4a, - limb3: 0x7d47b3c75f9dc005edc5b42 + limb0: 0x559cd524045548ae86151607, + limb1: 0x6e006893ba4aa3699195e31e, + limb2: 0xdc1c446eeecc785b43fb9a22, + limb3: 0x123202194c62a4c9baccb009 }, w5: u384 { - limb0: 0xa51a42dc283b4aafdb1e9889, - limb1: 0x274c79f56c6f4659fa6935c4, - limb2: 0x5cdea3768849b8dd5e93f75b, - limb3: 0x199818adc7f23738dbc311d7 + limb0: 0x11fcaa3dba1a600b6010182f, + limb1: 0xf01f5f9fdeb3c498d7b7cb06, + limb2: 0x882cc64b2d18415e180078fa, + limb3: 0x8b267ee888fef3cd7927dfb }, w6: u384 { - limb0: 0x73b70e4168a7849d35601455, - limb1: 0x3c0c580cb720db03c9fea435, - limb2: 0x834a0fb77810fdc065803075, - limb3: 0x13c8c2dfe9fb9aa12424d0ac + limb0: 0xd6b28085df279d9394b5a7fa, + limb1: 0x763cd39e04067be6fdf56c8, + limb2: 0xe6dc2b118d1a64282a465791, + limb3: 0xf5493b733d5896bc5700fd3 }, w7: u384 { - limb0: 0x21955f77af6e5b2254f0f104, - limb1: 0x51c1aff6e8985ede9adf0ddc, - limb2: 0x333b380297b12c8f83a8807b, - limb3: 0x144a553000e0a7611a967ffe + limb0: 0x90a1f465c6e97bcd81222eee, + limb1: 0x7149530fb2e4319be2323f28, + limb2: 0xc88a2ea7d5e7ff07ca2ad206, + limb3: 0x162bb34dcd7e91a975c63630 }, w8: u384 { - limb0: 0xfbc243d4246b39c5b3b97237, - limb1: 0x71c0d5041236cb7b56e0a213, - limb2: 0x55e0f0347578d0fd74a98afa, - limb3: 0x1870b9edd0cf999e1d8f94f1 + limb0: 0x170a35595a61d913f682b57c, + limb1: 0xf2c9e682be5246c93b4e6ec3, + limb2: 0x2bf4029c422908fa4563de, + limb3: 0x641187d200dfd28e8e82aa4 }, w9: u384 { - limb0: 0xc17a922c09b73dbc8f492c5b, - limb1: 0x47abb1ae8ee599e1d8a24939, - limb2: 0xdffe8bb960ef91f76f2d2758, - limb3: 0xc32f4fe2733aa792843980b + limb0: 0x6fa76ba0131b78d2942cadad, + limb1: 0x3bb0f673c1a7b42445c6acb0, + limb2: 0x60a06dde4ec45da8ec121095, + limb3: 0x20100c6e96666951b26138c }, w10: u384 { - limb0: 0xcf288bcdd0a436d937f259fa, - limb1: 0xcca040a3e521b3e481c62c79, - limb2: 0x6a3ed848f742dd14cc329cab, - limb3: 0x1856b227019713c9f0e41b82 + limb0: 0xf0b483b7fa8c7e7af338816b, + limb1: 0x56d359ad26375fcae41714a3, + limb2: 0x873b27b4fa0b116a18158d0c, + limb3: 0x12e72267a31cafa207dd8dbc }, w11: u384 { - limb0: 0x31976741816105e678ce48e6, - limb1: 0x46fbba7abf6155ebd2055306, - limb2: 0xce0f9052c9838d110dc66c99, - limb3: 0xf526f187f67d5ebad71629 + limb0: 0x77cdf664971600615baaec2c, + limb1: 0x26bf00719aa6690f5b19075, + limb2: 0xdc51ab3277d503c215650c3e, + limb3: 0xc0f9441d20276e0db93c8e5 } }, E12D { w0: u384 { - limb0: 0x145ff3447811d2f68accf821, - limb1: 0x34467e4a6f4414ee7fbb90c7, - limb2: 0x8d758bfef58fcb4750e47b86, - limb3: 0x74d7a778d93a0255f87915 + limb0: 0x49b8bc0bba1b3b3e63506f5f, + limb1: 0x69ae08affd3b257cc0d8bdc, + limb2: 0x721d9ad5b76a8ba8f139dd3a, + limb3: 0xf8ac0fbc40271dc9a22eff8 }, w1: u384 { - limb0: 0xf6156ca9328b637d52d8ede2, - limb1: 0xc1b5b547c12c743d5139dae0, - limb2: 0x9b8fbec1feb7f554fc18d56a, - limb3: 0x78132da46dddaaf5c19b5f + limb0: 0xe9e8035fd0a006b598845454, + limb1: 0xdcc25fc32ad1942d93a350ee, + limb2: 0xfd77a0ec6e37dc33615964d1, + limb3: 0xb75169082563e4c6f1be90 }, w2: u384 { - limb0: 0xf690e7e76088136a092997b8, - limb1: 0xe34a62f38d8a78f85f7414d6, - limb2: 0x3be2c5cb2e5d8baf41a88242, - limb3: 0x19daa930da62947cf1dde28 + limb0: 0xefd32d50a707ddbd100ee51b, + limb1: 0x810cdffcb09eae39f48aa1e1, + limb2: 0xa18a7cf96101b979a65ff7bb, + limb3: 0x6cd39500720118321f2738a }, w3: u384 { - limb0: 0x3abe3b87fc59753dc8d157c7, - limb1: 0x866bbe861ff2b7f0c79532e8, - limb2: 0x70de55c180cf2006700e24f5, - limb3: 0xf6064aa3899f3c9a956d45c + limb0: 0x26986ba695a566d0262b9ee7, + limb1: 0xaab9e0bdc5aed6c48fa8efda, + limb2: 0x72f6704bebcf7ac9af380ed6, + limb3: 0xe16ceb416196f23bc2560a1 }, w4: u384 { - limb0: 0x84d75850dbc5989d7583d68d, - limb1: 0x4dff90ef2663cca1e0edc689, - limb2: 0x7ac55f3a2f6c524beb1fbe44, - limb3: 0x1f2adb0747a3553ee729147 + limb0: 0x7762c889e40661d695e0dffc, + limb1: 0xb8bc925ae8124f3b8c369b23, + limb2: 0xb522ccf634c91621e1559f97, + limb3: 0x5bacf21780b28756242dcc3 }, w5: u384 { - limb0: 0x143e7e5cf705767be94eacb1, - limb1: 0x8b2af708c67269d6fdfcfbb4, - limb2: 0xd1568db70c4518b42b92c78a, - limb3: 0x90b07233e7a45573777c002 + limb0: 0xf90a60c0d778d09b834b48c3, + limb1: 0x3c87554e9260971b487713e2, + limb2: 0x71220ad4dba9858bfc12ccac, + limb3: 0x16db742f5078344568720d98 }, w6: u384 { - limb0: 0x92010024fa3f357ac89f50f3, - limb1: 0x8f9a8117e8d21335fd4db743, - limb2: 0xb8b579e50a25fad60468a41d, - limb3: 0x161db3cda20866a26b913abc + limb0: 0x485a9dcceae19bdbf2dc0cfc, + limb1: 0x8e2f65401be2d31c093c53c, + limb2: 0x8238a47a96eb2cde2677e2b0, + limb3: 0x6039568233497b9222dfbf5 }, w7: u384 { - limb0: 0x55782b1299f1fb62ed911f43, - limb1: 0xaf51a9dc2047108fd32bf35b, - limb2: 0x2e9f07c6d9559534f52141df, - limb3: 0x1448d8501b01629ca04d4faa + limb0: 0x6f64078fdd7a425f4436d862, + limb1: 0x64d28a2586ab1e7f2bf280f4, + limb2: 0x1f66c4e09e8145a306b09bea, + limb3: 0x813c1ecd8822f2944b930ae }, w8: u384 { - limb0: 0x19c961a7080000cc337cd92d, - limb1: 0x15c047bceacb549924bb0d06, - limb2: 0x4a882685af58b50c5a8a4a52, - limb3: 0x1fe35b248a9bfedf0fe6f17 + limb0: 0x4060ce7fd6ea39ae7a74236c, + limb1: 0xd45a1c125ec3bc1614862318, + limb2: 0xa88ab4b47d71797470a4ca95, + limb3: 0x68574f8aed261828f2ba0a2 }, w9: u384 { - limb0: 0x908b6eccdb4b9456e7f06eed, - limb1: 0xfce857ad69c67c61f236acc6, - limb2: 0x43391e4e0aef220d5b9dce7c, - limb3: 0x40ebb761b2dc8828c32b9e + limb0: 0xc994b57f3410a4503912f0db, + limb1: 0x76871514e839d62296d23629, + limb2: 0x2fde71411b384900f656ab6c, + limb3: 0xdeebb1943725d48b9cdc7cb }, w10: u384 { - limb0: 0xa49058b31e40203ed74951b4, - limb1: 0x6830ca95918f301eb7a69b10, - limb2: 0x7e2462dff979160f49407356, - limb3: 0xbe4e3882b37cc36e9d15828 + limb0: 0xf3ef74f709c6cb45c21cd12e, + limb1: 0xd720f3876bdd542b86eeeb58, + limb2: 0xb85aea0cd816c09909b4d88c, + limb3: 0xa3ce54f3ee833e0bae2cb1c }, w11: u384 { - limb0: 0x50020031862219af1345de0b, - limb1: 0x3284a8df25b1a1eff794af65, - limb2: 0xbdcaae5e2b811d99f8e5720b, - limb3: 0xd051749fb73d9d5e58c85b5 + limb0: 0xf8c6ec38f3b7f955775e2832, + limb1: 0x716a5e0f39967a70c5bd78be, + limb2: 0x61f2e36cf96f821d6a3287d1, + limb3: 0xf19ea07493d608bae66bea0 } }, E12D { w0: u384 { - limb0: 0x8786974b8416dd36af78da30, - limb1: 0x64ae95584d7e87867e67600b, - limb2: 0x7bb37ecec43ae57f117cc9c9, - limb3: 0x40488a5738f9bbb497ba07a + limb0: 0x83b19eadcea71010d1565cfa, + limb1: 0x4825e294172616ab26e7eb20, + limb2: 0x54d4259a351535c9cbd1c6a4, + limb3: 0x241d155f21449ca4b5addf7 }, w1: u384 { - limb0: 0x6a5d0505612a3f04cef5536c, - limb1: 0x6d39a09a6b24836c9e05a04e, - limb2: 0xb2fd5cfdc15fb49473702317, - limb3: 0xc1bbd7203b4d4d542936a6b + limb0: 0xde3e245c2756d991ab554365, + limb1: 0xded567d010568eb5ba3ce705, + limb2: 0x327429176a50f14bdc580858, + limb3: 0x156807de27314670790e7ca0 }, w2: u384 { - limb0: 0xd539361464d342ebb6a9ef3a, - limb1: 0xba6fa5d99c7dd036f811109c, - limb2: 0x90feae4736f16a295ddb81b4, - limb3: 0x146fceff729b5dfc165291dd + limb0: 0x66bb95d7a4d98dfc50ec8fb1, + limb1: 0xc3c8058f329d30723233d845, + limb2: 0xd30b40aaa7eebcb481e5f715, + limb3: 0x6af8fbe105e0796a8e398ed }, w3: u384 { - limb0: 0xcfcec74f32e7c43d2b3f9558, - limb1: 0x5af878a75aa566cb3147a9a7, - limb2: 0x6a0f8ef5784947b788b1ce08, - limb3: 0xd4a043b98ce17dc81ac0e04 + limb0: 0xa940b949eb2388785b224608, + limb1: 0x1cec59486fc6a5cd144a91de, + limb2: 0x11402b75ed1bcd6cd14590ec, + limb3: 0x7f1086112d77b89f7582269 }, w4: u384 { - limb0: 0x3c64ec56d95f3710b0d75c42, - limb1: 0x28f9857c4618aa73c17d231c, - limb2: 0x27e847274132556232dd6c37, - limb3: 0x16fa123973b5b632c1249699 + limb0: 0x8f257f0a1e6796e78b8f951e, + limb1: 0x48f84ddb963cadbfe5e55521, + limb2: 0x6e427ce34296e0997e34bb67, + limb3: 0x1358d67c804b33fcd6dccd26 }, w5: u384 { - limb0: 0x74b6dab2f4f30c00316feadd, - limb1: 0x30e3425cb125ba3596784080, - limb2: 0xe36c4ac4f076d38b3bedece8, - limb3: 0x33da3de5b309cef209ce634 + limb0: 0xf29a7dc92df446d59d0ae4e5, + limb1: 0x823d3505088601b6a6610c21, + limb2: 0xec67638c41976d4b1caf835e, + limb3: 0x15c8e64bbf555ac7f232789 }, w6: u384 { - limb0: 0xb4bd4e871d63a71156b83a5c, - limb1: 0xb481d4358b78fc5b12f62379, - limb2: 0x22ff048ac51288b534d390e, - limb3: 0x117b95b091175d9aa8511d3d + limb0: 0x658317131159794cfb897b2a, + limb1: 0x3efb5096028939e901d050eb, + limb2: 0xb364141abe4f342b2d342e4c, + limb3: 0x697dece994d9f1cfd79f309 }, w7: u384 { - limb0: 0x2da07e5ebc77b49c12e26d08, - limb1: 0x35018fec6dd4f97b94791a27, - limb2: 0x2df155dc346466005f3e45f0, - limb3: 0xf03ec20e49940740bb4e76b + limb0: 0xaadcb5f26d03fad4f28df12c, + limb1: 0x492f0e081e52c8c88fce9f44, + limb2: 0x29717b344f24a9ce5704183b, + limb3: 0x77175c6d4b377dbafe0e4fe }, w8: u384 { - limb0: 0xb686d6e8deb830ac983743fb, - limb1: 0xefbb73567b99306cf85fd083, - limb2: 0x4762bfb8c3a54083f457fa06, - limb3: 0x16419e58293c3b5781fd94a7 + limb0: 0xea668960f018818ab2dc143e, + limb1: 0xd1b189a93d737c7c9df377b2, + limb2: 0xc326f49a444ae09fe755412b, + limb3: 0x9347fcd49e2293efb0a78de }, w9: u384 { - limb0: 0xf65580c7a108982788c9b89c, - limb1: 0xd121aa15ef03318994883e5, - limb2: 0x11a244c1a5b98fa8b4be0a94, - limb3: 0x63e95ffcb88b94544718d3c + limb0: 0x17514b18815a49976674c5f2, + limb1: 0xeadf8c7afaddb62cb39d0e85, + limb2: 0xb3bad6f772ce35db00653f13, + limb3: 0x17fd638fda925abc9867be18 }, w10: u384 { - limb0: 0x273ef5dba89034a19c82e19f, - limb1: 0x7141d415ef5b653cb922729a, - limb2: 0x62cd3ed7e4f0b0354bfaeb06, - limb3: 0x189e9b125ef596783f3faaa0 + limb0: 0x824d407e1486549861a4f9b1, + limb1: 0xd708e8188307765b7e7b5c71, + limb2: 0xb458d64fdc3cfcae7d504007, + limb3: 0x11376135f9107c7d85f2d49a }, w11: u384 { - limb0: 0xdeec8e0ee334d6f8373b7dd6, - limb1: 0xfbbf8216178a5c2473632cc0, - limb2: 0x155b7e76295be62cc8ff773a, - limb3: 0x169d630ae67bc5a13c9bbe03 + limb0: 0xdd930da650b850fd475ab204, + limb1: 0x6d1c787f7452a96d6fe58ed2, + limb2: 0x77fc37156b99d375a7d16ca6, + limb3: 0x2c52abc9192f9453d49eab3 } }, E12D { w0: u384 { - limb0: 0x463892df326597d03fdc8f23, - limb1: 0x543fafd304d1727d15e54c66, - limb2: 0x3d1af656ffeb2a3f9acadaf5, - limb3: 0x52b652418eb5d55c5ed0876 + limb0: 0xa1f4bb4ceda1931c829fab23, + limb1: 0x804ffc41249665a2790a0228, + limb2: 0x1de01e71f91960ccaf6c410c, + limb3: 0x81b2c2ac7a57744e8e9b410 }, w1: u384 { - limb0: 0x8dca1c5aa0dbe67dec5f1d99, - limb1: 0x79521377a1260b6f310e89f3, - limb2: 0xfb23354a74be712df9ea02d9, - limb3: 0x4daf67550c61aa6e7f498fa + limb0: 0x130433d5494eebebcfd9df94, + limb1: 0x99364cbac719f5f41ddfa380, + limb2: 0x3f29270ecf71851f43731a20, + limb3: 0x1145c70e232f053297295621 }, w2: u384 { - limb0: 0x93ed7d98948221aeb9d7bd26, - limb1: 0x9031611929b07ed58fd5ce61, - limb2: 0xfbf22d50c6426f469b5eedb5, - limb3: 0x45c196bbd4d9f80faf426d8 + limb0: 0xec442113c386176b32efde95, + limb1: 0x7bd862d3003678d9531d9c1e, + limb2: 0xfc594d12f8c8b42b2e4d6b90, + limb3: 0xeeb75363b656d3ec3fa9b09 }, w3: u384 { - limb0: 0x7191afd5a463e0ccc720dfcb, - limb1: 0xbfb145f8e58df07d4d0e1ea0, - limb2: 0xe706524b225159a4f34eadc9, - limb3: 0x161d9a3dd409dcf6b1fdafd + limb0: 0x222852bc2d918bd1ac5f63f, + limb1: 0xfe7d5faeb604de77c643a175, + limb2: 0xc65d389008dc614c33e685b9, + limb3: 0x180b7b07d9590c95ef7c4d32 }, w4: u384 { - limb0: 0x95a083eb33966dfebfc76c66, - limb1: 0x34483753df6a265061c0faab, - limb2: 0xf6252861d1032d53134d25d2, - limb3: 0xe4239f7618c5eaba0019471 + limb0: 0x970068a4b9eec3828487ea39, + limb1: 0xd9327df1470019283e338516, + limb2: 0x5952d080bc8bc07c9a246b5f, + limb3: 0x188de0056afd14bfc26980e5 }, w5: u384 { - limb0: 0xb3b85425d1d9a93ced6649ac, - limb1: 0xb4fb2e22e3dd50d86a173a91, - limb2: 0xa0341406c56024f75d2b7381, - limb3: 0xf0a653502b37844bbb7face + limb0: 0x1f95997064e7188584c76d47, + limb1: 0xba3e7e6239cb59b9630224f1, + limb2: 0xd02ab63f0952c3a26ac56788, + limb3: 0x6c3f71d101f157a0eb5e8c3 }, w6: u384 { - limb0: 0xdce8d9aa3549aba05edfbae1, - limb1: 0x7a7437046df0bc71d93556c7, - limb2: 0xb8ecad50a3e6fd474abf077a, - limb3: 0xd30e0e2d5f489b969ea1029 + limb0: 0xcf705d3f30333b45aeb056b0, + limb1: 0x3ded81674542b511276368b0, + limb2: 0x1a953a0af3d55e115c95e424, + limb3: 0x12c2bb84d66b242ac047d7a9 }, w7: u384 { - limb0: 0x348febae86bde0c8c762ee8c, - limb1: 0x4241311d7897f697ea27621e, - limb2: 0x9d6745c158ebb362eb043e8c, - limb3: 0x188ff190799365a083355f9f + limb0: 0x1d84fb17c565be3824c9eb81, + limb1: 0x983f3cef4c3580414e1c63d8, + limb2: 0xc6f813385e3fce4ae1a9f4c7, + limb3: 0x175fdf9433765408fdfc601a }, w8: u384 { - limb0: 0x71bffbe6d26f9b09bfa13a4, - limb1: 0x200ba6c25bac82eae29bd04f, - limb2: 0xc7407af232e2d46071f3dd2b, - limb3: 0xcdafb49bc0b1f282593e73c + limb0: 0x6c61ac267d1db760fbeaf92f, + limb1: 0x20b3d2e50bab22ff0da90069, + limb2: 0x54860d69bdb67b696fced45c, + limb3: 0x15f95850b768b8a0f63b96d5 }, w9: u384 { - limb0: 0x6e047430ea3653e1cfe71b82, - limb1: 0x71e76d4ed1b194d08cb220c3, - limb2: 0xa9e46a2ef339ce7aa2ec2ef8, - limb3: 0x1222294e688d01b955521e5d + limb0: 0x3fa62e0c86ad1d63fbae241f, + limb1: 0xb30f2dea012c94c9c26d22f, + limb2: 0x61befc67d0413374617f46f8, + limb3: 0x4078076119540c4a20693eb }, w10: u384 { - limb0: 0x9b5c9b6728bb1f9c46835d1c, - limb1: 0xa8ff534570a0a922678977fa, - limb2: 0x4d26021d1c127a887baa935a, - limb3: 0x135822de55149640f1dec93 + limb0: 0x25e4fe7a019eedeaa28ff1b, + limb1: 0x9324c0e779bd0c9fcd27f7e8, + limb2: 0x24d326b0d8a8c42d982f21c1, + limb3: 0xdfcf7aef0bf4098ae68b1cd }, w11: u384 { - limb0: 0x879891f64561ab48098ac157, - limb1: 0x25eccb084f1fb05333daa22c, - limb2: 0xec91cc8a0cd3299484a8e74e, - limb3: 0x11e64f80250f6a745ed72d0b + limb0: 0xfe63a0539935bee31d38ec22, + limb1: 0xd033b49fee05e4d97bd6842c, + limb2: 0x78d04ec2b510789e14ee988f, + limb3: 0x17aba0964ab1ddcdf413639a } }, E12D { w0: u384 { - limb0: 0x8f1e7939c57d19c53ecea3e0, - limb1: 0x6ac4e3454c17025868995106, - limb2: 0xdfee314ff960ccd2fb9e94f7, - limb3: 0x8c51af8779aca97d60f1737 + limb0: 0x278d77a81d602afd5a52947, + limb1: 0xcb5c30044228bb45093b0d90, + limb2: 0x8e471498d8a8be03dade312b, + limb3: 0x19beee76172ad8aa02dbf3dc }, w1: u384 { - limb0: 0x421675c6fe09d8fb9766e533, - limb1: 0x6db9dc37ae73eea07874b569, - limb2: 0xcaa7ee5415e054f315076d29, - limb3: 0x71feded8c720c8477c37ea7 + limb0: 0x7c77ce05c4c305a7dc0e5b4d, + limb1: 0x7bd3f5e81744c8fbff1e9d10, + limb2: 0x30ea7f32e968b9454c93c8ca, + limb3: 0x13642c30cde1dbf6af429fd5 }, w2: u384 { - limb0: 0xbffbd7f45db79186976ba453, - limb1: 0xa1c7ad3b3bc88190784c7203, - limb2: 0xaedc0cae18e2a788c3c096dd, - limb3: 0x6f180434c0d31908ef76ea4 + limb0: 0x595b8c57681cead9648c7acb, + limb1: 0x689d10dae2cc8e703e53a0e, + limb2: 0x29ae6fb08dc277565e3505c9, + limb3: 0xcf96b5bf70d0ccc001f3322 }, w3: u384 { - limb0: 0x88a58e87fdc9551eb4dd800f, - limb1: 0x43ddf467a79f41a734cbdfc1, - limb2: 0xd656833fd1b343d67be6d0be, - limb3: 0x18cb2f55c56903b8d1553f5f + limb0: 0xd1b554ed5518219199f34526, + limb1: 0x26ac3af216434fe1ed48aa17, + limb2: 0xc07d051d9daf7c6e095e8aa3, + limb3: 0xd6c203b2d9e77cc0cd40bb1 }, w4: u384 { - limb0: 0x2b0cd27b7c0fddee2ea55ee9, - limb1: 0x3f2691f5fb63f4b97ea498dc, - limb2: 0xfefc82823fb42ec890e599a9, - limb3: 0x8e135facdb50b9f9951b5f1 + limb0: 0xab65021306a36284149c06e7, + limb1: 0x4e3f42db62b95d309ced3670, + limb2: 0x76fb0b0b7954df85d0d8c050, + limb3: 0x5101d7e82eade26493678b6 }, w5: u384 { - limb0: 0xc9001fffcc2332a66b740fda, - limb1: 0x6fba67a2e4ddc90d7f5ad0a9, - limb2: 0xc557d3690f327910760138c0, - limb3: 0xf9c93a974af9ebc372251af + limb0: 0x7a6b2765b8a9ccbaaad5c828, + limb1: 0x7f4e8febb620ef2bc2d7a407, + limb2: 0xd30c4bf4b5860ebfbf7e3b9d, + limb3: 0x14d20e5825a0cf0631c843de }, w6: u384 { - limb0: 0x7c6cae06e9fbd95103387d28, - limb1: 0xb91f8eae9bc298f123e6f1ff, - limb2: 0xa8110d837733601346409d0e, - limb3: 0x65f338d03f42191cdec46b9 + limb0: 0x84f1594b851f0ddca968e8c5, + limb1: 0x3a6491a30f5721041f7581c6, + limb2: 0x9169d487e761ae399b754ba9, + limb3: 0x530b8c30d14555dddbf8776 }, w7: u384 { - limb0: 0xef5af7fcd051dddcb5e5d12f, - limb1: 0xb3b67e412eb9d976cac73e30, - limb2: 0xff0bba828afcebed832f8dd3, - limb3: 0xf73c8de343bc96e7aa74f4c + limb0: 0x57ad58f9bd5592d446a6b748, + limb1: 0x135c76ec36e730bf679e1619, + limb2: 0x549cc33448758c73223137e8, + limb3: 0x55d3b3769b18c8c17597c38 }, w8: u384 { - limb0: 0xd035efba76850936be618f2e, - limb1: 0x2e26072578ff96779647015, - limb2: 0x853d9f30ec2fdaad2ed267a6, - limb3: 0x13815aab87da346dc9881fb7 + limb0: 0xcb42d1d43cdf605892d0b23e, + limb1: 0x2197b1bc85e160f4865d08ef, + limb2: 0x37c01be0fe47d2cce9adbb3e, + limb3: 0x1553b94e1939110d4b99fc57 }, w9: u384 { - limb0: 0x13cc6b0304c52dfd1402d34c, - limb1: 0xc35034b5bd16b8f2d312739a, - limb2: 0xb5f71bc61c480b75dacfd144, - limb3: 0xc107f01b26ae7ba37ea9c6c + limb0: 0x6fbad2a03ba0aa5de69f43d3, + limb1: 0x765a3a8b3a2f959e767ed7e9, + limb2: 0x4316e351dc01ca2da29b0710, + limb3: 0x8183e742bf50ac5b25c5617 }, w10: u384 { - limb0: 0xf1100381268ee48a669ac673, - limb1: 0x12ac94bea03b9a7838749336, - limb2: 0xe98abca526f9c56b44e71ef0, - limb3: 0x192a158852b00709c8b5130a + limb0: 0xae282d2b795b5314b7f53f0d, + limb1: 0x7a64af990d741c0fe71b0b64, + limb2: 0x4fecda665a2e9c0826568d87, + limb3: 0x914cd3723446a757562b82a }, w11: u384 { - limb0: 0xbbc1f1c885f47591a6fff59b, - limb1: 0x997cfb0b37f1832c902de19d, - limb2: 0x9ca782ed65e2c5722859992f, - limb3: 0x8c2a2b64de7a6f84e48da15 + limb0: 0xdb326552a864fae27e34e3c0, + limb1: 0xbfd09d5d1e29af9e9d992c5b, + limb2: 0xd6d7663d363167d6317a28f6, + limb3: 0xe66725a5996b856981dbff3 } }, E12D { w0: u384 { - limb0: 0x6a112ba2ddedaa4f7ae8c66c, - limb1: 0xa05a4d704370d21371d6a20b, - limb2: 0x5810718c7d3fad479c5eebb3, - limb3: 0x15f7bc0e795be2566953f02c + limb0: 0x925f1548a2586b3c83acb844, + limb1: 0x353b125c82d3547bb22e873e, + limb2: 0x66e1c1174e42b65d840ce5a4, + limb3: 0x16fbfde31f733d31881cdfff }, w1: u384 { - limb0: 0xb46bb8191c72f41501eaf1dc, - limb1: 0x5632a148603cf1d1751683c4, - limb2: 0x304f6d015b99082c3a818773, - limb3: 0x14b7e1352ec6e804a53eb113 + limb0: 0xf48a04b2ecb65b0ec1ee74a7, + limb1: 0xd3ce0c326344e634d721fb34, + limb2: 0xa30496b2da7fb2ea97b754d9, + limb3: 0x107d126f58ec9e97c6cc8e71 }, w2: u384 { - limb0: 0x2567b008d6cfdd20b1275642, - limb1: 0xd024a5d367cab58b43deef20, - limb2: 0x258cba1632d260a426d8cfd7, - limb3: 0x11d83faeb2196db61e6c1c2f + limb0: 0xd2ffb5a8958fd358b9a0db9b, + limb1: 0x402808c39b52369ae59fd83a, + limb2: 0x3fe0960e8aa72beb2fa961d9, + limb3: 0x166dc226ccb9eff556343907 }, w3: u384 { - limb0: 0x34ff1baefb779e9d02451526, - limb1: 0x43734c384ad3e80ddb0c4d20, - limb2: 0x9e259caf289435cf24eb9c3a, - limb3: 0x197cfd982a139f106b67bb07 + limb0: 0x8df0689b8854be488ecb991, + limb1: 0x4795a4cc43a8d4530c1ad931, + limb2: 0xb3bc8527ab33e10f80cfde20, + limb3: 0xba7ae8be240e9d11a287d8b }, w4: u384 { - limb0: 0xcebba26851635416cfe9bcf, - limb1: 0xf50a5b08a010716ef3310aa4, - limb2: 0xe86363e9cd0c311e93028dde, - limb3: 0x17c5e840e6f39bcecf2e48eb + limb0: 0x7f368c6c241b048fb218dbb8, + limb1: 0xa2476498a10081bfa027924e, + limb2: 0x56b88e4492e6f0c99fa165f0, + limb3: 0x18a38fa4ee9f26ba78fec53c }, w5: u384 { - limb0: 0xb0c058c7f39fa38aee7be968, - limb1: 0xef52a25bdd84d57d5f3f2be3, - limb2: 0x4870e30ed51cb24b2851f555, - limb3: 0xdb5776a4677e0cc068d9102 + limb0: 0xe98903321b25313c95f003dc, + limb1: 0x31f82952f9329bd9368402e7, + limb2: 0x54ae4abaa3d2432318e04599, + limb3: 0x128f6b10489dc4631361966f }, w6: u384 { - limb0: 0x64190719c42162352e7b326c, - limb1: 0x4de6bd97971e9499676f59e6, - limb2: 0x2cf519b5acda3db53e352ab1, - limb3: 0xaacb5d1f72575a4d1609068 + limb0: 0xd6c9252e840a0651da685774, + limb1: 0x20c689e5be6b3d7db49e75c1, + limb2: 0x49de02ce0f57209e965aab87, + limb3: 0xb84356ad3a02a7a23840580 }, w7: u384 { - limb0: 0x137fc746bd9ae606c52af772, - limb1: 0xbb494dfe998a79523cb6d281, - limb2: 0xe72791e384c62667fa4648e2, - limb3: 0xb4a0babc27754278ac85e24 + limb0: 0x4feb2265d9e9cfe5347bcdef, + limb1: 0xdbf93707cc036c505a681a7f, + limb2: 0x991dae2fc5278d2e4c49b442, + limb3: 0x581e622fe997190ffcaff05 }, w8: u384 { - limb0: 0x310eb1c3659daaae193c2ec2, - limb1: 0xf83fa1dc70dd71ce7a8a6f0e, - limb2: 0x2bb871cf5c3bc72239201a34, - limb3: 0x10011dc6ac2df0ef1dae7823 + limb0: 0x4fed4adee961344d7de4ce04, + limb1: 0xa2179aa116019af6aab8119, + limb2: 0x390cfa09d93c9cf5d45a6f51, + limb3: 0x301f95a1cad02ce95b9e7f4 }, w9: u384 { - limb0: 0xd6ac7814bf7f6ec2093b4bc1, - limb1: 0x190d9f1f1f3e1cd596f6d12b, - limb2: 0xc5aa935dd6e127b778dbc1ab, - limb3: 0x18364df17a009212932ade74 + limb0: 0x839f077e7f1268f3969297a, + limb1: 0xc6678bdf10aac686ea78af9e, + limb2: 0xbded8a9b29e5e041ebcc7d56, + limb3: 0x16f210725bf2a00ce33bb7ad }, w10: u384 { - limb0: 0xcc2d3d0628d1123035a32c6c, - limb1: 0x80099ca7d91885697897c623, - limb2: 0xca13de734f004607e606d32f, - limb3: 0x571cada7b282c799a676a37 + limb0: 0xa0b68df81c8f7dce35651343, + limb1: 0x948b8def6ecf0f2c1235607b, + limb2: 0x9cacf2c2c4cebabc980ba63c, + limb3: 0x88eb934296e671e6ca4b0bd }, w11: u384 { - limb0: 0x3d2eb153934209ba76b679be, - limb1: 0x90847cf06e119493635244a, - limb2: 0xe60094ba45fd10ead77b85cc, - limb3: 0x15223a366a5730ba8e3df07d + limb0: 0x5d277be91e70605270b0736c, + limb1: 0x31a5c600c967c11668a20a8e, + limb2: 0x8ca866246a7e7d273c67c89c, + limb3: 0x1717a1fd9cd5ec3784a48c7e } }, E12D { w0: u384 { - limb0: 0x5948725e1d867457641909a1, - limb1: 0xd7f4858a650508ec02173b8f, - limb2: 0x25d361b814bf1dc5641feff6, - limb3: 0x11588929a1b43faf0a121aba + limb0: 0xc0cf5bb3ddf86547fe00b03f, + limb1: 0x261d5fdf16216b0b5b2fd0af, + limb2: 0x5090c7ece64dea3b6ef1fe9c, + limb3: 0x127241b7afea2d881250e65 }, w1: u384 { - limb0: 0xc2624e57525eaeff3a05d019, - limb1: 0xe67ff59fc4fa1e5fe5da998a, - limb2: 0x74e9ddce957af4449ac0cfb8, - limb3: 0x1588e918bbaa1d6fd366f3ee + limb0: 0x6e263d81f4a3f1c877c39333, + limb1: 0x1410d9bf499e755eea959c02, + limb2: 0x6ae0b4fa4bdabd77d6114c95, + limb3: 0x18b34ace95b722dd2f0913af }, w2: u384 { - limb0: 0xc23ebab3372d5c82793e9234, - limb1: 0x6981739c06a819d5869d507e, - limb2: 0xdd33a51c8e5fb81eb62927ea, - limb3: 0x19c64a08a8a3a802e3ec8dae + limb0: 0x9e798a325b9b9324627d90a7, + limb1: 0xe44be7d37275a6b9307a4d70, + limb2: 0x60a94c03db1b4341044162b0, + limb3: 0xc5e0af70498faeb66e96c7e }, w3: u384 { - limb0: 0xb3bb8a9da972afb55fe55527, - limb1: 0x44df38ef432b6856e099797d, - limb2: 0x6ac6b0f38f2b4cd371af99fb, - limb3: 0xc4a0509b644c3440db6a09a + limb0: 0x62c3ec64962f4b5dfd4957e2, + limb1: 0x175b2e34bc0b79de8b26e5ac, + limb2: 0xd00c44dfe200edc1823d4127, + limb3: 0x1f9c390217fc2eab214ec8f }, w4: u384 { - limb0: 0x704939fe36e24d43084b3aa5, - limb1: 0x622690e1c49814c6ccfcf56a, - limb2: 0x50900772969642f27c114564, - limb3: 0xa6f8ba4fb9b04713a20c640 + limb0: 0xca1db3d196ebee4afcb49439, + limb1: 0x76c891130d535411b8d13bae, + limb2: 0x1346242621dc20c966481630, + limb3: 0x62a4a8737ee4ed122146323 }, w5: u384 { - limb0: 0x4e31efa5a212761af772348e, - limb1: 0xf62d26b7cec1ba4699652658, - limb2: 0x6ca5a79fc2fee424d8bf8, - limb3: 0x242680fd7064b67b87d495b + limb0: 0xd89259ce24c1bc3c80b4c31b, + limb1: 0x6916e85ee261583718b5be9c, + limb2: 0x614b567f265ccea1c3bf6c88, + limb3: 0xd63901d756cb9c4f6e4ebf }, w6: u384 { - limb0: 0xa0fcb0f49d504b10e0433879, - limb1: 0x185d1e99b75465c2749b5e92, - limb2: 0xe42c4f0e9d4bb8c23782e47c, - limb3: 0xc483930cd2439ba08028b24 + limb0: 0x2854083be3f609fb5747a0a4, + limb1: 0xf9363f130c8a061ad4454dca, + limb2: 0x99fa1036b41a93c9bb5f04a5, + limb3: 0x10be26b58c1e20556bf90eca }, w7: u384 { - limb0: 0x6d1fe2b775998749b372ae10, - limb1: 0x3c9ecc677acd2dbfd6b44c86, - limb2: 0xc7b2ce1af3d0ecf56b0ed73b, - limb3: 0x82393ff6a24c8b5899af6aa + limb0: 0xcaa7afbc5dd33d0090d478eb, + limb1: 0x33bac5729659b2886831c90e, + limb2: 0x8c228f55fb3b16a6089cfc9b, + limb3: 0x1425aa18228f951444e69bbe }, w8: u384 { - limb0: 0x2e68e9082ce797bb98fd8d1f, - limb1: 0xada917b3c3745e76396c0bd3, - limb2: 0x911825f4e998650bc292a325, - limb3: 0x137bef61ebb8af7b9e3e1e93 + limb0: 0xbd8aa0ce83f76fa3d6195952, + limb1: 0xa49e1c3f96658b0c6984d0e4, + limb2: 0xdfc5f4d167ad19270de11602, + limb3: 0xe8f8eb7f390acecb765644f }, w9: u384 { - limb0: 0x55b02d562d3d5f33a677c903, - limb1: 0x6e0661350461bd11f5147c80, - limb2: 0x1bf3f49c178a44890fe4c176, - limb3: 0xeffe020bd885e497f65b287 + limb0: 0x7fa94e38426b019637ed329d, + limb1: 0x8a030e40d455c8eeb294aee7, + limb2: 0x62c6e010ad31dc3e8cdfd551, + limb3: 0x8d9ba6f08f065d3d6b80ab7 }, w10: u384 { - limb0: 0xbfa5377fd2a0948533644b2d, - limb1: 0x7bbe6b59847461892841118f, - limb2: 0x523ea6f90d3f61934a439b52, - limb3: 0x1329058b567b5fccd0526e60 + limb0: 0x6b2cb77e359c675839c57ed8, + limb1: 0x4ece0febc3fb31c9c799768f, + limb2: 0x20e25d25010860a327da0640, + limb3: 0x12eb1699559e1e7b06f3d0b }, w11: u384 { - limb0: 0xe75fe9ed77962e485586b681, - limb1: 0xc8eca398311593cde63bd152, - limb2: 0xb161f06e4185104787b9f4c9, - limb3: 0x2e64bcf33ebad750f23b084 + limb0: 0x5fcbf346dc790bb6c9e48356, + limb1: 0x8e7801394a1a49b06320bbd9, + limb2: 0x7ac8d93c05e1831764f8daf5, + limb3: 0x102edca82e8f1857ed209bd } }, E12D { w0: u384 { - limb0: 0xcb05a845b4694c8404fec4df, - limb1: 0xdc312980d17f45710a1ef035, - limb2: 0xea2217cce9bea13aeaa9458f, - limb3: 0x11208b8fe4b5196e7cd5d94a + limb0: 0xb15ad72f4fcb2591d1abc46c, + limb1: 0x74d4a9d3481b818b70fdb5eb, + limb2: 0xf8210ae9f2b7df0516a267ba, + limb3: 0xd5a2800ca938c6f7c3113fb }, w1: u384 { - limb0: 0x90c7b7582ec051969bd72957, - limb1: 0x3d23017e85e95cf01ffabaff, - limb2: 0x72d75edc1fce258e600c13b9, - limb3: 0x1774c37b60b1b2cd7e7ecc73 + limb0: 0x38b065590c2e60fe7f44767f, + limb1: 0x7eecabf14ae695b8a3360ed8, + limb2: 0x9985104a902c20936ea57238, + limb3: 0x124695215443652ba7e6cf22 }, w2: u384 { - limb0: 0x837adf418b814e3c769e5c77, - limb1: 0xc634a93993a4fa418b5965c7, - limb2: 0x6cfb67e14ab3081f9471832e, - limb3: 0x57d048b484c780774971a5 + limb0: 0x1f9841b55fe2c623f1078c67, + limb1: 0xb9c8a90b95c1f3344984344d, + limb2: 0x2a340ad73875dff79e1352ff, + limb3: 0x18bd138bc116843c32beff0 }, w3: u384 { - limb0: 0x5c16d5bf935b875581594d1e, - limb1: 0x4b7e39106e99649e57c0d01c, - limb2: 0x546e159c018de6221135bccd, - limb3: 0x139a7f5cf52fa816c9fef433 + limb0: 0x56c68b860cbcfc33006bdf0d, + limb1: 0x52813de6808192f9b0c7811b, + limb2: 0x4fc72a2832a54a2c1377aef, + limb3: 0xc240bb809dfa30523851f3 }, w4: u384 { - limb0: 0xce872ed3bad5a4ebd4a7faef, - limb1: 0xbf24cdb0bdf594624afa126c, - limb2: 0xbe37210a0859111d014f8f70, - limb3: 0x47abd2e6ea65179f5090352 + limb0: 0xaf85594768f62ada3aff44ff, + limb1: 0xff3854a044fc5e69851ba430, + limb2: 0xb47e8573d120728f31c90440, + limb3: 0xcaf2c186c804f855cfa2c4d }, w5: u384 { - limb0: 0x347040e4f6856f555d668a5d, - limb1: 0xc63a63e018a5ad25ddd0299e, - limb2: 0x4887a7611c7bd2a773cd879a, - limb3: 0x9bb0af1be3722a80df10f80 + limb0: 0x4e380f88b214dbbab34dbebb, + limb1: 0xa77d375a8f3582d99d8e771c, + limb2: 0x7ff0478d6f4c30522d5cf061, + limb3: 0xeda4fddf15c6de3928a7494 }, w6: u384 { - limb0: 0x2e7362a6b70a707d3bc2e1d0, - limb1: 0x376db1db546577030207cf, - limb2: 0x8082ab99717b3098e298a4b7, - limb3: 0x16fc8315dde33bf9fd0953c3 + limb0: 0x53c092ef68bc25c37d25fe15, + limb1: 0x3fd91dbc6dc8c4ce23ddfec8, + limb2: 0x2f533a2c53b9bc59f7da808b, + limb3: 0x54ea204f43fc3cc511e2771 }, w7: u384 { - limb0: 0x5f2e4b10d6f658cd6b95f36a, - limb1: 0x8a53bd48666526b876ae3222, - limb2: 0x5ebe31bee40d83f626c855f, - limb3: 0x14642de33fc009a26889c885 + limb0: 0x874484b23512d69c64456edc, + limb1: 0x4bae99896f81ad7e8b33986f, + limb2: 0x315ae13e8f7eef39bb5fc6f3, + limb3: 0x2e3ddb5c86a0d7ffa46ce19 }, w8: u384 { - limb0: 0x1b436fe777453cdf36635830, - limb1: 0x4c6024eea482910d3f2eb5f2, - limb2: 0xf9050cb78e6ae934882e8551, - limb3: 0x2c08b78139a160346fe2ebb + limb0: 0x6ec7f3337526ebcca0cd7a9f, + limb1: 0xd48463f9f2d1f19c3853fbb8, + limb2: 0x7e348340df28aef8d2b5b0d, + limb3: 0x7180eed89e074ef58739ed8 }, w9: u384 { - limb0: 0x645e7ce0138e2b0bec3cd645, - limb1: 0xdee5e358e30449193c5a127, - limb2: 0xf51632d611a278c3adf25f09, - limb3: 0xb01c89091f8dda2c50ea78b + limb0: 0xbe6bdfc582a702b560a6e04d, + limb1: 0x592fe00300d974cb544bb609, + limb2: 0x5585618cce120a0ca8ae3b06, + limb3: 0xd8b2fbd00859855d8059c04 }, w10: u384 { - limb0: 0x67fc0fef4490d655256dcd7a, - limb1: 0x58265fb7b434a473a9d6f3b8, - limb2: 0xb587b66299859a039dbe39ca, - limb3: 0xc55f46f0509b43ed995c0db + limb0: 0x14bf3cd112d125e4e25a3e65, + limb1: 0x811a1021fa6981370e82b3d3, + limb2: 0x2458fd0cced7cade1c669de9, + limb3: 0x7c3ff3ae5fd17f6a1ce0359 }, w11: u384 { - limb0: 0xd616edc9806b7895ec86c15a, - limb1: 0x83260307f21c23b5951c1c7c, - limb2: 0xcc51dbc9285e4defc54d74bb, - limb3: 0x93af0e751d8ceb1af763ab6 + limb0: 0xf1c60ca1b056ed5abf67e04d, + limb1: 0xbc819ca227d2d48d19f96458, + limb2: 0xb390024831387ab08e67c776, + limb3: 0x5f4a62df64a479d75594956 } }, E12D { w0: u384 { - limb0: 0x32a18b7a1fc88b7e4bb76c42, - limb1: 0xbed53231c46d5d154c271d7f, - limb2: 0x85d4b510b373238c5a5f7647, - limb3: 0xf8bffb23475f5e1843b7fe2 + limb0: 0xf65ce3527d75962dfe24a3f9, + limb1: 0x91e01eaad05aadc43322e7bc, + limb2: 0x1749b8efc10800f0117b9ada, + limb3: 0x63f0bc72657931f9c4c0ec6 }, w1: u384 { - limb0: 0x867fda0f8dfebda90363cfc1, - limb1: 0x3c088084733df1d8f67927cb, - limb2: 0xd803d47616da2113b0015808, - limb3: 0x9c72f92c3a9b643cd6dca73 + limb0: 0xb0a176acec5241ab58a92fe4, + limb1: 0xfff6673048e856befecc052f, + limb2: 0x3aabf57172cbeea4e5656e93, + limb3: 0xf8b8f049c1f37ea1b91f865 }, w2: u384 { - limb0: 0x4a2214f223e59a981ecd5f81, - limb1: 0xf5c792552acf65b0a8be9d15, - limb2: 0x8e8c0ef01e0c7c8e404bf081, - limb3: 0xfadbbe45d72a46999d19f17 + limb0: 0x591f822c01335afd1788ae6c, + limb1: 0xacb21dac6272701a054407c5, + limb2: 0x27c93a2906618dc8eac1c17, + limb3: 0x135348203e2ab3a8030bab8e }, w3: u384 { - limb0: 0x4272c39e719f6c20092f8715, - limb1: 0x6eca96aa6dada28460d68110, - limb2: 0x4519249fc8fd64b866e27282, - limb3: 0x117f92ce85b9e1125059baa1 + limb0: 0x83f8664aa234b6ef1bee1838, + limb1: 0xfbe202c883895731f698255b, + limb2: 0xb8ab5bee5b71245380d5a22b, + limb3: 0xdd0f12d1fb706b63a83e4f6 }, w4: u384 { - limb0: 0x83666ab216a24b196bd36717, - limb1: 0xf10d6cc74c348d688139bac7, - limb2: 0xe564850f5a2f9cad74a2b000, - limb3: 0x19a26de5ccaa9a5ee8b7258e + limb0: 0x6c00eabfeaa8a1e18d743643, + limb1: 0x35082c7740b28bed8c2911c4, + limb2: 0x705d87b2509c7563f2f9cd83, + limb3: 0x355565388006efda83748a9 }, w5: u384 { - limb0: 0x5183029a5dc9b31747dc80a6, - limb1: 0x2b182959535b78af04d75db9, - limb2: 0x5cf336384d9785d28efa4b6c, - limb3: 0xa509603c63bdcefcab6978a + limb0: 0x721da2148c278de04ea6b48, + limb1: 0x1223b5e9df2c7ce207e3cb29, + limb2: 0x9fd921169ebea2d627e0e2b4, + limb3: 0xca348e51467605b1891750f }, w6: u384 { - limb0: 0xf4a7e22e4c6b99ad7fe5f82d, - limb1: 0xac4f359b9ee8c29c67dfdf1, - limb2: 0xfbd8787d68566058ada6d65e, - limb3: 0xacb5073158dd1d295b17f6a + limb0: 0x567eebe72695309b8b9fa49a, + limb1: 0x9b2ed7c13fcd5218178f6c36, + limb2: 0x69db0caedd82eb26178db3bb, + limb3: 0x10b37cb311f6f5db3cf04ead }, w7: u384 { - limb0: 0x455c911c113c493c330b09ca, - limb1: 0x42a99a6f5befbfb85ad35eef, - limb2: 0x2be7d0556aac7c7976e2f283, - limb3: 0x198d12a1cd832d420a66fa87 + limb0: 0x1c36184bcddcb3bef030a967, + limb1: 0x30f09d8bdcd920ef630b29da, + limb2: 0xd99cd4ca8ee16996294d6867, + limb3: 0x14b4ecde21559c315401a904 }, w8: u384 { - limb0: 0x7f53a624b70fa2baf7176df1, - limb1: 0xcc6c515ddac717bdd7565a1, - limb2: 0xc0457f52420c033033b1509b, - limb3: 0x95f60395a3a4c4e1926ffaa + limb0: 0xbff20fece07ace4ed15c0801, + limb1: 0x8c641efedb23644ab9dac1b6, + limb2: 0x65ed2f82940530717a3a8f6, + limb3: 0xd6faee36c1be2a6bd80aad3 }, w9: u384 { - limb0: 0x2083c0a5c7d00ca3ab4a30ec, - limb1: 0xe21540016ddf62cea9d8c826, - limb2: 0xb492d4990f9e4a28ab429a4c, - limb3: 0x804f831426e06274ab5e72a + limb0: 0xa45919c319e86e4c7cf0a9aa, + limb1: 0x2c3b3dbcd368facc0fa8a97d, + limb2: 0x18bb74bd046abb617241aa0a, + limb3: 0xe6a08b13a47fee0dea5d182 }, w10: u384 { - limb0: 0x4dc92398176fe586a1b02af4, - limb1: 0x7508595d5c9af06848c6f5cd, - limb2: 0xd6c92556399687f116be1cbe, - limb3: 0x4222baa5e1bcbda6ada93ce + limb0: 0xad46273f102a1a28b7ea1210, + limb1: 0xbd6857d74c142f5b0750a4c, + limb2: 0xa179b4418056dce93b5d5ebe, + limb3: 0x8edde64f71a1e7a8d5c256b }, w11: u384 { - limb0: 0x494dbb899ca917defb002ede, - limb1: 0x61c98ac4add162c1825bd89c, - limb2: 0x987f20c4e2574be599a1acb3, - limb3: 0xc380c0cdf6347f3afe2d54b + limb0: 0x40c84a2231765e3ccdd1fee2, + limb1: 0xe23fa47d96e3019174e1e708, + limb2: 0xda247b93ca36f321d7e891a8, + limb3: 0xf3dec99dae8597e09aa6441 } }, E12D { w0: u384 { - limb0: 0x8ab0a0a7e1fde6014f897197, - limb1: 0x334b8557ec31f25df6b47fb3, - limb2: 0xc9c94ff06b294460261bcc53, - limb3: 0x15c56635a12c3dc3ff444856 + limb0: 0x5c071fe7249396da8890e55b, + limb1: 0x88bf9396d97ac96c8ca065b9, + limb2: 0xaa1bd31d7ac0d0063932745b, + limb3: 0x4f008c1e4e917d1a0388386 }, w1: u384 { - limb0: 0x4d6be117daa494c0e7de8e46, - limb1: 0x26e34aa07a9bfed51b90d861, - limb2: 0xb94876bc36c6f64d08d2332, - limb3: 0x1708c57aafcde1643d682b1d + limb0: 0xde583cfef9c2b34ea6b3a860, + limb1: 0xe79957b07ce9cf7cc9d7b0fd, + limb2: 0xf9e5d92728e5fee33eb8a4c8, + limb3: 0x7921cbfbdf11fda5479b251 }, w2: u384 { - limb0: 0x8f669d90dfecf16d4b7fbae5, - limb1: 0x142f92458302a5c0437b013b, - limb2: 0x704acf2e4a1f11142c2638b4, - limb3: 0x67259a40365f1c7dd1b9cad + limb0: 0x7fcb1d0ad133dcac3db9691a, + limb1: 0x8b34904f9f4147431e803592, + limb2: 0xaa188d2c64f4ffae74679611, + limb3: 0x6311dfa9565d635c03e0855 }, w3: u384 { - limb0: 0x74f9258d3f02e19bef2c4725, - limb1: 0xfbf7ed1b56bcca05835c406e, - limb2: 0xa6591605f8dfeacbfcce393c, - limb3: 0x8ff9e6be24bb4dc19d93b74 + limb0: 0xc6e8d1386e240defd0c8b358, + limb1: 0xd916b51af6ef639109f7f064, + limb2: 0x84f668ddc480ae7a6282e8bd, + limb3: 0x14514e50d271db4c38f25c17 }, w4: u384 { - limb0: 0x1b99aa1c3398d31108f57c6d, - limb1: 0xd5ecc0599216098763a81747, - limb2: 0xab8ad27f28aad944829a3245, - limb3: 0x17378ad77f75ee5b0fd86f62 + limb0: 0xc05129d365f445bca7481a4c, + limb1: 0x732f03651202c5d590aef375, + limb2: 0x861a12d79020a018d52dfb3e, + limb3: 0xf5779b069bb04e8aa65b1b0 }, w5: u384 { - limb0: 0x35d0eb4e4033724049d4c15a, - limb1: 0xd8887fcd9803015ad80ebe12, - limb2: 0x32e3e05a97056da69b54bfec, - limb3: 0xbce310d3527f03b7815898b + limb0: 0x49e85a71966f4085bb96a561, + limb1: 0xa90812c10e7c338efd62e260, + limb2: 0xb4dc3c8f6b473eeff051c55, + limb3: 0xf162180ccd92f8be4baba3 }, w6: u384 { - limb0: 0x7b6836403920453a79bd4441, - limb1: 0xe8fa10ce402c9053011e236f, - limb2: 0x3af5fa8057f4cb2d34b22af5, - limb3: 0x5b3ec5998bf709aa3cc4d07 + limb0: 0x1fc53cda9e145b9f2fc0958, + limb1: 0xbc91a2f7fe6c04e89954a778, + limb2: 0x713a21c6c35bc119e06027c9, + limb3: 0xb945c61f5ef234c3f61368b }, w7: u384 { - limb0: 0x66f5b337ede1b8ee6eaeed19, - limb1: 0x635dd902401c284bf75b5f02, - limb2: 0x72a3bde4fccc5a615d0f95d3, - limb3: 0x3673f3bfc49de95faea7741 + limb0: 0xfc851571d35721bd06ad24ba, + limb1: 0xb0cc8ed633947c99cc26b4bc, + limb2: 0xa96709e905b2f0a160cc731, + limb3: 0x13bb465d841c0df6abe9d8e6 }, w8: u384 { - limb0: 0x85b1f683222cb0c5ee6bcc84, - limb1: 0xeb6f000ebd5e3300b726d713, - limb2: 0xff6745580ba6b6be48db1ec6, - limb3: 0xfed7fd49a64491bc8e32c17 + limb0: 0xf420c15aaa99c651e4dcf96f, + limb1: 0x27cf47ecb908e16bb29a5fd, + limb2: 0x5c212064d3152d60db688c4, + limb3: 0xf132a5857b7a6c50640125c }, w9: u384 { - limb0: 0x4404114fbb1042dcd953a455, - limb1: 0x35c8283afdf53ee368920901, - limb2: 0x8591c94ca1280cbb0bdd0164, - limb3: 0x54cdaf789922492807cbc7b + limb0: 0xd596517bf0328136d09b30d, + limb1: 0x731fc3434888560bb4aa0036, + limb2: 0x89171b1a244c1520a1e52cb7, + limb3: 0x13a4065c684afc1509831b34 }, w10: u384 { - limb0: 0x73555545a3cbd390801cd6bb, - limb1: 0x7a373e84445265cc30c3883c, - limb2: 0x9d6d46a2c601c6d5a30c252e, - limb3: 0x1621045719f0ae7af34da13f + limb0: 0x62b192ba8953068ad2beeb13, + limb1: 0xf55df8dc4798f0c1303be1fa, + limb2: 0x5586b58227a76995ce18ab1c, + limb3: 0x1765d0dd29b138f1e15317a2 }, w11: u384 { - limb0: 0xf1946543c6df8e810198a873, - limb1: 0xe40834debc80ac45768d825e, - limb2: 0xaf9495fabb07ea22a500f3eb, - limb3: 0x401c2e2e838095447ac1770 + limb0: 0x194160a75b09ead5c093d1f, + limb1: 0x55458b207983cc60044cd893, + limb2: 0x2ec1346ee6df706c64efdd21, + limb3: 0x1889fe7577e0886013ee76a3 } }, E12D { w0: u384 { - limb0: 0x6330abfb9c63d80e65830b58, - limb1: 0x4fcd921ba63b745f908fee87, - limb2: 0x8ef9ecee6dbdfbb851920aba, - limb3: 0x18e41070022f7346f4769b71 + limb0: 0x83a64d1fbd12b2105fd006de, + limb1: 0x1fed0ced58ffc1247b300226, + limb2: 0x40c7a77d43046a8dc496e8f7, + limb3: 0x1273d35b2a7041c0c8e09fa9 }, w1: u384 { - limb0: 0xd18d23efe107e45ab1a41a95, - limb1: 0x8c8ed18843222b79c9f8f3f7, - limb2: 0x13f43ba3bdc848a9e18cdccd, - limb3: 0xb6b700dc043f61435798192 + limb0: 0xd1bc518cb9f97989e4518323, + limb1: 0xfda16e1ba8f5eee22baff865, + limb2: 0x2282715ec39be7c1d9c05abf, + limb3: 0x14ca6298addcce08172693e7 }, w2: u384 { - limb0: 0x50a3a455da02e76b44e7e970, - limb1: 0x3cfc82a6b9f678282f222135, - limb2: 0xddfadf5d5bd4da8917c33b0b, - limb3: 0x12ad62ed7d1cbfbf8fd9be8a + limb0: 0x581296f543f611452833a9af, + limb1: 0x8f7d57a9ccf015a529c0274f, + limb2: 0xf4cec85b20feb49320169086, + limb3: 0x7294cb9fc3914e72a74f677 }, w3: u384 { - limb0: 0xf69e3c3c36e6917c0ce25914, - limb1: 0xa441b796a9711192afacfe01, - limb2: 0x20044e4b06ac4fc74fe55e12, - limb3: 0xa097e6097f9de35724d3fc2 + limb0: 0xa0d1c30484f8d800aa47cf33, + limb1: 0x7896af58662828a8134758f5, + limb2: 0xf8bf1ed82532b434dd6745f9, + limb3: 0x1480045d9cc01e11e67e1744 }, w4: u384 { - limb0: 0x618c46432bdfd75b7423a8d4, - limb1: 0x44e826bee0e1fe22536d0ab2, - limb2: 0xf3d18e87c398a968c297d07b, - limb3: 0x21e4e1404b8235021ff4eaf + limb0: 0xab14069003747ce311deeda8, + limb1: 0x46aee3ebf1505f27b11a43d7, + limb2: 0x441e3585d1d14f573a862938, + limb3: 0xa693eb56c06023e67761b5c }, w5: u384 { - limb0: 0x83fbe9d3c82f5e42e4da0e37, - limb1: 0xd5fd70a9de7d678a1a60963f, - limb2: 0xdc35e447b69b13388aa0ea50, - limb3: 0xcda3a0558ad9d17487b7224 + limb0: 0x3b5aa1d13ac4ae07439068e1, + limb1: 0x6bb8a4c24c1d85a23c028385, + limb2: 0x356f653ce96361ec3cb08dd8, + limb3: 0x19470f3488d1b42c710e0403 }, w6: u384 { - limb0: 0x55bf7cd75ead5cc3658d10f8, - limb1: 0xed6c39d85197d3e886733f7e, - limb2: 0x693272d8a38c8cbbec2b3202, - limb3: 0x469ecb6d543923d3b184fe9 + limb0: 0xc6d25ab33b45985888bbb03d, + limb1: 0x2026eb4eebc11b2af25c91fe, + limb2: 0x84aec238c5ba5499a91244ed, + limb3: 0x16ff44f85dcd5017d4f39ab0 }, w7: u384 { - limb0: 0x43600a41d8cd8e557842a857, - limb1: 0x53260cee22503595e3af0017, - limb2: 0x5203058f647bdaadd6fdaed2, - limb3: 0x7e091bb07df9e610aa722dd + limb0: 0x6357ebc232777ec4f0019a51, + limb1: 0xb2cf574426b91619de6260c7, + limb2: 0xf3c73b5a7864f2a9e9df5921, + limb3: 0xac8b2e81bf45ba782379164 }, w8: u384 { - limb0: 0x81208faad8ab00bdee725f7c, - limb1: 0xe310894f592b4d447110dce7, - limb2: 0x8edf12296ef3b7dacd51443, - limb3: 0x69bb5fc58595b230ff25c7 + limb0: 0x78111c1a35a4b111e381ee5b, + limb1: 0x87cbda1cc35fd4ffab98097f, + limb2: 0x3785ba57e275cc071106468c, + limb3: 0x887d372d0e2fe0e53316176 }, w9: u384 { - limb0: 0x219695f75b8b6fe2bf1aff27, - limb1: 0xb8a8c364e14f5e5aa5b5494c, - limb2: 0x3c4e1de0757129e0b05c9f23, - limb3: 0x1722b3d5bbbc23acac6054a + limb0: 0x4a426c4f5b404cf8f9058f36, + limb1: 0x6f4e2e0c8dca076756efa639, + limb2: 0x574294ee9354db253276ffb9, + limb3: 0x16453113da3cd9edc0f268cd }, w10: u384 { - limb0: 0xf358aa56816c215900344355, - limb1: 0x1e5c665b09f3df44afc3c92b, - limb2: 0x802a949a2b04783aa6365234, - limb3: 0x186e9fc3966f0cb4c2ce22a4 + limb0: 0x980837e72a53e6da4c4922bd, + limb1: 0xb4f32169b47b9f2ab0864b73, + limb2: 0x85967069c73e3c636b70e667, + limb3: 0xe5e15629c61068bb9a3bf3 }, w11: u384 { - limb0: 0xe7ff0c5c050f6c881b862d9, - limb1: 0xee833ee82659ec54245d7cb8, - limb2: 0x6a031c83a08595c8785bc173, - limb3: 0x2d945ec5b2f7ae172a73c29 + limb0: 0x6b4e751b6afbfdc1286e2037, + limb1: 0x2dceab2a8fec6a14f9f2a926, + limb2: 0x67ac3d207965577ee1e47a15, + limb3: 0x16526e02b5ea0131ca58ab70 } }, E12D { w0: u384 { - limb0: 0xdcd44aab34561de4d02951b0, - limb1: 0xf764fac8d10fe23c985f95e3, - limb2: 0x97efb6679be322e92b338e24, - limb3: 0xbac5291041f13e8022f49f8 + limb0: 0x17309de18596c600420fa7f1, + limb1: 0x6ecfdc0a3cc31fcaf8050eac, + limb2: 0x609fdb67c2d4bbd1da92d235, + limb3: 0x17a9bc9c95045b9efdc7f8db }, w1: u384 { - limb0: 0x1766867bfc38c2a9ac9df551, - limb1: 0x3dd794f1ea2055e21674a71c, - limb2: 0x8b2954c9c8ac1a0c2d53f6e7, - limb3: 0x75d1501e3574bc6a256d588 + limb0: 0x1c460122fcd6b6ece46d69fe, + limb1: 0xcddd726c39b803c9d61e2ff4, + limb2: 0xb314bb778d464e80e5137e80, + limb3: 0x15f7cda48b321f00b848ba73 }, w2: u384 { - limb0: 0xb71575a9484f502c3d9e6131, - limb1: 0xbbeee43751240a7f475bc76f, - limb2: 0xe44aa532c8b6b7438c9c0c38, - limb3: 0x1978290841c33babb5e2fd20 + limb0: 0xdc79881f76b18acaeca0693a, + limb1: 0x5ced5bc216155207131869a5, + limb2: 0x25abd10b17bb130a7edae34, + limb3: 0xdc3c019b632e3991d4a6b8a }, w3: u384 { - limb0: 0x2f137e7e3e000c08ca21b4c9, - limb1: 0x3b8e807e39f6a5ac4503874a, - limb2: 0xf7f42b32f55845e1da67a948, - limb3: 0x2087d5f7a4c72f5c265b73 + limb0: 0xbfb097d9e966f087325bf903, + limb1: 0x3fb4262eebf93492bbe3ff8b, + limb2: 0x997195ae28496678b778b068, + limb3: 0xb656130b375669e276ed9f1 }, w4: u384 { - limb0: 0xa2f8aa05c7ddc2eb60360861, - limb1: 0x9820fe278063d70de2482b80, - limb2: 0x3377cd35e3b9da71b921fab9, - limb3: 0x5f3c5f5b5d85052120eff5f + limb0: 0xc537baabbac6f92b3d4c43ee, + limb1: 0xeee6011b5932150b96520428, + limb2: 0x1632d8218fb9bf323d52bc24, + limb3: 0x1206adf0e4af46155081e668 }, w5: u384 { - limb0: 0x1ed29c932ffe5cb0715eeafc, - limb1: 0x2bc336b232156f4081b4ba68, - limb2: 0xa5552fb51f4ea3ffc82afb82, - limb3: 0x58dee477faeee4a67c79688 + limb0: 0xf12a97149fe018fa0dd0605f, + limb1: 0x27ce7eaabf9c6f26f66d2e41, + limb2: 0x869e24a6417b5fbecfb2ae7c, + limb3: 0x15359c4c6224b1be86a615b0 }, w6: u384 { - limb0: 0x62489417f1d76bc2b2d1d3db, - limb1: 0x36724c43501674dcc931982b, - limb2: 0x72f45d05b2084b841a0315ff, - limb3: 0xedb1fe5b069fb1eefa25966 + limb0: 0xc56549e245c6bbf68d09bc30, + limb1: 0x90446e06fd1130455ef711ac, + limb2: 0x343d611550a4e05dc84d901a, + limb3: 0x198fe7d93aad83e5f503de9f }, w7: u384 { - limb0: 0xc14a46c6e749ef72345364be, - limb1: 0xcd0c67d0599fa19b5d4601d6, - limb2: 0x2d71310ef78c2aba19815dfa, - limb3: 0x17bc3a016b2f7f64011a9319 + limb0: 0xb0c7c0f44e04ee29115cb4e8, + limb1: 0xd222e0c76f9d55a44b4eaea2, + limb2: 0x9ec62b435c34f660f31beca1, + limb3: 0x5b9706e9f1da4dd9d3cc2e5 }, w8: u384 { - limb0: 0xc3b955aaec0c5f3b63f4125a, - limb1: 0x83af43812bc76adbfeca6cba, - limb2: 0xdbccca79d1df0836bc28ceba, - limb3: 0x17af426b58f8b4aa12bdc82e + limb0: 0xf05234158a8a37dc15fec48a, + limb1: 0x31d75743addea81c0d768a59, + limb2: 0x460db2475e22f9cd60b2af15, + limb3: 0x9c8e0f3693a433d950421f2 }, w9: u384 { - limb0: 0x7afa11a63fd42bb2deb53676, - limb1: 0x2675c093b985f9a6dac94ced, - limb2: 0xfab43f61f127db00dba25cda, - limb3: 0xc974425e6c084ff03bee07e + limb0: 0x17b4ab8ab4d7825f202b8075, + limb1: 0x6cb9c1f003024631fa0a9500, + limb2: 0xfa9afda884aaff4eb0ff2eee, + limb3: 0x92e1623974d20acee9fa952 }, w10: u384 { - limb0: 0xcf6c05f35d557879e48fb6ad, - limb1: 0x7588ae3c1a2c4cda40d1be88, - limb2: 0x12dd466535d5c3de8f593c3, - limb3: 0x1026f8fb75530d4b8af73066 + limb0: 0x6c311178704be9f7e65ec330, + limb1: 0x432fab41537509fdc218bc65, + limb2: 0x12ee9a3189d387cff951a877, + limb3: 0x19a486fdde7a19ec3f4ea4ae }, w11: u384 { - limb0: 0xb294e2cc540cdd2303341e7, - limb1: 0x8bd5a040688a8df5d439a4ff, - limb2: 0x243fabdd2a76cabfe91859b, - limb3: 0x468d66edc2f31370d12e9ca + limb0: 0x848acd4e5e19ac8787ce01e, + limb1: 0xe23b95c772890cc36eb7edd7, + limb2: 0xa78e19bb81ea2fefc9e5ee40, + limb3: 0x98b9fa87c52256357e6ce9d } }, E12D { w0: u384 { - limb0: 0x53440a298ecbca3fbc37386c, - limb1: 0xf00c6c591d88c42fb884b8a0, - limb2: 0x495bd2ee24a12858ee5c030d, - limb3: 0xdfc7f7f9570c71f750085b9 + limb0: 0xb1832e7be4513791a1b5a318, + limb1: 0xdab8acfabf82ff15fabe8bde, + limb2: 0xd1448ba915158cf8dd685915, + limb3: 0x8a3480406ef8ab208c666da }, w1: u384 { - limb0: 0x8ca3e35927383bbdfbe4ffe0, - limb1: 0x6ad61bb53d176080628d5d90, - limb2: 0xb052483812426cface6e11e5, - limb3: 0x663cb7b179c851752f69262 + limb0: 0x7dc6f41df1fa7200a0e5046, + limb1: 0x82afd83d6d865f579b9d987a, + limb2: 0x3010fccb8d335ce1762c467c, + limb3: 0x12d4daf068c14b93bf91349a }, w2: u384 { - limb0: 0x77be9610b07ea3d0b048f1d3, - limb1: 0x9404080d29f31e1314de790, - limb2: 0x9f8c352d7713b75b5a56dfaa, - limb3: 0xc8df445cf5f1112f08e8374 + limb0: 0x53b9d0922336710ddf03e6e9, + limb1: 0xa2f7a6a8b7ea63dc7d3e5ce8, + limb2: 0x2bc0e8f29fedb1969d4e5f70, + limb3: 0x19f8ad2a13f5789efa24f88d }, w3: u384 { - limb0: 0x72590887ecd6b2371a640618, - limb1: 0x2785282cdbe7d7f176057dce, - limb2: 0x8c17b01385c095fc3f3b50aa, - limb3: 0xa337d076671f900e8b75a06 + limb0: 0x7fc2bba69df28a5e59bcf7e2, + limb1: 0x93d61d335ab812d0fb5713ef, + limb2: 0x86810bcd2b84909a86b9b8c2, + limb3: 0x5c4bd6acfb17dbb0de99e92 }, w4: u384 { - limb0: 0xaf0c2c439dd3d174a3436965, - limb1: 0x8ae52d0aa255c1b5f650e7fa, - limb2: 0xb9714ab1e40a8623ae38130c, - limb3: 0xf082ae42847988851ccad64 + limb0: 0xabc6617ab0841c6fdd54cf71, + limb1: 0x496bdff2baf9ba636d2800ca, + limb2: 0xb46135c83828d48109162fc3, + limb3: 0xbe70db79d790397b600b4a7 }, w5: u384 { - limb0: 0xfc4c43573f6b14760c975cb1, - limb1: 0x45b5abce156e08efb5ff5921, - limb2: 0xd59e9f80354536b329aeea41, - limb3: 0x13de37e0db87495d0718d54f + limb0: 0x3aa09c6a57d7e89443f7196f, + limb1: 0xd3c78490ef6a135ba4118eda, + limb2: 0xd35cf1052a2161b3d1d9311e, + limb3: 0x3a504798d0df370f6dc9e00 }, w6: u384 { - limb0: 0xce9bfedeaff527084353773d, - limb1: 0x784fee1767ebc4133121a983, - limb2: 0x8eeaf4d2380ba682387dbe18, - limb3: 0x156e7821eaaa1a0de05c013d + limb0: 0x946105209210749c1ad130ec, + limb1: 0xe6944ce1875edfee81ba5ac, + limb2: 0xe803f442e26a40d80220321b, + limb3: 0xa69d4ea6d1551c43e86ec33 }, w7: u384 { - limb0: 0x5cde06d820de78ef8dce1784, - limb1: 0x417f652a4284894cd47671c4, - limb2: 0x90a3f586cdc35f7d5347057b, - limb3: 0x16be8e6d8da96c9746e7eeab + limb0: 0x7725777b6dd3a778505d129, + limb1: 0xcf8f223a0ba7f0d56314005, + limb2: 0x50b6542d68bb7e41cbac597d, + limb3: 0x6773d995348c78185a125af }, w8: u384 { - limb0: 0xef10325a902dc8edd2972707, - limb1: 0x4853fbaf20c994d39be523cc, - limb2: 0xd9364b835250b8da531978c8, - limb3: 0x16959380030f303cd58ebbbc + limb0: 0x47dd4b505ece4e63c6a42ab9, + limb1: 0x47b66fcf40b4579f8e7dafa8, + limb2: 0xe1e00a837a5913248e2bc9ec, + limb3: 0x122e42c9101c0f785e0bf0ac }, w9: u384 { - limb0: 0xc5ca9b9a8d260d1ece95016b, - limb1: 0xce2677626ab65cf2ef7e4345, - limb2: 0x900bc538142487481df553d9, - limb3: 0x31d2f3864cd3cdd273fab68 + limb0: 0x320bc6a9543249df447ca30b, + limb1: 0xae128dc852cdae534003d880, + limb2: 0x2acf697d73ce229710a1db6f, + limb3: 0x169fa56b9fe0085cd1ec32e7 }, w10: u384 { - limb0: 0x408844ecaefe2ce2f376457b, - limb1: 0x497faedd96b90752259fbcda, - limb2: 0x8c22de4d653bf4e624cd7a0f, - limb3: 0x949f2321b9a6787f54dc680 + limb0: 0x9c3dc69b716e4c8b8a63f106, + limb1: 0x7b7677044476f901b21ea7b4, + limb2: 0x42e2af7bb87210cb120f41a7, + limb3: 0x179117c4bf7aeed19202d38a }, w11: u384 { - limb0: 0x3d80637c861483fc10923950, - limb1: 0x1e967c337654d0f4785768ae, - limb2: 0x481b72702d9103dcb4e43781, - limb3: 0x5333aab7260bc64dc7b0c43 + limb0: 0x578af2d1c50886a02d13c7eb, + limb1: 0x1d251a678674e497bfa5141e, + limb2: 0xd5efc634d0cb4c7c1807787d, + limb3: 0x60538a49b6f95d8179548d1 } }, E12D { w0: u384 { - limb0: 0x38310333cdefedb4cbbdd387, - limb1: 0xe6b26f886d9c9653b2bbfe8a, - limb2: 0xb9d35f863c9f4a2f8fb4c268, - limb3: 0x1704b1182471bba9fffe9b2c + limb0: 0x14663ec8aaf41e9dac839168, + limb1: 0x8320d3931ce0be5febdaa063, + limb2: 0xe8a54f2801c82ff94d4af442, + limb3: 0x1537d76fdb6fcc5e66d13c05 }, w1: u384 { - limb0: 0x2f265bef4a3e85db94108c08, - limb1: 0x3c696d4e098accea9610661d, - limb2: 0xd5c7476731fad0754e2f7464, - limb3: 0x19c1461585a2ed5cfb8e29b3 + limb0: 0xc408aeca0ef982f1d4919f16, + limb1: 0xacf15993d11ed9b848098954, + limb2: 0xe710b0aeaf54ebc0e4f53ef, + limb3: 0x1172e3f6d60f5b8f8275f3a3 }, w2: u384 { - limb0: 0x8ddae3fee367964ddc51aca4, - limb1: 0x3c783b044ad80f5ff5ee47b, - limb2: 0x21fe26975324c5a72e3d8565, - limb3: 0xaad681192ba5d299a585a5d + limb0: 0x807779f90c7ea090ec58037b, + limb1: 0xfa1c670f3d46124c0962b69f, + limb2: 0x812e66dc9ca6554d3d5fb28e, + limb3: 0xede7d1b272245097eeab0ea }, w3: u384 { - limb0: 0xb5a4f92d186f3de7774bf466, - limb1: 0x47399c41c7fbe1b809d68b65, - limb2: 0xfebe186619588872bbdb398d, - limb3: 0x12027639f4c191a164a4f692 + limb0: 0xfac578f3346be762844bd2ec, + limb1: 0x994ad6bbf2b2282021651555, + limb2: 0x20bd8715803ee77607e72467, + limb3: 0x7606e734900bc75f36d5948 }, w4: u384 { - limb0: 0x1ed3eb45d160fb1373412355, - limb1: 0x831078097c20872dd057144a, - limb2: 0x244cb8f1817d780639d6efcc, - limb3: 0x19c7a9b513c9b7cb16f2fbe4 + limb0: 0xc1ca06dc742aede8e3ed91c5, + limb1: 0x71d50ee0f44520e8b6e60d54, + limb2: 0xd0e04e25c2746017e5d029b8, + limb3: 0xd44f1471bc3b841396c63ee }, w5: u384 { - limb0: 0xc7fa1a75f2f6457efee6288d, - limb1: 0x6d9981199907ede67d377826, - limb2: 0x7017f14801a7642e0ccec35f, - limb3: 0x79340fa253776b7f9ad54b7 + limb0: 0x8863d4db6f58c06706c68dc, + limb1: 0xcd8010d2fe2689df15faab2c, + limb2: 0xe0bcfa9b2100aa2f75a3064b, + limb3: 0x198af1ae7a81661000298cf3 }, w6: u384 { - limb0: 0x1951605d4cb399fafda19b14, - limb1: 0xe29688e261e873fbff9416c4, - limb2: 0xce7343a650a1837798c5cb42, - limb3: 0x5b8145c2335c829e52f88f1 + limb0: 0x584eba278a62b05b865d0046, + limb1: 0xfd3905d4620e04d59c9f9db3, + limb2: 0xb3a6714f1f875f49e045d5fd, + limb3: 0x109ae235efe54330fbaa8ef9 }, w7: u384 { - limb0: 0xba5d797f60560986e01ba818, - limb1: 0x7ae11273ee16502bea96d552, - limb2: 0x95bb618261fb7366448a57f6, - limb3: 0x101d67f331304802104efa13 + limb0: 0x41056d92722bdd9ef745bb95, + limb1: 0xa49b528aa11e35ff72e1fde6, + limb2: 0x9a18ff2224ff861ac716668c, + limb3: 0x47387893d8d042ea3a4f516 }, w8: u384 { - limb0: 0xb413d3b78382cc0394fa2549, - limb1: 0x5a060fb17c807ab2ef281cb5, - limb2: 0xe5fd89b52a969cfc97721f17, - limb3: 0x2acd817f32ac7f3595b1453 + limb0: 0x6f24529271fb5203cfe12902, + limb1: 0x310663d10c2acea99de8b04, + limb2: 0xb5e0fae90872f9a49eaded38, + limb3: 0xd4cdc64cb2b7e85aa244f97 }, w9: u384 { - limb0: 0x575cfb2ef28e2be2082645ae, - limb1: 0x3f9eafe2f376a88b2699bbb3, - limb2: 0x532bccae3fa1edd9ef536d7e, - limb3: 0x8267ac24a0a7b0422993f5 + limb0: 0x99ed80f6330c7657ae9b36fa, + limb1: 0xb4ecf4f1f9cc32690999e417, + limb2: 0xd6a74b7ae48b6f4307720772, + limb3: 0xd55e06f38a04ecb830f50ec }, w10: u384 { - limb0: 0x5f095ab985987db60530add0, - limb1: 0x13cef29a9be08c4cd7beac5a, - limb2: 0x712cdcbe419a912868ee92d9, - limb3: 0x8252dc744fa3ff31de07fb2 + limb0: 0x824deee4997b239c579cdfdf, + limb1: 0x64de788297270c01860e025d, + limb2: 0x2c570777664a58e9ed48b38e, + limb3: 0x9845b19e98f1ec8238c635f }, w11: u384 { - limb0: 0x8913a803c4f8cd1d4360121f, - limb1: 0x7873ac2af02bc0f1f25b928c, - limb2: 0x395ae004546d19ce7704521b, - limb3: 0x9dfa0414c0921fba7c9c42a + limb0: 0x13e8cac3d7640ddbb717cd3b, + limb1: 0x2bb8aa759817d4f5a47fd7b0, + limb2: 0xa1d374b7e02465a35189b692, + limb3: 0x351a9dec88d73a12476d425 } }, E12D { w0: u384 { - limb0: 0xa923158bc54ed6f76eb96ff, - limb1: 0xf4571d97a4761ef7bf43d5c5, - limb2: 0xe1d3f3e9ee22a4d98f35bcb3, - limb3: 0xef8cf555ff1d8d25c7d56cd + limb0: 0xc5619e330db7753690d3e4d7, + limb1: 0x47612532deb6199b29ae01f0, + limb2: 0x526a20bf47a55f080f9bad08, + limb3: 0xcda6894283305a7ae037814 }, w1: u384 { - limb0: 0xfed2c2ad537b642c979cbd5e, - limb1: 0x17e58604ccfe4cbcdaeca45a, - limb2: 0x915939656a561a1260e44ee6, - limb3: 0x1900f056b2c9aafbcd081d99 + limb0: 0xd01df400ca021228f79039cf, + limb1: 0x5079235d8e615126f16b88a7, + limb2: 0x6b29bb389bdfc6cfc202e4df, + limb3: 0x4c469f79ecbf88cf78fba60 }, w2: u384 { - limb0: 0xcb4e904d4f5ac5fe8afc4997, - limb1: 0x2eabc17ad63462e1c7b0d176, - limb2: 0x5011312bd36e6beea161aaf9, - limb3: 0x1244aad45ee33757d7cc87bf + limb0: 0x392c76f20e657cca0412ccd2, + limb1: 0x8a03a9b1522a799165f5ce90, + limb2: 0x3f1c10daef22f593d0c939e7, + limb3: 0x114680f68ccb81f99a98d2e3 }, w3: u384 { - limb0: 0x8047d5095daadaa85cd9dda9, - limb1: 0xf1dfdfa6dc8d2403f7964f29, - limb2: 0xe7d9bc7d135e75b9d99c5434, - limb3: 0x406715513ddb56404eafdc2 + limb0: 0x1a5d475778ed021bbba71dff, + limb1: 0x3c1dcef8127eb06e3d386b6d, + limb2: 0xa18b55a60be13efc53be2643, + limb3: 0x430d7536307562e71e3b624 }, w4: u384 { - limb0: 0x28dde8c0867143497351dac2, - limb1: 0x75f6390c3979c0917e095446, - limb2: 0x34095437dd9acb8e9bc45a48, - limb3: 0x1bd8bab1135530bf2c181d0 + limb0: 0x33b945b9e91a613f214c281d, + limb1: 0x5246a0bb4a3b5e88b2a556f7, + limb2: 0x76952d20fa901063986b5af1, + limb3: 0x30dc626b4efb4dcf45dda85 }, w5: u384 { - limb0: 0x164f5b0e678364897aefca16, - limb1: 0x78a0feca96d2e0b20a5d4c11, - limb2: 0x727ff759aa944f78ed2fbdbf, - limb3: 0x123e77c3f35d90d06b086d6d + limb0: 0xc91f47f926bf741f50167758, + limb1: 0xb283412e7dec1abf2af4b54c, + limb2: 0x819210cc10240985a197b6fd, + limb3: 0x148983abd0919160ca75ab3a }, w6: u384 { - limb0: 0x2a6be40a423b3fa514f4d916, - limb1: 0x4be4b92757c334fee5e2f398, - limb2: 0x9becdb97a43d57849a9ad260, - limb3: 0x129099d923e82bc861e8c4c6 + limb0: 0x3ae52b385b8d7ccd1149b186, + limb1: 0xc2fdad714d3b4f3b44c34b05, + limb2: 0xa2594e80b8a3d876c89a7dd2, + limb3: 0x17e8e95e2e4453a999120f47 }, w7: u384 { - limb0: 0x26e9ca3a04fde1c3d69bd8c9, - limb1: 0x8b4964a7be1e03b160bba757, - limb2: 0xa22534a3fac973c730a0a401, - limb3: 0xe839bc982ad845c9fb8e02c + limb0: 0x4143d9f9eae7ba680e4ce790, + limb1: 0xc6428a7db6bcfe2c09ff2784, + limb2: 0xb6c49338a7f200baf9ba7b62, + limb3: 0x110a8b846f24a8e5a48f8df8 }, w8: u384 { - limb0: 0x3078ea008feda109fdbddb63, - limb1: 0x6c1958823ae8e68b29e8f4b2, - limb2: 0xf4f1f78c7b6c6cf78dd7069f, - limb3: 0x14852c2d4e359cb7eec856a0 + limb0: 0xec6894f7048d74cc521cfa9e, + limb1: 0x7a74baa8349402edd473262e, + limb2: 0xa587bd8ba9d0db61105a9bfb, + limb3: 0x1542de51d10ad154d14d1ab1 }, w9: u384 { - limb0: 0xaa0f10ea7ab4118bb208f5f5, - limb1: 0x4773b62fc26c63b85ee53613, - limb2: 0xd537974a7cdc1022be53a074, - limb3: 0x2898ef4bddb080e659bbf8c + limb0: 0x623d3472956a6fd9dfb57f1c, + limb1: 0xbc706464f02579b27b176261, + limb2: 0x5fbba85d07f3b4037c86332c, + limb3: 0x389948fb6649d454eaafd78 }, w10: u384 { - limb0: 0x197fa158b545488e426cbf01, - limb1: 0x52fc1bee944314f6140c0ebd, - limb2: 0xfe1cd5d3e12aac6eebc4a32c, - limb3: 0xa36f0fdc2a4c17ce8d5d0c6 + limb0: 0x3d6160146d3ee8bd841a82d8, + limb1: 0xe798a563e2e9319cc47c6e26, + limb2: 0x534d22ca0ba24f883387c567, + limb3: 0x8724e1114e6e80541a91631 }, w11: u384 { - limb0: 0xd2c41c0cf9dc7be039e94753, - limb1: 0x117f9cb0b4845287d5b0d11c, - limb2: 0xb016165f9cd347e6f7398324, - limb3: 0x197863c4057bf209b92ae1d4 + limb0: 0x274eb7f12825b047a3a3289c, + limb1: 0x64eaa3423e2a707806fe1205, + limb2: 0xf84ab17d32acb39a3dd6c673, + limb3: 0x127600c6ca9df9612df7b2e5 } }, E12D { w0: u384 { - limb0: 0xcca3ab9b573789dc6ef8d475, - limb1: 0x38a9f63e38c78281e5c4ad87, - limb2: 0x5e6748b62da71c1ac4dfd90d, - limb3: 0xac18ae8f04555513ac35865 + limb0: 0x3796de51981f6024fd06174e, + limb1: 0x94d83a402696f8c183f7eaa0, + limb2: 0xc9225b2cfd7c3d5c24574a05, + limb3: 0x10c73e67a277a6aae451031d }, w1: u384 { - limb0: 0x9f96a44ea475215bb8513ecc, - limb1: 0xd090717e6e6f897901dfd7f6, - limb2: 0x69f5adc9f7bb2ae5c0803fe9, - limb3: 0x16eda2e54abef2535229b249 + limb0: 0xf896b5516da8d004534d0d5e, + limb1: 0x13d040c8b2eb76307a8963e2, + limb2: 0x4106bcea580d4e5cdbac42fb, + limb3: 0x194bcf981b8ad069b42ef14f }, w2: u384 { - limb0: 0x43333249007bdd9fa21fb0c, - limb1: 0x2aeb3fcf82be8e375a879c6f, - limb2: 0x743b2c1eda2a2b27db150101, - limb3: 0x549339dc026aa4f00220499 + limb0: 0xa01d5085551a704cf0fc81f8, + limb1: 0x6f550724287ce9ccd035e27c, + limb2: 0x4ff8a38afc93789bc77d11e3, + limb3: 0x15387fd205f34ad531fb7495 }, w3: u384 { - limb0: 0x90ea731b3601705d6a234162, - limb1: 0xe3aa9fea8773d6f8c07060db, - limb2: 0xabdecc58e9216415240ccd13, - limb3: 0xed4f27f840624b323d206bd + limb0: 0x2d86600edfa521e03bd1e1c7, + limb1: 0x91911144ee37f4bda9841ae8, + limb2: 0x7013dc289771aae3049aa557, + limb3: 0x1264774c7cad53e0ce2c2512 }, w4: u384 { - limb0: 0x4a4d92a788ed63ab944a17a1, - limb1: 0xcf0091b7c4acbd5597d5d7d1, - limb2: 0xde220007c26314d78d7de26b, - limb3: 0x194dea69377c7d9f4b7b363e + limb0: 0x7b8d55a4e9537ae0138637b9, + limb1: 0xaedbff15cf4e9d82355484c4, + limb2: 0xfa1e2235cecbef2155df3ba, + limb3: 0x151f2f232b2c641091433b1f }, w5: u384 { - limb0: 0x41954480f9839fb695c00880, - limb1: 0x2d5f4b8954f60f369251e9b8, - limb2: 0x5f3f3ea9d976a70bd3f26ee0, - limb3: 0x10c997d6dbf7810a63e77920 + limb0: 0x72ec4e504cfb5f2b309e1b1b, + limb1: 0xb307889291791d9836f74c5c, + limb2: 0xcc60fb54fe4ebb3c834028fa, + limb3: 0x73d28c074b6d0a9bbb93a6e }, w6: u384 { - limb0: 0xb00900df4384240ec1edc1d0, - limb1: 0x535a2d537099a09c0ce5544a, - limb2: 0x8cff571d5ec670dae7e222f9, - limb3: 0x35eae2ed4e0bb480dc53bd3 + limb0: 0x42714ec1b398c2646a44fc8c, + limb1: 0xf9c8174e936e14a688589f9b, + limb2: 0x74f6aaa1b47f90087951593c, + limb3: 0xf56e6232d6c70f9bfc19e5e }, w7: u384 { - limb0: 0x8f3a17d841f8ca94940dbbea, - limb1: 0xd1046fbb3fb130afd57edcf4, - limb2: 0xd52689b88af3a7b8450de6a, - limb3: 0x71201fa7ef06b260b860a88 + limb0: 0xe304f2b0d829f6d2faa65947, + limb1: 0xa26f23153498cde40f054342, + limb2: 0xfba50877ef63e16fa824a815, + limb3: 0x1256debfa10663438ea50adf }, w8: u384 { - limb0: 0x53994ad8591fd43d56c7a784, - limb1: 0xd5f8910c17ecc1aec86781a9, - limb2: 0x7df06cdb61c770d7d22146ef, - limb3: 0x2edab2de5730774bcc43003 + limb0: 0xc757cecbeefd79b47270e6b5, + limb1: 0x3fb9d4754903dc457f7597dd, + limb2: 0x8a9f050e1077482a52f7bef7, + limb3: 0xb1d0a3d278779c2252b7aa7 }, w9: u384 { - limb0: 0x96da8f3ee13df33ea1137442, - limb1: 0xdc4aa80c88730971f87f48d, - limb2: 0xa0d108164692c40bf79c541f, - limb3: 0xfecb916e757b90dfdb31f4d + limb0: 0x5092b50f667acdababf052a9, + limb1: 0x67c7132abfda100e74791ab9, + limb2: 0x679b7be1175e7dab6bbf7b8c, + limb3: 0x769778649047c85b6580077 }, w10: u384 { - limb0: 0xa6004d282fa5a7276fc45f63, - limb1: 0xebd7e5f3470e98f4d7bfa54d, - limb2: 0x3e9118f4de2bc01cf6c08b96, - limb3: 0xa2a5dd020c74ea2a80996ab + limb0: 0xfd8979bca7fe4209f707b3a6, + limb1: 0x9ec62bedcbf628a3ceb18d29, + limb2: 0x319886ca998f583080ae6e1b, + limb3: 0x381d855df46f8b4c2c9d6a2 }, w11: u384 { - limb0: 0x15e11736d83c8100ca388139, - limb1: 0xe32b8711e63ebe91ab7c55e0, - limb2: 0xf8fa0b6335e49ab2b6676c41, - limb3: 0x79de740f719f79cca91408c + limb0: 0x5724976349a32d6f327568bb, + limb1: 0x17fdebce21bdc92e64f8196b, + limb2: 0xeac82f3bc4b86e5d8147ef45, + limb3: 0x131358e92a4dd1ca0ddb2c80 } }, E12D { w0: u384 { - limb0: 0x881bde69c9572f0f57de2768, - limb1: 0x46981161b79ac135dbb8cf77, - limb2: 0x8841fbb97fa4f045168f0d0c, - limb3: 0x634b6561fbf2348942c5650 + limb0: 0x35716cc42b7f43a8fc723ebf, + limb1: 0x22fadd338e2c25972f85dda1, + limb2: 0x46872acb9511d7767537705b, + limb3: 0x155d2de74effe44cf4798599 }, w1: u384 { - limb0: 0x7dcf964b10d7dc72c41f49c9, - limb1: 0x3a00f4bfa0781a12180dbd51, - limb2: 0x74ef7613027625af8bd8775a, - limb3: 0x110110ebb35ce6e83104000c + limb0: 0x376ac4e9b575568e825c5a73, + limb1: 0x2769ef9a9f77e879b6b8a6ec, + limb2: 0xa666a8e2ee113b3b4567435a, + limb3: 0xc6b84a04fd0d0f116ad9e5a }, w2: u384 { - limb0: 0x36ae887ab0038a1666d861dc, - limb1: 0x8935bfdcad1a9b520efd311, - limb2: 0xa40c47d8a588003f1a9449dc, - limb3: 0x9366d8db0a14d758b859eed + limb0: 0x59d60284544cb1eaec05d203, + limb1: 0xd6cf07d6abaf48adde29bad7, + limb2: 0xf08eaf520c0bc5fe6b8eb966, + limb3: 0x8207e1ac978f7a918c110a2 }, w3: u384 { - limb0: 0x94744feac95248f5e5fe8716, - limb1: 0x83bec3dbaa9d3958c5360005, - limb2: 0x1cb32938878402bc31374320, - limb3: 0x5f102de79d5b917bf3770c6 + limb0: 0xbbdf9ed2369c8b7b97583800, + limb1: 0xb649e54a0e1787927560a57f, + limb2: 0xa914d51f826065538792be78, + limb3: 0x16b5820f317d590fbb5896f6 }, w4: u384 { - limb0: 0x6df85236c54d08c9e01d7c49, - limb1: 0xdb282cc69e0ae095f0687977, - limb2: 0x204e2e9aa42c3d85449cdfba, - limb3: 0x132a68f13a25b2bad029a9dd + limb0: 0x43ec6635aeecccb9d2c29f78, + limb1: 0x8e2372e1b0e3678817be3069, + limb2: 0xd78c8144a0ea302301b30a98, + limb3: 0x17a61c387bd1ad61e28354de }, w5: u384 { - limb0: 0x95264aee44b2f2fe3bcd0f43, - limb1: 0x9b79efdb41d907f1dd78274a, - limb2: 0x2c20b91aa226f1a741075feb, - limb3: 0xe31e1912b5f20044da40635 + limb0: 0x4c34bc4845eec9fe3a68d75b, + limb1: 0x314780d022648ad56cb24a5, + limb2: 0x585a32f768086f1fdd9a8da, + limb3: 0x1324f29ce3b3d74e74b08b03 }, w6: u384 { - limb0: 0xcd8e50839d711b1f947217f9, - limb1: 0x5317f0b7dd7215548951e63c, - limb2: 0xf238dddadf780ba322cbc69f, - limb3: 0x918b5cabbc825881582ff5d + limb0: 0x223401b4185f66cb102dc565, + limb1: 0x46f3ebee9b04e69f007f8111, + limb2: 0xf8ae83de384f52416b6be2, + limb3: 0x13727dee2bab50f43deaa793 }, w7: u384 { - limb0: 0xf296b6f4bdadcd3887e3c9ba, - limb1: 0x938fa50ad38ca7e253fcdf2f, - limb2: 0x1fedb03426901bdafdfae547, - limb3: 0x33bd7a802e6dafe8731bf4a + limb0: 0xdafd089f3c769cddeb63c576, + limb1: 0x4329764ad1958fba5407edb3, + limb2: 0x832c80c10c3981b2d197d42f, + limb3: 0x14a64986d3b0dbbf0297eac8 }, w8: u384 { - limb0: 0x65c68f3122b4f9692575edca, - limb1: 0xf144c423abb72cd5867bbf4d, - limb2: 0x69be1886056f086776f9fe20, - limb3: 0x11eafeb7ca14afb4370fbede + limb0: 0xeec166dc39802b9c81e08f7, + limb1: 0x61a05c9d1447aba4d0279bbb, + limb2: 0x5a891acf231010014c92af9d, + limb3: 0x42193c8d6a9bccd990e962e }, w9: u384 { - limb0: 0x2438ca97f5b5564ce6917781, - limb1: 0x1c3e3dd9e29b879cb6a4537c, - limb2: 0x9f8f087b5eb40f73bb7f1d73, - limb3: 0xa8a57d916912aa469ced9e8 + limb0: 0xdbe5765f57be1a326f0b78bd, + limb1: 0x3417ea0001ea3efb8c6de325, + limb2: 0x80dfc16ab0411f7cb6727faa, + limb3: 0x19415881fac9b97f02c3a6f8 }, w10: u384 { - limb0: 0xa369faa9b8bcf0c090ae7022, - limb1: 0x18eade62e6e39a3c9b3ed60f, - limb2: 0x705e283785bde4b14d6df7bf, - limb3: 0x9991d9e0a73f87400e6dbe3 + limb0: 0x6440e9bb2320475c39624871, + limb1: 0xc39741e3212573abf24cd446, + limb2: 0xddb817e1e7237e88f9285a4d, + limb3: 0x98fa9061f0a765886c03c21 }, w11: u384 { - limb0: 0x41585dda44b68ab870a5ca3d, - limb1: 0x4c8de608db6854704c2fc78c, - limb2: 0x2d9119f1c1a1d2c8ebb71cf9, - limb3: 0x19fc499e173681d26c713aed + limb0: 0x91b97eb11b2b9466c4781b02, + limb1: 0x98c2e0826cece826f5d1e2a, + limb2: 0xffdc08767b9c38eb95323f94, + limb3: 0xdb9012a8490308dfbd1ec31 } }, E12D { w0: u384 { - limb0: 0x3d4fab7f1eec905380d7383, - limb1: 0x50d6606118a7091eaf7ad8a6, - limb2: 0xdf8a9431113f3fbcaacda50f, - limb3: 0x1033a30fc72ffc5e80c77f5 + limb0: 0x3942fef601ca6d254a68858b, + limb1: 0xea9499ac5e6f2d267cf812f6, + limb2: 0x1ddc6c2df9859ff4f2adf48d, + limb3: 0x2f04749264cbba7320d82c7 }, w1: u384 { - limb0: 0xbfd7dc81619cccee6b62b0a4, - limb1: 0x29068e6b11917e19b7a74c1e, - limb2: 0xe54e1c092abea90621bc50dd, - limb3: 0x9783dba050195fb6ac0ee1e + limb0: 0xea370966790afa13e5a15b8b, + limb1: 0xcf600ddedf1922470eb6c8f4, + limb2: 0xcc3b2095a20acd637561e075, + limb3: 0x1099a2649fcc6f0876de42f4 }, w2: u384 { - limb0: 0x9e98c114c90ca0812b44cced, - limb1: 0xe92596b921606a567b2409ff, - limb2: 0x2fcd1db06208bbd35c98e795, - limb3: 0x20b8baab1403ef5ff1ed990 + limb0: 0xf7c03af81a901c952bb74ab0, + limb1: 0x73344a8772689f0e65751dc, + limb2: 0xad18a2477643704a0385cf67, + limb3: 0x6d8fdc35189573632dcc97 }, w3: u384 { - limb0: 0xc10a2c207bcc7207594f7f43, - limb1: 0x665ce0372be520c13d063ef9, - limb2: 0xc2e7e81a38b69355da9d728d, - limb3: 0xf0291a0efa4c27bac28bce5 + limb0: 0xc40e849145b8a6ac81ba9633, + limb1: 0xaf7eee8a3d8b2ce1ee4f3450, + limb2: 0xeb5dc70d8393cddf4b749d5e, + limb3: 0x3a16616e0857c168005f567 }, w4: u384 { - limb0: 0xb71d822f7e35ab570af8ea4a, - limb1: 0xf3202846e1a7f5a4f6688697, - limb2: 0xbc0e4e9b38b37b9dac8f3ca, - limb3: 0xe8b085f74f00bc3fc62b92e + limb0: 0xa46376638fd600b1522df0eb, + limb1: 0xd54238ba273db8846de529d5, + limb2: 0x5c999239af48c2ee8edebd55, + limb3: 0x4573d87029391d0d65f209d }, w5: u384 { - limb0: 0x2ea8047d045f212dbb9a458b, - limb1: 0x88e6c5194d266120e17f84d6, - limb2: 0x90df7fb5286dc16395695d52, - limb3: 0xa20a35ee605204218631fba + limb0: 0x320028c1a7a461ad9eb19b21, + limb1: 0x3b1235187099e3e7eccea674, + limb2: 0xc63359900cf9bea379c7c265, + limb3: 0x181ece5056a99b30368a01f7 }, w6: u384 { - limb0: 0xe8e8c8ef066a7497eea2627f, - limb1: 0x63347682a942c56b3e42ee58, - limb2: 0x9c9add5889e21d887a808d8c, - limb3: 0x5f6ab96c69ff8eaf8130581 + limb0: 0x67c40b01d45218cb7c9261ed, + limb1: 0x5f12224f9bc6f6b0f758ed7c, + limb2: 0xfe65e99f9dba2b226f3bdb14, + limb3: 0xefb00660b8c006503becde6 }, w7: u384 { - limb0: 0xa252bb4aa5b6f8da7ccd9cc8, - limb1: 0xf24310d1ad15011ddbb92097, - limb2: 0xee6fa692bfc5684719562cfd, - limb3: 0x13df59b3371521359a5d2256 + limb0: 0x98835c191b00687892a50c84, + limb1: 0xd4ce327a1cde229daaf91062, + limb2: 0x41b55aa7f2b569fbe90125b3, + limb3: 0xb5ddb3660a32eb070881b79 }, w8: u384 { - limb0: 0x10ae8a37f343067f95a2d190, - limb1: 0xdffd58f908815a6fcedc0e67, - limb2: 0x26c3463913954da1474a6d88, - limb3: 0x128761be8b9e4e617f874c75 + limb0: 0xdf1e95ef6d2b993d5a1909e8, + limb1: 0xa22871054afc0a86111e80ac, + limb2: 0x65699d8354776199ea73ba7e, + limb3: 0xad1800f05ab0f5361037f95 }, w9: u384 { - limb0: 0x7549dfbe49e13f05f633e170, - limb1: 0x7c80bb404ebcc168bdf72086, - limb2: 0x78c112da43edce0fafb94524, - limb3: 0x952afdc9271fa9a55431b54 + limb0: 0x332c0317051a794c9dea2cbf, + limb1: 0xf8a485eae6c2e410a7f79c41, + limb2: 0xffb6acfadd9e81a1d72f7ab5, + limb3: 0x4af742d5ef004df236eac2 }, w10: u384 { - limb0: 0x59335b33fcddcf4e0687cd5, - limb1: 0x1cb9c04e349ab716ff559e5c, - limb2: 0x1434db167b206fcca9de5ff0, - limb3: 0x4d26fcd3277406376876fe + limb0: 0x6e7cd75aecd367d01b025d90, + limb1: 0xea672964fdc59edd7195d82a, + limb2: 0x9ef714a07f2ab07c12d493, + limb3: 0x11a59352336ea017c4cf99eb }, w11: u384 { - limb0: 0xc3c02dbc72f194031e241dd7, - limb1: 0xbc607df0f7e7cdb0be687e26, - limb2: 0xcfdf9345b7c89733a8185b9d, - limb3: 0x951630eda9ce29d44c6cb9a + limb0: 0x499742508d3b02cee2ce2e5f, + limb1: 0x2a7cd0175d28e3847c94e3a7, + limb2: 0xba1633b10be308ed90e705de, + limb3: 0x144cf257dd87eb064641dc1d } }, E12D { w0: u384 { - limb0: 0x7795c8f6d8199bf9b1b9e2b6, - limb1: 0xa7146e712cd4f60c196cd5fb, - limb2: 0x8538974939b8ca9e164240e3, - limb3: 0xc8ccc585ff767afdd56da4a + limb0: 0x5588cede045d2cdadf0827cf, + limb1: 0x8829d5bef0b199f40c4218aa, + limb2: 0xde50f9075bb8b7bbf873dafe, + limb3: 0x169bf614aa148aade5ddee29 }, w1: u384 { - limb0: 0x848a616117708616beedfa99, - limb1: 0xbe3711376afb6a102cd49b16, - limb2: 0xc8988d23b93263ffb65cf804, - limb3: 0x427f45d4151b37a5c88d97c + limb0: 0xdb2b9f6b9cea43f3771a2810, + limb1: 0xf30659616ad48cc3d02ad552, + limb2: 0xdb3f39565fbac93235ddf67a, + limb3: 0xd897622f1ee1f5a889fff2b }, w2: u384 { - limb0: 0x79ab3b038012688a8481c3a1, - limb1: 0x2ae734fbef2954493c54d54d, - limb2: 0xb6176e8cec0912db250b08b0, - limb3: 0x2915b090de6ed24f5f091fb + limb0: 0xc81128b16bf3342deb344274, + limb1: 0xd317b6705fa602f2782a16db, + limb2: 0xef2d519a4cd337872aa8a9d9, + limb3: 0xc3478cb19d1dbdf19ebd5c4 }, w3: u384 { - limb0: 0x71512c13ba4b283251f8d13d, - limb1: 0x8cc513a7f4afccae0f95a0b6, - limb2: 0xde6d0ff508ed8c85aaaf0d5f, - limb3: 0x601722395f0ed254ab52b7d + limb0: 0xa47ec9609689112917e7ffde, + limb1: 0x5609dfe0d98894b8a636cfa2, + limb2: 0xd919558b35a2b260310069eb, + limb3: 0x37a1068ca3a9c3f9cfc9c77 }, w4: u384 { - limb0: 0xecf06e472bf7a0a731b8e47, - limb1: 0x8ebbe0fcc7d2640d75cc2164, - limb2: 0x70fd31a625ac8a9760996091, - limb3: 0x184d3efa60a05c43f2b1db49 + limb0: 0xa38097592eae5f41aae85f73, + limb1: 0xb0227e1e6c4f1a2b68373d92, + limb2: 0xca4181ef54e72f36c0ad2e9e, + limb3: 0xcaaec19729ff62d200f2d46 }, w5: u384 { - limb0: 0x77f76b05184f04da90d263e6, - limb1: 0xfdba03d23e1c94a9f96a9c0a, - limb2: 0x4fafeff9689f30880388c0e8, - limb3: 0x305c7e41ae24c65257eaef1 + limb0: 0xe632b6beb47754be744835c5, + limb1: 0xa13d9f0d6987474db8886bc5, + limb2: 0x861e8f934f2bd6c26382b37b, + limb3: 0x17b17e0214847d1133211504 }, w6: u384 { - limb0: 0x71bd0bae7d092f00bdc66953, - limb1: 0x7de0f83e9221a7e4c53fd3d5, - limb2: 0xb98265106e102bd3d0a4e369, - limb3: 0xc0d95b39ece8958f3c5d658 + limb0: 0xeed6293aaea5b464d9557224, + limb1: 0x616885cc41b7f2ca0e9eccf4, + limb2: 0x5fcb40d8ac2c3e379f9f73db, + limb3: 0x1722192cc0b28826f6ba15b3 }, w7: u384 { - limb0: 0xe00914bc2bc882a97fd3d276, - limb1: 0x576aed9d8d7db9c897a4eb87, - limb2: 0x558c2db577905d3d32b4805d, - limb3: 0x393addadf028c3b3f2b33a3 + limb0: 0xb86298adf0e72ec3d58a8cfd, + limb1: 0x462eef29c5602d38f0edf121, + limb2: 0x441e4b2a0eb332c9f50113e3, + limb3: 0xcec368a8e54826df43c7363 }, w8: u384 { - limb0: 0xb5bb2d4c7e234eedd0ba3984, - limb1: 0xa4b4daadeb29bfcefa3cf2a0, - limb2: 0x808827a7b199286ab46d2fe0, - limb3: 0x94387bf5df9090b24f48cff + limb0: 0x6e688697f816d51595ca5d89, + limb1: 0x52ebb737369c18d3262d993e, + limb2: 0xf99ba53fff7f6388fcd62931, + limb3: 0xd8f799ebfe1e31688b8dbfb }, w9: u384 { - limb0: 0x640e3b2f49e5ca7b666a24c3, - limb1: 0x623eabfc0226c6a6c42e4525, - limb2: 0xb2f73296207f8de782134eb7, - limb3: 0x9bc6f8da7d87bb6eb4e374f + limb0: 0x2dab5a73563d5e85efcdcf5f, + limb1: 0x49017e5fc6f43c3090f3a839, + limb2: 0xc7ca32a8e5a9c6d89bedfa29, + limb3: 0xc88b068705e1ea444253e1f }, w10: u384 { - limb0: 0x6eca873e66cf3c658fa00a81, - limb1: 0x1e14571a8d2ca8d4c9e8dd10, - limb2: 0xb9576cc641f6ec670d53522d, - limb3: 0x6bba9c06e3002c4469264fc + limb0: 0xf7068f0c42467375c56087f8, + limb1: 0x8a6255309aaf6bcbe62a4e4b, + limb2: 0x86d81d3ee6eca316720203d2, + limb3: 0x5f7fbd590cd861c1cad178c }, w11: u384 { - limb0: 0x36f878519bf9cc0ad6142d97, - limb1: 0x149c4f0f877368fecfb19388, - limb2: 0xea9ed899f5e5d831dc91b76a, - limb3: 0x112bcdf8af0cc9b954851076 + limb0: 0x6db80280e98bc1d1e0212e5a, + limb1: 0xb5cafdce4554a39773fa052f, + limb2: 0x4f6819e8a4acdd8eb4c432fb, + limb3: 0xa9dd9ec5b1fcf4c0f2f96af } }, ] .span(), big_Q: array![ u384 { - limb0: 0x118e401377d707f112547232, - limb1: 0x9724e2680da8febf0afbabd0, - limb2: 0xd4ab49d36423636661b238e, - limb3: 0x19d2597eeb3d38904e217f3a + limb0: 0xa3e7983c52177ee6cf41c933, + limb1: 0xc878551a5bcfcbbab4fa69c0, + limb2: 0x2b62241b4767f4c27ab37152, + limb3: 0xdacf9d78c1e5a7249ba8575 }, u384 { - limb0: 0x171f1f075ec89b56489441c0, - limb1: 0x5bba0ec87eac2f517b0ad587, - limb2: 0xd51ff69f3f73aef1e3df837c, - limb3: 0x802c7dec838bfe5bcdbc604 + limb0: 0x34b5b0aadbe8cefd99f78efe, + limb1: 0x9a6280d93e90dfa2ad8a0665, + limb2: 0x865b30729431e943d5d1da25, + limb3: 0x135415bc74a5fbd02ff8bf2 }, u384 { - limb0: 0x743a242575f29bfd680b08af, - limb1: 0xd718a230c95d1a0e61037cda, - limb2: 0x8fb08d590e7ab2eeeab27958, - limb3: 0x148731247e8ae1edd38f321a + limb0: 0xe1a3f72cddbb3eab626b78c5, + limb1: 0x1136ac541672565e176d1a5, + limb2: 0xf05ea1d1352e7b8547f58a85, + limb3: 0x8d14ed0d8b92ae5c708fde2 }, u384 { - limb0: 0xa7cdaed75cde526fd0092f62, - limb1: 0x3454226d1ced0d616c0edcea, - limb2: 0x3caacb72dc44869eb6dafa65, - limb3: 0x3e5e81bbecf8150457f8c9d + limb0: 0xe227f08ec8f084a914aaec06, + limb1: 0xd8830486ba4f5b633dba9a94, + limb2: 0xee639e145fe2c50aadd58f9d, + limb3: 0x16d5866a88ecc0b6d1a2b73d }, u384 { - limb0: 0x1449ca09d196202ac5b7faa3, - limb1: 0xcd27f932a68c37dd2deb211c, - limb2: 0xed0cde73530c4920822c8355, - limb3: 0x126cefecdc1ecd73af3c2e39 + limb0: 0xcab9d6e9c20fabc2c57eaeb0, + limb1: 0xc5a27d49dc4fbcd898c110, + limb2: 0xa2c16cb9bad21819c1e58056, + limb3: 0x25e9e35311aa0d542776bbe }, u384 { - limb0: 0x2014db6405e5363005af611, - limb1: 0xac1f9d989f7105fd4748e4f3, - limb2: 0x1df4a3c87e2bb8de328302ff, - limb3: 0x2970f491bb156029800ba29 + limb0: 0x1de07ee6ea1ebf0ac58a8482, + limb1: 0xa94582ffcc3ed6d1deb5ad0d, + limb2: 0xaf27c71d444a1500dd94472d, + limb3: 0xea799db2c35ebc2ec4d0c02 }, u384 { - limb0: 0xea544e4cdb7b887f26bba03f, - limb1: 0x9096aba89e386d578c1e268d, - limb2: 0x7fd347c4b89f9bb57a6578, - limb3: 0x7b7992f9ca47dfac9c81e72 + limb0: 0xc40c54a8a98b58dd6c95920e, + limb1: 0x23cfa238f21886e9674d7e5d, + limb2: 0xeb224473f987f0a78eee502b, + limb3: 0x10872f85034f3fe8144778f9 }, u384 { - limb0: 0xa7e8dfe1be0ab5a0d4d98955, - limb1: 0xbc932d648760b8c4673ad790, - limb2: 0xe9e29b5b33984b229b1efc6d, - limb3: 0x808af6bc2792374c28fa40d + limb0: 0xc62ae0bd57d10fec3931d5d6, + limb1: 0x95feebdca88ccfbf96839d3d, + limb2: 0xc701bfbc1bd3b8b99fd328ee, + limb3: 0x105fea6244eaccdba68b82c8 }, u384 { - limb0: 0x770d2aabbad353125b8c4d5f, - limb1: 0x933c911f438695c7b436209b, - limb2: 0x387518cc1ea409d04f38b310, - limb3: 0x11ebaff6e40c2776316c1ab4 + limb0: 0x9999a68d5a0d8dbab2fe7cac, + limb1: 0xf2f284cc782dd186c1a21080, + limb2: 0xaa345100d7ac78af7f07ab0, + limb3: 0x343ad4472e81aa23f653c50 }, u384 { - limb0: 0xd5cbba8e3ab6e7fb00bafcb3, - limb1: 0xfba4b052d0e00701fb5ab2a9, - limb2: 0x53e1bdb98b109c7760792361, - limb3: 0x988bff48e6cb3c165414c74 + limb0: 0x322a4bb34dbaa4ac421b2a6f, + limb1: 0x6814a2cbfe211b4f8c5fa074, + limb2: 0x9e6dcc54c28ea1b738a5f638, + limb3: 0xb15ff9a6a324ee552544301 }, u384 { - limb0: 0xb8e4db19e5e275a5b33a3cc, - limb1: 0xb14ed1a4dda2ab7f481080cf, - limb2: 0xfbe9a2a13bd23855f8326fa, - limb3: 0xc2d11fb7f379eb41bb485c + limb0: 0x773a8a06261c3fa21f0c273, + limb1: 0x67a4d4bf13a8a3926c101d4c, + limb2: 0xac2435c8750985c83a5acf42, + limb3: 0x2ba3c4ba4d6c7d32bd4132b }, u384 { - limb0: 0xc7700975d5b08afec7fa0107, - limb1: 0xd973a31d8fee09132852686, - limb2: 0x7921cfad71d18550776dd0dc, - limb3: 0xe334afdd892b6b38e94d2e8 + limb0: 0x5af4e8623a9a6ac55368c9a1, + limb1: 0x41acfdeedee3a3f2e1d63086, + limb2: 0xcf75b6d87de178babc0f7338, + limb3: 0x145c33aa2b9a87ad7f4e6fac }, u384 { - limb0: 0x1faa97839ad5bf83703f7729, - limb1: 0xf45d5b8cb2caab03b10268d5, - limb2: 0x763c9a8c9545677c17fe7b69, - limb3: 0xb9416d06c18d5533b9274ee + limb0: 0xfcb4a32f66cb0b7de885e321, + limb1: 0x811754d5357ff3190cb7cf76, + limb2: 0x7ac0c7a8d2e6b4870e6fdade, + limb3: 0x7da36f12e5347ecc727e2c2 }, u384 { - limb0: 0x83a228871e1076daade61a14, - limb1: 0x8538a808cb48d52efee3604a, - limb2: 0x8baffd6e935bf66cfb3bb0b4, - limb3: 0x11ffdccbe46066885113c52d + limb0: 0x8160b9669e247add8120f235, + limb1: 0xe5cdd506f81dd052a6669c1f, + limb2: 0xe49635da08fae0e68e8d61b5, + limb3: 0xe2f09f8bb68ab60b8b100d7 }, u384 { - limb0: 0xb1d629a0c3dd6f7ce67f71a9, - limb1: 0x2aaff5c837400cec9712c452, - limb2: 0xb720ef82575a732227bd3ee7, - limb3: 0xcef5df68cd9bc48990e2383 + limb0: 0x14f979d377f8f7ee85fbdb0f, + limb1: 0x4a253b371d8e10ccb8140608, + limb2: 0xe993276269db8f8fe4c6e9da, + limb3: 0x18461083f0b47c0c08af3b84 }, u384 { - limb0: 0xb597ceaecea6b3431bc99622, - limb1: 0xfd2e23197a4ccec6ce358b33, - limb2: 0x634fe9a259a2b0161b71e567, - limb3: 0x131be3152fc2a6ee7d893283 + limb0: 0xbf9c91b7bb6a96f6c4bbfd44, + limb1: 0xf63df8512b092f6e1f7d0912, + limb2: 0x9fcf0b5ed958431cf026adf4, + limb3: 0x1384e76e9a670644b1b7b75a }, u384 { - limb0: 0x829524039d55838a589a8ea5, - limb1: 0x8902cb47d6ce6f60eb3ab6c, - limb2: 0x31015c307db9fa84e01ec8c1, - limb3: 0x11eecc090586ad9a458f41f9 + limb0: 0x21cf2e9de4f3199b49259102, + limb1: 0xbc59d1d4b8f60f3cbdb5c9ad, + limb2: 0x6b82dcf85e7f92dbd14dede7, + limb3: 0x4473eaf269c3e6fbfe4eb03 }, u384 { - limb0: 0x509e9718fa93e11b17d13ab3, - limb1: 0x93832511f4e73c72b2960a98, - limb2: 0x4f0eaee404ef5da1e3ba6c7d, - limb3: 0x19bb75d23deae5f123f1675e + limb0: 0x8e63d68e90269688ba6352e9, + limb1: 0xb106824baf4fd76a823b7af2, + limb2: 0xb4bc212d749cdc93e6c15422, + limb3: 0x16613b344965687fcbc10105 }, u384 { - limb0: 0xf2d2d7c07d6748314ab02a9, - limb1: 0xea4df545f5cdddd6d78182a9, - limb2: 0x8acf1e5417c68dea88b381c3, - limb3: 0x86c47323d784dba9ad5b101 + limb0: 0xfcfe7ecf997f6c1a347a29fe, + limb1: 0x2fdc09c863ad94e54eb5d703, + limb2: 0x86f3685e20c326d5f3809388, + limb3: 0xdc859a1bcb3aebca401a59d }, u384 { - limb0: 0x338d8e40e9fda52427cdfd77, - limb1: 0x6960c19d3b0039baa426f701, - limb2: 0x5378022d76ce9e32deac6c6a, - limb3: 0x13a96ffd043f934f6f500f5 + limb0: 0x4df51952a468c6d25d3a04bb, + limb1: 0x9f6e9bec9331d07c650c87bc, + limb2: 0x4d645131f9dfa76d49e41f51, + limb3: 0x132f774d519a3905da1d4b18 }, u384 { - limb0: 0x5fc15e5a81b49a4f2ca1bd07, - limb1: 0x162a066e714efd6dc6a2847c, - limb2: 0x5bd88b86e373b23163aaf64, - limb3: 0x19a48e9a731c3e9bce419e28 + limb0: 0xe9be209e4c33a33f7b4a42ea, + limb1: 0xae0dcc32ebded1f383fa42d0, + limb2: 0x58009958214ba0bdf2abf496, + limb3: 0x14a9111bba2b4d828f06aba3 }, u384 { - limb0: 0x73cfcec41e988aeab5a0df56, - limb1: 0x6831f9e7ae3c74cb2c052e17, - limb2: 0x8961b232e701ec9344e17547, - limb3: 0x45e52338dc63e0e7bb6041a + limb0: 0xb096418d73f483d869cbcb26, + limb1: 0xa367552525613be95682f92f, + limb2: 0xbc53055b9c5cacb945022d99, + limb3: 0x2761a9462c8c3b9cbe40b8a }, u384 { - limb0: 0xf6720738bce821e23e96db3b, - limb1: 0xd9897454b58f16e45d3f98c6, - limb2: 0xe965a05553aa7690c4429c0b, - limb3: 0xea6158c3c0b3b2b75c12d4d + limb0: 0x1c82a472f773aa50cb3a26ad, + limb1: 0x910bfd64328667e2cf2f01fe, + limb2: 0xcba47b5229b2fa16f57087ff, + limb3: 0x11a4815594889554d6f1b82a }, u384 { - limb0: 0x6fc7931f345f667d9ddcb54c, - limb1: 0xcd49f839361272a8e8ce16a8, - limb2: 0x26dfc3caf0c750dfa3b2d1e5, - limb3: 0x147fca61a5678199914abc5c + limb0: 0xd3a8656fc667f66a8e3f5551, + limb1: 0x5f26ac312c48aa10a935e8da, + limb2: 0xea6257b784db16392e5c1f87, + limb3: 0x9ed9fa4a643e2beb42cb885 }, u384 { - limb0: 0x62c88210f88492914acad32b, - limb1: 0xd311baa896b7315739190a47, - limb2: 0xcd03a13a244de75748aaee4b, - limb3: 0x6b6ac62837ab017e4ec0a6 + limb0: 0x97d53d5b490f97f883fd947f, + limb1: 0x291dbf974b5132f8cfeb3221, + limb2: 0xa5411e44ca4257463b9c6eda, + limb3: 0x11ffbef22d3ad11288ff557a }, u384 { - limb0: 0x1fd7c535b51d45585c67758b, - limb1: 0x6f99901f92f63ec75a1d8132, - limb2: 0xebf1ac0daf44a2dba60330e6, - limb3: 0x90b57a420f80630b683c5b7 + limb0: 0x41737e532acef42b3d1be5e9, + limb1: 0x670f086a44ac2205ca45bd31, + limb2: 0xe125411dfe8a9de1f56d4e8a, + limb3: 0xa86753884997263cf69cd83 }, u384 { - limb0: 0x2ff65a3aae87aa715cf36203, - limb1: 0x37a8541891faddb66316127a, - limb2: 0xf0de5fe67971ffae780bf019, - limb3: 0x6708df91b7ca03e3a6d76a8 + limb0: 0x44dbcf54946b874587ed7bb1, + limb1: 0xf5d4c8a8204d2a664d8af6f7, + limb2: 0xd204792106e5ec68e911c843, + limb3: 0x6b6f000b587e27bb0daca41 }, u384 { - limb0: 0xd7120130892a54daca3f910d, - limb1: 0x11583f85008fc30c17ec5608, - limb2: 0x83f2620866c96a195829ce0e, - limb3: 0x5934094c25aed7d6be700d3 + limb0: 0xbbd55fbfec342eb68cb8b33d, + limb1: 0x747ea6682b239da8f5e04b93, + limb2: 0x6ea818bd303ba94c1f2cc968, + limb3: 0x12a064cae2c76bf62ed31484 }, u384 { - limb0: 0xcfbae6ffed1c72ed4e998faf, - limb1: 0xa907bbb3668e178e21ad9fae, - limb2: 0x57bfb6fbcf3f951f8cfc5de9, - limb3: 0x140822d486c0b834f65f6ac2 + limb0: 0x12d6eebfd7403e9217b2b18e, + limb1: 0xabf7f443758d36e3195a082a, + limb2: 0xe096432b817fedfdd3e1ec6c, + limb3: 0xd5aab1540319196ffb170a4 }, u384 { - limb0: 0x60789a3f779ecd714f71d74, - limb1: 0xd12a0e6c4ced893c6e93ee75, - limb2: 0xcdb5776896a666bf6d81fdfd, - limb3: 0x5d1d9b6cad3c91dc62a82c + limb0: 0x9f08a841896fcad4240b5a51, + limb1: 0x702c510883126781e0a0d224, + limb2: 0x7a3c846a3a2c1356f448f7d0, + limb3: 0x13f345b11e7f78ede9880c46 }, u384 { - limb0: 0xb1e40dcac918a2d42e410ad7, - limb1: 0x4dea56ff231a56c12e264ce, - limb2: 0xfd7f53d3a63993cb4b607e18, - limb3: 0xe391f7ecd1db0588e3e118f + limb0: 0x78dae6353db728f888c96e71, + limb1: 0x2cbbe2a267c2693af367e916, + limb2: 0x3279e899d488aab5a0f0b331, + limb3: 0xd813f3ed134d8fa1644dc3b }, u384 { - limb0: 0x7b9cb771b3d82a2bf9855d74, - limb1: 0xe426519f5332146fcfd0d523, - limb2: 0x1c65b1c2a3b66919727c7099, - limb3: 0x1168cb16019beb095c9fe065 + limb0: 0x2256b160d645a67b803a4c1b, + limb1: 0x9ef42e9d6079aca8912584c8, + limb2: 0xb37159d8f446a918f3083680, + limb3: 0x493481804234aca717daa57 }, u384 { - limb0: 0xf883bb4482bcdbb53ad7ecf5, - limb1: 0x6ba8ed9c163e777f5cd6d835, - limb2: 0xe66bb45d284e4db4db324813, - limb3: 0xbea8bc6499f6b1a04982b1f + limb0: 0x404a8f7b21c4f49768cc9b6d, + limb1: 0xfd850a59f99f96297ec7a03f, + limb2: 0xf44d87ad17e4064df29937d, + limb3: 0x108e026b451ea7f34b03e04d }, u384 { - limb0: 0x720379c206f5b3788486e88e, - limb1: 0xd1c73a1a9dfd5aad7ef250f, - limb2: 0xc4d046032e75f0033a1a41df, - limb3: 0x117132e8eda315415888052c + limb0: 0x676001481384864737f79623, + limb1: 0x43d21fc0760ffe5cca1227e5, + limb2: 0xb327c2096a71789546ce915f, + limb3: 0xbb65761e3840a22923e9a5a }, u384 { - limb0: 0xc704f84fb0da0248ddcdc565, - limb1: 0x878a264e541dc906054e65b7, - limb2: 0x3dda82c9db159314ca2bb1da, - limb3: 0xeacc7202c0784d18704def2 + limb0: 0x41fb8fcfc298298bb67ed951, + limb1: 0xeb2f9fd1b274c13753e66a76, + limb2: 0x125a8ac6fcca7696cc0119dc, + limb3: 0x12ce40e89aa31e0c48e9b17e }, u384 { - limb0: 0xfa833ea20262504a64e265ac, - limb1: 0x2debf207fde0d5708fd21299, - limb2: 0xf789a770da0b0ae52664552e, - limb3: 0xb729c6e00d5089092e57eca + limb0: 0x6487f6d88482a43b5d44286a, + limb1: 0x8b94426f8e4215d9b5f631b3, + limb2: 0xabaa7ad3a73db19f228483e5, + limb3: 0x162be59dc601e95155ae78b3 }, u384 { - limb0: 0xc89056ec9b9588e7fd5b74fa, - limb1: 0x60886dae4808a67d92e440ab, - limb2: 0xb20b05758f21244b220cf288, - limb3: 0xa5f0904e99c4e02ae3b1357 + limb0: 0x52f8e9e7ac8c0cc662b64d2d, + limb1: 0x15843403ed5567c4c150e5b9, + limb2: 0x5d1ae203198d1a4b87392b8e, + limb3: 0x8a220a85128d41acaf087b8 }, u384 { - limb0: 0x9bfd7adfab5b3a7839187840, - limb1: 0xf1024685c53be4c3f3e5a224, - limb2: 0x3bf0ce14a3b14a45acfa0ee6, - limb3: 0x14532ccbfaa37667f8c4a757 + limb0: 0xa7543c9d40a21e6b2c018cc3, + limb1: 0xf0e63d1d87a37ae0285a92e5, + limb2: 0xb9240e43e9226caddbc298c7, + limb3: 0x174133829864e2c73869b566 }, u384 { - limb0: 0x718cee9aa865bc61639d7271, - limb1: 0x2378269cb80f1a11a3349986, - limb2: 0xfdaa096c4b3b3b6464cb957e, - limb3: 0x17886d2145376c01b8287b2 + limb0: 0x9ddabb3c89f47cc45028ce2a, + limb1: 0xeedeedfd93d787c4e8b17065, + limb2: 0x25a47874dd13ff54050e9650, + limb3: 0x181540a9209d7cc95173a8f0 }, u384 { - limb0: 0xfc29219c280e03de6b6c3cd1, - limb1: 0x5992564d263f34dc0cfb7be5, - limb2: 0xe700a219f48b84c4a71f9378, - limb3: 0x1284a8bdb9ca705934ab15fc + limb0: 0xdaed2660a5ff230a5edb6826, + limb1: 0x6f8b629c4e1dfba3d941d189, + limb2: 0xd9fe3017a9894e0dcdb8f18a, + limb3: 0x2ac145499f0bae525fdbe8f }, u384 { - limb0: 0xcc5d09ccffaa55d8b4e61f48, - limb1: 0x4c4b74571cd256f4393219c2, - limb2: 0xde39a5ea0977b5b83cb75fbf, - limb3: 0x752c0e4ed2cb68ea9f9c0a3 + limb0: 0x24d9cacd6fa96d47563f0810, + limb1: 0x9e62880e68213cef54eca7d7, + limb2: 0x2f4952f65caf8b35ca45b1e6, + limb3: 0x76485351c3244ebbdda82fc }, u384 { - limb0: 0x53668ebd0986a797188a8c58, - limb1: 0x187d953f4fba108444562cff, - limb2: 0x686628e9764add37f0d2d260, - limb3: 0xc88d6a0972fc4b6efdc8b6f + limb0: 0x3c7af92fcb15892946b231bd, + limb1: 0x7a23d11c9da05d0f5c1a5e0c, + limb2: 0xe6d9cc8f633fc6df1cfcdcd7, + limb3: 0x1043b80e317cd44a6d6cb94a }, u384 { - limb0: 0x5b75b5a7ab5b0911e1a4f491, - limb1: 0x368b15073a0d16d6bf854dd9, - limb2: 0x7bfe851501d59b9f68e9f4c, - limb3: 0x10f190c17f14d344d81c5bc1 + limb0: 0x8a0018c64fc1ede388b9f06c, + limb1: 0x2c6dd13e376d0554f0e5e9af, + limb2: 0x217e85cb06f91b9cf4619f5e, + limb3: 0xa31fe4ce1acc632d6535aae }, u384 { - limb0: 0xb46a7a67ebed23fb773f2537, - limb1: 0xee2d02b811e0bc438a478e0b, - limb2: 0xa6a905327d15b4fb4ee24ae5, - limb3: 0xb369e21ff78ff191a72cf5c + limb0: 0x57b8e928b11578ec61d9f7ab, + limb1: 0x4c0238a8cc7f74c7794cdab2, + limb2: 0xdeeec6219b375359c10e4c9d, + limb3: 0x183882c308736f91f012c6d }, u384 { - limb0: 0x3ebdf3a1bb742a56dbe93353, - limb1: 0x40c3206ce20c8cd16f9289f6, - limb2: 0x9568c6ed074eb8419638746c, - limb3: 0xac6260cdb1135715523b63a + limb0: 0xa38ee57aab4db83cc0c0ab7d, + limb1: 0x46831e6c8dd9f038a8eeae0f, + limb2: 0xb2b60c5f1b8a404445ac6e9a, + limb3: 0x1371ef241ba8bf98a6466e31 }, u384 { - limb0: 0xed1cc0e88a62824219b37ce9, - limb1: 0xfbab7cf8c624fada47d23532, - limb2: 0xb8b675edc60578261d9983b3, - limb3: 0x683177205d0f2c0f70ef93d + limb0: 0x3bf6587a61d4012a7ba04b83, + limb1: 0x549f8bd35e9a3b13af8d9f5e, + limb2: 0xbb8c7e0ad2385fe9567cc29c, + limb3: 0x2853accb2fcd66bfe6b85e0 }, u384 { - limb0: 0x5cbd140a0ebc581801dd3cc5, - limb1: 0xb7178446392a3cf67866926d, - limb2: 0xfbeedb1a33a7e1e233aab6d5, - limb3: 0x111938ca775937a325574621 + limb0: 0xd801b9782f1926f15f2708a6, + limb1: 0xb8f367f8068e5722408eb044, + limb2: 0x886d473c0ed54a59c8b0387d, + limb3: 0x181091a78bfb5e9f743d8762 }, u384 { - limb0: 0xba5811a4201f261ca010aac4, - limb1: 0xe299d2589750a5d3fd3c91cb, - limb2: 0xa422ba9a191172cec5b31243, - limb3: 0xeddf9184d5361c6238d709b + limb0: 0x438cf288e771599472a5526e, + limb1: 0xe81d529c0190d6b146c21308, + limb2: 0xf1c4408e67d8dc2057fa293b, + limb3: 0xe58746f565f526c5d03155c }, u384 { - limb0: 0xa36f31a114dfd552cdb52cc7, - limb1: 0xd8783484525b7017eeef6372, - limb2: 0x915d965d91b58a9f33b10d43, - limb3: 0x6e99df6a8bbe328860c37eb + limb0: 0x9f6a6df7200623e2e15b76a2, + limb1: 0xdcbbd33826446c6cb72dd7f2, + limb2: 0x3398543901474dc826e6949b, + limb3: 0x17d8d68422134dcf9b225a8b }, u384 { - limb0: 0x5af4af1c79dc37d29a622481, - limb1: 0x2b594d9a2064b60f0c818bf8, - limb2: 0x85dc0a9928ad28b7c3707572, - limb3: 0xe8b36fb38cf63e0a16c337d + limb0: 0x96570e66e6610aac72e6aed2, + limb1: 0x809ff6ce0dbcafe421a51f05, + limb2: 0xe4aa4350b86f57c80edbd4d, + limb3: 0x143b203d18c70a2c3549e34d }, u384 { - limb0: 0xb16fe478937ed200ee88a5f1, - limb1: 0x23721f4aef711093965adbb2, - limb2: 0x799bfda9d6158e9dcc858883, - limb3: 0x7aee0921e50015a2f45816d + limb0: 0x9193d7a0bf7f1b505cef9e84, + limb1: 0x27530086f2cee2660f39d337, + limb2: 0xdf0646132dad6339753ea961, + limb3: 0x21eea0b2e377e215f369ca5 }, u384 { - limb0: 0x807a23bf28a32f6cfa0fd240, - limb1: 0x285b34c82bb6d893de8ca8a2, - limb2: 0x96acc0c37c4b43e49f4503de, - limb3: 0x16e1692a695260af2f957caa + limb0: 0xd04959600b75b90540f205b4, + limb1: 0xcd8455c70d0098c7234c8078, + limb2: 0x6fe788663d4d3168c81b9ce3, + limb3: 0x616db3e981a3425be0a7a2 }, u384 { - limb0: 0x1b83d801fa11ec67510926a1, - limb1: 0x816e41d754be686517f60b06, - limb2: 0x912cbba9e7877d63079f4a95, - limb3: 0x13400b977035b80dd2eabb2e + limb0: 0x2d77b5fbe9db433105acf954, + limb1: 0x5a4009ff7e99f8ebffb2e98a, + limb2: 0x51ffdf293bef21cf6c6eee68, + limb3: 0x294f7541c9d9bdecf46e774 }, u384 { - limb0: 0xfa661370be0ce6438f9c5633, - limb1: 0x79a8a4264e55108e9ff97071, - limb2: 0x34aa95b856cf7427a5b22e40, - limb3: 0xe166b2391a7dbe375c6e87f + limb0: 0x3973b46e5b0edb78e96a6337, + limb1: 0x96b7f328e1c240c4445c3834, + limb2: 0xc1fc7a63a9b050d51440bbda, + limb3: 0x785174eaa67f2fa33909b87 }, u384 { - limb0: 0xcc9c9c02aa4fcceb45cac653, - limb1: 0xf26fa055d3adf708c4695e30, - limb2: 0x5d8c15d9c54a5b0966fb2e19, - limb3: 0xd13fda42ea21e67414ff528 + limb0: 0xd0e7517380c0ba5bb79d5a01, + limb1: 0x4614d62d5defbc74d8d7a151, + limb2: 0x1866a8621be9e94fdabb28c7, + limb3: 0x98fb6300447a52f3616fb71 }, u384 { - limb0: 0x1a190b895b564cb329d817ae, - limb1: 0xe12c63ef2374c66a03dff86c, - limb2: 0xf9d7b50b1ad606b2c32a53c, - limb3: 0x1616d02af14de1cfbd17cbf4 + limb0: 0xce4eccda4fce4e8c75a7352a, + limb1: 0xf16bdc7ee87b53a5e82cffeb, + limb2: 0xc4606b921784277f36337621, + limb3: 0x1767bcc869a11d8adc6e42f1 }, u384 { - limb0: 0xac63f77c75adfb405357d1ff, - limb1: 0x5762481b3acc9c6761bb1e6e, - limb2: 0xc70d4436ed2fadce03b68fe6, - limb3: 0x10e215f9665f15493a7ff38b + limb0: 0x3edb8b879b179ea8366d881c, + limb1: 0x169ebac9ec4259213968b3f7, + limb2: 0x7e5a01a3eb712a4cfc0c560f, + limb3: 0x6219432187d7ff1fc5d4867 }, u384 { - limb0: 0x68e5625f46f0635021c24d8c, - limb1: 0x3da4efe4b23cd8e2bac9eb49, - limb2: 0xb3f3b4fb7770b19ca6cc3679, - limb3: 0x96ca561e6c83c32660393e3 + limb0: 0x8d70b768dd084696486c2730, + limb1: 0x79f8154666baad6aa5355b37, + limb2: 0xdad413a5a8d8fe43d12c2b54, + limb3: 0x15287765b2986b3b61183d2e }, u384 { - limb0: 0xe2458af2162d26bbf03ef75d, - limb1: 0x8039fc346565b2106a24f2c5, - limb2: 0x7c64e6dfed9ff4ffc81abecb, - limb3: 0x10134026fe0c3141058a1643 + limb0: 0x12b8c8e2823152c7c58a2b94, + limb1: 0xfc4da7ba1ba1c60085cdd334, + limb2: 0x6b0e50a8ee1f77e1c515729f, + limb3: 0xe095dd5dc4e89696068434a }, u384 { - limb0: 0xe42f2552cbb1a5f4cfbc69e4, - limb1: 0x12633655eae263852780da86, - limb2: 0x5742f1e9c7b5d97673c8f836, - limb3: 0x1ee1eeddfc78bbd5159ebe7 + limb0: 0xa67bd8474e80fd28cca789e0, + limb1: 0x626e4cad3d2db14b78e7d1d6, + limb2: 0xa0b17ca88bcbbc817560e5d6, + limb3: 0x3a6d45854572b78c2263ccb }, u384 { - limb0: 0xec78e6bb5af14117750e653e, - limb1: 0x3c41f1d83d49db79a8815faa, - limb2: 0x629e03b5b6e9874cc6341404, - limb3: 0x10ed7ac754606cbf631c615a + limb0: 0x50e6cef658954cb8977d6c33, + limb1: 0x23b748e09ecb7fb9fc71c7c1, + limb2: 0x1da0be59e29cb5abfe98c974, + limb3: 0xbe9524bb8d7ba19f570c49f }, u384 { - limb0: 0x94d198ce8eff42461a55652a, - limb1: 0x9d82c6b2d4fcb8a0274fc4a6, - limb2: 0x7feeffbc22aaee9c18142f06, - limb3: 0xd300465af02c09217a51938 + limb0: 0xc11094ca0d9fd5f015814a4c, + limb1: 0xd6585ac7d8b483a0c5537fc, + limb2: 0x342727ac4d7cc4946433934a, + limb3: 0xeb9c52fd584f614281bd275 }, u384 { - limb0: 0x324f4bea6004951ad2d0f4a7, - limb1: 0x88c8fa48691711e4f1af5be2, - limb2: 0x3cdcf7cc70ab57c04b60e3dc, - limb3: 0x3d268b3c886aac48e921d62 + limb0: 0xb36fd7eeea73dcaf7f6e1ca, + limb1: 0x5c2266daccd053197e9630c8, + limb2: 0x8de08fd88c782cdd50f05c17, + limb3: 0x13ad3640489db585622bec2d }, u384 { - limb0: 0x22dc808c72565b3493f6b424, - limb1: 0x4d4d1a5ffc2d0429f9541eb8, - limb2: 0xd1c97618b8dde6bbb54f1682, - limb3: 0x549be90142d42df0734648f + limb0: 0x8d25eb61d0917aedaa203b03, + limb1: 0x19c66293a078bd475b83fa1f, + limb2: 0x4899256cdfaf3b78904a9657, + limb3: 0x14fc015f336c2fae0ba0e5d1 }, u384 { - limb0: 0xf81b80827f32425294142640, - limb1: 0x5ce0835cc176d4c00d609ad5, - limb2: 0x285811fb5646a5732faa8f52, - limb3: 0x16bf60572f21a1884e17ce20 + limb0: 0xd07bcf1fa64d13cd8a9097c4, + limb1: 0xa349ab74b5a947f23ff007e3, + limb2: 0xe5260f2ac6a6b0bb5b46c417, + limb3: 0xf7bfb970b528b4b9fae490a }, u384 { - limb0: 0xebcee2561ee4f0745381b866, - limb1: 0xae8acd76dfa181f9186ebb8c, - limb2: 0x1b2a0a3d2198159d98bf07ab, - limb3: 0x6b4b13478ebeafa41673e59 + limb0: 0xf937c7eafdd7c42426b00ebe, + limb1: 0x8fb6ec259904060b238a4f0c, + limb2: 0xeea2eedba516080e61b4f6d, + limb3: 0x18555b780609caa6d0cb0417 }, u384 { - limb0: 0x9d30da1a8eb3156d4fc0e676, - limb1: 0xc2d66c0476719a58448acdfe, - limb2: 0x85240efc9de4e79df662c4bd, - limb3: 0x93128ef0a4b420ad4c2cd90 + limb0: 0x34bca95e3f96c8f8b6b5a191, + limb1: 0xe3d7af77d24e1123a970c9c, + limb2: 0x7245e00a7fec5e855510eda6, + limb3: 0x126c2e3e8f82b756ab63a041 }, u384 { - limb0: 0x6153d2167b3feb8d84fb6d30, - limb1: 0x9d64bc42e8cb04771e83e48b, - limb2: 0xe626508a7b0e4ae2208c2c30, - limb3: 0x11bd065931b7afe59b2fdb5a + limb0: 0xeef8e93607614421e26f1224, + limb1: 0x478b6ba88197dff4715f19cc, + limb2: 0x20105a60ba2ab47d25e6dbd9, + limb3: 0x70eb1b71ee80e4bcae932f6 }, u384 { - limb0: 0x5798092bb3b71a3451ef7728, - limb1: 0x9190b3bcbe38c01155bbfabc, - limb2: 0xcb6132c9a2d5b4125789a13f, - limb3: 0x96bd69d52e32f0a8f9b137a + limb0: 0x36302ca9ea2ebd5c1528ce4, + limb1: 0xcd0bda2fe4dcdcbd5e5e0f95, + limb2: 0x51185896890885859d1e845f, + limb3: 0x18aa78beb5195767390ecff4 }, u384 { - limb0: 0x140a37451bc6a9bf3196f720, - limb1: 0xff23e62d36d50b18d5e4c53b, - limb2: 0x2bc6eb609faae235cf44254f, - limb3: 0x1a78ba99a88793c7596c4c3 + limb0: 0xd37d81b972abe8315debd29, + limb1: 0xa130f42959767c3e87b8cf47, + limb2: 0xf342b8d8e8aebd4518b5245d, + limb3: 0xa73a32ef177b50d3662ba67 }, u384 { - limb0: 0xdf8ccbd43ffa8b1467bd5499, - limb1: 0xb35b759eac45b01ea2a587eb, - limb2: 0x8bf9a412372c2dfd47fbf8a4, - limb3: 0xbcf88c244e6dc971db4676e + limb0: 0xa2f75443547cb906deb480bf, + limb1: 0x2930d5d862ffb28424662dd, + limb2: 0x45752ebf9fc6de30fa380a5a, + limb3: 0x11502d2e5e21ac43e917c074 }, u384 { - limb0: 0xb107d67d65d3c7af09a8dded, - limb1: 0x602e5efc56d80d8dc6dea2e6, - limb2: 0x2220382f8a86fd745b5f0e1f, - limb3: 0x4e7a8510c25b8d7d6b84d14 + limb0: 0xe715a44c794a7e0f884ebc18, + limb1: 0x73e650d26092964acf629274, + limb2: 0x43c55bb4ddc43f319c2561e4, + limb3: 0xfad15687e891b1eb735171b }, u384 { - limb0: 0x25318a82e6a1fb8d2eae38d1, - limb1: 0x1c54f4d35830029349588170, - limb2: 0xa535935db561a8982bb7393f, - limb3: 0x18392765938f8aa81a56575e + limb0: 0xc2f698d63ca028b98a6d9aea, + limb1: 0x73fcf20984a4ab126ecce076, + limb2: 0xfc9a973c051884a070acb816, + limb3: 0x17b570f4e7dc3ae239907760 }, u384 { - limb0: 0x30d15320b43b6c989c70a2e8, - limb1: 0x25efc501bd346f41dd38882c, - limb2: 0x3e0582669719c193d7e61842, - limb3: 0xd03f4317a4cefa9e8387292 + limb0: 0xaf976e42a58efa388af0e932, + limb1: 0x974b9e6e69c2a1f0d111a407, + limb2: 0xfdcc81597dfa49a160bc4fe9, + limb3: 0x9779fd42cd81ab36e9a2842 }, u384 { - limb0: 0x1fb16390713b6677a3a3ec06, - limb1: 0x6ec3cdce847587ad7d2babcb, - limb2: 0xe9e85740dd77d07edf17886a, - limb3: 0x3185801d6333ba1e3c6a664 + limb0: 0xeba568c8d48ea9247d48da86, + limb1: 0x31028ed5ce52e5bb1399de93, + limb2: 0x2c3517df64b4203368ed495d, + limb3: 0xea96c78b74a7dc6ca65fcd2 }, u384 { - limb0: 0x3776c1f556cea07d9a1e1d46, - limb1: 0x91960644e9735a8eb3ec26e0, - limb2: 0x78b7154fd2345075e424cbc7, - limb3: 0xbe7fb4b5b2da6b01816aa04 + limb0: 0xf97689d41c97c408554df47e, + limb1: 0x3fbca2694c7127674a73c09, + limb2: 0xc1629f5d7a9cc060de3e3a93, + limb3: 0x115729f70cc43fd02000607c }, u384 { - limb0: 0xf46b7ae210dd247dcfe9bd48, - limb1: 0x3a4737743a3033b0cd894067, - limb2: 0xe8e086afb3f0d45c67bc2cd6, - limb3: 0xb2e407915f7b7e26edc66eb + limb0: 0x118ab651b6dad5a06c3934c2, + limb1: 0xc2aecf4b70ab6c521acafcd3, + limb2: 0xf3360109e2c7e3b486b12389, + limb3: 0x17e47b2737336dc89e3118e2 }, u384 { - limb0: 0x206fa51f548ce80a9f0c3d3d, - limb1: 0xa7433ee2e7b29ba9f8817da2, - limb2: 0xa7a7f14af39392eb797618f3, - limb3: 0xe232613e7dcf41478b13af + limb0: 0xb55c665c5800d68992578fb, + limb1: 0xda3a2aea858214dfd3c14a9a, + limb2: 0x8fea9a10fa33d1a919753afe, + limb3: 0xdaa852dd4e69699b9ec6ddc }, u384 { - limb0: 0x93a64c8f0b1439b433e6386c, - limb1: 0x7031f8dc83c5e408867b1917, - limb2: 0x1d2e5084c86ad7e849e3b1a5, - limb3: 0xfd7cb89f91b7f805261f846 + limb0: 0xd54bcb3fe9bdf25a3a4daf9e, + limb1: 0x6c18e602b7827a15c04c79cb, + limb2: 0xbd50d1bb8e5dd1598c877956, + limb3: 0x163474135b8f40f19e415488 }, u384 { - limb0: 0x9a6b004b0fcbd773cde2617f, - limb1: 0xa87f08e8b644e5f8ec0dfe4a, - limb2: 0x7575e96a8710424e01fc81dc, - limb3: 0x15973cdd108b86956e8ab76c + limb0: 0xf3ed6e343e2c3bc6160e6e79, + limb1: 0x1aa65941c9a97402cfb93fe8, + limb2: 0x3b1777005f029a19938d8eb0, + limb3: 0x10c9c8b830679bd068ca253b }, u384 { - limb0: 0xcef000bb0600a0a6a17938b4, - limb1: 0xc6ea3a5994eb00d8a4a151ea, - limb2: 0x7f931b7f1f19ccfa71b2c8cd, - limb3: 0xeabca6c41857c23d6737118 + limb0: 0xdbfbc9ebb4d95831e9e2805a, + limb1: 0x25a303f91fbfd9aae10c331d, + limb2: 0xce0a31138c35124e586161ec, + limb3: 0x106b7ac16ffc67cf8012417d }, u384 { - limb0: 0xf8829eacb2e61726f78c18dc, - limb1: 0x1edfda4a839f1dc4ba5d5539, - limb2: 0xb045b4d071fcd0e9af75d7f1, - limb3: 0x17cefc4c23083de8e10bec74 + limb0: 0x565d4552b2dee52d0f668cf2, + limb1: 0x37b94f8089b9e90e94bef32e, + limb2: 0xa00cd6632b921f5332f93b33, + limb3: 0x16f25ae6f9cd30da6e99b4ed }, u384 { - limb0: 0x215a0be02f92a05934ea861e, - limb1: 0xf24189b5dbab581a9832cce4, - limb2: 0x31940a4cfe967ecb1407e933, - limb3: 0x14680801d9dd6c63b9681569 + limb0: 0xa8ee5961d79366b3d5943987, + limb1: 0xe2d7554eb07b8ab43e18fc03, + limb2: 0x3a764b8c918727268c15ef80, + limb3: 0xf116ac9b10df307a601ded3 }, u384 { - limb0: 0x99542fb90ad27f0baee06dff, - limb1: 0xe15d3a93ef7253e99f402a64, - limb2: 0xee5906abb9ef9a9497d11970, - limb3: 0x6d33b9f446dcc56d98c7993 + limb0: 0x489d978db736cc63b13fe637, + limb1: 0x643040f36b3b805abde8e62a, + limb2: 0xddab1b3cdac5a66ff7fa96c1, + limb3: 0xebaa51308a6e8a5bfeff633 }, u384 { - limb0: 0x377f9c8f5cf821477f68133a, - limb1: 0xd2d40482582f2acd5e0a7de5, - limb2: 0xc2a22b864cc6d931c948c2b8, - limb3: 0x5220c280a7511e25ea626d6 + limb0: 0x48e5740b86efd742eee3245c, + limb1: 0x86605f0f664611ac11565e5e, + limb2: 0x6adea6b556c3b46f40e69b1, + limb3: 0x24a52f02942d41ef71806c2 }, u384 { - limb0: 0xd61bebce4a9615becfa9e522, - limb1: 0xdd2aec184ce7cad415e75db9, - limb2: 0x66a810c2b169bda05c9cc193, - limb3: 0x1381c0c0e334c3f063225dbb + limb0: 0xf7b37254f7e999db41f5436e, + limb1: 0x9b9904005067c13b6b87d825, + limb2: 0xbb44d5933aadcf7885f2cfc3, + limb3: 0x1021547dedb3bc5c2d8233c6 }, u384 { - limb0: 0xc43b346ccc9878e9e6e108a5, - limb1: 0x2e967ea607885f2bda79d156, - limb2: 0x530e9b71f0ef8d169684d2f8, - limb3: 0x144b000bf975c9d65965e0e + limb0: 0xb879d8d9c4f8242b0435702, + limb1: 0x62cbeef11bdb3be23d61643c, + limb2: 0xe4b55474006b4147fa931f36, + limb3: 0x16f6e4ad0e8e9869ebbb6387 }, u384 { - limb0: 0x7eca88a44cf10f40ab7eb07f, - limb1: 0xafab2ff50a0e2a8762910f65, - limb2: 0x4ffda398e315c33ab1e0bc02, - limb3: 0x12ccc1866a085023418854de + limb0: 0x11a50490a3947262e2378540, + limb1: 0xa7bb06c66b7fb8e8d3a09db0, + limb2: 0x50010b811e9c9562094eb3c2, + limb3: 0x128f415f641f8f3f827b0f6d }, u384 { - limb0: 0x826a78d48e7c25d3e2b75002, - limb1: 0xc41ee223ae689110106d0e1a, - limb2: 0x2f52e52eecd737135c1bb5f0, - limb3: 0x15cb41178de119573b49aea2 + limb0: 0xe65949b0e8f7fdc852eef5ff, + limb1: 0xe70bc64e04b35b0e1c619ef0, + limb2: 0xd0a97da8368c5c32db26cf98, + limb3: 0xc34b7632f7eacf863dc052e }, u384 { - limb0: 0xc298c07e2c1945321293e713, - limb1: 0xf8bf8e519a292ec5d8eb6567, - limb2: 0x667c0b3be5ebd609c94ffc6f, - limb3: 0xc82eb6310059099a453790d + limb0: 0x15d08e7c62dfd88fcb98177b, + limb1: 0x4c2f39533b6fcad3c4793f61, + limb2: 0xd9cdb19e87aceb3a0cb8162c, + limb3: 0x3418cd59104763ba746ce22 }, u384 { - limb0: 0x5061f1d0a15e98a9f964bf6f, - limb1: 0x6712f7e71d80a548f13cb408, - limb2: 0x4ab5632f7ceff2df5cc789b2, - limb3: 0x73f7495b6e2a3f67c4a008e + limb0: 0xe1e3eb4a7f1cc46253fd21db, + limb1: 0xda276d04975f3c8fd0ebb3ae, + limb2: 0xefb1d67e7d5b535f0be7f69, + limb3: 0x1968c06bae09dfcfd490698b }, u384 { - limb0: 0x856730d9a7be7832c63a4171, - limb1: 0x41c7491590dfbb638c3bbb6a, - limb2: 0x5fb2fbe2cea6f47ba6a6d828, - limb3: 0xe1b4321baf3b20c6171572c + limb0: 0xaff772f3fb0df6a83a06e103, + limb1: 0x285a2df4977c395f8b0fffee, + limb2: 0x38829237b92af85bafa816d1, + limb3: 0x15ee3c5ac4d89ca8a974344 }, u384 { - limb0: 0xd0960609e7235c4511cdf659, - limb1: 0x836e49031fa64769dd139244, - limb2: 0x314d9efe9de50541fcb70827, - limb3: 0x17f9e35052465f428076e19a + limb0: 0x2780004ebec9db58e6395f07, + limb1: 0x55e721a4f0f938edd35e0c7f, + limb2: 0xef485c4121ed34a5322eada1, + limb3: 0x198d0de1e8f2a035742c5ddc }, u384 { - limb0: 0x8baff5b9586c561f670af4a2, - limb1: 0x52644a91e094b69e14748f88, - limb2: 0x9f33d360c0882aae1b5707c5, - limb3: 0x84c9915b931b6c68e0adc73 + limb0: 0x3a905b19b5fe03b7ea72cda3, + limb1: 0xf9446fc2f1ef2f0fd27ff31c, + limb2: 0x6a8f3434395e78572bd2dec7, + limb3: 0x94f514c0abc3c9585219e93 }, u384 { - limb0: 0xdc8dec693ecc7b36c01e99b6, - limb1: 0x6512a29bae26632173aab3c0, - limb2: 0x23ae9ec17beee0000c998a19, - limb3: 0x19235b42db96341ff1bb0c2d + limb0: 0xbf1ca934348f795012ebd9e0, + limb1: 0x66fc6fa19a6b277b0b946b96, + limb2: 0x99d190e7e0c955e4060b644e, + limb3: 0x1540618e1c45b4e3a0345c0c }, u384 { - limb0: 0xa12faf13e256b86244ac042, - limb1: 0x2f75fec3f90a46f42be458ef, - limb2: 0xd588c65bbc47bd0562516bae, - limb3: 0x26832fcaa5c358be0d71678 + limb0: 0x583308462e64ea1d3ed78974, + limb1: 0xfa50ca7cf5d93de25a608ee, + limb2: 0x5258574c860ba0a0eea1692e, + limb3: 0x93c78ea322d320a66188d6c }, u384 { - limb0: 0x9d1a0e464d6bf101ce19e6e, - limb1: 0x98098dfcd2a2d1719b827024, - limb2: 0xbe02afd1240bb182d419e435, - limb3: 0x10f3433acfcbd5a3144b8223 + limb0: 0x3f9b32e0130487aa0dffe2d3, + limb1: 0x95f613a790ab85d0c68dbe2d, + limb2: 0x2873d651e209343ba9d9498e, + limb3: 0x150035bc6b41041f939015c6 }, u384 { - limb0: 0x8c78b7b22f4cda38bac41014, - limb1: 0x125de1b41b13c148edaa5f1c, - limb2: 0x74b3ac2006bbb2c88ad35758, - limb3: 0x135bb697fa4fa445236ec20e + limb0: 0x92fd2ff9adb02cee75fb4cfb, + limb1: 0x77856573bb8813eae7836d12, + limb2: 0x710a8706f71a00e2e00444dc, + limb3: 0xf8d9e3b089857d83c93d24b }, u384 { - limb0: 0x651e9617d526b5fcf5c9e962, - limb1: 0x5080a8d79558f88566493047, - limb2: 0xf060169339192b5da0a2d3c7, - limb3: 0x18318efbb37e75066584cd1 + limb0: 0x7a9fd0266d77a72adaa605b6, + limb1: 0x2dad450e5acb506dcdaf14bf, + limb2: 0x50e03cda42d4fc40fb1262a2, + limb3: 0x19d850387069a5f2774b7153 }, u384 { - limb0: 0x43d02c716a389a0d341789dc, - limb1: 0xcdb29e5f56cff7f320bba40c, - limb2: 0xc37677a3474f6c05ceb371f5, - limb3: 0xce7da946a8aae44779cad0f + limb0: 0xcb532108a72e0ad94fab1c12, + limb1: 0xa40deea557edfcf963510c1d, + limb2: 0x352ddfa7820010e93df5eaff, + limb3: 0x1014482407ed22d359072aed }, u384 { - limb0: 0x75025637ad1a29944c8b9bf7, - limb1: 0x91bfda3ab8d5b354b216e82c, - limb2: 0x2171ca5014cafa6f126a1f73, - limb3: 0x8cc2a71924fd636d71957f0 + limb0: 0x6c4b3edb9e45b5c2065e21d9, + limb1: 0x366a7972107abb797de9bf37, + limb2: 0x9ff6288aab160e873b5d0055, + limb3: 0x2d273acd3d1bbe2ed538f72 }, u384 { - limb0: 0xacb8aba85a0b514c9775cac7, - limb1: 0xed006fd645955d9627ce2cdc, - limb2: 0x8dc3a07d7914fc5b65476c9c, - limb3: 0x137ab563b011dc31b3fda33a + limb0: 0xacc9e075f77cbfeff33867df, + limb1: 0x2fffd966f39575365819522e, + limb2: 0x13912509c7e8cf8b0d4dc884, + limb3: 0x81ec03e574ab464fbfa8711 }, u384 { - limb0: 0x40966f39d54dc1f71c464384, - limb1: 0xfca25cd327c161879a6949ad, - limb2: 0x7f2329cb2337eb5cf2232dfa, - limb3: 0x7be7e820d4e617e9e610788 + limb0: 0x5128961c4227b043d8dd003e, + limb1: 0x99f460ed6cc77db45a2e749e, + limb2: 0x18eac0897035cdc5aef2a3a2, + limb3: 0xb504ae72390a744677e6287 }, u384 { - limb0: 0x450e35745301254912765eb8, - limb1: 0x56d97bedfec1e55bb8baeb86, - limb2: 0xc3cbb9f70c38c9189c8c2bdd, - limb3: 0x9d02cd6fc6b99873cc8ac30 + limb0: 0x6210058c9a421b2f89656073, + limb1: 0x30a877aac2cf1a23631f6353, + limb2: 0xdf43564a55484f3badb56d18, + limb3: 0x159fe9bbfd6800970a8f8421 }, u384 { - limb0: 0xbef258c2248143e16d25a4e1, - limb1: 0x95b763368c5e54711df7242f, - limb2: 0x5ce08447662734e8c12b29cd, - limb3: 0xaf252f0df08c1fb1ee2d160 + limb0: 0x41e3e3770ea10f438afd5cee, + limb1: 0x15c986c55098bdbfa032f9cc, + limb2: 0xf9cf4b23908b2fcc0f9e5153, + limb3: 0x6aeeb595ac6206f2158689e } ], }; let small_Q = E12DMulQuotient { w0: u384 { - limb0: 0xfb9fb94a15b9029dcd558d38, - limb1: 0x21009460b02b31cdd28c64ee, - limb2: 0x38ab781d1596eff210c40edd, - limb3: 0x17f59bc6618fca8ec3b9bebd + limb0: 0xb4b9478e35cec0c05450416d, + limb1: 0xf3968ed36a418905999866ba, + limb2: 0xfefaa8a111ed6618bd5eda70, + limb3: 0x94c10ebd6bb58a7984cace8 }, w1: u384 { - limb0: 0x7d1f39435d49006a0024e0e3, - limb1: 0x37b0a5c39482bee3a12a5cf1, - limb2: 0xf48a49bb15c505cda1a02276, - limb3: 0xe0cbcda6a8c9cb593e77e96 + limb0: 0xd1f5cd81b3f293267d8ea04b, + limb1: 0x81896e37eaf120d90e423a51, + limb2: 0x9c9e2a5cbca45237a40f3d0b, + limb3: 0x3edb6e040b5509dd89db8aa }, w2: u384 { - limb0: 0xa1826fd7e2942e2c05a4d806, - limb1: 0xa7d6c728dd3a81a5cb7caa6d, - limb2: 0xbc74e8dc5a15bfbde9884e7a, - limb3: 0x310d4fb81dde42922fc187 + limb0: 0xcc5511c9755e825eefd2e612, + limb1: 0x11c1159fb5016396e8060653, + limb2: 0xe11b5199b288e076837a098e, + limb3: 0xc10e9db003388a78316822c }, w3: u384 { - limb0: 0xd65487363cef0153a56b15b8, - limb1: 0x7cae72d5086f88dc4615601e, - limb2: 0xe133c91216f0594c1500d97d, - limb3: 0x10ba969ab9b693a03b91d434 + limb0: 0x5145822fbd04dce4358994a3, + limb1: 0x1f85b827f0d50748ff242b27, + limb2: 0x8bed4abafb0542dfaadda417, + limb3: 0x124c13e3f4b6e879c8fb992a }, w4: u384 { - limb0: 0x14202a9fdc3bca81353f9b5c, - limb1: 0x8ac24a84727eb4630e3ff326, - limb2: 0xea98c21ced719ae51adb7899, - limb3: 0x33fc5bf4b736a3d2a8d9db0 + limb0: 0xaf0363d68180922026e827a4, + limb1: 0x9981546cd84c3e47b779451d, + limb2: 0x9341a82fb9f0677665095f30, + limb3: 0xe9ce32f6964afb569e2fbf0 }, w5: u384 { - limb0: 0x7b6d71aef47a3e42f765e691, - limb1: 0xe9bb5cfb54f2948b0883e714, - limb2: 0xabe7f0fc7ddd602f690544f2, - limb3: 0x410b28b8c371332541bc64d + limb0: 0xfc22f3cd8e720f43a3121228, + limb1: 0x305aea80c039916d5a7cc5a8, + limb2: 0x128c312f35c370c7f2a5a718, + limb3: 0x15787bf40ee1ec4fcda689dd }, w6: u384 { - limb0: 0x85b05a1e7cb09258190b57f, - limb1: 0x8530f42f5f1d28d2aa46f025, - limb2: 0xb5e224bbc7d0a8f8cb440baa, - limb3: 0xddeca6b357f36824d1da30 + limb0: 0xfea2207bf83b083edaec48d, + limb1: 0x56ec0628b19c88ac3509ee59, + limb2: 0xdce6df9d6356a49cfa7be939, + limb3: 0xa129c5eacf5007b4017903f }, w7: u384 { - limb0: 0x7204c0a867b29807885291f0, - limb1: 0xd1088a8ceb2bc599fce1b2d7, - limb2: 0xbcc9665fc37dc06413fa3069, - limb3: 0xe99d09953e33c6f2ab2f692 + limb0: 0x7f35eeca0fe509ee67c64e16, + limb1: 0x22974c5959938b9f3e46105a, + limb2: 0xc7c4600f40ead9eb9490a9f4, + limb3: 0x15046bc6339839205648fadf }, w8: u384 { - limb0: 0x602740892ea03c99059d0b2a, - limb1: 0x4eda4fd58ac84b7f0a30036b, - limb2: 0x5607e188fbbc773f211b336b, - limb3: 0x1844b0d0a85c391350226bfb + limb0: 0xa21448412d3ffb80428de754, + limb1: 0x827ced6dae74bf5e96a32255, + limb2: 0xf9bbd39a28016ed731e6e059, + limb3: 0x722ec481af965758ec54dc5 }, w9: u384 { - limb0: 0xced4fc9e9cef50d8ede1e3da, - limb1: 0x3c85dd33a989fe61611de981, - limb2: 0x6fe41ecf134d4aa90afd72bb, - limb3: 0x133c3837e32ea03a2793a5da + limb0: 0xce216ae1d8e14bf7271ac16c, + limb1: 0xb94e6791ac77a6a0433d62b9, + limb2: 0x3e111b324effa05625e27a94, + limb3: 0x2b40e9025d3fe7aa42ca1f3 }, w10: u384 { - limb0: 0xbe6e990c0e386d4937fc17bf, - limb1: 0xaf018f13a1a2f1b9e3370d61, - limb2: 0xb2a2793589c9d877e9b85b11, - limb3: 0xe547ddb6343ab85ed814ef3 + limb0: 0x7f4b9395f1c7a7d77553cf29, + limb1: 0xc3eeea4ae7ec1466beeb517b, + limb2: 0xe20ce2e2665a4ccd9a181970, + limb3: 0x2b7631391bb1216581a4719 } }; diff --git a/src/cairo/src/utils.cairo b/src/cairo/src/utils.cairo index 2886631b..1795c40e 100644 --- a/src/cairo/src/utils.cairo +++ b/src/cairo/src/utils.cairo @@ -10,6 +10,46 @@ use garaga::definitions::{ const STARK_MINUS_1_HALF: u256 = 180925139433306560684866139154753505281553607665798349986546028067936010240; // (STARK-1)//2 +fn u384_assert_zero(x: u384) { + if x.limb0 != 0 { + panic_with_felt252('not zero l0'); + } + if x.limb1 != 0 { + panic_with_felt252('not zero l1'); + } + if x.limb2 != 0 { + panic_with_felt252('not zero l2'); + } + if x.limb3 != 0 { + panic_with_felt252('not zero l3'); + } +} + +fn u384_assert_eq(x: u384, y: u384) { + if x.limb0 != y.limb0 { + panic_with_felt252('not equal l0'); + } + if x.limb1 != y.limb1 { + panic_with_felt252('not equal l1'); + } + if x.limb2 != y.limb2 { + panic_with_felt252('not equal l2'); + } + if x.limb3 != y.limb3 { + panic_with_felt252('not equal l3'); + } +} +fn usize_assert_eq(x: usize, y: usize) { + if x != y { + panic_with_felt252('not equal usize'); + } +} +#[derive(Copy, Drop)] +struct PoseidonState { + s0: felt252, + s1: felt252, + s2: felt252, +} // Returns true if all limbs of x are zero, false otherwise. fn u384_eq_zero(x: u384) -> bool { diff --git a/src/cairo/src/utils_calldata.cairo b/src/cairo/src/utils_calldata.cairo index e885824b..6d5e3e3f 100644 --- a/src/cairo/src/utils_calldata.cairo +++ b/src/cairo/src/utils_calldata.cairo @@ -491,7 +491,7 @@ fn parse_msm_hint( let SumDlogDivHigh = parse_function_felt(hint.slice(24 + ff_total_len, ff_total_len), msm_size); let SumDlogDivHighShifted = parse_function_felt( hint.slice(24 + 2 * ff_total_len, 14), msm_size - ); // Msm size = 1 for last FF + ); // Msm size = 1 for last FF let start_index = 24 + 2 * ff_total_len + 14; let y_last_attempt = u384 { limb0: downcast(*hint.at(start_index)).unwrap(), diff --git a/src/fustat/README.md b/src/fustat/README.md index 84c65f59..9cb10a72 100644 --- a/src/fustat/README.md +++ b/src/fustat/README.md @@ -1,3 +1 @@ Fustat directory contains CairoZero source code only. - - diff --git a/src/fustat/modulo_circuit.cairo b/src/fustat/modulo_circuit.cairo index 7ee22a33..700771be 100644 --- a/src/fustat/modulo_circuit.cairo +++ b/src/fustat/modulo_circuit.cairo @@ -159,7 +159,7 @@ func run_extension_field_modulo_circuit{ %{ print(f"\tN={ids.circuit.N_Euclidean_equations} felt252 from Poseidon transcript retrieved.") %} %{ - # Sanity Check : + # Sanity Check : assert ids.Z == EXTF_MOD_CIRCUIT.transcript.continuable_hash, f"Z for circuit {EXTF_MOD_CIRCUIT.name} does not match {hex(ids.Z)} {hex(EXTF_MOD_CIRCUIT.transcript.continuable_hash)}" %} @@ -253,7 +253,7 @@ func run_extension_field_modulo_circuit_continuation{ ); %{ - # Sanity Check : + # Sanity Check : assert ids.Z == EXTF_MOD_CIRCUIT.transcript.continuable_hash, f"Z for circuit {EXTF_MOD_CIRCUIT.name} does not match {hex(ids.Z)} {hex(EXTF_MOD_CIRCUIT.transcript.continuable_hash)}" %} diff --git a/src/fustat/utils.cairo b/src/fustat/utils.cairo index 785de3bb..6b7a0463 100644 --- a/src/fustat/utils.cairo +++ b/src/fustat/utils.cairo @@ -266,7 +266,7 @@ func write_felts_to_value_segment{range_check96_ptr: felt*}(values_start: felt*, let d1 = [rc_96_ptr + 1]; let d2 = [rc_96_ptr + 2]; %{ - from hydra.hints.io import bigint_split + from hydra.hints.io import bigint_split felt_val = memory[ids.values_start+i-1] limbs = bigint_split(felt_val, ids.N_LIMBS, ids.BASE) assert limbs[3] == 0 @@ -299,7 +299,7 @@ func felt_to_UInt384{range_check96_ptr: felt*}(x: felt) -> (res: UInt384) { let d1 = [range_check96_ptr + 1]; let d2 = [range_check96_ptr + 2]; %{ - from hydra.hints.io import bigint_split + from hydra.hints.io import bigint_split limbs = bigint_split(ids.x, ids.N_LIMBS, ids.BASE) assert limbs[3] == 0 ids.d0, ids.d1, ids.d2 = limbs[0], limbs[1], limbs[2] diff --git a/tests/benchmarks.py b/tests/benchmarks.py index de510610..e006b2ee 100644 --- a/tests/benchmarks.py +++ b/tests/benchmarks.py @@ -1,32 +1,33 @@ +import random +from random import randint + +from hydra.algebra import FunctionFelt, ModuloCircuitElement from hydra.definitions import ( - STARK, - CurveID, CURVES, - PyFelt, + STARK, Curve, + CurveID, + EcInfinity, + G1G2Pair, + G1Point, + G2Point, Polynomial, + PyFelt, + direct_to_tower, get_base_field, get_irreducible_poly, - tower_to_direct, - direct_to_tower, precompute_lineline_sparsity, - G1Point, - G2Point, - G1G2Pair, - EcInfinity, + tower_to_direct, ) -from random import randint -import random from hydra.extension_field_modulo_circuit import ExtensionFieldModuloCircuit, WriteOps -from hydra.precompiled_circuits.final_exp import FinalExpTorusCircuit, test_final_exp -from hydra.precompiled_circuits.multi_miller_loop import MultiMillerLoopCircuit -from hydra.precompiled_circuits.ec import DerivePointFromX, ECIPCircuits, BasicEC -from hydra.hints.tower_backup import E12 from hydra.hints import neg_3 -from hydra.hints.neg_3 import construct_digit_vectors -from hydra.hints.io import split_128, padd_function_felt -from hydra.algebra import ModuloCircuitElement, FunctionFelt from hydra.hints.ecip import zk_ecip_hint +from hydra.hints.io import padd_function_felt, split_128 +from hydra.hints.neg_3 import construct_digit_vectors +from hydra.hints.tower_backup import E12 +from hydra.precompiled_circuits.ec import BasicEC, DerivePointFromX, ECIPCircuits +from hydra.precompiled_circuits.final_exp import FinalExpTorusCircuit, test_final_exp +from hydra.precompiled_circuits.multi_miller_loop import MultiMillerLoopCircuit random.seed(0) diff --git a/tests/fustat_programs/sample_groth16_input.json b/tests/fustat_programs/sample_groth16_input.json index 3285d142..6655121d 100644 --- a/tests/fustat_programs/sample_groth16_input.json +++ b/tests/fustat_programs/sample_groth16_input.json @@ -35,4 +35,4 @@ "input_1": 13630543870832548245486205251095070353732552187251924897575030362759902904563, "input_2": 162293819954371680461551288230016133027961592341006905831869429197623161310, "input_3": 335454208347774977187488698124679955736871218687692995704073124237365188281 -} \ No newline at end of file +} diff --git a/tests/fustat_programs/test_fustat.py b/tests/fustat_programs/test_fustat.py index 84552157..86d79d25 100644 --- a/tests/fustat_programs/test_fustat.py +++ b/tests/fustat_programs/test_fustat.py @@ -1,4 +1,5 @@ import os + import pytest diff --git a/tests/gen_inputs.py b/tests/gen_inputs.py index 186592d6..7b17da33 100644 --- a/tests/gen_inputs.py +++ b/tests/gen_inputs.py @@ -1,8 +1,9 @@ -from hydra.definitions import CurveID, CURVES -from tools.make.utils import create_directory import json import random +from hydra.definitions import CURVES, CurveID +from tools.make.utils import create_directory + random.seed(0) INPUTS_DIR = "build/program_inputs" create_directory(INPUTS_DIR) diff --git a/tests/hydra/algebra/test_pyfelt.py b/tests/hydra/algebra/test_pyfelt.py index 42a24446..1cd971dd 100644 --- a/tests/hydra/algebra/test_pyfelt.py +++ b/tests/hydra/algebra/test_pyfelt.py @@ -1,7 +1,8 @@ import pytest -from hydra.algebra import PyFelt from sympy import legendre_symbol, sqrt_mod +from hydra.algebra import PyFelt + # Define a prime number for the finite field p = 101 diff --git a/tests/hydra/circuits/test_multi_miller_loop.py b/tests/hydra/circuits/test_multi_miller_loop.py index b7442fdf..fe7a540b 100644 --- a/tests/hydra/circuits/test_multi_miller_loop.py +++ b/tests/hydra/circuits/test_multi_miller_loop.py @@ -1,14 +1,14 @@ +import copy + +import pytest + +from hydra.definitions import CurveID, G1Point, G2Point +from hydra.hints.extf_mul import nondeterministic_extension_field_mul_divmod +from hydra.modulo_circuit import WriteOps from hydra.precompiled_circuits.multi_miller_loop import ( MultiMillerLoopCircuit, precompute_lines, ) -from hydra.modulo_circuit import WriteOps - -from hydra.definitions import CurveID, G1Point, G2Point -from hydra.hints.extf_mul import nondeterministic_extension_field_mul_divmod - -import pytest -import copy @pytest.fixture( diff --git a/tests/hydra/hints/test_ecip.py b/tests/hydra/hints/test_ecip.py index 125bb1bd..989265ad 100644 --- a/tests/hydra/hints/test_ecip.py +++ b/tests/hydra/hints/test_ecip.py @@ -1,7 +1,9 @@ +import random + import pytest + from hydra.definitions import CURVES, CurveID, G1Point, G2Point, PairingCurve from hydra.hints.ecip import verify_ecip -import random # Define the curves to be tested curves = list(CurveID) diff --git a/tests/hydra/hints/test_final_exp_witness.py b/tests/hydra/hints/test_final_exp_witness.py index b23e44ca..f29bd0f1 100644 --- a/tests/hydra/hints/test_final_exp_witness.py +++ b/tests/hydra/hints/test_final_exp_witness.py @@ -1,18 +1,20 @@ -import pytest import random + +import pytest + +from hydra.definitions import CURVES, CurveID, get_sparsity from hydra.hints.multi_miller_witness import ( - get_miller_loop_output, get_final_exp_witness, get_lambda, + get_miller_loop_output, ) -from hydra.hints.tower_backup import E12, E6 +from hydra.hints.tower_backup import E6, E12 from hydra.precompiled_circuits.multi_pairing_check import ( MultiPairingCheckCircuit, - get_pairing_check_input, WriteOps, get_max_Q_degree, + get_pairing_check_input, ) -from hydra.definitions import CurveID, CURVES, get_sparsity @pytest.mark.parametrize("seed", range(5)) diff --git a/tests/hydra/hints/test_neg3.py b/tests/hydra/hints/test_neg3.py index e7d2650c..880c4e19 100644 --- a/tests/hydra/hints/test_neg3.py +++ b/tests/hydra/hints/test_neg3.py @@ -1,13 +1,14 @@ +import random + import pytest + from hydra.hints.neg_3 import ( - neg_3_base_le, construct_digit_vectors, + neg_3_base_le, positive_negative_multiplicities, scalar_to_base_neg3_le, ) -import random - @pytest.fixture def test_params(): diff --git a/tests/hydra/test_extension_field_modulo_circuit.py b/tests/hydra/test_extension_field_modulo_circuit.py index cc6e3603..9f87e613 100644 --- a/tests/hydra/test_extension_field_modulo_circuit.py +++ b/tests/hydra/test_extension_field_modulo_circuit.py @@ -1,9 +1,11 @@ +import random + import pytest + +from hydra.algebra import PyFelt from hydra.definitions import CURVES, CurveID from hydra.extension_field_modulo_circuit import ExtensionFieldModuloCircuit -from hydra.algebra import PyFelt -from hydra.modulo_circuit import WriteOps, ModuloCircuitElement -import random +from hydra.modulo_circuit import ModuloCircuitElement, WriteOps @pytest.fixture( diff --git a/tests/hydra/test_g1_point.py b/tests/hydra/test_g1_point.py index fd1618c5..d449e8c1 100644 --- a/tests/hydra/test_g1_point.py +++ b/tests/hydra/test_g1_point.py @@ -1,11 +1,12 @@ import pytest + from hydra.definitions import ( - G1Point, - CurveID, CURVES, - is_generator, + CurveID, + G1Point, TwistedEdwardsCurve, WeierstrassCurve, + is_generator, ) # List of curve IDs to test diff --git a/tests/hydra/test_g2_point.py b/tests/hydra/test_g2_point.py index 1a0e02dc..b71a0cc7 100644 --- a/tests/hydra/test_g2_point.py +++ b/tests/hydra/test_g2_point.py @@ -1,7 +1,9 @@ -import pytest -from hydra.definitions import G2Point, CurveID, CURVES import random +import pytest + +from hydra.definitions import CURVES, CurveID, G2Point + # List of curve IDs to test curve_ids = [CurveID.BN254, CurveID.BLS12_381] diff --git a/tools/make/bytecode_check.sh b/tools/make/bytecode_check.sh new file mode 100755 index 00000000..2679627c --- /dev/null +++ b/tools/make/bytecode_check.sh @@ -0,0 +1,4 @@ +cd src/cairo/contracts/groth16_example +scarb build +bytecode_length=$(jq '.bytecode | length' ./target/dev/groth16_example_Groth16VerifierBN254.compiled_contract_class.json) +echo "Bytecode length: $bytecode_length" diff --git a/tools/make/fustat_format_check.sh b/tools/make/fustat_format_check.sh index 43001326..d7cf2c8f 100755 --- a/tools/make/fustat_format_check.sh +++ b/tools/make/fustat_format_check.sh @@ -24,4 +24,4 @@ exit_status=$? # Exit with the captured status echo "Parallel execution exited with status: $exit_status" -exit $exit_status \ No newline at end of file +exit $exit_status diff --git a/tools/make/launch_cairo_files.py b/tools/make/launch_cairo_files.py index c2517d4c..5a5d3174 100755 --- a/tools/make/launch_cairo_files.py +++ b/tools/make/launch_cairo_files.py @@ -1,11 +1,13 @@ #!venv/bin/python3 +import argparse import os -from os import listdir -from os.path import isfile, join import readline -import argparse import time +from os import listdir +from os.path import isfile, join + import inquirer + from tools.make.utils import create_directory, get_files_from_folders # Constants diff --git a/tools/make/poseidon_utils.patch b/tools/make/poseidon_utils.patch index e02eb838..374eaeb6 100644 --- a/tools/make/poseidon_utils.patch +++ b/tools/make/poseidon_utils.patch @@ -2,23 +2,23 @@ +++ tools/make/poseidon_patch.py 2023-09-10 20:25:03.298128497 +0200 @@ -4,12 +4,10 @@ """ - + import hashlib -from typing import Iterable, List, Optional, Type - -import numpy as np +from typing import List, Optional, Type - + from starkware.cairo.lang.cairo_constants import DEFAULT_PRIME -from starkware.python.math_utils import pow_mod, safe_div +from starkware.python.math_utils import safe_div - - + + def generate_round_constant(fn_name: str, field_prime: int, idx: int) -> int: @@ -39,9 +37,7 @@ - + poseidon_small_params: Optional["PoseidonParams"] = None - + - def __init__( - self, field_prime: int, r: int, c: int, r_f: int, r_p: int, mds: Iterable[Iterable[int]] - ): @@ -44,7 +44,7 @@ + [generate_round_constant("Hades", field_prime, m * i + j) for j in range(m)] + for i in range(n_rounds) + ] - + @classmethod def get_default_poseidon_params(cls: Type["PoseidonParams"]): if cls.poseidon_small_params is None: @@ -52,10 +52,10 @@ - field_prime=DEFAULT_PRIME, r=2, c=1, r_f=8, r_p=83, mds=SmallMds + field_prime=DEFAULT_PRIME, r=2, c=1, r_f=8, r_p=83 ) - + return cls.poseidon_small_params @@ -76,22 +66,22 @@ - + def hades_round(values, params: PoseidonParams, is_full_round: bool, round_idx: int): # Add-Round Key. - values = (values + params.ark[round_idx]) % params.field_prime @@ -71,13 +71,13 @@ else: - values[-1:] = pow_mod(values[-1:], 3, params.field_prime) + values[-1] = pow(values[-1], 3, params.field_prime) - + # MixLayer. - values = params.mds.dot(values) % params.field_prime + values = mds_mul(values, params.field_prime) return values - - + + def hades_permutation(values: List[int], params: PoseidonParams) -> List[int]: - assert len(values) == params.m - values = np.array(values, dtype=object) @@ -105,8 +105,8 @@ + (vector[0] - vector[1] + vector[2]) % field, + (vector[0] + vector[1] - 2 * vector[2]) % field, + ] - - + + # The actual config to be in use, with extremely small MDS coefficients. -SmallMds = [[3, 1, 1], [1, -1, 1], [1, 1, -2]] +# SmallMds = [[3, 1, 1], [1, -1, 1], [1, 1, -2]] diff --git a/tools/make/rewrite.sh b/tools/make/rewrite.sh new file mode 100755 index 00000000..44de553e --- /dev/null +++ b/tools/make/rewrite.sh @@ -0,0 +1,3 @@ +rm -rf src/cairo/src/tests/ +python hydra/precompiled_circuits/all_circuits.py +python tools/starknet/e2e_tests_writer/test_writer.py diff --git a/tools/make/steps.sh b/tools/make/steps.sh new file mode 100755 index 00000000..806cfa3f --- /dev/null +++ b/tools/make/steps.sh @@ -0,0 +1,2 @@ +cd src/cairo +scarb test -f test_BN254_mpcheck_3P_2F --print-resource-usage diff --git a/tools/make/update_bench_in_readme.py b/tools/make/update_bench_in_readme.py index fe2333d1..c7e2e47d 100644 --- a/tools/make/update_bench_in_readme.py +++ b/tools/make/update_bench_in_readme.py @@ -1,5 +1,5 @@ -import subprocess import re +import subprocess def run_benchmarks(): diff --git a/tools/starknet/e2e_tests_writer/mpcheck.py b/tools/starknet/e2e_tests_writer/mpcheck.py index 4be66d9c..27c6ece9 100644 --- a/tools/starknet/e2e_tests_writer/mpcheck.py +++ b/tools/starknet/e2e_tests_writer/mpcheck.py @@ -1,10 +1,11 @@ import functools -from functools import lru_cache from dataclasses import dataclass +from functools import lru_cache from hydra import modulo_circuit_structs as structs from hydra.algebra import Polynomial, PyFelt -from hydra.definitions import CurveID, G1G2Pair, get_irreducible_poly, get_base_field +from hydra.definitions import CurveID, G1G2Pair, get_base_field, get_irreducible_poly +from hydra.hints import io from hydra.poseidon_transcript import CairoPoseidonTranscript from hydra.precompiled_circuits.multi_miller_loop import precompute_lines from hydra.precompiled_circuits.multi_pairing_check import ( @@ -13,7 +14,6 @@ WriteOps, get_max_Q_degree, ) -from hydra.hints import io @dataclass(slots=True) diff --git a/tools/starknet/e2e_tests_writer/test_writer.py b/tools/starknet/e2e_tests_writer/test_writer.py index 3d804acd..a9681aa9 100644 --- a/tools/starknet/e2e_tests_writer/test_writer.py +++ b/tools/starknet/e2e_tests_writer/test_writer.py @@ -1,11 +1,12 @@ +import concurrent.futures +import random +import subprocess + from hydra.definitions import CURVES, CurveID, G1Point from hydra.precompiled_circuits.multi_pairing_check import get_pairing_check_input -from tools.starknet.e2e_tests_writer.msm import MSMCalldataBuilder +from tools.make.utils import create_directory from tools.starknet.e2e_tests_writer.mpcheck import MPCheckCalldataBuilder - -import random -import subprocess -import concurrent.futures +from tools.starknet.e2e_tests_writer.msm import MSMCalldataBuilder def generate_pairing_test(curve_id, n_pairs, n_fixed_g2, include_m, seed): @@ -57,6 +58,7 @@ def write_all_tests(): multi_pairing_check_bls12_381_3P_2F_with_extra_miller_loop_result, }; """ + create_directory("src/cairo/src/tests") with open("src/cairo/src/tests/pairing_tests.cairo", "w") as f: f.write(pairing_test_header) with concurrent.futures.ProcessPoolExecutor() as executor: @@ -67,7 +69,7 @@ def write_all_tests(): n_pairs, n_fixed_g2, include_m, - hash((curve_id, n_pairs, n_fixed_g2, include_m)), + 0, ) for curve_id in pairing_curve_ids for n_pairs, n_fixed_g2, include_m in params @@ -99,9 +101,7 @@ def write_all_tests(): f.write(msm_test_header) with concurrent.futures.ProcessPoolExecutor() as executor: futures = [ - executor.submit( - generate_msm_test, curve_id, n_points, hash((curve_id, n_points)) - ) + executor.submit(generate_msm_test, curve_id, n_points, 0) for curve_id in msm_curve_ids for n_points in msm_sizes ] diff --git a/tools/starknet/groth16_contract_generator/generator.py b/tools/starknet/groth16_contract_generator/generator.py index 9d437aa8..a3501665 100644 --- a/tools/starknet/groth16_contract_generator/generator.py +++ b/tools/starknet/groth16_contract_generator/generator.py @@ -1,17 +1,17 @@ -from tools.starknet.groth16_contract_generator.parsing_utils import ( - Groth16Proof, - Groth16VerifyingKey, -) +import os +import subprocess + +from hydra.definitions import CurveID, G1G2Pair, G1Point, G2Point +from hydra.modulo_circuit_structs import E12D, G2Line, StructArray from hydra.precompiled_circuits.multi_miller_loop import ( MultiMillerLoopCircuit, precompute_lines, ) -from hydra.definitions import CurveID, G1G2Pair, G1Point, G2Point -from hydra.modulo_circuit_structs import E12D, StructArray, G2Line - -import os -import subprocess from tools.make.utils import create_directory +from tools.starknet.groth16_contract_generator.parsing_utils import ( + Groth16Proof, + Groth16VerifyingKey, +) def precompute_lines_from_vk(vk: Groth16VerifyingKey) -> StructArray: @@ -137,6 +137,8 @@ def gen_groth16_verifier(vk_path: str, output_folder_path: str) -> str: [[target.starknet-contract]] +casm = true +casm-add-pythonic-hints = true """ ) diff --git a/tools/starknet/groth16_contract_generator/parsing_utils.py b/tools/starknet/groth16_contract_generator/parsing_utils.py index ccad40cf..64ea46c4 100644 --- a/tools/starknet/groth16_contract_generator/parsing_utils.py +++ b/tools/starknet/groth16_contract_generator/parsing_utils.py @@ -1,17 +1,18 @@ +import dataclasses import json +import os +from pathlib import Path +from typing import Any, Dict, List + +from hydra.definitions import CurveID, G1G2Pair, G1Point, G2Point from hydra.hints.io import to_int -from typing import Dict, List, Any -from hydra.definitions import CurveID, G1Point, G2Point, G1G2Pair -from hydra.precompiled_circuits.multi_miller_loop import MultiMillerLoopCircuit from hydra.modulo_circuit_structs import ( E12D, - StructArray, G1PointCircuit, G2PointCircuit, + StructArray, ) -import dataclasses -from pathlib import Path -import os +from hydra.precompiled_circuits.multi_miller_loop import MultiMillerLoopCircuit @dataclasses.dataclass(slots=True) diff --git a/tools/starknet/starknet_cli.py b/tools/starknet/starknet_cli.py index 473acff6..3d802ebb 100644 --- a/tools/starknet/starknet_cli.py +++ b/tools/starknet/starknet_cli.py @@ -1,9 +1,10 @@ -import typer -from typing import Optional -from enum import Enum -from pathlib import Path import os import re +from enum import Enum +from pathlib import Path +from typing import Optional + +import typer from hydra.definitions import CurveID