From: Mark Wooding Date: Mon, 22 Dec 2014 20:32:58 +0000 (+0000) Subject: math/: Support EC2OSP and OS2ECP operations, with point compression. X-Git-Tag: 2.2.0~14^2 X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb/commitdiff_plain/6775a491555123da607656e31e0bcdfd70099aa0 math/: Support EC2OSP and OS2ECP operations, with point compression. We handle both LSB and (IEEE 1363) SORT compression, and hybrid forms. The `ec_fromraw' function now accepts compressed forms, but (for compatibility's sake) `ec_toraw' doesn't generate them. Lots of tests included. --- diff --git a/math/ec-bin.c b/math/ec-bin.c index c7fe96d4..598b7e3c 100644 --- a/math/ec-bin.c +++ b/math/ec-bin.c @@ -317,6 +317,32 @@ static int ecprojcheck(ec_curve *c, const ec *p) return (rc); } +static int eccompr(ec_curve *c, const ec *p) +{ + /* --- Take the LSB of %$y/x$%, or zero if %$x = 0$% --- + * + * The negative of a point has %$y' = y + x$%. Therefore either %$y/x$% or + * $%(y + x)/x = y/x + 1$% is odd, and this disambiguates, unless %$x = + * 0$%; but in that case we must have %$y^2 = b$% which has exactly one + * solution (because squaring is linear in a binary field). + */ + + int ybit; + field *f = c->f; + mp *y, *t; + if (MP_ZEROP(p->x)) ybit = 0; + else { + t = F_IN(f, MP_NEW, p->x); + y = F_IN(f, MP_NEW, p->y); + t = F_INV(f, t, t); + t = F_MUL(f, t, y, t); + t = F_OUT(f, t, t); + ybit = MP_ODDP(t); + MP_DROP(y); MP_DROP(t); + } + return (ybit); +} + static void ecdestroy(ec_curve *c) { ecctx_bin *cc = (ecctx_bin *)c; @@ -380,13 +406,13 @@ ec_curve *ec_binproj(field *f, mp *a, mp *b) static const ec_ops ec_binops = { "bin", ecdestroy, ec_stdsamep, ec_idin, ec_idout, ec_idfix, - ecfind, ecneg, ecadd, ec_stdsub, ecdbl, eccheck + ecfind, ecneg, ecadd, ec_stdsub, ecdbl, eccheck, eccompr }; static const ec_ops ec_binprojops = { "binproj", ecdestroy, ec_stdsamep, ec_projin, ec_projout, ec_projfix, - ecfind, ecprojneg, ecprojadd, ec_stdsub, ecprojdbl, ecprojcheck + ecfind, ecprojneg, ecprojadd, ec_stdsub, ecprojdbl, ecprojcheck, eccompr }; /*----- Test rig ----------------------------------------------------------*/ diff --git a/math/ec-prime.c b/math/ec-prime.c index c2ec2889..46b98856 100644 --- a/math/ec-prime.c +++ b/math/ec-prime.c @@ -328,6 +328,17 @@ static int ecprojcheck(ec_curve *c, const ec *p) return (rc); } +static int eccompr(ec_curve *c, const ec *p) +{ + /* --- Just take the LSB of %$y$% --- + * + * Since @p@ is odd, either %$y$% or %$-y = p - y$% must be odd, so this + * disambiguates. + */ + + return (MP_ODDP(p->y)); +} + static void ecdestroy(ec_curve *c) { MP_DROP(c->a); @@ -378,19 +389,19 @@ extern ec_curve *ec_primeproj(field *f, mp *a, mp *b) static const ec_ops ec_primeops = { "prime", ecdestroy, ec_stdsamep, ec_idin, ec_idout, ec_idfix, - ecfind, ecneg, ecadd, ec_stdsub, ecdbl, eccheck + ecfind, ecneg, ecadd, ec_stdsub, ecdbl, eccheck, eccompr }; static const ec_ops ec_primeprojops = { "primeproj", ecdestroy, ec_stdsamep, ec_projin, ec_projout, ec_projfix, - ecfind, ecneg, ecprojadd, ec_stdsub, ecprojdbl, ecprojcheck + ecfind, ecneg, ecprojadd, ec_stdsub, ecprojdbl, ecprojcheck, eccompr }; static const ec_ops ec_primeprojxops = { "primeproj", ecdestroy, ec_stdsamep, ec_projin, ec_projout, ec_projfix, - ecfind, ecneg, ecprojadd, ec_stdsub, ecprojxdbl, ecprojcheck + ecfind, ecneg, ecprojadd, ec_stdsub, ecprojxdbl, ecprojcheck, eccompr }; /*----- Test rig ----------------------------------------------------------*/ diff --git a/math/ec-raw.c b/math/ec-raw.c index 54310c8f..acee1b66 100644 --- a/math/ec-raw.c +++ b/math/ec-raw.c @@ -32,63 +32,217 @@ /*----- Main code ---------------------------------------------------------*/ -/* --- @ec_putraw@ --- * +/* --- @ec_ec2osp@ --- * * * Arguments: @ec_curve *c@ = elliptic curve + * @unsigned f@ = format flags for output * @buf *b@ = pointer to a buffer * @const ec *p@ = an elliptic curve point * * Returns: Zero on success, nonzero on failure. * * Use: Puts an elliptic curve point to the given buffer using the - * standard uncompressed format described in P1383 and SEC1. + * standard uncompressed format described in P1363 and SEC1. * This requires at most @1 + 2 * c->f->noctets@ space in the - * buffer. We don't do point compression. + * buffer. + * + * Point compression features are determined by @f@ as follows. + * If @EC_CMPR@ is set then point compression is performed and a + * compressed form of the %$y$%-coordinate is contained in the + * first output byte; if @EC_SORT@ is set then P1363a `SORT' + * compression is used, otherwise LSB compression. If + * @EC_EXPLY@ is set, then an explicit %$y$%-coordinate is + * output in full. Otherwise the %$y$%-coordinate is + * suppressed. */ -int ec_putraw(ec_curve *c, buf *b, const ec *p) +int ec_ec2osp(ec_curve *c, unsigned f, buf *b, const ec *p) { octet *q; size_t n; + ec t = EC_INIT; + + /* --- Point at infinity --- */ if (EC_ATINF(p)) return (buf_putbyte(b, 0)); - buf_putbyte(b, 4); + + /* --- Fix up the format byte, compressing the %$y$%-coordinate --- */ + + if (!f) + f = EC_XONLY; + else if (f & EC_CMPR) { + if (!(f & EC_SORT)) + f |= EC_COMPR(c, p) ? EC_YBIT : 0; + else { + ec_neg(c, &t, p); + f |= MP_CMP(p->y, >, t.y); + EC_DESTROY(&t); + } + } + + /* --- Write the format byte --- */ + + if (buf_putbyte(b, f)) return (-1); + + /* --- Write the %$x$%-coordinate --- */ + n = c->f->noctets; - if ((q = buf_get(b, n * 2)) == 0) return (-1); + if ((q = buf_get(b, n)) == 0) return (-1); mp_storeb(p->x, q, n); - mp_storeb(p->y, q + n, n); + + /* --- Write the %$y$%-coordinate if we need one --- */ + + if (f & EC_EXPLY) { + if ((q = buf_get(b, n)) == 0) return (-1); + mp_storeb(p->y, q, n); + } + + /* --- All done --- */ + return (0); } -/* --- @ec_getraw@ --- * +/* --- @ec_os2ecp@ --- * * - * Arguments: @ec_curve *c@ = elliptic curve + * Arguments: @ec_curve *c = elliptic curve + * @unsigned f@ = format flags for input * @buf *b@ = pointer to a buffer * @ec *d@ = an elliptic curve point * * Returns: Zero on success, nonzero on failure. * * Use: Reads an elliptic curve point from the given buffer using the - * standard uncompressed format described in P1383 and SEC1. - * We don't do point compression. + * standard uncompressed format described in P1363 and SEC1. + * + * Point compression features are determined by @f@ as follows. + * If @EC_LSB@ is set, then accept an LSB-compressed %$y$%- + * coordinate; if @EC_SORT@ is set, then accept a SORT- + * compressed %$y$%-coordinate; if @EC_EXPLY@ is set, then + * accept an explicit %$y$%-coordinate; if @EC_XONLY@ is set + * then accept a bare %$x$%-coordinate (a correct + * %$y$%-coordinate is chosen arbitrarily). Hybrid forms are + * acceptable, and the input is checked to verify that the + * redundant representations are consistent. If no flags are + * set in @f@, then no input (other than the point at infinity) + * will be acceptable. */ -int ec_getraw(ec_curve *c, buf *b, ec *d) +int ec_os2ecp(ec_curve *c, unsigned f, buf *b, ec *d) { const octet *q; size_t n; - int u; + ec t = EC_INIT, tt = EC_INIT; + mp *x = MP_NEW, *y = MP_NEW; + int g, gwant; + int rc = -1; + + /* --- Read the format byte --- */ + + if ((g = buf_getbyte(b)) < 0) goto done; + + /* --- Point at infinity --- */ + + if (!g) { EC_SETINF(d); rc = 0; goto done; } + + /* --- Fetch the %$x$%-coordinate --- */ - if ((u = buf_getbyte(b)) < 0) return (-1); - if (!u) { EC_SETINF(d); return (0); } - if (!(u & 4)) return (-1); n = c->f->noctets; - if ((q = buf_get(b, n * 2)) == 0) return (-1); - EC_DESTROY(d); - d->x = mp_loadb(MP_NEW, q, n); - d->y = mp_loadb(MP_NEW, q + n, n); - d->z = 0; - return (0); + if ((q = buf_get(b, n)) == 0) goto done; + x = mp_loadb(x, q, n); + + /* --- If we're compressing then figure out the right value --- * + * + * Also check that the format is acceptable to the caller. + */ + + switch (g & ~EC_EXPLY) { + case 0: + t.x = x; x = MP_NEW; break; + case EC_XONLY: + gwant = EC_XONLY; goto decompr; + case EC_CMPR: case EC_CMPR | EC_YBIT: + gwant = EC_LSB; goto decompr; + case EC_CMPR | EC_SORT: case EC_CMPR | EC_SORT | EC_YBIT: + gwant = EC_SORT; goto decompr; + default: goto done; + decompr: + if (!(f & gwant)) goto done; + if (!ec_find(c, &t, x)) goto done; + switch (gwant) { + case EC_LSB: + if (!EC_COMPR(c, &t) != !(g & EC_YBIT)) ec_neg(c, &t, &t); + if (!EC_COMPR(c, &t) != !(g & EC_YBIT)) goto done; + break; + case EC_SORT: + ec_neg(c, &tt, &t); + if (!MP_CMP(t.y, >, tt.y) != !(g & EC_YBIT)) { + if (MP_EQ(t.y, tt.y)) goto done; + MP_DROP(t.y); t.y = MP_COPY(tt.y); + } + break; + case EC_XONLY: + break; + default: + abort(); + } + } + + /* --- If an explicit %$y$%-coordinate is specified, read it in --- */ + + if (g & EC_EXPLY) { + if (!(f & EC_EXPLY)) goto done; + if ((q = buf_get(b, n)) == 0) goto done; + y = mp_loadb(y, q, n); + if (!t.y) t.y = MP_COPY(y); + else if (!MP_EQ(y, t.y)) goto done; + } + + /* --- We're ready --- */ + + EC_COPY(d, &t); + rc = 0; + + /* --- Clean up --- */ + +done: + if (x) MP_DROP(x); + if (y) MP_DROP(y); + if (t.x) MP_DROP(t.x); if (t.y) MP_DROP(t.y); + EC_DESTROY(&tt); + return (rc); } +/* --- @ec_putraw@ --- * + * + * Arguments: @ec_curve *c@ = elliptic curve + * @buf *b@ = pointer to a buffer + * @const ec *p@ = an elliptic curve point + * + * Returns: Zero on success, nonzero on failure. + * + * Use: Puts an elliptic curve point to the given buffer using the + * standard uncompressed format described in P1363 and SEC1. + * This requires at most @1 + 2 * c->f->noctets@ space in the + * buffer. We don't do point compression. + */ + +int ec_putraw(ec_curve *c, buf *b, const ec *p) + { return (ec_ec2osp(c, EC_EXPLY, b, p)); } + +/* --- @ec_getraw@ --- * + * + * Arguments: @ec_curve *c@ = elliptic curve + * @buf *b@ = pointer to a buffer + * @ec *d@ = an elliptic curve point + * + * Returns: Zero on success, nonzero on failure. + * + * Use: Reads an elliptic curve point from the given buffer using the + * standard uncompressed format described in P1363 and SEC1. + * We don't do point compression. + */ + +int ec_getraw(ec_curve *c, buf *b, ec *d) + { return (ec_os2ecp(c, EC_LSB | EC_SORT | EC_EXPLY, b, d)); } + /*----- That's all, folks -------------------------------------------------*/ diff --git a/math/ec-raw.h b/math/ec-raw.h index 4792bd70..0ceadd63 100644 --- a/math/ec-raw.h +++ b/math/ec-raw.h @@ -44,6 +44,68 @@ /*----- Data formatting ---------------------------------------------------*/ +/* EC2OSP/OS2ECP bit mask. */ +#define EC_YBIT 1u /* The compressed @y@-coordinate */ +#define EC_XONLY 1u /* The @y@-coordinate is absent */ +#define EC_CMPR 2u /* Compressed @y@-coordinate */ +#define EC_LSB 2u /* Use `lsb' compression */ +#define EC_EXPLY 4u /* Explicit @y@-coordinate */ +#define EC_SORT 8u /* Use `sort' rather than `lsb' */ + +/* --- @ec_ec2osp@ --- * + * + * Arguments: @ec_curve *c@ = elliptic curve + * @unsigned f@ = format flags for output + * @buf *b@ = pointer to a buffer + * @const ec *p@ = an elliptic curve point + * + * Returns: Zero on success, nonzero on failure. + * + * Use: Puts an elliptic curve point to the given buffer using the + * standard uncompressed format described in P1363 and SEC1. + * This requires at most @1 + 2 * c->f->noctets@ space in the + * buffer. + * + * Point compression features are determined by @f@ as follows. + * If @EC_CMPR@ is set then point compression is performed and a + * compressed form of the %$y$%-coordinate is contained in the + * first output byte; if @EC_SORT@ is set then P1363a `SORT' + * compression is used, otherwise LSB compression. If + * @EC_EXPLY@ is set, then an explicit %$y$%-coordinate is + * output in full. Otherwise the %$y$%-coordinate is + * suppressed. + */ + +extern int ec_ec2osp(ec_curve */*c*/, unsigned /*f*/, + buf */*b*/, const ec */*p*/); + +/* --- @ec_os2ecp@ --- * + * + * Arguments: @ec_curve *c = elliptic curve + * @unsigned f@ = format flags for input + * @buf *b@ = pointer to a buffer + * @ec *d@ = an elliptic curve point + * + * Returns: Zero on success, nonzero on failure. + * + * Use: Reads an elliptic curve point from the given buffer using the + * standard uncompressed format described in P1363 and SEC1. + * + * Point compression features are determined by @f@ as follows. + * If @EC_LSB@ is set, then accept an LSB-compressed %$y$%- + * coordinate; if @EC_SORT@ is set, then accept a SORT- + * compressed %$y$%-coordinate; if @EC_EXPLY@ is set, then + * accept an explicit %$y$%-coordinate; if @EC_XONLY@ is set + * then accept a bare %$x$%-coordinate (a correct + * %$y$%-coordinate is chosen arbitrarily). Hybrid forms are + * acceptable, and the input is checked to verify that the + * redundant representations are consistent. If no flags are + * set in @f@, then no input (other than the point at infinity) + * will be acceptable. + */ + +extern int ec_os2ecp(ec_curve */*c*/, unsigned /*f*/, buf */*b*/, ec */*d*/); + /* --- @ec_putraw@ --- * * * Arguments: @ec_curve *c@ = elliptic curve diff --git a/math/ec-test.c b/math/ec-test.c index 26daeef1..c75de613 100644 --- a/math/ec-test.c +++ b/math/ec-test.c @@ -38,6 +38,8 @@ #include #include "ec.h" +#include "ectab.h" +#include "ec-raw.h" #include "ec-test.h" /*----- Cardboard cut-out elliptic curve ----------------------------------*/ @@ -88,6 +90,12 @@ static ec *ecFIND(ec_curve *cc, ec *d, mp *x) return (EC_FIND(c->real, d, x)); } +static int ecCOMPR(ec_curve *cc, const ec *p) +{ + ecctx *c = (ecctx *)cc; + return (EC_COMPR(c->real, p)); +} + static int ecCHECK(ec_curve *cc, const ec *p) { ecctx *c = (ecctx *)cc; @@ -103,7 +111,7 @@ static int ecSAMEP(ec_curve *cc, ec_curve *dd) static const ec_ops ecops = { "cardboard", ecDESTROY, ecSAMEP, ecIN, ecOUT, ecFIX, - ecFIND, ecNEG, ecADD, ecSUB, ecDBL, ecCHECK + ecFIND, ecNEG, ecADD, ecSUB, ecDBL, ecCHECK, ecCOMPR }; static ec_curve *ec_cutout(ec_curve *real, const char *name) @@ -132,14 +140,26 @@ static void ecvcvt(const char *buf, dstr *d) { ec_curve *v; qd_parse qd; + const ecentry *ee; + ec_info ei; qd.p = buf; qd.e = 0; + for (ee = ectab; ee->name; ee++) { + if (qd_enum(&qd, ee->name) >= 0) { + ec_infofromdata(&ei, ee->data); + v = ei.c; + MP_DROP(ei.r); MP_DROP(ei.h); + EC_DESTROY(&ei.g); + goto found; + } + } if ((v = ec_curveparse(&qd)) == 0) { fprintf(stderr, "bad curve `%.*s|%s': %s\n", (int)(qd.p - buf), buf, qd.p, qd.e); exit(1); } +found: dstr_ensure(d, sizeof(v)); *(ec_curve **)d->buf = ec_cutout(v, buf); d->len += sizeof(v); @@ -323,6 +343,82 @@ static int vfind(dstr v[]) return (ok); } +static int vec2osp(dstr v[]) +{ + ec_curve *e = *(ec_curve **)v[0].buf; + unsigned f = *(int *)v[1].buf; + ec *p = (ec *)v[2].buf; + size_t n = 1 + 2*e->f->noctets; + dstr d = DSTR_INIT, dd = DSTR_INIT; + buf b; + int ok = 1; + int win, wantwin; + + if (strcmp(v[3].buf, "FAIL") == 0) wantwin = 0; + else { wantwin = 1; type_hex.cvt(v[3].buf, &d); } + + dstr_ensure(&dd, n); buf_init(&b, dd.buf, n); + + win = !ec_ec2osp(e, f, &b, p); + if (!win != !wantwin || + (win && (BLEN(&b) != d.len || + memcmp(BBASE(&b), d.buf, BLEN(&b)) != 0))) { + ok = 0; + fprintf(stderr, "ec2osp failed"); + fprintf(stderr, "\ncurve = "); type_ecurve.dump(v, stderr); + fprintf(stderr, "\n fmt = 0x%02x", f); + fprintf(stderr, "\n p = "); ecdodump(p, stderr); + fprintf(stderr, "\n want = "); + if (wantwin) type_hex.dump(&d, stderr); + else fprintf(stderr, "FAIL"); + fprintf(stderr, "\nfound = "); + if (win) { dd.len = BLEN(&b); type_hex.dump(&dd, stderr); } + else fprintf(stderr, "FAIL"); + fprintf(stderr, "\n"); + } + + dstr_destroy(&d); dstr_destroy(&dd); + EC_DESTROY(p); ecdestroy(e); + return (ok); +} + +static int vos2ecp(dstr v[]) +{ + ec_curve *e = *(ec_curve **)v[0].buf; + unsigned f = *(int *)v[1].buf; + int remain = *(int *)v[4].buf; + dstr d = DSTR_INIT; + ec *p, q = EC_INIT; + buf b; + int ok = 1; + int win; + + if (strcmp(v[3].buf, "FAIL") == 0) p = 0; + else { type_ec.cvt(v[3].buf, &d); p = (ec *)d.buf; } + + buf_init(&b, v[2].buf, v[2].len); + win = !ec_os2ecp(e, f, &b, &q); + + if (!win != !p || (win && (!EC_EQ(p, &q) || BLEFT(&b) != remain))) { + ok = 0; + fprintf(stderr, "os2ecp failed"); + fprintf(stderr, "\ncurve = "); type_ecurve.dump(v, stderr); + fprintf(stderr, "\n fmt = 0x%02x", f); + fprintf(stderr, "\ninput = "); type_hex.dump(&v[2], stderr); + fprintf(stderr, "\n want = "); + if (p) ecdodump(p, stderr); else fprintf(stderr, "FAIL"); + fprintf(stderr, "\nfound = "); + if (win) ecdodump(&q, stderr); else fprintf(stderr, "FAIL"); + fprintf(stderr, "\nremain= %d", remain); + fprintf(stderr, "\nleft = %d", (int)BLEFT(&b)); + fprintf(stderr, "\n"); + } + + if (p) EC_DESTROY(p); EC_DESTROY(&q); ecdestroy(e); + dstr_destroy(&d); + return (ok); +} + static test_chunk tests[] = { { "neg", vneg, { &type_ecurve, &type_ec, &type_ec } }, { "dbl", vdbl, { &type_ecurve, &type_ec, &type_ec } }, @@ -331,6 +427,9 @@ static test_chunk tests[] = { { "mul", vmul, { &type_ecurve, &type_ec, &type_mp, &type_ec } }, { "check", vcheck, { &type_ecurve, &type_ec, &type_int } }, { "find", vfind, { &type_ecurve, &type_mp, &type_ec } }, + { "ec2osp", vec2osp, { &type_ecurve, &type_int, &type_ec, &type_string } }, + { "os2ecp", vos2ecp, + { &type_ecurve, &type_int, &type_hex, &type_string, &type_int } }, { 0, 0, { 0 } } }; diff --git a/math/ec.h b/math/ec.h index cc7649da..3de2bb51 100644 --- a/math/ec.h +++ b/math/ec.h @@ -72,8 +72,10 @@ typedef struct ec_mulfactor { /* --- Elliptic curve operations --- * * - * All operations (apart from @destroy@ and @in@) are guaranteed to be - * performed on internal representations of points. + * All operations apart from @destroy@, @in@, and @compr@ are guaranteed to + * be performed on internal representations of points; @in@ and @compr@ will + * always be performed on external representations; @destroy@ might be + * performed on either. * * (Historical note. We used to guarantee that the second to @add@ and @mul@ * was the output of @in@ or @fix@, but this canonification turned out to @@ -94,6 +96,7 @@ typedef struct ec_ops { ec *(*sub)(ec_curve */*c*/, ec */*d*/, const ec */*p*/, const ec */*q*/); ec *(*dbl)(ec_curve */*c*/, ec */*d*/, const ec */*p*/); int (*check)(ec_curve */*c*/, const ec */*p*/); + int (*compr)(ec_curve */*c*/, const ec */*p*/); } ec_ops; #define EC_NAME(c) (c)->ops->name @@ -104,6 +107,7 @@ typedef struct ec_ops { #define EC_FIX(c, d, p) (c)->ops->fix((c), (d), (p)) #define EC_FIND(c, d, x) (c)->ops->find((c), (d), (x)) +#define EC_COMPR(c, d) (c)->ops->compr((c), (d)) #define EC_NEG(c, d, x) (c)->ops->neg((c), (d), (x)) #define EC_ADD(c, d, p, q) (c)->ops->add((c), (d), (p), (q)) #define EC_SUB(c, d, p, q) (c)->ops->sub((c), (d), (p), (q)) diff --git a/math/t/ec b/math/t/ec index 1dc56abf..9b57d6c4 100644 --- a/math/t/ec +++ b/math/t/ec @@ -460,3 +460,2526 @@ mul { 5846006549323611672814741753598448348329118574063 inf; } + +ec2osp { + ## Some automated tests, from `ec-compr-test.sage'. + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 1 "0x4a4edd749b4e809ddf0ecdb0cddd64b64f4558816ef243f5, 0xb3cef6f7f891a23d823aa01e96a74a3890cf71f4032d49d" + 014a4edd749b4e809ddf0ecdb0cddd64b64f4558816ef243f5; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 2 "0x4a4edd749b4e809ddf0ecdb0cddd64b64f4558816ef243f5, 0xb3cef6f7f891a23d823aa01e96a74a3890cf71f4032d49d" + 034a4edd749b4e809ddf0ecdb0cddd64b64f4558816ef243f5; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 10 "0x4a4edd749b4e809ddf0ecdb0cddd64b64f4558816ef243f5, 0xb3cef6f7f891a23d823aa01e96a74a3890cf71f4032d49d" + 0a4a4edd749b4e809ddf0ecdb0cddd64b64f4558816ef243f5; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 4 "0x4a4edd749b4e809ddf0ecdb0cddd64b64f4558816ef243f5, 0xb3cef6f7f891a23d823aa01e96a74a3890cf71f4032d49d" + 044a4edd749b4e809ddf0ecdb0cddd64b64f4558816ef243f50b3cef6f7f891a23d823aa01e96a74a3890cf71f4032d49d; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 6 "0x4a4edd749b4e809ddf0ecdb0cddd64b64f4558816ef243f5, 0xb3cef6f7f891a23d823aa01e96a74a3890cf71f4032d49d" + 074a4edd749b4e809ddf0ecdb0cddd64b64f4558816ef243f50b3cef6f7f891a23d823aa01e96a74a3890cf71f4032d49d; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 14 "0x4a4edd749b4e809ddf0ecdb0cddd64b64f4558816ef243f5, 0xb3cef6f7f891a23d823aa01e96a74a3890cf71f4032d49d" + 0e4a4edd749b4e809ddf0ecdb0cddd64b64f4558816ef243f50b3cef6f7f891a23d823aa01e96a74a3890cf71f4032d49d; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 1 "0x357d51a879fc1f08e116365028b0a74d8f1bc7af73b7505c, 0x7059e89008cb30c7625a5145ced14a07dede72c7624b6b80" + 01357d51a879fc1f08e116365028b0a74d8f1bc7af73b7505c; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 2 "0x357d51a879fc1f08e116365028b0a74d8f1bc7af73b7505c, 0x7059e89008cb30c7625a5145ced14a07dede72c7624b6b80" + 02357d51a879fc1f08e116365028b0a74d8f1bc7af73b7505c; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 10 "0x357d51a879fc1f08e116365028b0a74d8f1bc7af73b7505c, 0x7059e89008cb30c7625a5145ced14a07dede72c7624b6b80" + 0a357d51a879fc1f08e116365028b0a74d8f1bc7af73b7505c; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 4 "0x357d51a879fc1f08e116365028b0a74d8f1bc7af73b7505c, 0x7059e89008cb30c7625a5145ced14a07dede72c7624b6b80" + 04357d51a879fc1f08e116365028b0a74d8f1bc7af73b7505c7059e89008cb30c7625a5145ced14a07dede72c7624b6b80; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 6 "0x357d51a879fc1f08e116365028b0a74d8f1bc7af73b7505c, 0x7059e89008cb30c7625a5145ced14a07dede72c7624b6b80" + 06357d51a879fc1f08e116365028b0a74d8f1bc7af73b7505c7059e89008cb30c7625a5145ced14a07dede72c7624b6b80; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 14 "0x357d51a879fc1f08e116365028b0a74d8f1bc7af73b7505c, 0x7059e89008cb30c7625a5145ced14a07dede72c7624b6b80" + 0e357d51a879fc1f08e116365028b0a74d8f1bc7af73b7505c7059e89008cb30c7625a5145ced14a07dede72c7624b6b80; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 1 "0x255671b281371f7c95167be1aa7ddcf2ebe4442e5b957973, 0xc6818eac29facb3463ca315f319861caa8d6807ddc1d840d" + 01255671b281371f7c95167be1aa7ddcf2ebe4442e5b957973; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 2 "0x255671b281371f7c95167be1aa7ddcf2ebe4442e5b957973, 0xc6818eac29facb3463ca315f319861caa8d6807ddc1d840d" + 03255671b281371f7c95167be1aa7ddcf2ebe4442e5b957973; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 10 "0x255671b281371f7c95167be1aa7ddcf2ebe4442e5b957973, 0xc6818eac29facb3463ca315f319861caa8d6807ddc1d840d" + 0b255671b281371f7c95167be1aa7ddcf2ebe4442e5b957973; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 4 "0x255671b281371f7c95167be1aa7ddcf2ebe4442e5b957973, 0xc6818eac29facb3463ca315f319861caa8d6807ddc1d840d" + 04255671b281371f7c95167be1aa7ddcf2ebe4442e5b957973c6818eac29facb3463ca315f319861caa8d6807ddc1d840d; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 6 "0x255671b281371f7c95167be1aa7ddcf2ebe4442e5b957973, 0xc6818eac29facb3463ca315f319861caa8d6807ddc1d840d" + 07255671b281371f7c95167be1aa7ddcf2ebe4442e5b957973c6818eac29facb3463ca315f319861caa8d6807ddc1d840d; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 14 "0x255671b281371f7c95167be1aa7ddcf2ebe4442e5b957973, 0xc6818eac29facb3463ca315f319861caa8d6807ddc1d840d" + 0f255671b281371f7c95167be1aa7ddcf2ebe4442e5b957973c6818eac29facb3463ca315f319861caa8d6807ddc1d840d; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 1 "0x8ca5c0a995ef8e777753058364ee5ec70732c666ad0979d3, 0x31aef4dae5f98cc3cc8ce00e45533cd2abef85a7e7b181fe" + 018ca5c0a995ef8e777753058364ee5ec70732c666ad0979d3; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 2 "0x8ca5c0a995ef8e777753058364ee5ec70732c666ad0979d3, 0x31aef4dae5f98cc3cc8ce00e45533cd2abef85a7e7b181fe" + 028ca5c0a995ef8e777753058364ee5ec70732c666ad0979d3; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 10 "0x8ca5c0a995ef8e777753058364ee5ec70732c666ad0979d3, 0x31aef4dae5f98cc3cc8ce00e45533cd2abef85a7e7b181fe" + 0a8ca5c0a995ef8e777753058364ee5ec70732c666ad0979d3; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 4 "0x8ca5c0a995ef8e777753058364ee5ec70732c666ad0979d3, 0x31aef4dae5f98cc3cc8ce00e45533cd2abef85a7e7b181fe" + 048ca5c0a995ef8e777753058364ee5ec70732c666ad0979d331aef4dae5f98cc3cc8ce00e45533cd2abef85a7e7b181fe; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 6 "0x8ca5c0a995ef8e777753058364ee5ec70732c666ad0979d3, 0x31aef4dae5f98cc3cc8ce00e45533cd2abef85a7e7b181fe" + 068ca5c0a995ef8e777753058364ee5ec70732c666ad0979d331aef4dae5f98cc3cc8ce00e45533cd2abef85a7e7b181fe; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 14 "0x8ca5c0a995ef8e777753058364ee5ec70732c666ad0979d3, 0x31aef4dae5f98cc3cc8ce00e45533cd2abef85a7e7b181fe" + 0e8ca5c0a995ef8e777753058364ee5ec70732c666ad0979d331aef4dae5f98cc3cc8ce00e45533cd2abef85a7e7b181fe; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 1 "0x81e77be6a18437bee5694c10b6d93e37181172afc5ac545d, 0xce90b00553ef336cb59f214b21c9a9adba24ba9926dcec65" + 0181e77be6a18437bee5694c10b6d93e37181172afc5ac545d; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 2 "0x81e77be6a18437bee5694c10b6d93e37181172afc5ac545d, 0xce90b00553ef336cb59f214b21c9a9adba24ba9926dcec65" + 0381e77be6a18437bee5694c10b6d93e37181172afc5ac545d; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 10 "0x81e77be6a18437bee5694c10b6d93e37181172afc5ac545d, 0xce90b00553ef336cb59f214b21c9a9adba24ba9926dcec65" + 0b81e77be6a18437bee5694c10b6d93e37181172afc5ac545d; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 4 "0x81e77be6a18437bee5694c10b6d93e37181172afc5ac545d, 0xce90b00553ef336cb59f214b21c9a9adba24ba9926dcec65" + 0481e77be6a18437bee5694c10b6d93e37181172afc5ac545dce90b00553ef336cb59f214b21c9a9adba24ba9926dcec65; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 6 "0x81e77be6a18437bee5694c10b6d93e37181172afc5ac545d, 0xce90b00553ef336cb59f214b21c9a9adba24ba9926dcec65" + 0781e77be6a18437bee5694c10b6d93e37181172afc5ac545dce90b00553ef336cb59f214b21c9a9adba24ba9926dcec65; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 14 "0x81e77be6a18437bee5694c10b6d93e37181172afc5ac545d, 0xce90b00553ef336cb59f214b21c9a9adba24ba9926dcec65" + 0f81e77be6a18437bee5694c10b6d93e37181172afc5ac545dce90b00553ef336cb59f214b21c9a9adba24ba9926dcec65; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 1 "0x8e3d066daa0462601b2603c220ac97eea1158c91f74028d5, 0x81e00ca4e9c7547e6b9d84417038eb1a81f1f74b730e0e1e" + 018e3d066daa0462601b2603c220ac97eea1158c91f74028d5; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 2 "0x8e3d066daa0462601b2603c220ac97eea1158c91f74028d5, 0x81e00ca4e9c7547e6b9d84417038eb1a81f1f74b730e0e1e" + 028e3d066daa0462601b2603c220ac97eea1158c91f74028d5; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 10 "0x8e3d066daa0462601b2603c220ac97eea1158c91f74028d5, 0x81e00ca4e9c7547e6b9d84417038eb1a81f1f74b730e0e1e" + 0b8e3d066daa0462601b2603c220ac97eea1158c91f74028d5; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 4 "0x8e3d066daa0462601b2603c220ac97eea1158c91f74028d5, 0x81e00ca4e9c7547e6b9d84417038eb1a81f1f74b730e0e1e" + 048e3d066daa0462601b2603c220ac97eea1158c91f74028d581e00ca4e9c7547e6b9d84417038eb1a81f1f74b730e0e1e; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 6 "0x8e3d066daa0462601b2603c220ac97eea1158c91f74028d5, 0x81e00ca4e9c7547e6b9d84417038eb1a81f1f74b730e0e1e" + 068e3d066daa0462601b2603c220ac97eea1158c91f74028d581e00ca4e9c7547e6b9d84417038eb1a81f1f74b730e0e1e; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 14 "0x8e3d066daa0462601b2603c220ac97eea1158c91f74028d5, 0x81e00ca4e9c7547e6b9d84417038eb1a81f1f74b730e0e1e" + 0f8e3d066daa0462601b2603c220ac97eea1158c91f74028d581e00ca4e9c7547e6b9d84417038eb1a81f1f74b730e0e1e; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 1 "0xbb74d14118b4dcf9df267e73c55c60c339cf0a83df1ceb73, 0xf66ca5b4c9b939a6221c5292a4e8a3127382c9dbf2258e57" + 01bb74d14118b4dcf9df267e73c55c60c339cf0a83df1ceb73; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 2 "0xbb74d14118b4dcf9df267e73c55c60c339cf0a83df1ceb73, 0xf66ca5b4c9b939a6221c5292a4e8a3127382c9dbf2258e57" + 03bb74d14118b4dcf9df267e73c55c60c339cf0a83df1ceb73; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 10 "0xbb74d14118b4dcf9df267e73c55c60c339cf0a83df1ceb73, 0xf66ca5b4c9b939a6221c5292a4e8a3127382c9dbf2258e57" + 0bbb74d14118b4dcf9df267e73c55c60c339cf0a83df1ceb73; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 4 "0xbb74d14118b4dcf9df267e73c55c60c339cf0a83df1ceb73, 0xf66ca5b4c9b939a6221c5292a4e8a3127382c9dbf2258e57" + 04bb74d14118b4dcf9df267e73c55c60c339cf0a83df1ceb73f66ca5b4c9b939a6221c5292a4e8a3127382c9dbf2258e57; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 6 "0xbb74d14118b4dcf9df267e73c55c60c339cf0a83df1ceb73, 0xf66ca5b4c9b939a6221c5292a4e8a3127382c9dbf2258e57" + 07bb74d14118b4dcf9df267e73c55c60c339cf0a83df1ceb73f66ca5b4c9b939a6221c5292a4e8a3127382c9dbf2258e57; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 14 "0xbb74d14118b4dcf9df267e73c55c60c339cf0a83df1ceb73, 0xf66ca5b4c9b939a6221c5292a4e8a3127382c9dbf2258e57" + 0fbb74d14118b4dcf9df267e73c55c60c339cf0a83df1ceb73f66ca5b4c9b939a6221c5292a4e8a3127382c9dbf2258e57; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 1 "0x37bfc6ce47a6fbc14fd8cd77cd15284f0e5708b0ba5ec3ab, 0x891e6a87b366fb6046e317f9f7a21f7b65b5519c22af5858" + 0137bfc6ce47a6fbc14fd8cd77cd15284f0e5708b0ba5ec3ab; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 2 "0x37bfc6ce47a6fbc14fd8cd77cd15284f0e5708b0ba5ec3ab, 0x891e6a87b366fb6046e317f9f7a21f7b65b5519c22af5858" + 0237bfc6ce47a6fbc14fd8cd77cd15284f0e5708b0ba5ec3ab; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 10 "0x37bfc6ce47a6fbc14fd8cd77cd15284f0e5708b0ba5ec3ab, 0x891e6a87b366fb6046e317f9f7a21f7b65b5519c22af5858" + 0b37bfc6ce47a6fbc14fd8cd77cd15284f0e5708b0ba5ec3ab; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 4 "0x37bfc6ce47a6fbc14fd8cd77cd15284f0e5708b0ba5ec3ab, 0x891e6a87b366fb6046e317f9f7a21f7b65b5519c22af5858" + 0437bfc6ce47a6fbc14fd8cd77cd15284f0e5708b0ba5ec3ab891e6a87b366fb6046e317f9f7a21f7b65b5519c22af5858; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 6 "0x37bfc6ce47a6fbc14fd8cd77cd15284f0e5708b0ba5ec3ab, 0x891e6a87b366fb6046e317f9f7a21f7b65b5519c22af5858" + 0637bfc6ce47a6fbc14fd8cd77cd15284f0e5708b0ba5ec3ab891e6a87b366fb6046e317f9f7a21f7b65b5519c22af5858; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 14 "0x37bfc6ce47a6fbc14fd8cd77cd15284f0e5708b0ba5ec3ab, 0x891e6a87b366fb6046e317f9f7a21f7b65b5519c22af5858" + 0f37bfc6ce47a6fbc14fd8cd77cd15284f0e5708b0ba5ec3ab891e6a87b366fb6046e317f9f7a21f7b65b5519c22af5858; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 1 "0xa959703af4d041a6902c197801e88981dc5adc380b576f0, 0xda03f3c8c0f372481cd2a7195f42d7f163e07cd66e149948" + 010a959703af4d041a6902c197801e88981dc5adc380b576f0; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 2 "0xa959703af4d041a6902c197801e88981dc5adc380b576f0, 0xda03f3c8c0f372481cd2a7195f42d7f163e07cd66e149948" + 020a959703af4d041a6902c197801e88981dc5adc380b576f0; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 10 "0xa959703af4d041a6902c197801e88981dc5adc380b576f0, 0xda03f3c8c0f372481cd2a7195f42d7f163e07cd66e149948" + 0b0a959703af4d041a6902c197801e88981dc5adc380b576f0; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 4 "0xa959703af4d041a6902c197801e88981dc5adc380b576f0, 0xda03f3c8c0f372481cd2a7195f42d7f163e07cd66e149948" + 040a959703af4d041a6902c197801e88981dc5adc380b576f0da03f3c8c0f372481cd2a7195f42d7f163e07cd66e149948; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 6 "0xa959703af4d041a6902c197801e88981dc5adc380b576f0, 0xda03f3c8c0f372481cd2a7195f42d7f163e07cd66e149948" + 060a959703af4d041a6902c197801e88981dc5adc380b576f0da03f3c8c0f372481cd2a7195f42d7f163e07cd66e149948; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 14 "0xa959703af4d041a6902c197801e88981dc5adc380b576f0, 0xda03f3c8c0f372481cd2a7195f42d7f163e07cd66e149948" + 0f0a959703af4d041a6902c197801e88981dc5adc380b576f0da03f3c8c0f372481cd2a7195f42d7f163e07cd66e149948; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 1 "0x4623a4d719dc7022c1b605509f32a46f3321003cd62c8816, 0x7ecbf132abae0654c76c46118a7a58da2131d18258eec2d3" + 014623a4d719dc7022c1b605509f32a46f3321003cd62c8816; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 2 "0x4623a4d719dc7022c1b605509f32a46f3321003cd62c8816, 0x7ecbf132abae0654c76c46118a7a58da2131d18258eec2d3" + 034623a4d719dc7022c1b605509f32a46f3321003cd62c8816; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 10 "0x4623a4d719dc7022c1b605509f32a46f3321003cd62c8816, 0x7ecbf132abae0654c76c46118a7a58da2131d18258eec2d3" + 0a4623a4d719dc7022c1b605509f32a46f3321003cd62c8816; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 4 "0x4623a4d719dc7022c1b605509f32a46f3321003cd62c8816, 0x7ecbf132abae0654c76c46118a7a58da2131d18258eec2d3" + 044623a4d719dc7022c1b605509f32a46f3321003cd62c88167ecbf132abae0654c76c46118a7a58da2131d18258eec2d3; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 6 "0x4623a4d719dc7022c1b605509f32a46f3321003cd62c8816, 0x7ecbf132abae0654c76c46118a7a58da2131d18258eec2d3" + 074623a4d719dc7022c1b605509f32a46f3321003cd62c88167ecbf132abae0654c76c46118a7a58da2131d18258eec2d3; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 14 "0x4623a4d719dc7022c1b605509f32a46f3321003cd62c8816, 0x7ecbf132abae0654c76c46118a7a58da2131d18258eec2d3" + 0e4623a4d719dc7022c1b605509f32a46f3321003cd62c88167ecbf132abae0654c76c46118a7a58da2131d18258eec2d3; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 1 "0xfedded746826e542ca2b081a82915ceb1b9963182d3d58ad, 0x81213af27a8c1ab7da224f7336547415fb60bc26a5676b37" + 01fedded746826e542ca2b081a82915ceb1b9963182d3d58ad; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 2 "0xfedded746826e542ca2b081a82915ceb1b9963182d3d58ad, 0x81213af27a8c1ab7da224f7336547415fb60bc26a5676b37" + 03fedded746826e542ca2b081a82915ceb1b9963182d3d58ad; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 10 "0xfedded746826e542ca2b081a82915ceb1b9963182d3d58ad, 0x81213af27a8c1ab7da224f7336547415fb60bc26a5676b37" + 0bfedded746826e542ca2b081a82915ceb1b9963182d3d58ad; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 4 "0xfedded746826e542ca2b081a82915ceb1b9963182d3d58ad, 0x81213af27a8c1ab7da224f7336547415fb60bc26a5676b37" + 04fedded746826e542ca2b081a82915ceb1b9963182d3d58ad81213af27a8c1ab7da224f7336547415fb60bc26a5676b37; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 6 "0xfedded746826e542ca2b081a82915ceb1b9963182d3d58ad, 0x81213af27a8c1ab7da224f7336547415fb60bc26a5676b37" + 07fedded746826e542ca2b081a82915ceb1b9963182d3d58ad81213af27a8c1ab7da224f7336547415fb60bc26a5676b37; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 14 "0xfedded746826e542ca2b081a82915ceb1b9963182d3d58ad, 0x81213af27a8c1ab7da224f7336547415fb60bc26a5676b37" + 0ffedded746826e542ca2b081a82915ceb1b9963182d3d58ad81213af27a8c1ab7da224f7336547415fb60bc26a5676b37; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 1 "0x28a0eeb675fe29f76971b45079778d5de3d968f93f47050c, 0xbd10cfb1e2417568dbca10f503f52b3e14a0518022492700" + 0128a0eeb675fe29f76971b45079778d5de3d968f93f47050c; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 2 "0x28a0eeb675fe29f76971b45079778d5de3d968f93f47050c, 0xbd10cfb1e2417568dbca10f503f52b3e14a0518022492700" + 0228a0eeb675fe29f76971b45079778d5de3d968f93f47050c; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 10 "0x28a0eeb675fe29f76971b45079778d5de3d968f93f47050c, 0xbd10cfb1e2417568dbca10f503f52b3e14a0518022492700" + 0b28a0eeb675fe29f76971b45079778d5de3d968f93f47050c; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 4 "0x28a0eeb675fe29f76971b45079778d5de3d968f93f47050c, 0xbd10cfb1e2417568dbca10f503f52b3e14a0518022492700" + 0428a0eeb675fe29f76971b45079778d5de3d968f93f47050cbd10cfb1e2417568dbca10f503f52b3e14a0518022492700; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 6 "0x28a0eeb675fe29f76971b45079778d5de3d968f93f47050c, 0xbd10cfb1e2417568dbca10f503f52b3e14a0518022492700" + 0628a0eeb675fe29f76971b45079778d5de3d968f93f47050cbd10cfb1e2417568dbca10f503f52b3e14a0518022492700; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 14 "0x28a0eeb675fe29f76971b45079778d5de3d968f93f47050c, 0xbd10cfb1e2417568dbca10f503f52b3e14a0518022492700" + 0f28a0eeb675fe29f76971b45079778d5de3d968f93f47050cbd10cfb1e2417568dbca10f503f52b3e14a0518022492700; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 1 "0xaaf5b987bceace823569ef388313c5e4449c34392e5f64ef, 0xd1fb6ef2c107b0e5df50c1e8e1fbcd1d657270c64df3eb95" + 01aaf5b987bceace823569ef388313c5e4449c34392e5f64ef; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 2 "0xaaf5b987bceace823569ef388313c5e4449c34392e5f64ef, 0xd1fb6ef2c107b0e5df50c1e8e1fbcd1d657270c64df3eb95" + 03aaf5b987bceace823569ef388313c5e4449c34392e5f64ef; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 10 "0xaaf5b987bceace823569ef388313c5e4449c34392e5f64ef, 0xd1fb6ef2c107b0e5df50c1e8e1fbcd1d657270c64df3eb95" + 0baaf5b987bceace823569ef388313c5e4449c34392e5f64ef; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 4 "0xaaf5b987bceace823569ef388313c5e4449c34392e5f64ef, 0xd1fb6ef2c107b0e5df50c1e8e1fbcd1d657270c64df3eb95" + 04aaf5b987bceace823569ef388313c5e4449c34392e5f64efd1fb6ef2c107b0e5df50c1e8e1fbcd1d657270c64df3eb95; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 6 "0xaaf5b987bceace823569ef388313c5e4449c34392e5f64ef, 0xd1fb6ef2c107b0e5df50c1e8e1fbcd1d657270c64df3eb95" + 07aaf5b987bceace823569ef388313c5e4449c34392e5f64efd1fb6ef2c107b0e5df50c1e8e1fbcd1d657270c64df3eb95; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 14 "0xaaf5b987bceace823569ef388313c5e4449c34392e5f64ef, 0xd1fb6ef2c107b0e5df50c1e8e1fbcd1d657270c64df3eb95" + 0faaf5b987bceace823569ef388313c5e4449c34392e5f64efd1fb6ef2c107b0e5df50c1e8e1fbcd1d657270c64df3eb95; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 1 "0xc0bc160264bbfa1a8c0287e593de6636abeaa4abea4a3c16, 0xb13d51ea528edf923f5bc2227453fa543605fa269b988cff" + 01c0bc160264bbfa1a8c0287e593de6636abeaa4abea4a3c16; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 2 "0xc0bc160264bbfa1a8c0287e593de6636abeaa4abea4a3c16, 0xb13d51ea528edf923f5bc2227453fa543605fa269b988cff" + 03c0bc160264bbfa1a8c0287e593de6636abeaa4abea4a3c16; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 10 "0xc0bc160264bbfa1a8c0287e593de6636abeaa4abea4a3c16, 0xb13d51ea528edf923f5bc2227453fa543605fa269b988cff" + 0bc0bc160264bbfa1a8c0287e593de6636abeaa4abea4a3c16; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 4 "0xc0bc160264bbfa1a8c0287e593de6636abeaa4abea4a3c16, 0xb13d51ea528edf923f5bc2227453fa543605fa269b988cff" + 04c0bc160264bbfa1a8c0287e593de6636abeaa4abea4a3c16b13d51ea528edf923f5bc2227453fa543605fa269b988cff; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 6 "0xc0bc160264bbfa1a8c0287e593de6636abeaa4abea4a3c16, 0xb13d51ea528edf923f5bc2227453fa543605fa269b988cff" + 07c0bc160264bbfa1a8c0287e593de6636abeaa4abea4a3c16b13d51ea528edf923f5bc2227453fa543605fa269b988cff; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 14 "0xc0bc160264bbfa1a8c0287e593de6636abeaa4abea4a3c16, 0xb13d51ea528edf923f5bc2227453fa543605fa269b988cff" + 0fc0bc160264bbfa1a8c0287e593de6636abeaa4abea4a3c16b13d51ea528edf923f5bc2227453fa543605fa269b988cff; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 1 "0x8d28805d0f539dea575b2f1a7b6713984a9725deadccd4c4, 0x9a3c63546b326fab597a7ba634cc4d81c23e51b9db4caa88" + 018d28805d0f539dea575b2f1a7b6713984a9725deadccd4c4; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 2 "0x8d28805d0f539dea575b2f1a7b6713984a9725deadccd4c4, 0x9a3c63546b326fab597a7ba634cc4d81c23e51b9db4caa88" + 028d28805d0f539dea575b2f1a7b6713984a9725deadccd4c4; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 10 "0x8d28805d0f539dea575b2f1a7b6713984a9725deadccd4c4, 0x9a3c63546b326fab597a7ba634cc4d81c23e51b9db4caa88" + 0b8d28805d0f539dea575b2f1a7b6713984a9725deadccd4c4; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 4 "0x8d28805d0f539dea575b2f1a7b6713984a9725deadccd4c4, 0x9a3c63546b326fab597a7ba634cc4d81c23e51b9db4caa88" + 048d28805d0f539dea575b2f1a7b6713984a9725deadccd4c49a3c63546b326fab597a7ba634cc4d81c23e51b9db4caa88; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 6 "0x8d28805d0f539dea575b2f1a7b6713984a9725deadccd4c4, 0x9a3c63546b326fab597a7ba634cc4d81c23e51b9db4caa88" + 068d28805d0f539dea575b2f1a7b6713984a9725deadccd4c49a3c63546b326fab597a7ba634cc4d81c23e51b9db4caa88; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 14 "0x8d28805d0f539dea575b2f1a7b6713984a9725deadccd4c4, 0x9a3c63546b326fab597a7ba634cc4d81c23e51b9db4caa88" + 0f8d28805d0f539dea575b2f1a7b6713984a9725deadccd4c49a3c63546b326fab597a7ba634cc4d81c23e51b9db4caa88; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 1 "0x30c1009254a80c9e19814c3a8cb949b3a7913d59c8ff38d7, 0xb4fbfc5d1c97fa3c7181998c89121f3bf3272499a4419abc" + 0130c1009254a80c9e19814c3a8cb949b3a7913d59c8ff38d7; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 2 "0x30c1009254a80c9e19814c3a8cb949b3a7913d59c8ff38d7, 0xb4fbfc5d1c97fa3c7181998c89121f3bf3272499a4419abc" + 0230c1009254a80c9e19814c3a8cb949b3a7913d59c8ff38d7; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 10 "0x30c1009254a80c9e19814c3a8cb949b3a7913d59c8ff38d7, 0xb4fbfc5d1c97fa3c7181998c89121f3bf3272499a4419abc" + 0b30c1009254a80c9e19814c3a8cb949b3a7913d59c8ff38d7; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 4 "0x30c1009254a80c9e19814c3a8cb949b3a7913d59c8ff38d7, 0xb4fbfc5d1c97fa3c7181998c89121f3bf3272499a4419abc" + 0430c1009254a80c9e19814c3a8cb949b3a7913d59c8ff38d7b4fbfc5d1c97fa3c7181998c89121f3bf3272499a4419abc; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 6 "0x30c1009254a80c9e19814c3a8cb949b3a7913d59c8ff38d7, 0xb4fbfc5d1c97fa3c7181998c89121f3bf3272499a4419abc" + 0630c1009254a80c9e19814c3a8cb949b3a7913d59c8ff38d7b4fbfc5d1c97fa3c7181998c89121f3bf3272499a4419abc; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 14 "0x30c1009254a80c9e19814c3a8cb949b3a7913d59c8ff38d7, 0xb4fbfc5d1c97fa3c7181998c89121f3bf3272499a4419abc" + 0f30c1009254a80c9e19814c3a8cb949b3a7913d59c8ff38d7b4fbfc5d1c97fa3c7181998c89121f3bf3272499a4419abc; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 1 "0xfed74b21991dfc2b65a0d1ed84ae2735c095274fd35090e6, 0x8663021171c4a6476715bfe479d338dfb5eb631780371c2f" + 01fed74b21991dfc2b65a0d1ed84ae2735c095274fd35090e6; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 2 "0xfed74b21991dfc2b65a0d1ed84ae2735c095274fd35090e6, 0x8663021171c4a6476715bfe479d338dfb5eb631780371c2f" + 03fed74b21991dfc2b65a0d1ed84ae2735c095274fd35090e6; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 10 "0xfed74b21991dfc2b65a0d1ed84ae2735c095274fd35090e6, 0x8663021171c4a6476715bfe479d338dfb5eb631780371c2f" + 0bfed74b21991dfc2b65a0d1ed84ae2735c095274fd35090e6; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 4 "0xfed74b21991dfc2b65a0d1ed84ae2735c095274fd35090e6, 0x8663021171c4a6476715bfe479d338dfb5eb631780371c2f" + 04fed74b21991dfc2b65a0d1ed84ae2735c095274fd35090e68663021171c4a6476715bfe479d338dfb5eb631780371c2f; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 6 "0xfed74b21991dfc2b65a0d1ed84ae2735c095274fd35090e6, 0x8663021171c4a6476715bfe479d338dfb5eb631780371c2f" + 07fed74b21991dfc2b65a0d1ed84ae2735c095274fd35090e68663021171c4a6476715bfe479d338dfb5eb631780371c2f; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 14 "0xfed74b21991dfc2b65a0d1ed84ae2735c095274fd35090e6, 0x8663021171c4a6476715bfe479d338dfb5eb631780371c2f" + 0ffed74b21991dfc2b65a0d1ed84ae2735c095274fd35090e68663021171c4a6476715bfe479d338dfb5eb631780371c2f; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 1 "0xf45a53f35a9f363eb6aa5e44a0e55aae7e88a42d5350d497, 0x7ac2f5d8ef0aa9dd362eaef5f67ff607cadd77f6e0f3726e" + 01f45a53f35a9f363eb6aa5e44a0e55aae7e88a42d5350d497; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 2 "0xf45a53f35a9f363eb6aa5e44a0e55aae7e88a42d5350d497, 0x7ac2f5d8ef0aa9dd362eaef5f67ff607cadd77f6e0f3726e" + 02f45a53f35a9f363eb6aa5e44a0e55aae7e88a42d5350d497; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 10 "0xf45a53f35a9f363eb6aa5e44a0e55aae7e88a42d5350d497, 0x7ac2f5d8ef0aa9dd362eaef5f67ff607cadd77f6e0f3726e" + 0af45a53f35a9f363eb6aa5e44a0e55aae7e88a42d5350d497; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 4 "0xf45a53f35a9f363eb6aa5e44a0e55aae7e88a42d5350d497, 0x7ac2f5d8ef0aa9dd362eaef5f67ff607cadd77f6e0f3726e" + 04f45a53f35a9f363eb6aa5e44a0e55aae7e88a42d5350d4977ac2f5d8ef0aa9dd362eaef5f67ff607cadd77f6e0f3726e; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 6 "0xf45a53f35a9f363eb6aa5e44a0e55aae7e88a42d5350d497, 0x7ac2f5d8ef0aa9dd362eaef5f67ff607cadd77f6e0f3726e" + 06f45a53f35a9f363eb6aa5e44a0e55aae7e88a42d5350d4977ac2f5d8ef0aa9dd362eaef5f67ff607cadd77f6e0f3726e; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 14 "0xf45a53f35a9f363eb6aa5e44a0e55aae7e88a42d5350d497, 0x7ac2f5d8ef0aa9dd362eaef5f67ff607cadd77f6e0f3726e" + 0ef45a53f35a9f363eb6aa5e44a0e55aae7e88a42d5350d4977ac2f5d8ef0aa9dd362eaef5f67ff607cadd77f6e0f3726e; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 1 "0xa659b529801dd95fa02b818ce706968df366f006ff46f01b, 0x57bf03e04a71ee66fa32e2ac02464bb190c278adfa6aae16" + 01a659b529801dd95fa02b818ce706968df366f006ff46f01b; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 2 "0xa659b529801dd95fa02b818ce706968df366f006ff46f01b, 0x57bf03e04a71ee66fa32e2ac02464bb190c278adfa6aae16" + 02a659b529801dd95fa02b818ce706968df366f006ff46f01b; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 10 "0xa659b529801dd95fa02b818ce706968df366f006ff46f01b, 0x57bf03e04a71ee66fa32e2ac02464bb190c278adfa6aae16" + 0aa659b529801dd95fa02b818ce706968df366f006ff46f01b; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 4 "0xa659b529801dd95fa02b818ce706968df366f006ff46f01b, 0x57bf03e04a71ee66fa32e2ac02464bb190c278adfa6aae16" + 04a659b529801dd95fa02b818ce706968df366f006ff46f01b57bf03e04a71ee66fa32e2ac02464bb190c278adfa6aae16; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 6 "0xa659b529801dd95fa02b818ce706968df366f006ff46f01b, 0x57bf03e04a71ee66fa32e2ac02464bb190c278adfa6aae16" + 06a659b529801dd95fa02b818ce706968df366f006ff46f01b57bf03e04a71ee66fa32e2ac02464bb190c278adfa6aae16; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 14 "0xa659b529801dd95fa02b818ce706968df366f006ff46f01b, 0x57bf03e04a71ee66fa32e2ac02464bb190c278adfa6aae16" + 0ea659b529801dd95fa02b818ce706968df366f006ff46f01b57bf03e04a71ee66fa32e2ac02464bb190c278adfa6aae16; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 1 "0xd73c1dfe6a0566e157dd477c364d1ddb7f1ac945742e8655, 0x9b9a1fe9f00c30025f66721db612035b953dca319b1f0438" + 01d73c1dfe6a0566e157dd477c364d1ddb7f1ac945742e8655; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 2 "0xd73c1dfe6a0566e157dd477c364d1ddb7f1ac945742e8655, 0x9b9a1fe9f00c30025f66721db612035b953dca319b1f0438" + 02d73c1dfe6a0566e157dd477c364d1ddb7f1ac945742e8655; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 10 "0xd73c1dfe6a0566e157dd477c364d1ddb7f1ac945742e8655, 0x9b9a1fe9f00c30025f66721db612035b953dca319b1f0438" + 0bd73c1dfe6a0566e157dd477c364d1ddb7f1ac945742e8655; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 4 "0xd73c1dfe6a0566e157dd477c364d1ddb7f1ac945742e8655, 0x9b9a1fe9f00c30025f66721db612035b953dca319b1f0438" + 04d73c1dfe6a0566e157dd477c364d1ddb7f1ac945742e86559b9a1fe9f00c30025f66721db612035b953dca319b1f0438; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 6 "0xd73c1dfe6a0566e157dd477c364d1ddb7f1ac945742e8655, 0x9b9a1fe9f00c30025f66721db612035b953dca319b1f0438" + 06d73c1dfe6a0566e157dd477c364d1ddb7f1ac945742e86559b9a1fe9f00c30025f66721db612035b953dca319b1f0438; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 14 "0xd73c1dfe6a0566e157dd477c364d1ddb7f1ac945742e8655, 0x9b9a1fe9f00c30025f66721db612035b953dca319b1f0438" + 0fd73c1dfe6a0566e157dd477c364d1ddb7f1ac945742e86559b9a1fe9f00c30025f66721db612035b953dca319b1f0438; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 1 "0xcdf65dc6c906c5c240dba0d156b911614abe806fa2b8dc0a, 0" + 01cdf65dc6c906c5c240dba0d156b911614abe806fa2b8dc0a; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 2 "0xcdf65dc6c906c5c240dba0d156b911614abe806fa2b8dc0a, 0" + 02cdf65dc6c906c5c240dba0d156b911614abe806fa2b8dc0a; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 10 "0xcdf65dc6c906c5c240dba0d156b911614abe806fa2b8dc0a, 0" + 0acdf65dc6c906c5c240dba0d156b911614abe806fa2b8dc0a; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 4 "0xcdf65dc6c906c5c240dba0d156b911614abe806fa2b8dc0a, 0" + 04cdf65dc6c906c5c240dba0d156b911614abe806fa2b8dc0a000000000000000000000000000000000000000000000000; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 6 "0xcdf65dc6c906c5c240dba0d156b911614abe806fa2b8dc0a, 0" + 06cdf65dc6c906c5c240dba0d156b911614abe806fa2b8dc0a000000000000000000000000000000000000000000000000; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 14 "0xcdf65dc6c906c5c240dba0d156b911614abe806fa2b8dc0a, 0" + 0ecdf65dc6c906c5c240dba0d156b911614abe806fa2b8dc0a000000000000000000000000000000000000000000000000; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 1 "0x4343aeb469f003cec07b93cfb49b4ba3c242f3481d2de895, 0x739991100f0cd80ae4be4459374688cc2295a7c4dd65606a" + 014343aeb469f003cec07b93cfb49b4ba3c242f3481d2de895; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 2 "0x4343aeb469f003cec07b93cfb49b4ba3c242f3481d2de895, 0x739991100f0cd80ae4be4459374688cc2295a7c4dd65606a" + 034343aeb469f003cec07b93cfb49b4ba3c242f3481d2de895; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 10 "0x4343aeb469f003cec07b93cfb49b4ba3c242f3481d2de895, 0x739991100f0cd80ae4be4459374688cc2295a7c4dd65606a" + 0b4343aeb469f003cec07b93cfb49b4ba3c242f3481d2de895; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 4 "0x4343aeb469f003cec07b93cfb49b4ba3c242f3481d2de895, 0x739991100f0cd80ae4be4459374688cc2295a7c4dd65606a" + 044343aeb469f003cec07b93cfb49b4ba3c242f3481d2de895739991100f0cd80ae4be4459374688cc2295a7c4dd65606a; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 6 "0x4343aeb469f003cec07b93cfb49b4ba3c242f3481d2de895, 0x739991100f0cd80ae4be4459374688cc2295a7c4dd65606a" + 074343aeb469f003cec07b93cfb49b4ba3c242f3481d2de895739991100f0cd80ae4be4459374688cc2295a7c4dd65606a; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 14 "0x4343aeb469f003cec07b93cfb49b4ba3c242f3481d2de895, 0x739991100f0cd80ae4be4459374688cc2295a7c4dd65606a" + 0f4343aeb469f003cec07b93cfb49b4ba3c242f3481d2de895739991100f0cd80ae4be4459374688cc2295a7c4dd65606a; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 1 "0x5657071b2de1bd5801a7394f8eab5f46638015c8ab667d35, 0x1cf9730b3d828d67ec7a1253cdb5bd610543a7fc1c274cf" + 015657071b2de1bd5801a7394f8eab5f46638015c8ab667d35; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 2 "0x5657071b2de1bd5801a7394f8eab5f46638015c8ab667d35, 0x1cf9730b3d828d67ec7a1253cdb5bd610543a7fc1c274cf" + 025657071b2de1bd5801a7394f8eab5f46638015c8ab667d35; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 10 "0x5657071b2de1bd5801a7394f8eab5f46638015c8ab667d35, 0x1cf9730b3d828d67ec7a1253cdb5bd610543a7fc1c274cf" + 0a5657071b2de1bd5801a7394f8eab5f46638015c8ab667d35; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 4 "0x5657071b2de1bd5801a7394f8eab5f46638015c8ab667d35, 0x1cf9730b3d828d67ec7a1253cdb5bd610543a7fc1c274cf" + 045657071b2de1bd5801a7394f8eab5f46638015c8ab667d3501cf9730b3d828d67ec7a1253cdb5bd610543a7fc1c274cf; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 6 "0x5657071b2de1bd5801a7394f8eab5f46638015c8ab667d35, 0x1cf9730b3d828d67ec7a1253cdb5bd610543a7fc1c274cf" + 065657071b2de1bd5801a7394f8eab5f46638015c8ab667d3501cf9730b3d828d67ec7a1253cdb5bd610543a7fc1c274cf; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 14 "0x5657071b2de1bd5801a7394f8eab5f46638015c8ab667d35, 0x1cf9730b3d828d67ec7a1253cdb5bd610543a7fc1c274cf" + 0e5657071b2de1bd5801a7394f8eab5f46638015c8ab667d3501cf9730b3d828d67ec7a1253cdb5bd610543a7fc1c274cf; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 1 "0x64e1b37a072d12e046d1aa025ea3f7de15dfd1a2f9fff063, 0x790e8c70f3914c18ee6af84789ea4f03744202f8a379046c" + 0164e1b37a072d12e046d1aa025ea3f7de15dfd1a2f9fff063; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 2 "0x64e1b37a072d12e046d1aa025ea3f7de15dfd1a2f9fff063, 0x790e8c70f3914c18ee6af84789ea4f03744202f8a379046c" + 0264e1b37a072d12e046d1aa025ea3f7de15dfd1a2f9fff063; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 10 "0x64e1b37a072d12e046d1aa025ea3f7de15dfd1a2f9fff063, 0x790e8c70f3914c18ee6af84789ea4f03744202f8a379046c" + 0b64e1b37a072d12e046d1aa025ea3f7de15dfd1a2f9fff063; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 4 "0x64e1b37a072d12e046d1aa025ea3f7de15dfd1a2f9fff063, 0x790e8c70f3914c18ee6af84789ea4f03744202f8a379046c" + 0464e1b37a072d12e046d1aa025ea3f7de15dfd1a2f9fff063790e8c70f3914c18ee6af84789ea4f03744202f8a379046c; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 6 "0x64e1b37a072d12e046d1aa025ea3f7de15dfd1a2f9fff063, 0x790e8c70f3914c18ee6af84789ea4f03744202f8a379046c" + 0664e1b37a072d12e046d1aa025ea3f7de15dfd1a2f9fff063790e8c70f3914c18ee6af84789ea4f03744202f8a379046c; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 14 "0x64e1b37a072d12e046d1aa025ea3f7de15dfd1a2f9fff063, 0x790e8c70f3914c18ee6af84789ea4f03744202f8a379046c" + 0f64e1b37a072d12e046d1aa025ea3f7de15dfd1a2f9fff063790e8c70f3914c18ee6af84789ea4f03744202f8a379046c; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 1 "0x541b14ee7b6511e0668c93cdd07a8314095557864083d1b6, 0x3e9e7df6e64439fc956345f8cb9d7786f4dd3552c51b6f49" + 01541b14ee7b6511e0668c93cdd07a8314095557864083d1b6; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 2 "0x541b14ee7b6511e0668c93cdd07a8314095557864083d1b6, 0x3e9e7df6e64439fc956345f8cb9d7786f4dd3552c51b6f49" + 02541b14ee7b6511e0668c93cdd07a8314095557864083d1b6; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 10 "0x541b14ee7b6511e0668c93cdd07a8314095557864083d1b6, 0x3e9e7df6e64439fc956345f8cb9d7786f4dd3552c51b6f49" + 0a541b14ee7b6511e0668c93cdd07a8314095557864083d1b6; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 4 "0x541b14ee7b6511e0668c93cdd07a8314095557864083d1b6, 0x3e9e7df6e64439fc956345f8cb9d7786f4dd3552c51b6f49" + 04541b14ee7b6511e0668c93cdd07a8314095557864083d1b63e9e7df6e64439fc956345f8cb9d7786f4dd3552c51b6f49; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 6 "0x541b14ee7b6511e0668c93cdd07a8314095557864083d1b6, 0x3e9e7df6e64439fc956345f8cb9d7786f4dd3552c51b6f49" + 06541b14ee7b6511e0668c93cdd07a8314095557864083d1b63e9e7df6e64439fc956345f8cb9d7786f4dd3552c51b6f49; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 14 "0x541b14ee7b6511e0668c93cdd07a8314095557864083d1b6, 0x3e9e7df6e64439fc956345f8cb9d7786f4dd3552c51b6f49" + 0e541b14ee7b6511e0668c93cdd07a8314095557864083d1b63e9e7df6e64439fc956345f8cb9d7786f4dd3552c51b6f49; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 1 "0x2411459ff8923241c82d741f0e481c4a5841bbf4f4ec611f, 0x4b05f8ca340830dfe6c1ef0e14ebaba2f9060a297b0fc509" + 012411459ff8923241c82d741f0e481c4a5841bbf4f4ec611f; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 2 "0x2411459ff8923241c82d741f0e481c4a5841bbf4f4ec611f, 0x4b05f8ca340830dfe6c1ef0e14ebaba2f9060a297b0fc509" + 022411459ff8923241c82d741f0e481c4a5841bbf4f4ec611f; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 10 "0x2411459ff8923241c82d741f0e481c4a5841bbf4f4ec611f, 0x4b05f8ca340830dfe6c1ef0e14ebaba2f9060a297b0fc509" + 0a2411459ff8923241c82d741f0e481c4a5841bbf4f4ec611f; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 4 "0x2411459ff8923241c82d741f0e481c4a5841bbf4f4ec611f, 0x4b05f8ca340830dfe6c1ef0e14ebaba2f9060a297b0fc509" + 042411459ff8923241c82d741f0e481c4a5841bbf4f4ec611f4b05f8ca340830dfe6c1ef0e14ebaba2f9060a297b0fc509; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 6 "0x2411459ff8923241c82d741f0e481c4a5841bbf4f4ec611f, 0x4b05f8ca340830dfe6c1ef0e14ebaba2f9060a297b0fc509" + 062411459ff8923241c82d741f0e481c4a5841bbf4f4ec611f4b05f8ca340830dfe6c1ef0e14ebaba2f9060a297b0fc509; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 14 "0x2411459ff8923241c82d741f0e481c4a5841bbf4f4ec611f, 0x4b05f8ca340830dfe6c1ef0e14ebaba2f9060a297b0fc509" + 0e2411459ff8923241c82d741f0e481c4a5841bbf4f4ec611f4b05f8ca340830dfe6c1ef0e14ebaba2f9060a297b0fc509; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 1 "0x7aa7fff05e605a0ce8762d1995a32002f649eae619d3fb13, 0x1f179dcb0f081e292477629556386538450535bb8bf90ed8" + 017aa7fff05e605a0ce8762d1995a32002f649eae619d3fb13; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 2 "0x7aa7fff05e605a0ce8762d1995a32002f649eae619d3fb13, 0x1f179dcb0f081e292477629556386538450535bb8bf90ed8" + 037aa7fff05e605a0ce8762d1995a32002f649eae619d3fb13; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 10 "0x7aa7fff05e605a0ce8762d1995a32002f649eae619d3fb13, 0x1f179dcb0f081e292477629556386538450535bb8bf90ed8" + 0a7aa7fff05e605a0ce8762d1995a32002f649eae619d3fb13; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 4 "0x7aa7fff05e605a0ce8762d1995a32002f649eae619d3fb13, 0x1f179dcb0f081e292477629556386538450535bb8bf90ed8" + 047aa7fff05e605a0ce8762d1995a32002f649eae619d3fb131f179dcb0f081e292477629556386538450535bb8bf90ed8; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 6 "0x7aa7fff05e605a0ce8762d1995a32002f649eae619d3fb13, 0x1f179dcb0f081e292477629556386538450535bb8bf90ed8" + 077aa7fff05e605a0ce8762d1995a32002f649eae619d3fb131f179dcb0f081e292477629556386538450535bb8bf90ed8; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 14 "0x7aa7fff05e605a0ce8762d1995a32002f649eae619d3fb13, 0x1f179dcb0f081e292477629556386538450535bb8bf90ed8" + 0e7aa7fff05e605a0ce8762d1995a32002f649eae619d3fb131f179dcb0f081e292477629556386538450535bb8bf90ed8; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 1 "0x20a8c8bf0d1a18d848879cc2b74babc9cfae943300a7ea01, 0x50582e19e34fb01dd4d071ee43a1a3273f34843de09ed41e" + 0120a8c8bf0d1a18d848879cc2b74babc9cfae943300a7ea01; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 2 "0x20a8c8bf0d1a18d848879cc2b74babc9cfae943300a7ea01, 0x50582e19e34fb01dd4d071ee43a1a3273f34843de09ed41e" + 0320a8c8bf0d1a18d848879cc2b74babc9cfae943300a7ea01; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 10 "0x20a8c8bf0d1a18d848879cc2b74babc9cfae943300a7ea01, 0x50582e19e34fb01dd4d071ee43a1a3273f34843de09ed41e" + 0a20a8c8bf0d1a18d848879cc2b74babc9cfae943300a7ea01; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 4 "0x20a8c8bf0d1a18d848879cc2b74babc9cfae943300a7ea01, 0x50582e19e34fb01dd4d071ee43a1a3273f34843de09ed41e" + 0420a8c8bf0d1a18d848879cc2b74babc9cfae943300a7ea0150582e19e34fb01dd4d071ee43a1a3273f34843de09ed41e; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 6 "0x20a8c8bf0d1a18d848879cc2b74babc9cfae943300a7ea01, 0x50582e19e34fb01dd4d071ee43a1a3273f34843de09ed41e" + 0720a8c8bf0d1a18d848879cc2b74babc9cfae943300a7ea0150582e19e34fb01dd4d071ee43a1a3273f34843de09ed41e; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 14 "0x20a8c8bf0d1a18d848879cc2b74babc9cfae943300a7ea01, 0x50582e19e34fb01dd4d071ee43a1a3273f34843de09ed41e" + 0e20a8c8bf0d1a18d848879cc2b74babc9cfae943300a7ea0150582e19e34fb01dd4d071ee43a1a3273f34843de09ed41e; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 1 "0x1f37333026d4274b4c0401e10d24270ab98d49904a2d4a46, 0x3e598cd0612ca1f7554012eef6036f487e21f5dcce8b8c9a" + 011f37333026d4274b4c0401e10d24270ab98d49904a2d4a46; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 2 "0x1f37333026d4274b4c0401e10d24270ab98d49904a2d4a46, 0x3e598cd0612ca1f7554012eef6036f487e21f5dcce8b8c9a" + 021f37333026d4274b4c0401e10d24270ab98d49904a2d4a46; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 10 "0x1f37333026d4274b4c0401e10d24270ab98d49904a2d4a46, 0x3e598cd0612ca1f7554012eef6036f487e21f5dcce8b8c9a" + 0b1f37333026d4274b4c0401e10d24270ab98d49904a2d4a46; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 4 "0x1f37333026d4274b4c0401e10d24270ab98d49904a2d4a46, 0x3e598cd0612ca1f7554012eef6036f487e21f5dcce8b8c9a" + 041f37333026d4274b4c0401e10d24270ab98d49904a2d4a463e598cd0612ca1f7554012eef6036f487e21f5dcce8b8c9a; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 6 "0x1f37333026d4274b4c0401e10d24270ab98d49904a2d4a46, 0x3e598cd0612ca1f7554012eef6036f487e21f5dcce8b8c9a" + 061f37333026d4274b4c0401e10d24270ab98d49904a2d4a463e598cd0612ca1f7554012eef6036f487e21f5dcce8b8c9a; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 14 "0x1f37333026d4274b4c0401e10d24270ab98d49904a2d4a46, 0x3e598cd0612ca1f7554012eef6036f487e21f5dcce8b8c9a" + 0f1f37333026d4274b4c0401e10d24270ab98d49904a2d4a463e598cd0612ca1f7554012eef6036f487e21f5dcce8b8c9a; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 1 "0x1e49a7bd97ebf1eb5f5baef6525c73156518fe6f61c6201e, 0x373c5bbe1722c0e57f21549e33c0718452850da146af3ccc" + 011e49a7bd97ebf1eb5f5baef6525c73156518fe6f61c6201e; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 2 "0x1e49a7bd97ebf1eb5f5baef6525c73156518fe6f61c6201e, 0x373c5bbe1722c0e57f21549e33c0718452850da146af3ccc" + 031e49a7bd97ebf1eb5f5baef6525c73156518fe6f61c6201e; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 10 "0x1e49a7bd97ebf1eb5f5baef6525c73156518fe6f61c6201e, 0x373c5bbe1722c0e57f21549e33c0718452850da146af3ccc" + 0b1e49a7bd97ebf1eb5f5baef6525c73156518fe6f61c6201e; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 4 "0x1e49a7bd97ebf1eb5f5baef6525c73156518fe6f61c6201e, 0x373c5bbe1722c0e57f21549e33c0718452850da146af3ccc" + 041e49a7bd97ebf1eb5f5baef6525c73156518fe6f61c6201e373c5bbe1722c0e57f21549e33c0718452850da146af3ccc; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 6 "0x1e49a7bd97ebf1eb5f5baef6525c73156518fe6f61c6201e, 0x373c5bbe1722c0e57f21549e33c0718452850da146af3ccc" + 071e49a7bd97ebf1eb5f5baef6525c73156518fe6f61c6201e373c5bbe1722c0e57f21549e33c0718452850da146af3ccc; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 14 "0x1e49a7bd97ebf1eb5f5baef6525c73156518fe6f61c6201e, 0x373c5bbe1722c0e57f21549e33c0718452850da146af3ccc" + 0f1e49a7bd97ebf1eb5f5baef6525c73156518fe6f61c6201e373c5bbe1722c0e57f21549e33c0718452850da146af3ccc; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 1 "0x778f1f35c3d626b92bf5431f1f4b8ff58e55f4d928e0b310, 0x4e8ccb18a22d51bcdeeb09c684bad19818d1fc0296493f1d" + 01778f1f35c3d626b92bf5431f1f4b8ff58e55f4d928e0b310; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 2 "0x778f1f35c3d626b92bf5431f1f4b8ff58e55f4d928e0b310, 0x4e8ccb18a22d51bcdeeb09c684bad19818d1fc0296493f1d" + 03778f1f35c3d626b92bf5431f1f4b8ff58e55f4d928e0b310; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 10 "0x778f1f35c3d626b92bf5431f1f4b8ff58e55f4d928e0b310, 0x4e8ccb18a22d51bcdeeb09c684bad19818d1fc0296493f1d" + 0b778f1f35c3d626b92bf5431f1f4b8ff58e55f4d928e0b310; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 4 "0x778f1f35c3d626b92bf5431f1f4b8ff58e55f4d928e0b310, 0x4e8ccb18a22d51bcdeeb09c684bad19818d1fc0296493f1d" + 04778f1f35c3d626b92bf5431f1f4b8ff58e55f4d928e0b3104e8ccb18a22d51bcdeeb09c684bad19818d1fc0296493f1d; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 6 "0x778f1f35c3d626b92bf5431f1f4b8ff58e55f4d928e0b310, 0x4e8ccb18a22d51bcdeeb09c684bad19818d1fc0296493f1d" + 07778f1f35c3d626b92bf5431f1f4b8ff58e55f4d928e0b3104e8ccb18a22d51bcdeeb09c684bad19818d1fc0296493f1d; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 14 "0x778f1f35c3d626b92bf5431f1f4b8ff58e55f4d928e0b310, 0x4e8ccb18a22d51bcdeeb09c684bad19818d1fc0296493f1d" + 0f778f1f35c3d626b92bf5431f1f4b8ff58e55f4d928e0b3104e8ccb18a22d51bcdeeb09c684bad19818d1fc0296493f1d; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 1 "0x55b1efc9de4a137b8b1d029df401e61b0ce1eb7b0ea5fed8, 0x1300fb7ee8bd6abaadc35d2ebab7cc1d7a9a3e51c51a4b97" + 0155b1efc9de4a137b8b1d029df401e61b0ce1eb7b0ea5fed8; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 2 "0x55b1efc9de4a137b8b1d029df401e61b0ce1eb7b0ea5fed8, 0x1300fb7ee8bd6abaadc35d2ebab7cc1d7a9a3e51c51a4b97" + 0355b1efc9de4a137b8b1d029df401e61b0ce1eb7b0ea5fed8; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 10 "0x55b1efc9de4a137b8b1d029df401e61b0ce1eb7b0ea5fed8, 0x1300fb7ee8bd6abaadc35d2ebab7cc1d7a9a3e51c51a4b97" + 0a55b1efc9de4a137b8b1d029df401e61b0ce1eb7b0ea5fed8; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 4 "0x55b1efc9de4a137b8b1d029df401e61b0ce1eb7b0ea5fed8, 0x1300fb7ee8bd6abaadc35d2ebab7cc1d7a9a3e51c51a4b97" + 0455b1efc9de4a137b8b1d029df401e61b0ce1eb7b0ea5fed81300fb7ee8bd6abaadc35d2ebab7cc1d7a9a3e51c51a4b97; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 6 "0x55b1efc9de4a137b8b1d029df401e61b0ce1eb7b0ea5fed8, 0x1300fb7ee8bd6abaadc35d2ebab7cc1d7a9a3e51c51a4b97" + 0755b1efc9de4a137b8b1d029df401e61b0ce1eb7b0ea5fed81300fb7ee8bd6abaadc35d2ebab7cc1d7a9a3e51c51a4b97; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 14 "0x55b1efc9de4a137b8b1d029df401e61b0ce1eb7b0ea5fed8, 0x1300fb7ee8bd6abaadc35d2ebab7cc1d7a9a3e51c51a4b97" + 0e55b1efc9de4a137b8b1d029df401e61b0ce1eb7b0ea5fed81300fb7ee8bd6abaadc35d2ebab7cc1d7a9a3e51c51a4b97; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 1 "0x4096fd47fd83815c62d39189391813d30757d22eeff22c58, 0x20c650b7df0b5020613d01add02cb8ac12ba4b535e7ec20e" + 014096fd47fd83815c62d39189391813d30757d22eeff22c58; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 2 "0x4096fd47fd83815c62d39189391813d30757d22eeff22c58, 0x20c650b7df0b5020613d01add02cb8ac12ba4b535e7ec20e" + 034096fd47fd83815c62d39189391813d30757d22eeff22c58; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 10 "0x4096fd47fd83815c62d39189391813d30757d22eeff22c58, 0x20c650b7df0b5020613d01add02cb8ac12ba4b535e7ec20e" + 0a4096fd47fd83815c62d39189391813d30757d22eeff22c58; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 4 "0x4096fd47fd83815c62d39189391813d30757d22eeff22c58, 0x20c650b7df0b5020613d01add02cb8ac12ba4b535e7ec20e" + 044096fd47fd83815c62d39189391813d30757d22eeff22c5820c650b7df0b5020613d01add02cb8ac12ba4b535e7ec20e; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 6 "0x4096fd47fd83815c62d39189391813d30757d22eeff22c58, 0x20c650b7df0b5020613d01add02cb8ac12ba4b535e7ec20e" + 074096fd47fd83815c62d39189391813d30757d22eeff22c5820c650b7df0b5020613d01add02cb8ac12ba4b535e7ec20e; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 14 "0x4096fd47fd83815c62d39189391813d30757d22eeff22c58, 0x20c650b7df0b5020613d01add02cb8ac12ba4b535e7ec20e" + 0e4096fd47fd83815c62d39189391813d30757d22eeff22c5820c650b7df0b5020613d01add02cb8ac12ba4b535e7ec20e; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 1 "0x19391bbb8ba770803ab78120041b4f93df342a4fa0b211f1, 0x7a48fef3d594f699fdde633a54fa8a1a5bb5d4bf74eb3eee" + 0119391bbb8ba770803ab78120041b4f93df342a4fa0b211f1; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 2 "0x19391bbb8ba770803ab78120041b4f93df342a4fa0b211f1, 0x7a48fef3d594f699fdde633a54fa8a1a5bb5d4bf74eb3eee" + 0319391bbb8ba770803ab78120041b4f93df342a4fa0b211f1; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 10 "0x19391bbb8ba770803ab78120041b4f93df342a4fa0b211f1, 0x7a48fef3d594f699fdde633a54fa8a1a5bb5d4bf74eb3eee" + 0b19391bbb8ba770803ab78120041b4f93df342a4fa0b211f1; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 4 "0x19391bbb8ba770803ab78120041b4f93df342a4fa0b211f1, 0x7a48fef3d594f699fdde633a54fa8a1a5bb5d4bf74eb3eee" + 0419391bbb8ba770803ab78120041b4f93df342a4fa0b211f17a48fef3d594f699fdde633a54fa8a1a5bb5d4bf74eb3eee; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 6 "0x19391bbb8ba770803ab78120041b4f93df342a4fa0b211f1, 0x7a48fef3d594f699fdde633a54fa8a1a5bb5d4bf74eb3eee" + 0719391bbb8ba770803ab78120041b4f93df342a4fa0b211f17a48fef3d594f699fdde633a54fa8a1a5bb5d4bf74eb3eee; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 14 "0x19391bbb8ba770803ab78120041b4f93df342a4fa0b211f1, 0x7a48fef3d594f699fdde633a54fa8a1a5bb5d4bf74eb3eee" + 0f19391bbb8ba770803ab78120041b4f93df342a4fa0b211f17a48fef3d594f699fdde633a54fa8a1a5bb5d4bf74eb3eee; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 1 "0x5c39aacd95a92a49568683996b36a97a4a48dd5d4c2df145, 0x1c7884ec55df4c32b7a6ad44ca2d2d7fb85d13165cf6f1b7" + 015c39aacd95a92a49568683996b36a97a4a48dd5d4c2df145; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 2 "0x5c39aacd95a92a49568683996b36a97a4a48dd5d4c2df145, 0x1c7884ec55df4c32b7a6ad44ca2d2d7fb85d13165cf6f1b7" + 025c39aacd95a92a49568683996b36a97a4a48dd5d4c2df145; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 10 "0x5c39aacd95a92a49568683996b36a97a4a48dd5d4c2df145, 0x1c7884ec55df4c32b7a6ad44ca2d2d7fb85d13165cf6f1b7" + 0a5c39aacd95a92a49568683996b36a97a4a48dd5d4c2df145; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 4 "0x5c39aacd95a92a49568683996b36a97a4a48dd5d4c2df145, 0x1c7884ec55df4c32b7a6ad44ca2d2d7fb85d13165cf6f1b7" + 045c39aacd95a92a49568683996b36a97a4a48dd5d4c2df1451c7884ec55df4c32b7a6ad44ca2d2d7fb85d13165cf6f1b7; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 6 "0x5c39aacd95a92a49568683996b36a97a4a48dd5d4c2df145, 0x1c7884ec55df4c32b7a6ad44ca2d2d7fb85d13165cf6f1b7" + 065c39aacd95a92a49568683996b36a97a4a48dd5d4c2df1451c7884ec55df4c32b7a6ad44ca2d2d7fb85d13165cf6f1b7; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 14 "0x5c39aacd95a92a49568683996b36a97a4a48dd5d4c2df145, 0x1c7884ec55df4c32b7a6ad44ca2d2d7fb85d13165cf6f1b7" + 0e5c39aacd95a92a49568683996b36a97a4a48dd5d4c2df1451c7884ec55df4c32b7a6ad44ca2d2d7fb85d13165cf6f1b7; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 1 "0x36e17de09989a68c460e8037061e6d50ba39e636437f2a0e, 0x519d1ca5741cbd2094e4da11690a9f9becf7fc2be3d90f43" + 0136e17de09989a68c460e8037061e6d50ba39e636437f2a0e; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 2 "0x36e17de09989a68c460e8037061e6d50ba39e636437f2a0e, 0x519d1ca5741cbd2094e4da11690a9f9becf7fc2be3d90f43" + 0336e17de09989a68c460e8037061e6d50ba39e636437f2a0e; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 10 "0x36e17de09989a68c460e8037061e6d50ba39e636437f2a0e, 0x519d1ca5741cbd2094e4da11690a9f9becf7fc2be3d90f43" + 0a36e17de09989a68c460e8037061e6d50ba39e636437f2a0e; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 4 "0x36e17de09989a68c460e8037061e6d50ba39e636437f2a0e, 0x519d1ca5741cbd2094e4da11690a9f9becf7fc2be3d90f43" + 0436e17de09989a68c460e8037061e6d50ba39e636437f2a0e519d1ca5741cbd2094e4da11690a9f9becf7fc2be3d90f43; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 6 "0x36e17de09989a68c460e8037061e6d50ba39e636437f2a0e, 0x519d1ca5741cbd2094e4da11690a9f9becf7fc2be3d90f43" + 0736e17de09989a68c460e8037061e6d50ba39e636437f2a0e519d1ca5741cbd2094e4da11690a9f9becf7fc2be3d90f43; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 14 "0x36e17de09989a68c460e8037061e6d50ba39e636437f2a0e, 0x519d1ca5741cbd2094e4da11690a9f9becf7fc2be3d90f43" + 0e36e17de09989a68c460e8037061e6d50ba39e636437f2a0e519d1ca5741cbd2094e4da11690a9f9becf7fc2be3d90f43; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 1 "0xe5ae49c08857f870df660ecea0daf49a954add38b2bc360, 0x4ffb1a65b46e7a786c06dc147bb3584bd7d5478a658dc9c" + 010e5ae49c08857f870df660ecea0daf49a954add38b2bc360; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 2 "0xe5ae49c08857f870df660ecea0daf49a954add38b2bc360, 0x4ffb1a65b46e7a786c06dc147bb3584bd7d5478a658dc9c" + 020e5ae49c08857f870df660ecea0daf49a954add38b2bc360; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 10 "0xe5ae49c08857f870df660ecea0daf49a954add38b2bc360, 0x4ffb1a65b46e7a786c06dc147bb3584bd7d5478a658dc9c" + 0a0e5ae49c08857f870df660ecea0daf49a954add38b2bc360; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 4 "0xe5ae49c08857f870df660ecea0daf49a954add38b2bc360, 0x4ffb1a65b46e7a786c06dc147bb3584bd7d5478a658dc9c" + 040e5ae49c08857f870df660ecea0daf49a954add38b2bc36004ffb1a65b46e7a786c06dc147bb3584bd7d5478a658dc9c; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 6 "0xe5ae49c08857f870df660ecea0daf49a954add38b2bc360, 0x4ffb1a65b46e7a786c06dc147bb3584bd7d5478a658dc9c" + 060e5ae49c08857f870df660ecea0daf49a954add38b2bc36004ffb1a65b46e7a786c06dc147bb3584bd7d5478a658dc9c; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 14 "0xe5ae49c08857f870df660ecea0daf49a954add38b2bc360, 0x4ffb1a65b46e7a786c06dc147bb3584bd7d5478a658dc9c" + 0e0e5ae49c08857f870df660ecea0daf49a954add38b2bc36004ffb1a65b46e7a786c06dc147bb3584bd7d5478a658dc9c; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 1 "0x6e04125f2dc2365aefa92730915381931b078cedbf629e05, 0x47490d0ed8641541332d5d4ab3ce5b524e9f9357dab4693f" + 016e04125f2dc2365aefa92730915381931b078cedbf629e05; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 2 "0x6e04125f2dc2365aefa92730915381931b078cedbf629e05, 0x47490d0ed8641541332d5d4ab3ce5b524e9f9357dab4693f" + 036e04125f2dc2365aefa92730915381931b078cedbf629e05; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 10 "0x6e04125f2dc2365aefa92730915381931b078cedbf629e05, 0x47490d0ed8641541332d5d4ab3ce5b524e9f9357dab4693f" + 0b6e04125f2dc2365aefa92730915381931b078cedbf629e05; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 4 "0x6e04125f2dc2365aefa92730915381931b078cedbf629e05, 0x47490d0ed8641541332d5d4ab3ce5b524e9f9357dab4693f" + 046e04125f2dc2365aefa92730915381931b078cedbf629e0547490d0ed8641541332d5d4ab3ce5b524e9f9357dab4693f; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 6 "0x6e04125f2dc2365aefa92730915381931b078cedbf629e05, 0x47490d0ed8641541332d5d4ab3ce5b524e9f9357dab4693f" + 076e04125f2dc2365aefa92730915381931b078cedbf629e0547490d0ed8641541332d5d4ab3ce5b524e9f9357dab4693f; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 14 "0x6e04125f2dc2365aefa92730915381931b078cedbf629e05, 0x47490d0ed8641541332d5d4ab3ce5b524e9f9357dab4693f" + 0f6e04125f2dc2365aefa92730915381931b078cedbf629e0547490d0ed8641541332d5d4ab3ce5b524e9f9357dab4693f; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 1 "0x5c4c6b5bdd62fb20bafaedabb4d97ed468e95cbc3dfd5e76, 0x4932a0e1b6d970ea2a61a7ed2cc2a7fa638ffea834fee0a0" + 015c4c6b5bdd62fb20bafaedabb4d97ed468e95cbc3dfd5e76; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 2 "0x5c4c6b5bdd62fb20bafaedabb4d97ed468e95cbc3dfd5e76, 0x4932a0e1b6d970ea2a61a7ed2cc2a7fa638ffea834fee0a0" + 025c4c6b5bdd62fb20bafaedabb4d97ed468e95cbc3dfd5e76; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 10 "0x5c4c6b5bdd62fb20bafaedabb4d97ed468e95cbc3dfd5e76, 0x4932a0e1b6d970ea2a61a7ed2cc2a7fa638ffea834fee0a0" + 0b5c4c6b5bdd62fb20bafaedabb4d97ed468e95cbc3dfd5e76; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 4 "0x5c4c6b5bdd62fb20bafaedabb4d97ed468e95cbc3dfd5e76, 0x4932a0e1b6d970ea2a61a7ed2cc2a7fa638ffea834fee0a0" + 045c4c6b5bdd62fb20bafaedabb4d97ed468e95cbc3dfd5e764932a0e1b6d970ea2a61a7ed2cc2a7fa638ffea834fee0a0; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 6 "0x5c4c6b5bdd62fb20bafaedabb4d97ed468e95cbc3dfd5e76, 0x4932a0e1b6d970ea2a61a7ed2cc2a7fa638ffea834fee0a0" + 065c4c6b5bdd62fb20bafaedabb4d97ed468e95cbc3dfd5e764932a0e1b6d970ea2a61a7ed2cc2a7fa638ffea834fee0a0; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 14 "0x5c4c6b5bdd62fb20bafaedabb4d97ed468e95cbc3dfd5e76, 0x4932a0e1b6d970ea2a61a7ed2cc2a7fa638ffea834fee0a0" + 0f5c4c6b5bdd62fb20bafaedabb4d97ed468e95cbc3dfd5e764932a0e1b6d970ea2a61a7ed2cc2a7fa638ffea834fee0a0; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 1 "0x6a360d5e7ecfddcf0a9e559084a5449ee6d6af987fc0143f, 0x1a57e78331521a137f4d1c43365b6aee3175b0005a81d213" + 016a360d5e7ecfddcf0a9e559084a5449ee6d6af987fc0143f; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 2 "0x6a360d5e7ecfddcf0a9e559084a5449ee6d6af987fc0143f, 0x1a57e78331521a137f4d1c43365b6aee3175b0005a81d213" + 026a360d5e7ecfddcf0a9e559084a5449ee6d6af987fc0143f; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 10 "0x6a360d5e7ecfddcf0a9e559084a5449ee6d6af987fc0143f, 0x1a57e78331521a137f4d1c43365b6aee3175b0005a81d213" + 0a6a360d5e7ecfddcf0a9e559084a5449ee6d6af987fc0143f; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 4 "0x6a360d5e7ecfddcf0a9e559084a5449ee6d6af987fc0143f, 0x1a57e78331521a137f4d1c43365b6aee3175b0005a81d213" + 046a360d5e7ecfddcf0a9e559084a5449ee6d6af987fc0143f1a57e78331521a137f4d1c43365b6aee3175b0005a81d213; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 6 "0x6a360d5e7ecfddcf0a9e559084a5449ee6d6af987fc0143f, 0x1a57e78331521a137f4d1c43365b6aee3175b0005a81d213" + 066a360d5e7ecfddcf0a9e559084a5449ee6d6af987fc0143f1a57e78331521a137f4d1c43365b6aee3175b0005a81d213; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 14 "0x6a360d5e7ecfddcf0a9e559084a5449ee6d6af987fc0143f, 0x1a57e78331521a137f4d1c43365b6aee3175b0005a81d213" + 0e6a360d5e7ecfddcf0a9e559084a5449ee6d6af987fc0143f1a57e78331521a137f4d1c43365b6aee3175b0005a81d213; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 1 "0x157dd5cf6e5569889fd2134a43ec65d9577ee52f16304717, 0x3adcce30cceea003b91178b3508c445fdc3533dc5b687c08" + 01157dd5cf6e5569889fd2134a43ec65d9577ee52f16304717; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 2 "0x157dd5cf6e5569889fd2134a43ec65d9577ee52f16304717, 0x3adcce30cceea003b91178b3508c445fdc3533dc5b687c08" + 02157dd5cf6e5569889fd2134a43ec65d9577ee52f16304717; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 10 "0x157dd5cf6e5569889fd2134a43ec65d9577ee52f16304717, 0x3adcce30cceea003b91178b3508c445fdc3533dc5b687c08" + 0b157dd5cf6e5569889fd2134a43ec65d9577ee52f16304717; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 4 "0x157dd5cf6e5569889fd2134a43ec65d9577ee52f16304717, 0x3adcce30cceea003b91178b3508c445fdc3533dc5b687c08" + 04157dd5cf6e5569889fd2134a43ec65d9577ee52f163047173adcce30cceea003b91178b3508c445fdc3533dc5b687c08; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 6 "0x157dd5cf6e5569889fd2134a43ec65d9577ee52f16304717, 0x3adcce30cceea003b91178b3508c445fdc3533dc5b687c08" + 06157dd5cf6e5569889fd2134a43ec65d9577ee52f163047173adcce30cceea003b91178b3508c445fdc3533dc5b687c08; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 14 "0x157dd5cf6e5569889fd2134a43ec65d9577ee52f16304717, 0x3adcce30cceea003b91178b3508c445fdc3533dc5b687c08" + 0f157dd5cf6e5569889fd2134a43ec65d9577ee52f163047173adcce30cceea003b91178b3508c445fdc3533dc5b687c08; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 1 "0, 1" + 01000000000000000000000000000000000000000000000000; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 2 "0, 1" + 02000000000000000000000000000000000000000000000000; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 10 "0, 1" + 0a000000000000000000000000000000000000000000000000; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 4 "0, 1" + 04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 6 "0, 1" + 06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 14 "0, 1" + 0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001; +} + +os2ecp { + "prime: 6277101735386680763835789423207666416083908700390324961279 + prime: -3, 0x64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1" + 4 00ff inf 1; + + ## Mismatch between flags and descriptor. + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 1 01694f1d5405eaa694093ce90cd20f4452407cec983f2ad29e + "0x694f1d5405eaa694093ce90cd20f4452407cec983f2ad29e, 0x2416f0c58db563c1ebe8abb83ad992dea937df9f775575fe" 0; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 14 01694f1d5405eaa694093ce90cd20f4452407cec983f2ad29e + FAIL -1; + + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 2 02694f1d5405eaa694093ce90cd20f4452407cec983f2ad29e + "0x694f1d5405eaa694093ce90cd20f4452407cec983f2ad29e, 0x2416f0c58db563c1ebe8abb83ad992dea937df9f775575fe" 0; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 13 02694f1d5405eaa694093ce90cd20f4452407cec983f2ad29e + FAIL -1; + + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 8 0b694f1d5405eaa694093ce90cd20f4452407cec983f2ad29e + "0x694f1d5405eaa694093ce90cd20f4452407cec983f2ad29e, 0xdbe90f3a724a9c3e14175447c5266d2156c8206088aa8915" 0; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 7 0b694f1d5405eaa694093ce90cd20f4452407cec983f2ad29e + FAIL -1; + + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 4 04694f1d5405eaa694093ce90cd20f4452407cec983f2ad29e2416f0c58db563c1ebe8abb83ad992dea937df9f775575fe + "0x694f1d5405eaa694093ce90cd20f4452407cec983f2ad29e, 0x2416f0c58db563c1ebe8abb83ad992dea937df9f775575fe" 0; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 11 04694f1d5405eaa694093ce90cd20f4452407cec983f2ad29e2416f0c58db563c1ebe8abb83ad992dea937df9f775575fe + FAIL -1; + + ## (The hybrid forms require /all/ of the applicable flag bits to be set.) + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 6 06694f1d5405eaa694093ce90cd20f4452407cec983f2ad29e2416f0c58db563c1ebe8abb83ad992dea937df9f775575fe + "0x694f1d5405eaa694093ce90cd20f4452407cec983f2ad29e, 0x2416f0c58db563c1ebe8abb83ad992dea937df9f775575fe" 0; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 13 06694f1d5405eaa694093ce90cd20f4452407cec983f2ad29e2416f0c58db563c1ebe8abb83ad992dea937df9f775575fe + FAIL -1; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 11 06694f1d5405eaa694093ce90cd20f4452407cec983f2ad29e2416f0c58db563c1ebe8abb83ad992dea937df9f775575fe + FAIL -1; + + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 12 0f694f1d5405eaa694093ce90cd20f4452407cec983f2ad29edbe90f3a724a9c3e14175447c5266d2156c8206088aa8915 + "0x694f1d5405eaa694093ce90cd20f4452407cec983f2ad29e, 0xdbe90f3a724a9c3e14175447c5266d2156c8206088aa8915" 0; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 11 0f694f1d5405eaa694093ce90cd20f4452407cec983f2ad29edbe90f3a724a9c3e14175447c5266d2156c8206088aa8915 + FAIL -1; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 7 0f694f1d5405eaa694093ce90cd20f4452407cec983f2ad29edbe90f3a724a9c3e14175447c5266d2156c8206088aa8915 + FAIL -1; + + ## Truncated inputs. + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 1 01694f1d5405eaa694093ce90cd20f4452407cec983f2ad2 + FAIL -1; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 2 02694f1d5405eaa694093ce90cd20f4452407cec983f2ad2 + FAIL -1; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 4 04694f1d5405eaa694093ce90cd20f4452407cec983f2ad29e2416f0c58db563c1ebe8abb83ad992dea937df9f775575 + FAIL -1; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 4 04694f1d5405eaa694093ce90cd20f4452407cec983f2ad29e + FAIL -1; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 6 06694f1d5405eaa694093ce90cd20f4452407cec983f2ad29e2416f0c58db563c1ebe8abb83ad992dea937df9f775575 + FAIL -1; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 6 06694f1d5405eaa694093ce90cd20f4452407cec983f2ad29e + FAIL -1; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 6 06694f1d5405eaa694093ce90cd20f4452407cec983f2ad2 + FAIL -1; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 8 0b694f1d5405eaa694093ce90cd20f4452407cec983f2ad2 + FAIL -1; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 12 0f694f1d5405eaa694093ce90cd20f4452407cec983f2ad29edbe90f3a724a9c3e14175447c5266d2156c8206088aa89 + FAIL -1; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 12 0f694f1d5405eaa694093ce90cd20f4452407cec983f2ad29e + FAIL -1; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 12 0f694f1d5405eaa694093ce90cd20f4452407cec983f2ad2 + FAIL -1; + + ## Some automated tests, from `ec-compr-test.sage'. + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 1 + 01694f1d5405eaa694093ce90cd20f4452407cec983f2ad29e + "0x694f1d5405eaa694093ce90cd20f4452407cec983f2ad29e, 0x2416f0c58db563c1ebe8abb83ad992dea937df9f775575fe" + 0; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 4 + 04694f1d5405eaa694093ce90cd20f4452407cec983f2ad29e2416f0c58db563c1ebe8abb83ad992dea937df9f775575fe30ab74acfcf2dddd34313b2620 + "0x694f1d5405eaa694093ce90cd20f4452407cec983f2ad29e, 0x2416f0c58db563c1ebe8abb83ad992dea937df9f775575fe" + 13; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 2 + 02694f1d5405eaa694093ce90cd20f4452407cec983f2ad29e902745d7 + "0x694f1d5405eaa694093ce90cd20f4452407cec983f2ad29e, 0x2416f0c58db563c1ebe8abb83ad992dea937df9f775575fe" + 4; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 6 + 06694f1d5405eaa694093ce90cd20f4452407cec983f2ad29e2416f0c58db563c1ebe8abb83ad992dea937df9f775575fea4bcedf53b + "0x694f1d5405eaa694093ce90cd20f4452407cec983f2ad29e, 0x2416f0c58db563c1ebe8abb83ad992dea937df9f775575fe" + 5; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 6 + 07694f1d5405eaa694093ce90cd20f4452407cec983f2ad29e2416f0c58db563c1ebe8abb83ad992dea937df9f775575fe64c00c7867fe5609e164490ba8 + FAIL + 13; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 8 + 0a694f1d5405eaa694093ce90cd20f4452407cec983f2ad29ed981506b80ec547661eee31c + "0x694f1d5405eaa694093ce90cd20f4452407cec983f2ad29e, 0x2416f0c58db563c1ebe8abb83ad992dea937df9f775575fe" + 12; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 12 + 0e694f1d5405eaa694093ce90cd20f4452407cec983f2ad29e2416f0c58db563c1ebe8abb83ad992dea937df9f775575fef4dcc0773b4ffc + "0x694f1d5405eaa694093ce90cd20f4452407cec983f2ad29e, 0x2416f0c58db563c1ebe8abb83ad992dea937df9f775575fe" + 7; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 12 + 0f694f1d5405eaa694093ce90cd20f4452407cec983f2ad29e2416f0c58db563c1ebe8abb83ad992dea937df9f775575fe269df3156c6676 + FAIL + 7; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 1 + 01a83e44fff520fa2a241e771371330957a439af1b0736098b4cccb20d9ae7e18ec1a3 + "0xa83e44fff520fa2a241e771371330957a439af1b0736098b, 0x1db7040ca8c00351e34b9da93d4ca6f46ac51d6713e7f74d" + 10; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 4 + 04a83e44fff520fa2a241e771371330957a439af1b0736098be248fbf3573ffcae1cb46256c2b3590b953ae298ec1807c68c31b084e289 + "0xa83e44fff520fa2a241e771371330957a439af1b0736098b, 0xe248fbf3573ffcae1cb46256c2b3590b953ae298ec1807c6" + 6; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 2 + 02a83e44fff520fa2a241e771371330957a439af1b0736098b8ed890 + "0xa83e44fff520fa2a241e771371330957a439af1b0736098b, 0xe248fbf3573ffcae1cb46256c2b3590b953ae298ec1807c6" + 3; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 6 + 06a83e44fff520fa2a241e771371330957a439af1b0736098be248fbf3573ffcae1cb46256c2b3590b953ae298ec1807c6e26ab73e6537512ca8e5 + "0xa83e44fff520fa2a241e771371330957a439af1b0736098b, 0xe248fbf3573ffcae1cb46256c2b3590b953ae298ec1807c6" + 10; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 6 + 07a83e44fff520fa2a241e771371330957a439af1b0736098be248fbf3573ffcae1cb46256c2b3590b953ae298ec1807c6b958ca + FAIL + 3; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 8 + 0ba83e44fff520fa2a241e771371330957a439af1b0736098b47c5c1b979acd9f653f582b26d + "0xa83e44fff520fa2a241e771371330957a439af1b0736098b, 0xe248fbf3573ffcae1cb46256c2b3590b953ae298ec1807c6" + 13; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 12 + 0fa83e44fff520fa2a241e771371330957a439af1b0736098be248fbf3573ffcae1cb46256c2b3590b953ae298ec1807c65c + "0xa83e44fff520fa2a241e771371330957a439af1b0736098b, 0xe248fbf3573ffcae1cb46256c2b3590b953ae298ec1807c6" + 1; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 12 + 0ea83e44fff520fa2a241e771371330957a439af1b0736098be248fbf3573ffcae1cb46256c2b3590b953ae298ec1807c600 + FAIL + 1; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 1 + 01a5b404e72d3b83af5bc9ad477bd6cad966ecd19efabea834c865832d6bf0281080 + "0xa5b404e72d3b83af5bc9ad477bd6cad966ecd19efabea834, 0x50f9eef6f3fcad11c5607caf554ffd29f24027bec6e7efa6" + 9; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 4 + 04a5b404e72d3b83af5bc9ad477bd6cad966ecd19efabea834af0611090c0352ee3a9f8350aab002d60dbfd84139180f6d0c + "0xa5b404e72d3b83af5bc9ad477bd6cad966ecd19efabea834, 0xaf0611090c0352ee3a9f8350aab002d60dbfd84139180f6d" + 1; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 2 + 03a5b404e72d3b83af5bc9ad477bd6cad966ecd19efabea83430b0d7 + "0xa5b404e72d3b83af5bc9ad477bd6cad966ecd19efabea834, 0xaf0611090c0352ee3a9f8350aab002d60dbfd84139180f6d" + 3; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 6 + 07a5b404e72d3b83af5bc9ad477bd6cad966ecd19efabea834af0611090c0352ee3a9f8350aab002d60dbfd84139180f6d71a5d517693bdcd4d9 + "0xa5b404e72d3b83af5bc9ad477bd6cad966ecd19efabea834, 0xaf0611090c0352ee3a9f8350aab002d60dbfd84139180f6d" + 9; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 6 + 06a5b404e72d3b83af5bc9ad477bd6cad966ecd19efabea834af0611090c0352ee3a9f8350aab002d60dbfd84139180f6d5a279aafee67d44c04fb + FAIL + 10; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 8 + 0ba5b404e72d3b83af5bc9ad477bd6cad966ecd19efabea834c486 + "0xa5b404e72d3b83af5bc9ad477bd6cad966ecd19efabea834, 0xaf0611090c0352ee3a9f8350aab002d60dbfd84139180f6d" + 2; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 12 + 0fa5b404e72d3b83af5bc9ad477bd6cad966ecd19efabea834af0611090c0352ee3a9f8350aab002d60dbfd84139180f6dca40806b95f8f1eeac69 + "0xa5b404e72d3b83af5bc9ad477bd6cad966ecd19efabea834, 0xaf0611090c0352ee3a9f8350aab002d60dbfd84139180f6d" + 10; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 12 + 0ea5b404e72d3b83af5bc9ad477bd6cad966ecd19efabea834af0611090c0352ee3a9f8350aab002d60dbfd84139180f6de8f05a09 + FAIL + 4; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 1 + 017c34105e5f122b21f5591b996d7d688d99be3997e3c0649376cb9c6fb755fe720d066d + "0x7c34105e5f122b21f5591b996d7d688d99be3997e3c06493, 0x289d5b2e8b647e023d83d0a57cae8729758cd49004d2aff9" + 11; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 4 + 047c34105e5f122b21f5591b996d7d688d99be3997e3c06493289d5b2e8b647e023d83d0a57cae8729758cd49004d2aff9c0d4fe238cacef92c0 + "0x7c34105e5f122b21f5591b996d7d688d99be3997e3c06493, 0x289d5b2e8b647e023d83d0a57cae8729758cd49004d2aff9" + 9; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 2 + 037c34105e5f122b21f5591b996d7d688d99be3997e3c06493 + "0x7c34105e5f122b21f5591b996d7d688d99be3997e3c06493, 0x289d5b2e8b647e023d83d0a57cae8729758cd49004d2aff9" + 0; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 6 + 077c34105e5f122b21f5591b996d7d688d99be3997e3c06493289d5b2e8b647e023d83d0a57cae8729758cd49004d2aff91ad71e63007a32b5 + "0x7c34105e5f122b21f5591b996d7d688d99be3997e3c06493, 0x289d5b2e8b647e023d83d0a57cae8729758cd49004d2aff9" + 8; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 6 + 067c34105e5f122b21f5591b996d7d688d99be3997e3c06493289d5b2e8b647e023d83d0a57cae8729758cd49004d2aff9f28ef5c42fdd1ec8c4 + FAIL + 9; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 8 + 0a7c34105e5f122b21f5591b996d7d688d99be3997e3c064938c02448973b55d5e20aadb57 + "0x7c34105e5f122b21f5591b996d7d688d99be3997e3c06493, 0x289d5b2e8b647e023d83d0a57cae8729758cd49004d2aff9" + 12; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 12 + 0e7c34105e5f122b21f5591b996d7d688d99be3997e3c06493289d5b2e8b647e023d83d0a57cae8729758cd49004d2aff98444 + "0x7c34105e5f122b21f5591b996d7d688d99be3997e3c06493, 0x289d5b2e8b647e023d83d0a57cae8729758cd49004d2aff9" + 2; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 12 + 0f7c34105e5f122b21f5591b996d7d688d99be3997e3c06493289d5b2e8b647e023d83d0a57cae8729758cd49004d2aff90f294d8cb7 + FAIL + 5; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 1 + 01f5d56fd888a0f08841eee7d156f4a91d07a3f2d5c6f3f44d5a15efe5bef116ce56c2 + "0xf5d56fd888a0f08841eee7d156f4a91d07a3f2d5c6f3f44d, 0x73e62494a7091acee4f1dfc658f4f7894ed94669fc42bac5" + 10; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 4 + 04f5d56fd888a0f08841eee7d156f4a91d07a3f2d5c6f3f44d8c19db6b58f6e5311b0e2039a70b0876b126b99603bd444e9d9d29aa + "0xf5d56fd888a0f08841eee7d156f4a91d07a3f2d5c6f3f44d, 0x8c19db6b58f6e5311b0e2039a70b0876b126b99603bd444e" + 4; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 2 + 02f5d56fd888a0f08841eee7d156f4a91d07a3f2d5c6f3f44d401a38d8acea447c3d498da6 + "0xf5d56fd888a0f08841eee7d156f4a91d07a3f2d5c6f3f44d, 0x8c19db6b58f6e5311b0e2039a70b0876b126b99603bd444e" + 12; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 6 + 06f5d56fd888a0f08841eee7d156f4a91d07a3f2d5c6f3f44d8c19db6b58f6e5311b0e2039a70b0876b126b99603bd444eaa1dba + "0xf5d56fd888a0f08841eee7d156f4a91d07a3f2d5c6f3f44d, 0x8c19db6b58f6e5311b0e2039a70b0876b126b99603bd444e" + 3; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 6 + 07f5d56fd888a0f08841eee7d156f4a91d07a3f2d5c6f3f44d8c19db6b58f6e5311b0e2039a70b0876b126b99603bd444e7cac128ce187ce1d8a + FAIL + 9; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 8 + 0bf5d56fd888a0f08841eee7d156f4a91d07a3f2d5c6f3f44d834c9a51a3be6b051d0611 + "0xf5d56fd888a0f08841eee7d156f4a91d07a3f2d5c6f3f44d, 0x8c19db6b58f6e5311b0e2039a70b0876b126b99603bd444e" + 11; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 12 + 0ff5d56fd888a0f08841eee7d156f4a91d07a3f2d5c6f3f44d8c19db6b58f6e5311b0e2039a70b0876b126b99603bd444e7c674eaed42a60283ed840746f + "0xf5d56fd888a0f08841eee7d156f4a91d07a3f2d5c6f3f44d, 0x8c19db6b58f6e5311b0e2039a70b0876b126b99603bd444e" + 13; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 12 + 0ef5d56fd888a0f08841eee7d156f4a91d07a3f2d5c6f3f44d8c19db6b58f6e5311b0e2039a70b0876b126b99603bd444e092c2d2a5f4e653318b53f + FAIL + 11; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 1 + 01dc46619f909961b2eae36c1935136d7c9e53741a63a448f818efba0f81bca1862867969187 + "0xdc46619f909961b2eae36c1935136d7c9e53741a63a448f8, 0x77d0d33fecb0d1049deeee3b1c727a3e9d15a5af81a4e1eb" + 13; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 4 + 04dc46619f909961b2eae36c1935136d7c9e53741a63a448f877d0d33fecb0d1049deeee3b1c727a3e9d15a5af81a4e1ebc7708d + "0xdc46619f909961b2eae36c1935136d7c9e53741a63a448f8, 0x77d0d33fecb0d1049deeee3b1c727a3e9d15a5af81a4e1eb" + 3; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 2 + 03dc46619f909961b2eae36c1935136d7c9e53741a63a448f843378401fce01374 + "0xdc46619f909961b2eae36c1935136d7c9e53741a63a448f8, 0x77d0d33fecb0d1049deeee3b1c727a3e9d15a5af81a4e1eb" + 8; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 6 + 07dc46619f909961b2eae36c1935136d7c9e53741a63a448f877d0d33fecb0d1049deeee3b1c727a3e9d15a5af81a4e1eb96473008b1005b88474e8c04bf + "0xdc46619f909961b2eae36c1935136d7c9e53741a63a448f8, 0x77d0d33fecb0d1049deeee3b1c727a3e9d15a5af81a4e1eb" + 13; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 6 + 06dc46619f909961b2eae36c1935136d7c9e53741a63a448f877d0d33fecb0d1049deeee3b1c727a3e9d15a5af81a4e1eb207d5040 + FAIL + 4; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 8 + 0adc46619f909961b2eae36c1935136d7c9e53741a63a448f8d0203736ae9ce5b6 + "0xdc46619f909961b2eae36c1935136d7c9e53741a63a448f8, 0x77d0d33fecb0d1049deeee3b1c727a3e9d15a5af81a4e1eb" + 8; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 12 + 0edc46619f909961b2eae36c1935136d7c9e53741a63a448f877d0d33fecb0d1049deeee3b1c727a3e9d15a5af81a4e1ebe41c + "0xdc46619f909961b2eae36c1935136d7c9e53741a63a448f8, 0x77d0d33fecb0d1049deeee3b1c727a3e9d15a5af81a4e1eb" + 2; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 12 + 0fdc46619f909961b2eae36c1935136d7c9e53741a63a448f877d0d33fecb0d1049deeee3b1c727a3e9d15a5af81a4e1eb15c7b71b1b97f8a1 + FAIL + 8; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 1 + 01a8f80cd8b48f0fa75505586a6c1e064c8fd5bd99c5fb5dcb7c1b9d55 + "0xa8f80cd8b48f0fa75505586a6c1e064c8fd5bd99c5fb5dcb, 0x4df2ef0cf197b05bceb0357e1faf3d87f46503429431ea" + 4; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 4 + 04a8f80cd8b48f0fa75505586a6c1e064c8fd5bd99c5fb5dcb004df2ef0cf197b05bceb0357e1faf3d87f46503429431ea + "0xa8f80cd8b48f0fa75505586a6c1e064c8fd5bd99c5fb5dcb, 0x4df2ef0cf197b05bceb0357e1faf3d87f46503429431ea" + 0; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 2 + 02a8f80cd8b48f0fa75505586a6c1e064c8fd5bd99c5fb5dcb + "0xa8f80cd8b48f0fa75505586a6c1e064c8fd5bd99c5fb5dcb, 0x4df2ef0cf197b05bceb0357e1faf3d87f46503429431ea" + 0; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 6 + 06a8f80cd8b48f0fa75505586a6c1e064c8fd5bd99c5fb5dcb004df2ef0cf197b05bceb0357e1faf3d87f46503429431ea901f + "0xa8f80cd8b48f0fa75505586a6c1e064c8fd5bd99c5fb5dcb, 0x4df2ef0cf197b05bceb0357e1faf3d87f46503429431ea" + 2; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 6 + 07a8f80cd8b48f0fa75505586a6c1e064c8fd5bd99c5fb5dcb004df2ef0cf197b05bceb0357e1faf3d87f46503429431ea22 + FAIL + 1; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 8 + 0aa8f80cd8b48f0fa75505586a6c1e064c8fd5bd99c5fb5dcb37145047def7fdf3d2d6794e5e27 + "0xa8f80cd8b48f0fa75505586a6c1e064c8fd5bd99c5fb5dcb, 0x4df2ef0cf197b05bceb0357e1faf3d87f46503429431ea" + 14; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 12 + 0ea8f80cd8b48f0fa75505586a6c1e064c8fd5bd99c5fb5dcb004df2ef0cf197b05bceb0357e1faf3d87f46503429431ea87b59d + "0xa8f80cd8b48f0fa75505586a6c1e064c8fd5bd99c5fb5dcb, 0x4df2ef0cf197b05bceb0357e1faf3d87f46503429431ea" + 3; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 12 + 0fa8f80cd8b48f0fa75505586a6c1e064c8fd5bd99c5fb5dcb004df2ef0cf197b05bceb0357e1faf3d87f46503429431eaed3b3b090bcb31 + FAIL + 7; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 1 + 015a213bc1258f59faa9b5064674a69ba5e7a9d6b5ebf0cd692d + "0x5a213bc1258f59faa9b5064674a69ba5e7a9d6b5ebf0cd69, 0x7a53220b6eb8fc3efcd1794368a011cf5f497185d18fb38f" + 1; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 4 + 045a213bc1258f59faa9b5064674a69ba5e7a9d6b5ebf0cd697a53220b6eb8fc3efcd1794368a011cf5f497185d18fb38f397b + "0x5a213bc1258f59faa9b5064674a69ba5e7a9d6b5ebf0cd69, 0x7a53220b6eb8fc3efcd1794368a011cf5f497185d18fb38f" + 2; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 2 + 035a213bc1258f59faa9b5064674a69ba5e7a9d6b5ebf0cd690d980cfa784dfb + "0x5a213bc1258f59faa9b5064674a69ba5e7a9d6b5ebf0cd69, 0x7a53220b6eb8fc3efcd1794368a011cf5f497185d18fb38f" + 7; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 6 + 075a213bc1258f59faa9b5064674a69ba5e7a9d6b5ebf0cd697a53220b6eb8fc3efcd1794368a011cf5f497185d18fb38f6048a31a2018baaf56 + "0x5a213bc1258f59faa9b5064674a69ba5e7a9d6b5ebf0cd69, 0x7a53220b6eb8fc3efcd1794368a011cf5f497185d18fb38f" + 9; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 6 + 065a213bc1258f59faa9b5064674a69ba5e7a9d6b5ebf0cd697a53220b6eb8fc3efcd1794368a011cf5f497185d18fb38fa74cdaaea2997808c5 + FAIL + 9; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 8 + 0a5a213bc1258f59faa9b5064674a69ba5e7a9d6b5ebf0cd69b1c512cb517b + "0x5a213bc1258f59faa9b5064674a69ba5e7a9d6b5ebf0cd69, 0x7a53220b6eb8fc3efcd1794368a011cf5f497185d18fb38f" + 6; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 12 + 0e5a213bc1258f59faa9b5064674a69ba5e7a9d6b5ebf0cd697a53220b6eb8fc3efcd1794368a011cf5f497185d18fb38f6874c185d3565a + "0x5a213bc1258f59faa9b5064674a69ba5e7a9d6b5ebf0cd69, 0x7a53220b6eb8fc3efcd1794368a011cf5f497185d18fb38f" + 7; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 12 + 0f5a213bc1258f59faa9b5064674a69ba5e7a9d6b5ebf0cd697a53220b6eb8fc3efcd1794368a011cf5f497185d18fb38fb73eae2718 + FAIL + 5; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 1 + 01e1a8ab766889961fad7cb7e0b49e3aef58b966757a2c3325217b8f8c3f3f + "0xe1a8ab766889961fad7cb7e0b49e3aef58b966757a2c3325, 0x33996e41dce5ceb7f08ae065b4f6f4f917b0c4a37706f367" + 6; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 4 + 04e1a8ab766889961fad7cb7e0b49e3aef58b966757a2c3325cc6691be231a31480f751f9a4b090b06e84f3b5c88f90bac04cd4eb46208e9 + "0xe1a8ab766889961fad7cb7e0b49e3aef58b966757a2c3325, 0xcc6691be231a31480f751f9a4b090b06e84f3b5c88f90bac" + 7; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 2 + 02e1a8ab766889961fad7cb7e0b49e3aef58b966757a2c3325bc + "0xe1a8ab766889961fad7cb7e0b49e3aef58b966757a2c3325, 0xcc6691be231a31480f751f9a4b090b06e84f3b5c88f90bac" + 1; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 6 + 06e1a8ab766889961fad7cb7e0b49e3aef58b966757a2c3325cc6691be231a31480f751f9a4b090b06e84f3b5c88f90bacb8d573e21b8f174323 + "0xe1a8ab766889961fad7cb7e0b49e3aef58b966757a2c3325, 0xcc6691be231a31480f751f9a4b090b06e84f3b5c88f90bac" + 9; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 6 + 07e1a8ab766889961fad7cb7e0b49e3aef58b966757a2c3325cc6691be231a31480f751f9a4b090b06e84f3b5c88f90bac24a63e5cba5cf2d4c718369034 + FAIL + 13; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 8 + 0be1a8ab766889961fad7cb7e0b49e3aef58b966757a2c332506823810e736a9b5cd + "0xe1a8ab766889961fad7cb7e0b49e3aef58b966757a2c3325, 0xcc6691be231a31480f751f9a4b090b06e84f3b5c88f90bac" + 9; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 12 + 0fe1a8ab766889961fad7cb7e0b49e3aef58b966757a2c3325cc6691be231a31480f751f9a4b090b06e84f3b5c88f90baca9c75bdebad8d546a2f5 + "0xe1a8ab766889961fad7cb7e0b49e3aef58b966757a2c3325, 0xcc6691be231a31480f751f9a4b090b06e84f3b5c88f90bac" + 10; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 12 + 0ee1a8ab766889961fad7cb7e0b49e3aef58b966757a2c3325cc6691be231a31480f751f9a4b090b06e84f3b5c88f90bac86d460248f9d + FAIL + 6; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 1 + 018b3b579ed1bd8fa70aba6cfa1f2e6c7cc192e94c46d0bc4712 + "0x8b3b579ed1bd8fa70aba6cfa1f2e6c7cc192e94c46d0bc47, 0x608eae976fb68fe4fd46450756ed16c4aec59ad13975cc6c" + 1; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 4 + 048b3b579ed1bd8fa70aba6cfa1f2e6c7cc192e94c46d0bc47608eae976fb68fe4fd46450756ed16c4aec59ad13975cc6c26fe2fd9 + "0x8b3b579ed1bd8fa70aba6cfa1f2e6c7cc192e94c46d0bc47, 0x608eae976fb68fe4fd46450756ed16c4aec59ad13975cc6c" + 4; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 2 + 028b3b579ed1bd8fa70aba6cfa1f2e6c7cc192e94c46d0bc47c2a2442f + "0x8b3b579ed1bd8fa70aba6cfa1f2e6c7cc192e94c46d0bc47, 0x608eae976fb68fe4fd46450756ed16c4aec59ad13975cc6c" + 4; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 6 + 068b3b579ed1bd8fa70aba6cfa1f2e6c7cc192e94c46d0bc47608eae976fb68fe4fd46450756ed16c4aec59ad13975cc6cd5ac23e091ef51ac + "0x8b3b579ed1bd8fa70aba6cfa1f2e6c7cc192e94c46d0bc47, 0x608eae976fb68fe4fd46450756ed16c4aec59ad13975cc6c" + 8; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 6 + 078b3b579ed1bd8fa70aba6cfa1f2e6c7cc192e94c46d0bc47608eae976fb68fe4fd46450756ed16c4aec59ad13975cc6cd8e5fe2bb7f8955594d857290bc3 + FAIL + 14; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 8 + 0a8b3b579ed1bd8fa70aba6cfa1f2e6c7cc192e94c46d0bc4702603f1896b500fa3326fbe489 + "0x8b3b579ed1bd8fa70aba6cfa1f2e6c7cc192e94c46d0bc47, 0x608eae976fb68fe4fd46450756ed16c4aec59ad13975cc6c" + 13; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 12 + 0e8b3b579ed1bd8fa70aba6cfa1f2e6c7cc192e94c46d0bc47608eae976fb68fe4fd46450756ed16c4aec59ad13975cc6c + "0x8b3b579ed1bd8fa70aba6cfa1f2e6c7cc192e94c46d0bc47, 0x608eae976fb68fe4fd46450756ed16c4aec59ad13975cc6c" + 0; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 12 + 0f8b3b579ed1bd8fa70aba6cfa1f2e6c7cc192e94c46d0bc47608eae976fb68fe4fd46450756ed16c4aec59ad13975cc6c82fd1c5ce10542 + FAIL + 7; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 1 + 01e5eab6ba916413fba8c4697fac734fa5ffb76451c9a9b964525ab912fb + "0xe5eab6ba916413fba8c4697fac734fa5ffb76451c9a9b964, 0x5ba475395248a0872c5a9fa37732a483002951cc149723f3" + 5; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 4 + 04e5eab6ba916413fba8c4697fac734fa5ffb76451c9a9b964a45b8ac6adb75f78d3a5605c88cd5b7cffd6ae33eb68db20eabd7dfa2c22780d0b493c02 + "0xe5eab6ba916413fba8c4697fac734fa5ffb76451c9a9b964, 0xa45b8ac6adb75f78d3a5605c88cd5b7cffd6ae33eb68db20" + 12; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 2 + 02e5eab6ba916413fba8c4697fac734fa5ffb76451c9a9b964cc4438ee36ffcdec063af021 + "0xe5eab6ba916413fba8c4697fac734fa5ffb76451c9a9b964, 0xa45b8ac6adb75f78d3a5605c88cd5b7cffd6ae33eb68db20" + 12; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 6 + 06e5eab6ba916413fba8c4697fac734fa5ffb76451c9a9b964a45b8ac6adb75f78d3a5605c88cd5b7cffd6ae33eb68db20d7c754b1997806cf5f60a2be + "0xe5eab6ba916413fba8c4697fac734fa5ffb76451c9a9b964, 0xa45b8ac6adb75f78d3a5605c88cd5b7cffd6ae33eb68db20" + 12; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 6 + 07e5eab6ba916413fba8c4697fac734fa5ffb76451c9a9b964a45b8ac6adb75f78d3a5605c88cd5b7cffd6ae33eb68db20c99f2affc4ea + FAIL + 6; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 8 + 0be5eab6ba916413fba8c4697fac734fa5ffb76451c9a9b964dc47938e41c5 + "0xe5eab6ba916413fba8c4697fac734fa5ffb76451c9a9b964, 0xa45b8ac6adb75f78d3a5605c88cd5b7cffd6ae33eb68db20" + 6; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 12 + 0fe5eab6ba916413fba8c4697fac734fa5ffb76451c9a9b964a45b8ac6adb75f78d3a5605c88cd5b7cffd6ae33eb68db202198df77f7dfcb + "0xe5eab6ba916413fba8c4697fac734fa5ffb76451c9a9b964, 0xa45b8ac6adb75f78d3a5605c88cd5b7cffd6ae33eb68db20" + 7; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 12 + 0ee5eab6ba916413fba8c4697fac734fa5ffb76451c9a9b964a45b8ac6adb75f78d3a5605c88cd5b7cffd6ae33eb68db20 + FAIL + 0; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 1 + 01ad47a5035e18fcd30f3a34f48718d2866bb185a93baeb420 + "0xad47a5035e18fcd30f3a34f48718d2866bb185a93baeb420, 0x7e779ae6fefc5d18bd3abbf8801c04148b4a42309975fd7e" + 0; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 4 + 04ad47a5035e18fcd30f3a34f48718d2866bb185a93baeb4207e779ae6fefc5d18bd3abbf8801c04148b4a42309975fd7e + "0xad47a5035e18fcd30f3a34f48718d2866bb185a93baeb420, 0x7e779ae6fefc5d18bd3abbf8801c04148b4a42309975fd7e" + 0; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 2 + 02ad47a5035e18fcd30f3a34f48718d2866bb185a93baeb420fe8569 + "0xad47a5035e18fcd30f3a34f48718d2866bb185a93baeb420, 0x7e779ae6fefc5d18bd3abbf8801c04148b4a42309975fd7e" + 3; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 6 + 06ad47a5035e18fcd30f3a34f48718d2866bb185a93baeb4207e779ae6fefc5d18bd3abbf8801c04148b4a42309975fd7efb5565 + "0xad47a5035e18fcd30f3a34f48718d2866bb185a93baeb420, 0x7e779ae6fefc5d18bd3abbf8801c04148b4a42309975fd7e" + 3; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 6 + 07ad47a5035e18fcd30f3a34f48718d2866bb185a93baeb4207e779ae6fefc5d18bd3abbf8801c04148b4a42309975fd7e1997 + FAIL + 2; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 8 + 0aad47a5035e18fcd30f3a34f48718d2866bb185a93baeb42090d798e6ba5ac7583ee81f9682 + "0xad47a5035e18fcd30f3a34f48718d2866bb185a93baeb420, 0x7e779ae6fefc5d18bd3abbf8801c04148b4a42309975fd7e" + 13; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 12 + 0ead47a5035e18fcd30f3a34f48718d2866bb185a93baeb4207e779ae6fefc5d18bd3abbf8801c04148b4a42309975fd7e66cbf3 + "0xad47a5035e18fcd30f3a34f48718d2866bb185a93baeb420, 0x7e779ae6fefc5d18bd3abbf8801c04148b4a42309975fd7e" + 3; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 12 + 0fad47a5035e18fcd30f3a34f48718d2866bb185a93baeb4207e779ae6fefc5d18bd3abbf8801c04148b4a42309975fd7ee9e0d7ab966e0ea4e1c601dc + FAIL + 12; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 1 + 0123199c43e03054933b8da07733516696fc55b1a305475995a579875a + "0x23199c43e03054933b8da07733516696fc55b1a305475995, 0x4544790392d407753cd6e636101136da9d7e515c0333592d" + 4; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 4 + 0423199c43e03054933b8da07733516696fc55b1a3054759954544790392d407753cd6e636101136da9d7e515c0333592d5bc5b568c8ff1ed697de98efa3008e + "0x23199c43e03054933b8da07733516696fc55b1a305475995, 0x4544790392d407753cd6e636101136da9d7e515c0333592d" + 15; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 2 + 0323199c43e03054933b8da07733516696fc55b1a305475995c6234b70 + "0x23199c43e03054933b8da07733516696fc55b1a305475995, 0x4544790392d407753cd6e636101136da9d7e515c0333592d" + 4; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 6 + 0723199c43e03054933b8da07733516696fc55b1a3054759954544790392d407753cd6e636101136da9d7e515c0333592da225725d972cd6e6f0a789321d + "0x23199c43e03054933b8da07733516696fc55b1a305475995, 0x4544790392d407753cd6e636101136da9d7e515c0333592d" + 13; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 6 + 0623199c43e03054933b8da07733516696fc55b1a3054759954544790392d407753cd6e636101136da9d7e515c0333592d98c6745743ca2c3db760568e150da9 + FAIL + 15; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 8 + 0a23199c43e03054933b8da07733516696fc55b1a305475995f43f88252a + "0x23199c43e03054933b8da07733516696fc55b1a305475995, 0x4544790392d407753cd6e636101136da9d7e515c0333592d" + 5; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 12 + 0e23199c43e03054933b8da07733516696fc55b1a3054759954544790392d407753cd6e636101136da9d7e515c0333592dab1edda693e9cb51 + "0x23199c43e03054933b8da07733516696fc55b1a305475995, 0x4544790392d407753cd6e636101136da9d7e515c0333592d" + 8; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 12 + 0f23199c43e03054933b8da07733516696fc55b1a3054759954544790392d407753cd6e636101136da9d7e515c0333592d109fcb331164e38c5456 + FAIL + 10; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 1 + 018e87fb02a03e9e428c066a02752c46bfd34865a2a2d8f33a2c922ed52f7d + "0x8e87fb02a03e9e428c066a02752c46bfd34865a2a2d8f33a, 0x32cf5eebd1b82c2633488efb96844cb45c88c533c6c9d6b8" + 6; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 4 + 048e87fb02a03e9e428c066a02752c46bfd34865a2a2d8f33a32cf5eebd1b82c2633488efb96844cb45c88c533c6c9d6b8fe3bddafe634 + "0x8e87fb02a03e9e428c066a02752c46bfd34865a2a2d8f33a, 0x32cf5eebd1b82c2633488efb96844cb45c88c533c6c9d6b8" + 6; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 2 + 028e87fb02a03e9e428c066a02752c46bfd34865a2a2d8f33ab6c6268c41 + "0x8e87fb02a03e9e428c066a02752c46bfd34865a2a2d8f33a, 0x32cf5eebd1b82c2633488efb96844cb45c88c533c6c9d6b8" + 5; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 6 + 068e87fb02a03e9e428c066a02752c46bfd34865a2a2d8f33a32cf5eebd1b82c2633488efb96844cb45c88c533c6c9d6b873f477f89a596a5620 + "0x8e87fb02a03e9e428c066a02752c46bfd34865a2a2d8f33a, 0x32cf5eebd1b82c2633488efb96844cb45c88c533c6c9d6b8" + 9; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 6 + 078e87fb02a03e9e428c066a02752c46bfd34865a2a2d8f33a32cf5eebd1b82c2633488efb96844cb45c88c533c6c9d6b82cd17a9498b70697d12d4b3786 + FAIL + 13; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 8 + 0a8e87fb02a03e9e428c066a02752c46bfd34865a2a2d8f33ada7d59746f8972 + "0x8e87fb02a03e9e428c066a02752c46bfd34865a2a2d8f33a, 0x32cf5eebd1b82c2633488efb96844cb45c88c533c6c9d6b8" + 7; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 12 + 0e8e87fb02a03e9e428c066a02752c46bfd34865a2a2d8f33a32cf5eebd1b82c2633488efb96844cb45c88c533c6c9d6b842b8f93c4ce08cd4ca7077b52dc6a4 + "0x8e87fb02a03e9e428c066a02752c46bfd34865a2a2d8f33a, 0x32cf5eebd1b82c2633488efb96844cb45c88c533c6c9d6b8" + 15; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 12 + 0f8e87fb02a03e9e428c066a02752c46bfd34865a2a2d8f33a32cf5eebd1b82c2633488efb96844cb45c88c533c6c9d6b82eeec91becfc53a7ca + FAIL + 9; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 1 + 011a39bfc960e8b0e1278c6cc57231260400307b2aa5d042961f9576b92b5a + "0x1a39bfc960e8b0e1278c6cc57231260400307b2aa5d04296, 0x12aa1aba568f1dbfc547ff062049ab8f9161088a090c8c95" + 6; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 4 + 041a39bfc960e8b0e1278c6cc57231260400307b2aa5d04296ed55e545a970e2403ab800f9dfb654706e9ef775f6f3727e41605c + "0x1a39bfc960e8b0e1278c6cc57231260400307b2aa5d04296, 0xed55e545a970e2403ab800f9dfb654706e9ef775f6f3727e" + 3; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 2 + 021a39bfc960e8b0e1278c6cc57231260400307b2aa5d04296e3614412df55bded9fca2092e4 + "0x1a39bfc960e8b0e1278c6cc57231260400307b2aa5d04296, 0xed55e545a970e2403ab800f9dfb654706e9ef775f6f3727e" + 13; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 6 + 061a39bfc960e8b0e1278c6cc57231260400307b2aa5d04296ed55e545a970e2403ab800f9dfb654706e9ef775f6f3727e9c733ceebc3a089b3c + "0x1a39bfc960e8b0e1278c6cc57231260400307b2aa5d04296, 0xed55e545a970e2403ab800f9dfb654706e9ef775f6f3727e" + 9; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 6 + 071a39bfc960e8b0e1278c6cc57231260400307b2aa5d04296ed55e545a970e2403ab800f9dfb654706e9ef775f6f3727e6d63a366 + FAIL + 4; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 8 + 0b1a39bfc960e8b0e1278c6cc57231260400307b2aa5d04296b8294f47eab80443d9308967a068 + "0x1a39bfc960e8b0e1278c6cc57231260400307b2aa5d04296, 0xed55e545a970e2403ab800f9dfb654706e9ef775f6f3727e" + 14; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 12 + 0f1a39bfc960e8b0e1278c6cc57231260400307b2aa5d04296ed55e545a970e2403ab800f9dfb654706e9ef775f6f3727e53 + "0x1a39bfc960e8b0e1278c6cc57231260400307b2aa5d04296, 0xed55e545a970e2403ab800f9dfb654706e9ef775f6f3727e" + 1; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 12 + 0e1a39bfc960e8b0e1278c6cc57231260400307b2aa5d04296ed55e545a970e2403ab800f9dfb654706e9ef775f6f3727e3ffa46 + FAIL + 3; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 1 + 01ec551a2e0190fdd8e7680db09a7a56435cce09d724880d5c614147b49b90b6bf08 + "0xec551a2e0190fdd8e7680db09a7a56435cce09d724880d5c, 0x1271b496586efe3d6d7f7e3710e86294641a9eccc2fc3ff8" + 9; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 4 + 04ec551a2e0190fdd8e7680db09a7a56435cce09d724880d5ced8e4b69a79101c2928081c8ef179d6b9be561333d03bf1b3ea05ab6676ffb2e + "0xec551a2e0190fdd8e7680db09a7a56435cce09d724880d5c, 0xed8e4b69a79101c2928081c8ef179d6b9be561333d03bf1b" + 8; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 2 + 03ec551a2e0190fdd8e7680db09a7a56435cce09d724880d5c39f2397257c021201ac2 + "0xec551a2e0190fdd8e7680db09a7a56435cce09d724880d5c, 0xed8e4b69a79101c2928081c8ef179d6b9be561333d03bf1b" + 10; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 6 + 07ec551a2e0190fdd8e7680db09a7a56435cce09d724880d5ced8e4b69a79101c2928081c8ef179d6b9be561333d03bf1b4341 + "0xec551a2e0190fdd8e7680db09a7a56435cce09d724880d5c, 0xed8e4b69a79101c2928081c8ef179d6b9be561333d03bf1b" + 2; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 6 + 06ec551a2e0190fdd8e7680db09a7a56435cce09d724880d5ced8e4b69a79101c2928081c8ef179d6b9be561333d03bf1b0ebcb653 + FAIL + 4; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 8 + 0bec551a2e0190fdd8e7680db09a7a56435cce09d724880d5cd3076029119f7ff4 + "0xec551a2e0190fdd8e7680db09a7a56435cce09d724880d5c, 0xed8e4b69a79101c2928081c8ef179d6b9be561333d03bf1b" + 8; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 12 + 0fec551a2e0190fdd8e7680db09a7a56435cce09d724880d5ced8e4b69a79101c2928081c8ef179d6b9be561333d03bf1b73 + "0xec551a2e0190fdd8e7680db09a7a56435cce09d724880d5c, 0xed8e4b69a79101c2928081c8ef179d6b9be561333d03bf1b" + 1; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 12 + 0eec551a2e0190fdd8e7680db09a7a56435cce09d724880d5ced8e4b69a79101c2928081c8ef179d6b9be561333d03bf1b0b34520578b51af5d70e64 + FAIL + 11; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 1 + 01894bf358973201ec442d448745b08263d3e6e66675ddcb32f2dfd1b99bd3a045bd2ac8f2dd + "0x894bf358973201ec442d448745b08263d3e6e66675ddcb32, 0x6fbfe09762c422ffcf5ff7e9d08041a9ddc638985e2e8a13" + 13; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 4 + 04894bf358973201ec442d448745b08263d3e6e66675ddcb326fbfe09762c422ffcf5ff7e9d08041a9ddc638985e2e8a136ff8e62bc3d25e4707 + "0x894bf358973201ec442d448745b08263d3e6e66675ddcb32, 0x6fbfe09762c422ffcf5ff7e9d08041a9ddc638985e2e8a13" + 9; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 2 + 03894bf358973201ec442d448745b08263d3e6e66675ddcb328f + "0x894bf358973201ec442d448745b08263d3e6e66675ddcb32, 0x6fbfe09762c422ffcf5ff7e9d08041a9ddc638985e2e8a13" + 1; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 6 + 07894bf358973201ec442d448745b08263d3e6e66675ddcb326fbfe09762c422ffcf5ff7e9d08041a9ddc638985e2e8a137325 + "0x894bf358973201ec442d448745b08263d3e6e66675ddcb32, 0x6fbfe09762c422ffcf5ff7e9d08041a9ddc638985e2e8a13" + 2; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 6 + 06894bf358973201ec442d448745b08263d3e6e66675ddcb326fbfe09762c422ffcf5ff7e9d08041a9ddc638985e2e8a1363 + FAIL + 1; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 8 + 0a894bf358973201ec442d448745b08263d3e6e66675ddcb32cc + "0x894bf358973201ec442d448745b08263d3e6e66675ddcb32, 0x6fbfe09762c422ffcf5ff7e9d08041a9ddc638985e2e8a13" + 1; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 12 + 0e894bf358973201ec442d448745b08263d3e6e66675ddcb326fbfe09762c422ffcf5ff7e9d08041a9ddc638985e2e8a13 + "0x894bf358973201ec442d448745b08263d3e6e66675ddcb32, 0x6fbfe09762c422ffcf5ff7e9d08041a9ddc638985e2e8a13" + 0; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 12 + 0f894bf358973201ec442d448745b08263d3e6e66675ddcb326fbfe09762c422ffcf5ff7e9d08041a9ddc638985e2e8a13cfb3a2aad95d1299a4a2e4 + FAIL + 11; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 1 + 01f52e1e56e4ccfcdb416f949550625dae491ea7c05a1fadcb3d + "0xf52e1e56e4ccfcdb416f949550625dae491ea7c05a1fadcb, 0x1012eea27a2a5616943d8b283b96070a369b895fc00d3818" + 1; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 4 + 04f52e1e56e4ccfcdb416f949550625dae491ea7c05a1fadcbefed115d85d5a9e96bc274d7c469f8f5c96476a03ff2c6fb95f775a2f5b47b3d22e65a + "0xf52e1e56e4ccfcdb416f949550625dae491ea7c05a1fadcb, 0xefed115d85d5a9e96bc274d7c469f8f5c96476a03ff2c6fb" + 11; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 2 + 03f52e1e56e4ccfcdb416f949550625dae491ea7c05a1fadcbe2b4 + "0xf52e1e56e4ccfcdb416f949550625dae491ea7c05a1fadcb, 0xefed115d85d5a9e96bc274d7c469f8f5c96476a03ff2c6fb" + 2; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 6 + 07f52e1e56e4ccfcdb416f949550625dae491ea7c05a1fadcbefed115d85d5a9e96bc274d7c469f8f5c96476a03ff2c6fbe09179a92ddad04d75d634dd33ce02 + "0xf52e1e56e4ccfcdb416f949550625dae491ea7c05a1fadcb, 0xefed115d85d5a9e96bc274d7c469f8f5c96476a03ff2c6fb" + 15; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 6 + 06f52e1e56e4ccfcdb416f949550625dae491ea7c05a1fadcbefed115d85d5a9e96bc274d7c469f8f5c96476a03ff2c6fb8a051f10e73379729144 + FAIL + 10; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 8 + 0bf52e1e56e4ccfcdb416f949550625dae491ea7c05a1fadcb70356b60b4849c99 + "0xf52e1e56e4ccfcdb416f949550625dae491ea7c05a1fadcb, 0xefed115d85d5a9e96bc274d7c469f8f5c96476a03ff2c6fb" + 8; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 12 + 0ff52e1e56e4ccfcdb416f949550625dae491ea7c05a1fadcbefed115d85d5a9e96bc274d7c469f8f5c96476a03ff2c6fb29072a13653428e39bea3a1a + "0xf52e1e56e4ccfcdb416f949550625dae491ea7c05a1fadcb, 0xefed115d85d5a9e96bc274d7c469f8f5c96476a03ff2c6fb" + 12; + "prime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 12 + 0ef52e1e56e4ccfcdb416f949550625dae491ea7c05a1fadcbefed115d85d5a9e96bc274d7c469f8f5c96476a03ff2c6fbcb2c5425ce82e23c3fc64cb238 + FAIL + 13; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 1 + 01537b5e804337cc50e9dd2838fff5b9bf6e65b28af8d810af242f2304ee65 + "0x537b5e804337cc50e9dd2838fff5b9bf6e65b28af8d810af, 0x3927f54fa9c6c6ce399e9b7a7950dd8869b057799e9e18d5" + 6; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 4 + 04537b5e804337cc50e9dd2838fff5b9bf6e65b28af8d810af3927f54fa9c6c6ce399e9b7a7950dd8869b057799e9e18d58a4a66c021b9 + "0x537b5e804337cc50e9dd2838fff5b9bf6e65b28af8d810af, 0x3927f54fa9c6c6ce399e9b7a7950dd8869b057799e9e18d5" + 6; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 2 + 03537b5e804337cc50e9dd2838fff5b9bf6e65b28af8d810afb35a3268d41032be3b + "0x537b5e804337cc50e9dd2838fff5b9bf6e65b28af8d810af, 0x3927f54fa9c6c6ce399e9b7a7950dd8869b057799e9e18d5" + 9; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 6 + 07537b5e804337cc50e9dd2838fff5b9bf6e65b28af8d810af3927f54fa9c6c6ce399e9b7a7950dd8869b057799e9e18d52cbd + "0x537b5e804337cc50e9dd2838fff5b9bf6e65b28af8d810af, 0x3927f54fa9c6c6ce399e9b7a7950dd8869b057799e9e18d5" + 2; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 6 + 06537b5e804337cc50e9dd2838fff5b9bf6e65b28af8d810af3927f54fa9c6c6ce399e9b7a7950dd8869b057799e9e18d5e66c07 + FAIL + 3; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 8 + 0a537b5e804337cc50e9dd2838fff5b9bf6e65b28af8d810af51 + "0x537b5e804337cc50e9dd2838fff5b9bf6e65b28af8d810af, 0x3927f54fa9c6c6ce399e9b7a7950dd8869b057799e9e18d5" + 1; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 12 + 0e537b5e804337cc50e9dd2838fff5b9bf6e65b28af8d810af3927f54fa9c6c6ce399e9b7a7950dd8869b057799e9e18d5eb3019ef0b57936b8f14a4f7e654 + "0x537b5e804337cc50e9dd2838fff5b9bf6e65b28af8d810af, 0x3927f54fa9c6c6ce399e9b7a7950dd8869b057799e9e18d5" + 14; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 12 + 0f537b5e804337cc50e9dd2838fff5b9bf6e65b28af8d810af3927f54fa9c6c6ce399e9b7a7950dd8869b057799e9e18d5802617a7efd6 + FAIL + 6; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 1 + 015f77a2c30438fe751e983255eef145dde67d6fb3cab494b1ae + "0x5f77a2c30438fe751e983255eef145dde67d6fb3cab494b1, 0x1ca24390c660f28aedfa70a348c0e637905c985e04c722fc" + 1; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 4 + 045f77a2c30438fe751e983255eef145dde67d6fb3cab494b11ca24390c660f28aedfa70a348c0e637905c985e04c722fc4bcecc0a6aecd11c9bbf1b6f + "0x5f77a2c30438fe751e983255eef145dde67d6fb3cab494b1, 0x1ca24390c660f28aedfa70a348c0e637905c985e04c722fc" + 12; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 2 + 025f77a2c30438fe751e983255eef145dde67d6fb3cab494b11e6d63f943 + "0x5f77a2c30438fe751e983255eef145dde67d6fb3cab494b1, 0x1ca24390c660f28aedfa70a348c0e637905c985e04c722fc" + 5; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 6 + 065f77a2c30438fe751e983255eef145dde67d6fb3cab494b11ca24390c660f28aedfa70a348c0e637905c985e04c722fc130cf9bf + "0x5f77a2c30438fe751e983255eef145dde67d6fb3cab494b1, 0x1ca24390c660f28aedfa70a348c0e637905c985e04c722fc" + 4; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 6 + 075f77a2c30438fe751e983255eef145dde67d6fb3cab494b11ca24390c660f28aedfa70a348c0e637905c985e04c722fc743cac28f1c3021db38c52 + FAIL + 11; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 8 + 0a5f77a2c30438fe751e983255eef145dde67d6fb3cab494b198979830bf270f + "0x5f77a2c30438fe751e983255eef145dde67d6fb3cab494b1, 0x1ca24390c660f28aedfa70a348c0e637905c985e04c722fc" + 7; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 12 + 0e5f77a2c30438fe751e983255eef145dde67d6fb3cab494b11ca24390c660f28aedfa70a348c0e637905c985e04c722fcd4b9e032246697587014efa5d6 + "0x5f77a2c30438fe751e983255eef145dde67d6fb3cab494b1, 0x1ca24390c660f28aedfa70a348c0e637905c985e04c722fc" + 13; + "prime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 12 + 0f5f77a2c30438fe751e983255eef145dde67d6fb3cab494b11ca24390c660f28aedfa70a348c0e637905c985e04c722fc256d3aab55c5213205 + FAIL + 9; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 2 + 02cdf65dc6c906c5c240dba0d156b911614abe806fa2b8dc0a07f6 + "0xcdf65dc6c906c5c240dba0d156b911614abe806fa2b8dc0a, 0" + 2; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 2 + 03cdf65dc6c906c5c240dba0d156b911614abe806fa2b8dc0ac7f8b56cea + FAIL + 5; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 8 + 0acdf65dc6c906c5c240dba0d156b911614abe806fa2b8dc0a6eb4f62caa5f7d7d0c + "0xcdf65dc6c906c5c240dba0d156b911614abe806fa2b8dc0a, 0" + 9; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; prime: -3, 6" + 8 + 0bcdf65dc6c906c5c240dba0d156b911614abe806fa2b8dc0a9a5d3dcd5d94634cb7f89f037e + FAIL + 13; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 1 + 019e3f8ddafa260dc256675004ad006328a0497fd7749a9e6f + FAIL + 0; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 2 + 029e3f8ddafa260dc256675004ad006328a0497fd7749a9e6f + FAIL + 0; + "niceprime: 6277101735386680763835789423207666416102355444464034512659; primeproj: -3, 6" + 8 + 0a9e3f8ddafa260dc256675004ad006328a0497fd7749a9e6f + FAIL + 0; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 1 + 0142d0c5ece183d9d4f068eaf42ec52844bb7fc559cd384f93 + "0x42d0c5ece183d9d4f068eaf42ec52844bb7fc559cd384f93, 0x4f86433f7532cb78a36fe52992631246e400d05bd3487b66" + 0; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 4 + 0442d0c5ece183d9d4f068eaf42ec52844bb7fc559cd384f930d5686d394b112ac53070fddbca63a025f7f15021e7034f55534 + "0x42d0c5ece183d9d4f068eaf42ec52844bb7fc559cd384f93, 0xd5686d394b112ac53070fddbca63a025f7f15021e7034f5" + 2; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 2 + 0342d0c5ece183d9d4f068eaf42ec52844bb7fc559cd384f93 + "0x42d0c5ece183d9d4f068eaf42ec52844bb7fc559cd384f93, 0xd5686d394b112ac53070fddbca63a025f7f15021e7034f5" + 0; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 6 + 0742d0c5ece183d9d4f068eaf42ec52844bb7fc559cd384f930d5686d394b112ac53070fddbca63a025f7f15021e7034f5800416220c442b + "0x42d0c5ece183d9d4f068eaf42ec52844bb7fc559cd384f93, 0xd5686d394b112ac53070fddbca63a025f7f15021e7034f5" + 7; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 6 + 0642d0c5ece183d9d4f068eaf42ec52844bb7fc559cd384f930d5686d394b112ac53070fddbca63a025f7f15021e7034f5346b3387f0b280bebb + FAIL + 9; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 8 + 0a42d0c5ece183d9d4f068eaf42ec52844bb7fc559cd384f93cdc6 + "0x42d0c5ece183d9d4f068eaf42ec52844bb7fc559cd384f93, 0xd5686d394b112ac53070fddbca63a025f7f15021e7034f5" + 2; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 12 + 0e42d0c5ece183d9d4f068eaf42ec52844bb7fc559cd384f930d5686d394b112ac53070fddbca63a025f7f15021e7034f50d559a642415a60e5eff7de82e + "0x42d0c5ece183d9d4f068eaf42ec52844bb7fc559cd384f93, 0xd5686d394b112ac53070fddbca63a025f7f15021e7034f5" + 13; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 12 + 0f42d0c5ece183d9d4f068eaf42ec52844bb7fc559cd384f930d5686d394b112ac53070fddbca63a025f7f15021e7034f5 + FAIL + 0; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 1 + 01143841095281e016ca51510570ff93851232e53c7b2b4244 + "0x143841095281e016ca51510570ff93851232e53c7b2b4244, 0x56bf3c8554f9e52b1c9363df8d62f991682d4a6c455cdc21" + 0; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 4 + 04143841095281e016ca51510570ff93851232e53c7b2b424456bf3c8554f9e52b1c9363df8d62f991682d4a6c455cdc218655aa + "0x143841095281e016ca51510570ff93851232e53c7b2b4244, 0x56bf3c8554f9e52b1c9363df8d62f991682d4a6c455cdc21" + 3; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 2 + 02143841095281e016ca51510570ff93851232e53c7b2b424446e64f42b9b006d0e6d2 + "0x143841095281e016ca51510570ff93851232e53c7b2b4244, 0x56bf3c8554f9e52b1c9363df8d62f991682d4a6c455cdc21" + 10; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 6 + 06143841095281e016ca51510570ff93851232e53c7b2b424456bf3c8554f9e52b1c9363df8d62f991682d4a6c455cdc21ed80e39961 + "0x143841095281e016ca51510570ff93851232e53c7b2b4244, 0x56bf3c8554f9e52b1c9363df8d62f991682d4a6c455cdc21" + 5; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 6 + 07143841095281e016ca51510570ff93851232e53c7b2b424456bf3c8554f9e52b1c9363df8d62f991682d4a6c455cdc21e328616aa8e29e899775bdc99c70 + FAIL + 14; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 8 + 0b143841095281e016ca51510570ff93851232e53c7b2b42442a46 + "0x143841095281e016ca51510570ff93851232e53c7b2b4244, 0x56bf3c8554f9e52b1c9363df8d62f991682d4a6c455cdc21" + 2; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 12 + 0f143841095281e016ca51510570ff93851232e53c7b2b424456bf3c8554f9e52b1c9363df8d62f991682d4a6c455cdc21ee6d9806675dd054c3976fd4f0 + "0x143841095281e016ca51510570ff93851232e53c7b2b4244, 0x56bf3c8554f9e52b1c9363df8d62f991682d4a6c455cdc21" + 13; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 12 + 0e143841095281e016ca51510570ff93851232e53c7b2b424456bf3c8554f9e52b1c9363df8d62f991682d4a6c455cdc216dfc3874302f4fd12d5a1c5328 + FAIL + 13; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 1 + 015f53927deae3d279d9fddb97b4e4601eae7957d1df492463d766dae42371bc + "0x5f53927deae3d279d9fddb97b4e4601eae7957d1df492463, 0x72189d26f3476fd3279cdf839448493ded933073137fdbd9" + 7; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 4 + 045f53927deae3d279d9fddb97b4e4601eae7957d1df49246372189d26f3476fd3279cdf839448493ded933073137fdbd97c90f26f + "0x5f53927deae3d279d9fddb97b4e4601eae7957d1df492463, 0x72189d26f3476fd3279cdf839448493ded933073137fdbd9" + 4; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 2 + 025f53927deae3d279d9fddb97b4e4601eae7957d1df492463a1 + "0x5f53927deae3d279d9fddb97b4e4601eae7957d1df492463, 0x72189d26f3476fd3279cdf839448493ded933073137fdbd9" + 1; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 6 + 065f53927deae3d279d9fddb97b4e4601eae7957d1df49246372189d26f3476fd3279cdf839448493ded933073137fdbd91959f01f889df1327814b05de5dcc5 + "0x5f53927deae3d279d9fddb97b4e4601eae7957d1df492463, 0x72189d26f3476fd3279cdf839448493ded933073137fdbd9" + 15; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 6 + 075f53927deae3d279d9fddb97b4e4601eae7957d1df49246372189d26f3476fd3279cdf839448493ded933073137fdbd975 + FAIL + 1; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 8 + 0b5f53927deae3d279d9fddb97b4e4601eae7957d1df4924639fb48e169c2f77b0583a53d1507635 + "0x5f53927deae3d279d9fddb97b4e4601eae7957d1df492463, 0x72189d26f3476fd3279cdf839448493ded933073137fdbd9" + 15; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 12 + 0f5f53927deae3d279d9fddb97b4e4601eae7957d1df49246372189d26f3476fd3279cdf839448493ded933073137fdbd9b0e2a8181da5389c244020d8dee6 + "0x5f53927deae3d279d9fddb97b4e4601eae7957d1df492463, 0x72189d26f3476fd3279cdf839448493ded933073137fdbd9" + 14; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 12 + 0e5f53927deae3d279d9fddb97b4e4601eae7957d1df49246372189d26f3476fd3279cdf839448493ded933073137fdbd9bbb4b20f824b7e6e5b1a4d3a + FAIL + 12; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 1 + 0150b296f3be1b33d82235eef215fd872c9e88885e8eb23304d7ddfa59adc0cdc5a05ce886e96c + "0x50b296f3be1b33d82235eef215fd872c9e88885e8eb23304, 0x22d918c7798828a8ef323d832fa6ffdae19882a0222b9433" + 14; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 4 + 0450b296f3be1b33d82235eef215fd872c9e88885e8eb23304726b8e34c7931b70cd07d3713a5b78f67f100afeac99a7373ed873c1e13bec3fc38fb766da + "0x50b296f3be1b33d82235eef215fd872c9e88885e8eb23304, 0x726b8e34c7931b70cd07d3713a5b78f67f100afeac99a737" + 13; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 2 + 0350b296f3be1b33d82235eef215fd872c9e88885e8eb233048c74a5 + "0x50b296f3be1b33d82235eef215fd872c9e88885e8eb23304, 0x726b8e34c7931b70cd07d3713a5b78f67f100afeac99a737" + 3; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 6 + 0750b296f3be1b33d82235eef215fd872c9e88885e8eb23304726b8e34c7931b70cd07d3713a5b78f67f100afeac99a73709058e + "0x50b296f3be1b33d82235eef215fd872c9e88885e8eb23304, 0x726b8e34c7931b70cd07d3713a5b78f67f100afeac99a737" + 3; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 6 + 0650b296f3be1b33d82235eef215fd872c9e88885e8eb23304726b8e34c7931b70cd07d3713a5b78f67f100afeac99a737c3f48cb90d5e4ea9297f2addfe + FAIL + 13; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 8 + 0b50b296f3be1b33d82235eef215fd872c9e88885e8eb23304e2872a50d3cd3a2cd0d7e94a + "0x50b296f3be1b33d82235eef215fd872c9e88885e8eb23304, 0x726b8e34c7931b70cd07d3713a5b78f67f100afeac99a737" + 12; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 12 + 0f50b296f3be1b33d82235eef215fd872c9e88885e8eb23304726b8e34c7931b70cd07d3713a5b78f67f100afeac99a73707 + "0x50b296f3be1b33d82235eef215fd872c9e88885e8eb23304, 0x726b8e34c7931b70cd07d3713a5b78f67f100afeac99a737" + 1; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 12 + 0e50b296f3be1b33d82235eef215fd872c9e88885e8eb23304726b8e34c7931b70cd07d3713a5b78f67f100afeac99a737fd + FAIL + 1; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 1 + 010b6af2c1df0eed206416d4d619d2d31749b697a3d98c4e55ca13daf72f7314b1cb + "0xb6af2c1df0eed206416d4d619d2d31749b697a3d98c4e55, 0x5d955003e4e21e8e6c9802a75aef0d327ea861a569fda7c5" + 9; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 4 + 040b6af2c1df0eed206416d4d619d2d31749b697a3d98c4e555d955003e4e21e8e6c9802a75aef0d327ea861a569fda7c5e37ab8f8668fddde9a55efdf + "0xb6af2c1df0eed206416d4d619d2d31749b697a3d98c4e55, 0x5d955003e4e21e8e6c9802a75aef0d327ea861a569fda7c5" + 12; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 2 + 020b6af2c1df0eed206416d4d619d2d31749b697a3d98c4e55a372ad344d1ccd71 + "0xb6af2c1df0eed206416d4d619d2d31749b697a3d98c4e55, 0x5d955003e4e21e8e6c9802a75aef0d327ea861a569fda7c5" + 8; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 6 + 060b6af2c1df0eed206416d4d619d2d31749b697a3d98c4e555d955003e4e21e8e6c9802a75aef0d327ea861a569fda7c5cc45bc188cd7d594 + "0xb6af2c1df0eed206416d4d619d2d31749b697a3d98c4e55, 0x5d955003e4e21e8e6c9802a75aef0d327ea861a569fda7c5" + 8; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 6 + 070b6af2c1df0eed206416d4d619d2d31749b697a3d98c4e555d955003e4e21e8e6c9802a75aef0d327ea861a569fda7c5d098499d1a + FAIL + 5; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 8 + 0b0b6af2c1df0eed206416d4d619d2d31749b697a3d98c4e55 + "0xb6af2c1df0eed206416d4d619d2d31749b697a3d98c4e55, 0x5d955003e4e21e8e6c9802a75aef0d327ea861a569fda7c5" + 0; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 12 + 0f0b6af2c1df0eed206416d4d619d2d31749b697a3d98c4e555d955003e4e21e8e6c9802a75aef0d327ea861a569fda7c501486879f678c9f6 + "0xb6af2c1df0eed206416d4d619d2d31749b697a3d98c4e55, 0x5d955003e4e21e8e6c9802a75aef0d327ea861a569fda7c5" + 8; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 12 + 0e0b6af2c1df0eed206416d4d619d2d31749b697a3d98c4e555d955003e4e21e8e6c9802a75aef0d327ea861a569fda7c59284 + FAIL + 2; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 1 + 01718a98068bc37ff19189b8dabc6ffe2c55ec786de5d3b1d1ca65 + "0x718a98068bc37ff19189b8dabc6ffe2c55ec786de5d3b1d1, 0x7ba2829a81835093c344d8fe94a093a7d742e110c70739e0" + 2; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 4 + 04718a98068bc37ff19189b8dabc6ffe2c55ec786de5d3b1d10a281a9c0a402f6252cd602428cf6d8b82ae997d22d48831c6799783fd94f7461e31 + "0x718a98068bc37ff19189b8dabc6ffe2c55ec786de5d3b1d1, 0xa281a9c0a402f6252cd602428cf6d8b82ae997d22d48831" + 10; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 2 + 03718a98068bc37ff19189b8dabc6ffe2c55ec786de5d3b1d169bc83bef8d029ed97ee89 + "0x718a98068bc37ff19189b8dabc6ffe2c55ec786de5d3b1d1, 0xa281a9c0a402f6252cd602428cf6d8b82ae997d22d48831" + 11; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 6 + 07718a98068bc37ff19189b8dabc6ffe2c55ec786de5d3b1d10a281a9c0a402f6252cd602428cf6d8b82ae997d22d488316ce32c0a72d783e28c5aad + "0x718a98068bc37ff19189b8dabc6ffe2c55ec786de5d3b1d1, 0xa281a9c0a402f6252cd602428cf6d8b82ae997d22d48831" + 11; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 6 + 06718a98068bc37ff19189b8dabc6ffe2c55ec786de5d3b1d10a281a9c0a402f6252cd602428cf6d8b82ae997d22d48831b523dd4fd2d25e + FAIL + 7; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 8 + 0a718a98068bc37ff19189b8dabc6ffe2c55ec786de5d3b1d1a5297d0b + "0x718a98068bc37ff19189b8dabc6ffe2c55ec786de5d3b1d1, 0xa281a9c0a402f6252cd602428cf6d8b82ae997d22d48831" + 4; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 12 + 0e718a98068bc37ff19189b8dabc6ffe2c55ec786de5d3b1d10a281a9c0a402f6252cd602428cf6d8b82ae997d22d488311faeac70cbaa + "0x718a98068bc37ff19189b8dabc6ffe2c55ec786de5d3b1d1, 0xa281a9c0a402f6252cd602428cf6d8b82ae997d22d48831" + 6; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 12 + 0f718a98068bc37ff19189b8dabc6ffe2c55ec786de5d3b1d10a281a9c0a402f6252cd602428cf6d8b82ae997d22d4883111e7e92eb1fd41 + FAIL + 7; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 1 + 013e79bcc94d83602dfdbba17ca0e041b92d3af5f7881499293cfc8f3da5 + "0x3e79bcc94d83602dfdbba17ca0e041b92d3af5f788149929, 0x7451ad262ae8394ca3cc7cc23eb4bb1a89997bdb51de3707" + 5; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 4 + 043e79bcc94d83602dfdbba17ca0e041b92d3af5f7881499297451ad262ae8394ca3cc7cc23eb4bb1a89997bdb51de3707d3267fe97c852e5b3f + "0x3e79bcc94d83602dfdbba17ca0e041b92d3af5f788149929, 0x7451ad262ae8394ca3cc7cc23eb4bb1a89997bdb51de3707" + 9; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 2 + 023e79bcc94d83602dfdbba17ca0e041b92d3af5f7881499299640aa7e06b1f585cbe306c26a + "0x3e79bcc94d83602dfdbba17ca0e041b92d3af5f788149929, 0x7451ad262ae8394ca3cc7cc23eb4bb1a89997bdb51de3707" + 13; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 6 + 063e79bcc94d83602dfdbba17ca0e041b92d3af5f7881499297451ad262ae8394ca3cc7cc23eb4bb1a89997bdb51de3707b26f + "0x3e79bcc94d83602dfdbba17ca0e041b92d3af5f788149929, 0x7451ad262ae8394ca3cc7cc23eb4bb1a89997bdb51de3707" + 2; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 6 + 073e79bcc94d83602dfdbba17ca0e041b92d3af5f7881499297451ad262ae8394ca3cc7cc23eb4bb1a89997bdb51de370781f67d342c4cc01cc70b + FAIL + 10; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 8 + 0b3e79bcc94d83602dfdbba17ca0e041b92d3af5f788149929e8f85cc7 + "0x3e79bcc94d83602dfdbba17ca0e041b92d3af5f788149929, 0x7451ad262ae8394ca3cc7cc23eb4bb1a89997bdb51de3707" + 4; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 12 + 0f3e79bcc94d83602dfdbba17ca0e041b92d3af5f7881499297451ad262ae8394ca3cc7cc23eb4bb1a89997bdb51de370740735ace47541583eb1b + "0x3e79bcc94d83602dfdbba17ca0e041b92d3af5f788149929, 0x7451ad262ae8394ca3cc7cc23eb4bb1a89997bdb51de3707" + 10; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 12 + 0e3e79bcc94d83602dfdbba17ca0e041b92d3af5f7881499297451ad262ae8394ca3cc7cc23eb4bb1a89997bdb51de3707 + FAIL + 0; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 1 + 011b4b1d1207b9a2107e782a7a04b5d0b0f7d55d34aa75bf0e96196fa22b4b928128c4d71cc442 + "0x1b4b1d1207b9a2107e782a7a04b5d0b0f7d55d34aa75bf0e, 0x7fb2b2b3ba042e2e9c68de83cd452fa029428b0a4b89d1b3" + 14; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 4 + 041b4b1d1207b9a2107e782a7a04b5d0b0f7d55d34aa75bf0e64f9afa1bdbd8c3ee210f4f9c9f0ff10de97d63ee1fc6ebdb2fbe0bd2a494d21d5357df037 + "0x1b4b1d1207b9a2107e782a7a04b5d0b0f7d55d34aa75bf0e, 0x64f9afa1bdbd8c3ee210f4f9c9f0ff10de97d63ee1fc6ebd" + 13; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 2 + 031b4b1d1207b9a2107e782a7a04b5d0b0f7d55d34aa75bf0e05846900382967d1315c + "0x1b4b1d1207b9a2107e782a7a04b5d0b0f7d55d34aa75bf0e, 0x64f9afa1bdbd8c3ee210f4f9c9f0ff10de97d63ee1fc6ebd" + 10; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 6 + 071b4b1d1207b9a2107e782a7a04b5d0b0f7d55d34aa75bf0e64f9afa1bdbd8c3ee210f4f9c9f0ff10de97d63ee1fc6ebdcc9d + "0x1b4b1d1207b9a2107e782a7a04b5d0b0f7d55d34aa75bf0e, 0x64f9afa1bdbd8c3ee210f4f9c9f0ff10de97d63ee1fc6ebd" + 2; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 6 + 061b4b1d1207b9a2107e782a7a04b5d0b0f7d55d34aa75bf0e64f9afa1bdbd8c3ee210f4f9c9f0ff10de97d63ee1fc6ebdad + FAIL + 1; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 8 + 0a1b4b1d1207b9a2107e782a7a04b5d0b0f7d55d34aa75bf0e8756da0ebc7f38 + "0x1b4b1d1207b9a2107e782a7a04b5d0b0f7d55d34aa75bf0e, 0x64f9afa1bdbd8c3ee210f4f9c9f0ff10de97d63ee1fc6ebd" + 7; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 12 + 0e1b4b1d1207b9a2107e782a7a04b5d0b0f7d55d34aa75bf0e64f9afa1bdbd8c3ee210f4f9c9f0ff10de97d63ee1fc6ebd924d1c480e467425 + "0x1b4b1d1207b9a2107e782a7a04b5d0b0f7d55d34aa75bf0e, 0x64f9afa1bdbd8c3ee210f4f9c9f0ff10de97d63ee1fc6ebd" + 8; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 12 + 0f1b4b1d1207b9a2107e782a7a04b5d0b0f7d55d34aa75bf0e64f9afa1bdbd8c3ee210f4f9c9f0ff10de97d63ee1fc6ebd9284e88a79 + FAIL + 5; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 1 + 01720850cdd7aa529e223eaac55d6af7ef0727fa24dde25de6bdb3616cef + "0x720850cdd7aa529e223eaac55d6af7ef0727fa24dde25de6, 0x56d3f2fbbf87844128b487c90cd87a9ad2fe5a79111e781b" + 5; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 4 + 04720850cdd7aa529e223eaac55d6af7ef0727fa24dde25de624dba236682dd6df0a8a2d0c51b28d75d5d9a05dccfc25fdc5561390e156f8658540897767 + "0x720850cdd7aa529e223eaac55d6af7ef0727fa24dde25de6, 0x24dba236682dd6df0a8a2d0c51b28d75d5d9a05dccfc25fd" + 13; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 2 + 03720850cdd7aa529e223eaac55d6af7ef0727fa24dde25de62de503bfd2 + "0x720850cdd7aa529e223eaac55d6af7ef0727fa24dde25de6, 0x24dba236682dd6df0a8a2d0c51b28d75d5d9a05dccfc25fd" + 5; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 6 + 07720850cdd7aa529e223eaac55d6af7ef0727fa24dde25de624dba236682dd6df0a8a2d0c51b28d75d5d9a05dccfc25fd51ef6049717669245940f6cc956f69 + "0x720850cdd7aa529e223eaac55d6af7ef0727fa24dde25de6, 0x24dba236682dd6df0a8a2d0c51b28d75d5d9a05dccfc25fd" + 15; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 6 + 06720850cdd7aa529e223eaac55d6af7ef0727fa24dde25de624dba236682dd6df0a8a2d0c51b28d75d5d9a05dccfc25fdc4e745 + FAIL + 3; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 8 + 0a720850cdd7aa529e223eaac55d6af7ef0727fa24dde25de6bf9f16cc34abe1ec981eca1735a2 + "0x720850cdd7aa529e223eaac55d6af7ef0727fa24dde25de6, 0x24dba236682dd6df0a8a2d0c51b28d75d5d9a05dccfc25fd" + 14; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 12 + 0e720850cdd7aa529e223eaac55d6af7ef0727fa24dde25de624dba236682dd6df0a8a2d0c51b28d75d5d9a05dccfc25fd78 + "0x720850cdd7aa529e223eaac55d6af7ef0727fa24dde25de6, 0x24dba236682dd6df0a8a2d0c51b28d75d5d9a05dccfc25fd" + 1; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 12 + 0f720850cdd7aa529e223eaac55d6af7ef0727fa24dde25de624dba236682dd6df0a8a2d0c51b28d75d5d9a05dccfc25fd35a27fca1dd809f9 + FAIL + 8; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 1 + 014b119756d0897fb0abd041a3b178ac542d7bbb4b057d8ff2398f + "0x4b119756d0897fb0abd041a3b178ac542d7bbb4b057d8ff2, 0x295367d5eeed9fe6cd37ff3f10b4a4ca807e912625ebfac5" + 2; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 4 + 044b119756d0897fb0abd041a3b178ac542d7bbb4b057d8ff26242f0833e64e05666e7be9ca1cc089ead052a6d20967537c037a7 + "0x4b119756d0897fb0abd041a3b178ac542d7bbb4b057d8ff2, 0x6242f0833e64e05666e7be9ca1cc089ead052a6d20967537" + 3; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 2 + 034b119756d0897fb0abd041a3b178ac542d7bbb4b057d8ff2dcbc + "0x4b119756d0897fb0abd041a3b178ac542d7bbb4b057d8ff2, 0x6242f0833e64e05666e7be9ca1cc089ead052a6d20967537" + 2; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 6 + 074b119756d0897fb0abd041a3b178ac542d7bbb4b057d8ff26242f0833e64e05666e7be9ca1cc089ead052a6d2096753751c6d9a8bdc34b4e8f018f417f + "0x4b119756d0897fb0abd041a3b178ac542d7bbb4b057d8ff2, 0x6242f0833e64e05666e7be9ca1cc089ead052a6d20967537" + 13; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 6 + 064b119756d0897fb0abd041a3b178ac542d7bbb4b057d8ff26242f0833e64e05666e7be9ca1cc089ead052a6d209675377143151f3e + FAIL + 5; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 8 + 0b4b119756d0897fb0abd041a3b178ac542d7bbb4b057d8ff2988cf372c3048e19fadf + "0x4b119756d0897fb0abd041a3b178ac542d7bbb4b057d8ff2, 0x6242f0833e64e05666e7be9ca1cc089ead052a6d20967537" + 10; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 12 + 0f4b119756d0897fb0abd041a3b178ac542d7bbb4b057d8ff26242f0833e64e05666e7be9ca1cc089ead052a6d20967537137193b926796c20246ca8 + "0x4b119756d0897fb0abd041a3b178ac542d7bbb4b057d8ff2, 0x6242f0833e64e05666e7be9ca1cc089ead052a6d20967537" + 11; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 12 + 0e4b119756d0897fb0abd041a3b178ac542d7bbb4b057d8ff26242f0833e64e05666e7be9ca1cc089ead052a6d20967537b3f1bd + FAIL + 3; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 1 + 015523d9648dbbb91675acf5aa53fddf6e799d94550f8c21e54117 + "0x5523d9648dbbb91675acf5aa53fddf6e799d94550f8c21e5, 0x329b3dd35f5803b3dbc5c400fe1a477d8f5270f23d8aa0d8" + 2; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 4 + 045523d9648dbbb91675acf5aa53fddf6e799d94550f8c21e567b8e4b7d2e3baa5ae6931aaade79813f6cfe4a73206813db5bdfb2f889a2f550b + "0x5523d9648dbbb91675acf5aa53fddf6e799d94550f8c21e5, 0x67b8e4b7d2e3baa5ae6931aaade79813f6cfe4a73206813d" + 9; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 2 + 035523d9648dbbb91675acf5aa53fddf6e799d94550f8c21e5b1fbc74859f7247ff2d3a72636 + "0x5523d9648dbbb91675acf5aa53fddf6e799d94550f8c21e5, 0x67b8e4b7d2e3baa5ae6931aaade79813f6cfe4a73206813d" + 13; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 6 + 075523d9648dbbb91675acf5aa53fddf6e799d94550f8c21e567b8e4b7d2e3baa5ae6931aaade79813f6cfe4a73206813d59aac961 + "0x5523d9648dbbb91675acf5aa53fddf6e799d94550f8c21e5, 0x67b8e4b7d2e3baa5ae6931aaade79813f6cfe4a73206813d" + 4; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 6 + 065523d9648dbbb91675acf5aa53fddf6e799d94550f8c21e567b8e4b7d2e3baa5ae6931aaade79813f6cfe4a73206813dab63dabc6d9df5 + FAIL + 7; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 8 + 0b5523d9648dbbb91675acf5aa53fddf6e799d94550f8c21e5276c591b7ceff8c2ee2235f54b4c + "0x5523d9648dbbb91675acf5aa53fddf6e799d94550f8c21e5, 0x67b8e4b7d2e3baa5ae6931aaade79813f6cfe4a73206813d" + 14; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 12 + 0f5523d9648dbbb91675acf5aa53fddf6e799d94550f8c21e567b8e4b7d2e3baa5ae6931aaade79813f6cfe4a73206813d9932ef5f8528425f34902d9b + "0x5523d9648dbbb91675acf5aa53fddf6e799d94550f8c21e5, 0x67b8e4b7d2e3baa5ae6931aaade79813f6cfe4a73206813d" + 12; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 12 + 0e5523d9648dbbb91675acf5aa53fddf6e799d94550f8c21e567b8e4b7d2e3baa5ae6931aaade79813f6cfe4a73206813d44bb0de380 + FAIL + 5; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 1 + 01445e705aa6399aa54b9187b3ec473cd4ac68f628260bd1064e949a64ca90fd0764c49703b21c + "0x445e705aa6399aa54b9187b3ec473cd4ac68f628260bd106, 0x564825543eca1f13f6c580d305b8db3200700fed789bcd03" + 14; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 4 + 04445e705aa6399aa54b9187b3ec473cd4ac68f628260bd1061216550e98f385b6bd540760e9ffe7e6ac18f9c55e901c0535abf5f1bd + "0x445e705aa6399aa54b9187b3ec473cd4ac68f628260bd106, 0x1216550e98f385b6bd540760e9ffe7e6ac18f9c55e901c05" + 5; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 2 + 03445e705aa6399aa54b9187b3ec473cd4ac68f628260bd1068854e5ccca5e5bc84d995bb86743 + "0x445e705aa6399aa54b9187b3ec473cd4ac68f628260bd106, 0x1216550e98f385b6bd540760e9ffe7e6ac18f9c55e901c05" + 14; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 6 + 07445e705aa6399aa54b9187b3ec473cd4ac68f628260bd1061216550e98f385b6bd540760e9ffe7e6ac18f9c55e901c05ddc57448b48f429208 + "0x445e705aa6399aa54b9187b3ec473cd4ac68f628260bd106, 0x1216550e98f385b6bd540760e9ffe7e6ac18f9c55e901c05" + 9; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 6 + 06445e705aa6399aa54b9187b3ec473cd4ac68f628260bd1061216550e98f385b6bd540760e9ffe7e6ac18f9c55e901c05c6625905c3a0 + FAIL + 6; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 8 + 0a445e705aa6399aa54b9187b3ec473cd4ac68f628260bd106da2c5a + "0x445e705aa6399aa54b9187b3ec473cd4ac68f628260bd106, 0x1216550e98f385b6bd540760e9ffe7e6ac18f9c55e901c05" + 3; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 12 + 0e445e705aa6399aa54b9187b3ec473cd4ac68f628260bd1061216550e98f385b6bd540760e9ffe7e6ac18f9c55e901c05909dbd0e78550d3ceb685126a62609 + "0x445e705aa6399aa54b9187b3ec473cd4ac68f628260bd106, 0x1216550e98f385b6bd540760e9ffe7e6ac18f9c55e901c05" + 15; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 12 + 0f445e705aa6399aa54b9187b3ec473cd4ac68f628260bd1061216550e98f385b6bd540760e9ffe7e6ac18f9c55e901c05c9ead4300b + FAIL + 5; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 1 + 016efa496ce41e84ac9c51e39765f5ba81040c105cfa5b3ab831aedfcb + "0x6efa496ce41e84ac9c51e39765f5ba81040c105cfa5b3ab8, 0x67b333aa0ca3081a948a2058b9d7e35701d63025280ef530" + 4; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 4 + 046efa496ce41e84ac9c51e39765f5ba81040c105cfa5b3ab867b333aa0ca3081a948a2058b9d7e35701d63025280ef5302a0a28490d670f9a7756a20c9685 + "0x6efa496ce41e84ac9c51e39765f5ba81040c105cfa5b3ab8, 0x67b333aa0ca3081a948a2058b9d7e35701d63025280ef530" + 14; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 2 + 026efa496ce41e84ac9c51e39765f5ba81040c105cfa5b3ab824 + "0x6efa496ce41e84ac9c51e39765f5ba81040c105cfa5b3ab8, 0x67b333aa0ca3081a948a2058b9d7e35701d63025280ef530" + 1; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 6 + 066efa496ce41e84ac9c51e39765f5ba81040c105cfa5b3ab867b333aa0ca3081a948a2058b9d7e35701d63025280ef5300a088e3c + "0x6efa496ce41e84ac9c51e39765f5ba81040c105cfa5b3ab8, 0x67b333aa0ca3081a948a2058b9d7e35701d63025280ef530" + 4; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 6 + 076efa496ce41e84ac9c51e39765f5ba81040c105cfa5b3ab867b333aa0ca3081a948a2058b9d7e35701d63025280ef53091165419d6c73202 + FAIL + 8; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 8 + 0b6efa496ce41e84ac9c51e39765f5ba81040c105cfa5b3ab85aced3aedbcd63da + "0x6efa496ce41e84ac9c51e39765f5ba81040c105cfa5b3ab8, 0x67b333aa0ca3081a948a2058b9d7e35701d63025280ef530" + 8; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 12 + 0f6efa496ce41e84ac9c51e39765f5ba81040c105cfa5b3ab867b333aa0ca3081a948a2058b9d7e35701d63025280ef5309632074b2d964c3b854a4dd8dab86d + "0x6efa496ce41e84ac9c51e39765f5ba81040c105cfa5b3ab8, 0x67b333aa0ca3081a948a2058b9d7e35701d63025280ef530" + 15; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 12 + 0e6efa496ce41e84ac9c51e39765f5ba81040c105cfa5b3ab867b333aa0ca3081a948a2058b9d7e35701d63025280ef53048a05700b1643d293af5 + FAIL + 10; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 1 + 01635c7f2e747f7a5ffe9560056369b37971ce53ef4d9befd63083b001be6dbdeb37be2e + "0x635c7f2e747f7a5ffe9560056369b37971ce53ef4d9befd6, 0x3402953703ad0e287e16bd2768ae4641a0d40afc41f393f5" + 11; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 4 + 04635c7f2e747f7a5ffe9560056369b37971ce53ef4d9befd63402953703ad0e287e16bd2768ae4641a0d40afc41f393f5aca3f3f90b1ea55dcbb91e60 + "0x635c7f2e747f7a5ffe9560056369b37971ce53ef4d9befd6, 0x3402953703ad0e287e16bd2768ae4641a0d40afc41f393f5" + 12; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 2 + 02635c7f2e747f7a5ffe9560056369b37971ce53ef4d9befd6 + "0x635c7f2e747f7a5ffe9560056369b37971ce53ef4d9befd6, 0x3402953703ad0e287e16bd2768ae4641a0d40afc41f393f5" + 0; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 6 + 06635c7f2e747f7a5ffe9560056369b37971ce53ef4d9befd63402953703ad0e287e16bd2768ae4641a0d40afc41f393f5121e955c85c2d00d9e05b56a + "0x635c7f2e747f7a5ffe9560056369b37971ce53ef4d9befd6, 0x3402953703ad0e287e16bd2768ae4641a0d40afc41f393f5" + 12; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 6 + 07635c7f2e747f7a5ffe9560056369b37971ce53ef4d9befd63402953703ad0e287e16bd2768ae4641a0d40afc41f393f52ce3f0a16ec4581d7440eb3d27 + FAIL + 13; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 8 + 0a635c7f2e747f7a5ffe9560056369b37971ce53ef4d9befd6ab6312708e1f56187628124c + "0x635c7f2e747f7a5ffe9560056369b37971ce53ef4d9befd6, 0x3402953703ad0e287e16bd2768ae4641a0d40afc41f393f5" + 12; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 12 + 0e635c7f2e747f7a5ffe9560056369b37971ce53ef4d9befd63402953703ad0e287e16bd2768ae4641a0d40afc41f393f57dd939315fa66e5f3e9a79b2 + "0x635c7f2e747f7a5ffe9560056369b37971ce53ef4d9befd6, 0x3402953703ad0e287e16bd2768ae4641a0d40afc41f393f5" + 12; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 12 + 0f635c7f2e747f7a5ffe9560056369b37971ce53ef4d9befd63402953703ad0e287e16bd2768ae4641a0d40afc41f393f57d117748fba9d73c23 + FAIL + 9; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 1 + 0105c672a9eba4a4f5ab94bf732c230789b0bfc2537b44f69975 + "0x5c672a9eba4a4f5ab94bf732c230789b0bfc2537b44f699, 0x6771e747ff1a99be39ab8267b30645b8cc1b66dbd6de5212" + 1; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 4 + 0405c672a9eba4a4f5ab94bf732c230789b0bfc2537b44f6996771e747ff1a99be39ab8267b30645b8cc1b66dbd6de521257f1727620162e8f77fefd02df + "0x5c672a9eba4a4f5ab94bf732c230789b0bfc2537b44f699, 0x6771e747ff1a99be39ab8267b30645b8cc1b66dbd6de5212" + 13; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 2 + 0205c672a9eba4a4f5ab94bf732c230789b0bfc2537b44f699ea521a + "0x5c672a9eba4a4f5ab94bf732c230789b0bfc2537b44f699, 0x6771e747ff1a99be39ab8267b30645b8cc1b66dbd6de5212" + 3; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 6 + 0605c672a9eba4a4f5ab94bf732c230789b0bfc2537b44f6996771e747ff1a99be39ab8267b30645b8cc1b66dbd6de5212238b7c + "0x5c672a9eba4a4f5ab94bf732c230789b0bfc2537b44f699, 0x6771e747ff1a99be39ab8267b30645b8cc1b66dbd6de5212" + 3; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 6 + 0705c672a9eba4a4f5ab94bf732c230789b0bfc2537b44f6996771e747ff1a99be39ab8267b30645b8cc1b66dbd6de52128ca8ed35b054ccdefcbf + FAIL + 10; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 8 + 0b05c672a9eba4a4f5ab94bf732c230789b0bfc2537b44f699b06c138c2f638621f0ab9b + "0x5c672a9eba4a4f5ab94bf732c230789b0bfc2537b44f699, 0x6771e747ff1a99be39ab8267b30645b8cc1b66dbd6de5212" + 11; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 12 + 0f05c672a9eba4a4f5ab94bf732c230789b0bfc2537b44f6996771e747ff1a99be39ab8267b30645b8cc1b66dbd6de5212 + "0x5c672a9eba4a4f5ab94bf732c230789b0bfc2537b44f699, 0x6771e747ff1a99be39ab8267b30645b8cc1b66dbd6de5212" + 0; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 12 + 0e05c672a9eba4a4f5ab94bf732c230789b0bfc2537b44f6996771e747ff1a99be39ab8267b30645b8cc1b66dbd6de52122d496023de9fa5 + FAIL + 7; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 1 + 0126ca222daf14d8b20a6084ed63851be9658c64282c57df3cfc + "0x26ca222daf14d8b20a6084ed63851be9658c64282c57df3c, 0x67f4b57ecbaee65dba12396016339b1c542e58eb226d2e26" + 1; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 4 + 0426ca222daf14d8b20a6084ed63851be9658c64282c57df3c67f4b57ecbaee65dba12396016339b1c542e58eb226d2e264371 + "0x26ca222daf14d8b20a6084ed63851be9658c64282c57df3c, 0x67f4b57ecbaee65dba12396016339b1c542e58eb226d2e26" + 2; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 2 + 0226ca222daf14d8b20a6084ed63851be9658c64282c57df3c896ca9fd69a0d41ba5bfd877 + "0x26ca222daf14d8b20a6084ed63851be9658c64282c57df3c, 0x67f4b57ecbaee65dba12396016339b1c542e58eb226d2e26" + 12; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 6 + 0626ca222daf14d8b20a6084ed63851be9658c64282c57df3c67f4b57ecbaee65dba12396016339b1c542e58eb226d2e261c70 + "0x26ca222daf14d8b20a6084ed63851be9658c64282c57df3c, 0x67f4b57ecbaee65dba12396016339b1c542e58eb226d2e26" + 2; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 6 + 0726ca222daf14d8b20a6084ed63851be9658c64282c57df3c67f4b57ecbaee65dba12396016339b1c542e58eb226d2e266870 + FAIL + 2; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 8 + 0b26ca222daf14d8b20a6084ed63851be9658c64282c57df3ca517e0 + "0x26ca222daf14d8b20a6084ed63851be9658c64282c57df3c, 0x67f4b57ecbaee65dba12396016339b1c542e58eb226d2e26" + 3; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 12 + 0f26ca222daf14d8b20a6084ed63851be9658c64282c57df3c67f4b57ecbaee65dba12396016339b1c542e58eb226d2e26b822360e1c783a23948d5b578c6c51 + "0x26ca222daf14d8b20a6084ed63851be9658c64282c57df3c, 0x67f4b57ecbaee65dba12396016339b1c542e58eb226d2e26" + 15; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 12 + 0e26ca222daf14d8b20a6084ed63851be9658c64282c57df3c67f4b57ecbaee65dba12396016339b1c542e58eb226d2e2601599300801b78daf2af0608cf0a + FAIL + 14; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 1 + 014764c6b6c9c25e7cf62a2cb3c9bc35f0673f097295e7b7efb6d12b819eed + "0x4764c6b6c9c25e7cf62a2cb3c9bc35f0673f097295e7b7ef, 0x90f3cdb22f80cfe9ec90a481e02628c1157e7fb2f1cd3a8" + 6; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 4 + 044764c6b6c9c25e7cf62a2cb3c9bc35f0673f097295e7b7ef4e6bfa6deb3a528268e326fbd7be577c7668ee89bafb64470a181c91eff8 + "0x4764c6b6c9c25e7cf62a2cb3c9bc35f0673f097295e7b7ef, 0x4e6bfa6deb3a528268e326fbd7be577c7668ee89bafb6447" + 6; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 2 + 034764c6b6c9c25e7cf62a2cb3c9bc35f0673f097295e7b7ef474e87ebdb2472db13d972255490 + "0x4764c6b6c9c25e7cf62a2cb3c9bc35f0673f097295e7b7ef, 0x4e6bfa6deb3a528268e326fbd7be577c7668ee89bafb6447" + 14; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 6 + 074764c6b6c9c25e7cf62a2cb3c9bc35f0673f097295e7b7ef4e6bfa6deb3a528268e326fbd7be577c7668ee89bafb6447a70a4bd2e3f7 + "0x4764c6b6c9c25e7cf62a2cb3c9bc35f0673f097295e7b7ef, 0x4e6bfa6deb3a528268e326fbd7be577c7668ee89bafb6447" + 6; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 6 + 064764c6b6c9c25e7cf62a2cb3c9bc35f0673f097295e7b7ef4e6bfa6deb3a528268e326fbd7be577c7668ee89bafb644707 + FAIL + 1; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 8 + 0b4764c6b6c9c25e7cf62a2cb3c9bc35f0673f097295e7b7efc8 + "0x4764c6b6c9c25e7cf62a2cb3c9bc35f0673f097295e7b7ef, 0x4e6bfa6deb3a528268e326fbd7be577c7668ee89bafb6447" + 1; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 12 + 0f4764c6b6c9c25e7cf62a2cb3c9bc35f0673f097295e7b7ef4e6bfa6deb3a528268e326fbd7be577c7668ee89bafb64473d7bcd98d9 + "0x4764c6b6c9c25e7cf62a2cb3c9bc35f0673f097295e7b7ef, 0x4e6bfa6deb3a528268e326fbd7be577c7668ee89bafb6447" + 5; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 12 + 0e4764c6b6c9c25e7cf62a2cb3c9bc35f0673f097295e7b7ef4e6bfa6deb3a528268e326fbd7be577c7668ee89bafb64479a8e5686ea1efd44632a1781 + FAIL + 12; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 1 + 01221d6ff334169a924b143bdf6fdfafbfaa83b5ba8d09d1534101d3c1fad2751f5b3062364a + "0x221d6ff334169a924b143bdf6fdfafbfaa83b5ba8d09d153, 0xb602674c9327bb95316921aea623174f1f20b3338484b7a" + 13; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 4 + 04221d6ff334169a924b143bdf6fdfafbfaa83b5ba8d09d1530b602674c9327bb95316921aea623174f1f20b3338484b7af1ec592dd09371 + "0x221d6ff334169a924b143bdf6fdfafbfaa83b5ba8d09d153, 0xb602674c9327bb95316921aea623174f1f20b3338484b7a" + 7; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 2 + 02221d6ff334169a924b143bdf6fdfafbfaa83b5ba8d09d15303276ba9fe7175ce163b98e2cd + "0x221d6ff334169a924b143bdf6fdfafbfaa83b5ba8d09d153, 0xb602674c9327bb95316921aea623174f1f20b3338484b7a" + 13; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 6 + 06221d6ff334169a924b143bdf6fdfafbfaa83b5ba8d09d1530b602674c9327bb95316921aea623174f1f20b3338484b7a704abda8bfca391b7ef8d74b + "0x221d6ff334169a924b143bdf6fdfafbfaa83b5ba8d09d153, 0xb602674c9327bb95316921aea623174f1f20b3338484b7a" + 12; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 6 + 07221d6ff334169a924b143bdf6fdfafbfaa83b5ba8d09d1530b602674c9327bb95316921aea623174f1f20b3338484b7acc90cd + FAIL + 3; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 8 + 0a221d6ff334169a924b143bdf6fdfafbfaa83b5ba8d09d1537e6fec16e568c552de9dc3 + "0x221d6ff334169a924b143bdf6fdfafbfaa83b5ba8d09d153, 0xb602674c9327bb95316921aea623174f1f20b3338484b7a" + 11; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 12 + 0e221d6ff334169a924b143bdf6fdfafbfaa83b5ba8d09d1530b602674c9327bb95316921aea623174f1f20b3338484b7ab528 + "0x221d6ff334169a924b143bdf6fdfafbfaa83b5ba8d09d153, 0xb602674c9327bb95316921aea623174f1f20b3338484b7a" + 2; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; bin: 1, 1" + 12 + 0f221d6ff334169a924b143bdf6fdfafbfaa83b5ba8d09d1530b602674c9327bb95316921aea623174f1f20b3338484b7a367d87af747f47f8baa943 + FAIL + 11; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 1 + 010f83e072c75f0ee7d39fec8340d64bdb8c83cd4546492fc3921bf5205d034225417a9cda8d + "0xf83e072c75f0ee7d39fec8340d64bdb8c83cd4546492fc3, 0x323d1d0a1e45908dfbfe62254b4f86b0df175389b5b6f222" + 13; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 4 + 040f83e072c75f0ee7d39fec8340d64bdb8c83cd4546492fc3323d1d0a1e45908dfbfe62254b4f86b0df175389b5b6f222740c72d3997951b543ad + "0xf83e072c75f0ee7d39fec8340d64bdb8c83cd4546492fc3, 0x323d1d0a1e45908dfbfe62254b4f86b0df175389b5b6f222" + 10; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 2 + 020f83e072c75f0ee7d39fec8340d64bdb8c83cd4546492fc3f2b3a0d5c04e1b6a18 + "0xf83e072c75f0ee7d39fec8340d64bdb8c83cd4546492fc3, 0x323d1d0a1e45908dfbfe62254b4f86b0df175389b5b6f222" + 9; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 6 + 060f83e072c75f0ee7d39fec8340d64bdb8c83cd4546492fc3323d1d0a1e45908dfbfe62254b4f86b0df175389b5b6f222f6c29092934952b9b039238e3a3c52 + "0xf83e072c75f0ee7d39fec8340d64bdb8c83cd4546492fc3, 0x323d1d0a1e45908dfbfe62254b4f86b0df175389b5b6f222" + 15; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 6 + 070f83e072c75f0ee7d39fec8340d64bdb8c83cd4546492fc3323d1d0a1e45908dfbfe62254b4f86b0df175389b5b6f2229c010dc5e90e8793911b048285 + FAIL + 13; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 8 + 0a0f83e072c75f0ee7d39fec8340d64bdb8c83cd4546492fc3e8ab4bdbe0db5ae79f51fcb69c + "0xf83e072c75f0ee7d39fec8340d64bdb8c83cd4546492fc3, 0x323d1d0a1e45908dfbfe62254b4f86b0df175389b5b6f222" + 13; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 12 + 0e0f83e072c75f0ee7d39fec8340d64bdb8c83cd4546492fc3323d1d0a1e45908dfbfe62254b4f86b0df175389b5b6f2224cad + "0xf83e072c75f0ee7d39fec8340d64bdb8c83cd4546492fc3, 0x323d1d0a1e45908dfbfe62254b4f86b0df175389b5b6f222" + 2; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 12 + 0f0f83e072c75f0ee7d39fec8340d64bdb8c83cd4546492fc3323d1d0a1e45908dfbfe62254b4f86b0df175389b5b6f222db2cbc + FAIL + 3; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 1 + 013d48eaeb8f7a9a37e65544f2be47d91c9cacd9774dab3bf771ef29ed1ad295b15d870db977 + "0x3d48eaeb8f7a9a37e65544f2be47d91c9cacd9774dab3bf7, 0x6a0dd4b1cc1df9ccd9da5f55ccb79e9136b70aa70a7f521c" + 13; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 4 + 043d48eaeb8f7a9a37e65544f2be47d91c9cacd9774dab3bf757453e5a436763fb3f8f1ba772f0478daa1bd3d047d469eb460e + "0x3d48eaeb8f7a9a37e65544f2be47d91c9cacd9774dab3bf7, 0x57453e5a436763fb3f8f1ba772f0478daa1bd3d047d469eb" + 2; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 2 + 033d48eaeb8f7a9a37e65544f2be47d91c9cacd9774dab3bf7 + "0x3d48eaeb8f7a9a37e65544f2be47d91c9cacd9774dab3bf7, 0x57453e5a436763fb3f8f1ba772f0478daa1bd3d047d469eb" + 0; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 6 + 073d48eaeb8f7a9a37e65544f2be47d91c9cacd9774dab3bf757453e5a436763fb3f8f1ba772f0478daa1bd3d047d469ebfe3c510223cefe01e05f09200cd5 + "0x3d48eaeb8f7a9a37e65544f2be47d91c9cacd9774dab3bf7, 0x57453e5a436763fb3f8f1ba772f0478daa1bd3d047d469eb" + 14; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 6 + 063d48eaeb8f7a9a37e65544f2be47d91c9cacd9774dab3bf757453e5a436763fb3f8f1ba772f0478daa1bd3d047d469eb4283ab7b1b98a2b331 + FAIL + 9; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 8 + 0a3d48eaeb8f7a9a37e65544f2be47d91c9cacd9774dab3bf79f0cd6e0f31b196f7a6630c519 + "0x3d48eaeb8f7a9a37e65544f2be47d91c9cacd9774dab3bf7, 0x57453e5a436763fb3f8f1ba772f0478daa1bd3d047d469eb" + 13; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 12 + 0e3d48eaeb8f7a9a37e65544f2be47d91c9cacd9774dab3bf757453e5a436763fb3f8f1ba772f0478daa1bd3d047d469ebd39b43143d6bc056339abbf7bc2e + "0x3d48eaeb8f7a9a37e65544f2be47d91c9cacd9774dab3bf7, 0x57453e5a436763fb3f8f1ba772f0478daa1bd3d047d469eb" + 14; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 12 + 0f3d48eaeb8f7a9a37e65544f2be47d91c9cacd9774dab3bf757453e5a436763fb3f8f1ba772f0478daa1bd3d047d469eb964e5da7f2ef0457 + FAIL + 8; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 2 + 02000000000000000000000000000000000000000000000000810eab33 + "0, 1" + 4; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 2 + 0300000000000000000000000000000000000000000000000006 + FAIL + 1; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 8 + 0a000000000000000000000000000000000000000000000000cf6d860e9f2ca63958f0c4 + "0, 1" + 11; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 8 + 0b000000000000000000000000000000000000000000000000aeabdb38a6382d + FAIL + 7; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 1 + 014972f0274733411c8f7ab6a348dd4789c2125faa86f3d956 + FAIL + 0; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 2 + 024972f0274733411c8f7ab6a348dd4789c2125faa86f3d956 + FAIL + 0; + "binpoly: 0x8000000000000000000000000000000000000000000000bb; binproj: 1, 1" + 8 + 0a4972f0274733411c8f7ab6a348dd4789c2125faa86f3d956 + FAIL + 0; +} diff --git a/utils/.gitignore b/utils/.gitignore new file mode 100644 index 00000000..cc9cc67d --- /dev/null +++ b/utils/.gitignore @@ -0,0 +1 @@ +ec-compr-test.py diff --git a/utils/ec-compr-test.sage b/utils/ec-compr-test.sage new file mode 100644 index 00000000..08ba5258 --- /dev/null +++ b/utils/ec-compr-test.sage @@ -0,0 +1,220 @@ +#! /usr/local/bin/sage +### -*-python-*- + +from itertools import count, izip +from random import randrange + +## Constants. +EC_YBIT = EC_XONLY = 1 +EC_CMPR = EC_LSB = 2 +EC_EXPLY = 4 +EC_SORT = 8 + +## Conversion primitives. +def poly_to_int(x, p): + return ZZ(sum([ZZ(a)*p**i for a, i in izip(x.list(), count())])) +def int_to_poly(n, p, t): + return sum([a*t**i for a, i in izip(n.digits(p), count())]) + +def fe2ip(x): + return poly_to_int(x.polynomial(), x.parent().characteristic()) +def i2fep(n, k): + return int_to_poly(n, k.characteristic(), k.gen()) + +def fe2osp(x): + k = x.parent() + n = fe2ip(x) + nb = ceil((k.cardinality() - 1).nbits()/8) + v = n.digits(256, padto = nb); v.reverse(); return v + +def os2sp(v): + return ''.join('%02x' % i for i in v) + +def fe2sp(x): + if x == 0 or x == 1: + return '%d' % x + if x.parent().degree() > 1: + return '0x%x' % fe2ip(x) + else: + n = ZZ(x + 99) + if n < 199: return '%d' % (n - 99) + else: return '0x%x' % x + +def os_to_hex(v): + return ''.join('%02x' % b for b in v) + +## Other utilities. +def find_2torsion_point(E, n): + while is_even(n): n //= 2 + while True: + Q = E.random_point() + R = n*Q + if R: break + while True: + S = 2*R + if not S: break + R = S + return R + +def pick_at_random(choices): + return choices[randrange(len(choices))] + +## Output an elliptic curve description. +def ecdescr(E): + k = E.base_ring() + m = k.degree() + if m == 1: + fdesc = '%s: %d' % (pick_at_random(['prime', 'niceprime']), + k.characteristic()) + cdesc = '%s: %s, %s' % (pick_at_random(['prime', 'primeproj']), + fe2sp(E.a4()), fe2sp(E.a6())) + elif k.characteristic() == 2: + fdesc = '%s: 0x%x' % ('binpoly', poly_to_int(k.polynomial(), 2)) + cdesc = '%s: %s, %s' % (pick_at_random(['bin', 'binproj']), + fe2sp(E.a2()), fe2sp(E.a6())) + else: + raise ValueError, 'only prime or binary fields supported' + return '"%s; %s"' % (fdesc, cdesc) + +## Output a point description. +def ecpt(Q): + if Q is None: return 'FAIL' + elif not Q: return 'inf' + else: return '"%s, %s"' % (fe2sp(Q[0]), fe2sp(Q[1])) + +## Compress a point. +def ptcompr_lsb(Q): + x, y = Q[0], Q[1] + if Q.curve().base_ring().characteristic() != 2: + return is_odd(fe2ip(y)) and EC_YBIT or 0 + elif x == 0: + return 0 + else: + return (y/x).polynomial()[0] == 1 and EC_YBIT or 0 + +def ptcompr_sort(Q): + y = fe2ip(Q[1]); yy = fe2ip((-Q)[1]) + return y > yy and EC_YBIT or 0 + +## Some elliptic curves. Chosen to have 2-torsion, so as to test edge cases +## where Q = -Q; in particular, 2-torsion points can't have their +## y-coordinates compressed to 1. +p = previous_prime(2^192); k_p = GF(p) +E_p = EllipticCurve(k_p, [-3, 6]) +n_p = 6277101735386680763835789423293484020607766684840576538738 +T_p = find_2torsion_point(E_p, n_p) + +k_2. = GF(2^191) +E_2 = EllipticCurve(k_2, [1, 1, 0, 0, 1]) +n_2 = 3138550867693340381917894711593325610042432240066118385966 +T_2 = find_2torsion_point(E_2, n_2) + +def test_ec2osp(E, Q): + ec = ecdescr(E) + pt = ecpt(Q) + xs, ys = fe2osp(Q[0]), fe2osp(Q[1]) + ybit_lsb = ptcompr_lsb(Q) + ybit_sort = ptcompr_sort(Q) + + def out(f, s): + print ' %s\n %d %s\n %s;' % (ec, f, pt, os_to_hex(s)) + + out(EC_XONLY, [EC_XONLY] + xs) + out(EC_CMPR, [EC_CMPR | ybit_lsb] + xs) + out(EC_CMPR | EC_SORT, [EC_CMPR | EC_SORT | ybit_sort] + xs) + out(EC_EXPLY, [EC_EXPLY] + xs + ys) + out(EC_CMPR | EC_EXPLY, [EC_CMPR | EC_EXPLY | ybit_lsb] + xs + ys) + out(EC_CMPR | EC_SORT | EC_EXPLY, + [EC_CMPR | EC_SORT | EC_EXPLY | ybit_sort] + xs + ys) + +print 'ec2osp {' +for i in xrange(20): test_ec2osp(E_p, E_p.random_point()) +test_ec2osp(E_p, T_p) +for i in xrange(20): test_ec2osp(E_2, E_2.random_point()) +test_ec2osp(E_2, T_2) +print '}' + +def test_os2ecp(E, Q): + ec = ecdescr(E) + k = E.base_ring() + m = k.degree() + x, y = Q[0], Q[1] + xs, ys = fe2osp(Q[0]), fe2osp(Q[1]) + ybit_lsb = ptcompr_lsb(Q) + ybit_sort = ptcompr_sort(Q) + + def out(f, s, Q): + sufflen = randrange(16) + suff = [randrange(256) for i in xrange(sufflen)] + print ' %s\n %d\n %s\n %s\n %d;' % ( + ec, f, os_to_hex(s + suff), ecpt(Q), sufflen) + + ## This is the algorithm from `gfreduce_quadsolve'. + B = x^3 + E.a2()*x^2 + E.a4()*x + E.a6() + A = E.a1()*x + E.a3() + if A == 0: + yy = sqrt(B) + else: + xx = B/A^2 + while True: + rho = k.random_element() + if rho.trace() == 1: break + z = sum(rho^(2^i)*sum(xx^(2^j) for j in xrange(i)) for i in xrange(m)) + if z.polynomial()[0]: z -= 1 + yy = A*z + + out(EC_XONLY, [EC_XONLY] + xs, E(x, yy)) + out(EC_EXPLY, [EC_EXPLY] + xs + ys, Q) + + out(EC_LSB, [EC_CMPR | ybit_lsb] + xs, Q) + out(EC_LSB | EC_EXPLY, [EC_EXPLY | EC_CMPR | ybit_lsb] + xs + ys, Q) + out(EC_LSB | EC_EXPLY, + [EC_EXPLY | EC_CMPR | (not ybit_lsb)] + xs + ys, None) + + out(EC_SORT, [EC_CMPR | EC_SORT | ybit_sort] + xs, Q) + out(EC_SORT | EC_EXPLY, + [EC_EXPLY | EC_CMPR | EC_SORT | ybit_sort] + xs + ys, Q) + out(EC_SORT | EC_EXPLY, + [EC_EXPLY | EC_CMPR | EC_SORT | (not ybit_sort)] + xs + ys, None) + +def test_os2ecp_2torsion(E, Q): + ec = ecdescr(E) + k = E.base_ring() + m = k.degree() + x, y = Q[0], Q[1] + xs, ys = fe2osp(Q[0]), fe2osp(Q[1]) + + def out(f, s, Q): + sufflen = randrange(16) + suff = [randrange(256) for i in xrange(sufflen)] + print ' %s\n %d\n %s\n %s\n %d;' % ( + ec, f, os_to_hex(s + suff), ecpt(Q), sufflen) + + out(EC_LSB, [EC_CMPR] + xs, Q) + out(EC_LSB, [EC_CMPR | EC_YBIT] + xs, None) + out(EC_SORT, [EC_SORT | EC_CMPR] + xs, Q) + out(EC_SORT, [EC_SORT | EC_CMPR | EC_YBIT] + xs, None) + +def test_os2ecp_notpoints(E): + ec = ecdescr(E) + k = E.base_ring() + + def out(f, s): + print ' %s\n %d\n %s\n FAIL\n 0;' % (ec, f, os_to_hex(s)) + + while True: + x = k.random_element() + if not E.is_x_coord(x): break + xs = fe2osp(x) + out(EC_XONLY, [EC_XONLY] + xs) + out(EC_LSB, [EC_CMPR] + xs) + out(EC_SORT, [EC_CMPR | EC_SORT] + xs) + +print 'os2ecp {' +for i in xrange(20): test_os2ecp(E_p, E_p.random_point()) +test_os2ecp_2torsion(E_p, T_p) +test_os2ecp_notpoints(E_p) +for i in xrange(20): test_os2ecp(E_2, E_2.random_point()) +test_os2ecp_2torsion(E_2, T_2) +test_os2ecp_notpoints(E_2) +print '}'