diff --git a/arithmetization/src/main/java/net/consensys/linea/zktracer/module/shf/ShfOperation.java b/arithmetization/src/main/java/net/consensys/linea/zktracer/module/shf/ShfOperation.java index 6b005cfed..3ad1a2a94 100644 --- a/arithmetization/src/main/java/net/consensys/linea/zktracer/module/shf/ShfOperation.java +++ b/arithmetization/src/main/java/net/consensys/linea/zktracer/module/shf/ShfOperation.java @@ -185,16 +185,16 @@ public void trace(Trace trace, int stamp) { .ones(arg2HiByteChunks.ones()) .leftAlignedSuffixLow(arg2LoByteChunks.la()) .rightAlignedPrefixLow(arg2LoByteChunks.ra()) - .shb3Hi(Bytes.ofUnsignedInt(this.shb.getShbHi()[0][i].toInteger())) - .shb3Lo(Bytes.ofUnsignedInt(this.shb.getShbLo()[0][i].toInteger())) - .shb4Hi(Bytes.ofUnsignedInt(this.shb.getShbHi()[4 - 3][i].toInteger())) - .shb4Lo(Bytes.ofUnsignedInt(this.shb.getShbLo()[4 - 3][i].toInteger())) - .shb5Hi(Bytes.ofUnsignedInt(this.shb.getShbHi()[5 - 3][i].toInteger())) - .shb5Lo(Bytes.ofUnsignedInt(this.shb.getShbLo()[5 - 3][i].toInteger())) - .shb6Hi(Bytes.ofUnsignedInt(this.shb.getShbHi()[6 - 3][i].toInteger())) - .shb6Lo(Bytes.ofUnsignedInt(this.shb.getShbLo()[6 - 3][i].toInteger())) - .shb7Hi(Bytes.ofUnsignedInt(this.shb.getShbHi()[7 - 3][i].toInteger())) - .shb7Lo(Bytes.ofUnsignedInt(this.shb.getShbLo()[7 - 3][i].toInteger())) + .shb3Hi(shb.getShbHi()[0][i]) + .shb3Lo(shb.getShbLo()[0][i]) + .shb4Hi(shb.getShbHi()[4 - 3][i]) + .shb4Lo(shb.getShbLo()[4 - 3][i]) + .shb5Hi(shb.getShbHi()[5 - 3][i]) + .shb5Lo(shb.getShbLo()[5 - 3][i]) + .shb6Hi(shb.getShbHi()[6 - 3][i]) + .shb6Lo(shb.getShbLo()[6 - 3][i]) + .shb7Hi(shb.getShbHi()[7 - 3][i]) + .shb7Lo(shb.getShbLo()[7 - 3][i]) .shiftDirection(this.isShiftRight) .iomf(true) .shiftStamp((short) stamp) diff --git a/arithmetization/src/main/java/net/consensys/linea/zktracer/module/shf/Trace.java b/arithmetization/src/main/java/net/consensys/linea/zktracer/module/shf/Trace.java index 1e340e42d..72841cdc5 100644 --- a/arithmetization/src/main/java/net/consensys/linea/zktracer/module/shf/Trace.java +++ b/arithmetization/src/main/java/net/consensys/linea/zktracer/module/shf/Trace.java @@ -127,16 +127,16 @@ static List headers(int length) { new ColumnHeader("shf.RES_LO", 16, length), new ColumnHeader("shf.RIGHT_ALIGNED_PREFIX_HIGH", 1, length), new ColumnHeader("shf.RIGHT_ALIGNED_PREFIX_LOW", 1, length), - new ColumnHeader("shf.SHB_3_HI", 16, length), - new ColumnHeader("shf.SHB_3_LO", 16, length), - new ColumnHeader("shf.SHB_4_HI", 16, length), - new ColumnHeader("shf.SHB_4_LO", 16, length), - new ColumnHeader("shf.SHB_5_HI", 16, length), - new ColumnHeader("shf.SHB_5_LO", 16, length), - new ColumnHeader("shf.SHB_6_HI", 16, length), - new ColumnHeader("shf.SHB_6_LO", 16, length), - new ColumnHeader("shf.SHB_7_HI", 16, length), - new ColumnHeader("shf.SHB_7_LO", 16, length), + new ColumnHeader("shf.SHB_3_HI", 1, length), + new ColumnHeader("shf.SHB_3_LO", 1, length), + new ColumnHeader("shf.SHB_4_HI", 1, length), + new ColumnHeader("shf.SHB_4_LO", 1, length), + new ColumnHeader("shf.SHB_5_HI", 1, length), + new ColumnHeader("shf.SHB_5_LO", 1, length), + new ColumnHeader("shf.SHB_6_HI", 1, length), + new ColumnHeader("shf.SHB_6_LO", 1, length), + new ColumnHeader("shf.SHB_7_HI", 1, length), + new ColumnHeader("shf.SHB_7_LO", 1, length), new ColumnHeader("shf.SHIFT_DIRECTION", 1, length), new ColumnHeader("shf.SHIFT_STAMP", 4, length)); } @@ -833,252 +833,122 @@ public Trace rightAlignedPrefixLow(final UnsignedByte b) { return this; } - public Trace shb3Hi(final Bytes b) { + public Trace shb3Hi(final UnsignedByte b) { if (filled.get(39)) { throw new IllegalStateException("shf.SHB_3_HI already set"); } else { filled.set(39); } - // Trim array to size - Bytes bs = b.trimLeadingZeros(); - // Sanity check against expected width - if (bs.bitLength() > 128) { - throw new IllegalArgumentException("shb3Hi has invalid width (" + bs.bitLength() + "bits)"); - } - // Write padding (if necessary) - for (int i = bs.size(); i < 16; i++) { - shb3Hi.put((byte) 0); - } - // Write bytes - for (int j = 0; j < bs.size(); j++) { - shb3Hi.put(bs.get(j)); - } + shb3Hi.put(b.toByte()); return this; } - public Trace shb3Lo(final Bytes b) { + public Trace shb3Lo(final UnsignedByte b) { if (filled.get(40)) { throw new IllegalStateException("shf.SHB_3_LO already set"); } else { filled.set(40); } - // Trim array to size - Bytes bs = b.trimLeadingZeros(); - // Sanity check against expected width - if (bs.bitLength() > 128) { - throw new IllegalArgumentException("shb3Lo has invalid width (" + bs.bitLength() + "bits)"); - } - // Write padding (if necessary) - for (int i = bs.size(); i < 16; i++) { - shb3Lo.put((byte) 0); - } - // Write bytes - for (int j = 0; j < bs.size(); j++) { - shb3Lo.put(bs.get(j)); - } + shb3Lo.put(b.toByte()); return this; } - public Trace shb4Hi(final Bytes b) { + public Trace shb4Hi(final UnsignedByte b) { if (filled.get(41)) { throw new IllegalStateException("shf.SHB_4_HI already set"); } else { filled.set(41); } - // Trim array to size - Bytes bs = b.trimLeadingZeros(); - // Sanity check against expected width - if (bs.bitLength() > 128) { - throw new IllegalArgumentException("shb4Hi has invalid width (" + bs.bitLength() + "bits)"); - } - // Write padding (if necessary) - for (int i = bs.size(); i < 16; i++) { - shb4Hi.put((byte) 0); - } - // Write bytes - for (int j = 0; j < bs.size(); j++) { - shb4Hi.put(bs.get(j)); - } + shb4Hi.put(b.toByte()); return this; } - public Trace shb4Lo(final Bytes b) { + public Trace shb4Lo(final UnsignedByte b) { if (filled.get(42)) { throw new IllegalStateException("shf.SHB_4_LO already set"); } else { filled.set(42); } - // Trim array to size - Bytes bs = b.trimLeadingZeros(); - // Sanity check against expected width - if (bs.bitLength() > 128) { - throw new IllegalArgumentException("shb4Lo has invalid width (" + bs.bitLength() + "bits)"); - } - // Write padding (if necessary) - for (int i = bs.size(); i < 16; i++) { - shb4Lo.put((byte) 0); - } - // Write bytes - for (int j = 0; j < bs.size(); j++) { - shb4Lo.put(bs.get(j)); - } + shb4Lo.put(b.toByte()); return this; } - public Trace shb5Hi(final Bytes b) { + public Trace shb5Hi(final UnsignedByte b) { if (filled.get(43)) { throw new IllegalStateException("shf.SHB_5_HI already set"); } else { filled.set(43); } - // Trim array to size - Bytes bs = b.trimLeadingZeros(); - // Sanity check against expected width - if (bs.bitLength() > 128) { - throw new IllegalArgumentException("shb5Hi has invalid width (" + bs.bitLength() + "bits)"); - } - // Write padding (if necessary) - for (int i = bs.size(); i < 16; i++) { - shb5Hi.put((byte) 0); - } - // Write bytes - for (int j = 0; j < bs.size(); j++) { - shb5Hi.put(bs.get(j)); - } + shb5Hi.put(b.toByte()); return this; } - public Trace shb5Lo(final Bytes b) { + public Trace shb5Lo(final UnsignedByte b) { if (filled.get(44)) { throw new IllegalStateException("shf.SHB_5_LO already set"); } else { filled.set(44); } - // Trim array to size - Bytes bs = b.trimLeadingZeros(); - // Sanity check against expected width - if (bs.bitLength() > 128) { - throw new IllegalArgumentException("shb5Lo has invalid width (" + bs.bitLength() + "bits)"); - } - // Write padding (if necessary) - for (int i = bs.size(); i < 16; i++) { - shb5Lo.put((byte) 0); - } - // Write bytes - for (int j = 0; j < bs.size(); j++) { - shb5Lo.put(bs.get(j)); - } + shb5Lo.put(b.toByte()); return this; } - public Trace shb6Hi(final Bytes b) { + public Trace shb6Hi(final UnsignedByte b) { if (filled.get(45)) { throw new IllegalStateException("shf.SHB_6_HI already set"); } else { filled.set(45); } - // Trim array to size - Bytes bs = b.trimLeadingZeros(); - // Sanity check against expected width - if (bs.bitLength() > 128) { - throw new IllegalArgumentException("shb6Hi has invalid width (" + bs.bitLength() + "bits)"); - } - // Write padding (if necessary) - for (int i = bs.size(); i < 16; i++) { - shb6Hi.put((byte) 0); - } - // Write bytes - for (int j = 0; j < bs.size(); j++) { - shb6Hi.put(bs.get(j)); - } + shb6Hi.put(b.toByte()); return this; } - public Trace shb6Lo(final Bytes b) { + public Trace shb6Lo(final UnsignedByte b) { if (filled.get(46)) { throw new IllegalStateException("shf.SHB_6_LO already set"); } else { filled.set(46); } - // Trim array to size - Bytes bs = b.trimLeadingZeros(); - // Sanity check against expected width - if (bs.bitLength() > 128) { - throw new IllegalArgumentException("shb6Lo has invalid width (" + bs.bitLength() + "bits)"); - } - // Write padding (if necessary) - for (int i = bs.size(); i < 16; i++) { - shb6Lo.put((byte) 0); - } - // Write bytes - for (int j = 0; j < bs.size(); j++) { - shb6Lo.put(bs.get(j)); - } + shb6Lo.put(b.toByte()); return this; } - public Trace shb7Hi(final Bytes b) { + public Trace shb7Hi(final UnsignedByte b) { if (filled.get(47)) { throw new IllegalStateException("shf.SHB_7_HI already set"); } else { filled.set(47); } - // Trim array to size - Bytes bs = b.trimLeadingZeros(); - // Sanity check against expected width - if (bs.bitLength() > 128) { - throw new IllegalArgumentException("shb7Hi has invalid width (" + bs.bitLength() + "bits)"); - } - // Write padding (if necessary) - for (int i = bs.size(); i < 16; i++) { - shb7Hi.put((byte) 0); - } - // Write bytes - for (int j = 0; j < bs.size(); j++) { - shb7Hi.put(bs.get(j)); - } + shb7Hi.put(b.toByte()); return this; } - public Trace shb7Lo(final Bytes b) { + public Trace shb7Lo(final UnsignedByte b) { if (filled.get(48)) { throw new IllegalStateException("shf.SHB_7_LO already set"); } else { filled.set(48); } - // Trim array to size - Bytes bs = b.trimLeadingZeros(); - // Sanity check against expected width - if (bs.bitLength() > 128) { - throw new IllegalArgumentException("shb7Lo has invalid width (" + bs.bitLength() + "bits)"); - } - // Write padding (if necessary) - for (int i = bs.size(); i < 16; i++) { - shb7Lo.put((byte) 0); - } - // Write bytes - for (int j = 0; j < bs.size(); j++) { - shb7Lo.put(bs.get(j)); - } + shb7Lo.put(b.toByte()); return this; } @@ -1482,43 +1352,43 @@ public Trace fillAndValidateRow() { } if (!filled.get(39)) { - shb3Hi.position(shb3Hi.position() + 16); + shb3Hi.position(shb3Hi.position() + 1); } if (!filled.get(40)) { - shb3Lo.position(shb3Lo.position() + 16); + shb3Lo.position(shb3Lo.position() + 1); } if (!filled.get(41)) { - shb4Hi.position(shb4Hi.position() + 16); + shb4Hi.position(shb4Hi.position() + 1); } if (!filled.get(42)) { - shb4Lo.position(shb4Lo.position() + 16); + shb4Lo.position(shb4Lo.position() + 1); } if (!filled.get(43)) { - shb5Hi.position(shb5Hi.position() + 16); + shb5Hi.position(shb5Hi.position() + 1); } if (!filled.get(44)) { - shb5Lo.position(shb5Lo.position() + 16); + shb5Lo.position(shb5Lo.position() + 1); } if (!filled.get(45)) { - shb6Hi.position(shb6Hi.position() + 16); + shb6Hi.position(shb6Hi.position() + 1); } if (!filled.get(46)) { - shb6Lo.position(shb6Lo.position() + 16); + shb6Lo.position(shb6Lo.position() + 1); } if (!filled.get(47)) { - shb7Hi.position(shb7Hi.position() + 16); + shb7Hi.position(shb7Hi.position() + 1); } if (!filled.get(48)) { - shb7Lo.position(shb7Lo.position() + 16); + shb7Lo.position(shb7Lo.position() + 1); } if (!filled.get(49)) { diff --git a/arithmetization/src/test/java/net/consensys/linea/replaytests/Issue1280Tests.java b/arithmetization/src/test/java/net/consensys/linea/replaytests/Issue1280Tests.java new file mode 100644 index 000000000..684ffc03e --- /dev/null +++ b/arithmetization/src/test/java/net/consensys/linea/replaytests/Issue1280Tests.java @@ -0,0 +1,306 @@ +/* + * Copyright Consensys Software Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ +package net.consensys.linea.replaytests; + +import static net.consensys.linea.replaytests.ReplayTestTools.replay; +import static net.consensys.linea.testing.ReplayExecutionEnvironment.LINEA_MAINNET; + +import org.junit.jupiter.api.Tag; +import org.junit.jupiter.api.Test; + +@Tag("nightly") +@Tag("replay") +public class Issue1280Tests { + + // 3901959-3902032 + @Test + void issue1280_range_3901959_3901959() { + replay(LINEA_MAINNET, "3901959-3901959.json.gz"); + } + + @Test + void issue1280_range_3901960_3901964() { + replay(LINEA_MAINNET, "3901960-3901964.json.gz"); + } + + @Test + void issue1280_range_3901965_3901969() { + replay(LINEA_MAINNET, "3901965-3901969.json.gz"); + } + + @Test + void issue1280_range_3901970_3901974() { + replay(LINEA_MAINNET, "3901970-3901974.json.gz"); + } + + @Test + void issue1280_range_3901975_3901979() { + replay(LINEA_MAINNET, "3901975-3901979.json.gz"); + } + + @Test + void issue1280_range_3901980_3901984() { + replay(LINEA_MAINNET, "3901980-3901984.json.gz"); + } + + @Test + void issue1280_range_3901985_3901989() { + replay(LINEA_MAINNET, "3901985-3901989.json.gz"); + } + + @Test + void issue1280_range_3901990_3901994() { + replay(LINEA_MAINNET, "3901990-3901994.json.gz"); + } + + @Test + void issue1280_range_3901995_3901999() { + replay(LINEA_MAINNET, "3901995-3901999.json.gz"); + } + + @Test + void issue1280_range_3902000_3902004() { + replay(LINEA_MAINNET, "3902000-3902004.json.gz"); + } + + @Test + void issue1280_range_3902005_3902009() { + replay(LINEA_MAINNET, "3902005-3902009.json.gz"); + } + + @Test + void issue1280_range_3902010_3902014() { + replay(LINEA_MAINNET, "3902010-3902014.json.gz"); + } + + @Test + void issue1280_range_3902015_3902019() { + replay(LINEA_MAINNET, "3902015-3902019.json.gz"); + } + + @Test + void issue1280_range_3902020_3902024() { + replay(LINEA_MAINNET, "3902020-3902024.json.gz"); + } + + @Test + void issue1280_range_3902025_3902029() { + replay(LINEA_MAINNET, "3902025-3902029.json.gz"); + } + + @Test + void issue1280_range_3902030_3902032() { + replay(LINEA_MAINNET, "3902030-3902032.json.gz"); + } + + // 4065349-4065420 + @Test + void issue1280_range_4065349_4065349() { + replay(LINEA_MAINNET, "4065349-4065349.json.gz"); + } + + @Test + void issue1280_range_4065350_4065354() { + replay(LINEA_MAINNET, "4065350-4065354.json.gz"); + } + + @Test + void issue1280_range_4065355_4065359() { + replay(LINEA_MAINNET, "4065355-4065359.json.gz"); + } + + @Test + void issue1280_range_4065360_4065364() { + replay(LINEA_MAINNET, "4065360-4065364.json.gz"); + } + + /** this range fails if you use the default resultChecking == true */ + @Test + void issue1280_range_4065365_4065369() { + replay(LINEA_MAINNET, "4065365-4065369.json.gz", false); + } + + @Test + void issue1280_range_4065370_4065374() { + replay(LINEA_MAINNET, "4065370-4065374.json.gz"); + } + + @Test + void issue1280_range_4065375_4065379() { + replay(LINEA_MAINNET, "4065375-4065379.json.gz"); + } + + @Test + void issue1280_range_4065380_4065384() { + replay(LINEA_MAINNET, "4065380-4065384.json.gz"); + } + + @Test + void issue1280_range_4065385_4065389() { + replay(LINEA_MAINNET, "4065385-4065389.json.gz"); + } + + @Test + void issue1280_range_4065390_4065394() { + replay(LINEA_MAINNET, "4065390-4065394.json.gz"); + } + + @Test + void issue1280_range_4065395_4065399() { + replay(LINEA_MAINNET, "4065395-4065399.json.gz"); + } + + @Test + void issue1280_range_4065400_4065404() { + replay(LINEA_MAINNET, "4065400-4065404.json.gz"); + } + + @Test + void issue1280_range_4065405_4065409() { + replay(LINEA_MAINNET, "4065405-4065409.json.gz"); + } + + @Test + void issue1280_range_4065410_4065414() { + replay(LINEA_MAINNET, "4065410-4065414.json.gz"); + } + + @Test + void issue1280_range_4065415_4065419() { + replay(LINEA_MAINNET, "4065415-4065419.json.gz"); + } + + @Test + void issue1280_range_4065420_4065420() { + replay(LINEA_MAINNET, "4065420-4065420.json.gz"); + } + + // 4736791-4736859 + @Test + void issue1280_range_4736791_4736794() { + replay(LINEA_MAINNET, "4736791-4736794.json.gz"); + } + + @Test + void issue1280_range_4736795_4736799() { + replay(LINEA_MAINNET, "4736795-4736799.json.gz"); + } + + @Test + void issue1280_range_4736800_4736804() { + replay(LINEA_MAINNET, "4736800-4736804.json.gz"); + } + + @Test + void issue1280_range_4736805_4736809() { + replay(LINEA_MAINNET, "4736805-4736809.json.gz"); + } + + @Test + void issue1280_range_4736810_4736814() { + replay(LINEA_MAINNET, "4736810-4736814.json.gz"); + } + + @Test + void issue1280_range_4736815_4736819() { + replay(LINEA_MAINNET, "4736815-4736819.json.gz"); + } + + @Test + void issue1280_range_4736820_4736824() { + replay(LINEA_MAINNET, "4736820-4736824.json.gz"); + } + + @Test + void issue1280_range_4736825_4736829() { + replay(LINEA_MAINNET, "4736825-4736829.json.gz"); + } + + @Test + void issue1280_range_4736830_4736834() { + replay(LINEA_MAINNET, "4736830-4736834.json.gz"); + } + + @Test + void issue1280_range_4736835_4736839() { + replay(LINEA_MAINNET, "4736835-4736839.json.gz"); + } + + @Test + void issue1280_range_4736840_4736844() { + replay(LINEA_MAINNET, "4736840-4736844.json.gz"); + } + + @Test + void issue1280_range_4736845_4736849() { + replay(LINEA_MAINNET, "4736845-4736849.json.gz"); + } + + @Test + void issue1280_range_4736850_4736854() { + replay(LINEA_MAINNET, "4736850-4736854.json.gz"); + } + + @Test + void issue1280_range_4736855_4736859() { + replay(LINEA_MAINNET, "4736855-4736859.json.gz"); + } + + // 4981619-4981658 + @Test + void issue1280_range_4981619_4981619() { + replay(LINEA_MAINNET, "4981619-4981619.json.gz"); + } + + @Test + void issue1280_range_4981620_4981624() { + replay(LINEA_MAINNET, "4981620-4981624.json.gz"); + } + + @Test + void issue1280_range_4981625_4981629() { + replay(LINEA_MAINNET, "4981625-4981629.json.gz"); + } + + @Test + void issue1280_range_4981630_4981634() { + replay(LINEA_MAINNET, "4981630-4981634.json.gz"); + } + + @Test + void issue1280_range_4981635_4981639() { + replay(LINEA_MAINNET, "4981635-4981639.json.gz"); + } + + @Test + void issue1280_range_4981640_4981644() { + replay(LINEA_MAINNET, "4981640-4981644.json.gz"); + } + + @Test + void issue1280_range_4981645_4981649() { + replay(LINEA_MAINNET, "4981645-4981649.json.gz"); + } + + @Test + void issue1280_range_4981650_4981654() { + replay(LINEA_MAINNET, "4981650-4981654.json.gz"); + } + + @Test + void issue1280_range_4981655_4981658() { + replay(LINEA_MAINNET, "4981655-4981658.json.gz"); + } +} diff --git a/arithmetization/src/test/resources/replays/3901959-3901959.json.gz b/arithmetization/src/test/resources/replays/3901959-3901959.json.gz new file mode 100644 index 000000000..b9b249e89 Binary files /dev/null and b/arithmetization/src/test/resources/replays/3901959-3901959.json.gz differ diff --git a/arithmetization/src/test/resources/replays/3901960-3901964.json.gz b/arithmetization/src/test/resources/replays/3901960-3901964.json.gz new file mode 100644 index 000000000..eca7d2b8f Binary files /dev/null and b/arithmetization/src/test/resources/replays/3901960-3901964.json.gz differ diff --git a/arithmetization/src/test/resources/replays/3901965-3901969.json.gz b/arithmetization/src/test/resources/replays/3901965-3901969.json.gz new file mode 100644 index 000000000..81c6838e9 Binary files /dev/null and b/arithmetization/src/test/resources/replays/3901965-3901969.json.gz differ diff --git a/arithmetization/src/test/resources/replays/3901970-3901974.json.gz b/arithmetization/src/test/resources/replays/3901970-3901974.json.gz new file mode 100644 index 000000000..64d21be4b Binary files /dev/null and b/arithmetization/src/test/resources/replays/3901970-3901974.json.gz differ diff --git a/arithmetization/src/test/resources/replays/3901975-3901979.json.gz b/arithmetization/src/test/resources/replays/3901975-3901979.json.gz new file mode 100644 index 000000000..cb85cb67d Binary files /dev/null and b/arithmetization/src/test/resources/replays/3901975-3901979.json.gz differ diff --git a/arithmetization/src/test/resources/replays/3901980-3901984.json.gz b/arithmetization/src/test/resources/replays/3901980-3901984.json.gz new file mode 100644 index 000000000..b4da33915 Binary files /dev/null and b/arithmetization/src/test/resources/replays/3901980-3901984.json.gz differ diff --git a/arithmetization/src/test/resources/replays/3901985-3901989.json.gz b/arithmetization/src/test/resources/replays/3901985-3901989.json.gz new file mode 100644 index 000000000..0a101032c Binary files /dev/null and b/arithmetization/src/test/resources/replays/3901985-3901989.json.gz differ diff --git a/arithmetization/src/test/resources/replays/3901990-3901994.json.gz b/arithmetization/src/test/resources/replays/3901990-3901994.json.gz new file mode 100644 index 000000000..3e229401a Binary files /dev/null and b/arithmetization/src/test/resources/replays/3901990-3901994.json.gz differ diff --git a/arithmetization/src/test/resources/replays/3901995-3901999.json.gz b/arithmetization/src/test/resources/replays/3901995-3901999.json.gz new file mode 100644 index 000000000..efa56313e Binary files /dev/null and b/arithmetization/src/test/resources/replays/3901995-3901999.json.gz differ diff --git a/arithmetization/src/test/resources/replays/3902000-3902004.json.gz b/arithmetization/src/test/resources/replays/3902000-3902004.json.gz new file mode 100644 index 000000000..c718f4fe7 Binary files /dev/null and b/arithmetization/src/test/resources/replays/3902000-3902004.json.gz differ diff --git a/arithmetization/src/test/resources/replays/3902005-3902009.json.gz b/arithmetization/src/test/resources/replays/3902005-3902009.json.gz new file mode 100644 index 000000000..20dbaad4b Binary files /dev/null and b/arithmetization/src/test/resources/replays/3902005-3902009.json.gz differ diff --git a/arithmetization/src/test/resources/replays/3902010-3902014.json.gz b/arithmetization/src/test/resources/replays/3902010-3902014.json.gz new file mode 100644 index 000000000..b2977fd5a Binary files /dev/null and b/arithmetization/src/test/resources/replays/3902010-3902014.json.gz differ diff --git a/arithmetization/src/test/resources/replays/3902015-3902019.json.gz b/arithmetization/src/test/resources/replays/3902015-3902019.json.gz new file mode 100644 index 000000000..395ff1e4c Binary files /dev/null and b/arithmetization/src/test/resources/replays/3902015-3902019.json.gz differ diff --git a/arithmetization/src/test/resources/replays/3902020-3902024.json.gz b/arithmetization/src/test/resources/replays/3902020-3902024.json.gz new file mode 100644 index 000000000..1e7100615 Binary files /dev/null and b/arithmetization/src/test/resources/replays/3902020-3902024.json.gz differ diff --git a/arithmetization/src/test/resources/replays/3902025-3902029.json.gz b/arithmetization/src/test/resources/replays/3902025-3902029.json.gz new file mode 100644 index 000000000..91403ffa5 Binary files /dev/null and b/arithmetization/src/test/resources/replays/3902025-3902029.json.gz differ diff --git a/arithmetization/src/test/resources/replays/3902030-3902032.json.gz b/arithmetization/src/test/resources/replays/3902030-3902032.json.gz new file mode 100644 index 000000000..1886153d1 Binary files /dev/null and b/arithmetization/src/test/resources/replays/3902030-3902032.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4065349-4065349.json.gz b/arithmetization/src/test/resources/replays/4065349-4065349.json.gz index 02e0654ce..a1f490692 100644 Binary files a/arithmetization/src/test/resources/replays/4065349-4065349.json.gz and b/arithmetization/src/test/resources/replays/4065349-4065349.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4065350-4065354.json.gz b/arithmetization/src/test/resources/replays/4065350-4065354.json.gz index 273a10e94..fd6803694 100644 Binary files a/arithmetization/src/test/resources/replays/4065350-4065354.json.gz and b/arithmetization/src/test/resources/replays/4065350-4065354.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4065355-4065359.json.gz b/arithmetization/src/test/resources/replays/4065355-4065359.json.gz index d18b563ed..abaa65314 100644 Binary files a/arithmetization/src/test/resources/replays/4065355-4065359.json.gz and b/arithmetization/src/test/resources/replays/4065355-4065359.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4065360-4065364.json.gz b/arithmetization/src/test/resources/replays/4065360-4065364.json.gz index d18819ec2..1c91b1d19 100644 Binary files a/arithmetization/src/test/resources/replays/4065360-4065364.json.gz and b/arithmetization/src/test/resources/replays/4065360-4065364.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4065365-4065369.json.gz b/arithmetization/src/test/resources/replays/4065365-4065369.json.gz index 6a9d48186..9821a49d0 100644 Binary files a/arithmetization/src/test/resources/replays/4065365-4065369.json.gz and b/arithmetization/src/test/resources/replays/4065365-4065369.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4065370-4065374.json.gz b/arithmetization/src/test/resources/replays/4065370-4065374.json.gz index 9fe3b429f..3d91f9709 100644 Binary files a/arithmetization/src/test/resources/replays/4065370-4065374.json.gz and b/arithmetization/src/test/resources/replays/4065370-4065374.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4065375-4065379.json.gz b/arithmetization/src/test/resources/replays/4065375-4065379.json.gz index 89eb469fa..7bd2daf9d 100644 Binary files a/arithmetization/src/test/resources/replays/4065375-4065379.json.gz and b/arithmetization/src/test/resources/replays/4065375-4065379.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4065380-4065384.json.gz b/arithmetization/src/test/resources/replays/4065380-4065384.json.gz index f581a2434..de08b32b1 100644 Binary files a/arithmetization/src/test/resources/replays/4065380-4065384.json.gz and b/arithmetization/src/test/resources/replays/4065380-4065384.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4065385-4065389.json.gz b/arithmetization/src/test/resources/replays/4065385-4065389.json.gz index 7e694b0f9..94855728d 100644 Binary files a/arithmetization/src/test/resources/replays/4065385-4065389.json.gz and b/arithmetization/src/test/resources/replays/4065385-4065389.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4065390-4065394.json.gz b/arithmetization/src/test/resources/replays/4065390-4065394.json.gz index b532a0cd5..20bdd2c28 100644 Binary files a/arithmetization/src/test/resources/replays/4065390-4065394.json.gz and b/arithmetization/src/test/resources/replays/4065390-4065394.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4065395-4065399.json.gz b/arithmetization/src/test/resources/replays/4065395-4065399.json.gz index 3998491cd..dae05e51b 100644 Binary files a/arithmetization/src/test/resources/replays/4065395-4065399.json.gz and b/arithmetization/src/test/resources/replays/4065395-4065399.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4065400-4065404.json.gz b/arithmetization/src/test/resources/replays/4065400-4065404.json.gz index e669b21e5..69d9e4161 100644 Binary files a/arithmetization/src/test/resources/replays/4065400-4065404.json.gz and b/arithmetization/src/test/resources/replays/4065400-4065404.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4065405-4065409.json.gz b/arithmetization/src/test/resources/replays/4065405-4065409.json.gz index af5468c13..e32d47734 100644 Binary files a/arithmetization/src/test/resources/replays/4065405-4065409.json.gz and b/arithmetization/src/test/resources/replays/4065405-4065409.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4065410-4065414.json.gz b/arithmetization/src/test/resources/replays/4065410-4065414.json.gz index ae8043280..99e86769f 100644 Binary files a/arithmetization/src/test/resources/replays/4065410-4065414.json.gz and b/arithmetization/src/test/resources/replays/4065410-4065414.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4065415-4065419.json.gz b/arithmetization/src/test/resources/replays/4065415-4065419.json.gz index 4165b992c..bc9b32e4e 100644 Binary files a/arithmetization/src/test/resources/replays/4065415-4065419.json.gz and b/arithmetization/src/test/resources/replays/4065415-4065419.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4065420-4065420.json.gz b/arithmetization/src/test/resources/replays/4065420-4065420.json.gz index 25a17e543..cc3094a6d 100644 Binary files a/arithmetization/src/test/resources/replays/4065420-4065420.json.gz and b/arithmetization/src/test/resources/replays/4065420-4065420.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4736791-4736794.json.gz b/arithmetization/src/test/resources/replays/4736791-4736794.json.gz index eb8a04e55..f0fe15ac0 100644 Binary files a/arithmetization/src/test/resources/replays/4736791-4736794.json.gz and b/arithmetization/src/test/resources/replays/4736791-4736794.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4736795-4736799.json.gz b/arithmetization/src/test/resources/replays/4736795-4736799.json.gz index a14f2a4cd..b738b6841 100644 Binary files a/arithmetization/src/test/resources/replays/4736795-4736799.json.gz and b/arithmetization/src/test/resources/replays/4736795-4736799.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4736800-4736804.json.gz b/arithmetization/src/test/resources/replays/4736800-4736804.json.gz index f85a7fb2a..348128737 100644 Binary files a/arithmetization/src/test/resources/replays/4736800-4736804.json.gz and b/arithmetization/src/test/resources/replays/4736800-4736804.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4736805-4736809.json.gz b/arithmetization/src/test/resources/replays/4736805-4736809.json.gz index dfbba59cc..c66a3573c 100644 Binary files a/arithmetization/src/test/resources/replays/4736805-4736809.json.gz and b/arithmetization/src/test/resources/replays/4736805-4736809.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4736810-4736814.json.gz b/arithmetization/src/test/resources/replays/4736810-4736814.json.gz index 9c74866cb..bce013152 100644 Binary files a/arithmetization/src/test/resources/replays/4736810-4736814.json.gz and b/arithmetization/src/test/resources/replays/4736810-4736814.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4736815-4736819.json.gz b/arithmetization/src/test/resources/replays/4736815-4736819.json.gz index 621dd7c78..fcda8da0b 100644 Binary files a/arithmetization/src/test/resources/replays/4736815-4736819.json.gz and b/arithmetization/src/test/resources/replays/4736815-4736819.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4736820-4736824.json.gz b/arithmetization/src/test/resources/replays/4736820-4736824.json.gz index f5cd291ba..58717c65f 100644 Binary files a/arithmetization/src/test/resources/replays/4736820-4736824.json.gz and b/arithmetization/src/test/resources/replays/4736820-4736824.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4736825-4736829.json.gz b/arithmetization/src/test/resources/replays/4736825-4736829.json.gz index c03612dc1..7b8d02678 100644 Binary files a/arithmetization/src/test/resources/replays/4736825-4736829.json.gz and b/arithmetization/src/test/resources/replays/4736825-4736829.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4736830-4736834.json.gz b/arithmetization/src/test/resources/replays/4736830-4736834.json.gz index f4bcfdd43..e057923f5 100644 Binary files a/arithmetization/src/test/resources/replays/4736830-4736834.json.gz and b/arithmetization/src/test/resources/replays/4736830-4736834.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4736835-4736839.json.gz b/arithmetization/src/test/resources/replays/4736835-4736839.json.gz index 746eabcab..cf78f0067 100644 Binary files a/arithmetization/src/test/resources/replays/4736835-4736839.json.gz and b/arithmetization/src/test/resources/replays/4736835-4736839.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4736840-4736844.json.gz b/arithmetization/src/test/resources/replays/4736840-4736844.json.gz index 98e031d62..88acd2b6d 100644 Binary files a/arithmetization/src/test/resources/replays/4736840-4736844.json.gz and b/arithmetization/src/test/resources/replays/4736840-4736844.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4736845-4736849.json.gz b/arithmetization/src/test/resources/replays/4736845-4736849.json.gz index 1a9ac3619..a45400617 100644 Binary files a/arithmetization/src/test/resources/replays/4736845-4736849.json.gz and b/arithmetization/src/test/resources/replays/4736845-4736849.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4736850-4736854.json.gz b/arithmetization/src/test/resources/replays/4736850-4736854.json.gz index c523668a4..d58cf8ba0 100644 Binary files a/arithmetization/src/test/resources/replays/4736850-4736854.json.gz and b/arithmetization/src/test/resources/replays/4736850-4736854.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4736855-4736859.json.gz b/arithmetization/src/test/resources/replays/4736855-4736859.json.gz index f30a9b963..c4214dd04 100644 Binary files a/arithmetization/src/test/resources/replays/4736855-4736859.json.gz and b/arithmetization/src/test/resources/replays/4736855-4736859.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4981619-4981619.json.gz b/arithmetization/src/test/resources/replays/4981619-4981619.json.gz new file mode 100644 index 000000000..2bf013fae Binary files /dev/null and b/arithmetization/src/test/resources/replays/4981619-4981619.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4981620-4981624.json.gz b/arithmetization/src/test/resources/replays/4981620-4981624.json.gz new file mode 100644 index 000000000..b6c2ac235 Binary files /dev/null and b/arithmetization/src/test/resources/replays/4981620-4981624.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4981625-4981629.json.gz b/arithmetization/src/test/resources/replays/4981625-4981629.json.gz new file mode 100644 index 000000000..12613543c Binary files /dev/null and b/arithmetization/src/test/resources/replays/4981625-4981629.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4981630-4981634.json.gz b/arithmetization/src/test/resources/replays/4981630-4981634.json.gz new file mode 100644 index 000000000..92bb8ce75 Binary files /dev/null and b/arithmetization/src/test/resources/replays/4981630-4981634.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4981635-4981639.json.gz b/arithmetization/src/test/resources/replays/4981635-4981639.json.gz new file mode 100644 index 000000000..4ed308414 Binary files /dev/null and b/arithmetization/src/test/resources/replays/4981635-4981639.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4981640-4981644.json.gz b/arithmetization/src/test/resources/replays/4981640-4981644.json.gz new file mode 100644 index 000000000..7290a75fd Binary files /dev/null and b/arithmetization/src/test/resources/replays/4981640-4981644.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4981645-4981649.json.gz b/arithmetization/src/test/resources/replays/4981645-4981649.json.gz new file mode 100644 index 000000000..c5608e5bc Binary files /dev/null and b/arithmetization/src/test/resources/replays/4981645-4981649.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4981650-4981654.json.gz b/arithmetization/src/test/resources/replays/4981650-4981654.json.gz new file mode 100644 index 000000000..4ab179455 Binary files /dev/null and b/arithmetization/src/test/resources/replays/4981650-4981654.json.gz differ diff --git a/arithmetization/src/test/resources/replays/4981655-4981658.json.gz b/arithmetization/src/test/resources/replays/4981655-4981658.json.gz new file mode 100644 index 000000000..e71438fd6 Binary files /dev/null and b/arithmetization/src/test/resources/replays/4981655-4981658.json.gz differ