Files
2026-05-27 23:03:00 +08:00

346 lines
54 KiB
Go

// Package bn256 ..
package bn256
import "math/big"
// 256*4*4*4 = 16K
var curverBasePrecompted8 = []*curvePoint{ // nolint
{gfP{0}, gfP{0x1a9064d81caeba83, 0xde0d6cb4e5851124, 0x29fc54b00a7138ba, 0x49bffffffd5c590e}, gfP{0}, gfP{0}},
{gfP{0x22e935e29860501b, 0xa946fd5e0073282c, 0xefd0cec817a649be, 0x5129787c869140b5}, gfP{0xee779649eb87f7c7, 0x15563cbdec30a576, 0x326353912824efbf, 0x7215717763c39828}, gfPOne, gfPOne},
{gfP{0x95ca1bb919a322eb, 0xc4d13c49d672e273, 0x4797255d41bb8c0f, 0x1ebf8f510af182d0}, gfP{0x1d74935661933d97, 0x10deb64252136a02, 0xee16c808be654172, 0x28187964a641c5d3}, gfPOne, gfPOne},
{gfP{0x22b50a53643b5e18, 0x9925f2f496c29484, 0x63e092df2137c75a, 0x44f8b7668f3dfe88}, gfP{0x7c4714cfb557d50, 0x682c1e8f295b6779, 0x8e87d2562714a0be, 0xa4b7662d47a1fb97}, gfPOne, gfPOne},
{gfP{0xba28d1e3d5048a4a, 0x304272c35402c713, 0x69e99637e85352dc, 0x8700ed2483b0b77b}, gfP{0x969534adc499393c, 0x5e8df13a66ad38f0, 0x8f0df437dbc29dcb, 0xa08db36b5f08d049}, gfPOne, gfPOne},
{gfP{0xa343996a7367c29d, 0xe96e87ea23df0d62, 0xddf5f38d18e96a63, 0x5098ee53e76f8e35}, gfP{0x97c267182697b1ee, 0xe867e6ea877b42e0, 0x320ca334328006be, 0xa8739bc600caf504}, gfPOne, gfPOne},
{gfP{0x112fb240f96cb07c, 0x318df722aa440595, 0x1ab5ec6703a61625, 0x878907dfc54b5ca9}, gfP{0x183a961c7faaacf4, 0xd5007f6ccaaa2917, 0x9575750bcb725b69, 0x9403e61886d2bac2}, gfPOne, gfPOne},
{gfP{0xecdde15b0285058f, 0xcc0e59ba3c87dcaf, 0x619836fa9bc27c3f, 0x36d9c0af2af6f957}, gfP{0x5dce98f96958261, 0x80a52fb92984a952, 0xef7f3ff1ef4938d8, 0x3a2823202a28283b}, gfPOne, gfPOne},
{gfP{0x4e0b75ceaf4a2887, 0xc3841acb67fb189a, 0x18c9578469741c9a, 0x692fab8164cee33f}, gfP{0xfaf6b1c1b91ffbb, 0x2161e01d6794e678, 0x757e6f30473f2d5f, 0x269bd35f64914a96}, gfPOne, gfPOne},
{gfP{0x213c9bd8e08c3c3f, 0x63a16fce2a85abe, 0x3f42d40a72cd11f0, 0x8f1fc73f06dd64d}, gfP{0x9453e2983440bb1b, 0x2f2407c95345ca17, 0x681a6b7635efdb6b, 0xa884f4aa644e5fc4}, gfPOne, gfPOne},
{gfP{0x8c421ac5ecba0343, 0x101d2e9b67b0f4ee, 0x3fafcfad92789f5a, 0x64642f323001a421}, gfP{0xa781b10be5989c03, 0xe9996e4b3cd51cb7, 0x8a35b2c52f42274d, 0xacc965059aa5cd5b}, gfPOne, gfPOne},
{gfP{0xc0d9fc893046aba7, 0x1362b9f9a10d4b07, 0xa50705ad82675e37, 0x5fd6ab1801c54945}, gfP{0xa079a2a53e55cd40, 0xf6cb313d402e5eb0, 0x98a6fdf0253fe446, 0x5d25905331b5b3f3}, gfPOne, gfPOne},
{gfP{0x4e0c47ce11cc2bea, 0xde09108ddb55ad9d, 0x8504aa303c428c24, 0x907addcb5c32e071}, gfP{0xffa66d4b19f624a4, 0x52dc7449d50bad3, 0x4b083d71488917b, 0x3865bfdad0f204db}, gfPOne, gfPOne},
{gfP{0x497fb9cad2bc9918, 0x74ab6701d62a870d, 0x89e7a0f78a5b300f, 0x7efa2b1d3899556b}, gfP{0xc3455af447763054, 0x952ddb2149fe6482, 0x17e3e7cc10b1028a, 0x2376b0d03a4d0a19}, gfPOne, gfPOne},
{gfP{0xf88bf6055451bbc2, 0x8d565d103a596a91, 0x89658fa5f00563f3, 0x4f086a996709429f}, gfP{0x66d510275e67c25d, 0x93e1627f86978a5e, 0x9ea7f8c713662129, 0x9d201c6a4266a161}, gfPOne, gfPOne},
{gfP{0xbeb026037146dbb8, 0x1444acca1e6ec560, 0x7f28198c42c9040e, 0x889fc8063c4bc1bd}, gfP{0xa9b908acc0ae21e8, 0x116775ec23c04db9, 0x185774aab2ba5c8f, 0x2b6c5c862e0df140}, gfPOne, gfPOne},
{gfP{0x46b8b8692a8eda6b, 0xe98400d89a9938b2, 0x2f6f8c3aa958752e, 0x87928e7b21296dff}, gfP{0xc578f06244de1eb7, 0xf67910a8d1befa71, 0x313c89849f89483b, 0x285df6a6b5c9f283}, gfPOne, gfPOne},
{gfP{0x99f991c62f896dc2, 0xca48dec99b12a0ca, 0x47979262c298eaff, 0x4e7325f6fee9c93a}, gfP{0x4a621d37ab703864, 0x22ea8d68bccdc8e7, 0x1872c133d0d4ed44, 0x8f83b2400eea2c5e}, gfPOne, gfPOne},
{gfP{0xc19b639f19c89b81, 0xbe23b5be678be2f6, 0xb3aaabb6975aab05, 0x2cec49b56009d525}, gfP{0x36a8845062c2be08, 0x9c230ea63ae3ecca, 0xee334b537db2c198, 0x63d9bc37e670df81}, gfPOne, gfPOne},
{gfP{0x2d567d811d344cda, 0xdb950f96df6a67d5, 0x6aa7a52e38415b5d, 0xa3bbbbea127c8d19}, gfP{0x250c55b431c9ff5, 0x788b71cfa722d91d, 0x1b7ff8f263f7e058, 0x19e07e2e11d3c799}, gfPOne, gfPOne},
{gfP{0xa48c4767ad45f7fa, 0xe4e180d4073c21b5, 0x606a49caaf4e22e0, 0x824b6a4d362cb4ab}, gfP{0x123813621182b89e, 0xf02b168a564ca3f7, 0x5946559985a31a8a, 0x83898fb99a58ae51}, gfPOne, gfPOne},
{gfP{0xd8ce0f64e4ff7789, 0x56a63f768bf4dfd6, 0x70c98904775436b2, 0x53cac0d685e11505}, gfP{0xfad84ab4c6cd3523, 0xa3a9aa3de679b3b6, 0x62dc68e29df06692, 0x165cb89486b919bd}, gfPOne, gfPOne},
{gfP{0xbc063c49d27436f4, 0x119334185d04c00a, 0x5c594c453bf29d17, 0x7be93482f4d6bad9}, gfP{0xf1388389af5af70b, 0x6ef88fafc3dbd925, 0xd0dab7df96b102ae, 0x7729f40268a44371}, gfPOne, gfPOne},
{gfP{0x48366c8fef21e70a, 0xb6bdc599cad5b296, 0xc266da496d7a1404, 0x8c25ba2ebadcfd39}, gfP{0x5c4ef2925ff4e88c, 0xf2b74b199450ac63, 0x4051bd06b5872f70, 0xaecc1319fcd16799}, gfPOne, gfPOne},
{gfP{0xf60e5b5fe3819130, 0x4830068ec8b0e199, 0x24b318b6ff94d5fc, 0x80c741851155f73}, gfP{0x54e7078f8bac638c, 0xa5c3470027b932ba, 0xc2e539fc817c91b5, 0xaa43e8d515eb4a7c}, gfPOne, gfPOne},
{gfP{0x7b506fc61ddfd6ec, 0x4e632e9298b40b2d, 0xa43f822c58d2a7ed, 0x1bbc9e5ce1eb4ee0}, gfP{0x8edff18d25e883a3, 0xc72fb0fbc31bb149, 0x753ef7688bd5023b, 0x3c67b97fc7ed8488}, gfPOne, gfPOne},
{gfP{0x30fc6ad3ebd49d9f, 0x1d686366dc98bd38, 0xab8db50a5aee31a7, 0x586bd3c5b99f378}, gfP{0x54ce3fdbe76e1035, 0x12fc82b1c534bcfd, 0x4fd44f4d8bd614ef, 0x3ad2b84e895120cd}, gfPOne, gfPOne},
{gfP{0x4e2752dfcef9a7b1, 0x29ee26be7d1dc039, 0x498723beacca21cb, 0x4dd1216cd612d819}, gfP{0xecf91550e64f05db, 0xbfd127755f5584df, 0xda25e36c32b07282, 0x80c4bd0f27d04818}, gfPOne, gfPOne},
{gfP{0xeaaffb627720c7e0, 0x406b37eae3fc85ef, 0x73f3ae81e3e1bb9a, 0x515131669b5f34d3}, gfP{0x851172e39f098ea1, 0xeb700aae74e621b6, 0x1250f804737e2ffc, 0x3f64202e3c2471f9}, gfPOne, gfPOne},
{gfP{0xebca04ef2e690c80, 0x1743bb12cc939039, 0x1bd9c7045064ea4a, 0x57cf7f70c75d7c43}, gfP{0x28d1a0e85f17ca2d, 0x6f5488b94b7cf41a, 0x46c513898c82c77c, 0x108b7158e1af75b}, gfPOne, gfPOne},
{gfP{0xe47e9bf0ef164509, 0xb7f3c26d59054e84, 0xc3aa94875c7f8b15, 0x8021e363d66a23ac}, gfP{0xe0a58a2ef919b471, 0x136500be029f8032, 0x1d00062ef3b0927f, 0x2139140a5be88669}, gfPOne, gfPOne},
{gfP{0x6967658082b3212c, 0xa53c40b72cd997c9, 0x6820179490ffb5aa, 0x97cb3e002e6c383e}, gfP{0x8ecc4a2ccbe4be7b, 0x2733aac0fa4d64d3, 0x82771ac33f03c391, 0x658a1cfd726cd85b}, gfPOne, gfPOne},
{gfP{0x881f1dfd166cd3c1, 0xd308eac84be917c8, 0xf5b6207a3992b980, 0x261ae33ba5f17e39}, gfP{0xbe638db9fd976a70, 0xb7619dd3949f24e9, 0x56518e2b24e07ede, 0xa77bfab0e221f51d}, gfPOne, gfPOne},
{gfP{0x9320230398a59e3e, 0xe4653faed943ea9a, 0xa67cc03ee268cddb, 0xaca53dab149ca84c}, gfP{0x8805fdee234fba5d, 0xa6c57d16a76e7bd, 0x93f72c93b7b50870, 0x61f4ff4d499f2224}, gfPOne, gfPOne},
{gfP{0x5aa749b0a053d5ec, 0xe989c59830162157, 0xa58c960ce6cdfd15, 0x74868ad561f95d32}, gfP{0x8d5aa4b4640a5307, 0xda75bcdfac06e18c, 0xcc0467e2cfdaba6c, 0x673644fdbb0cb089}, gfPOne, gfPOne},
{gfP{0xca842194aff45433, 0xea3cc076db5cdf3c, 0x668d48a59ea1b825, 0x78ed978fa0134cee}, gfP{0x186a0d74dcc6c73c, 0x39fc9c4ec0d2384a, 0xa9e4feb0678e0da1, 0x7a75fa1ee6018144}, gfPOne, gfPOne},
{gfP{0xd78a3c59ef7f1986, 0x6659ccc0c16abffb, 0x2e9ed6a476a57e8e, 0x2c252b5c0a72cb2f}, gfP{0xa5c4bbb1b6af7b10, 0xb06c5b6e7324f7bf, 0x1a0a1f6714b34074, 0xb22cad4f3a54689f}, gfPOne, gfPOne},
{gfP{0x8a324f2f8bfffa23, 0xb4d694d0f269607e, 0xa50ce3e9170bc6f8, 0x29b9224c74185802}, gfP{0x77ed167bc69d4cb9, 0x86089a8cc90f62b8, 0x43a327a1eb0fbcb2, 0x60f5dff2805841be}, gfPOne, gfPOne},
{gfP{0x3a2270d001db2320, 0xa8bab01612daa280, 0xf5aebe1efa734eab, 0xcf7d26649b8e098}, gfP{0xe413aa47f5db8e9b, 0xb92c3b03dc76820f, 0xed606d81174d73fb, 0x74e637c051d960bc}, gfPOne, gfPOne},
{gfP{0x94a203140becf139, 0x615d0c1a9209fd80, 0xd15401f67b8766ce, 0xa81adfc4d904de0b}, gfP{0xe636bec345e6f9b3, 0xb01cc79c5ca91750, 0xae8334a81ac560cf, 0x76f212cbdb2f69d4}, gfPOne, gfPOne},
{gfP{0xc88d68fd9db1c411, 0x113922e3aebfcb57, 0x56104db14f59b8b3, 0x1a978fb2fdd65680}, gfP{0x2232a99fcf41f354, 0xccfd83f1670ab665, 0x999957f9258485fd, 0x59f80b1e0eb01af6}, gfPOne, gfPOne},
{gfP{0x8badc0707b3e0f03, 0x45281f18b7f2e0f7, 0x60fd788812a2882a, 0xd41befcc5d24be3}, gfP{0x522cef4a0397fdf1, 0xd3cfaa924a7af62b, 0x53939b3f87762ba9, 0x6b6e72b8e9c9cb59}, gfPOne, gfPOne},
{gfP{0x13ea6f5d2bdd3a39, 0x92af44598a10365a, 0x22fc94fe947ac0fe, 0xb5714e95e84acf99}, gfP{0xb647673d1ee38529, 0x7e183dcd41859746, 0x776698b19f585432, 0x4cc5626601296793}, gfPOne, gfPOne},
{gfP{0xe078f6b73682aac5, 0xa0d16d7aee10e620, 0x75c4963e4ee2f8d1, 0x70d50c991fb423e8}, gfP{0x413bd39ebf905c02, 0xa624e1a1c323d263, 0x3d6db3cd89f8260a, 0x8d5f5fc35a3096fe}, gfPOne, gfPOne},
{gfP{0x906ff875b036c48c, 0xa61b4272083f58e5, 0x426c509d0f1f14cc, 0x125c5c1b652f56f9}, gfP{0x61662d9facf98736, 0x13b8cf4fda8f0ab2, 0xa04392a5ed43919a, 0x7138c6281dc8a358}, gfPOne, gfPOne},
{gfP{0xc1f5a1ec1d4a931f, 0xb55f483542b73d0b, 0x34c38a1bf02c78a0, 0x2e00f1cc14f4f38b}, gfP{0xc1a65107d4b21963, 0x4d1db32627ba25cf, 0x5c9082c451fc4977, 0x963d57c398a03486}, gfPOne, gfPOne},
{gfP{0x1e8eda93473168b3, 0x6630e072cda89c59, 0xceba69050e0855e9, 0x68c4432ffe681d8a}, gfP{0x953d607e1f132456, 0xaa5e328f36c3a309, 0x86c4e579a9803d1b, 0xb62fd3beaaf64aeb}, gfPOne, gfPOne},
{gfP{0xdbed084684a66484, 0x3b0a02f572b175ab, 0xab13dc306c2675f, 0x9d55879efe55c5e5}, gfP{0xf285db494a98699c, 0xafda167292cf1207, 0x919de983868de3d0, 0x93fa7e6e88295714}, gfPOne, gfPOne},
{gfP{0x1134adde63f354d2, 0x55b6d0b3f39881fa, 0x6de4786017d9c995, 0x510df70152e82884}, gfP{0xd916ade24b2b030f, 0x9f45606cf95f4f7d, 0x4d62435110d74125, 0x78104e21338f37a9}, gfPOne, gfPOne},
{gfP{0xfef164af9aa2d8f4, 0xf5e6ea027ac1a9d2, 0x74755029091bdd71, 0x3c8dc342834b6518}, gfP{0x70edfa49ae738118, 0x713ad62ae7ed4ef, 0xd40b554945e4f69f, 0x2a6082a27fc5b177}, gfPOne, gfPOne},
{gfP{0x71d58474b98c32cd, 0x318253354b0aea62, 0x6d650c5da40ab7b0, 0x21b309b555fcd0e2}, gfP{0x6b9d317bce5eed71, 0x76d6e0faa15c7ff7, 0x26e540e1b80321a5, 0x730fd3e881c02854}, gfPOne, gfPOne},
{gfP{0xbd86c27cf80f6eb8, 0x9d7a96ab828f4085, 0xc8787877318d7942, 0x7890355636f2b16a}, gfP{0x262dc2e60119c80, 0x52e671c9018dcacd, 0xb31f80b5a48723b4, 0x2a4d24a583ae6a05}, gfPOne, gfPOne},
{gfP{0xbf1ef20fb065e1e9, 0xf24cc32a1fa5e9b1, 0x6dd3a83d684e952e, 0x3c6a7c37bb5ff605}, gfP{0xdf3213c7541c232a, 0x7d6c66f945245fb, 0x3a235d3ec742e8b7, 0xac6d5793c8ca9309}, gfPOne, gfPOne},
{gfP{0x188eae4d41449632, 0xc7e0beee046c3874, 0xf8a54dad78a545fa, 0x8bfdeac61a6199e}, gfP{0xc0d0cb8b06894629, 0xbc6371c53bb38c52, 0x5c2dc825dbbef484, 0x171a1406bad6cde8}, gfPOne, gfPOne},
{gfP{0xeb8fec3a236d5d0, 0x36827277856bec43, 0xf7946475abbf523a, 0x6ecd8484079ea6fe}, gfP{0xe37e11c6b099e7b2, 0x36e39126b3c91f05, 0xda27ae3216198eb5, 0xf843d69554f0559}, gfPOne, gfPOne},
{gfP{0xf4cee0c56e48fc36, 0x538a9996f233a292, 0x9ac7d480d869f7b5, 0x75dfff19190fad6f}, gfP{0x5917496cf5ad5f3b, 0x45376fb74448fb0a, 0xcdb41afc9ae5cb6e, 0x1bae67a5941c2095}, gfPOne, gfPOne},
{gfP{0x76b60749b85fc866, 0x79ccfff2d4eea1d1, 0x35e3ae6013927f78, 0xc48a87b01fd6f2c}, gfP{0xcc231463ece30029, 0x7c545f1b1c2bdceb, 0xf837b31e6da665e9, 0xad58175b15733602}, gfPOne, gfPOne},
{gfP{0xba8a7e6fbcd62b67, 0x9b1a134874e29946, 0xd63ac7be2a3fa56c, 0xaa2c408f5ac16bf8}, gfP{0x8f585d07996aedbe, 0xa279a032be82e745, 0x1c52f3871cf97906, 0x39d17f442217e279}, gfPOne, gfPOne},
{gfP{0x6955894d84099066, 0x42d0f9e10488ba6d, 0xb46b30e20f26f99, 0xb45f8609005157bd}, gfP{0x89bb9a935bdb5c74, 0xc7b27d8f84a99805, 0x72866e902086870d, 0xaa35bb629ab9119a}, gfPOne, gfPOne},
{gfP{0x2a9d9b9bd12856d9, 0x41a946cb01b6d9a, 0x2ed589fc20dbbcad, 0x6f2ae74751fd2c9e}, gfP{0x615908a21e1e53d6, 0x473adae775bdffbe, 0x6555651372b5442, 0xabb8e40e997d67d4}, gfPOne, gfPOne},
{gfP{0x8c3f63b337e5be4, 0x873a15f866bf6bce, 0xf0198996be94868d, 0x6a9a959f5d34d589}, gfP{0x6bf12f1bac06db7b, 0xdbb09135c792cb18, 0xd52e25881fe26650, 0xaa18ba300c3c5542}, gfPOne, gfPOne},
{gfP{0xe3322b14d0058fea, 0xa7054b5109a0867e, 0xfb8d5625590e4902, 0x592621d50063de5d}, gfP{0x1c9a300af8eadcf6, 0xc6a7aa9c4ba3a3b3, 0x54cc20635591df9c, 0x767d1146776466be}, gfPOne, gfPOne},
{gfP{0x3d9a1c43be69f030, 0xb67483134ae956b0, 0x66ea89010fcad992, 0x58299a0d83ef5ea5}, gfP{0x583aaeeb4e36d413, 0xf1f6082008de3ab3, 0xc7c79916abd241cf, 0x28725f8bd264ded4}, gfPOne, gfPOne},
{gfP{0x824a9615a5c52a31, 0x86a6a26d4949830e, 0x9724559ffa6798f7, 0x39688b7ac902aa85}, gfP{0xc1aeffd9743f0831, 0xffa8acede8593906, 0xd3d547f7d9832de7, 0x66de1b690170f36a}, gfPOne, gfPOne},
{gfP{0x40e1c1513da71eaa, 0x71ed359497847585, 0xa45a19d19b1e6f33, 0x84b7412821186f41}, gfP{0x8bd69894806e3a1d, 0xb0ee7ab013af20f, 0x7cd371ed4e97c36b, 0x68563ee8764f345a}, gfPOne, gfPOne},
{gfP{0x46f64915f6a708ef, 0x5e96a75c790f9c42, 0xadc963e8f8f272c1, 0x7a7e2536a99d3a36}, gfP{0xf9472e631d52bc0f, 0x8b04b9c53b647691, 0xb4ac69af1e267c98, 0x3ace4cdc41d24d6}, gfPOne, gfPOne},
{gfP{0xe8db4e2de49ae8b3, 0x42f3d07ec34d1f36, 0xd1e144ae4217df3f, 0x6a31f7844f7a6ec3}, gfP{0x5b74d5405e12a0c, 0x11a34480ec157596, 0x88aff221e21b3b53, 0x4823e1ce261b62a3}, gfPOne, gfPOne},
{gfP{0x106501bc52813160, 0x7eca738835aecbab, 0x69ad166336bc8b18, 0xadc193c5cb6211a1}, gfP{0xbfc0cea2ab70ca95, 0x794e0b3ab6e44fe6, 0x1c63615f31403519, 0x34da51fb8da862eb}, gfPOne, gfPOne},
{gfP{0x211ace47487ca54b, 0x167124cfa02d4a6f, 0xf67d81ac451be038, 0x49953a9fa0ed3631}, gfP{0x9c39db45d05c392, 0x21e8ea068ae98cfc, 0x931dc970da019c09, 0x2d9f574d46176925}, gfPOne, gfPOne},
{gfP{0xb5e93687bbeeccd8, 0x89f331916207b439, 0xe39647be10152e3b, 0xaa3873ed3faec88d}, gfP{0xb60c53a84c62ede4, 0x720778e426caa01a, 0xef774fe256a101c2, 0xa9405ea40628fdb9}, gfPOne, gfPOne},
{gfP{0x720b1aa1c1f72b88, 0x1d17136beb55b204, 0x256b886c4a2e84e8, 0x6010d87d30fe6779}, gfP{0x55dc0fd43b406662, 0xb5297061fb1e8990, 0xfb9002c8c34e83ea, 0x9a585bc21f182b35}, gfPOne, gfPOne},
{gfP{0x9d0cd4f8f7365600, 0x79a6f9869f42404c, 0x5d59fedd5b44fe73, 0x230f85ea4e077d28}, gfP{0xe2117fe09cacef2c, 0xbf570a97d8002736, 0xa732826e07e8c0d7, 0x35d882316dcb13d9}, gfPOne, gfPOne},
{gfP{0xa0a20775433dc077, 0xfeec84dd9b74a8de, 0xdb92499dcf7b9305, 0x3a16a7d64723ee9}, gfP{0x42d4e4bf0db521d, 0xf2a95eeb05ff11d6, 0xa11b603e163ecf94, 0x755c77d0767a4af8}, gfPOne, gfPOne},
{gfP{0x16353d84f6b7c958, 0x20953794c350d6b1, 0xd41587927f756b92, 0x9c9f6628a9d20fb9}, gfP{0x394dedea148ea0d9, 0xc3a325bab2250eaf, 0x73d3a7d00a1eb6b5, 0x50e1c63aab01e3c}, gfPOne, gfPOne},
{gfP{0xb44f4dc309e3b248, 0xef16eae6fc37e3c0, 0x3c408755b8609a7, 0x5ac9ed976894121c}, gfP{0x76cf6ec6ab5e043f, 0x68ea8fa7a4f9dd2c, 0xfb53d5a4b12402f5, 0x28647c009605d19}, gfPOne, gfPOne},
{gfP{0x8ba0c929c48b282e, 0xfcd9bc530f539185, 0xdc4c61b874f7448e, 0x413b5593a64ac7b0}, gfP{0xaad3a8dbf48c8863, 0xeb3625429c74b3ae, 0x10be2b63783bb964, 0x818b7476bed411c1}, gfPOne, gfPOne},
{gfP{0x6538ecbec9d27d2c, 0xa067a5ce60111309, 0x90ea4626dfd54ad7, 0x12c941678809cdd6}, gfP{0x354ea78dd40c9dc5, 0xa2aa9237199996a7, 0x860d7aec99168a92, 0x7305f13a1000cdd}, gfPOne, gfPOne},
{gfP{0xa608825ce5cc4abc, 0xcdb2928403f1a6bd, 0xfaf9d390fa39de80, 0x941ad9ce5d7c3f93}, gfP{0x39ca679b55ae25a1, 0xde6f2e45fdb27ddf, 0x2fa0c83f1d152bd2, 0x8e82604227634371}, gfPOne, gfPOne},
{gfP{0x5d58a10749ed05e6, 0x2ac99fcaa38efbd9, 0x12506cb29c16a00d, 0xadecd8a116835070}, gfP{0xeefea708f32793e1, 0xfca12e87d789154b, 0xed8dc1b47ba29ffa, 0x7eb0b91868f5bebf}, gfPOne, gfPOne},
{gfP{0x40f11e071b72225e, 0x1e2004629f2c761c, 0xbf0f478b1ba6d5b4, 0x8925918dee747767}, gfP{0xb576bf68bf067cc6, 0x9892cc697e2b7b11, 0xa27752a4e1d172d6, 0xac071a201a4042d5}, gfPOne, gfPOne},
{gfP{0x414ab8de0e998a9, 0xe6b76b533b13a8ff, 0x3c14e5384013b578, 0x716b8aefb78f23bd}, gfP{0x9e9ee97502cbb199, 0xb55144227a8ab0e3, 0xbc498660e38964de, 0x34601293617f87a7}, gfPOne, gfPOne},
{gfP{0xbe97fd85d257b670, 0x3cce7057d39d7947, 0x1cc124d0f0ed37d2, 0x9f8ac5ffa5e75faa}, gfP{0x633c732a8de82bd8, 0x221bc8c2dd8b46c5, 0x76ecc18258be2e38, 0xb16f0f8b0d2dd9a4}, gfPOne, gfPOne},
{gfP{0xb9eb4029312873cb, 0x3d0080eae0e403f, 0xa7485785e65efc76, 0x26ffe8df4aa1ef59}, gfP{0x492bb2820005bea3, 0x5ca793172a005105, 0x20fd999474b767b0, 0x52ed49358aed4b7c}, gfPOne, gfPOne},
{gfP{0xe3d84dcbdfa12a76, 0x8864adf5b5a9175b, 0x94bec16389888233, 0x2032edcb36bb0d72}, gfP{0x8082463af9e87516, 0xee12522b927d2ae8, 0xfbb4d5c51fa33c7e, 0x25588c80a3f90ea3}, gfPOne, gfPOne},
{gfP{0x983ed8aaf1166b70, 0x37664d28789570bc, 0xbdb0ef89bbd065dd, 0x988c762b5abd2c16}, gfP{0xba1b835fb556181c, 0x2c4e63c063ed161e, 0xcb2ab2a379ed6179, 0x64abe36bf1d027b3}, gfPOne, gfPOne},
{gfP{0x79b6eb3c2e2a57ff, 0xede997305ad1e6ce, 0x395b0f074e9adca4, 0x36763c5d6c7dc962}, gfP{0x2611a3268fb513a5, 0x5b1100f2e584ebf9, 0xe163637e560f1e0a, 0x68d51102d894b745}, gfPOne, gfPOne},
{gfP{0x3575419ba14db070, 0x8e4017ed6c48d863, 0xf511e5df8ba366e2, 0x92ccc874e705776e}, gfP{0xb660ef2719055025, 0x332704c4b5481f31, 0x10dff3b0aabf8519, 0x5f3ff6b24f31556d}, gfPOne, gfPOne},
{gfP{0x4334a50f1b32d674, 0x5c43ea02f0790984, 0xc91608a20f077098, 0x62136c46945f0c3a}, gfP{0xdfcebedbc69b0009, 0xd593c6a81d7104cb, 0xbd2462ce99955377, 0xa18058b5b7d9be5d}, gfPOne, gfPOne},
{gfP{0x115a73ef193685f9, 0xc157bc6218e65afc, 0x2eabbff541d10279, 0x5ce6f554f711b006}, gfP{0x4ac7dcb9978048d1, 0x3e574909358823af, 0x27f47eb83c200955, 0x4d73e7fcd690e7f2}, gfPOne, gfPOne},
{gfP{0xc0cd07cbd8212ad5, 0x7f1e46cae3dff575, 0x44a15c55be60b28f, 0x85f19ec8f6842569}, gfP{0x2a6677c5a6ef37a5, 0xc51fa1b63ca929ed, 0xb7b8fd7f7bc4c6f1, 0x6ebcdaa64e2122ce}, gfPOne, gfPOne},
{gfP{0x6502ac10b38633b5, 0xa927a3afdc54b416, 0x90b4af2a84170172, 0x3d57c9d28093c883}, gfP{0x5db19094e754fd5a, 0xff1b1443a50dee7d, 0xcfd245e95ce3b460, 0x968f7d0683fdb25e}, gfPOne, gfPOne},
{gfP{0x5c3da2cdbbedd5e, 0xaad0342187a951f0, 0x5b4b619221c478e, 0x37d3c2d67289704f}, gfP{0xccaeb4862e2061d9, 0xad32a200cf7d0b45, 0x9c22a26e2e3c2127, 0x76b083f8341d20ad}, gfPOne, gfPOne},
{gfP{0x263ee9d812c7419f, 0x7f93786a02b2f619, 0xf1c1953a3f5c9c0d, 0x58dc489898ca7e97}, gfP{0xd26352014539922, 0x8a12bf5417e9b2b7, 0x868353ccb9ea5eb4, 0x984d742d3194f68c}, gfPOne, gfPOne},
{gfP{0x6f11c1ff9e677a52, 0x3549cce061a37899, 0x73429a05e6b79e4a, 0x8f0116f4df9a9c02}, gfP{0x8dd62ca763689eb, 0xed93cdf26eeb2584, 0x1a426b677a27fb98, 0x11b62f7981759c9e}, gfPOne, gfPOne},
{gfP{0x9840a8afd68eca0c, 0x4954f87e287141b0, 0xf7678f62a428bf98, 0x6fe0e8de9fc08c29}, gfP{0x7a9f5c062f94d115, 0xd4aff7fd35534cf4, 0xef64f859ae181e1c, 0x44c07654b965d38b}, gfPOne, gfPOne},
{gfP{0xfcaf82553564df72, 0x9d325288a9d4939e, 0x6b36f46d600aa367, 0x7105b89b3434b1a3}, gfP{0x5df1f095a95f929b, 0x9ce70fd0310648d2, 0x89fd03aec77964d8, 0x4fed56ceff545a4a}, gfPOne, gfPOne},
{gfP{0x64764b7bb6239729, 0x181105ca735abe1d, 0x5b9da89f56e6c2e0, 0x1eea2a4e1aa2de7a}, gfP{0x3cb21bb630510440, 0x97e187eb9932a11d, 0x931c8398bff1e20d, 0x258dc6674bed422f}, gfPOne, gfPOne},
{gfP{0x370fddbb6b7f604c, 0x1be3bbd9762378af, 0x7b61365888a632e3, 0x10ae8c0dcabdfee7}, gfP{0x3c77a13df0464cc, 0x17cef87f89935d61, 0x2cd1a2ca7c6f7376, 0x263ff055296e52cf}, gfPOne, gfPOne},
{gfP{0x6612342391b24bba, 0x5d205cfed1b91a17, 0xeae23b4f4b83bc4b, 0x5c05cca6e01c121c}, gfP{0x4eac0851dbe45205, 0xb2570a90aea38fbd, 0x439512c3379768a9, 0xa924db69e7777acb}, gfPOne, gfPOne},
{gfP{0x4d17705bf10975aa, 0x8e00333978d9279a, 0xe22134361c0badd4, 0xd5cd7185c4869fc}, gfP{0x2d0052af0ab8d419, 0x6c85de0a8c8d5982, 0xf15eb75495a95d69, 0x4bba811f1bc58f4e}, gfPOne, gfPOne},
{gfP{0x91f87ac5eb523164, 0x48bebd7ae3dddb69, 0x60f0bbea0e3bd9b3, 0x98e6c9e521602c7c}, gfP{0x8c4f4faa028625d6, 0xf4b022ef5dc884b0, 0x71086741ae76ed4c, 0x1518f40f0f43a727}, gfPOne, gfPOne},
{gfP{0x3c481b1d915add48, 0xed714c4083003f0b, 0x89033c4b020afcd5, 0x95889d020391b7cb}, gfP{0x4e19f9c2fa47aef6, 0xd5e2e0fc4e124b11, 0xbd32b8e03a2845d1, 0x9b6e0dd3e488fb16}, gfPOne, gfPOne},
{gfP{0x5ed358e5bc0b2935, 0x168977c14dcff470, 0x8e660847f4de3a7a, 0x8e8cb75733112c06}, gfP{0xe803a1a340d787f7, 0x335503fdf35031ec, 0x521fedc50b919f58, 0x89850caee4b9262b}, gfPOne, gfPOne},
{gfP{0xd05420aa538c7a87, 0x8fb50556c67b4366, 0x1be6bd5c21bd4725, 0x300e146021f3137b}, gfP{0x64620bdf2ebaa06d, 0x64e350730197e640, 0x7bd723439598fb71, 0x59860c474dfad3ec}, gfPOne, gfPOne},
{gfP{0x4de646a757c13340, 0xba917e80e41c16ae, 0x8a7f12cea8f5c746, 0xd9c8daab2139fc0}, gfP{0xac592e328c605933, 0x2346651fdf95705b, 0x9a34d38a4dc68ae9, 0x9f85891cbd0c8aed}, gfPOne, gfPOne},
{gfP{0xfae4ca646fc5e5e1, 0x297908c8f667134c, 0x57fd620042ca1d36, 0x97c814a8de79280d}, gfP{0x269a0154be7b3934, 0xdd3e349c02876986, 0xa7d6382637f5c8d5, 0x1738b7c8a88ad062}, gfPOne, gfPOne},
{gfP{0xe586d93cdd516a61, 0xdcee53ecc80b9e63, 0xc33205c1b2eb74c0, 0x3a483b0701b78440}, gfP{0xc352ff312a68345b, 0xfcb4ee5df2ea078b, 0x198f90e045a69df0, 0x3544e4f73c391865}, gfPOne, gfPOne},
{gfP{0x590563a9cbbcfff0, 0xa4e7edda60a932a6, 0xd76f2880de2317a4, 0x7768254330f06fb3}, gfP{0xea957024d3788ddb, 0xbdfd626b0a1afea7, 0x2a907531357c9abd, 0x6f51715ec7044d0f}, gfPOne, gfPOne},
{gfP{0x97282e41d4351fba, 0xa36e9c64623ace19, 0x483d42491d286524, 0x18f1ca9aeea3ddc8}, gfP{0xdc3b902fe58f5857, 0x7613c42f6066428c, 0xc13e80d3fea09ad5, 0x90509dd1a70b6110}, gfPOne, gfPOne},
{gfP{0xfb3fc4a81f3dc686, 0x4093d890a612d364, 0x3837e94d3170975d, 0x6e36e4af6cc3419b}, gfP{0x9e2cd9ce06880db7, 0x4f3110b8cf5ce617, 0x79e94314145907d8, 0x399307d090ee9ba5}, gfPOne, gfPOne},
{gfP{0xc210799781fc48b0, 0x22ceae2aa9891ecf, 0xe2b84d14801f3245, 0xa8ccd51d64e40fb2}, gfP{0x9079f62930998b90, 0x504c392882e40772, 0x7085121e6dcd2b15, 0x57b8c8505bfcceab}, gfPOne, gfPOne},
{gfP{0x64a4993852f5b9c7, 0x5f45d5e94791ae58, 0x836bbecd8b89d040, 0x98474b3b897d388e}, gfP{0xcdab423f599772af, 0x4582ca250b16ace3, 0x171d5a4d142873b4, 0x54400a3e41cef07b}, gfPOne, gfPOne},
{gfP{0x1bab86205cda1c29, 0x9ee3b9f2e162e496, 0xfd6331f5c24ccbb3, 0x6a9ef83bcb5d566f}, gfP{0x67efe9609c0083c8, 0x452af9402e003787, 0xdda89e8ae101f62a, 0xa85b84dd78d841c2}, gfPOne, gfPOne},
{gfP{0xb31fc5aa600a20d, 0xfba6a045b23e13ae, 0x44823e6bd3563b13, 0x829db68b576f0982}, gfP{0x1eb562cc9d735919, 0x40e5a20e0ead0ae9, 0x8c124acb751d628a, 0x2c8c21742d9b9f43}, gfPOne, gfPOne},
{gfP{0x46f0d0f5d6d129c2, 0xb494c2fd498f937b, 0x1fbd7e630176cfdf, 0xa1c5ce6c1d33ef59}, gfP{0x87fa70a2c0ff259d, 0x3531a52e69ec3cad, 0xb377cdc73f6f6462, 0x7cb05f0a8978a10e}, gfPOne, gfPOne},
{gfP{0xf607af06c06c53d9, 0x7356d578b859e65e, 0xe254a578d5f4c8d8, 0x2c57ef07b5536e09}, gfP{0xa6ddce3c2d4f5821, 0x68ae883a81cd347e, 0xa5a44d5c4bc80505, 0xb1cb133e22d36bd}, gfPOne, gfPOne},
{gfP{0x5c0f67375ae7f2fa, 0xe5b92c43299e230e, 0x4279aa232ed229b0, 0x3b5198d7a8ac905b}, gfP{0x925893fef10b0f8d, 0x312451d87d8c32a, 0x5261c9793d01ed0, 0x7ffd6adb069555c5}, gfPOne, gfPOne},
{gfP{0x7e9819f25b6f49f0, 0xa165ed57e7ecffc0, 0xffd727389210a4de, 0x7d7ee9847d136be7}, gfP{0xe86afc5004e46574, 0xa4576da0eaea465a, 0x8295fbfd4db53be5, 0x96f139175b902637}, gfPOne, gfPOne},
{gfP{0xa8161de0137459e7, 0xed26d9be56eb74d4, 0xd7f783d44ab10cbf, 0xb067c357190a2519}, gfP{0xb55fe28dea58fc1f, 0x6d5995642816e6fe, 0x4973d80131f5b0d8, 0xa0c3654d2dd48af0}, gfPOne, gfPOne},
{gfP{0xd090af1856767757, 0xb85d008482f8e88, 0xf2aa4e278808cf9e, 0x151773a86176fb2d}, gfP{0xce967c4eb17c7f07, 0x540773713ab54f34, 0x50e0255d724bbf59, 0x6085efa7eeb4ac82}, gfPOne, gfPOne},
{gfP{0x7266214ee25d755b, 0x3f1bac093a4cd13c, 0x7c2b3c0e21135190, 0x1135a481d684fd59}, gfP{0x975dfe6d2dc27fe6, 0xfce89892ee71e065, 0xf89ec547a405a924, 0x3fe3f7e718943ad4}, gfPOne, gfPOne},
{gfP{0xef033d82311eebb, 0x89d2c041580f57ac, 0xdcae878d619d1824, 0x206a5912a841e9fc}, gfP{0xd55f2153368e3694, 0x664cb4ca9aec59fa, 0x1772a69057f13d21, 0x4f7b6c2bff08deff}, gfPOne, gfPOne},
{gfP{0x84f3c2f8e86f77d5, 0x9dbb1eea12d3b1ec, 0xaa58bf0262b96d4, 0x9f01d5234957aba5}, gfP{0xdc2f604a19db7ccc, 0xbbbbd07772f1b86c, 0x95b77c12c0d01f89, 0xaf1f3b3c10fa6be4}, gfPOne, gfPOne},
{gfP{0xbf0973de7c146bc9, 0x2d21a9370bad7997, 0x147a456b4c17cc4b, 0x30a65d0cde47b1f4}, gfP{0x2ed45ffa76e6f648, 0xd623f83741797c6, 0xaf352b1eb978d59d, 0xe3089c3a6ba80f6}, gfPOne, gfPOne},
{gfP{0xacc6c81ced10afbf, 0xc42e4c69094d434d, 0x7c66c9ae0439f9fe, 0x6a8a275ed9beaa17}, gfP{0xe3ea5e9dac373a0d, 0xea88f5b85cfa1342, 0x43399541fb6a7339, 0x5a8887323d54b831}, gfPOne, gfPOne},
{gfP{0x7410f5647175c5df, 0xf0736a67a17d946f, 0x156232f9e14d9553, 0xa20c9db536605ba3}, gfP{0xc4295cdbd2d895d, 0x8beb1cbb7ae81a6, 0xcd4416021e48dee5, 0x2588391574b38a8a}, gfPOne, gfPOne},
{gfP{0xb4bce7fe8afdfeb0, 0xb3f209b20eb7fca4, 0x611508b9e42669e6, 0x554fdbefa12f9eb7}, gfP{0x21092a8398ee490b, 0xb80354e1900e18fc, 0xd4f406837573ee26, 0x9b67f2af1991d160}, gfPOne, gfPOne},
{gfP{0x5727cbf036bea734, 0x65e09bd30080f047, 0x3980938524d98d30, 0x3c8dcf7bd09649dd}, gfP{0x2dd764f80da0310a, 0x495533cc6ad98171, 0x6b9157c6468745ad, 0xa245beeb2b14f3f2}, gfPOne, gfPOne},
{gfP{0x8bd9077793384ac2, 0x562cfab6f939044c, 0xe48a7412cbeee7a4, 0x7018feb31e1b2c27}, gfP{0x93a427c3005e372e, 0xd75aa13fd23f9921, 0x118cdda96b6e31a6, 0x7cca0c12e96bd486}, gfPOne, gfPOne},
{gfP{0xa8c4c68b780611a5, 0x18078ce27c324720, 0x76b7c26b4deebc2d, 0xab4d5378198164cc}, gfP{0xeae5015c1ef6c357, 0xc3dd2cecffa75882, 0xed6084959e038501, 0x9584d10b8e7a70b7}, gfPOne, gfPOne},
{gfP{0x2b81209d5addcdfe, 0xad2f5ae187091159, 0xfb5c3cdd44b8721c, 0x3d8429baf0dfd4f2}, gfP{0x7d3c7781fba9cc68, 0xab7c17165597393, 0xefe1a4e041e5a378, 0x8dd8e1085a5f3b5d}, gfPOne, gfPOne},
{gfP{0x693fdfb2d1b5ce76, 0x9b99131b233bf443, 0x748c70c0fea0db39, 0x4d96b164e94d991f}, gfP{0xf86d964810036e6a, 0x6b35736acaed7e5b, 0x6dad59ea9ea74eb5, 0x33d6b63c63c2c4e2}, gfPOne, gfPOne},
{gfP{0x58b7fa4310554a0c, 0xfc546ad4307e6d7d, 0xc36f12a82829504e, 0x3aad0c349b2ae784}, gfP{0x84f88d045a8d2896, 0x9ae85ad2a08b5a2e, 0x74fa88f884f3427e, 0x6d3f6a6e9a5e17b}, gfPOne, gfPOne},
{gfP{0xda8a7eb57a0909f, 0x861c3852ed669eb6, 0x904a8fd7d78c0477, 0x2bf38c5266ff7f13}, gfP{0xaca83398fc6f56fa, 0x53e74f563e1ba586, 0xd1099266e1a51e15, 0x218b81f78644e34e}, gfPOne, gfPOne},
{gfP{0xc1f0d533401f7e5c, 0x7071b18ef39296e5, 0x3df64d9d47daf2e5, 0x27ac74a2ebbccec6}, gfP{0x38c334a351e3394, 0xc1df38aea7cb54e0, 0x8b34c70bf0635f43, 0x75ced38cf5ea0e90}, gfPOne, gfPOne},
{gfP{0x495cb8edaca5f1cb, 0x6790e23fad2bdd1a, 0x4e9b791f706f35ac, 0x7aaee43677884ca3}, gfP{0xe0fad25bee9933ac, 0xddc7440fa876af76, 0x1016bc57bebf7cb0, 0xa171746e9b34a9fb}, gfPOne, gfPOne},
{gfP{0x16c26ecd4c10404c, 0x9bcf7433ed81d6ff, 0x95431cf91ecb16db, 0x560cd980c9f85c6f}, gfP{0x4fa4d2e4971158d2, 0x89447d61e3417269, 0xbc57d40f7ea3ac43, 0x4907f1cc668f1080}, gfPOne, gfPOne},
{gfP{0xae40cef9890c2f02, 0xcc6e4e4e309f2173, 0x3da5978cc247d6f5, 0x56b82603f89ceaea}, gfP{0x11f239b35b671aeb, 0x41c7aa14f49215e6, 0xb20112224d1c876, 0x331369956009453e}, gfPOne, gfPOne},
{gfP{0x88d7d2f612801225, 0x22fe9f1c57b1ada8, 0x81f6a9e346eeb999, 0x591b5c2d5d8411bd}, gfP{0x8fe5439fc644d114, 0xae100ef4db65e95c, 0xc7830879884a755d, 0x7cc9eb1659f3e68e}, gfPOne, gfPOne},
{gfP{0x531cae056f917bd9, 0x1031c6ecbc0925dd, 0xc9eeb79546a3920d, 0xa7673bf56caaed08}, gfP{0xcb7ca60bf3a90fde, 0x41313bf7ab77fca1, 0xbde1a5d29233e31f, 0x9584faeffc17cd8b}, gfPOne, gfPOne},
{gfP{0xa1bec79c983b6b23, 0x5bd2d8991ada359f, 0x5ad719fc273ab4e6, 0x92a45491401d54f4}, gfP{0x5e24b2d2ac336def, 0xa47afc7646525839, 0x84296cbeed6a9cdc, 0x8b4f5db85a27ed70}, gfPOne, gfPOne},
{gfP{0xa57e0209d24a6517, 0xb6d8a27b9bc2163d, 0xa9837bba7d329e18, 0x82801c146c755c60}, gfP{0xf81732ded37d1732, 0x194bfbc5fce4f0a1, 0x61e9b825dbf0f99b, 0x2c14730ad77d2d7d}, gfPOne, gfPOne},
{gfP{0x855ba2bd144e3fb3, 0x8484d35ca073dd10, 0xbd4449d6a277438b, 0xb41d92303af0b532}, gfP{0x54ce1e06bbf16448, 0xdd831e3a4332cd8a, 0xa86ea22ea244e613, 0x351d2c9dc12a51c4}, gfPOne, gfPOne},
{gfP{0x78bb49dde8c72f59, 0xd2576f7c13b496fd, 0xe0cd6dac3ea9de84, 0x3b86958395001cc8}, gfP{0xe393fdf6a13ffc53, 0xff588cc84c484b2a, 0xc4a3db34ccce4ba, 0x51d6510759e79b8a}, gfPOne, gfPOne},
{gfP{0xc54930bffe6f3c1c, 0x7aaf283db2c27c2c, 0x5a495b239be06d78, 0x5d86eff04938e6c9}, gfP{0x536622c54a3acaba, 0xf4bd2ed5715304a3, 0xc357a5620f690e4f, 0x1e470c3649959eeb}, gfPOne, gfPOne},
{gfP{0x94c8aa5d8e8cb86d, 0x1810d7746bd50fa3, 0xf591515545e91450, 0xffb805168acab6c}, gfP{0xf1a30005396c0143, 0xbecb90a78505b50, 0xe1d60fd1df1164aa, 0x247827be79d3f16a}, gfPOne, gfPOne},
{gfP{0x2b96239bb020fe26, 0xa345605d1e913d0b, 0xaa579f96dbda344, 0x4439cfbf4fb4ce8e}, gfP{0xaff007acc470b03d, 0x273c490c3c2b49d6, 0xdb160421b2ff32c8, 0x2524a4c122d8d817}, gfPOne, gfPOne},
{gfP{0x840e6b0927854059, 0xb813836e02195dbf, 0x9bfb1c74e912a1a2, 0x75975bb88136242e}, gfP{0xd7305cdc108f28af, 0x14df24d4c4e3c493, 0x35e0b29fde00db2, 0xbc52fc8e8d7a18}, gfPOne, gfPOne},
{gfP{0x90af748b44e06b09, 0x17f78f6d76d56350, 0x3b288db795065a99, 0x9235e40c56fdbbfa}, gfP{0xf4a50c1323862b6c, 0x54a141c60c4b2509, 0x21db8173a6bfcfdb, 0x2d2ae4eb455c5789}, gfPOne, gfPOne},
{gfP{0x80fa2eaa6bf2de22, 0xbbf3cdf4b8911fc1, 0x4ff56a56f44b5a38, 0x356b5c75fa47c9b0}, gfP{0x82ab0a802caee0dd, 0x2c61d31ffdca5981, 0x53f50af8945376e8, 0x38c18506b05d6ce6}, gfPOne, gfPOne},
{gfP{0x4cd992e27f5ba049, 0x14b95d0849435c9c, 0x3e92608d9b2d1fd6, 0x5eb556c8c2f3a9ef}, gfP{0x39bcbedd735e7d40, 0x121350b38b9c06e4, 0x7bfb8be1d88a6e06, 0x9f97b1af6989fb85}, gfPOne, gfPOne},
{gfP{0xafd9494f5dd29233, 0x24e6ec2c9047a1c5, 0x7f7fa5eab7ad0c11, 0x71e02f268acdfeb1}, gfP{0x4b5ccd267d2181e7, 0x6d6d7ff8559f169a, 0x3fc9ab99be59ce31, 0x553dd187b585eb69}, gfPOne, gfPOne},
{gfP{0x5ab4f194edec95f5, 0xde815a4ab781a05c, 0x14bffb81514a3fdf, 0xa5df5b0083e855c0}, gfP{0x2389e7ee6a398341, 0x54ccb6ea9fa8fc86, 0xeb6c517ab7a1ea3d, 0x2482a369c18484fe}, gfPOne, gfPOne},
{gfP{0xc2ab1702a0b79a87, 0xb1398d93934e26b8, 0xf52ddf6b9e0d1037, 0xf80f9ccadd9b11}, gfP{0x8f68119840617081, 0xb9ab2db102d4b781, 0xc8edd54cce29b0ff, 0x861bb7f2f528610a}, gfPOne, gfPOne},
{gfP{0x6996c0154c4f8312, 0x2d7b575d26862c2b, 0xed3931824e52903, 0x2807dafacae27f8b}, gfP{0x75bcc4d4a63ffbcd, 0x83192f9ccb705a26, 0x2b72cec2ba4c5d95, 0x36d213696fcb0845}, gfPOne, gfPOne},
{gfP{0x898d44a0ed8805d2, 0x181854ec8b470212, 0x2761242c6a924ec6, 0x54e30da7f5d6e097}, gfP{0xc569547415a57dba, 0x9594e1884b526bf0, 0x1b25c50d453f6ca9, 0x2591e39f42352f84}, gfPOne, gfPOne},
{gfP{0x105193dfa25d0144, 0xc85327ab4117e152, 0xa6b5fac3c968464b, 0x10e4d08a58efc4b7}, gfP{0x95a75b01e1ffc188, 0x2f1f4d9e4e4260b3, 0x857aa04242084dd5, 0x37f2deb806d9467f}, gfPOne, gfPOne},
{gfP{0x6c5e1932effd7cf2, 0xbcff8e6c943f673e, 0x31edf8010e2fb52e, 0xb437bdd946d406f8}, gfP{0x11912eb78a956937, 0x4b796def4c4a5ca7, 0xdad5c0c7e7fbd4e6, 0x55a6dfb61426c4e5}, gfPOne, gfPOne},
{gfP{0xb4fd05309f2f581f, 0xd3ef84c53799fdad, 0xd62fb03f17afe305, 0x4a97389d72ab5a56}, gfP{0x320ffec6f7370fb0, 0xc2f3ffd39cab32df, 0x8af02a7c2739e3dd, 0xf5b216bddb19451}, gfPOne, gfPOne},
{gfP{0x80f8be0bdc0d19ae, 0xf7a4bcc7570d65df, 0xcb6af35b26b6750a, 0x5dca5489c3c2939e}, gfP{0x14447c669891c3d7, 0x513e9b5278639290, 0xe57d787471feed7e, 0xc5944daeb234df}, gfPOne, gfPOne},
{gfP{0xd58f103faba0ac53, 0x71d1f187f22b9524, 0x6401e34eb430bcae, 0x9abfb1f7072947b7}, gfP{0x509bd01835b40fb7, 0xa3eccd73fb7aef58, 0x177365855294585d, 0x9cef811802bd32f9}, gfPOne, gfPOne},
{gfP{0xa78c63617b75adc9, 0x44bd1d8209a56327, 0xd88150065e283bfb, 0x7bf029bdbb754785}, gfP{0x9bccb04c8e25e24d, 0x82248997537cfebb, 0x4cbe840b8e1fad36, 0x7ab6b5c0c32ae32e}, gfPOne, gfPOne},
{gfP{0xd36e81958b531b62, 0xcbceefbaab691fb2, 0x22358d9f10bd2e21, 0x645c4952a4317076}, gfP{0xa8a627af86f3cb82, 0xc2a341ba92202dc4, 0xb10a0e58dfc9f32d, 0x8350461932238401}, gfPOne, gfPOne},
{gfP{0xd3fcc89cac551412, 0xbd2067156c44015f, 0x89330e81cd247b3c, 0xa83ec0f5e410e0cf}, gfP{0x55e0b1212fc1b1ef, 0xa322d8ef94a49648, 0xc143a50dc1e645ac, 0x8b735f3fe79013ae}, gfPOne, gfPOne},
{gfP{0x7fb26ccb1301e9b4, 0x324cde2d74c9f08a, 0xb87fa108174bbdd2, 0x12ca37dd0ddf005d}, gfP{0x342957fa2ffae4c5, 0x19d5dfcfdc8667b, 0x2e38c0caa2d39c88, 0x94c91a4c0906d5b3}, gfPOne, gfPOne},
{gfP{0x958d3a0712f3d33d, 0xd411034ca87dfc0, 0xfa902c8a688ce8ff, 0x938ef64d891e8743}, gfP{0xea976ceacccd2292, 0x46ab736e33af026c, 0x28a1dd2f69d8cf43, 0x9027c9302ae61b8}, gfPOne, gfPOne},
{gfP{0x26972d395bf47b0f, 0xf530019faedaeb82, 0x1034f0fd61746b6b, 0xaf9d6076e2a18d4}, gfP{0x94392022b386df88, 0x1b92a10306b78fc6, 0xf932b7cca9f6c894, 0x6bc7762dd5fc88f9}, gfPOne, gfPOne},
{gfP{0x56406c075a3fc67f, 0x7cc1c7f1464fa936, 0xca39a5d5a332095e, 0x96d1793defe51974}, gfP{0x9af0fa8ac71b0926, 0xd8a293125f0fbbf6, 0xd4b45e28b1f19170, 0x9397dcd44d612ed0}, gfPOne, gfPOne},
{gfP{0x20c7d06e2b4ea3ba, 0x4206b7291f401d6a, 0x7c788a3324638462, 0x3bd9b441b713f93}, gfP{0x33b74f18051318c, 0x681c4ee3bac4038e, 0xfa63b1c04d4feade, 0x6b6024c1f398ab06}, gfPOne, gfPOne},
{gfP{0x7b337bcbbd4f9f48, 0xb61b9cc98b054189, 0x31f2d272f087484, 0x4dd0d9306734de55}, gfP{0xa26e5a707412cbc8, 0xf22c8f73bcad45e0, 0xdef7d16c6ef8c336, 0x3fac4f30d55ee94}, gfPOne, gfPOne},
{gfP{0xdd2c191ebbc21073, 0x81de1d7ef35317f2, 0x58485d136712131, 0x530fdeb2cc474f4f}, gfP{0x69011c8b81da7079, 0x569b09f818f83323, 0x134bee7a04f369de, 0x1f47848d0d485a42}, gfPOne, gfPOne},
{gfP{0xd1e2a52f58764f6a, 0xe9fe4e76ababfb04, 0x343bbcb847de1533, 0x802973ff9f94d324}, gfP{0xf127ca531e250100, 0x14e3cab2d415bfdd, 0x370ea05e4c98e7ca, 0x10fcbd8846c2e73a}, gfPOne, gfPOne},
{gfP{0x19811f13b5622561, 0x359e4fec5a652f5e, 0x50d49e11a56cc619, 0x1d6fdeaef5ed9f0f}, gfP{0x5307772834da5588, 0x88dbc66d909e47c8, 0x7b63c779663426eb, 0xa68eec9b0823734b}, gfPOne, gfPOne},
{gfP{0xc64fb41906d8ec86, 0xe3028189bb877cd9, 0xb3eb20698e302c68, 0x32824a7b9c1d9487}, gfP{0xba99c36d9007e2b0, 0x3f04e9e638c0204c, 0xe7e9fdaa705525d, 0x7ae86b2ea982324d}, gfPOne, gfPOne},
{gfP{0x599debddb7b9babe, 0xf16b5689bd581223, 0x16545b0f4ace2795, 0x9dd9a61aaac54d17}, gfP{0x927c243eb7c79436, 0x3765d87125f348a8, 0xaa7a7910208a2a9e, 0x3c12e5bcc426a267}, gfPOne, gfPOne},
{gfP{0x75ea6bdaec259c14, 0x865e0751de6f2fc, 0x1e2337dfe960b2a9, 0x466522c5369ecfec}, gfP{0x7928feb106291da4, 0x25c4ff3ec0e1c921, 0xf5a647d4d6761d1f, 0xa22b9be7e15ee958}, gfPOne, gfPOne},
{gfP{0x25dd13f8fa3b0439, 0x31f081d1c21eb9c6, 0x1bc2156256d5b30a, 0x16d061c021f08b69}, gfP{0x5a680895859b1181, 0x6f3a86b2d327f01b, 0xa60e2a4e35f8a495, 0x71d60f30156e2ac9}, gfPOne, gfPOne},
{gfP{0x6e39c495bab52743, 0xd7eb70769377f418, 0xd84dd79804a939ce, 0x4dfece78cbd2c365}, gfP{0x46bd389c56e2503d, 0xde79d40dbc3c3454, 0xb4edc877d5efbe72, 0x9b142059fbe68c52}, gfPOne, gfPOne},
{gfP{0x588b4095ecb1a68d, 0x3e985dcd6b576ff3, 0xd7f1d4922ea6202, 0x53686d2c4ce60479}, gfP{0xa7e945656138359, 0x7d8e4f32fb7cd714, 0xcdb7c5660cea0e9f, 0x1834514ad4b02aec}, gfPOne, gfPOne},
{gfP{0x8f885b64a5052c59, 0xa6f6fe720dd6d1da, 0xe8430c469c9626fc, 0xac7a920b114dd947}, gfP{0x8f71ae48a9dbf4df, 0x689c1581c4d93c8e, 0xa15ae20b0bd37b81, 0x70a5d2c700c213c4}, gfPOne, gfPOne},
{gfP{0x5afaace024be3754, 0xe93546b16863f50a, 0xbae2c61df55309e5, 0x8c43dd565b7dd326}, gfP{0x5e388eb21b86603, 0xbcb5add199d30208, 0x156c3526a77bdb36, 0x4e56c99d0f99377}, gfPOne, gfPOne},
{gfP{0xc5f0e7f1d960b545, 0xb74ff83effd3cbc0, 0xbccf08748f206533, 0xbc20d1c74260064}, gfP{0x480d64f58758ef53, 0x908247dadf0b8244, 0xce170f2e56f67818, 0x8100963c8309c87e}, gfPOne, gfPOne},
{gfP{0x351282911dd673e8, 0xb9e1a2dfa749f8d7, 0x8fb37ea9b267467f, 0x18c0a3a3ec358046}, gfP{0x3d8146063a4b7fa8, 0xbf94cc0ef25074d5, 0xd6a589e8e6e214f7, 0x5c911c83682dc36e}, gfPOne, gfPOne},
{gfP{0x7b31e6ab1e0c8008, 0xfec5725486be003a, 0x32551c9d02303e0c, 0xa82694e309dbd868}, gfP{0xfdab56b2905a19a5, 0xe5a9079db04d2083, 0xaa7d38be296d320d, 0x172ea60c2ce11501}, gfPOne, gfPOne},
{gfP{0x2f47e466f517150b, 0x6748544c3a4307de, 0xb71c8d542ae1497c, 0x693865b7785de51}, gfP{0xd8bb8c2fb8a2237d, 0x487ff51d4aae1f02, 0xfa381e7b4e44d600, 0x56a0814ae9959071}, gfPOne, gfPOne},
{gfP{0xd8b8faabdec90d0d, 0x6821e24546e8852e, 0x6e3631b9faf97f3f, 0x4794825b98975f7c}, gfP{0x1b0f86c0d8a35bd4, 0x910a8ea72b59019b, 0x4bbb6a05230e33e0, 0x2e9871a46f7592a3}, gfPOne, gfPOne},
{gfP{0x9a5ea97524a41040, 0x6117917805742161, 0xc03adf72717acb72, 0xa9979b70e843371c}, gfP{0xb01c923c63a38a8e, 0xdf198f1261806a27, 0x6f20e24907c7568b, 0x40d7b1bdd6284105}, gfPOne, gfPOne},
{gfP{0x6348990efb0a497a, 0xe47f91382ec5fcd5, 0x78772ff3c93a9cf9, 0x7c1224463c780cb4}, gfP{0x8d746a78a105319c, 0x9ba8fa470606c53a, 0xdee148f0c8d8d907, 0x5ae0db70eda78d52}, gfPOne, gfPOne},
{gfP{0x6f2fe454498bc688, 0x1aab2d7da6c60647, 0x4c95123ba1e557fe, 0xa3616ca7efcb050e}, gfP{0xf2d4b1dfd0eaf791, 0x48c1210916b4ee98, 0x40834c21cff0ac0e, 0x1a6f0fa6ab684aaf}, gfPOne, gfPOne},
{gfP{0x83b6fa3ee5f5cf23, 0xfe574d58745d55d7, 0xff69e155d3c1c06a, 0x64bb6fa30d6aadc9}, gfP{0xf8d0b81b75e8356c, 0x568175bd4ccc22b2, 0x8926e214eaee036d, 0xd4b22eef2a5ce3e}, gfPOne, gfPOne},
{gfP{0xef32bcbafd7ebafd, 0xc167f4b665104256, 0x6846a66725ba001b, 0xe1c5126b4e18859}, gfP{0x845eadfb9e56ac12, 0x7d602ecc4164a3d6, 0xe0fbf52c76355bc0, 0xb46b82950476bd0}, gfPOne, gfPOne},
{gfP{0x5679851c653afcde, 0x914b028276ea6e73, 0x380c9d69150c6487, 0xad632d38be456ec5}, gfP{0x257fba330f3ff5ba, 0x4be8c99d16fba1ed, 0x343dfe670f1a830e, 0x19148fa0f75743a6}, gfPOne, gfPOne},
{gfP{0x1c4d3b159b9045d6, 0x89eda0279b9a91d0, 0x1d8b68819c90e774, 0x24c69f4fc8e472fb}, gfP{0x9ccebc712878e5df, 0xcfed7b0174286a71, 0x741bd7401afc1a2e, 0x198d0cce761d9621}, gfPOne, gfPOne},
{gfP{0x1c489dc1be406d52, 0x36a06a42b08bd997, 0xb080ca6c856c77d9, 0x16b62732769f6932}, gfP{0xecd8e40e93a8e4d6, 0xa45e3377fc264ea8, 0xb13d9469e902fd69, 0x486469d09e003e8e}, gfPOne, gfPOne},
{gfP{0x8c72e7672c1e6489, 0xae56cf93511df546, 0x75bb93da4a97e7b3, 0x2dd963201e0fc3d1}, gfP{0x89f12b9a4f35d23f, 0x833a267b75bb6d7a, 0x9a9f6aef40793033, 0x332c83fd6006a5c}, gfPOne, gfPOne},
{gfP{0xdf5a10a34d750f1b, 0x85ef446c3d637695, 0xa72acf5037ee75d6, 0x970618359541a5fe}, gfP{0xdd694f01b96b3da0, 0x103c9e394b665421, 0x1abc79bd25940023, 0x5f09980cfaff9ffd}, gfPOne, gfPOne},
{gfP{0xa76d2d8bfcad33f0, 0xab1e383c67e82229, 0x83476fd9ad4f1895, 0x42a278beb7b63ae0}, gfP{0x4c0ebdedc94078d7, 0x8b60b773258eb6d4, 0x77a4830c1c994962, 0x62532936ef3bb576}, gfPOne, gfPOne},
{gfP{0x84344001a1074906, 0x92914ce5353f53ec, 0xd23d2919d297faf2, 0xa8352ed905aaabc3}, gfP{0xf358d9a1fc38fb56, 0x7afe9d157091df9f, 0x37e913f760121b73, 0xac9958cd2cffb4f8}, gfPOne, gfPOne},
{gfP{0x42ca7b8f508c253d, 0x3c5df570d94b9238, 0x8345330412774517, 0x56d0e4ee06baad9b}, gfP{0x4287a4f0100dce98, 0x6784fcac31d1011d, 0x78daff508b9b92f8, 0x94f9901aaedb86ad}, gfPOne, gfPOne},
{gfP{0x2b56acd6ca80ebc4, 0xe90764117037a7c8, 0x27ca9a814f8d0932, 0xb0f896604939ee1a}, gfP{0x48b1588178b8c9de, 0xe4cd5798e32ee5ff, 0x2cde366b352af54b, 0x29942306b31d4314}, gfPOne, gfPOne},
{gfP{0x4f57f4934fa7873f, 0x4d85d2980052b693, 0x77325bab4f52f763, 0x16b1826537f3c3f1}, gfP{0xeab2e4d187fc4cd3, 0x84585838e7d526b5, 0xd33074be511eeb22, 0x3864b72ff53e4bd0}, gfPOne, gfPOne},
{gfP{0x4c827bd650be7f03, 0x6c8199f3ac4542c2, 0xf4a774fbe4dd11a2, 0x6448070645311ad6}, gfP{0x249310f40f7d70ae, 0x20cfaedf5f43d805, 0x458b8ea19df1fab3, 0x9fe83c6e0ac4c085}, gfPOne, gfPOne},
{gfP{0x5fc706e6ce8d94fe, 0xda48a8b5356a4b08, 0xd9c132ca0dae251b, 0x2cb11e54d16dab7f}, gfP{0xc13ce46d0b2f2a96, 0x50604765f264d7ba, 0xcee2adab5d226bda, 0x9cedfbf0eac28975}, gfPOne, gfPOne},
{gfP{0xd2ea9bf56a9ab09c, 0x7c3cd7ad227258ad, 0xd716e2d429ceb6e6, 0x3cb1f2631d9048ef}, gfP{0x71ec6d02577a32eb, 0x1f4efd128c3f2c8a, 0x1bdc00709e71a89f, 0x6d5e92d48959bf3c}, gfPOne, gfPOne},
{gfP{0xedbb4f20430ad43, 0x22984301f5ef177f, 0xce3b6636bfdffbe5, 0x583149b96949790b}, gfP{0x28bfcdd7a10033a8, 0xc389ff1d955585aa, 0xe293f9f87cd46fd4, 0x9926a3b3497fa8fc}, gfPOne, gfPOne},
{gfP{0x45ddcf105a7c4b50, 0xe6274432aa862eb6, 0xadb2affdb729f561, 0x832f131ff191ab9}, gfP{0xc891c36521b5a97b, 0x6eae74603eedbd28, 0x127dd01e3b850399, 0x9662b385de5377c8}, gfPOne, gfPOne},
{gfP{0xdd95f169e8bc1032, 0x8f0ffe132d605734, 0xc4d28a341249ab48, 0x5b68d02ba9947d58}, gfP{0xf00aa14e5f6ab4a2, 0x38c5bae244b8492d, 0x3c6ac80b4e6cbe1a, 0x3ff167cb22a13a8e}, gfPOne, gfPOne},
{gfP{0xccb902325d7b1129, 0x6129780a3b4aeb7d, 0x50e3408d463aff4, 0x30e4eebc728e4552}, gfP{0x2d393391b67712a8, 0xdb28bc0bcd6c96ab, 0x2c281bd783fecfa4, 0x1e4bb2dac4b1b998}, gfPOne, gfPOne},
{gfP{0xf3406d0bf8b374ab, 0x93b5d0a215f71156, 0x22443871744998f4, 0x36fd2678438d2364}, gfP{0x53385f8981382927, 0xdfb9a98a79c17e45, 0x8b6fd73dc19b8483, 0xa045a1cd61238810}, gfPOne, gfPOne},
{gfP{0x50e31d9e3757a86f, 0xb52681ba3a181e00, 0xa49390c3e43b07b1, 0x696237a267e9d22f}, gfP{0x838a70d2f0d396c2, 0xe373e94d8b360097, 0xfbdf37ff6e0d496d, 0x26da6fcd4690b2f6}, gfPOne, gfPOne},
{gfP{0x57176ba3037e3960, 0xebb1aca271f58de, 0xd788b8567b980c60, 0x870c1625c6cf8459}, gfP{0x7d852d05ebb95bd, 0x111d9700cc5f02b1, 0x59b41c0afc96fb1f, 0x1f80bd77dccb1cf0}, gfPOne, gfPOne},
{gfP{0x271526613e895997, 0xb699808385c3d444, 0xc0a0c3ffaf415ee3, 0x91cfdb521fbd10e4}, gfP{0xaf7492f19b2bd2a, 0xe5fa4e9ea02fce7b, 0x2466002cc40a5d0f, 0x14f6bf99e82519d3}, gfPOne, gfPOne},
{gfP{0x955cf354af5f207c, 0xfb6474fcf6bf74f8, 0x4a6941d582440ad0, 0x20e36936c5251cd9}, gfP{0xd12792fd2f7a77dc, 0xc2eb3e1527a0a9d3, 0x2213ad94621327e3, 0x632a48d765f6e755}, gfPOne, gfPOne},
{gfP{0x5dda3402b2a703fb, 0xf7883426e0f7df2d, 0x3a8e7b0348009280, 0x5d48ea3fd8ab0996}, gfP{0x3487125291302257, 0x7d401cf915559e4d, 0x3035b07df4782f64, 0x95dd6e3bfed1cec9}, gfPOne, gfPOne},
{gfP{0xa81d8101a44dc764, 0x9a5d336ecc4326eb, 0x6540f1a6797cca44, 0x1c6269793a0f0249}, gfP{0xc0391a5b4f2f86b4, 0x5c465c05f9dfece, 0x2dc115341ae299d3, 0x6dbcae566af4c08d}, gfPOne, gfPOne},
{gfP{0x5b172f74de39081b, 0x6237d27638c9de8b, 0x83fd1d19c59648ca, 0x53fc998810f77e0c}, gfP{0x33f285985ff3fde7, 0x13b00104f67cafff, 0xc276ceb414a09545, 0x7bfa015acc283aee}, gfPOne, gfPOne},
{gfP{0xbb5915888601ddb4, 0x7b53c015f9bc1492, 0xbe2552a5a47f843e, 0x88300787ee71f11f}, gfP{0xc33f030285c14a92, 0xcb10af54f14198e, 0xf64a621fab3ea887, 0xa0b2aa2038e54eb1}, gfPOne, gfPOne},
{gfP{0x8220fcccb0b485bf, 0xe4fada5d324d9d6e, 0x725605635589b58c, 0x103e33231da915f}, gfP{0xba9e51e89eaa7722, 0x2eb461e4675cb426, 0xcf68f2049c071f69, 0x655b8a5cbe8b5a79}, gfPOne, gfPOne},
{gfP{0xa367f1cee945eaa6, 0xf3b7b346b337351b, 0x6640d7bb75788636, 0x70168124ab98bc55}, gfP{0xab2688a126a57749, 0xb49da8caed1aba3f, 0x6375de275a32bb3e, 0xf70da08afa5759a}, gfPOne, gfPOne},
{gfP{0xde77935240e4c5b2, 0x26781e7771ac2cc0, 0x39a4c867f34186bd, 0x24d793ef02a9088}, gfP{0x5c5c67fb43ea8146, 0xaf94d02a1237bf3b, 0x17fc6f18cff02a05, 0x8f8fa51d0c7b45a9}, gfPOne, gfPOne},
{gfP{0x1eb10cb7138d11f8, 0x37c21628bd2976f0, 0x2a1b539391c3c122, 0x57e8f2a32f951030}, gfP{0x8c17706d7ca3e6eb, 0x62f9f1d722053ec1, 0x2bb7a9d286372780, 0x39d36fa6f4568912}, gfPOne, gfPOne},
{gfP{0x4ae3c3269e627dfb, 0x5a587ecb9b5cb410, 0x3e4168f27f1c5afa, 0x8a9e67e5f80fd9}, gfP{0xa6cd8669cb4d5416, 0xdc61b52d99bcb419, 0x88710f486cecec3e, 0x331005bb9104d453}, gfPOne, gfPOne},
{gfP{0x4cffcd1f0a5417e4, 0xcedfebf4dd10eb50, 0x7199305ae4f5d6c0, 0x85ffc4aba0a7c6fe}, gfP{0x14fc12ae26245915, 0x60632cb8add1b0d2, 0x52b5f05423fcdc7a, 0xabac00cd94bb724e}, gfPOne, gfPOne},
{gfP{0x590fe48280a46054, 0x2996c1a5df1275b0, 0xf40dacc7ed47872d, 0x4f6c452330453366}, gfP{0xabf944a36fe8e67a, 0x62d2ca2afb555546, 0x3264694a2a1c09da, 0x75ab8d47d53c632d}, gfPOne, gfPOne},
{gfP{0x7fefd4ed5ac7282c, 0x41b1a1622fd4738e, 0x7e1fc0a15e869e, 0x18fcf6f97adfb7c7}, gfP{0x6014db0b38b3e196, 0x4361d962c964777d, 0x12364d819feaeeb7, 0x32f83ba466e858e1}, gfPOne, gfPOne},
{gfP{0xc3be93c740293517, 0x62f8ba7705b3e77d, 0x545ea87a3b486c6f, 0x3f63a5e6c13a2bae}, gfP{0xca6692f81bdb638d, 0x259948a034f84850, 0xeb77953a658fdf8, 0xa1c3a1a8fa2fd206}, gfPOne, gfPOne},
{gfP{0x2dbc0a109c92014a, 0xac2b00cb58eb6bd1, 0x13a8f3ae10bfa548, 0x5a365caf3f23858}, gfP{0x4344189d982e3724, 0x5f5878055a75befa, 0x55150105a405d6ad, 0x890b283f5f9b1ea}, gfPOne, gfPOne},
{gfP{0xade8848d7154f1ca, 0x6f03291746c34d2c, 0x2eb6887ee8a65d36, 0x5bfb84958e7aec0b}, gfP{0x865d068655041db4, 0xbb2ce42c3336bb70, 0x5bf3f2631d02002e, 0x6b6c332e71f5cc02}, gfPOne, gfPOne},
{gfP{0x89edc8810edaf6ce, 0xeb0538c5de469428, 0xbe12a7d7bfc798ef, 0x5b06212a92096373}, gfP{0xe3fd08f7683ab120, 0x47320935545c1dfd, 0xd95f058ab8139976, 0xa83500d0e0db4b59}, gfPOne, gfPOne},
{gfP{0x534cf1ebeecafd1, 0x5064f74be40e509e, 0xff44764f7da0b941, 0xace00af12ccf48dc}, gfP{0x894e2fd8107a2d43, 0x273be2c5dfae422a, 0xa1aafb55113a2174, 0x4cfb849394b3be06}, gfPOne, gfPOne},
{gfP{0xc49994c7faab274d, 0x41ff9dd8a85129c7, 0x52b1088f1d4242f2, 0x7db1e4d360032ea2}, gfP{0xf5c6b0dafe6527fc, 0x1d970a083bbd5266, 0x38ba89efdafddd56, 0x68c77897337efea4}, gfPOne, gfPOne},
{gfP{0x4b5303ad036255bb, 0xd67f6582da500a9c, 0xf4bbe23b298c31f2, 0x2e007604c640ca10}, gfP{0xd2e91aeeb40acb7, 0xec0f24d3618434b3, 0x76fdf6770c4921f0, 0xa7103eae7f93d219}, gfPOne, gfPOne},
{gfP{0x7a4d64de8859c126, 0x6263bc0f1a5c17f9, 0x74e00a2133a6c016, 0x3963f36605ba8b36}, gfP{0x9c52ca1d17f48028, 0x8104ef2f9764e8e7, 0x2b8e0237f7533e0c, 0x519b24e4c97bae12}, gfPOne, gfPOne},
{gfP{0x613e0c9e7e4da1c0, 0x8f172375727fd6e2, 0xe81ff51982a6c41c, 0x4eed4e26ea668083}, gfP{0xdb7b398fdebc586a, 0x69d8ea6246faf392, 0x2d3bc523e6c8258d, 0x558bb8f3231caa04}, gfPOne, gfPOne},
{gfP{0xcbb7c66f5cb74161, 0x626e935fa10bd251, 0x3d2f610e0613d51, 0x801657bc335df137}, gfP{0xb8ccb862d7a8eb11, 0x66148fee4787b7cd, 0x91d3258ce654d1c9, 0x7bde5ff69c33fdd1}, gfPOne, gfPOne},
{gfP{0x2448daff554c6b43, 0x9c7a0f594520d528, 0xa75145fcbe4e16ad, 0xafb19cb3ea16f941}, gfP{0xf084b43289761071, 0x7f0b6c9ee0a094ab, 0xada80c607d423d43, 0x96b9b3e9c68ad8db}, gfPOne, gfPOne},
{gfP{0x5fc7b9945b3d71e5, 0x3a29106d5fb61068, 0xdc97f98313de4e66, 0x1957a43c916e732f}, gfP{0xab35cda5dab8ed48, 0x5d3e549342ef94c1, 0x461b373d895d974f, 0x5fb50b1344ff1cf1}, gfPOne, gfPOne},
{gfP{0x95da5ed748c60678, 0x4e3a30e970902de7, 0xb42ab5c0f6fb1497, 0x2da1984ece49a3a1}, gfP{0x8053022c7ef95301, 0x91ecbdcf31475603, 0xa6be61f47070280a, 0x51eef68b2da0991d}, gfPOne, gfPOne},
{gfP{0x52b2332357053035, 0xe298b291cbd2ab72, 0x47741ab8aee0d9f, 0x680f9a2a17ba7efa}, gfP{0xc2cab72dac3a107c, 0xdcea96b2208bd7e7, 0x5f78963f7d538a94, 0x10a1839f5aa99b1d}, gfPOne, gfPOne},
{gfP{0xd2813441856ab167, 0x9373767664eee31b, 0xc49325639d571c57, 0x7b41b7cb342bc4c7}, gfP{0xbdd3e44bf07b972c, 0xd64052aa5dac1bd0, 0xe11ace28beb79ee9, 0x37a2121f6d4bf624}, gfPOne, gfPOne},
{gfP{0x58548a06f1ea9d78, 0xb9b99cc0f55a8afc, 0xe51413a4b19979a, 0x406a3ac41e79f7b4}, gfP{0x780ff05333617202, 0x7fe20d43eb745163, 0xe3e7b7475027cb6a, 0x13dd1aca24b7af6f}, gfPOne, gfPOne},
{gfP{0xa43d604e74d69332, 0x42c06a3235a47a59, 0x941801eaebd923cd, 0xaf5c699b8a8c96a5}, gfP{0xa5973af352b3d784, 0x43864487580fde98, 0x10abe5251462cfe8, 0x78b5c82c6cf1f70d}, gfPOne, gfPOne},
{gfP{0xce47d5702154990f, 0x607ee781820195ab, 0x70c0b489b0afccf1, 0x8588651b58c7be0e}, gfP{0xde3c44b3c3eb8034, 0x4082e336f9680ce8, 0x5ba1275f2c2d0e82, 0x49e025974813bf57}, gfPOne, gfPOne},
{gfP{0x1ceaecbd1bd7fdbe, 0x527cb80ccb7568c7, 0x199710b3f259b03f, 0x8f879dbb9b3dc3ca}, gfP{0xe809213a2fcc6d8b, 0x734e2bbaec309388, 0x99386377e05a18f5, 0x6d72d96d03e2c95d}, gfPOne, gfPOne},
{gfP{0xacca7849ca39fec7, 0xb460de754a80e824, 0x995e3b2ea7ffcdf3, 0xad5b4846180d95b}, gfP{0xb823d9dbc98bf826, 0x5abf5b87b0fef244, 0x59e8d188fe07d6c1, 0x949c56ce93966ef9}, gfPOne, gfPOne},
{gfP{0xf34282e7ecd21dc7, 0x8679d81e3d0e8bf8, 0xce46c9ef80d03b6e, 0xaa301832aa7a5a1e}, gfP{0x454746f43a8202a3, 0x6bc7278ac271030b, 0xc022d661edceec7f, 0x9ffe9483326e4a4c}, gfPOne, gfPOne},
{gfP{0x7eee34f6cd4e319e, 0x36fa41911e2b5231, 0x991bc6831a3c637a, 0x42d10739c8992a96}, gfP{0xb08a53378d0195c0, 0xfbc9554b9ec970a8, 0x403b806f55a71e61, 0x2c03082211fee7a}, gfPOne, gfPOne},
{gfP{0x8e4fed59eab327b2, 0x6bf815e591b6bf4, 0x189a6bedbd6871f6, 0x5e517c852f951d3f}, gfP{0xbf3169adc081e845, 0x18fe345d0f208c2e, 0x40ede4f50a95bd7d, 0x58f6bddd5f62163d}, gfPOne, gfPOne},
{gfP{0xd4c658ee782f66ef, 0xc48b53fdbb11f779, 0x8959c8eae84942a1, 0x458a59299e6bf76d}, gfP{0xd90c557f56c6631e, 0x43511713cd9d06fe, 0xbdd59b20817beda3, 0x14b9f4ac6b9be7c4}, gfPOne, gfPOne},
{gfP{0xff4a2cdd53e44546, 0x8a108ea11bd63a46, 0xd5ba0072898100db, 0x169729ba87f7a6b9}, gfP{0x55042d6ea1a53bea, 0x39b530ce347810be, 0x5370095c8b3ac79e, 0x8dbda8940baa649f}, gfPOne, gfPOne},
{gfP{0xdd5f6b25243bb894, 0xe5b0bb1c9e835a3e, 0x3a1c1a615f055454, 0xa02102f811eae2c1}, gfP{0xdc0dc988a6435de8, 0x99a872d7d7123b0a, 0x215c6bf51660d83c, 0x487302618a002b8d}, gfPOne, gfPOne},
{gfP{0xee787bb4f2463b8c, 0x487feb782873d475, 0xfb6dd178a1d412fb, 0xa2cf5b23af2acd3b}, gfP{0xd77ca577924a1f21, 0x10b810c50f184465, 0x7f29d0e6bf3d4042, 0xa67b192d774f35f9}, gfPOne, gfPOne},
{gfP{0xba99ac53038e1e9, 0x80a3624af2adf6e8, 0xe737a73807ce79f6, 0x14afba07e55a6d50}, gfP{0x4e0b8d91da04f1f1, 0x79667e4e655e19ec, 0xaa1ab4bdc465c35f, 0x54a7d0336ae002c}, gfPOne, gfPOne},
{gfP{0xf3629579da04da05, 0x355627f9438c5527, 0x366b5a127cced7b, 0xa896eb4c13fd8087}, gfP{0x921f31efb2cf9e89, 0xf549080991e1dc03, 0xf1bebc6b4bdd4b3a, 0x33c9e63202bf4472}, gfPOne, gfPOne},
{gfP{0x8653581950b31142, 0x36cff22e4717bfef, 0x67cc456070963993, 0x4e0958b0d0770c4a}, gfP{0x8b5f5031af6f0057, 0x8efced1d8fe9c043, 0xcef02464bdc925dd, 0x6f86d163fb05ed5f}, gfPOne, gfPOne},
{gfP{0x126cd183331861ba, 0xa767c1d0b5df342, 0x9a00adadca46e3bc, 0x5bc67e273355743e}, gfP{0x46baecc5f15b50cc, 0xd5ee97907606d217, 0x4cb039f9762270f4, 0x519d365a0301298b}, gfPOne, gfPOne},
}
var curverBasePrecompted4 = []*curvePoint{ // nolint
{gfP{0}, gfPOne, gfP{0}, gfP{0}},
{gfP{0x22e935e29860501b, 0xa946fd5e0073282c, 0xefd0cec817a649be, 0x5129787c869140b5}, gfP{0xee779649eb87f7c7, 0x15563cbdec30a576, 0x326353912824efbf, 0x7215717763c39828}, gfPOne, gfPOne},
{gfP{0xba28d1e3d5048a4a, 0x304272c35402c713, 0x69e99637e85352dc, 0x8700ed2483b0b77b}, gfP{0x969534adc499393c, 0x5e8df13a66ad38f0, 0x8f0df437dbc29dcb, 0xa08db36b5f08d049}, gfPOne, gfPOne},
{gfP{0xa343996a7367c29d, 0xe96e87ea23df0d62, 0xddf5f38d18e96a63, 0x5098ee53e76f8e35}, gfP{0x97c267182697b1ee, 0xe867e6ea877b42e0, 0x320ca334328006be, 0xa8739bc600caf504}, gfPOne, gfPOne},
{gfP{0x46b8b8692a8eda6b, 0xe98400d89a9938b2, 0x2f6f8c3aa958752e, 0x87928e7b21296dff}, gfP{0xc578f06244de1eb7, 0xf67910a8d1befa71, 0x313c89849f89483b, 0x285df6a6b5c9f283}, gfPOne, gfPOne},
{gfP{0x99f991c62f896dc2, 0xca48dec99b12a0ca, 0x47979262c298eaff, 0x4e7325f6fee9c93a}, gfP{0x4a621d37ab703864, 0x22ea8d68bccdc8e7, 0x1872c133d0d4ed44, 0x8f83b2400eea2c5e}, gfPOne, gfPOne},
{gfP{0xa48c4767ad45f7fa, 0xe4e180d4073c21b5, 0x606a49caaf4e22e0, 0x824b6a4d362cb4ab}, gfP{0x123813621182b89e, 0xf02b168a564ca3f7, 0x5946559985a31a8a, 0x83898fb99a58ae51}, gfPOne, gfPOne},
{gfP{0xd8ce0f64e4ff7789, 0x56a63f768bf4dfd6, 0x70c98904775436b2, 0x53cac0d685e11505}, gfP{0xfad84ab4c6cd3523, 0xa3a9aa3de679b3b6, 0x62dc68e29df06692, 0x165cb89486b919bd}, gfPOne, gfPOne},
{gfP{0x40e1c1513da71eaa, 0x71ed359497847585, 0xa45a19d19b1e6f33, 0x84b7412821186f41}, gfP{0x8bd69894806e3a1d, 0xb0ee7ab013af20f, 0x7cd371ed4e97c36b, 0x68563ee8764f345a}, gfPOne, gfPOne},
{gfP{0x46f64915f6a708ef, 0x5e96a75c790f9c42, 0xadc963e8f8f272c1, 0x7a7e2536a99d3a36}, gfP{0xf9472e631d52bc0f, 0x8b04b9c53b647691, 0xb4ac69af1e267c98, 0x3ace4cdc41d24d6}, gfPOne, gfPOne},
{gfP{0x211ace47487ca54b, 0x167124cfa02d4a6f, 0xf67d81ac451be038, 0x49953a9fa0ed3631}, gfP{0x9c39db45d05c392, 0x21e8ea068ae98cfc, 0x931dc970da019c09, 0x2d9f574d46176925}, gfPOne, gfPOne},
{gfP{0xb5e93687bbeeccd8, 0x89f331916207b439, 0xe39647be10152e3b, 0xaa3873ed3faec88d}, gfP{0xb60c53a84c62ede4, 0x720778e426caa01a, 0xef774fe256a101c2, 0xa9405ea40628fdb9}, gfPOne, gfPOne},
{gfP{0x414ab8de0e998a9, 0xe6b76b533b13a8ff, 0x3c14e5384013b578, 0x716b8aefb78f23bd}, gfP{0x9e9ee97502cbb199, 0xb55144227a8ab0e3, 0xbc498660e38964de, 0x34601293617f87a7}, gfPOne, gfPOne},
{gfP{0xbe97fd85d257b670, 0x3cce7057d39d7947, 0x1cc124d0f0ed37d2, 0x9f8ac5ffa5e75faa}, gfP{0x633c732a8de82bd8, 0x221bc8c2dd8b46c5, 0x76ecc18258be2e38, 0xb16f0f8b0d2dd9a4}, gfPOne, gfPOne},
{gfP{0x983ed8aaf1166b70, 0x37664d28789570bc, 0xbdb0ef89bbd065dd, 0x988c762b5abd2c16}, gfP{0xba1b835fb556181c, 0x2c4e63c063ed161e, 0xcb2ab2a379ed6179, 0x64abe36bf1d027b3}, gfPOne, gfPOne},
{gfP{0x79b6eb3c2e2a57ff, 0xede997305ad1e6ce, 0x395b0f074e9adca4, 0x36763c5d6c7dc962}, gfP{0x2611a3268fb513a5, 0x5b1100f2e584ebf9, 0xe163637e560f1e0a, 0x68d51102d894b745}, gfPOne, gfPOne},
{gfP{0}, gfPOne, gfP{0}, gfP{0}},
{gfP{0x95ca1bb919a322eb, 0xc4d13c49d672e273, 0x4797255d41bb8c0f, 0x1ebf8f510af182d0}, gfP{0x1d74935661933d97, 0x10deb64252136a02, 0xee16c808be654172, 0x28187964a641c5d3}, gfPOne, gfPOne},
{gfP{0x4e0b75ceaf4a2887, 0xc3841acb67fb189a, 0x18c9578469741c9a, 0x692fab8164cee33f}, gfP{0xfaf6b1c1b91ffbb, 0x2161e01d6794e678, 0x757e6f30473f2d5f, 0x269bd35f64914a96}, gfPOne, gfPOne},
{gfP{0x8c421ac5ecba0343, 0x101d2e9b67b0f4ee, 0x3fafcfad92789f5a, 0x64642f323001a421}, gfP{0xa781b10be5989c03, 0xe9996e4b3cd51cb7, 0x8a35b2c52f42274d, 0xacc965059aa5cd5b}, gfPOne, gfPOne},
{gfP{0x881f1dfd166cd3c1, 0xd308eac84be917c8, 0xf5b6207a3992b980, 0x261ae33ba5f17e39}, gfP{0xbe638db9fd976a70, 0xb7619dd3949f24e9, 0x56518e2b24e07ede, 0xa77bfab0e221f51d}, gfPOne, gfPOne},
{gfP{0x5aa749b0a053d5ec, 0xe989c59830162157, 0xa58c960ce6cdfd15, 0x74868ad561f95d32}, gfP{0x8d5aa4b4640a5307, 0xda75bcdfac06e18c, 0xcc0467e2cfdaba6c, 0x673644fdbb0cb089}, gfPOne, gfPOne},
{gfP{0xc88d68fd9db1c411, 0x113922e3aebfcb57, 0x56104db14f59b8b3, 0x1a978fb2fdd65680}, gfP{0x2232a99fcf41f354, 0xccfd83f1670ab665, 0x999957f9258485fd, 0x59f80b1e0eb01af6}, gfPOne, gfPOne},
{gfP{0x13ea6f5d2bdd3a39, 0x92af44598a10365a, 0x22fc94fe947ac0fe, 0xb5714e95e84acf99}, gfP{0xb647673d1ee38529, 0x7e183dcd41859746, 0x776698b19f585432, 0x4cc5626601296793}, gfPOne, gfPOne},
{gfP{0x8bd9077793384ac2, 0x562cfab6f939044c, 0xe48a7412cbeee7a4, 0x7018feb31e1b2c27}, gfP{0x93a427c3005e372e, 0xd75aa13fd23f9921, 0x118cdda96b6e31a6, 0x7cca0c12e96bd486}, gfPOne, gfPOne},
{gfP{0x2b81209d5addcdfe, 0xad2f5ae187091159, 0xfb5c3cdd44b8721c, 0x3d8429baf0dfd4f2}, gfP{0x7d3c7781fba9cc68, 0xab7c17165597393, 0xefe1a4e041e5a378, 0x8dd8e1085a5f3b5d}, gfPOne, gfPOne},
{gfP{0x16c26ecd4c10404c, 0x9bcf7433ed81d6ff, 0x95431cf91ecb16db, 0x560cd980c9f85c6f}, gfP{0x4fa4d2e4971158d2, 0x89447d61e3417269, 0xbc57d40f7ea3ac43, 0x4907f1cc668f1080}, gfPOne, gfPOne},
{gfP{0x88d7d2f612801225, 0x22fe9f1c57b1ada8, 0x81f6a9e346eeb999, 0x591b5c2d5d8411bd}, gfP{0x8fe5439fc644d114, 0xae100ef4db65e95c, 0xc7830879884a755d, 0x7cc9eb1659f3e68e}, gfPOne, gfPOne},
{gfP{0xd58f103faba0ac53, 0x71d1f187f22b9524, 0x6401e34eb430bcae, 0x9abfb1f7072947b7}, gfP{0x509bd01835b40fb7, 0xa3eccd73fb7aef58, 0x177365855294585d, 0x9cef811802bd32f9}, gfPOne, gfPOne},
{gfP{0xd36e81958b531b62, 0xcbceefbaab691fb2, 0x22358d9f10bd2e21, 0x645c4952a4317076}, gfP{0xa8a627af86f3cb82, 0xc2a341ba92202dc4, 0xb10a0e58dfc9f32d, 0x8350461932238401}, gfPOne, gfPOne},
{gfP{0x20c7d06e2b4ea3ba, 0x4206b7291f401d6a, 0x7c788a3324638462, 0x3bd9b441b713f93}, gfP{0x33b74f18051318c, 0x681c4ee3bac4038e, 0xfa63b1c04d4feade, 0x6b6024c1f398ab06}, gfPOne, gfPOne},
{gfP{0xdd2c191ebbc21073, 0x81de1d7ef35317f2, 0x58485d136712131, 0x530fdeb2cc474f4f}, gfP{0x69011c8b81da7079, 0x569b09f818f83323, 0x134bee7a04f369de, 0x1f47848d0d485a42}, gfPOne, gfPOne},
}
// if free - constant time.
func (c *curvePoint) MulBase(scalar *big.Int, table []*curvePoint) {
// montEncode of point inf: (0,1,0,0)
t := &curvePoint{gfP{0}, gfP{0x1a9064d81caeba83, 0xde0d6cb4e5851124, 0x29fc54b00a7138ba, 0x49bffffffd5c590e}, gfP{0}, gfP{0}}
if len(table) == 32 {
//nIsInfinityMask := ^uint32(0)
var tableOffset uint
// The loop adds bits at positions 0, 64, 128 and 192, followed by
// positions 32,96,160 and 224 and does this 32 times.
for i := uint(0); i < 32; i++ {
//if (i != 0) {
// t.Double(t)
//}
t.Double(t)
tableOffset = 0
for j := uint(0); j <= 32; j += 32 {
bit0 := scalar.Bit(int(31 - i + j))
bit1 := scalar.Bit(int(95 - i + j))
bit2 := scalar.Bit(int(159 - i + j))
bit3 := scalar.Bit(int(223 - i + j))
index := bit0 | (bit1 << 1) | (bit2 << 2) | (bit3 << 3)
t.Add(t, table[tableOffset+index])
tableOffset += 16
}
}
c.Set(t)
} else if len(table) == 256 {
for i := uint(0); i < 32; i++ {
t.Double(t)
bit0 := scalar.Bit(int(31 - i))
bit1 := scalar.Bit(int(63 - i))
bit2 := scalar.Bit(int(95 - i))
bit3 := scalar.Bit(int(127 - i))
bit4 := scalar.Bit(int(159 - i))
bit5 := scalar.Bit(int(191 - i))
bit6 := scalar.Bit(int(223 - i))
bit7 := scalar.Bit(int(255 - i))
index := bit0 | (bit1 << 1) | (bit2 << 2) | (bit3 << 3) | (bit4 << 4) | (bit5 << 5) | (bit6 << 6) | (bit7 << 7)
t.Add(t, table[index])
}
c.Set(t)
}
}