@pytest.mark.parametrize(
"expected_output", [pytest.param(Spec.INVALID, id=pytest.HIDDEN_PARAM)]
)
@pytest.mark.parametrize(
"input_data",
[
pytest.param(
Spec.INF_G1
+ PointG2(
(0x0, 0x800),
(
0x104E75A20B641566A0C71C9069A5256391AA31E22021D36C037C108DFB79C662,
0x00BF257AE3D66A589214F980A2AE34F9544BE2FCBCC13B21F4C1642F31AA4D20,
),
)
+ Spec.INF_G1
+ PointG2(
(0x0, 0x800),
(
0x104E75A20B641566A0C71C9069A5256391AA31E22021D36C037C108DFB79C662,
0x00BF257AE3D66A589214F980A2AE34F9544BE2FCBCC13B21F4C1642F31AA4D20,
),
),
),
pytest.param(
Spec.INF_G1
+ PointG2(
(0x0, 0x80000000000000000000),
(
0x12AB9BB0C853FB1D884197CDEFDF654C01A289B677094FE609C835D2B249DCC5,
0x1460243CC357281001B8B257C6396865C729761AC575A85B2F8F0E58AF439C84,
),
)
+ Spec.INF_G1
+ Spec.INF_G2,
),
pytest.param(
Spec.INF_G1
+ PointG2(
(
0x0,
0x080A77C09A07DFAF666EA36F7879462C0A78EB28F5C70B5ED35D438DC58F0D9D,
),
(
0x058BCABF53CCB1B6F2AD14E6BC531485DBA856600B7941C8C5A4968940FBA978,
0x210DC371BFD9736EB879D25BE8A799EFF45BEA91130B9B2768689786235ACCD9,
),
)
+ Spec.INF_G1
+ Spec.INF_G2
+ Spec.INF_G1
+ Spec.INF_G2
+ Spec.INF_G1
+ Spec.INF_G2,
),
pytest.param(
Spec.INF_G1
+ PointG2(
(0x800104E75, 0x0),
(
0x0A535BC14C0F581A039D0BFB15E730B6BBB3D6E33ECDA8C74EBD901DEEB4EF84,
0x23E99EADCC72CED9221DF2DB154B36F6931270C3F21F4EC8C4206B9211924BB2,
),
)
+ PointG1(
0x03A99966A8DB46602AC05B8F0D7669C3BC066FB7B9A188CC79E5239E27E35805,
0x17E54F1FFF192038A907711C8123997F785D2C2C9A214355466B60652EE53E4D,
)
+ PointG2(
(
0x00C662006274FB346E22EEB59635C82CB4E20E34DA7230644E72E131C82CB4E2,
0x104E75A20B64000000000000000000150000000000000000006629C731,
),
(
0x270EF2EA6F8C3DAD3832F95F309CB6A1591AD53AF025C6E0809992F15234E5FE,
0x1B37771CE3BB5A62017C56C496E57673E2617634E900C587724D21F24E603A63,
),
)
+ PointG1(
0x03A99966A8DB46602AC05B8F0D7669C3BC066FB7B9A188CC79E5239E27E35805,
0x187EFF52E2187FF10F48D49A005DBEDE1F243E64CE508737F5B52BB1A997BEFA,
)
+ PointG2(
(0x0, 0xBF000000000000000000),
(
0x1284BDD8E69832B232222D3493A6ABB523575BE2A5AF6E88F5501CEF408AA5BB,
0x0CA4D5B3C58E0BC7BE2C8885E53C673B54F3057CFF97CB1020CB2F5A9F61AFFB,
),
)
+ Spec.INF_G1
+ PointG2((0x0, 0x0), (0x8000000, 0x0)),
),
pytest.param(
Spec.INF_G1
+ PointG2(
(0x4000000000000000000, 0x0),
(
0x0FB1B0E8C8B85EC99EBEDAE0880006B0809F5151890CCA524EEA2C0B3AD87F32,
0x29D3E6BC7F0886B75E186B10564DC990258855E0311E3E2E72F9D9C0DFAB4F0D,
),
)
+ Spec.INF_G1
+ PointG2(
(0x4000000000000000000, 0x0),
(
0x0FB1B0E8C8B85EC99EBEDAE0880006B0809F5151890CCA524EEA2C0B3AD87F32,
0x29D3E6BC7F0886B75E186B10564DC990258855E0311E3E2E72F9D9C0DFAB4F0D,
),
),
),
pytest.param(
Spec.INF_G1
+ PointG2(
(0x2000000000000000000000000, 0x0),
(
0x114CC34C5044C87540B942287D555CE935499CE155202081CA5CE495C3568960,
0x09FD9490A6F214B7729F9574D53FCE82A2D46B3CCF7499AB5616B2C4F36582D7,
),
)
+ Spec.INF_G1
+ PointG2((0x0, 0x0), (0x8000000, 0x0)),
),
pytest.param(
Spec.INF_G1
+ PointG2(
(0x310000000000000000000000000CCC36905059, 0x0),
(
0x034E16015E4AEADB3C1C93FD54F496A6A75271F9E514B6C51782D145A1771A98,
0x27910E860D8264C87A784C364D78F117CA598153FC5947C915EB6E2E7E0AD6D5,
),
)
+ PointG1(0x1, 0x2)
+ Spec.INF_G2
+ PointG1(0x1, 0x2)
+ Spec.INF_G2
+ PointG1(0x1, 0x2)
+ Spec.INF_G2
+ PointG1(0x1, 0x2)
+ Spec.INF_G2
+ PointG1(0x1, 0x2)
+ Spec.INF_G2,
),
pytest.param(
Spec.INF_G1
+ PointG2(
(
0x800000000000000000000000000000000000000000,
0x070A77C19A07DF2E666EA36F7879462C0A78EBBDF5C70B3DD35D438DC58F0D9D,
),
(
0x0A2DD5B476A606A8243E7E879BDDAA8086BA658087AACC4D986A10C74DD9E774,
0x2D46618F9D516E0F07A59D3C97F5E167A1B49EBE9FB30DD05BDED8185A545420,
),
),
),
pytest.param(
Spec.INF_G1
+ PointG2(
(
0x192B7E3A0CA8B63592989FE8B2589465703315272BC7,
0x30644E72E131A029B85045B68181585D00001B86B77538000000000100000000,
),
(
0x128A694E7017AE1DB6A312C9EF648B1A4910A41E684CB554302044A2065F0468,
0x0DF2D76A91278279CF401D431C31876EE9C8AD35070694552CCBD36875541383,
),
)
+ Spec.INF_G1
+ PointG2(
(
0x192B7E3A0CA8B63592989FE8B2589465703315272BC7,
0x30644E72E131A029B85045B68181585D00001B86B77538000000000100000000,
),
(
0x128A694E7017AE1DB6A312C9EF648B1A4910A41E684CB554302044A2065F0468,
0x0DF2D76A91278279CF401D431C31876EE9C8AD35070694552CCBD36875541383,
),
),
),
pytest.param(
Spec.INF_G1
+ PointG2(
(
0x5B000000000045000000002A000000000080000000000000000001,
0x30644E72E131A029B65045B68181585D2B0D3025C6ABDBAA75EF4D163A7CFD40,
),
(
0x17C66E1806ECE8D631D792F8CBD8BDF7514A9058C183A3B2FCDA7E86C44B7752,
0x301A6A722CDC812165B619F3CD2B21250D7F7083D0B984FDAF8636202E4AE047,
),
)
+ PointG1(0x1, 0x2)
+ PointG2(
(
0x30644E72E131A029B85045B68181585D2B0D3025C6AB2EB4FBEF4D16D87CFD40,
0x5B004500000000000000002A000000000000000000000000000001,
),
(
0x109BEDDBAA84026C8F71D34A485AF27FE418028129B55B0A0DF51E3DBA231002,
0x1AEA54403CE01876467152AA79CA1F227B6B1E0F95B56CB0537583190252556D,
),
),
),
pytest.param(
Spec.INF_G1
+ PointG2(
(0xFFFFFFFF << 184, 0xFFFFFFFF << 184),
(
0x00FB55BF7DF894A746FBE20B6F8C54D5DC0D9FD4EDA4742FC35100C45E6E27F9,
0x12A20D63D446EB175733853B88DD36708EB7A81F5C79E7659C3A6E2B2C470077,
),
)
+ Spec.INF_G1
+ PointG2(
(0xFFFFFFFF << 184, 0xFFFFFFFF << 184),
(
0x00FB55BF7DF894A746FBE20B6F8C549FEDDC0DD0D4005174A42FC3C45E6E27F9,
0x12A20D63D446EB175733853B88DD36708EB7A81F5C79E7659C3A6E2B2C470077,
),
),
),
pytest.param(
Spec.INF_G1
+ PointG2(
(
0xEA1146AF1A0C4DF0000000001000000000000000000000000000000,
0x0,
),
(
0x15D42E5A1C18703100BEF65A743007BEAD1FC389B7D8F0A8CCDA34B7D30620CB,
0x1C4156D243211B733AF4F4FFF11B9C0928308BF3C3102415E3105B986166D0CD,
),
)
+ PointG1(0xF8FFFFFFFFFFFFFF0000, 0x0)
+ PointG2((0x0, 0x0), (0x8000000, 0x0)),
),
pytest.param(
Spec.INF_G1
+ PointG2(
(
0x249409822E0000000000000000000000000000000000000001154BAF,
0x30644E72E131A029B85045B66AC4175696816A916871CA8D3C208C161A46C432,
),
(
0x126F44FAB27034BA2832173059EBF31A96607ADA20F006B4F12D4A8BAD410D8F,
0x02EEE77897359CFC599B6CA4E8C2A47F641FC0CD6D4146D8ECA263A85C7AA365,
),
)
+ Spec.INF_G1
+ PointG2(
(
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
0x1800DEEF121F1E76426A00665E5C4479674322D4F75EDADD46DEBD5CD992F6ED,
),
(
0x090689D0585FF075EC9E99AD690C3395BC4B313370B38EF355ACDADCD122975B,
0x12C85EA5DB8C6DEB4AAB71808DCB408FE3D1E7690C43D37B4CE6CC0166FA7DAA,
),
),
),
pytest.param(
Spec.INF_G1
+ PointG2(
(
0x05908648C919B2BD65122716E5E4AA74FB342E22EEB59635C84BB4E20E34DA72,
0x30644E72E131A0296427B6542E3A6A00CCFA1D43577C305499096BBD8414F16C,
),
(
0x0DF67CF39CB400A898E9AA727937CA9E07D92185F3FBA6AA42BE45DDAD4FDADB,
0x145DA376A6EC6D77185DF39EDDE6E9037E58065A054CDA2796F4E669BCDCBF1F,
),
)
+ Spec.INF_G1
+ PointG2(
(
0x05908648C919B2BD65122716E5E4AA74FB342E22EEB59635C84BB4E20E34DA72,
0x30644E72E131A0296427B6542E3A6A00CCFA1D43577C305499096BBD8414F16C,
),
(
0x0DF67CF39CB400A898E9AA727937CA9E07D92185F3FBA6AA42BE45DDAD4FDADB,
0x145DA376A6EC6D77185DF39EDDE6E9037E58065A054CDA2796F4E669BCDCBF1F,
),
)
+ Spec.INF_G1
+ PointG2(
(
0x05908648C919B2BD65122716E5E4AA74FB342E22EEB59635C84BB4E20E34DA72,
0x30644E72E131A0296427B6542E3A6A00CCFA1D43577C305499096BBD8414F16C,
),
(
0x0DF67CF39CB400A898E9AA727937CA9E07D92185F3FBA6AA42BE45DDAD4FDADB,
0x145DA376A6EC6D77185DF39EDDE6E9037E58065A054CDA2796F4E669BCDCBF1F,
),
),
),
pytest.param(
Spec.INF_G1
+ PointG2(
(
0x05908648C919B2BD65122716E5E4AA74FB342E22EEB59635C84BB4E20E34DA72,
0x30644E72E131A0296427B6542E3A6A00CCFA1D43577C305499096BBD8414F16C,
),
(
0x0DF67CF39CB400A898E9AA727937CA9E07D92185F3FBA6AA42BE45DDAD4FDADB,
0x145DA376A6EC6D77185DF39EDDE6E9037E58065A054CDA2796F4E669BCDCBF1F,
),
)
+ Spec.INF_G1
+ PointG2(
(
0x05908648C919B2BD65122716E5E4AA74FB342E22EEB59635C84BB4E20E34DA72,
0x30644E72E131A0296427B6542E3A6A00CCFA1D43577C305499096BBD8414F16C,
),
(
0x0DF67CF39CB400A898E9AA727937CA9E07D92185F3FBA6AA42BE45DDAD4FDADB,
0x145DA376A6EC6D77185DF39EDDE6E9037E58065A054CDA2796F4E669BCDCBF1F,
),
)
+ Spec.INF_G1
+ PointG2(
(
0x05908648C919B2BD65122716E5E4AA74FB342E22EEB59635C84BB4E20E34DA72,
0x30644E72E131A0296427B6542E3A6A00CCFA1D43577C305499096BBD8414F16C,
),
(
0x0DF67CF39CB400A898E9AA727937CA9E07D92185F3FBA6AA42BE45DDAD4FDADB,
0x145DA376A6EC6D77185DF39EDDE6E9037E58065A054CDA2796F4E669BCDCBF1F,
),
)
+ Spec.INF_G1
+ PointG2(
(
0x05908648C919B2BD65122716E5E4AA74FB342E22EEB59635C84BB4E20E34DA72,
0x30644E72E131A0296427B6542E3A6A00CCFA1D43577C305499096BBD8414F16C,
),
(
0x0DF67CF39CB400A898E9AA727937CA9E07D92185F3FBA6AA42BE45DDAD4FDADB,
0x145DA376A6EC6D77185DF39EDDE6E9037E58065A054CDA2796F4E669BCDCBF1F,
),
),
),
pytest.param(
Spec.INF_G1
+ PointG2(
(
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
0x1A76DAE6D3272396D0CBE61FCED2BC532EDAC647851E3AC53CE1CC9C7E645A83,
),
(
0x05B993046905746641A19B500EBBBD30CF0068A845BFBEE9DE55B8FE57D1DEE8,
0x243EF33537F73EF4ACE4279D86344D93A5DC8C20C69045865C0FA3B924933879,
),
)
+ Spec.INF_G1
+ PointG2(
(
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
0x1A76DAE6D3272396D0CBE61FCED2BC532EDAC647851E3AC53CE1CC9C7E645A83,
),
(
0x05B993046905746641A19B500EBBBD30CF0068A845BFBEE9DE55B8FE57D1DEE8,
0x243EF33537F73EF4ACE4279D86344D93A5DC8C20C69045865C0FA3B924933879,
),
),
),
pytest.param(
Spec.INF_G1
+ PointG2(
(
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
0x1A76DAE6D3272396D0CBE61FCED2BC532EDAC647851E3AC53CE1CC9C7E645A83,
),
(
0x05B993046905746641A19B500EBBBD30CF0068A845BFBEE9DE55B8FE57D1DEE8,
0x243EF33537F73EF4ACE4279D86344D93A5DC8C20C69045865C0FA3B924933879,
),
)
+ Spec.INF_G1
+ PointG2(
(
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
0x1A76DAE6D3272396D0CBE61FCED2BC532EDAC647851E3AC53CE1CC9C7E645A83,
),
(
0x05B993046905746641A19B500EBBBD30CF0068A845BFBEE9DE55B8FE57D1DEE8,
0x243EF33537F73EF4ACE4279D86344D93A5DC8C20C69045865C0FA3B924933879,
),
)
+ Spec.INF_G1
+ PointG2(
(
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
0x1A76DAE6D3272396D0CBE61FCED2BC532EDAC647851E3AC53CE1CC9C7E645A83,
),
(
0x05B993046905746641A19B500EBBBD30CF0068A845BFBEE9DE55B8FE57D1DEE8,
0x243EF33537F73EF4ACE4279D86344D93A5DC8C20C69045865C0FA3B924933879,
),
),
),
pytest.param(
Spec.INF_G1
+ PointG2(
(
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
0x1A76DAE6D3272396D0CBE61FCED2BC532EDAC647851E3AC53CE1CC9C7E645A83,
),
(
0x05B993046905746641A19B500EBBBD30CF0068A845BFBEE9DE55B8FE57D1DEE8,
0x243EF33537F73EF4ACE4279D86344D93A5DC8C20C69045865C0FA3B924933879,
),
)
+ Spec.INF_G1
+ PointG2(
(
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
0x1A76DAE6D3272396D0CBE61FCED2BC532EDAC647851E3AC53CE1CC9C7E645A83,
),
(
0x05B993046905746641A19B500EBBBD30CF0068A845BFBEE9DE55B8FE57D1DEE8,
0x243EF33537F73EF4ACE4279D86344D93A5DC8C20C69045865C0FA3B924933879,
),
)
+ Spec.INF_G1
+ PointG2(
(
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
0x1A76DAE6D3272396D0CBE61FCED2BC532EDAC647851E3AC53CE1CC9C7E645A83,
),
(
0x05B993046905746641A19B500EBBBD30CF0068A845BFBEE9DE55B8FE57D1DEE8,
0x243EF33537F73EF4ACE4279D86344D93A5DC8C20C69045865C0FA3B924933879,
),
)
+ Spec.INF_G1
+ PointG2(
(
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
0x1A76DAE6D3272396D0CBE61FCED2BC532EDAC647851E3AC53CE1CC9C7E645A83,
),
(
0x05B993046905746641A19B500EBBBD30CF0068A845BFBEE9DE55B8FE57D1DEE8,
0x243EF33537F73EF4ACE4279D86344D93A5DC8C20C69045865C0FA3B924933879,
),
),
),
pytest.param(
Spec.INF_G1
+ PointG2(
(
0x1A36C98D1ECE5FD647AFBA497E7EA7A2687E956E978E3572C3DF75E9278302B9,
0x991B498795,
),
(
0x099A3FAF27255B9542DAF48D9588FC4D6927C7FCD88C5784A4245345474E1E45,
0x09A44EA53F191DDEF8A32EC03A7E1A24E06588F8DE364BA0024B3B8A062CA91A,
),
)
+ Spec.INF_G1
+ PointG2(
(
0x1A36C98D1ECE5FD647AFBA497E7EA7A2687E956E978E3572C3DF75E9278302B9,
0x991B498795,
),
(
0x099A3FAF27255B9542DAF48D9588FC4D6927C7FCD88C5784A4245345474E1E45,
0x09A44EA53F191DDEF8A32EC03A7E1A24E06588F8DE364BA0024B3B8A062CA91A,
),
)
+ PointG1(0x1, Spec.P - 2)
+ PointG2(
(
0x30644E72E131A029B85045B68181585D97816A68917120CA8D3C8C16D87CFD45,
0x5B0045000000000000000000000000000000000000000040000001,
),
(
0x11EE2BE185FB562C979EEB452DF376F91C7852BFB8A6D5727024444A2FC58C15,
0x2825D78E66BE7952503E9E1BF2D8AAD4C39F4CE4095349043106508BAB20D6E5,
),
)
+ PointG1(0x1, Spec.P - 2)
+ PointG2(
(
0x30644E72E131A029B85045B68181585D97816A68917120CA8D3C8C16D87CFD45,
0x5B0045000000000000000000000000000000000000000040000001,
),
(
0x11EE2BE185FB562C979EEB452DF376F91C7852BFB8A6D5727024444A2FC58C15,
0x2825D78E66BE7952503E9E1BF2D8AAD4C39F4CE4095349043106508BAB20D6E5,
),
)
+ PointG1(0x1, Spec.P - 2)
+ PointG2(
(
0x30644E72E131A029B85045B68181585D97816A68917120CA8D3C8C16D87CFD45,
0x5B0045000000000000000000000000000000000000000040000001,
),
(
0x11EE2BE185FB562C979EEB452DF376F91C7852BFB8A6D5727024444A2FC58C15,
0x2825D78E66BE7952503E9E1BF2D8AAD4C39F4CE4095349043106508BAB20D6E5,
),
),
),
pytest.param(
Spec.INF_G1
+ PointG2(
(
0x30644E72E131A029000000000000000000000000000000004000000000000000,
0x1000000000000000000000000000000000000000017F66B91112534050000,
),
(
0x06F2A18A982E6E9436F171F8BCDB4F60B9EA1DAFAF115F9228E11DDD98CA9680,
0x304502B9C299712D0CF851E73ADC8CE68C549A5B2AE712A44811DB357D3BDB97,
),
)
+ PointG1(
0x17956B549321B92C524D191A62B90C81F08E694AF4DCEB00A80094E53120D39E,
0x2FD15D78815388959CAA54AFFA2D7B2C8D52C528E6A1F6C0A50FCF0498FAC7EE,
)
+ PointG2(
(
0x30644E72E131A029000000000000000000000000000000004000000000000000,
0x0,
),
(
0x016B9E28A32EE61A7AD5BD4BAD29D64FC35A8FB46B510BE2067907069497AE1F,
0x0C3C07C40F41A731FE27D953F1154B4E9A8ACF3EF44608817150DE0DF916503A,
),
)
+ PointG1(
0x17956B549321B92C524D191A62B90C81F08E694AF4DCEB00A80094E53120D39E,
0x2FD15D78815388959CAA54AFFA2D7B2C8D52C528E6A1F6C0A50FCF0498FAC7EE,
)
+ PointG2(
(
0x30644E72E131A029000000000000000000000000000000004000000000000000,
0x0,
),
(
0x016B9E28A32EE61A7AD5BD4BAD29D64FC35A8FB46B510BE2067907069497AE1F,
0x0C3C07C40F41A731FE27D953F1154B4E9A8ACF3EF44608817150DE0DF916503A,
),
)
+ PointG1(
0x17956B549321B92C524D191A62B90C81F08E694AF4DCEB00A80094E53120D39E,
0x2FD15D78815388959CAA54AFFA2D7B2C8D52C528E6A1F6C0A50FCF0498FAC7EE,
)
+ PointG2(
(
0x30644E72E131A029000000000000000000000000000000004000000000000000,
0x0,
),
(
0x016B9E28A32EE61A7AD5BD4BAD29D64FC35A8FB46B510BE2067907069497AE1F,
0x0C3C07C40F41A731FE27D953F1154B4E9A8ACF3EF44608817150DE0DF916503A,
),
),
),
pytest.param(
Spec.INF_G1
+ PointG2(
(
0x30644E72E131A029B85045B68181585D977F9597358C206E72C88C16E622B8B2,
0x4500000000000000000000000107B55DE1642362D16B8FC4DC,
),
(
0x2A314ECA6ADB97BF3A3872A406ECF97BF2BDD210B6CBA667EBA043F71C1FFC20,
0x0BA9CAA5888AE7C0E6D2B54181905E66769D9ED9BADC43DA3D9F3E56B46CB43B,
),
)
+ PointG1(
0x0ACFD59A153BDC736907CC4A640A2FB675CDAA8066A58616537CE4CD7145AA06,
0x1B1D6BF901BDA3C5E3DF60E3741D6F5D6660F4034E2F99545E0DC71E9B53AF2C,
)
+ PointG2(
(
0x30644E72E131A029B85045B68181585D977F956E978C3572C8208C166622B8B2,
0x4500000000000000000000000107B55DE1642362D16B8FC4DC,
),
(
0x2AD9BB009C15BDC11D5ED75A805D5F24BA0E10E5B7953E281E241F72D208CE88,
0x0D6F072450FD6EF76DD73FF2924238CBEE09EA4C6281B867A897D85D8D091B33,
),
)
+ PointG1(
0x0ACFD59A153BDC736907CC4A640A2FB675CDAA8066A58616537CE4CD7145AA06,
0x1B1D6BF901BDA3C5E3DF60E3741D6F5D6660F4034E2F99545E0DC71E9B53AF2C,
)
+ PointG2(
(
0x30644E72E131A029B85045B68181585D977F956E978C3572C8208C166622B8B2,
0x4500000000000000000000000107B55DE1642362D16B8FC4DC,
),
(
0x2AD9BB009C15BDC11D5ED75A805D5F24BA0E10E5B7953E281E241F72D208CE88,
0x0D6F072450FD6EF76DD73FF2924238CBEE09EA4C6281B867A897D85D8D091B33,
),
)
+ PointG1(
0x0ACFD59A153BDC736907CC4A640A2FB675CDAA8066A58616537CE4CD7145AA06,
0x1546E279DF73FC63D470E4D30D63E9003120768E1A423138DE12C4F83D294E1B,
)
+ PointG2(
(
0x30644E72E131A029B85045B68181585D977F956E978C3572C8208C166622B8B2,
0x4500000000000000000000000107B55DE1642362D16B8FC4DC,
),
(
0x2AD9BB009C15BDC11D5ED75A805D5F24BA0E10E5B7953E281E241F72D208CE88,
0x0D6F072450FD6EF76DD73FF2924238CBEE09EA4C6281B867A897D85D8D091B33,
),
),
),
pytest.param(
Spec.INF_G1
+ PointG2(
(Spec.P - 2, 0x2),
(
0x0833E47A2EAA8BBE12D33B2DA1A4FA8D763F5C567FE0DA6C5C9DA2E246F2096F,
0x28DC125BF7443BC1826C69FE4C7BF30C26EC60882350E784C4848C822726EB43,
),
)
+ PointG1(0x1, Spec.P - 2)
+ PointG2(
(Spec.P - 2, 0x2),
(
0x0833E47A2EAA8BBE12D33B2DA1A4FA8D763F5C567FE0DA6C5C9DA2E246F2096F,
0x28DC125BF7443BC1826C69FE4C7BF30C26EC60882350E784C4848C822726EB43,
),
),
),
pytest.param(
Spec.INF_G1
+ PointG2(
(Spec.P - 2, 0x2),
(
0x0833E47A2EAA8BBE12D33B2DA1A4FA8D763F5C567FE0DA6C5C9DA2E246F2096F,
0x28DC125BF7443BC1826C69FE4C7BF30C26EC60882350E784C4848C822726EB43,
),
)
+ PointG1(
0x1A3CF0C503B2DBC6E1B0F8AEA605DE20D8612FE14627C6F4D3706F8272A1CF84,
0x2A0BB098018CA4392A1DDC08B9605602AED954308944AC729E2F99BFDD0166DD,
)
+ PointG2(
(0x10000, 0x0),
(
0x24B364D16400886C82900AF060FD117CB2F4E0B93590CBF6EC34ED97F4C391EC,
0x26A10E3233AEFF776D578DE9178A9B7BB919E6EB6CF2CF924EB16EC8DC659AF9,
),
),
),
pytest.param(
Spec.INF_G1
+ PointG2(
(Spec.P - 2, 0x2),
(
0x0833E47A2EAA8BBE12D33B2DA1A4FA8D763F5C567FE0DA6C5C9DA2E246F2096F,
0x28DC125BF7443BC1826C69FE4C7BF30C26EC60882350E784C4848C822726EB43,
),
)
+ PointG1(
0x1A5D389CA17607C4B12D7F1C8463B960754DBBB74EE00F645CA559F5EE759AD5,
0x231FDB414002B25EBEED48FD799214F4DB09A7DAE25AC92C15B7E429E1800A70,
)
+ PointG2(
(
0x297861CED3673FA135F178751F203F13D8A4C9F15AD9FDBB4BB7468154AF97F7,
0x1698710AF2EFBDE1687BC1530E7DA2CA42C8E85BAF594682890D36C8FB8D08F9,
),
(
0x106F1D083223BD63D1630BAF008588AC9C0392C289C68AFEE37B013030A9F7D1,
0x0128036F1A405F40BCE08BC346F0F83CB8CA2FE81D18FDFFFA984C97CEF37358,
),
)
+ Spec.INF_G1
+ PointG2(
(Spec.P - 2, 0x2),
(
0x0833E47A2EAA8BBE12D33B2DA1A4FA8D763F5C567FE0DA6C5C9DA2E246F2096F,
0x28DC125BF7443BC1826C69FE4C7BF30C26EC60882350E784C4848C822726EB43,
),
)
+ PointG1(
0x1C251D57A884434484D488B3FA5BB0B0D8566A251BFA57CDCFA452EE114A1960,
0x1BCD6DEC5E0B17FB9BB77B1145793CD6A99534DE85911F41C37934FC6F1F508E,
)
+ PointG2(
(
0x203E205DB4F19B37B60121B83A7333706DB86431C6D835849957ED8C3928AD79,
0x27DC7234FD11D3E8C36C59277C3E6F149D5CD3CFA9A62AEE49F8130962B4B3B9,
),
(
0x195E8AA5B7827463722B8C15393157AD3505566B4EDF48D498E185F0509DE152,
0x04BB53B8977E5F92A0BC372742C4830944A59B4FE6B1C0466E2A6DAD122B5D2E,
),
),
),
pytest.param(
PointG1(0x1, 0x2)
+ PointG2(
(
0x0,
0x30644E72E131A029B05040FF0000000000000000000000000000000000000000,
),
(
0x2E00D573B028B22B9D347DA8044A53C94B6C3AEE7D9BFB00AB2C0A10EB4775E6,
0x19E1A75BE1C5D39A105504A0E5D16C949524742DDE6BBB6E831668FEF921A143,
),
)
+ PointG1(0x1, 0x2)
+ PointG2(
(
0x30644E72E131A029B050FFFFFFFF585D97816A86B77537DAFBEF4D16D87CFD45,
0x5B00450000F400000000002A00647D903B504C1A02000000000001,
),
(
0x2DB3D49DA56012CF4F73CBF19FDB59EF41356CEBB4F4B6F692F9A38FB282A9FF,
0x2D96DB5D24DCEA418A44FEAE6052FBC7788E65E521B17232666818386252176A,
),
),
),
pytest.param(
PointG1(0x1, 0x2)
+ PointG2(
(0x107B55DE1642362D16B8F25DCCF, (Spec.P >> 24) << 24),
(
0x09EAE594F627B7CCF496D680F0266E7364F51D2D99CCD69801F29137D889E1E0,
0x06EA1409D3F9BB38BD40E8DA0701D122E059A02FC3C3C4A99A8CBF6E4290BDC0,
),
)
+ PointG1(0x1, Spec.P - 2)
+ PointG2(
(0x107B55DE1642362D16B8F25DCCF, (Spec.P >> 24) << 24),
(
0x09EAE594F627B7CCF496D680F0266E7364F51D2D99CCD69801F29137D889E1E0,
0x06EA1409D3F9BB38BD40E8DA0701D122E059A02FC3C3C4A99A8CBF6E4290BDC0,
),
),
),
pytest.param(
PointG1(0x1, 0x2)
+ PointG2(
(
0x5B0045000000000000000000000000000000000000000000000001,
Spec.P - 2,
),
(
0x218C0CEF2A606613357BFAA3C880E71FF8490195337FA26205A21CCD9A6949A3,
0x13FED2C79ADD9D85B9949C5852EF8CCCF02B69EA6FC4DB0D1660AC7B50DF39E1,
),
)
+ PointG1(0x1, Spec.P - 2)
+ PointG2(
(
0x5B0045000000000000000000000000000000000000000000000001,
Spec.P - 2,
),
(
0x218C0CEF2A606613357BFAA3C880E71FF8490195337FA26205A21CCD9A6949A3,
0x13FED2C79ADD9D85B9949C5852EF8CCCF02B69EA6FC4DB0D1660AC7B50DF39E1,
),
)
+ PointG1(0x1, Spec.P - 2)
+ PointG2(
(
0x5B0045000000000000000000000000000000000000000000000001,
Spec.P - 2,
),
(
0x218C0CEF2A606613357BFAA3C880E71FF8490195337FA26205A21CCD9A6949A3,
0x13FED2C79ADD9D85B9949C5852EF8CCCF02B69EA6FC4DB0D1660AC7B50DF39E1,
),
)
+ PointG1(0x1, Spec.P - 2)
+ PointG2(
(
0x5B0045000000000000000000000000000000000000000000000001,
Spec.P - 2,
),
(
0x218C0CEF2A606613357BFAA3C880E71FF8490195337FA26205A21CCD9A6949A3,
0x13FED2C79ADD9D85B9949C5852EF8CCCF02B69EA6FC4DB0D1660AC7B50DF39E1,
),
),
),
pytest.param(
PointG1(0x1, 0x2)
+ PointG2(
(
0x5B0045000000000000000000000000000000000000000000000008,
Spec.P - 0x65FA7E,
),
(
0x19C023CE224A0C0B121DD4F578B39E0DDF00A55580B03265CB32FCB623BBF778,
0x240F6BF16B9A25500A02B09FBE8ABFA933F9EE09EFFB104D712BAF573463EF8C,
),
)
+ PointG1(0x1, Spec.P - 2)
+ PointG2(
(
0x5B0045000000000000000000000000000000000000000000000008,
Spec.P - 0x65FA7E,
),
(
0x19C023CE224A0C0B121DD4F578B39E0DDF00A55580B03265CB32FCB623BBF778,
0x240F6BF16B9A25500A02B09FBE8ABFA933F9EE09EFFB104D712BAF573463EF8C,
),
)
+ PointG1(0x1, Spec.P - 2)
+ PointG2(
(
0x5B0045000000000000000000000000000000000000000000000001,
Spec.P - 2,
),
(
0x218C0CEF2A606613357BFAA3C880E71FF8490195337FA26205A21CCD9A6949A3,
0x13FED2C79ADD9D85B9949C5852EF8CCCF02B69EA6FC4DB0D1660AC7B50DF39E1,
),
),
),
pytest.param(
PointG1(0x1, 0x2)
+ PointG2(
(
0x5B00450000000000DA76B36B83C728300000000000000000000008,
0x30644E72E131A029B85045B68181585D97816A916871CA8D104D5B2BAF573463,
),
(
0x1B8765E7F5163862FCD3BC29F751AF42D869A0C8A329F5A53472D3C977038BB7,
0x068CD6BC298BD1EC695A49E1DB0620332F26E03A4A0ED9076973C1FEA43099F2,
),
)
+ PointG1(0x1, Spec.P - 2)
+ PointG2(
(
0x5B0045000000000000000000000000000000000000000000000001,
Spec.P - 2,
),
(
0x218C0CEF2A606613357BFAA3C880E71FF8490195337FA26205A21CCD9A6949A3,
0x13FED2C79ADD9D85B9949C5852EF8CCCF02B69EA6FC4DB0D1660AC7B50DF39E1,
),
),
),
pytest.param(
PointG1(0x1, 0x2)
+ PointG2(
(
0x5B00450000FC00000000002A00647D903B504C1A02000000000001,
0x30644E72E131A029B85045B68181585D97816A86B77537DAFBEF4D16D87CFD45,
),
(
0x0125B8EDEDE9E4F320E4DBFD7EE46D23A82508C3B44DBB99CB29724DAAA5C560,
0x2D663CC48C6D7469CC9DF0E861F3A9B93239AF8001F8ECF28B4572F201EF1369,
),
)
+ PointG1(0x1, Spec.P - 2)
+ PointG2(
(
0x30644E72E131A029B85045B68181585D97816A86B77538DAFBEF4D16D87CFD45,
0x5B004500000000000000002A00647D903B504C1A02000000000001,
),
(
0x247F1F6FBF2FE1FFF7E28D816724080774979F57692C2FA8569EA1A3CE52DFC5,
0x1F5C96F77D84AE24B701A32FF1B8D95B982C76BF5AB02E605C9BA4FA9F45B958,
),
),
),
pytest.param(
PointG1(0x1, 0x2)
+ PointG2(
(
0x012CD187FAAE3648A35E12CC197DDB26D9D3A44A625D97816A86B77537DAFBEF,
0x30644E72E131A029B050FFFFFFFF5802086325C1129AD4A34EBB48EE96340160,
),
(
0x08AEF33D9388C8F993F0AF340E047C1C9519D222062186F7B025291B6F6F4EF2,
0x293F1064B0E3345895DC4968BC8BB52FCBE960621C1F15CD7C693C7347078E32,
),
)
+ PointG1(0x1, Spec.P - 2)
+ PointG2(
(
0x012CD187FAAE3648A35E12CC197DDB26D9D3A44A625D97816A86B77537DAFBEF,
0x30644E72E131A029B050FFFFFFFF5802086325C1129AD4A34EBB48EE96340160,
),
(
0x08AEF33D9388C8F993F0AF340E047C1C9519D222062186F7B025291B6F6F4EF2,
0x293F1064B0E3345895DC4968BC8BB52FCBE960621C1F15CD7C693C7347078E32,
),
),
),
pytest.param(
PointG1(0x1, 0x2)
+ PointG2(
(
0x0D7D3BE95C6B1FC7D70F2EDC7B7BF6E7397BC04BC6AAA0584B9E5BBC064DE4FA,
Spec.P - 0x1D8A9F8B4C998A61149D6C,
),
(
0x10FB4E584F10053CBA1117D920DB188F54D1AB64E66E10B6177401A44C71E250,
0x20F50C6423205B18D96CDF7A832041D89076CF36DCDE6700E62833186ACD60B6,
),
)
+ PointG1(0x1, 0x2)
+ PointG2(
(
0x0D7D3BE95C6B1FC7D70F2EDC7B7BF6E7397BC04BC6AAA0584B9E5BBC064DE4FA,
Spec.P - 0x1D8A9F8B4C998A61149D6C,
),
(
0x10FB4E584F10053CBA1117D920DB188F54D1AB64E66E10B6177401A44C71E250,
0x20F50C6423205B18D96CDF7A832041D89076CF36DCDE6700E62833186ACD60B6,
),
)
+ PointG1(0x1, 0x2)
+ PointG2(
(
0x0D7D3BE95C6B1FC7D70F2EDC7B7BF6E7397BC04BC6AAA0584B9E5BBC064DE4FA,
Spec.P - 0x1D8A9F8B4C998A61149D6C,
),
(
0x10FB4E584F10053CBA1117D920DB188F54D1AB64E66E10B6177401A44C71E250,
0x20F50C6423205B18D96CDF7A832041D89076CF36DCDE6700E62833186ACD60B6,
),
)
+ PointG1(0x1, 0x2)
+ PointG2(
(
0x0D7D3BE95C6B1FC7D70F2EDC7B7BF6E7397BC04BC6AAA0584B9E5BBC064DE4FA,
Spec.P - 0x1D8A9F8B4C998A61149D6C,
),
(
0x10FB4E584F10053CBA1117D920DB188F54D1AB64E66E10B6177401A44C71E250,
0x20F50C6423205B18D96CDF7A832041D89076CF36DCDE6700E62833186ACD60B6,
),
),
),
pytest.param(
PointG1(0x1, 0x2)
+ PointG2(
(
0x0D7D3BE95C6B1FC7D70F2EDC7B7BF6E7397BC04BC6AAA0584B9E5BBC064DE4FA,
Spec.P - 0x1D8A9F8B4C998A61149D6C,
),
(
0x10FB4E584F10053CBA1117D920DB188F54D1AB64E66E10B6177401A44C71E250,
0x20F50C6423205B18D96CDF7A832041D89076CF36DCDE6700E62833186ACD60B6,
),
)
+ PointG1(0x1, Spec.P - 2)
+ PointG2(
(
0x0D7D3BE95C6B1FC7D70F2EDC7B7BF6E7397BC04BC6AAA0584B9E5BBC064DE4FA,
Spec.P - 0x1D8A9F8B4C998A61149D6C,
),
(
0x10FB4E584F10053CBA1117D920DB188F54D1AB64E66E10B6177401A44C71E250,
0x20F50C6423205B18D96CDF7A832041D89076CF36DCDE6700E62833186ACD60B6,
),
)
+ PointG1(0x1, 0x2)
+ PointG2(
(
0x0D7D3BE95C6B1FC7D70F2EDC7B7BF6E7397BC04BC6AAA0584B9E5BBC064DE4FA,
Spec.P - 0x1D8A9F8B4C998A61149D6C,
),
(
0x10FB4E584F10053CBA1117D920DB188F54D1AB64E66E10B6177401A44C71E250,
0x20F50C6423205B18D96CDF7A832041D89076CF36DCDE6700E62833186ACD60B6,
),
),
),
pytest.param(
PointG1(0x1, 0x2)
+ PointG2(
(
0x30644E72E131A029B05045B68181585D97816A86B77537DAFBEF4D16D87CFD45,
0x5B00450000FC00000000002A00647D903B504C1A02000000000001,
),
(
0x2C32D7465B0607CFAEBE0B13577B25E42FE6D9E49EEB9D5C0CA78CC17E114CBC,
0x2CD71C8288EBBD272A784C5B4921128CB68E9E2DDAAEC0595B266126C4E526BD,
),
)
+ PointG1(0x1, Spec.P - 2)
+ PointG2(
(
0x30644E72E131A029B05045B68181585D97816A86B77537DAFBEF4D16D87CFD45,
0x5B00450000FC00000000002A00647D903B504C1A02000000000001,
),
(
0x2C32D7465B0607CFAEBE0B13577B25E42FE6D9E49EEB9D5C0CA78CC17E114CBC,
0x2CD71C8288EBBD272A784C5B4921128CB68E9E2DDAAEC0595B266126C4E526BD,
),
),
),
pytest.param(
PointG1(0x1, 0x2)
+ PointG2(
(
0x30644E72E131A029B85045B68181585D97816A68917120CA8D3C8C16D87CFD45,
0x5B0045000000000000000000000000000000000000000040000001,
),
(
0x11EE2BE185FB562C979EEB452DF376F91C7852BFB8A6D5727024444A2FC58C15,
0x2825D78E66BE7952503E9E1BF2D8AAD4C39F4CE4095349043106508BAB20D6E5,
),
)
+ PointG1(0x1, Spec.P - 2)
+ PointG2(
(
0x30644E72E131A029B85045B68181585D97816A68917120CA8D3C8C16D87CFD45,
0x5B0045000000000000000000000000000000000000000040000001,
),
(
0x11EE2BE185FB562C979EEB452DF376F91C7852BFB8A6D5727024444A2FC58C15,
0x2825D78E66BE7952503E9E1BF2D8AAD4C39F4CE4095349043106508BAB20D6E5,
),
),
),
pytest.param(
PointG1(0x1, 0x2)
+ PointG2(
(
0x30644E72E131A029B85045B68181585D97816A68917120CA8D3C8C16D87CFD45,
0x5B0045000000000000000000000000000000000000000040000001,
),
(
0x11EE2BE185FB562C979EEB452DF376F91C7852BFB8A6D5727024444A2FC58C15,
0x2825D78E66BE7952503E9E1BF2D8AAD4C39F4CE4095349043106508BAB20D6E5,
),
)
+ PointG1(0x1, Spec.P - 2)
+ PointG2(
(
0x30644E72E131A029B85045B68181585D97816A68917120CA8D3C8C16D87CFD45,
0x5B0045000000000000000000000000000000000000000040000001,
),
(
0x11EE2BE185FB562C979EEB452DF376F91C7852BFB8A6D5727024444A2FC58C15,
0x2825D78E66BE7952503E9E1BF2D8AAD4C39F4CE4095349043106508BAB20D6E5,
),
)
+ PointG1(0x1, Spec.P - 2)
+ PointG2(
(
0x30644E72E131A029B85045B68181585D97816A68917120CA8D3C8C16D87CFD45,
0x5B0045000000000000000000000000000000000000000040000001,
),
(
0x11EE2BE185FB562C979EEB452DF376F91C7852BFB8A6D5727024444A2FC58C15,
0x2825D78E66BE7952503E9E1BF2D8AAD4C39F4CE4095349043106508BAB20D6E5,
),
),
),
pytest.param(
PointG1(0x1, 0x2)
+ PointG2(
(
0x30644E72E131A029B85045B68181585D97816A86B77538DAFBEF4D16D87CFD45,
0x5B004500000000000000002A000000000000000000000000000001,
),
(
0x124CA5DC43ED1E22D1C616B50A7D4249A012C1D65330AE8E4CAD70567C8231BB,
0x23F9415FA570E58E0AC61E4E6E7A6BD02A564F6B206A9D4645401B1D677BF3AB,
),
)
+ PointG1(0x1, Spec.P - 2)
+ PointG2(
(
0x30644E72E131A029B85045B68181585D97816A86B77538DAFBEF4D16D87CFD45,
0x5B004500000000000000002A000000000000000000000000000001,
),
(
0x124CA5DC43ED1E22D1C616B50A7D4249A012C1D65330AE8E4CAD70567C8231BB,
0x23F9415FA570E58E0AC61E4E6E7A6BD02A564F6B206A9D4645401B1D677BF3AB,
),
),
),
pytest.param(
PointG1(0x1, 0x2)
+ PointG2(
(
0x30644E72E131A029B85045B68181585D97816A86B77538DAFBEF4D16D87CFD45,
0x5B004500000000000000002A00647D903B504C1A02000000000001,
),
(
0x247F1F6FBF2FE1FFF7E28D816724080774979F57692C2FA8569EA1A3CE52DFC5,
0x1F5C96F77D84AE24B701A32FF1B8D95B982C76BF5AB02E605C9BA4FA9F45B958,
),
)
+ PointG1(0x1, Spec.P - 2)
+ PointG2(
(
0x30644E72E131A029B85045B68181585D97816A86B77538DAFBEF4D16D87CFD45,
0x5B004500000000000000002A00647D903B504C1A02000000000001,
),
(
0x247F1F6FBF2FE1FFF7E28D816724080774979F57692C2FA8569EA1A3CE52DFC5,
0x1F5C96F77D84AE24B701A32FF1B8D95B982C76BF5AB02E605C9BA4FA9F45B958,
),
),
),
pytest.param(
PointG1(0x1, 0x2)
+ PointG2(
(
Spec.P - 0xC0C80FD98EAC3DB,
0x5B0045000000000000000000000000000000080000000000000001,
),
(
0x301A8B8043356B83C4341D5E9CFC67071C61C0B053EC979B59AD8C0455B71C98,
0x15F88E8C709168C1AB898CA5288423B585331497F16B2C074DCBF76C2480E8C9,
),
)
+ PointG1(0x1, Spec.P - 2)
+ PointG2(
(
Spec.P - 0xC0C80FD98EAC3DB,
0x5B0045000000000000000000000000000000080000000000000001,
),
(
0x301A8B8043356B83C4341D5E9CFC67071C61C0B053EC979B59AD8C0455B71C98,
0x15F88E8C709168C1AB898CA5288423B585331497F16B2C074DCBF76C2480E8C9,
),
),
),
pytest.param(
PointG1(0x1, Spec.P - 2)
+ PointG2(
(
0x1800DEEF121F1E76426A00665E5C4479674322D4F75EDADD46DEBD5CD992F6ED,
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
),
(
0x1CC9A9EB823F8D97ADEE0206828C9F19EAF8F536C23207D68AE3D056A1480BB2,
0x1990DDB90388B94F31089D3B4FF594D5449C04FCDF2A3681017B5D7749367BA1,
),
)
+ PointG1(0x1, Spec.P - 2)
+ PointG2(
(
0x1800DEEF121F1E76426A00665E5C4479674322D4F75EDADD46DEBD5CD992F6ED,
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
),
(
0x1CC9A9EB823F8D97ADEE0206828C9F19EAF8F536C23207D68AE3D056A1480BB2,
0x1990DDB90388B94F31089D3B4FF594D5449C04FCDF2A3681017B5D7749367BA1,
),
)
+ PointG1(0x1, Spec.P - 2)
+ PointG2(
(
0x1800DEEF121F1E76426A00665E5C4479674322D4F75EDADD46DEBD5CD992F6ED,
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
),
(
0x1CC9A9EB823F8D97ADEE0206828C9F19EAF8F536C23207D68AE3D056A1480BB2,
0x1990DDB90388B94F31089D3B4FF594D5449C04FCDF2A3681017B5D7749367BA1,
),
)
+ PointG1(0x1, Spec.P - 2)
+ PointG2(
(
0x1800DEEF121F1E76426A00665E5C4479674322D4F75EDADD46DEBD5CD992F6ED,
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
),
(
0x1CC9A9EB823F8D97ADEE0206828C9F19EAF8F536C23207D68AE3D056A1480BB2,
0x1990DDB90388B94F31089D3B4FF594D5449C04FCDF2A3681017B5D7749367BA1,
),
),
),
pytest.param(
PointG1(0x1, Spec.P - 2)
+ PointG2(
(
0x2B0D3F819FD0046AEE4D0E54CC759AD714C473BD5F86A0D68DF977F7450390F7,
0x30644E72E131A029B85045AE0000000000000107B55DE1642362D16B8FC4DCCF,
),
(
0x2A5C3A27C4A417EA34F627B9481B9004E3B0EF59619DAA16E846D8A152D6BF77,
0x1301A8BB9C71966A4B557A21EEA89447294E8A9CC1308F0C8EECB16DFBF5D53B,
),
)
+ PointG1(0x1, Spec.P - 2)
+ PointG2(
(
Spec.P - 2,
0x45000000000000000000000000000000000000000000000001,
),
(
0x07B55DE1642362D16B8FC4DCCFEC9E794D24968511CF8E252ED27AFC4D72CA1E,
0x0301CB4D7E0B7B52A6A8F78613C403EAD1543FEDB0D3F28C77685FDB9EAA2742,
),
),
),
pytest.param(
PointG1(0x1, Spec.P - 2)
+ PointG2(
(
(Spec.P >> 8) << 8,
0x5B0045000000000000000000000000000000000000000000000001,
),
(
0x112006831F3F0E121585C21CDF0AAF63F09728BCFEE141BB4CD407CAAE7715E3,
0x19DF1E217AD7B1F874726C6683AB87B423C1737F46A54DC5356A9B617C6B9E28,
),
)
+ PointG1(0x1, Spec.P - 2)
+ PointG2(
(
0x5B0045000000000000000000000000000000000000000000000001,
Spec.P - 2,
),
(
0x218C0CEF2A606613357BFAA3C880E71FF8490195337FA26205A21CCD9A6949A3,
0x13FED2C79ADD9D85B9949C5852EF8CCCF02B69EA6FC4DB0D1660AC7B50DF39E1,
),
),
),
pytest.param(
PointG1(0x1, Spec.P - 2)
+ PointG2(
(Spec.P - 2, 0x2),
(
0x0833E47A2EAA8BBE12D33B2DA1A4FA8D763F5C567FE0DA6C5C9DA2E246F2096F,
0x28DC125BF7443BC1826C69FE4C7BF30C26EC60882350E784C4848C822726EB43,
),
),
),
pytest.param(
PointG1(0x1, Spec.P - 2)
+ PointG2(
(Spec.P - 2, 0x2),
(
0x0833E47A2EAA8BBE12D33B2DA1A4FA8D763F5C567FE0DA6C5C9DA2E246F2096F,
0x28DC125BF7443BC1826C69FE4C7BF30C26EC60882350E784C4848C822726EB43,
),
)
+ Spec.INF_G1
+ PointG2(
(Spec.P - 2, 0x2),
(
0x0833E47A2EAA8BBE12D33B2DA1A4FA8D763F5C567FE0DA6C5C9DA2E246F2096F,
0x28DC125BF7443BC1826C69FE4C7BF30C26EC60882350E784C4848C822726EB43,
),
)
+ PointG1(0x1, Spec.P - 2)
+ PointG2(
(Spec.P - 2, 0x2),
(
0x0833E47A2EAA8BBE12D33B2DA1A4FA8D763F5C567FE0DA6C5C9DA2E246F2096F,
0x28DC125BF7443BC1826C69FE4C7BF30C26EC60882350E784C4848C822726EB43,
),
)
+ Spec.INF_G1
+ PointG2(
(Spec.P - 2, 0x2),
(
0x0833E47A2EAA8BBE12D33B2DA1A4FA8D763F5C567FE0DA6C5C9DA2E246F2096F,
0x28DC125BF7443BC1826C69FE4C7BF30C26EC60882350E784C4848C822726EB43,
),
),
),
pytest.param(
PointG1(0x1, Spec.P - 2)
+ PointG2(
(
Spec.P - 2,
0x45000000000000000000000000000000000000000000000001,
),
(
0x07B55DE1642362D16B8FC4DCCFEC9E794D24968511CF8E252ED27AFC4D72CA1E,
0x0301CB4D7E0B7B52A6A8F78613C403EAD1543FEDB0D3F28C77685FDB9EAA2742,
),
)
+ PointG1(0x1, Spec.P - 2)
+ PointG2(
(
Spec.P - 2,
0x45000000000000000000000000000000000000000000000001,
),
(
0x07B55DE1642362D16B8FC4DCCFEC9E794D24968511CF8E252ED27AFC4D72CA1E,
0x0301CB4D7E0B7B52A6A8F78613C403EAD1543FEDB0D3F28C77685FDB9EAA2742,
),
)
+ PointG1(0x1, Spec.P - 2)
+ PointG2(
(
Spec.P - 2,
0x45000000000000000000000000000000000000000000000001,
),
(
0x07B55DE1642362D16B8FC4DCCFEC9E794D24968511CF8E252ED27AFC4D72CA1E,
0x0301CB4D7E0B7B52A6A8F78613C403EAD1543FEDB0D3F28C77685FDB9EAA2742,
),
),
),
pytest.param(
PointG1(
0x003DB26A0B244FB3FD47F7F5F0F8A289E088FD932D340F0592696503FC621248,
0x24C9B9423EF04336563ADC35604BA729A4C9E6104BFCB55517E3198B8EDBDF98,
)
+ PointG2(
(
0x1800DEEF121F1E76426A00665E5C4479674322D4F75EDADDDE46BD5CD992F6ED,
0x198E9393920D483A7260BFB731DD5D25F1AA493335A9E71297E485B7AEF312C2,
),
(
0x0B9F1099ECEFA8B45575D349B0A6F04C16D0D58AF9007F2C6D8BD7AA763A3B0E,
0x0B7C77862FE8D10D489A493A1A5C5D0F282C7D4E8148F340653C4B6297A1088F,
),
)
+ PointG1(
0x003DB26A0B244FB3FD47F7F5F0F8A289E088FD932D340F0592696503FC621248,
0x24C9B9423EF04336563ADC35604BA729A4C9E6104BFCB55517E3198B8EDBDF98,
)
+ PointG2(
(
0x198E9393920D483A7260BFB731DD5D25F1AA493335A9E71297E485B7AEF312C2,
0x1800DEEF121F1E76426A00665E5C4479674322D4F75EDADD46DEBD5CD992F6ED,
),
(
0x2BA3E0CAB22EFBFEF96E027F1A29BA7EC11A0F824024A3787D3CB8370B9EED71,
0x103CE48DAC2E3FF691B61C7E4466ADF35AA183AADE7F15386BF7C789628B1B0E,
),
),
),
pytest.param(
PointG1(
0x01EA6E2EAE2A2501D6830A3F5EA1353A5F920719AAEEEA537DDE0DF31BEC7A80,
0x2B40433B22AAAEC8F6D6D21DC04994AB99BA4A4B16545F63430A6ECF01881E09,
)
+ PointG2(
(
0x4000000000000000000000000000000000000000000000000000000,
0x196EC634C6397F591EBEE925F9FA9E89A1FA55BA5E38D5CB0F7DCFA49E0C0AE4,
),
(
0x260377B5B8FED1C2F2A2F848038464FFC8C3BD1D71844FCC85F64B478248B21D,
0x0990A17D0F06D3BB026B17967CC55B2160D7570FDE6A448502BD28E8192DB67E,
),
)
+ PointG1(
0x01EA6E2EAE2A2501D6830A3F5EA1353A5F920719AAEEEA537DDE0DF31BEC7A80,
0x05240B37BE86F160C1797398C137C3B1FDC72046521D6B29F9161D47D6F4DF3E,
)
+ PointG2(
(
0x4000000000000000000000000000000000000000000000000000000,
0x196EC634C6397F591EBEE925F9FA9E89A1FA55BA5E38D5CB0F7DCFA49E0C0AE4,
),
(
0x260377B5B8FED1C2F2A2F848038464FFC8C3BD1D71844FCC85F64B478248B21D,
0x0990A17D0F06D3BB026B17967CC55B2160D7570FDE6A448502BD28E8192DB67E,
),
)
+ PointG1(0x1, 0x2)
+ PointG2(
(
0x0D7D3BE95C6B1FC7D70F2EDC7B7BF6E7397BC04BC6AAA0584B9E5BBC064DE4FA,
Spec.P - 0x1D8A9F8B4C998A61149D6C,
),
(
0x10FB4E584F10053CBA1117D920DB188F54D1AB64E66E10B6177401A44C71E250,
0x20F50C6423205B18D96CDF7A832041D89076CF36DCDE6700E62833186ACD60B6,
),
)
+ PointG1(0x1, 0x2)
+ PointG2(
(
0x0D7D3BE95C6B1FC7D70F2EDC7B7BF6E7397BC04BC6AAA0584B9E5BBC064DE4FA,
Spec.P - 0x1D8A9F8B4C998A61149D6C,
),
(
0x10FB4E584F10053CBA1117D920DB188F54D1AB64E66E10B6177401A44C71E250,
0x20F50C6423205B18D96CDF7A832041D89076CF36DCDE6700E62833186ACD60B6,
),
),
),
pytest.param(
PointG1(
0x0272AF94B7AEB772C1666DB65FF3987FD8EC43B8454AAD395232B5EEF18CA2C5,
0x1D5FC6B50EF577096EC2489356E8ECCCD5ED5A144928C5338AF5549701DBB40D,
)
+ PointG2(
(
0x255495FFBA02A0ED6877A0A6ED658C93A1487A3319AAA05934E35BBB953673AF,
0x279573FBFE8E6C2300000000000030640472E131A029B85045,
),
(
0x090D17C2EAEDA0D61DD0442997D161E176FB98A27091FE8B6B5746FE2F344A0F,
0x26F1F16556D24506AF1FD1C8CB4B3B6DFA73E2CE958C50E3B937FD59A1DF623F,
),
)
+ PointG1(
0x0272AF94B7AEB772C1666DB65FF3987FD8EC43B8454AAD395232B5EEF18CA2C5,
0x130487BDD23C2920498DFD232A986B90C194107D1F490559B12B377FD6A1493A,
)
+ PointG2(
(
0x255495FFBA02A0ED6877A0A6ED658C93A1487A3319AAA05934E35BBB953673AF,
0x279573FBFE8E6C2300000000000030640472E131A029B85045,
),
(
0x090D17C2EAEDA0D61DD0442997D161E176FB98A27091FE8B6B5746FE2F344A0F,
0x26F1F16556D24506AF1FD1C8CB4B3B6DFA73E2CE958C50E3B937FD59A1DF623F,
),
)
+ PointG1(0x0, Spec.P)
+ PointG2(
(0xFCFF0000000000000000000000, 0x0),
(
0x212A3B4059E59D125DD17F662945170E1E13024FAE97A401895690ACAC63CF68,
0x1AECB67409D1D9C142FFD13375BD79FD0457DEB278DFA91B5756378FB837FD60,
),
),
),
pytest.param(
PointG1(
0x03A99966A8DB46602AC05B8F0D7669C3BC066FB7B9A188CC79E5239E27E35805,
0x187EFF52E2187FF10F48D49A005DBEDE1F243E64CE508737F5B52BB1A997BEFA,
)
+ PointG2(
(0x0, 0xBF000000000000000000),
(
0x1284BDD8E69832B232222D3493A6ABB523575BE2A5AF6E88F5501CEF408AA5BB,
0x0CA4D5B3C58E0BC7BE2C8885E53C673B54F3057CFF97CB1020CB2F5A9F61AFFB,
),
)
+ PointG1(
0x03A99966A8DB46602AC05B8F0D7669C3BC066FB7B9A188CC79E5239E27E35805,
0x17E54F1FFF192038A907711C8123997F785D2C2C9A214355466B60652EE53E4D,
)
+ PointG2(
(
0x00C662006274FB346E22EEB59635C82CB4E20E34DA7230644E72E131C82CB4E2,
0x104E75A20B64000000000000000000150000000000000000006629C731,
),
(
0x270EF2EA6F8C3DAD3832F95F309CB6A1591AD53AF025C6E0809992F15234E5FE,
0x1B37771CE3BB5A62017C56C496E57673E2617634E900C587724D21F24E603A63,
),
)
+ Spec.INF_G1
+ PointG2(
(0x0, 0x800),
(
0x104E75A20B641566A0C71C9069A5256391AA31E22021D36C037C108DFB79C662,
0x00BF257AE3D66A589214F980A2AE34F9544BE2FCBCC13B21F4C1642F31AA4D20,
),
)
+ Spec.INF_G1
+ PointG2((0x0, 0x0), (0x8000000, 0x0)),
),
pytest.param(
PointG1(
0x06E42BC7EB32A979B39A77435202C2A062C8BEF977F46500B040FA35B8A45B23,
0x15CA114B0522BDD5E928F9629ED2A283D36141F3307071CAD74FB768721CBB0E,
)
+ Spec.INF_G2
+ PointG1(
0x06E42BC7EB32A979B39A77435202C2A062C8BEF977F46500B040FA35B8A45B23,
0x1A9A3D27DC0EE253CF274C53E2AEB5D9C420289E380158C264D0D4AE66604239,
)
+ PointG2(
(
0x1000000000000000000,
0x1611179006BEFD3749602129813BD7247045AC58EA0000000100000000000000,
),
(
0x202A170A4A4385BDCEFBE36ADE6CC7C0E9834B78FC6CA233E8DE345A2D5782DC,
0x1699F57DEAACB74E8B98BD8532C3F152570DB884FC1755FBC0C8CB3EF54A537F,
),
)
+ PointG1(
0x26C6E104E6C30ED077379B1762D05AC66A6D8E1BB0699FF4F8E3FA52568F0F77,
0x09179C965E45C4F28E2EE2AFFB9B86744B8F29DF08357DC80776ECEDE39ADC7F,
)
+ PointG2(
(
0x221276DFFF5B3A2B6A46EC6C0E0891AEFD121170D8361187B73B46E1C6B1218F,
0x29255D7955576BBA25241EC1EDFDFC08C9B8D29379D4213025FA95B0DBDD1646,
),
(
0x0FF9FDFCCCDA82FB0DD8F17931E05823321073A1A4E484699ACDC9D0F14EA6F6,
0x0C25B531FED0C7E8899296888CC0B27FBB6DBFC2041D482E21D908E240772A23,
),
)
+ PointG1(
0x26C6E104E6C30ED077379B1762D05AC66A6D8E1BB0699FF4F8E3FA52568F0F77,
0x09179C965E45C4F28E2EE2AFFB9B86744B8F29DF08357DC80776ECEDE39ADC7F,
)
+ PointG2(
(
0x221276DFFF5B3A2B6A46EC6C0E0891AEFD121170D8361187B73B46E1C6B1218F,
0x29255D7955576BBA25241EC1EDFDFC08C9B8D29379D4213025FA95B0DBDD1646,
),
(
0x0FF9FDFCCCDA82FB0DD8F17931E05823321073A1A4E484699ACDC9D0F14EA6F6,
0x0C25B531FED0C7E8899296888CC0B27FBB6DBFC2041D482E21D908E240772A23,
),
)
+ PointG1(
0x26C6E104E6C30ED077379B1762D05AC66A6D8E1BB0699FF4F8E3FA52568F0F77,
0x09179C965E45C4F28E2EE2AFFB9B86744B8F29DF08357DC80776ECEDE39ADC7F,
)
+ PointG2(
(
0x221276DFFF5B3A2B6A46EC6C0E0891AEFD121170D8361187B73B46E1C6B1218F,
0x29255D7955576BBA25241EC1EDFDFC08C9B8D29379D4213025FA95B0DBDD1646,
),
(
0x0FF9FDFCCCDA82FB0DD8F17931E05823321073A1A4E484699ACDC9D0F14EA6F6,
0x0C25B531FED0C7E8899296888CC0B27FBB6DBFC2041D482E21D908E240772A23,
),
)
+ PointG1(
0x26C6E104E6C30ED077379B1762D05AC66A6D8E1BB0699FF4F8E3FA52568F0F77,
0x09179C965E45C4F28E2EE2AFFB9B86744B8F29DF08357DC80776ECEDE39ADC7F,
)
+ PointG2(
(
0x221276DFFF5B3A2B6A46EC6C0E0891AEFD121170D8361187B73B46E1C6B1218F,
0x29255D7955576BBA25241EC1EDFDFC08C9B8D29379D4213025FA95B0DBDD1646,
),
(
0x0FF9FDFCCCDA82FB0DD8F17931E05823321073A1A4E484699ACDC9D0F14EA6F6,
0x0C25B531FED0C7E8899296888CC0B27FBB6DBFC2041D482E21D908E240772A23,
),
),
),
pytest.param(
PointG1(
0x0A96696A78E6818DA746C504A8B83F7A3FAEA0DFEE0A2C52751F3CFAE5FE979B,
0x017A319DCE2D1976671EDDD5B909781C102E5EED5C40DB00BDBD19A14397B889,
)
+ PointG2(
(
0x198E9393920DAEF312C20B9F1099ECEFA8B45575D349B0A6F04C16D0D58AF900,
0x1800DEEF121F1E76426A00665E5C4479674322D4F75EDADDDE46BD5CD992F6ED,
),
(
0x05A7A5759338C23CA603C1C4ADF979E004C2F3E3C5BAD6F07693C59A85D600A9,
0x22376289C558493C1D6CC413A5F07DCB54526A964E4E687B65A881AA9752FAA2,
),
),
),
pytest.param(
PointG1(
0x0CDC335FA81DFF303B71CFFB0256D7097C2B4C6715CA7B1589EA9386A41C2F85,
0x1E4077B7C1F3374BBD4750ED222848C47501B40FC4C11EADD3C39AEAFA452459,
)
+ PointG2(
(0x0, 0x10000000000000000000000000000),
(
0x1F1CD7F247F2AE1BA9A1AEB4B32ED4C8C13C70C8861B6AB5340E276C58E1046B,
0x13D7DE2B557E0AE2B53380AD596BA79F07C037C9D9AA17CF407E9ED86201436E,
),
)
+ PointG1(
0x0CDC335FA81DFF303B71CFFB0256D7097C2B4C6715CA7B1589EA9386A41C2F85,
0x1223D6BB1F3E68DDFB08F4C95F590F99227FB681A3B0ABDF685CF12BDE37D8EE,
)
+ PointG2(
(0x0, 0x10000000000000000000000000000),
(
0x1F1CD7F247F2AE1BA9A1AEB4B32ED4C8C13C70C8861B6AB5340E276C58E1046B,
0x13D7DE2B557E0AE2B53380AD596BA79F07C037C9D9AA17CF407E9ED86201436E,
),
)
+ PointG1(0x1, Spec.P - 2)
+ PointG2(
(
Spec.P - 2,
0x45000000000000000000000000000000000000000000000001,
),
(
0x07B55DE1642362D16B8FC4DCCFEC9E794D24968511CF8E252ED27AFC4D72CA1E,
0x0301CB4D7E0B7B52A6A8F78613C403EAD1543FEDB0D3F28C77685FDB9EAA2742,
),
)
+ PointG1(
0x12EE4836F908E5E39090A4124B75F3EC5B665A729997F55CDEA80F76AB940C59,
0x02A12BA6400116479DCF5179E4D06471A65E72229FB444B34D8F07458A4A8157,
)
+ PointG2(
(0xFFFFFFFF << 184, 0xFFFFFFFF << 184),
(
0x00FB55BF7DF894A746FBE20B6F8C54D5DC0D9FD4EDA4742FC35100C45E6E27F9,
0x12A20D63D446EB175733853B88DD36708EB7A81F5C79E7659C3A6E2B2C470077,
),
),
),
pytest.param(
PointG1(
0x0D1E4322F03FA0515F8ED6CB02B15E5A024B5092003DD7792D2AC055F14AC67D,
0x155C53A1DAA56E3A5E9BD097CEBFCD44038F2C606C8951310AAE0EA01A447253,
)
+ PointG2(
(
0x279573FBFE8E6C2300000000000030640472E131A029B85045,
0x255495FFBA02A0ED6877A0A6ED4684235053C04CC3AAA05934E35BBB953673AF,
),
(
0x0E1CEC4C9D6D3921992E4C5C71523F5D097CDE90F25B3E6C52C9C63E764A6787,
0x0FE0CFE24E0B2F78D4F909C9131E3794FA911B1109DF4A567B1423475CF409C1,
),
)
+ PointG1(0x0, Spec.P)
+ PointG2(
(0xFCFF0000000000000000000000, 0x0),
(
0x212A3B4059E59D125DD17F662945170E1E13024FAE97A401895690ACAC63CF68,
0x1AECB67409D1D9C142FFD13375BD79FD0457DEB278DFA91B5756378FB837FD60,
),
),
),
pytest.param(
PointG1(
0x0E474956B0FBC11BA65F3C7632AFB3C66A98340871CEE7C974DB4461D8791B8D,
0x25410E545457AF7BB0E9D2F1F8126180F11DEC9BFCF69CD2934E6814741C9AA2,
)
+ PointG2(
(
0x231E75FDDF7E2FA8B38B7DD6FD13EB4B70460000000000000000000002006500,
0x2546AC8393E836A297,
),
(
0x0D312FC0AC642C207B5B36E17990B4F7D0EF39CFE6F0D46B9C556A0B7935714B,
0x1E4CD9FD726048138DCDEA456203D4B7414F3BA5EF7B37817AA98874D71C191F,
),
)
+ PointG1(
0x2E5EFCB149C6A4914B8D85BE71E79254F9FDF19F62DE2B2F6CC0822E578A420F,
0x07FD874051CB395CA999E596047A25FC6BC12CBA97DAB578F9F903612C1C757F,
)
+ PointG2(
(
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
0x1800DEEF121F1E76426A00665E5C4479674322D4F75EDADD46DEBD5CD992F6ED,
),
(
0x090689D0585FF075EC9E99AD690C3395BC4B313370B38EF355ACDADCD122975B,
0x12C85EA5DB8C6DEB4AAB71808DCB408FE3D1E7690C43D37B4CE6CC0166FA7DAA,
),
),
),
pytest.param(
PointG1(
0x102C9AFAA6AC9D2553D0F47E2A945816F56B10014DDCC00EF63F5CDA3D143102,
0x0DB583622C614B32310911623E2F71F7871413D13DC372ACE97F1813D2622D59,
)
+ PointG2(
(
0x0A0E124CD6005B33C8A16492B1B451897B1679F44F3D288585EC8F82B49F6F50,
0x1579CD1AA3FB1BF108C6B7B5D1F4AE1FAE44099A8BF5FDDC74D87665E29812BA,
),
(
0x0D5DB514CA1C318CC409BCBF9A75055B1A8E7B783127734D902B6118B518EE96,
0x2F24A2ABDA945E843C6952A5F0632365146CFD4E2034B70E41A78772FC404BEA,
),
)
+ PointG1(
0x102C9AFAA6AC9D2553D0F47E2A945816F56B10014DDCC00EF63F5CDA3D143102,
0x22AECB10B4D054F7874734544351E666106D56C02AAE57E052A17403061ACFEE,
)
+ PointG2(
(
0x0A0E124CD6005B33C8A16492B1B451897B1679F44F3D288585EC8F82B49F6F50,
0x1579CD1AA3FB1BF108C6B7B5D1F4AE1FAE44099A8BF5FDDC74D87665E29812BA,
),
(
0x0D5DB514CA1C318CC409BCBF9A75055B1A8E7B783127734D902B6118B518EE96,
0x2F24A2ABDA945E843C6952A5F0632365146CFD4E2034B70E41A78772FC404BEA,
),
),
),
pytest.param(
PointG1(
0x111F95E1632A3624DD29BBC012E6462B7836EB9C80E281B9381E103AEBE63237,
0x2B38B76D492B3AF692EB99D03CD8DCFD8A8C3A6E4A161037C42F542AF5564C41,
)
+ PointG2(
(
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
0x1A76DAE6D3272396D0CBE61FCED2BC532EDAC647851E3AC53CE1CC9C7E645A83,
),
(
0x05B993046905746641A19B500EBBBD30CF0068A845BFBEE9DE55B8FE57D1DEE8,
0x243EF33537F73EF4ACE4279D86344D93A5DC8C20C69045865C0FA3B924933879,
),
),
),
pytest.param(
PointG1(
0x11C8F0EA735E099781F852FB93256540C7C7611BA324F67680F3DBFC00BBDDA1,
0x2D7FB8D83E13AFA4EA8A9D8817CD5B7C5B1804AA1006AF2A8AB7E9C7757B300C,
)
+ PointG2(
(
0x040000002DB3759AAFF5357156BC2E8D52EACD11EFB7D108D3B4034162839A93,
0x300000000000000000000000000000000000000000003100000000,
),
(
0x0649EBC27A3909E089C6023C7ED952098A3E5547CE56E79953929BA4D718F131,
0x1C2C7E752E7947B506C14A8300A0D15D9022BD6FBA67461CC8A0783DFEBA77FB,
),
)
+ PointG1(
0x11C8F0EA735E099781F852FB93256540C7C7611BA324F67680F3DBFC00BBDDA1,
0x02E4959AA31DF084CDC5A82E69B3FCE13C6965E7586B1B62B168A24F6301CD3B,
)
+ PointG2(
(
0x040000002DB3759AAFF5357156BC2E8D52EACD11EFB7D108D3B4034162839A93,
0x300000000000000000000000000000000000000000003100000000,
),
(
0x0649EBC27A3909E089C6023C7ED952098A3E5547CE56E79953929BA4D718F131,
0x1C2C7E752E7947B506C14A8300A0D15D9022BD6FBA67461CC8A0783DFEBA77FB,
),
),
),
pytest.param(
PointG1(
0x12CA97E893996E5BB392C57ABBA4578276654D2856B336B640EAFD84DE31140E,
0x055370544625EA3C3E85A42831DCAF47353695B158149BC2D5BF4061326F089E,
)
+ PointG2(
(
0x0E80426227CE5FD647AFBA497E7EA7A2687E956E978E3572C3DF73E9278302B9,
0xC451F8749A,
),
(
0x05602FDE384569BE9950C3466D0FB40A66A63F202C3A685856CD21C76CEA2BE7,
0x0ED4F367E657BC59C785BF6BF6AC33FB4B653E8BD68D1D838E0416E8C47B5F53,
),
)
+ PointG1(
0x12CA97E893996E5BB392C57ABBA4578276654D2856B336B640EAFD84DE31140E,
0x2B10DE1E9B0BB5ED79CAA18E4FA4A916624AD4E0105D2ECA66614BB5A60DF4A9,
)
+ PointG2(
(
0x0E80426227CE5FD647AFBA497E7EA7A2687E956E978E3572C3DF73E9278302B9,
0xC451F8749A,
),
(
0x05602FDE384569BE9950C3466D0FB40A66A63F202C3A685856CD21C76CEA2BE7,
0x0ED4F367E657BC59C785BF6BF6AC33FB4B653E8BD68D1D838E0416E8C47B5F53,
),
),
),
pytest.param(
PointG1(
0x1425B11B4FE47A394DBFC0AD3E99DC93C3E1C0980B9BCB68529BA9DE33DBF585,
0x168B8CDFF7AE7D084FD111608FA03E018B415FD4F0755F7E8F039A2D852BDA0E,
)
+ PointG2(
(
0x5B00,
0x149BB18D1ECE5FD647AFBA497E7EA7A2687E956E978E3072C4FC9EC579B80946,
),
(
0x2061EBAFFAEDC532D8BB542F9D93CAE5DC6C4B431833EE0A7BE4D053E2E0D60D,
0x03C12E282E4442C88F5235D004E8EDBA3080754CA41C976D03CD332A9B6FA42D,
),
)
+ PointG1(
0x1425B11B4FE47A394DBFC0AD3E99DC93C3E1C0980B9BCB68529BA9DE33DBF585,
0x19D8C192E9832321687F3455F1E11A5C0C400ABC77FC6B0EAD1CF1E953512339,
)
+ PointG2(
(
0x149BB18D1ECE5FD647AFBA497E7EA7A2687E956E978E3572C4FC9EC579B80946,
0x5B00,
),
(
0x29E864B516B661105D0A2708F21BEAAE1BF1636608AC53864C4D8F0EA2E7DC38,
0x05C3B957CAA8F4C5F248E3E6E754304E9BA7E5B6DD3A4ECE125F47811A525E65,
),
),
),
pytest.param(
PointG1(
0x1565586940BBB0E082639A1E2C9ECFE96BFF6CBDA25A93C4D462B83602300672,
0x19767D96DD90432F459BF8F6181C9FEA507BF7BCD4063FD070FE8E72093E8BF9,
)
+ PointG2(
(0xE8, 0x0),
(
0x23812D70E97CFD777C5CF0B64B18400F3EA88AFB56146BFC1F34071EEBB05998,
0x27352C710F0E1711B5D18E672B5CAB3C369CD8D84B70ED159BB712C7D929C8E5,
),
)
+ PointG1(
0x1565586940BBB0E082639A1E2C9ECFE96BFF6CBDA25A93C4D462B83602300672,
0x16EDD0DC03A15CFA72B44CC06964B873470572D4946B8ABCCB21FDA4CF3E714E,
)
+ PointG2(
(
0x252B5EC0E7DF7DF26D0CC46DD811ACE847A4174AA634C8D9269CCEBB52845D78,
0x29A0FE67466554BC0A6C97089DEC1EBAC672344BC3A69B8FC6904F9B83438CBB,
),
(
0x24C159CDA85A7F7E04F7E128101E8FBE502FEE784946FFCE0A9174424F0254B2,
0x2B0C8AC28082E97EAE5EE175AE2C1A6E466C7DD693238A386EC80F7743FFC517,
),
),
),
pytest.param(
PointG1(
0x17956B549321B92C524D191A62B90C81F08E694AF4DCEB00A80094E53120D39E,
0x2FD15D78815388959CAA54AFFA2D7B2C8D52C528E6A1F6C0A50FCF0498FAC7EE,
)
+ PointG2(
(
0x30644E72E131A029000000000000000000000000000000004000000000000000,
0x0,
),
(
0x016B9E28A32EE61A7AD5BD4BAD29D64FC35A8FB46B510BE2067907069497AE1F,
0x0C3C07C40F41A731FE27D953F1154B4E9A8ACF3EF44608817150DE0DF916503A,
),
),
),
pytest.param(
PointG1(
0x17956B549321B92C524D191A62B90C81F08E694AF4DCEB00A80094E53120D39E,
0x2FD15D78815388959CAA54AFFA2D7B2C8D52C528E6A1F6C0A50FCF0498FAC7EE,
)
+ PointG2(
(
0x30644E72E131A029000000000000000000000000000000004000000000000000,
0x0,
),
(
0x016B9E28A32EE61A7AD5BD4BAD29D64FC35A8FB46B510BE2067907069497AE1F,
0x0C3C07C40F41A731FE27D953F1154B4E9A8ACF3EF44608817150DE0DF916503A,
),
)
+ PointG1(
0x17956B549321B92C524D191A62B90C81F08E694AF4DCEB00A80094E53120D39E,
0x2FD15D78815388959CAA54AFFA2D7B2C8D52C528E6A1F6C0A50FCF0498FAC7EE,
)
+ PointG2(
(
0x30644E72E131A029000000000000000000000000000000004000000000000000,
0x0,
),
(
0x016B9E28A32EE61A7AD5BD4BAD29D64FC35A8FB46B510BE2067907069497AE1F,
0x0C3C07C40F41A731FE27D953F1154B4E9A8ACF3EF44608817150DE0DF916503A,
),
)
+ PointG1(
0x17956B549321B92C524D191A62B90C81F08E694AF4DCEB00A80094E53120D39E,
0x2FD15D78815388959CAA54AFFA2D7B2C8D52C528E6A1F6C0A50FCF0498FAC7EE,
)
+ PointG2(
(
0x30644E72E131A029000000000000000000000000000000004000000000000000,
0x0,
),
(
0x016B9E28A32EE61A7AD5BD4BAD29D64FC35A8FB46B510BE2067907069497AE1F,
0x0C3C07C40F41A731FE27D953F1154B4E9A8ACF3EF44608817150DE0DF916503A,
),
),
),
pytest.param(
PointG1(
0x17AC723D48C98FCE706845B61C254630ACB6DA96A9620FC6CD07276A4EF8936D,
0x1A515B7E403D2A46BB5387138F17D33C2B12E3D5051F9D22042921F35031035E,
)
+ PointG2(
(0x10000000000000000000000000000000000000000000000000000, 0x0),
(
0x2D8AD25DC006EEA79B9C052A6A367B209D5C9215C8A4C325555A7E1E608ABED0,
0x22DD54ED23382326A8DF674C7BE35D7AC181C9625A10F508DD7FBD109760D762,
),
)
+ PointG1(
0x17AC723D48C98FCE706845B61C254630ACB6DA96A9620FC6CD07276A4EF8936D,
0x1612F2F4A0F475E2FCFCBEA2F26985216C6E86BC63522D6B37F76A23884BF9E9,
)
+ PointG2(
(
0x062CA96B10A86BE7BC151A74E01170193F2AD046C2F5EB3A25A95592CC3A1775,
0x2043C18FE0A47868239575B1C3700BE7308890370EB6982F4E3E36916EBC28F5,
),
(
0x2B7D22180BE2BDCA69028C5BF32181D203B2350781D675098B320766F5DCD9B0,
0x2A21AA3010F604FEA531E9264671D546CC94D8A0DDAB42B7146573F5C1ED26FB,
),
),
),
pytest.param(
PointG1(
0x1838CCF8D820349A8C38A57DC0A5495577898E422509E4C9636E9737FE0DCD91,
0x16F566A30B7D2579FD6109EB09D66C005FDCCDC0D91B28F43BE34C5668F34F81,
)
+ PointG2(
(
0x2A9A64F273FA329BC9C98FF2083C627609E2219177B9C5DF7286AF31A3B27E81,
0x20D85101E1E6AF0126C00A95C645B192B3EA69ED72297DEAC1FBB0E6BD1440C6,
),
(
0x00EC155AB3CD58005B488308578AAEEAEAE9C65939F785BF693FA5763C174DD6,
0x24D3B2ADB35AD17933D0317A00436D10F2D6908FAF109E7FE3DB77A39D5C1711,
),
)
+ PointG1(
0x175BCEC7C4C77C612DF588174DD44362722F7B8E588A0EF599129CF123F63B8D,
0x2E1FF6C569E5CB0D20FB28504057D4F7ED248900AC99BD0F31A853AF5C10A806,
)
+ PointG2(
(
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
0x1800DEEF121F1E76426A00665E5C4479674322D4F75EDADD46DEBD5CD992F6ED,
),
(
0x090689D0585FF075EC9E99AD690C3395BC4B313370B38EF355ACDADCD122975B,
0x12C85EA5DB8C6DEB4AAB71808DCB408FE3D1E7690C43D37B4CE6CC0166FA7DAA,
),
)
+ PointG1(0x1, Spec.P - 2)
+ PointG2(
(
0x1800DEEF121F1E76426A00665E5C4479674322D4F75EDADD46DEBD5CD992F6ED,
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
),
(
0x1CC9A9EB823F8D97ADEE0206828C9F19EAF8F536C23207D68AE3D056A1480BB2,
0x1990DDB90388B94F31089D3B4FF594D5449C04FCDF2A3681017B5D7749367BA1,
),
)
+ PointG1(0x1, Spec.P - 2)
+ PointG2(
(
0x1800DEEF121F1E76426A00665E5C4479674322D4F75EDADD46DEBD5CD992F6ED,
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
),
(
0x1CC9A9EB823F8D97ADEE0206828C9F19EAF8F536C23207D68AE3D056A1480BB2,
0x1990DDB90388B94F31089D3B4FF594D5449C04FCDF2A3681017B5D7749367BA1,
),
),
),
pytest.param(
PointG1(
0x1BBEFDB0536C0996D663A908ADC2CAE17180C53D971E73FE234A6927CD10DA33,
0x2481152785517C274B2DC4AB7B6CACBBDC7D7B8E4DD396FAA05A119761130E5C,
)
+ PointG2(
(
0x039A49879C785FD647AFBA497E7EA7A2687E956E978E3572C3DF73E9278302B9,
0x194B9757129492217D64C4B267E5E935137AE3859EC8B99CF6E6DC61CA90BDFD,
),
(
0x1C67B6B637C528053A25079E25734A67FFC5388209D11839B3FF1F92591C81EE,
0x09750D9BC6FDB71F16E6A69EEA50E7288AAC1C25A5CD674CA9C57D8AC06FAC69,
),
)
+ PointG1(
0x1BBEFDB0536C0996D663A908ADC2CAE17180C53D971E73FE234A6927CD10DA33,
0x0BE3394B5BE024026D22810B0614ABA1BB03EF031A9E33929BC67A7F7769EEEB,
)
+ PointG2(
(
0x039A49879C785FD647AFBA497E7EA7A2687E956E978E3572C3DF73E9278302B9,
0x194B9757129492217D64C4B267E5E935137AE3859EC8B99CF6E6DC61CA90BDFD,
),
(
0x1C67B6B637C528053A25079E25734A67FFC5388209D11839B3FF1F92591C81EE,
0x09750D9BC6FDB71F16E6A69EEA50E7288AAC1C25A5CD674CA9C57D8AC06FAC69,
),
)
+ PointG1(
0x29A0D6D5E7D14A774C3ABFF1435361DA2EE5D8B4F3EE62085CE779F248B41D4A,
0x2FD37AE5468F6A17B7F9A0BCCA02EE128BDCED61402A566E4EEE2D0FA825F03D,
)
+ PointG2(
(
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
0x1800DEEF121F1E76426A00665E5C4479674322D4F75EDADD46DEBD5CD992F6ED,
),
(
0x090689D0585FF075EC9E99AD690C3395BC4B313370B38EF355ACDADCD122975B,
0x12C85EA5DB8C6DEB4AAB71808DCB408FE3D1E7690C43D37B4CE6CC0166FA7DAA,
),
),
),
pytest.param(
PointG1(
0x1BBF3321BFDF76E22CA0E95089338A772A4A2982DBEDE2571C14A258BD9874FF,
0x2B5AA74EFA3429CD77ACC68BD2E487960F34074D3A725444B06A552C1BE0CA44,
)
+ PointG2(
(
0x2471FA6C0785556DACBE4D9570FA9E89A2FA55BA5E38D5CB0F7DCFA49E0C0AE4,
0x181B42BBB36F2BB465708C62B0BD12AE5D6922CF5C4F928A7097F8DB8F0DFAE3,
),
(
0x103E85DDEFBE5900DED1384BADBC32C907C50BAA4282172D02562116005AECDF,
0x2CCE8D04251B64CED66CC7B66A1C54000E17872B10B4793F5BD81052E5EF3E5C,
),
)
+ PointG1(
0x1BBF3321BFDF76E22CA0E95089338A772A4A2982DBEDE2571C14A258BD9874FF,
0x0509A723E6FD765C40A37F2AAE9CD0C7884D63442DFF76488BB636EABC9C3303,
)
+ PointG2(
(
0x2471FA6C0785556DACBE4D9570FA9E89A2FA55BA5E38D5CB0F7DCFA49E0C0AE4,
0x181B42BBB36F2BB465708C62B0BD12AE5D6922CF5C4F928A7097F8DB8F0DFAE3,
),
(
0x103E85DDEFBE5900DED1384BADBC32C907C50BAA4282172D02562116005AECDF,
0x2CCE8D04251B64CED66CC7B66A1C54000E17872B10B4793F5BD81052E5EF3E5C,
),
)
+ PointG1(
0x00710C68E1B8B73A72A289422D2B6F841CC56FE8C51105021C56AE30C3AE1ACA,
0x0B2FF392A2FC535427EC9B7E1AE1C35A7961986788CF648349190DD92E182F05,
)
+ PointG2(
(
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
0x1800DEEF121F1E76426A00665E5C4479674322D4F75EDADD46DEBD5CD992F6ED,
),
(
0x090689D0585FF075EC9E99AD690C3395BC4B313370B38EF355ACDADCD122975B,
0x12C85EA5DB8C6DEB4AAB71808DCB408FE3D1E7690C43D37B4CE6CC0166FA7DAA,
),
)
+ PointG1(
0xBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE,
0xBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE,
)
+ PointG2(
(
0xBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE,
0xBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE,
),
(
0xBEFDBEBEBEBEABC689BEBEBEBE43BE92BE5FBEBEBEBEBEBEBEBEBEBEBEBEBEBE,
0xBEBEBEBEBEBEBEBEBE9EBEBEBE2ABEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE,
),
),
),
pytest.param(
PointG1(
0x1C4189BBFE590521DA71E6834B73A622528FD923E9421F18DF9A48E9123B16AA,
0x15C8E4948927F2E089ACCB33C8D51B4C83CA69505F4A7801399573273D743991,
)
+ PointG2(
(0x8000, 0x8000),
(
0x23AD956E40F22F18BF59310F6D23055F2A3FDC2713F05CF1B099A18041CD4982,
0x20B15BB64C3C6223098439E4FC7E9B2BD956ED94B2BF1F066C281D41C8560EE5,
),
)
+ PointG1(
0x1C4189BBFE590521DA71E6834B73A622528FD923E9421F18DF9A48E9123B16AA,
0x1A9B69DE5809AD492EA37A82B8AC3D1113B701410927528C028B18EF9B08C3B6,
)
+ PointG2(
(0x8000, 0x8000),
(
0x23AD956E40F22F18BF59310F6D23055F2A3FDC2713F05CF1B099A18041CD4982,
0x20B15BB64C3C6223098439E4FC7E9B2BD956ED94B2BF1F066C281D41C8560EE5,
),
),
),
pytest.param(
PointG1(
0x1C934D642C245E76EB0C016B17E8ECED3A1CF56EF6D787EACE40BC0CB933DEA9,
0x02567D6E1141F67673E6F17A705F3D9764C6D5673F1F93E2ED5A21FD38E9A572,
)
+ PointG2(
(0x0, 0x770000000000000000000000),
(
0x1F3953D0D836A44E15AEBEF16DD187CCF9493693379FE7D1C5A2CF2DEB87F89C,
0x0DD737C063475FC587C1574A8FF4E9E4F933118D67BB7BA4A70C79C1CCB0D344,
),
)
+ PointG1(
0x1C934D642C245E76EB0C016B17E8ECED3A1CF56EF6D787EACE40BC0CB933DEA9,
0x2E0DD104CFEFA9B34469543C11221AC632BA952A295236AA4EC66A199F9357D5,
)
+ PointG2(
(0x0, 0x770000000000000000000000),
(
0x1F3953D0D836A44E15AEBEF16DD187CCF9493693379FE7D1C5A2CF2DEB87F89C,
0x0DD737C063475FC587C1574A8FF4E9E4F933118D67BB7BA4A70C79C1CCB0D344,
),
),
),
pytest.param(
PointG1(
0x1CED814234531C29AA14F95E3A3F59657AACEA69FA4C35DFA5B8E03C87E80757,
0x25C3327A2C4F61437D53ABBB2BB75DC1DC4F2427C3E9D7714D5D83DAE8069769,
)
+ PointG2(
(
0x0EC85B4F8A9224B27145B3757B7BF6E7397BC04C8634404D924689E27BB8A261,
0xBF89,
),
(
0x0E717255B589C7286F7BDE23FE6AC9D838262D9E7BA5BC603E410ABF27AADA5B,
0x1760BBDB5183AE4E28F049CFE75FB9600B8FD03E63D9AA1A9BD709D23AFBC12F,
),
)
+ PointG1(
0x1CED814234531C29AA14F95E3A3F59657AACEA69FA4C35DFA5B8E03C87E80757,
0x0AA11BF8B4E23EE63AFC99FB55C9FA9BBB324669A487F31BEEC3083BF07665DE,
)
+ PointG2(
(
0x0EC85B4F8A9224B27145B3757B7BF6E7397BC04C8634404D924689E27BB8A261,
0xBF89,
),
(
0x0E717255B589C7286F7BDE23FE6AC9D838262D9E7BA5BC603E410ABF27AADA5B,
0x1760BBDB5183AE4E28F049CFE75FB9600B8FD03E63D9AA1A9BD709D23AFBC12F,
),
),
),
pytest.param(
PointG1(
0x1F9D02FA71D0AE244EDC79709AF68216D99A978A5E8FD92EBE793FFF8317AAD4,
0x2CD6A493D88A0A87A6F6818C23FA87FF12FD84E5641E1081E849F6E88A488A43,
)
+ PointG2(
(
0x04BB53B8977E5F92A0BC372742C48309445CD3CFA9A62AEE49F8130962B4B3B9,
0x203E205DB4F19B37B60121B83A7333706DB86431C6D835849957EDF0509DE152,
),
(
0x1F544B5E4AB6D13DCB7E89582AAEE12A8410A7C6B2D8A5DE7BD83E8CDB1FB1A8,
0x2BAEF43E095CAAF7C2ACA272AEE277D1DA98D74656F2CA01B833C67DCC08CA5D,
),
)
+ PointG1(0x1, Spec.P - 2)
+ PointG2(
(
0x5B0045000000000000000000000000000000000000000000000001,
Spec.P - 2,
),
(
0x218C0CEF2A606613357BFAA3C880E71FF8490195337FA26205A21CCD9A6949A3,
0x13FED2C79ADD9D85B9949C5852EF8CCCF02B69EA6FC4DB0D1660AC7B50DF39E1,
),
),
),
pytest.param(
PointG1(
0x225FDAB8FE6CD876363D27075CDF0D01C209DA61B1634B574A5D811CFAE40700,
0x1216B7C3E2ADC07C3BEF31771C7BB9E1D02F07FF3A5B74953C4FD5BF9A7A6DFF,
)
+ PointG2(
(
0x25F63FCC543337B8F6275F97D6479633B921541A96E0F2ACAF901BC25DB7407C,
0x206776F9480168741ECA625C06E5526B4664A02CE664BC656F39664D96278B6E,
),
(
0x1E40E8084FD648BA315F691E8367BE1D4C13844421C87223D84829C31A0D7AFE,
0x24B8042D4CB604AE66C0DC97CA8A9C2D22C743335D92BC401700F6B00D5CDC5B,
),
)
+ PointG1(
0x2A4F1DBC9FE6D2882462FB11AFEAE7B7F2A0CF213B1F19C45CB222336283F380,
0x1141763C897C9A90E387EA80F68EB88C2D79AAB680196D9538CD2CA632A5E81B,
)
+ PointG2(
(
0x0E540F5B5BE91F82ED05349750761224F543068CE30D2D5E838BF66866F34520,
0x0FA5AC8C46F725E54505019BDA3356EF6E35B0A89B9B4F79BB0C62211235C931,
),
(
0x2E6D97A1F7E0428FC0BE6BE02C811095F5166710DCBE869C36A8EF89CAC63E01,
0x2657BBAF3BCFD106DD677EEF03172F693A6C919776F441DC0FD47A4BD91D0487,
),
),
),
pytest.param(
PointG1(
0x22847A3CD1CB28B60A51B54991D6DD86D206AA12B3873942C45A120B2E63A492,
0x26C3889C7B08D9288F13F64E6E3F166C59F57B5C014CBECF815A4ABA4EBABBFB,
)
+ PointG2(
(
0x2E91F2B0F4F7A42C870FE8F6236EC1042BDEB2586A641808A5E09019514E83A0,
0x2B078A1F12CB5426B6BCFEB9548566AFB4BDF7454190EAF97F63E210F3A94CE1,
),
(
0x008A9EDE8DDE2C849793027433D90C626BC326BDC248DC223F537F7152955DAC,
0x00B319B7060AD49091D9B52015B4AE8085BF6739B7F5A2C098C2F113FF33806A,
),
)
+ PointG1(
0x22847A3CD1CB28B60A51B54991D6DD86D206AA12B3873942C45A120B2E63A492,
0x26C3889C7B08D9288F13F64E6E3F166C59F57B5C014CBECF815A4ABA4EBABBFB,
)
+ PointG2(
(
0x2E91F2B0F4F7A42C870FE8F6236EC1042BDEB2586A641808A5E09019514E83A0,
0x2B078A1F12CB5426B6BCFEB9548566AFB4BDF7454190EAF97F63E210F3A94CE1,
),
(
0x008A9EDE8DDE2C849793027433D90C626BC326BDC248DC223F537F7152955DAC,
0x00B319B7060AD49091D9B52015B4AE8085BF6739B7F5A2C098C2F113FF33806A,
),
),
),
pytest.param(
PointG1(
0x26581613E6C802822867D2B3A0867FD7FD8CEA503764AE1A9D01EC0D5364D1BE,
0x0530AE3D4FE87AC76DA4382835135AC0AEC9B1ECD0705CF84C21B48327EADE54,
)
+ PointG2(
(
0x07A13E1BE6F9072893C0E5BB528C5CC22DD6370308DDA1613068E064C6E5D15A,
0x067239C795D2EA27B85D93E54FC221D81E9DE3EBC8E43C20D63608E7078FAB68,
),
(
0x22FA7EA234E21AEC74F4DB0B365AE1E7CC6E7F4AAC89BC460D0308B83399BE86,
0x27705B19388EBEDDBD35A5CE72830EC07E3F1BCA3F4E9FDC0AEBAAB5A1FE91B1,
),
)
+ PointG1(
0x26581613E6C802822867D2B3A0867FD7FD8CEA503764AE1A9D01EC0D5364D1BE,
0x2B33A035914925624AAC0D8E4C6DFD9CE8B7B8A498016D94EFFED793B0921EF3,
)
+ PointG2(
(
0x07A13E1BE6F9072893C0E5BB528C5CC22DD6370308DDA1613068E064C6E5D15A,
0x067239C795D2EA27B85D93E54FC221D81E9DE3EBC8E43C20D63608E7078FAB68,
),
(
0x22FA7EA234E21AEC74F4DB0B365AE1E7CC6E7F4AAC89BC460D0308B83399BE86,
0x27705B19388EBEDDBD35A5CE72830EC07E3F1BCA3F4E9FDC0AEBAAB5A1FE91B1,
),
),
),
pytest.param(
PointG1(
0x28100E22DF4DC1C6BF8801F63FFDEF2AF6BFB80147994395BE6DC792479CA4F5,
0x17414E05AC69D56DEC03E0AF314645B463414A7D831AFF54459B6D409351A5A4,
)
+ PointG2(
(
0x2851FD14FBAA7FD586E3039A2D9FA136C42685CB2B5904BF0591B95B52FC,
0x0,
),
(
0x24D852A54E2D52FFC43B2E4F1993FD159AE7EC19AF2F3AD548F6DAA33BD0DE31,
0x0B0FABBC2F33EA444E5F3C92269F11FC30C048463973A914A6787DBD616E703E,
),
)
+ Spec.INF_G1
+ PointG2(
(
0x198E9393920D483A7260BFB731FB5D25F1AA493335A9E71297E485B7AEF312C2,
0x1800DEEF121F1E76426A00665E5C4479674322D4F75EDADD46DEBD5CD992F6ED,
),
(
0x090689D0585FF075EC9E99AD690C3395BC4B313370B38EF355ACDADCD122975B,
0x12C85EA5DB8C6DEB4AAB71808DCB408FE3D1E7690C43D37B4CE6CC0166FA7DAA,
),
),
),
pytest.param(
PointG1(
0x299A5917ADB7B45C30CEA045EDAA623F5036280DF176F4A2C751CA728C2C9E3A,
0x2BEDF30BA7D8BD0814E9D091913EA5BC6A4B60EE993E949507832DF601906519,
)
+ PointG2(
(0x10000000, 0x0),
(
0x213D689AF09B7F52AC4A04C34BCDB2F90521B1CD213EDCFE48FA3063520B6BE2,
0x2EF0F3110EA3051248E907221493E6C2943EBE8D70794188A515EC23DF5D9B2B,
),
)
+ PointG1(
0x299A5917ADB7B45C30CEA045EDAA623F5036280DF176F4A2C751CA728C2C9E3A,
0x04765B673958E321A3667524F042B2A12D3609A2CF3335F8349D5E20D6EC982E,
)
+ PointG2(
(0x10000000, 0x0),
(
0x213D689AF09B7F52AC4A04C34BCDB2F90521B1CD213EDCFE48FA3063520B6BE2,
0x2EF0F3110EA3051248E907221493E6C2943EBE8D70794188A515EC23DF5D9B2B,
),
),
),
pytest.param(
PointG1(
0x299A5917ADB7B45C30CEA045EDAA623F5036280DF176F4A2C751CA728C2C9E3A,
0x2BEDF30BA7D8BD0814E9D091913EA5BC6A4B60EE993E949507832DF601906519,
)
+ PointG2(
(0x10000000, 0x0),
(
0x213D689AF09B7F52AC4A04C34BCDB2F90521B1CD213EDCFE48FA3063520B6BE2,
0x2EF0F3110EA3051248E907221493E6C2943EBE8D70794188A515EC23DF5D9B2B,
),
)
+ PointG1(
0x299A5917ADB7B45C30CEA045EDAA623F5036280DF176F4A2C751CA728C2C9E3A,
0x04765B673958E321A3667524F042B2A12D3609A2CF3335F8349D5E20D6EC982E,
)
+ PointG2(
(0x10000000, 0x0),
(
0x213D689AF09B7F52AC4A04C34BCDB2F90521B1CD213EDCFE48FA3063520B6BE2,
0x2EF0F3110EA3051248E907221493E6C2943EBE8D70794188A515EC23DF5D9B2B,
),
)
+ PointG1(
0x299A5917ADB7B45C30CEA045EDAA623F5036280DF176F4A2C751CA728C2C9E3A,
0x2BEDF30BA7D8BD0814E9D091913EA5BC6A4B60EE993E949507832DF601906519,
)
+ PointG2(
(0x10000000, 0x0),
(
0x213D689AF09B7F52AC4A04C34BCDB2F90521B1CD213EDCFE48FA3063520B6BE2,
0x2EF0F3110EA3051248E907221493E6C2943EBE8D70794188A515EC23DF5D9B2B,
),
),
),
pytest.param(
PointG1(
0x29C19B11665CBEB0FD496542E6115CEEF9B628AB4BC7419802E7016CF1B2C931,
0x057CDBEC3F7C2AD0F4DA33B3CFD3234EA29F71C6C46B8B90EB2D4A5851ADF74B,
)
+ PointG2(
(
0x00BB00B95E1B59FCA2159A5F33F27F36B15FE6BCDA0B1EE0381B0EF7DD804BD6,
0x25ED3C1A0120B6531E39CCA6F67F35F9A849CFBFE958CC1840D1C20CC6B3E1AD,
),
(
0x08CBBA5815581DCEA62FA0426DBFF39C8F0E9FDC451B1FB127A4E7A4C0587996,
0x19068E06466A9DD7543AC89D53A17A8BEB6C11C59C3AF32EA0C1BBC55E0FAE7B,
),
)
+ PointG1(
0x2C52AB9E7E9296183B9695387E3AE3D06C9D11A98676E4E046914B36B636DDC4,
0x050ABC3606826F8AEAAC5AA7BE9F44D15A55805037EB2B260C32D43BD32ADEF1,
)
+ PointG2(
(
0x0763B017BC2777AC81FF30FFF09F65381C24912BFC9D1490A23765B4830F0AAE,
0x2B71C998ABC367AD761DA7E9900EB7E579989F82EEE3338C17B8DC17E53E052B,
),
(
0x21E242369877673070A6B8B0307DA6E84E32BDFB3EB09D514B25E8704BD55D43,
0x1782C07D2D471AF10469A13476A49EC51D1BC538D49BBAF85A63FDB6B412FB4A,
),
)
+ PointG1(
0x1BC85B155EEE2E33BF5322810C7C0150158F373E998316EDF821AE9804A2AC19,
0x1899A5E18C57F4E6B5F736C2F21E95F4147A4235ED2C1F6E6615EB0E00979F09,
)
+ PointG2(
(
0x20568D8F3B2F2D0A6A596EA20B3E62191BAF420DE10125557F9A665900A82A59,
0x25A43A697CEAA9DEBA01A97D8722815E8185973A402E11FDCA62FA908DA409C4,
),
(
0x054081D5B9D0E3AA18A31CC5F9D0FA925205FD50A71EDF4CA157A607587E2457,
0x1C9CACF3B3D821146083F9E5FE6BE23546643E3AD4540A1F02C02728010A4B9F,
),
)
+ Spec.INF_G1
+ PointG2(
(
Spec.P - 0x725A44E7,
0x4500000000000000000000000107B55DE1642362D16B8FC4DC,
),
(
0x2215436159D2BDB4E084A6C63BD04F6B84D69BFAD793DA72C21B421F3F89B22F,
0x22B811A1A4FA51DF281657F0B0A1ADD382FAB768AC1ED8886BF979E2BF11402D,
),
),
),
pytest.param(
PointG1(
0x2DEB529E45720F20BE41088DFD7489C315E9E18FE23DD1C8A8183295DC770DEE,
0x1090B3FCD1898780C332B7D73A602CADD1B26029124DB9DA19941250EDA890B5,
)
+ PointG2(
(0xFF0A69A42C284614E3D7DE26B3F9B2F3C71FF6, 0x0),
(
0x1E2C7F9D6A525B6AF5DAD683C5E6408661DA29780860C3209B2DDDCAD5A88795,
0x033123665850406FC2428227BBB3509FC71C911CF41623DE1605CD3E0A281B90,
),
)
+ PointG1(
0x2DEB529E45720F20BE41088DFD7489C315E9E18FE23DD1C8A8183295DC770DEE,
0x1090B3FCD1898780C332B7D73A602CADD1B26029124DB9DA19941250EDA890B5,
)
+ PointG2(
(0x275680008DED35BA000000, 0x0),
(
0x19367FE97B92D85D7C29090C2313DE1A85F030239CFA71F939A197249CB17B89,
0x0465A8498153883ACA20E4DE66AC02B1B6957FAB9B4BCE71DF334CD6BEE5FF95,
),
),
),
pytest.param(
PointG1(
0x2DEB529E45720F20BE41088DFD7489C315E9E18FE23DD1C8A8183295DC770DEE,
0x1090B3FCD1898780C332B7D73A602CADD1B26029124DB9DA19941250EDA890B5,
)
+ PointG2(
(0xFF0A69A42C284614E3D7DE26B3F9B2F3C71FF6, 0x0),
(
0x1E2C7F9D6A525B6AF5DAD683C5E6408661DA29780860C3209B2DDDCAD5A88795,
0x033123665850406FC2428227BBB3509FC71C911CF41623DE1605CD3E0A281B90,
),
)
+ PointG1(
0x2DEB529E45720F20BE41088DFD7489C315E9E18FE23DD1C8A8183295DC770DEE,
0x1090B3FCD1898780C332B7D73A602CADD1B26029124DB9DA19941250EDA890B5,
)
+ PointG2(
(0x275680008DED35BA000000, 0x0),
(
0x19367FE97B92D85D7C29090C2313DE1A85F030239CFA71F939A197249CB17B89,
0x0465A8498153883ACA20E4DE66AC02B1B6957FAB9B4BCE71DF334CD6BEE5FF95,
),
)
+ PointG1(
0x2DEB529E45720F20BE41088DFD7489C315E9E18FE23DD1C8A8183295DC770DEE,
0x1090B3FCD1898780C332B7D73A602CADD1B26029124DB9DA19941250EDA890B5,
)
+ PointG2(
(0x275680008DED35BA000000, 0x0),
(
0x19367FE97B92D85D7C29090C2313DE1A85F030239CFA71F939A197249CB17B89,
0x0465A8498153883ACA20E4DE66AC02B1B6957FAB9B4BCE71DF334CD6BEE5FF95,
),
)
+ PointG1(
0x2DEB529E45720F20BE41088DFD7489C315E9E18FE23DD1C8A8183295DC770DEE,
0x1090B3FCD1898780C332B7D73A602CADD1B26029124DB9DA19941250EDA890B5,
)
+ PointG2(
(0x275680008DED35BA000000, 0x0),
(
0x19367FE97B92D85D7C29090C2313DE1A85F030239CFA71F939A197249CB17B89,
0x0465A8498153883ACA20E4DE66AC02B1B6957FAB9B4BCE71DF334CD6BEE5FF95,
),
),
),
],
ids=lambda _: "invalid_g2_subgroup_",
)
def test_invalid_g2_subgroup(
state_test: StateTestFiller,
pre: Alloc,
post: dict,
tx: Transaction,
) -> None:
"""Test invalid g2 subgroup inputs to the ecpairing precompile."""
state_test(
env=Environment(),
pre=pre,
tx=tx,
post=post,
)