diff options
author | Mohammed Attia <skeuomorf@gmail.com> | 2014-03-12 16:07:21 +0200 |
---|---|---|
committer | Mohammed Attia <skeuomorf@gmail.com> | 2014-03-12 16:07:21 +0200 |
commit | 987cc708e25df42a95e6a1eae189b190e58643e0 (patch) | |
tree | e042f4ef62cb4b0912a8419de32aea71d07f8c04 /tests | |
parent | 9b0705bc789610f598218d11da1da9711c820ed8 (diff) | |
download | cryptography-987cc708e25df42a95e6a1eae189b190e58643e0.tar.gz cryptography-987cc708e25df42a95e6a1eae189b190e58643e0.tar.bz2 cryptography-987cc708e25df42a95e6a1eae189b190e58643e0.zip |
Add loader and loader test for FIPS DSA KeyPair vectors
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_utils.py | 1371 | ||||
-rw-r--r-- | tests/utils.py | 55 |
2 files changed, 1425 insertions, 1 deletions
diff --git a/tests/test_utils.py b/tests/test_utils.py index cc57665b..7d988c26 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -23,7 +23,8 @@ import pytest from .utils import ( load_nist_vectors, load_vectors_from_file, load_cryptrec_vectors, load_hash_vectors, check_for_iface, check_backend_support, - select_backends, load_pkcs1_vectors, load_rsa_nist_vectors + select_backends, load_pkcs1_vectors, load_rsa_nist_vectors, + load_fips_dsa_key_pair_vectors ) @@ -1101,3 +1102,1371 @@ def test_load_rsa_nist_vectors(): "s": b"deadbeef0000" }, ] + + +def test_load_fips_dsa_key_pair_vectors(): + vector_data = textwrap.dedent(""" + # CAVS 11.1 + # "KeyPair" information + # Mod sizes selected: L=1024, N=160:: L=2048, N=224 :: L=2048, N=256 :: L +=3072, N=256 + # Generated on Wed May 04 08:50:52 2011 + + + [mod = L=1024, N=160] + + P = d38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d4b725ef341eabb47cf8a7a\ +8a41e792a156b7ce97206c4f9c5ce6fc5ae7912102b6b502e59050b5b21ce263dddb2044b65223\ +6f4d42ab4b5d6aa73189cef1ace778d7845a5c1c1c7147123188f8dc551054ee162b634d60f097\ +f719076640e20980a0093113a8bd73 + Q = 96c5390a8b612c0e422bb2b0ea194a3ec935a281 + G = 06b7861abbd35cc89e79c52f68d20875389b127361ca66822138ce4991d2b862259d6b\ +4548a6495b195aa0e0b6137ca37eb23b94074d3c3d300042bdf15762812b6333ef7b07ceba7860\ +7610fcc9ee68491dbc1e34cd12615474e52b18bc934fb00c61d39e7da8902291c4434a4e2224c3\ +f4fd9f93cd6f4f17fc076341a7e7d9 + + X = 8185fee9cc7c0e91fd85503274f1cd5a3fd15a49 + Y = 6f26d98d41de7d871b6381851c9d91fa03942092ab6097e76422070edb71db44ff5682\ +80fdb1709f8fc3feab39f1f824adaeb2a298088156ac31af1aa04bf54f475bdcfdcf2f8a2dd973\ +e922d83e76f016558617603129b21c70bf7d0e5dc9e68fe332e295b65876eb9a12fe6fca9f1a1c\ +e80204646bf99b5771d249a6fea627 + + X = 85322d6ea73083064376099ca2f65f56e8522d9b + Y = 21f8690f717c9f4dcb8f4b6971de2f15b9231fcf41b7eeb997d781f240bfdddfd2090d\ +22083c26cca39bf37c9caf1ec89518ea64845a50d747b49131ffff6a2fd11ea7bacbb93c7d0513\ +7383a06365af82225dd3713ca5a45006316f53bd12b0e260d5f79795e5a4c9f353f12867a1d320\ +2394673ada8563b71555e53f415254 + + X = 8007aace9226517add3b31fb72fe57cf0b71de87 + Y = 0869599e9c233f98719353f50431b8cf9219443b245ccca95fcf81d757288b27b4ee08\ +037f0a8ee5d997eecf7ddf1cae641fa0b24bb0e0fb97765166d92a79b1519cb9549431947ff58e\ +de390c8fe2c44ff1fe9f8b15839d93cfd727dd0c2698ccf04f85f491d59a4e7fbf873122228af5\ +c27095eea09d7d13b0d585c79c4849 + + X = 2f08cf0627c8ffbde07420c324e594170da5879e + Y = 1f9098ddb4ec6f7a14841ae87792450292f210fb5a7a908117731b3c5f3d1694331a85\ +a129b0b6b5363e61544c351799ef1fd9fdae6f7707b1ef55933192b03cc41a773d1e2c119fe592\ +05ce8f8c47f27ef0620c6892c61bb04907e00e6b82c81e1b77bb4e3f87562327555a226217aaaa\ +4e1d29bac7cc8cbebceee3895d8917 + + X = 423616c18872f9a3ae1db1f70302ae8decff0be9 + Y = b62df8a3635c8f5acdc92d710d920a643eb93010d003e6e61eee57d6a80ca5512bc1a0\ +b689dd256a2ff1dcac4adb099ef66317de9c6b5188627c1f0aec54049d0bf1c8214c492d09ce82\ +43af9508c49493ea8d6f85d141850ebdabf6cbfeced92c1cc0b844227eedfc03e8650f89c2b6d1\ +1462d8cc5b78254574bbe558f2e724 + + X = 4c4489ee5a17f30eec191644ae28105aafb82307 + Y = 37fe0fdb5adec7bd56cdd68b1fc5669c292ae0c0c7c339aab844b7b83bc0118056274a\ +1f2b2bd4d4c8973458e86bddff94a6adb9b28d9a1f3ff0bc82972e3c8e452756ab7f921750f773\ +d75c58346096ce2b804c57f2dee415471013d9a31d347960c42e5748d0feda02bdf0b22902103d\ +e1591d9b5dcdfb18575d8c164031d1 + + X = 4ea539bf524cacbbf850ea20e18659db13c14cc1 + Y = 7d4b1d55c3cba4f1d7073afda9faed928d7653eac594ef2c84a7c83a77817e186a4706\ +b4dae53f67fe7fc97e5915babda7398aec5a8afa302de1af67e709d6cc5cab6d19af8350273468\ +75758cedb5552494a85e8b2292f69cd2d665fc3375180f30110f5f9f03472ce431a64db795bce0\ +7b0d42bb0d22dc94182dd43c2dabe3 + + X = 272b5be463d69c564fb82e54b8824fd5622fd819 + Y = d133f99a7d8c5168f58a1f8be91e40d98446336533517289d40f0f6c974bbc3abd32de\ +81b92ab4c0d164b44271a884992d93104cca9e85acdec20717492e7cddd24f99146e59c16877cf\ +4a2f4fca669528b0e4a42b2154c09b4a15ac74d1aed9ca141b7fd6b8eeb5f315a88dfade013539\ +f3ca61628411e89f0e6553ed18c03e + + X = 49df2e11a4cab60b3d8f53a02bc8d982a52035e6 + Y = 555b359dd7998b8020f04f84f7e4ee3e7d7d2352d95b6d5bc51b96a2132bc1ac779652\ +ccfbfb5b102edb3861aa98d4feba59f65bd0501755c5d0d894b031841365f2f4e9749b5850542d\ +be82a3b5d614d93f34692087507d2972acdab700892bb847cb4e881998342b7230aef923a07b07\ +563efbc053a300c0ea284d7f381da2 + + X = 06f5fe27b77fbdb24beb34f4fe13203e46ad8460 + Y = 881344b829c31389b4882c2fde977d73adb72e5001f41b57c7726b9ac99ef413d0fb5d\ +f9ed587994c45580efa11d4445cea85b149e74f746308ee223c82263b14f4a2ec5ae971083dca7\ +25c5fb0ae233b67a4be60be8aca3f40c5bfaf9d9c4dc40d49dec1c4e539c88cddfce40106cb6f8\ +8fd094037fae75de54317ad4842cc1 + + [mod = L=2048, N=224] + + P = 904ef8e31e14721910fa0969e77c99b79f190071a86026e37a887a6053960dbfb74390\ +a6641319fe0af32c4e982934b0f1f4c5bc57534e8e56d77c36f0a99080c0d5bc9022fa34f58922\ +81d7b1009571cb5b35699303f912b276d86b1b0722fc0b1500f0ffb2e4d90867a3bdca181a9734\ +617a8a9f991aa7c14dec1cf45ceba00600f8425440ed0c3b52c82e3aa831932a98b477da220867\ +eb2d5e0ca34580b33b1b65e558411ed09c369f4717bf03b551787e13d9e47c267c91c697225265\ +da157945cd8b32e84fc45b80533265239aa00a2dd3d05f5cb231b7daf724b7ecdce170360a8397\ +2e5be94626273d449f441be300a7345db387bebadad67d8060a7 + Q = d7d0a83e84d13032b830ed74a6a88592ec9a4cf42bf37080c6600aad + G = 2050b18d3c9f39fac396c009310d6616f9309b67b59aef9aee813d6b4f12ee29ba8a6b\ +350b11d4336d44b4641230002d870f1e6b1d8728bdd40262df0d2440999185ae077f7034c61679\ +f4360fbb5d181569e7cb8acb04371c11ba55f1bbd777b74304b99b66d4405303e7120dc8bc4785\ +f56e9533e65b63a0c77cce7bba0d5d6069df5edffa927c5a255a09405a008258ed93506a843366\ +2154f6f67e922d7c9788f04d4ec09581063950d9cde8e373ea59a58b2a6df6ba8663345574fabb\ +a9ca981696d83aeac1f34f14f1a813ba900b3f0341dea23f7d3297f919a97e1ae00ac0728c93fe\ +0a88b66591baf4eb0bc6900f39ba5feb41cbbeea7eb7919aa4d3 + + X = 3f19424da3b4f0cafca3fc5019fcd225dd7e496ffdf6b77e364f45be + Y = 7681ed0ac257ab7ff17c52de4638c0614749792707a0c0d23883697e34963df15c806f\ +a6206f7fafb3269018e7703bd1e6f518d13544331a017713dbbe0cee8da6c095271fbf24edb74a\ +44e18b1d3b835622f68d31921c67c83e8479d1972ed0cb106c68188fe22c044254251ebf880b90\ +49dc3b7958ef61e1e67d2f677d2a7d2ab6b7c42b70cc5dedc3e5de7459a2dbc70c69008553d7ff\ +b6bf81c012c8bd67bdddeaab9a4a4373027912a7c7d9cd9cfc6c81dffe0cc7a6d40c3b2065aee7\ +be80e3c35497d64c8045bc511edaf7314c84c56bd9f0fecf62262ea5b45b49a0cffb223713bdbd\ +3ad03a25a0bb2211eba41ffcd08ab0e1ad485c29a3fc25ee8359 + + X = 241396352dd26efe0e2e184da52fe2b61d9d51b91b5009674c447854 + Y = 2f07a3aa9884c65288e5fef56c7b7f4445632273290bae6fcaab87c90058b2bef81ad3\ +34958657cf649ffb976d618b34ce69ef6d68c0d8bfe275cf097a301e8dd5595958e0c668c15f67\ +b5c0b0d01983057ce61593635aab5e0564ed720b0336f055a86755c76be22df3b8487f16e2ba0b\ +5136fd30d7e3b1d30c3bd298d3acc0a1988a11756c94e9a53184d0d3edfbb649caf03eace3083d\ +e9933921e627f4b2e011d1c79e45d8ea1eb7e4e59a1cbd8382b3238474eb949749c985200fbb25\ +41e2dce080aa881945d4d935076e48a0846dc5513bb4da8563b946af54f546455931e79c065ce7\ +ca223a98f8fde40091d38eb2c3eb8e3b81d88374f3146b0afc42 + + X = 6597601e43fd515925142b0a74933737e59c3cd2aa80a794e10a389e + Y = 04d040606f0f62d332a4fff2800200ae6c18baf01d3f6d1e9474fffb267e0388532420\ +21e3e2747345da8bb87c723cc1c9c446152b47b76044de0521a253d9f50b38f310bd3f5503d92e\ +f78ba34c09988982ab8b8eabde78210cbaa68d18cf06b8fee156ffef4f85ce06af4e0515c77eba\ +d16b7651273551d82732196cd7b180f747b2f9fa33ff198981ad095145207a726cac95117b2d02\ +800e4d0bba1618dd2615393ecdd35c4ac45ac522ea3a6178691a51c3d83c352dfc762c22967560\ +5851ecfc14af915f220632f74b2f3f285c8ec3ef5df1df2e330f24a4e45e121455813ed7671c63\ +c7efa5eb67a4387386e2d62b4c0006643526333185b341bdaf74 + + X = 0864c128bd440c2ae2c75818c3dd8638864c8986805229a8888b1fdd + Y = 092501d654b604f0b8a1d979c43412ca43328b5bd5894b1f9c473b17892b02d01ef8ac\ +61fd4c677e132417e57a0425042097037041a0cc76969bf3fc793cb58148bbbd2e46cd53a617cf\ +57d514310d78c1aac2d45f70cf99185edee78416ef9f7e871c0454a78904a43eab19a62042038d\ +a01d3e20cc564900ee917d2ba0aaf1797fcad1dff72d5b0dfd7a6a4818b352152c97d93a819237\ +d8176b178aaa043be6809a92a7a529fc76e76df9083db8322b2140f84e507975bd7c11bc9d8f84\ +d09e4756b60bdbd1d00d7761e45ce20c790fcc89ce9c611173750ccafc65e71c6be7bf04f8dcfc\ +1023aa6595df397906b968045abcf8d04ac7a8892ac660ed864b + + X = 7b77e817e3cefa4534e7c64c6100acee0141af243a9da541727245ba + Y = 302449ac7f32830c5ba247ed84c7164d9e868cbd93bd00bbd51afa84717f9c10f0984d\ +c5a528ac2fe8d8db4852ddbd553dffb6edf424ae7fcf9c04480a1fbd4209d4cecc29f3f2ebfb8f\ +5afb64b8f3cb022a3e73065483e3ea40d323fa843ffb9f2ef1be94e1f027bc680491d510177ee1\ +7a217c67e60a0a4d731d03398d4c9c2b212ed5e71291369f19b1445f677d32f4c441a84f908ec9\ +1d0a1c53337349eb5a74f94e127b57fd4baed51f3db00a7c4bb30b76ef088613422be64cc9e289\ +8337e6cd58d06a17eaa99b7c3324badec0b559dbaf435a32f82ef9c5f2c4766870cc1b9275d3e9\ +6e6315c55cf4d13ded14d8172df84eba120da038f12b1bf92dc4 + + X = 12b57756670073de8bc9f25a5a9ac10cecb5a34945ece8c3cfeefbe5 + Y = 7001d0f2b7c07e7589c0c28311419177388a79fb74f7b761c79b9c33d7f516f51b56ba\ +9c227cab80c5dc3a334b0ffb952ddee23a733dd4100a207cf03ff0b96a180118df0f8fdeee5621\ +10d837a535476dfac4de2b9a22dada75ad30e8a0b2c40f78db89f78b7558066dc46fb51adc8e0c\ +d5a43824a1bc80f46e1fcaf788e79631bfc0c93481c6f76b159043b846aee4ac94978baefe6398\ +ecb1ea5873c64d972087d80b6f5a285c9f349341393bff6fc53ddaacf8222e21b2ad5a8d0a030c\ +71da771110d35db80500fccb2a778f76886b2c3187a41cf349b908cef0ce4e909cf3925535bde4\ +3b4162307207e2e4de23bc10381a769c4616eb0591de1fbe64f8 + + X = a9f140ea5c160405bd7b0024036556de7452eaa4e44553c99d36ace9 + Y = 51cf000e715c5710110448e73647e00d8760da9cc3eed625c08e8a049ef61f8c79e88e\ +0d28e3705c4031d95dcd05324007683cc65c981ea08c8698e84d291e20357899a44ae65ab98f7f\ +7e7047d43883266a56a69a445449c4c179156ed4a2f5495363bba0b6c88ec609fef584d77e3359\ +186c45ed89b6353839a06c9a258e3ab01d7d88a671c796787c40e539f32013de4b2cbefabc8bb2\ +0a0f3c18657d11dbfb67787b818a9f75b1761bc0dd5f49d8e5f92b338f5cea0567f1dc7840df41\ +ecfd1d49b2e1bb0f25ca8b90129076f57f1d137bcfca9be6dc4816b4413793c1e4deb97e545462\ +88ec5ebbfbad08e8ad30e1327437d709d54febcd4d403e0b5852 + + X = b865321afa5061d48c51fd3b5e2c0b3ab6bedcbe780ebc51ccceb3e0 + Y = 8b1e3f87a4a5e4b2fc6f5ea6301f48d7f82cb9608e866952177638050172dc5c7a7248\ +4e526bd6593265bea0b37ac4b471f9ebe8d23b9457f680bfe3a13babfe0051a5ff38bde37cc1f0\ +48c3a5169237d41e2952e64e363576b70910c29c56571dfd4c4ff4651eb43ed060e082155bc90d\ +0baa2b67c6cd27d6badaecf921a276c3a98a2297b789f0e1f574eada6cae30706dfe96aef9fb43\ +07509c47364ed81e2e1ac16b2c2f8e040ca00bcd3ad04a33ae562cbc3779a9cbb6fe6c51669d11\ +23cfd4d5687d5c9e46c1e0e9205e638ae18f737804dfacc578c3a4aad529ceeb4695c10ed24c09\ +c88a2e723fc8bcc4a8cbd9c626245cfd1c6e2caef7abee1be824 + + X = 7aa8736a0b96f558c8998d65cc29dbf62f3172679b03f40ea60102d5 + Y = 6f675b01fac4ac2caac80cad0eda8ccc038c06ae8aa95ae5832f4e90ff744e73422a9d\ +5d53c109b056e2205d026bc8220098de413d46c3815aeafd83c1c2a111c4bde690be1c24bb95b5\ +fec1917f5d2a86533bdb8d3beebde645fe0a849479ccc92145507b0e283c81056ca3cc97685fea\ +8040f1881975ca17d166494d08207bc9efd92c62f2bdc2cbd1be8bdc7cf479885e225466d09e73\ +666c8d57c5e1ce3025f8912560adf769e54eb2167ccb69afbf958e178e8c0bbba55415b0f90d04\ +0789ed42be470b7171556d63799618f7eaf1a5bacfb8e8f5be4bda95a57822d96cdb3b454db927\ +4aac690879b66bda0672fc7fa6031ed40ac5b5a8ae5d0e4dd630 + + X = 7979f52dc7a4958f5075982e1c0c359dd398cec0a75ced7897834c4b + Y = 0264508b83422b402936c841b21b14d328202c0138180b823d22291914b00d2c2f8e3b\ +033da92e4b1f76b35332362117118404a66b5c87dec38957c2a15aa5d109d763be6a02f4389a26\ +c300e70b626fc68fbd04e1b2de8b8090d1a5a8e0a08dd110965569852121dcf44f92275f033cde\ +840896257645d9390ff95c0afa7a5b1085e3c02a481d5b3b304bd07007654c4daabb1993480cf8\ +2755a30bf9e66cf9d06f4ad75b7c2385682cc0719867ccd3e732a36ccd3275ddda126bc08e5093\ +349dde5ef729a6f972648b8fc974107be92f57511dc903651d90a5f1939748769dba01f0b7afa1\ +3c18e6c38a255fbba0d7d1d0eb2fdd4d1f9e2b10a9b0f7cf095c + + [mod = L=2048, N=256] + + P = ea1fb1af22881558ef93be8a5f8653c5a559434c49c8c2c12ace5e9c41434c9cf0a8e9\ +498acb0f4663c08b4484eace845f6fb17dac62c98e706af0fc74e4da1c6c2b3fbf5a1d58ff82fc\ +1a66f3e8b12252c40278fff9dd7f102eed2cb5b7323ebf1908c234d935414dded7f8d244e54561\ +b0dca39b301de8c49da9fb23df33c6182e3f983208c560fb5119fbf78ebe3e6564ee235c6a15cb\ +b9ac247baba5a423bc6582a1a9d8a2b4f0e9e3d9dbac122f750dd754325135257488b1f6ecabf2\ +1bff2947fe0d3b2cb7ffe67f4e7fcdf1214f6053e72a5bb0dd20a0e9fe6db2df0a908c36e95e60\ +bf49ca4368b8b892b9c79f61ef91c47567c40e1f80ac5aa66ef7 + Q = 8ec73f3761caf5fdfe6e4e82098bf10f898740dcb808204bf6b18f507192c19d + G = e4c4eca88415b23ecf811c96e48cd24200fe916631a68a684e6ccb6b1913413d344d1d\ +8d84a333839d88eee431521f6e357c16e6a93be111a98076739cd401bab3b9d565bf4fb99e9d18\ +5b1e14d61c93700133f908bae03e28764d107dcd2ea7674217622074bb19efff482f5f5c1a86d5\ +551b2fc68d1c6e9d8011958ef4b9c2a3a55d0d3c882e6ad7f9f0f3c61568f78d0706b10a26f23b\ +4f197c322b825002284a0aca91807bba98ece912b80e10cdf180cf99a35f210c1655fbfdd74f13\ +b1b5046591f8403873d12239834dd6c4eceb42bf7482e1794a1601357b629ddfa971f2ed273b14\ +6ec1ca06d0adf55dd91d65c37297bda78c6d210c0bc26e558302 + + X = 405772da6e90d809e77d5de796562a2dd4dfd10ef00a83a3aba6bd818a0348a1 + Y = 6b32e31ab9031dc4dd0b5039a78d07826687ab087ae6de4736f5b0434e1253092e8a0b\ +231f9c87f3fc8a4cb5634eb194bf1b638b7a7889620ce6711567e36aa36cda4604cfaa601a4591\ +8371d4ccf68d8b10a50a0460eb1dc0fff62ef5e6ee4d473e18ea4a66c196fb7e677a49b48241a0\ +b4a97128eff30fa437050501a584f8771e7280d26d5af30784039159c11ebfea10b692fd0a5821\ +5eeb18bff117e13f08db792ed4151a218e4bed8dddfb0793225bd1e9773505166f4bd8cedbb286\ +ea28232972da7bae836ba97329ba6b0a36508e50a52a7675e476d4d4137eae13f22a9d2fefde70\ +8ba8f34bf336c6e76331761e4b0617633fe7ec3f23672fb19d27 + + X = 0e0b95e31fda3f888059c46c3002ef8f2d6be112d0209aeb9e9545da67aeea80 + Y = 778082b77ddba6f56597cc74c3a612abf2ddbd85cc81430c99ab843c1f630b9db01399\ +65f563978164f9bf3a8397256be714625cd41cd7fa0067d94ea66d7e073f7125af692ad01371d4\ +a17f4550590378f2b074030c20e36911598a1018772f61be3b24de4be5a388ccc09e15a92819c3\ +1dec50de9fde105b49eaa097b9d13d9219eeb33b628facfd1c78a7159c8430d0647c506e7e3de7\ +4763cb351eada72c00bef3c9641881e6254870c1e6599f8ca2f1bbb74f39a905e3a34e4544168e\ +6e50c9e3305fd09cab6ed4aff6fda6e0d5bf375c81ac9054406d9193b003c89272f1bd83d48250\ +134b65c77c2b6332d38d34d9016f0e8975536ad6c348a1faedb0 + + X = 835fd2d1b7b03d90c5ebc073ee69b386c9c07ca06bce80bc574634af8d534f7a + Y = cbc3feccf1ef62d31df626a4b2e234afdf1795443e46a471ec8b902b0ae9af36344120\ +ed3ca6009751b03e8963a6151e7b2fe572837c3e23815d472ce75cfbaaaaf36e89a939983bd494\ +f0421b0f35079e5a243672d708ca3492539733b2a847f638167f7d64c8dd7e3cc8b2f0e7a7fb4b\ +5d1eb4671378caab107c56cb19e4656c5dbb829a712aea8922d1086ffea567dadcf8b42a7d850c\ +b3fab1ae7bbd095a6b55c89e1477cbd3780d99474ec70151f0043240a62f730e498310e64b892a\ +07c6716b9cbead0e826e8c545aa0d358d1588fd65d83059f237b9bd732a5a83507c9ce89dc9a98\ +cbf9517a76cfc4c588d9d98c0520ba0a0b936e9f35821c31bb23 + + X = 30f59255791b2f1d8a28e612f9f838201abb68d2a1256830041e0e139088f585 + Y = 0ed9564e1d901e13dfb367c71859af2ec4cc2ed1e0007e9d6262ae1c84562f81ddbfa8\ +0ba8dad6d7dc70d38579929ac69d0fbe04143750f91741ccd690ddc3c743cae9589bd32147a677\ +722ba1289a567ea724e20c5ec1e1621582932eada130b8a579d2ff3590bc70fe09721b0067965e\ +f2b16fbc7d4739dc780592e5868c8ccd298082ada393654e26e7748177fb55e84509427dd14dc3\ +f92e1c6a3e83eb705bf1537d08a0129f01e2c92234264efce0ec2164103999472631de238ddca8\ +4d25a6436caf75563085ba5843e2271bb9b12ee1cfa2dce94d681cda686d281c7ec10b6c4e44af\ +f0bf54452416d76267e09eb2a73264433ee9dc72fdf4417c6f7d + + X = 4d921f8c9e8ceeb7e5244b843a9a238af96818d760bd872ea3e7d3a37d7e97b5 + Y = 8b3907eccaaa1ff67705789dbf7e914af940353cda7d0da1d2564a030a5afd7a70d408\ +14b32b0092fe1a92ebf91f2a2c10e9fab9521d855fd8c18199018d5810c7ae7633829f85c739f2\ +43d51c3567449e8f500dd5aec8ff8e1bb3587bdcea9635e4e4b0215ab00d9ea6edd3c48579f257\ +f63a95b85271925334bf73900c4e0e4f644379afc9f765354051a57bf37c939d2055d78919ab1b\ +1e9348d585bc73836cfea8310209940cded440fa131e873243029339f57d3a2c4f57ebee294a42\ +a06f339dd9e635308755575801b418c5f83e23974b5b4c2f703a628b3fd83b398b5f271616492d\ +f14efb7436ed630b4e39d40ab504935bbdbf9b82f25bbd09014e + + X = 1b46dd4a0b6c3693a1f1e685dd529d6f99dec061d631c7c797ed9908f14b39aa + Y = 27e21468657d4f6216e806b716ab87fd324a22d0df4d5e1c26bfc12676fc5db5cd1345\ +d3e078428e5fcc7e03c6a6fb6c4e181bb561cdbdfe565f38ec384be183fc5a0930eb3a92cda25f\ +2867b05a7bd7d4d1a7739be9a75569eac9e98e4115ba415db505ef93c0e2b1e58789acd474e414\ +3dfe584ce1f1df6da01f5d3f9a27bba10cdf78737e7aa818daf753eae647477ef20283f5f62b0d\ +9b53f073281131ef3c692407724c5f61abbabcb24ab056236a7062004b2739c803f663d9999934\ +66b5fca3452d954b0edbbf7fefda6d40df8df7ed21f83885e44ebc511a70cb03d525bbe21dce5f\ +fb28516441aea2f804301a6c2527265a3df0c411d48cd370fff4 + + X = 47eea9c0e8b43329262f3a0b617cd04db1cf159af2aba0ea06c2ee5b8a6c2d69 + Y = 65dad9740de9422632c4401df77b68a37fbe3db48aceadab7d9002770b38dc8297886c\ +dde82fab71650944a692cf714f82841f4f5668ecbeb677744e398a558c5f72d087d26ee29b6324\ +c8def060ed5c5fe4f10b215f4b04dde218fe023ae8fcb99be89ad9a1bb737ae73ae7180944de3f\ +d6abc0d66b6832213a5db47469e6127394bc1fd5142e46438fa48f9774038a3ea312bf539c700f\ +7a486964abdde996cc0b7d84fec7ef4da121db184d2410d44e9ad9b1b95c3d71edf4a4ba1f29e9\ +b8733097fa0c7e8a43141fd0a560f1675323c6ca4504ddb1ed1c2e5887c68f4eecf426f64ce222\ +2bb7a83e771dc27464fef02da9c7c78b2cc36a8aa34b2ab5555a + + X = 7e15dc5a1fbfa404a40be5f94334d22d50c29550008d29daf16ec682fa29e10a + Y = be5e833678b92b78dcbf83b9137329bd9a4fcf3094baf2bb3fd4518e663911cff2d799\ +5ad5903e0b3d6a71e0cf01426ae03332331867857ef8935a78f75a269268e108b1b03e5346eddd\ +f4af610ba2aaeb55e5132dccf989aaf5ea069574147c9925297847410ce9fbba9cc65e73e011f2\ +49f449dffc304a170f2e2a218197e91128ead770f03e7e8966887c870e6c405129e08f5c49b1cd\ +ef48be2c62007c629c35330e2a27f73acf334295dd7832cbe495b61204694b1eab831a05f40b7a\ +84c3cc726aa6fa408d2d91cb3e02dd7487d4fe1e50b0f7b4d6e468bb086e695fded8f9e8231bb9\ +a40b0ff33b61f7143e7df513e7219c2b9102c8ac4321b4036ffb + + X = 8c77eb7870a4108f70251698f0a272a45a87346c8ef14d01e6e5effd914e65eb + Y = 7e3451f243886f90c62cff555ef70fb1b28e3040336d03e2924f8c093e9afddadc8a2e\ +769eb98b5187feb9e029bba4fe3c1fcd0e891abca0792ab9cea27250be580f68baa5e92d05e405\ +f8ceeec89b66020a4b08c5b0b4ffe123cf75da89f06a54e90c1f1a747f51e5208d7d718d8bf3f6\ +173442914bcfcd8f68568d7933471f438fe33efffb867b75a8bae0000795643d4170d49f56579f\ +4d5082d50bd0b21837fa4066821c3b4bf9e88a7e3064d76623e07174a3459cef41afa192b3fd4d\ +bc84b04e48facb96a66dd39864f8c90838890bdaac64211b0cc800a2a4523540fce1c90d48d44f\ +2160ba2cac83988b09faf27e371298d2feeb677e71ce37e35389 + + X = 12d4b73532b0a480f88fb82eb3cf89729539ba3b5bfb463c792dc223d1a526dd + Y = 1371ad94dc2db02476ac925aa0cbdd7e247f86a08a6f2492cd4b3f7b05aa881b2e83d0\ +c5d82246c17cae230a41dd04f05a8c3fed1e09cf8e0d8dc98a9887ff772e2f60434ebea076344f\ +4fbffcbbbd8dee4bc10e7626f26a92c3bf0ac08117bd539b477077d45e11fbe47818f3ce03d6da\ +f34c77595e72d1c8376d9772f51ce956f0e30e98f51155e9effb974f3d46fb48c76a004b0117db\ +c19d78044f248821f88fa87d55ba124842d159b5ac4ce916487ecf9d03321241a2bf1896747f15\ +5f281434435741b1f26a79d35270167ba3b505a6cec672339823c8fc6dc797d458d639e5ed015a\ +c710ebd31b86d736e9b2ab340e7f38f58788483484b81eb0b1ec + + [mod = L=3072, N=256] + + P = f335666dd1339165af8b9a5e3835adfe15c158e4c3c7bd53132e7d5828c352f593a9a7\ +87760ce34b789879941f2f01f02319f6ae0b756f1a842ba54c85612ed632ee2d79ef17f06b77c6\ +41b7b080aff52a03fc2462e80abc64d223723c236deeb7d201078ec01ca1fbc1763139e25099a8\ +4ec389159c409792080736bd7caa816b92edf23f2c351f90074aa5ea2651b372f8b58a0a65554d\ +b2561d706a63685000ac576b7e4562e262a14285a9c6370b290e4eb7757527d80b6c0fd5df831d\ +36f3d1d35f12ab060548de1605fd15f7c7aafed688b146a02c945156e284f5b71282045aba9844\ +d48b5df2e9e7a5887121eae7d7b01db7cdf6ff917cd8eb50c6bf1d54f90cce1a491a9c74fea88f\ +7e7230b047d16b5a6027881d6f154818f06e513faf40c8814630e4e254f17a47bfe9cb519b9828\ +9935bf17673ae4c8033504a20a898d0032ee402b72d5986322f3bdfb27400561f7476cd715eaab\ +b7338b854e51fc2fa026a5a579b6dcea1b1c0559c13d3c1136f303f4b4d25ad5b692229957 + Q = d3eba6521240694015ef94412e08bf3cf8d635a455a398d6f210f6169041653b + G = ce84b30ddf290a9f787a7c2f1ce92c1cbf4ef400e3cd7ce4978db2104d7394b493c183\ +32c64cec906a71c3778bd93341165dee8e6cd4ca6f13afff531191194ada55ecf01ff94d6cf7c4\ +768b82dd29cd131aaf202aefd40e564375285c01f3220af4d70b96f1395420d778228f1461f5d0\ +b8e47357e87b1fe3286223b553e3fc9928f16ae3067ded6721bedf1d1a01bfd22b9ae85fce7782\ +0d88cdf50a6bde20668ad77a707d1c60fcc5d51c9de488610d0285eb8ff721ff141f93a9fb23c1\ +d1f7654c07c46e58836d1652828f71057b8aff0b0778ef2ca934ea9d0f37daddade2d823a4d8e3\ +62721082e279d003b575ee59fd050d105dfd71cd63154efe431a0869178d9811f4f231dc5dcf3b\ +0ec0f2b0f9896c32ec6c7ee7d60aa97109e09224907328d4e6acd10117e45774406c4c947da802\ +0649c3168f690e0bd6e91ac67074d1d436b58ae374523deaf6c93c1e6920db4a080b744804bb07\ +3cecfe83fa9398cf150afa286dc7eb7949750cf5001ce104e9187f7e16859afa8fd0d775ae + + X = b2764c46113983777d3e7e97589f1303806d14ad9f2f1ef033097de954b17706 + Y = 814824e435e1e6f38daa239aad6dad21033afce6a3ebd35c1359348a0f2418871968c2\ +babfc2baf47742148828f8612183178f126504da73566b6bab33ba1f124c15aa461555c2451d86\ +c94ee21c3e3fc24c55527e01b1f03adcdd8ec5cb08082803a7b6a829c3e99eeb332a2cf5c035b0\ +ce0078d3d414d31fa47e9726be2989b8d06da2e6cd363f5a7d1515e3f4925e0b32adeae3025cc5\ +a996f6fd27494ea408763de48f3bb39f6a06514b019899b312ec570851637b8865cff3a52bf5d5\ +4ad5a19e6e400a2d33251055d0a440b50d53f4791391dc754ad02b9eab74c46b4903f9d76f8243\ +39914db108057af7cde657d41766a99991ac8787694f4185d6f91d7627048f827b405ec67bf2fe\ +56141c4c581d8c317333624e073e5879a82437cb0c7b435c0ce434e15965db1315d64895991e6b\ +be7dac040c42052408bbc53423fd31098248a58f8a67da3a39895cd0cc927515d044c1e3cb6a32\ +59c3d0da354cce89ea3552c59609db10ee989986527436af21d9485ddf25f90f7dff6d2bae + + X = 52e3e040efb30e1befd909a0bdbcfd140d005b1bff094af97186080262f1904d + Y = a5ae6e8f9b7a68ab0516dad4d7b7d002126f811d5a52e3d35c6d387fcb43fd19bf7792\ +362f9c98f8348aa058bb62376685f3d0c366c520d697fcd8416947151d4bbb6f32b53528a01647\ +9e99d2cd48d1fc679027c15f0042f207984efe05c1796bca8eba678dfdd00b80418e3ea840557e\ +73b09e003882f9a68edba3431d351d1ca07a8150b018fdbdf6c2f1ab475792a3ccaa6594472a45\ +f8dc777b60bf67de3e0f65c20d11b7d59faedf83fbce52617f500d9e514947c455274c6e900464\ +767fb56599b81344cf6d12c25cb2b7d038d7b166b6cf30534811c15d0e8ab880a2ac06786ae2dd\ +de61329a78d526f65245380ce877e979c5b50de66c9c30d66382c8f254653d25a1eb1d3a4897d7\ +623399b473ce712a2184cf2da1861706c41466806aefe41b497db82aca6c31c8f4aa68c17d1d9e\ +380b57998917655783ec96e5234a131f7299398d36f1f5f84297a55ff292f1f060958c358fed34\ +6db2de45127ca728a9417b2c54203e33e53b9a061d924395b09afab8daf3e8dd7eedcec3ac + + X = 698f9d6431b02644cf2a5ab06c6d0e7cbc84d2b98c55bd3230744e5b9f353eeb + Y = 07d138d60a1a141a12ed92cba221f98f0ebe7067426991473549ae920ebbbbab173b00\ +0dc6d5836355d6e760fbc316a06102ff1b6c70806b7096a5b3f08393a8b0738f32bb110434990f\ +a1567ee6059e366a8402d433d8b4304d50d9ee2b4c066d7b9d72b32871e41f844878dc43d3321e\ +d1e9301cd8e56844403bc5b52d51679c26a23861924d05d32f0dde8c563e34db4ba595e9554439\ +cd2a1d5377a0a0d273033c622ce7bfb820a024f2994cbf0da8b89921cc2b6b6eae64b969118157\ +b0f104bc79bc848a7549a422e8e12569d2f19abe6aa161a4ba04b9b4581435516ba443e71d9780\ +fba2aade09c7146177fd91d86881dabf7478b6238b8e95cf046987624ed6e979878c9deed9148b\ +4741ec5642f777875deae7cdb29393aef8416b1d12f83257f1db323435259e091ecd38eaa82e42\ +8bcb887a98f0f11a7283ec14f901d1df1de3b7d486436a8f8aa1b40449d47681fbb323503ad32a\ +2a11ee214b77c0808bae203af3f6f07f22edefd40f66a62d0511b2419966625e111cb60a7d + + X = 1b93d7bf1088760653061409145105940379f9b8b0a9dbbbe001a24ed78e1007 + Y = 8846c32e6637b4eca3511c3a7f6c95bba4fe1767ce6a3e361e51c63f0f5beea3391688\ +0e970aa26357befd6081f4a1bbd42172e3ca27c2c109b4284f2a2c3910f1d9797bc7879b5e0da2\ +8af487f5b4af2a663ce3bf2c46ddf1549aaa1560bc9eb71bc668fcfa09e06d094685057fa72aab\ +91ed28c20b55fdcac00ee0a43db3c9f1cf03663ac08c43988d923a0dca541ecd82efd54c86076f\ +79035066c3b7dd39065045dc9fbb2e6c00073523c847ae0c5c05977ba7bf45f420fe9b2f219232\ +986c633c54a8fa565d64828e9dd80cb0d095009b9d3ef64758a12ce6b3f49db5dca3683120a920\ +c6081c96c74495992edbbb9871cf02fa4113340a128ac4d113113467f6470f994252ea70e56552\ +fcbce91c4299de0ab01c4f0d488a8e6076fd42cf7326b48c41dceeda5415cdc3237bfcdcb358dc\ +b7fc6ad926b475560a82f95e86e787207dc3874c6aff0bb63b83c1ba5f9aa9355893ab8659dcd1\ +ed4edcdbbd4eeb09f525e3091c576a200ff0219510e97086b40b7849684974eaa9e7f59a1d + + X = b0c2d0426bc4d5bc98fe90c36acea70591f979dd891adef2363ebb23e09727ab + Y = c24dd31f155e64fe98e26451d93410038cd696f9e3a36539fc977550ef729b2129ab7e\ +b6bea156701778c6a7509e54e7d055f9c185dab63010b0b255419944188a707ab1c6a3a7dfd85a\ +a1c60e93a815e0954c1d114bc181f631a3c67713a2ff38686d9d37e2c0b83b6a7cba4c8302f806\ +94d9d102347e9209ba58c7ed4c3e66e25d6df79734e326507b8bf0b63fe78d70478ffe4a4abdac\ +d519b2480ea90f3fed6a3d6688681e9750f6a66849947389ef6514330af485d3b2b2ebbb07d261\ +55fa0d3dd035e49447119c0a66c5769a3a4315ce648233eecc7e151bcf42052d272a6b5bd6002c\ +5639097f862720c84a5e692ff522ed01bf40071cebf3d6fa8c750d60380a5ce4aa59ad8dfcb795\ +c21aad83b026da7651c2c3c57065bb5bff40c0bdded071af7c992d1ed0adaa92c91e031977dd44\ +9c9355490e513a22e7e17c4625b544f791728147537c90c6df02e07e7286df88ffac76d370f7c2\ +dc19b8b7c7292bfdc3d4cd211649e6c173679bfc71093669c8daabba120431fca20dc6bfc6 + + X = 567ed324dc525efac9efc2509345d30f26caac2e66897458762788b8f94f8a9c + Y = 29e2d6f62cdda129f6e004f37000e4661d0fe967249c37c0ebeea879419f26f4a64cd9\ +853c5667705cc39d4137e08d8af7b109c9e43276e413ea05bd0c3e9a84a28191890bbac002706a\ +5c7f385531bb882de5d8e57233ad1efd7e5f3fb090f626795af1b55dc8e98cc801a40b8fff5b09\ +c70a54085e431b5b0207858b1b3094eee076ba4b12845724ac5e4714b0af442d26c3cf585e2fb5\ +3c0f16faeefa16f171deb03e004a47fa5309ca5a74070bf2b775a8c5fb7611af85e17f077295f3\ +7565635842188348d28556f4768a110794da32b4634eaa9e9a4acb4bb6d2e8d52e66ca5ca7a8e6\ +4f46b141b0273704eb5767df2f23d90959e6ba41bd9b5686a1576bd53132377475718403367c45\ +643ba43eeeff6ca59882b463df111f4729a985eb880092117f0c60b16ee6c68eb3c123da388d58\ +979e0d73ff392fa542e1601fff532b9ff35924fdc9a08c3bc348e7a573de2d44ba46173c84b064\ +057c69107d9a03e0c546a4abbc43e095faa777851d03292c6dedfc8809454c7059250efbb5 + + X = bfe9402b3493230bec4992e411bc1af7189a66015c8244466c9d1ff9b1c2a7a9 + Y = 5a314cbbbe66a88fb370763bbc26d4b3610cd397f58261e59a6ba3548d5f4561c5a548\ +048c4e349cfce45ea2d8843a80b377895beff75a149e1c69f4dc58992dff68ea4785d64574653f\ +1e18a515091c8ccb59e01bc053c8470682c43908da6a4c83ec86ea6157042bc48ee14b8b778cc6\ +8435d112c15f4200f1a15b06f2e3ac826b832ebbb5bbddc904ba9b321a23b98fa1f2a1d3824bd3\ +ff3dc2900f6897948e7ddfb37b604f214ceb87a662a95a9736f89d6ea420b9d2f5c365bb618286\ +2a85900af217d2822060d87c74bc2d55a945cf62436222bdbc3f4930566fedd060f2ee81db0f97\ +f87499a2bc011f76febc1eed40071c23c37ddd6da4a8e9aae4028e88ff409f041c7fe26c9aac8e\ +d487b0e197cc557a996a30fdf1504dc7b0de1a0120c646821a07784fd6f22f586baa067a3f7978\ +c898bcddbf2544ec0f8e59ba826e71d6ceec1c8d735f8ffda75f43cbd4a1efd2af42fa836b2c46\ +4811175845f72e7cef58514f4bfe86076a6f4d9e9b0eacee11c32e96bb63cd0c439a5668a4 + + X = 032b33c28d8645e4e83bb7577d9198677332a615478e78935419218033d01af8 + Y = b91ea0d1884c225566a50816f7f8df5fe4b2f295ecb7af8352a52feaa15409205c7747\ +d269fc53ef73ae100ab8d4c1dd5fcceb2173942b2b025e9d6cd57d6d87dcb7691e95aeec58038e\ +d38012ef805b9bcfd1ce4b9ab26b9f476b215159608073e796b5bbf759a841a89a50426ad1e24c\ +82584107f55ccbe85022e14fb372e113052bab5c852213e0c2ef6c608cd4b70da884fc6423fb89\ +4fac291da6fa057a6b020c6605a92add57eda2e188ca3b18b14d2f7e60ce3f9076877c4ab319a7\ +60e2a5ac9ec591e9b57096d9e6d1db6648415b89ba9b42f4b6d5487c0566ddd514023db211a709\ +944df819636c6c3e50fa63490b153873d00da653446e56c674ddc32ab1ef2b3ba945fa4c18f496\ +d295d6379899e24cb58abc4b092cad55017f97837dfec549f1337b3e84658653823142f75d4533\ +d33c467733d971a8b118c94da090a5f1adb02847d9a08cacc663cb99cd67116f63b689a5660f9c\ +160c952802b23eb6361bdac590e9dca0c67bf626e84ad30684070b7149338d00db790625ba + + X = 2c26fbb0469074e06e5f267d6e91171e0c1f3ba77197fc5513807b490920e5ba + Y = 5490d55c6a0b921e63837847c2787a710bf66e91fe5e8d5604bd0872851a37c4981f76\ +487f4e85f05b68f99af7bcb240844f6c1b4a0717d44ce9c425757666efe9d146b91cd556b37080\ +e6a2a73e68415bc85d6a52b4619d473d7a144bf3d56105efe21c99ffa806325a6c675f8ca6abcb\ +3219d9856f6bdced1d9612e8728594108b76b4a544cf1d5da42974b90cd59b08857ed5d442c596\ +bd45df9ffcf30d71192bcf04b19b9c44a5426a25fa03e97e46fc9155ad45e9261d0fb5d736852a\ +efb800d9827e39c9f308b035e135587fce4bc604198eb846fc2b290ea45808367f66b1a7c9493c\ +c82bbf99cb0c69ad51e7c49062c40b72325fde6fa93ed872d3989aab6add98d51dfba24b7a7b3a\ +19b2fbcb7e5d9816c07d385afb799d649e7fb3fbb3b4a84219083c65e4a54d52313b3e11cf4cd5\ +c864afe34f5a2ff883189955d401acf5aa8e51f9c7e3333ae9e3393ff77400df4059e56df5a4d3\ +74f12a8d7eddef9e8a7f8bd267a04dd9720ab0479ec780173d644eb52d7f5d4f3a589226d2 + + X = 8764250978f67f45cb30bf487da305413ee0bcc1ae483aae901e806d321e6baf + Y = 8f461958d60f81940da1735ccbeb9396503d96bb8d187361fabda001c67c713164b690\ +affb8959ca6a31c7bdd9ff21b23e6d94a63a61c7cc11b4b3b90500cdffdba160603972abf3fe91\ +704a190fe33a3f59a2c30cb5ad3bf9f85a710f3cdfe93949e6b18865e5d21ea8b42c7e57a7b400\ +ff2ce7543e89970dfcc7e814be38eeebb74fc28aee97ab0f4138ca3a67e478c6c38ef8f3422c67\ +fdf432c049a62836b967600ab3b11fff42f0414196d89af929282c0f1102dd51cac5d509644fa4\ +d43e0b0761ce7e7c0b531b8098656826d312bdbb439b06d45757260b0ff20d2aa02825044b6808\ +5916227cbc53a67cb640d6238034bb67f00c13d181c07082c238588a1df85530a2b14dbdb749a4\ +7f879700c9d86c1eeb8f618bdcbe2022027064a8eb8b6f57ca411b0e14d6684dc0d26df27d76e0\ +0bf6acc9132a98b9b2077a832995e7734c1cfc2dbc67fe8f85056cc52f8cb1aafd1e7fd74af30a\ +9297bed0c7b20422b10321e9a67566c0f1cbee858021d1686c87c4178e6a89be47c846c31c + """).splitlines() + + expected_vectors = [ + {'g': '06b7861abbd35cc89e79c52f68d20875389b127361ca66\ +822138ce4991d2b862259d6b4548a6495b195aa0e0b6137ca37eb23b94074d3c3\ +d300042bdf15762812b6333ef7b07ceba78607610fcc9ee68491dbc1e34cd1261\ +5474e52b18bc934fb00c61d39e7da8902291c4434a4e2224c3f4fd9f93cd6f4f1\ +7fc076341a7e7d9', + 'p': 'd38311e2cd388c3ed698e82fdf88eb92b5a9a483dc8800\ +5d4b725ef341eabb47cf8a7a8a41e792a156b7ce97206c4f9c5ce6fc5ae791210\ +2b6b502e59050b5b21ce263dddb2044b652236f4d42ab4b5d6aa73189cef1ace7\ +78d7845a5c1c1c7147123188f8dc551054ee162b634d60f097f719076640e2098\ +0a0093113a8bd73', + 'q': '96c5390a8b612c0e422bb2b0ea194a3ec935a281', + 'x': '8185fee9cc7c0e91fd85503274f1cd5a3fd15a49', + 'y': '6f26d98d41de7d871b6381851c9d91fa03942092ab6097\ +e76422070edb71db44ff568280fdb1709f8fc3feab39f1f824adaeb2a29808815\ +6ac31af1aa04bf54f475bdcfdcf2f8a2dd973e922d83e76f016558617603129b2\ +1c70bf7d0e5dc9e68fe332e295b65876eb9a12fe6fca9f1a1ce80204646bf99b5\ +771d249a6fea627'}, + {'g': '06b7861abbd35cc89e79c52f68d20875389b127361ca66822138\ + ce4991d2b862259d6b4548a6495b195aa0e0b6137ca37eb23b94074d3c3d30004\ + 2bdf15762812b6333ef7b07ceba78607610fcc9ee68491dbc1e34cd12615474e5\ + 2b18bc934fb00c61d39e7da8902291c4434a4e2224c3f4fd9f93cd6f4f17fc076\ + 341a7e7d9', + 'p': 'd38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d4b72\ + 5ef341eabb47cf8a7a8a41e792a156b7ce97206c4f9c5ce6fc5ae7912102b6b50\ + 2e59050b5b21ce263dddb2044b652236f4d42ab4b5d6aa73189cef1ace778d784\ + 5a5c1c1c7147123188f8dc551054ee162b634d60f097f719076640e20980a0093\ + 113a8bd73', + 'q': '96c5390a8b612c0e422bb2b0ea194a3ec935a281', + 'x': '85322d6ea73083064376099ca2f65f56e8522d9b', + 'y': '21f8690f717c9f4dcb8f4b6971de2f15b9231fcf41b7eeb997d7\ + 81f240bfdddfd2090d22083c26cca39bf37c9caf1ec89518ea64845a50d747b49\ + 131ffff6a2fd11ea7bacbb93c7d05137383a06365af82225dd3713ca5a4500631\ + 6f53bd12b0e260d5f79795e5a4c9f353f12867a1d3202394673ada8563b71555e\ + 53f415254'}, + {'g': '06b7861abbd35cc89e79c52f68d20875389b127361ca66822138\ + ce4991d2b862259d6b4548a6495b195aa0e0b6137ca37eb23b94074d3c3d30004\ + 2bdf15762812b6333ef7b07ceba78607610fcc9ee68491dbc1e34cd12615474e5\ + 2b18bc934fb00c61d39e7da8902291c4434a4e2224c3f4fd9f93cd6f4f17fc076\ + 341a7e7d9', + 'p': 'd38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d4b72\ + 5ef341eabb47cf8a7a8a41e792a156b7ce97206c4f9c5ce6fc5ae7912102b6b50\ + 2e59050b5b21ce263dddb2044b652236f4d42ab4b5d6aa73189cef1ace778d784\ + 5a5c1c1c7147123188f8dc551054ee162b634d60f097f719076640e20980a0093\ + 113a8bd73', + 'q': '96c5390a8b612c0e422bb2b0ea194a3ec935a281', + 'x': '8007aace9226517add3b31fb72fe57cf0b71de87', + 'y': '0869599e9c233f98719353f50431b8cf9219443b245ccca95fcf\ + 81d757288b27b4ee08037f0a8ee5d997eecf7ddf1cae641fa0b24bb0e0fb97765\ + 166d92a79b1519cb9549431947ff58ede390c8fe2c44ff1fe9f8b15839d93cfd7\ + 27dd0c2698ccf04f85f491d59a4e7fbf873122228af5c27095eea09d7d13b0d58\ + 5c79c4849'}, + {'g': '06b7861abbd35cc89e79c52f68d20875389b127361ca66822138\ + ce4991d2b862259d6b4548a6495b195aa0e0b6137ca37eb23b94074d3c3d30004\ + 2bdf15762812b6333ef7b07ceba78607610fcc9ee68491dbc1e34cd12615474e5\ + 2b18bc934fb00c61d39e7da8902291c4434a4e2224c3f4fd9f93cd6f4f17fc076\ + 341a7e7d9', + 'p': 'd38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d4b72\ + 5ef341eabb47cf8a7a8a41e792a156b7ce97206c4f9c5ce6fc5ae7912102b6b50\ + 2e59050b5b21ce263dddb2044b652236f4d42ab4b5d6aa73189cef1ace778d784\ + 5a5c1c1c7147123188f8dc551054ee162b634d60f097f719076640e20980a0093\ + 113a8bd73', + 'q': '96c5390a8b612c0e422bb2b0ea194a3ec935a281', + 'x': '2f08cf0627c8ffbde07420c324e594170da5879e', + 'y': '1f9098ddb4ec6f7a14841ae87792450292f210fb5a7a90811773\ + 1b3c5f3d1694331a85a129b0b6b5363e61544c351799ef1fd9fdae6f7707b1ef5\ + 5933192b03cc41a773d1e2c119fe59205ce8f8c47f27ef0620c6892c61bb04907\ + e00e6b82c81e1b77bb4e3f87562327555a226217aaaa4e1d29bac7cc8cbebceee\ + 3895d8917'}, + {'g': '06b7861abbd35cc89e79c52f68d20875389b127361ca66822138\ + ce4991d2b862259d6b4548a6495b195aa0e0b6137ca37eb23b94074d3c3d30004\ + 2bdf15762812b6333ef7b07ceba78607610fcc9ee68491dbc1e34cd12615474e5\ + 2b18bc934fb00c61d39e7da8902291c4434a4e2224c3f4fd9f93cd6f4f17fc076\ + 341a7e7d9', + 'p': 'd38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d4b72\ + 5ef341eabb47cf8a7a8a41e792a156b7ce97206c4f9c5ce6fc5ae7912102b6b50\ + 2e59050b5b21ce263dddb2044b652236f4d42ab4b5d6aa73189cef1ace778d784\ + 5a5c1c1c7147123188f8dc551054ee162b634d60f097f719076640e20980a0093\ + 113a8bd73', + 'q': '96c5390a8b612c0e422bb2b0ea194a3ec935a281', + 'x': '423616c18872f9a3ae1db1f70302ae8decff0be9', + 'y': 'b62df8a3635c8f5acdc92d710d920a643eb93010d003e6e61eee\ + 57d6a80ca5512bc1a0b689dd256a2ff1dcac4adb099ef66317de9c6b5188627c1\ + f0aec54049d0bf1c8214c492d09ce8243af9508c49493ea8d6f85d141850ebdab\ + f6cbfeced92c1cc0b844227eedfc03e8650f89c2b6d11462d8cc5b78254574bbe\ + 558f2e724'}, + {'g': '06b7861abbd35cc89e79c52f68d20875389b127361ca66822138\ + ce4991d2b862259d6b4548a6495b195aa0e0b6137ca37eb23b94074d3c3d30004\ + 2bdf15762812b6333ef7b07ceba78607610fcc9ee68491dbc1e34cd12615474e5\ + 2b18bc934fb00c61d39e7da8902291c4434a4e2224c3f4fd9f93cd6f4f17fc076\ + 341a7e7d9', + 'p': 'd38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d4b72\ + 5ef341eabb47cf8a7a8a41e792a156b7ce97206c4f9c5ce6fc5ae7912102b6b50\ + 2e59050b5b21ce263dddb2044b652236f4d42ab4b5d6aa73189cef1ace778d784\ + 5a5c1c1c7147123188f8dc551054ee162b634d60f097f719076640e20980a0093\ + 113a8bd73', + 'q': '96c5390a8b612c0e422bb2b0ea194a3ec935a281', + 'x': '4c4489ee5a17f30eec191644ae28105aafb82307', + 'y': '37fe0fdb5adec7bd56cdd68b1fc5669c292ae0c0c7c339aab844\ + b7b83bc0118056274a1f2b2bd4d4c8973458e86bddff94a6adb9b28d9a1f3ff0b\ + c82972e3c8e452756ab7f921750f773d75c58346096ce2b804c57f2dee4154710\ + 13d9a31d347960c42e5748d0feda02bdf0b22902103de1591d9b5dcdfb18575d8\ + c164031d1'}, + {'g': '06b7861abbd35cc89e79c52f68d20875389b127361ca66822138\ + ce4991d2b862259d6b4548a6495b195aa0e0b6137ca37eb23b94074d3c3d30004\ + 2bdf15762812b6333ef7b07ceba78607610fcc9ee68491dbc1e34cd12615474e5\ + 2b18bc934fb00c61d39e7da8902291c4434a4e2224c3f4fd9f93cd6f4f17fc076\ + 341a7e7d9', + 'p': 'd38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d4b72\ + 5ef341eabb47cf8a7a8a41e792a156b7ce97206c4f9c5ce6fc5ae7912102b6b50\ + 2e59050b5b21ce263dddb2044b652236f4d42ab4b5d6aa73189cef1ace778d784\ + 5a5c1c1c7147123188f8dc551054ee162b634d60f097f719076640e20980a0093\ + 113a8bd73', + 'q': '96c5390a8b612c0e422bb2b0ea194a3ec935a281', + 'x': '4ea539bf524cacbbf850ea20e18659db13c14cc1', + 'y': '7d4b1d55c3cba4f1d7073afda9faed928d7653eac594ef2c84a7\ + c83a77817e186a4706b4dae53f67fe7fc97e5915babda7398aec5a8afa302de1a\ + f67e709d6cc5cab6d19af835027346875758cedb5552494a85e8b2292f69cd2d6\ + 65fc3375180f30110f5f9f03472ce431a64db795bce07b0d42bb0d22dc94182dd\ + 43c2dabe3'}, + {'g': '06b7861abbd35cc89e79c52f68d20875389b127361ca66822138\ + ce4991d2b862259d6b4548a6495b195aa0e0b6137ca37eb23b94074d3c3d30004\ + 2bdf15762812b6333ef7b07ceba78607610fcc9ee68491dbc1e34cd12615474e5\ + 2b18bc934fb00c61d39e7da8902291c4434a4e2224c3f4fd9f93cd6f4f17fc076\ + 341a7e7d9', + 'p': 'd38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d4b72\ + 5ef341eabb47cf8a7a8a41e792a156b7ce97206c4f9c5ce6fc5ae7912102b6b50\ + 2e59050b5b21ce263dddb2044b652236f4d42ab4b5d6aa73189cef1ace778d784\ + 5a5c1c1c7147123188f8dc551054ee162b634d60f097f719076640e20980a0093\ + 113a8bd73', + 'q': '96c5390a8b612c0e422bb2b0ea194a3ec935a281', + 'x': '272b5be463d69c564fb82e54b8824fd5622fd819', + 'y': 'd133f99a7d8c5168f58a1f8be91e40d98446336533517289d40f\ + 0f6c974bbc3abd32de81b92ab4c0d164b44271a884992d93104cca9e85acdec20\ + 717492e7cddd24f99146e59c16877cf4a2f4fca669528b0e4a42b2154c09b4a15\ + ac74d1aed9ca141b7fd6b8eeb5f315a88dfade013539f3ca61628411e89f0e655\ + 3ed18c03e'}, + {'g': '06b7861abbd35cc89e79c52f68d20875389b127361ca66822138\ + ce4991d2b862259d6b4548a6495b195aa0e0b6137ca37eb23b94074d3c3d30004\ + 2bdf15762812b6333ef7b07ceba78607610fcc9ee68491dbc1e34cd12615474e5\ + 2b18bc934fb00c61d39e7da8902291c4434a4e2224c3f4fd9f93cd6f4f17fc076\ + 341a7e7d9', + 'p': 'd38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d4b72\ + 5ef341eabb47cf8a7a8a41e792a156b7ce97206c4f9c5ce6fc5ae7912102b6b50\ + 2e59050b5b21ce263dddb2044b652236f4d42ab4b5d6aa73189cef1ace778d784\ + 5a5c1c1c7147123188f8dc551054ee162b634d60f097f719076640e20980a0093\ + 113a8bd73', + 'q': '96c5390a8b612c0e422bb2b0ea194a3ec935a281', + 'x': '49df2e11a4cab60b3d8f53a02bc8d982a52035e6', + 'y': '555b359dd7998b8020f04f84f7e4ee3e7d7d2352d95b6d5bc51b\ + 96a2132bc1ac779652ccfbfb5b102edb3861aa98d4feba59f65bd0501755c5d0d\ + 894b031841365f2f4e9749b5850542dbe82a3b5d614d93f34692087507d2972ac\ + dab700892bb847cb4e881998342b7230aef923a07b07563efbc053a300c0ea284\ + d7f381da2'}, + {'g': '06b7861abbd35cc89e79c52f68d20875389b127361ca66822138\ + ce4991d2b862259d6b4548a6495b195aa0e0b6137ca37eb23b94074d3c3d30004\ + 2bdf15762812b6333ef7b07ceba78607610fcc9ee68491dbc1e34cd12615474e5\ + 2b18bc934fb00c61d39e7da8902291c4434a4e2224c3f4fd9f93cd6f4f17fc076\ + 341a7e7d9', + 'p': 'd38311e2cd388c3ed698e82fdf88eb92b5a9a483dc88005d4b72\ + 5ef341eabb47cf8a7a8a41e792a156b7ce97206c4f9c5ce6fc5ae7912102b6b50\ + 2e59050b5b21ce263dddb2044b652236f4d42ab4b5d6aa73189cef1ace778d784\ + 5a5c1c1c7147123188f8dc551054ee162b634d60f097f719076640e20980a0093\ + 113a8bd73', + 'q': '96c5390a8b612c0e422bb2b0ea194a3ec935a281', + 'x': '06f5fe27b77fbdb24beb34f4fe13203e46ad8460', + 'y': '881344b829c31389b4882c2fde977d73adb72e5001f41b57c772\ + 6b9ac99ef413d0fb5df9ed587994c45580efa11d4445cea85b149e74f746308ee\ + 223c82263b14f4a2ec5ae971083dca725c5fb0ae233b67a4be60be8aca3f40c5b\ + faf9d9c4dc40d49dec1c4e539c88cddfce40106cb6f88fd094037fae75de54317\ + ad4842cc1'}, + {'g': 'e4c4eca88415b23ecf811c96e48cd24200fe916631a68a684e6c\ + cb6b1913413d344d1d8d84a333839d88eee431521f6e357c16e6a93be111a9807\ + 6739cd401bab3b9d565bf4fb99e9d185b1e14d61c93700133f908bae03e28764d\ + 107dcd2ea7674217622074bb19efff482f5f5c1a86d5551b2fc68d1c6e9d80119\ + 58ef4b9c2a3a55d0d3c882e6ad7f9f0f3c61568f78d0706b10a26f23b4f197c32\ + 2b825002284a0aca91807bba98ece912b80e10cdf180cf99a35f210c1655fbfdd\ + 74f13b1b5046591f8403873d12239834dd6c4eceb42bf7482e1794a1601357b62\ + 9ddfa971f2ed273b146ec1ca06d0adf55dd91d65c37297bda78c6d210c0bc26e5\ + 58302', + 'p': 'ea1fb1af22881558ef93be8a5f8653c5a559434c49c8c2c12ace\ + 5e9c41434c9cf0a8e9498acb0f4663c08b4484eace845f6fb17dac62c98e706af\ + 0fc74e4da1c6c2b3fbf5a1d58ff82fc1a66f3e8b12252c40278fff9dd7f102eed\ + 2cb5b7323ebf1908c234d935414dded7f8d244e54561b0dca39b301de8c49da9f\ + b23df33c6182e3f983208c560fb5119fbf78ebe3e6564ee235c6a15cbb9ac247b\ + aba5a423bc6582a1a9d8a2b4f0e9e3d9dbac122f750dd754325135257488b1f6e\ + cabf21bff2947fe0d3b2cb7ffe67f4e7fcdf1214f6053e72a5bb0dd20a0e9fe6d\ + b2df0a908c36e95e60bf49ca4368b8b892b9c79f61ef91c47567c40e1f80ac5aa\ + 66ef7', + 'q': '8ec73f3761caf5fdfe6e4e82098bf10f898740dcb808204bf6b1\ + 8f507192c19d', + 'x': '405772da6e90d809e77d5de796562a2dd4dfd10ef00a83a3aba6\ + bd818a0348a1', + 'y': '6b32e31ab9031dc4dd0b5039a78d07826687ab087ae6de4736f5\ + b0434e1253092e8a0b231f9c87f3fc8a4cb5634eb194bf1b638b7a7889620ce67\ + 11567e36aa36cda4604cfaa601a45918371d4ccf68d8b10a50a0460eb1dc0fff6\ + 2ef5e6ee4d473e18ea4a66c196fb7e677a49b48241a0b4a97128eff30fa437050\ + 501a584f8771e7280d26d5af30784039159c11ebfea10b692fd0a58215eeb18bf\ + f117e13f08db792ed4151a218e4bed8dddfb0793225bd1e9773505166f4bd8ced\ + bb286ea28232972da7bae836ba97329ba6b0a36508e50a52a7675e476d4d4137e\ + ae13f22a9d2fefde708ba8f34bf336c6e76331761e4b0617633fe7ec3f23672fb\ + 19d27'}, + {'g': 'e4c4eca88415b23ecf811c96e48cd24200fe916631a68a684e6c\ + cb6b1913413d344d1d8d84a333839d88eee431521f6e357c16e6a93be111a9807\ + 6739cd401bab3b9d565bf4fb99e9d185b1e14d61c93700133f908bae03e28764d\ + 107dcd2ea7674217622074bb19efff482f5f5c1a86d5551b2fc68d1c6e9d80119\ + 58ef4b9c2a3a55d0d3c882e6ad7f9f0f3c61568f78d0706b10a26f23b4f197c32\ + 2b825002284a0aca91807bba98ece912b80e10cdf180cf99a35f210c1655fbfdd\ + 74f13b1b5046591f8403873d12239834dd6c4eceb42bf7482e1794a1601357b62\ + 9ddfa971f2ed273b146ec1ca06d0adf55dd91d65c37297bda78c6d210c0bc26e5\ + 58302', + 'p': 'ea1fb1af22881558ef93be8a5f8653c5a559434c49c8c2c12ace\ + 5e9c41434c9cf0a8e9498acb0f4663c08b4484eace845f6fb17dac62c98e706af\ + 0fc74e4da1c6c2b3fbf5a1d58ff82fc1a66f3e8b12252c40278fff9dd7f102eed\ + 2cb5b7323ebf1908c234d935414dded7f8d244e54561b0dca39b301de8c49da9f\ + b23df33c6182e3f983208c560fb5119fbf78ebe3e6564ee235c6a15cbb9ac247b\ + aba5a423bc6582a1a9d8a2b4f0e9e3d9dbac122f750dd754325135257488b1f6e\ + cabf21bff2947fe0d3b2cb7ffe67f4e7fcdf1214f6053e72a5bb0dd20a0e9fe6d\ + b2df0a908c36e95e60bf49ca4368b8b892b9c79f61ef91c47567c40e1f80ac5aa\ + 66ef7', + 'q': '8ec73f3761caf5fdfe6e4e82098bf10f898740dcb808204bf6b1\ + 8f507192c19d', + 'x': '0e0b95e31fda3f888059c46c3002ef8f2d6be112d0209aeb9e95\ + 45da67aeea80', + 'y': '778082b77ddba6f56597cc74c3a612abf2ddbd85cc81430c99ab\ + 843c1f630b9db0139965f563978164f9bf3a8397256be714625cd41cd7fa0067d\ + 94ea66d7e073f7125af692ad01371d4a17f4550590378f2b074030c20e3691159\ + 8a1018772f61be3b24de4be5a388ccc09e15a92819c31dec50de9fde105b49eaa\ + 097b9d13d9219eeb33b628facfd1c78a7159c8430d0647c506e7e3de74763cb35\ + 1eada72c00bef3c9641881e6254870c1e6599f8ca2f1bbb74f39a905e3a34e454\ + 4168e6e50c9e3305fd09cab6ed4aff6fda6e0d5bf375c81ac9054406d9193b003\ + c89272f1bd83d48250134b65c77c2b6332d38d34d9016f0e8975536ad6c348a1f\ + aedb0'}, + {'g': 'e4c4eca88415b23ecf811c96e48cd24200fe916631a68a684e6c\ + cb6b1913413d344d1d8d84a333839d88eee431521f6e357c16e6a93be111a9807\ + 6739cd401bab3b9d565bf4fb99e9d185b1e14d61c93700133f908bae03e28764d\ + 107dcd2ea7674217622074bb19efff482f5f5c1a86d5551b2fc68d1c6e9d80119\ + 58ef4b9c2a3a55d0d3c882e6ad7f9f0f3c61568f78d0706b10a26f23b4f197c32\ + 2b825002284a0aca91807bba98ece912b80e10cdf180cf99a35f210c1655fbfdd\ + 74f13b1b5046591f8403873d12239834dd6c4eceb42bf7482e1794a1601357b62\ + 9ddfa971f2ed273b146ec1ca06d0adf55dd91d65c37297bda78c6d210c0bc26e5\ + 58302', + 'p': 'ea1fb1af22881558ef93be8a5f8653c5a559434c49c8c2c12ace\ + 5e9c41434c9cf0a8e9498acb0f4663c08b4484eace845f6fb17dac62c98e706af\ + 0fc74e4da1c6c2b3fbf5a1d58ff82fc1a66f3e8b12252c40278fff9dd7f102eed\ + 2cb5b7323ebf1908c234d935414dded7f8d244e54561b0dca39b301de8c49da9f\ + b23df33c6182e3f983208c560fb5119fbf78ebe3e6564ee235c6a15cbb9ac247b\ + aba5a423bc6582a1a9d8a2b4f0e9e3d9dbac122f750dd754325135257488b1f6e\ + cabf21bff2947fe0d3b2cb7ffe67f4e7fcdf1214f6053e72a5bb0dd20a0e9fe6d\ + b2df0a908c36e95e60bf49ca4368b8b892b9c79f61ef91c47567c40e1f80ac5aa\ + 66ef7', + 'q': '8ec73f3761caf5fdfe6e4e82098bf10f898740dcb808204bf6b1\ + 8f507192c19d', + 'x': '835fd2d1b7b03d90c5ebc073ee69b386c9c07ca06bce80bc5746\ + 34af8d534f7a', + 'y': 'cbc3feccf1ef62d31df626a4b2e234afdf1795443e46a471ec8b\ + 902b0ae9af36344120ed3ca6009751b03e8963a6151e7b2fe572837c3e23815d4\ + 72ce75cfbaaaaf36e89a939983bd494f0421b0f35079e5a243672d708ca349253\ + 9733b2a847f638167f7d64c8dd7e3cc8b2f0e7a7fb4b5d1eb4671378caab107c5\ + 6cb19e4656c5dbb829a712aea8922d1086ffea567dadcf8b42a7d850cb3fab1ae\ + 7bbd095a6b55c89e1477cbd3780d99474ec70151f0043240a62f730e498310e64\ + b892a07c6716b9cbead0e826e8c545aa0d358d1588fd65d83059f237b9bd732a5\ + a83507c9ce89dc9a98cbf9517a76cfc4c588d9d98c0520ba0a0b936e9f35821c3\ + 1bb23'}, + {'g': 'e4c4eca88415b23ecf811c96e48cd24200fe916631a68a684e6c\ + cb6b1913413d344d1d8d84a333839d88eee431521f6e357c16e6a93be111a9807\ + 6739cd401bab3b9d565bf4fb99e9d185b1e14d61c93700133f908bae03e28764d\ + 107dcd2ea7674217622074bb19efff482f5f5c1a86d5551b2fc68d1c6e9d80119\ + 58ef4b9c2a3a55d0d3c882e6ad7f9f0f3c61568f78d0706b10a26f23b4f197c32\ + 2b825002284a0aca91807bba98ece912b80e10cdf180cf99a35f210c1655fbfdd\ + 74f13b1b5046591f8403873d12239834dd6c4eceb42bf7482e1794a1601357b62\ + 9ddfa971f2ed273b146ec1ca06d0adf55dd91d65c37297bda78c6d210c0bc26e5\ + 58302', + 'p': 'ea1fb1af22881558ef93be8a5f8653c5a559434c49c8c2c12ace\ + 5e9c41434c9cf0a8e9498acb0f4663c08b4484eace845f6fb17dac62c98e706af\ + 0fc74e4da1c6c2b3fbf5a1d58ff82fc1a66f3e8b12252c40278fff9dd7f102eed\ + 2cb5b7323ebf1908c234d935414dded7f8d244e54561b0dca39b301de8c49da9f\ + b23df33c6182e3f983208c560fb5119fbf78ebe3e6564ee235c6a15cbb9ac247b\ + aba5a423bc6582a1a9d8a2b4f0e9e3d9dbac122f750dd754325135257488b1f6e\ + cabf21bff2947fe0d3b2cb7ffe67f4e7fcdf1214f6053e72a5bb0dd20a0e9fe6d\ + b2df0a908c36e95e60bf49ca4368b8b892b9c79f61ef91c47567c40e1f80ac5aa\ + 66ef7', + 'q': '8ec73f3761caf5fdfe6e4e82098bf10f898740dcb808204bf6b1\ + 8f507192c19d', + 'x': '30f59255791b2f1d8a28e612f9f838201abb68d2a1256830041e\ + 0e139088f585', + 'y': '0ed9564e1d901e13dfb367c71859af2ec4cc2ed1e0007e9d6262\ + ae1c84562f81ddbfa80ba8dad6d7dc70d38579929ac69d0fbe04143750f91741c\ + cd690ddc3c743cae9589bd32147a677722ba1289a567ea724e20c5ec1e1621582\ + 932eada130b8a579d2ff3590bc70fe09721b0067965ef2b16fbc7d4739dc78059\ + 2e5868c8ccd298082ada393654e26e7748177fb55e84509427dd14dc3f92e1c6a\ + 3e83eb705bf1537d08a0129f01e2c92234264efce0ec2164103999472631de238\ + ddca84d25a6436caf75563085ba5843e2271bb9b12ee1cfa2dce94d681cda686d\ + 281c7ec10b6c4e44aff0bf54452416d76267e09eb2a73264433ee9dc72fdf4417\ + c6f7d'}, + {'g': 'e4c4eca88415b23ecf811c96e48cd24200fe916631a68a684e6c\ + cb6b1913413d344d1d8d84a333839d88eee431521f6e357c16e6a93be111a9807\ + 6739cd401bab3b9d565bf4fb99e9d185b1e14d61c93700133f908bae03e28764d\ + 107dcd2ea7674217622074bb19efff482f5f5c1a86d5551b2fc68d1c6e9d80119\ + 58ef4b9c2a3a55d0d3c882e6ad7f9f0f3c61568f78d0706b10a26f23b4f197c32\ + 2b825002284a0aca91807bba98ece912b80e10cdf180cf99a35f210c1655fbfdd\ + 74f13b1b5046591f8403873d12239834dd6c4eceb42bf7482e1794a1601357b62\ + 9ddfa971f2ed273b146ec1ca06d0adf55dd91d65c37297bda78c6d210c0bc26e5\ + 58302', + 'p': 'ea1fb1af22881558ef93be8a5f8653c5a559434c49c8c2c12ace\ + 5e9c41434c9cf0a8e9498acb0f4663c08b4484eace845f6fb17dac62c98e706af\ + 0fc74e4da1c6c2b3fbf5a1d58ff82fc1a66f3e8b12252c40278fff9dd7f102eed\ + 2cb5b7323ebf1908c234d935414dded7f8d244e54561b0dca39b301de8c49da9f\ + b23df33c6182e3f983208c560fb5119fbf78ebe3e6564ee235c6a15cbb9ac247b\ + aba5a423bc6582a1a9d8a2b4f0e9e3d9dbac122f750dd754325135257488b1f6e\ + cabf21bff2947fe0d3b2cb7ffe67f4e7fcdf1214f6053e72a5bb0dd20a0e9fe6d\ + b2df0a908c36e95e60bf49ca4368b8b892b9c79f61ef91c47567c40e1f80ac5aa\ + 66ef7', + 'q': '8ec73f3761caf5fdfe6e4e82098bf10f898740dcb808204bf6b1\ + 8f507192c19d', + 'x': '4d921f8c9e8ceeb7e5244b843a9a238af96818d760bd872ea3e7\ + d3a37d7e97b5', + 'y': '8b3907eccaaa1ff67705789dbf7e914af940353cda7d0da1d256\ + 4a030a5afd7a70d40814b32b0092fe1a92ebf91f2a2c10e9fab9521d855fd8c18\ + 199018d5810c7ae7633829f85c739f243d51c3567449e8f500dd5aec8ff8e1bb3\ + 587bdcea9635e4e4b0215ab00d9ea6edd3c48579f257f63a95b85271925334bf7\ + 3900c4e0e4f644379afc9f765354051a57bf37c939d2055d78919ab1b1e9348d5\ + 85bc73836cfea8310209940cded440fa131e873243029339f57d3a2c4f57ebee2\ + 94a42a06f339dd9e635308755575801b418c5f83e23974b5b4c2f703a628b3fd8\ + 3b398b5f271616492df14efb7436ed630b4e39d40ab504935bbdbf9b82f25bbd0\ + 9014e'}, + {'g': 'e4c4eca88415b23ecf811c96e48cd24200fe916631a68a684e6c\ + cb6b1913413d344d1d8d84a333839d88eee431521f6e357c16e6a93be111a9807\ + 6739cd401bab3b9d565bf4fb99e9d185b1e14d61c93700133f908bae03e28764d\ + 107dcd2ea7674217622074bb19efff482f5f5c1a86d5551b2fc68d1c6e9d80119\ + 58ef4b9c2a3a55d0d3c882e6ad7f9f0f3c61568f78d0706b10a26f23b4f197c32\ + 2b825002284a0aca91807bba98ece912b80e10cdf180cf99a35f210c1655fbfdd\ + 74f13b1b5046591f8403873d12239834dd6c4eceb42bf7482e1794a1601357b62\ + 9ddfa971f2ed273b146ec1ca06d0adf55dd91d65c37297bda78c6d210c0bc26e5\ + 58302', + 'p': 'ea1fb1af22881558ef93be8a5f8653c5a559434c49c8c2c12ace\ + 5e9c41434c9cf0a8e9498acb0f4663c08b4484eace845f6fb17dac62c98e706af\ + 0fc74e4da1c6c2b3fbf5a1d58ff82fc1a66f3e8b12252c40278fff9dd7f102eed\ + 2cb5b7323ebf1908c234d935414dded7f8d244e54561b0dca39b301de8c49da9f\ + b23df33c6182e3f983208c560fb5119fbf78ebe3e6564ee235c6a15cbb9ac247b\ + aba5a423bc6582a1a9d8a2b4f0e9e3d9dbac122f750dd754325135257488b1f6e\ + cabf21bff2947fe0d3b2cb7ffe67f4e7fcdf1214f6053e72a5bb0dd20a0e9fe6d\ + b2df0a908c36e95e60bf49ca4368b8b892b9c79f61ef91c47567c40e1f80ac5aa\ + 66ef7', + 'q': '8ec73f3761caf5fdfe6e4e82098bf10f898740dcb808204bf6b1\ + 8f507192c19d', + 'x': '1b46dd4a0b6c3693a1f1e685dd529d6f99dec061d631c7c797ed\ + 9908f14b39aa', + 'y': '27e21468657d4f6216e806b716ab87fd324a22d0df4d5e1c26bf\ + c12676fc5db5cd1345d3e078428e5fcc7e03c6a6fb6c4e181bb561cdbdfe565f3\ + 8ec384be183fc5a0930eb3a92cda25f2867b05a7bd7d4d1a7739be9a75569eac9\ + e98e4115ba415db505ef93c0e2b1e58789acd474e4143dfe584ce1f1df6da01f5\ + d3f9a27bba10cdf78737e7aa818daf753eae647477ef20283f5f62b0d9b53f073\ + 281131ef3c692407724c5f61abbabcb24ab056236a7062004b2739c803f663d99\ + 9993466b5fca3452d954b0edbbf7fefda6d40df8df7ed21f83885e44ebc511a70\ + cb03d525bbe21dce5ffb28516441aea2f804301a6c2527265a3df0c411d48cd37\ + 0fff4'}, + {'g': 'e4c4eca88415b23ecf811c96e48cd24200fe916631a68a684e6c\ + cb6b1913413d344d1d8d84a333839d88eee431521f6e357c16e6a93be111a9807\ + 6739cd401bab3b9d565bf4fb99e9d185b1e14d61c93700133f908bae03e28764d\ + 107dcd2ea7674217622074bb19efff482f5f5c1a86d5551b2fc68d1c6e9d80119\ + 58ef4b9c2a3a55d0d3c882e6ad7f9f0f3c61568f78d0706b10a26f23b4f197c32\ + 2b825002284a0aca91807bba98ece912b80e10cdf180cf99a35f210c1655fbfdd\ + 74f13b1b5046591f8403873d12239834dd6c4eceb42bf7482e1794a1601357b62\ + 9ddfa971f2ed273b146ec1ca06d0adf55dd91d65c37297bda78c6d210c0bc26e5\ + 58302', + 'p': 'ea1fb1af22881558ef93be8a5f8653c5a559434c49c8c2c12ace\ + 5e9c41434c9cf0a8e9498acb0f4663c08b4484eace845f6fb17dac62c98e706af\ + 0fc74e4da1c6c2b3fbf5a1d58ff82fc1a66f3e8b12252c40278fff9dd7f102eed\ + 2cb5b7323ebf1908c234d935414dded7f8d244e54561b0dca39b301de8c49da9f\ + b23df33c6182e3f983208c560fb5119fbf78ebe3e6564ee235c6a15cbb9ac247b\ + aba5a423bc6582a1a9d8a2b4f0e9e3d9dbac122f750dd754325135257488b1f6e\ + cabf21bff2947fe0d3b2cb7ffe67f4e7fcdf1214f6053e72a5bb0dd20a0e9fe6d\ + b2df0a908c36e95e60bf49ca4368b8b892b9c79f61ef91c47567c40e1f80ac5aa\ + 66ef7', + 'q': '8ec73f3761caf5fdfe6e4e82098bf10f898740dcb808204bf6b1\ + 8f507192c19d', + 'x': '47eea9c0e8b43329262f3a0b617cd04db1cf159af2aba0ea06c2\ + ee5b8a6c2d69', + 'y': '65dad9740de9422632c4401df77b68a37fbe3db48aceadab7d90\ + 02770b38dc8297886cdde82fab71650944a692cf714f82841f4f5668ecbeb6777\ + 44e398a558c5f72d087d26ee29b6324c8def060ed5c5fe4f10b215f4b04dde218\ + fe023ae8fcb99be89ad9a1bb737ae73ae7180944de3fd6abc0d66b6832213a5db\ + 47469e6127394bc1fd5142e46438fa48f9774038a3ea312bf539c700f7a486964\ + abdde996cc0b7d84fec7ef4da121db184d2410d44e9ad9b1b95c3d71edf4a4ba1\ + f29e9b8733097fa0c7e8a43141fd0a560f1675323c6ca4504ddb1ed1c2e5887c6\ + 8f4eecf426f64ce2222bb7a83e771dc27464fef02da9c7c78b2cc36a8aa34b2ab\ + 5555a'}, + {'g': 'e4c4eca88415b23ecf811c96e48cd24200fe916631a68a684e6c\ + cb6b1913413d344d1d8d84a333839d88eee431521f6e357c16e6a93be111a9807\ + 6739cd401bab3b9d565bf4fb99e9d185b1e14d61c93700133f908bae03e28764d\ + 107dcd2ea7674217622074bb19efff482f5f5c1a86d5551b2fc68d1c6e9d80119\ + 58ef4b9c2a3a55d0d3c882e6ad7f9f0f3c61568f78d0706b10a26f23b4f197c32\ + 2b825002284a0aca91807bba98ece912b80e10cdf180cf99a35f210c1655fbfdd\ + 74f13b1b5046591f8403873d12239834dd6c4eceb42bf7482e1794a1601357b62\ + 9ddfa971f2ed273b146ec1ca06d0adf55dd91d65c37297bda78c6d210c0bc26e5\ + 58302', + 'p': 'ea1fb1af22881558ef93be8a5f8653c5a559434c49c8c2c12ace\ + 5e9c41434c9cf0a8e9498acb0f4663c08b4484eace845f6fb17dac62c98e706af\ + 0fc74e4da1c6c2b3fbf5a1d58ff82fc1a66f3e8b12252c40278fff9dd7f102eed\ + 2cb5b7323ebf1908c234d935414dded7f8d244e54561b0dca39b301de8c49da9f\ + b23df33c6182e3f983208c560fb5119fbf78ebe3e6564ee235c6a15cbb9ac247b\ + aba5a423bc6582a1a9d8a2b4f0e9e3d9dbac122f750dd754325135257488b1f6e\ + cabf21bff2947fe0d3b2cb7ffe67f4e7fcdf1214f6053e72a5bb0dd20a0e9fe6d\ + b2df0a908c36e95e60bf49ca4368b8b892b9c79f61ef91c47567c40e1f80ac5aa\ + 66ef7', + 'q': '8ec73f3761caf5fdfe6e4e82098bf10f898740dcb808204bf6b1\ + 8f507192c19d', + 'x': '7e15dc5a1fbfa404a40be5f94334d22d50c29550008d29daf16e\ + c682fa29e10a', + 'y': 'be5e833678b92b78dcbf83b9137329bd9a4fcf3094baf2bb3fd4\ + 518e663911cff2d7995ad5903e0b3d6a71e0cf01426ae03332331867857ef8935\ + a78f75a269268e108b1b03e5346edddf4af610ba2aaeb55e5132dccf989aaf5ea\ + 069574147c9925297847410ce9fbba9cc65e73e011f249f449dffc304a170f2e2\ + a218197e91128ead770f03e7e8966887c870e6c405129e08f5c49b1cdef48be2c\ + 62007c629c35330e2a27f73acf334295dd7832cbe495b61204694b1eab831a05f\ + 40b7a84c3cc726aa6fa408d2d91cb3e02dd7487d4fe1e50b0f7b4d6e468bb086e\ + 695fded8f9e8231bb9a40b0ff33b61f7143e7df513e7219c2b9102c8ac4321b40\ + 36ffb'}, + {'g': 'e4c4eca88415b23ecf811c96e48cd24200fe916631a68a684e6c\ + cb6b1913413d344d1d8d84a333839d88eee431521f6e357c16e6a93be111a9807\ + 6739cd401bab3b9d565bf4fb99e9d185b1e14d61c93700133f908bae03e28764d\ + 107dcd2ea7674217622074bb19efff482f5f5c1a86d5551b2fc68d1c6e9d80119\ + 58ef4b9c2a3a55d0d3c882e6ad7f9f0f3c61568f78d0706b10a26f23b4f197c32\ + 2b825002284a0aca91807bba98ece912b80e10cdf180cf99a35f210c1655fbfdd\ + 74f13b1b5046591f8403873d12239834dd6c4eceb42bf7482e1794a1601357b62\ + 9ddfa971f2ed273b146ec1ca06d0adf55dd91d65c37297bda78c6d210c0bc26e5\ + 58302', + 'p': 'ea1fb1af22881558ef93be8a5f8653c5a559434c49c8c2c12ace\ + 5e9c41434c9cf0a8e9498acb0f4663c08b4484eace845f6fb17dac62c98e706af\ + 0fc74e4da1c6c2b3fbf5a1d58ff82fc1a66f3e8b12252c40278fff9dd7f102eed\ + 2cb5b7323ebf1908c234d935414dded7f8d244e54561b0dca39b301de8c49da9f\ + b23df33c6182e3f983208c560fb5119fbf78ebe3e6564ee235c6a15cbb9ac247b\ + aba5a423bc6582a1a9d8a2b4f0e9e3d9dbac122f750dd754325135257488b1f6e\ + cabf21bff2947fe0d3b2cb7ffe67f4e7fcdf1214f6053e72a5bb0dd20a0e9fe6d\ + b2df0a908c36e95e60bf49ca4368b8b892b9c79f61ef91c47567c40e1f80ac5aa\ + 66ef7', + 'q': '8ec73f3761caf5fdfe6e4e82098bf10f898740dcb808204bf6b1\ + 8f507192c19d', + 'x': '8c77eb7870a4108f70251698f0a272a45a87346c8ef14d01e6e5\ + effd914e65eb', + 'y': '7e3451f243886f90c62cff555ef70fb1b28e3040336d03e2924f\ + 8c093e9afddadc8a2e769eb98b5187feb9e029bba4fe3c1fcd0e891abca0792ab\ + 9cea27250be580f68baa5e92d05e405f8ceeec89b66020a4b08c5b0b4ffe123cf\ + 75da89f06a54e90c1f1a747f51e5208d7d718d8bf3f6173442914bcfcd8f68568\ + d7933471f438fe33efffb867b75a8bae0000795643d4170d49f56579f4d5082d5\ + 0bd0b21837fa4066821c3b4bf9e88a7e3064d76623e07174a3459cef41afa192b\ + 3fd4dbc84b04e48facb96a66dd39864f8c90838890bdaac64211b0cc800a2a452\ + 3540fce1c90d48d44f2160ba2cac83988b09faf27e371298d2feeb677e71ce37e\ + 35389'}, + {'g': 'e4c4eca88415b23ecf811c96e48cd24200fe916631a68a684e6c\ + cb6b1913413d344d1d8d84a333839d88eee431521f6e357c16e6a93be111a9807\ + 6739cd401bab3b9d565bf4fb99e9d185b1e14d61c93700133f908bae03e28764d\ + 107dcd2ea7674217622074bb19efff482f5f5c1a86d5551b2fc68d1c6e9d80119\ + 58ef4b9c2a3a55d0d3c882e6ad7f9f0f3c61568f78d0706b10a26f23b4f197c32\ + 2b825002284a0aca91807bba98ece912b80e10cdf180cf99a35f210c1655fbfdd\ + 74f13b1b5046591f8403873d12239834dd6c4eceb42bf7482e1794a1601357b62\ + 9ddfa971f2ed273b146ec1ca06d0adf55dd91d65c37297bda78c6d210c0bc26e5\ + 58302', + 'p': 'ea1fb1af22881558ef93be8a5f8653c5a559434c49c8c2c12ace\ + 5e9c41434c9cf0a8e9498acb0f4663c08b4484eace845f6fb17dac62c98e706af\ + 0fc74e4da1c6c2b3fbf5a1d58ff82fc1a66f3e8b12252c40278fff9dd7f102eed\ + 2cb5b7323ebf1908c234d935414dded7f8d244e54561b0dca39b301de8c49da9f\ + b23df33c6182e3f983208c560fb5119fbf78ebe3e6564ee235c6a15cbb9ac247b\ + aba5a423bc6582a1a9d8a2b4f0e9e3d9dbac122f750dd754325135257488b1f6e\ + cabf21bff2947fe0d3b2cb7ffe67f4e7fcdf1214f6053e72a5bb0dd20a0e9fe6d\ + b2df0a908c36e95e60bf49ca4368b8b892b9c79f61ef91c47567c40e1f80ac5aa\ + 66ef7', + 'q': '8ec73f3761caf5fdfe6e4e82098bf10f898740dcb808204bf6b1\ + 8f507192c19d', + 'x': '12d4b73532b0a480f88fb82eb3cf89729539ba3b5bfb463c792d\ + c223d1a526dd', + 'y': '1371ad94dc2db02476ac925aa0cbdd7e247f86a08a6f2492cd4b\ + 3f7b05aa881b2e83d0c5d82246c17cae230a41dd04f05a8c3fed1e09cf8e0d8dc\ + 98a9887ff772e2f60434ebea076344f4fbffcbbbd8dee4bc10e7626f26a92c3bf\ + 0ac08117bd539b477077d45e11fbe47818f3ce03d6daf34c77595e72d1c8376d9\ + 772f51ce956f0e30e98f51155e9effb974f3d46fb48c76a004b0117dbc19d7804\ + 4f248821f88fa87d55ba124842d159b5ac4ce916487ecf9d03321241a2bf18967\ + 47f155f281434435741b1f26a79d35270167ba3b505a6cec672339823c8fc6dc7\ + 97d458d639e5ed015ac710ebd31b86d736e9b2ab340e7f38f58788483484b81eb\ + 0b1ec'}, + {'g': 'ce84b30ddf290a9f787a7c2f1ce92c1cbf4ef400e3cd7ce4978d\ + b2104d7394b493c18332c64cec906a71c3778bd93341165dee8e6cd4ca6f13aff\ + f531191194ada55ecf01ff94d6cf7c4768b82dd29cd131aaf202aefd40e564375\ + 285c01f3220af4d70b96f1395420d778228f1461f5d0b8e47357e87b1fe328622\ + 3b553e3fc9928f16ae3067ded6721bedf1d1a01bfd22b9ae85fce77820d88cdf5\ + 0a6bde20668ad77a707d1c60fcc5d51c9de488610d0285eb8ff721ff141f93a9f\ + b23c1d1f7654c07c46e58836d1652828f71057b8aff0b0778ef2ca934ea9d0f37\ + daddade2d823a4d8e362721082e279d003b575ee59fd050d105dfd71cd63154ef\ + e431a0869178d9811f4f231dc5dcf3b0ec0f2b0f9896c32ec6c7ee7d60aa97109\ + e09224907328d4e6acd10117e45774406c4c947da8020649c3168f690e0bd6e91\ + ac67074d1d436b58ae374523deaf6c93c1e6920db4a080b744804bb073cecfe83\ + fa9398cf150afa286dc7eb7949750cf5001ce104e9187f7e16859afa8fd0d775a\ + e', + 'p': 'f335666dd1339165af8b9a5e3835adfe15c158e4c3c7bd53132e\ + 7d5828c352f593a9a787760ce34b789879941f2f01f02319f6ae0b756f1a842ba\ + 54c85612ed632ee2d79ef17f06b77c641b7b080aff52a03fc2462e80abc64d223\ + 723c236deeb7d201078ec01ca1fbc1763139e25099a84ec389159c40979208073\ + 6bd7caa816b92edf23f2c351f90074aa5ea2651b372f8b58a0a65554db2561d70\ + 6a63685000ac576b7e4562e262a14285a9c6370b290e4eb7757527d80b6c0fd5d\ + f831d36f3d1d35f12ab060548de1605fd15f7c7aafed688b146a02c945156e284\ + f5b71282045aba9844d48b5df2e9e7a5887121eae7d7b01db7cdf6ff917cd8eb5\ + 0c6bf1d54f90cce1a491a9c74fea88f7e7230b047d16b5a6027881d6f154818f0\ + 6e513faf40c8814630e4e254f17a47bfe9cb519b98289935bf17673ae4c803350\ + 4a20a898d0032ee402b72d5986322f3bdfb27400561f7476cd715eaabb7338b85\ + 4e51fc2fa026a5a579b6dcea1b1c0559c13d3c1136f303f4b4d25ad5b69222995\ + 7', + 'q': 'd3eba6521240694015ef94412e08bf3cf8d635a455a398d6f210\ + f6169041653b', + 'x': 'b2764c46113983777d3e7e97589f1303806d14ad9f2f1ef03309\ + 7de954b17706', + 'y': '814824e435e1e6f38daa239aad6dad21033afce6a3ebd35c1359\ + 348a0f2418871968c2babfc2baf47742148828f8612183178f126504da73566b6\ + bab33ba1f124c15aa461555c2451d86c94ee21c3e3fc24c55527e01b1f03adcdd\ + 8ec5cb08082803a7b6a829c3e99eeb332a2cf5c035b0ce0078d3d414d31fa47e9\ + 726be2989b8d06da2e6cd363f5a7d1515e3f4925e0b32adeae3025cc5a996f6fd\ + 27494ea408763de48f3bb39f6a06514b019899b312ec570851637b8865cff3a52\ + bf5d54ad5a19e6e400a2d33251055d0a440b50d53f4791391dc754ad02b9eab74\ + c46b4903f9d76f824339914db108057af7cde657d41766a99991ac8787694f418\ + 5d6f91d7627048f827b405ec67bf2fe56141c4c581d8c317333624e073e5879a8\ + 2437cb0c7b435c0ce434e15965db1315d64895991e6bbe7dac040c42052408bbc\ + 53423fd31098248a58f8a67da3a39895cd0cc927515d044c1e3cb6a3259c3d0da\ + 354cce89ea3552c59609db10ee989986527436af21d9485ddf25f90f7dff6d2ba\ + e'}, + {'g': 'ce84b30ddf290a9f787a7c2f1ce92c1cbf4ef400e3cd7ce4978d\ + b2104d7394b493c18332c64cec906a71c3778bd93341165dee8e6cd4ca6f13aff\ + f531191194ada55ecf01ff94d6cf7c4768b82dd29cd131aaf202aefd40e564375\ + 285c01f3220af4d70b96f1395420d778228f1461f5d0b8e47357e87b1fe328622\ + 3b553e3fc9928f16ae3067ded6721bedf1d1a01bfd22b9ae85fce77820d88cdf5\ + 0a6bde20668ad77a707d1c60fcc5d51c9de488610d0285eb8ff721ff141f93a9f\ + b23c1d1f7654c07c46e58836d1652828f71057b8aff0b0778ef2ca934ea9d0f37\ + daddade2d823a4d8e362721082e279d003b575ee59fd050d105dfd71cd63154ef\ + e431a0869178d9811f4f231dc5dcf3b0ec0f2b0f9896c32ec6c7ee7d60aa97109\ + e09224907328d4e6acd10117e45774406c4c947da8020649c3168f690e0bd6e91\ + ac67074d1d436b58ae374523deaf6c93c1e6920db4a080b744804bb073cecfe83\ + fa9398cf150afa286dc7eb7949750cf5001ce104e9187f7e16859afa8fd0d775a\ + e', + 'p': 'f335666dd1339165af8b9a5e3835adfe15c158e4c3c7bd53132e\ + 7d5828c352f593a9a787760ce34b789879941f2f01f02319f6ae0b756f1a842ba\ + 54c85612ed632ee2d79ef17f06b77c641b7b080aff52a03fc2462e80abc64d223\ + 723c236deeb7d201078ec01ca1fbc1763139e25099a84ec389159c40979208073\ + 6bd7caa816b92edf23f2c351f90074aa5ea2651b372f8b58a0a65554db2561d70\ + 6a63685000ac576b7e4562e262a14285a9c6370b290e4eb7757527d80b6c0fd5d\ + f831d36f3d1d35f12ab060548de1605fd15f7c7aafed688b146a02c945156e284\ + f5b71282045aba9844d48b5df2e9e7a5887121eae7d7b01db7cdf6ff917cd8eb5\ + 0c6bf1d54f90cce1a491a9c74fea88f7e7230b047d16b5a6027881d6f154818f0\ + 6e513faf40c8814630e4e254f17a47bfe9cb519b98289935bf17673ae4c803350\ + 4a20a898d0032ee402b72d5986322f3bdfb27400561f7476cd715eaabb7338b85\ + 4e51fc2fa026a5a579b6dcea1b1c0559c13d3c1136f303f4b4d25ad5b69222995\ + 7', + 'q': 'd3eba6521240694015ef94412e08bf3cf8d635a455a398d6f210\ + f6169041653b', + 'x': '52e3e040efb30e1befd909a0bdbcfd140d005b1bff094af97186\ + 080262f1904d', + 'y': 'a5ae6e8f9b7a68ab0516dad4d7b7d002126f811d5a52e3d35c6d\ + 387fcb43fd19bf7792362f9c98f8348aa058bb62376685f3d0c366c520d697fcd\ + 8416947151d4bbb6f32b53528a016479e99d2cd48d1fc679027c15f0042f20798\ + 4efe05c1796bca8eba678dfdd00b80418e3ea840557e73b09e003882f9a68edba\ + 3431d351d1ca07a8150b018fdbdf6c2f1ab475792a3ccaa6594472a45f8dc777b\ + 60bf67de3e0f65c20d11b7d59faedf83fbce52617f500d9e514947c455274c6e9\ + 00464767fb56599b81344cf6d12c25cb2b7d038d7b166b6cf30534811c15d0e8a\ + b880a2ac06786ae2ddde61329a78d526f65245380ce877e979c5b50de66c9c30d\ + 66382c8f254653d25a1eb1d3a4897d7623399b473ce712a2184cf2da1861706c4\ + 1466806aefe41b497db82aca6c31c8f4aa68c17d1d9e380b57998917655783ec9\ + 6e5234a131f7299398d36f1f5f84297a55ff292f1f060958c358fed346db2de45\ + 127ca728a9417b2c54203e33e53b9a061d924395b09afab8daf3e8dd7eedcec3a\ + c'}, + {'g': 'ce84b30ddf290a9f787a7c2f1ce92c1cbf4ef400e3cd7ce4978d\ + b2104d7394b493c18332c64cec906a71c3778bd93341165dee8e6cd4ca6f13aff\ + f531191194ada55ecf01ff94d6cf7c4768b82dd29cd131aaf202aefd40e564375\ + 285c01f3220af4d70b96f1395420d778228f1461f5d0b8e47357e87b1fe328622\ + 3b553e3fc9928f16ae3067ded6721bedf1d1a01bfd22b9ae85fce77820d88cdf5\ + 0a6bde20668ad77a707d1c60fcc5d51c9de488610d0285eb8ff721ff141f93a9f\ + b23c1d1f7654c07c46e58836d1652828f71057b8aff0b0778ef2ca934ea9d0f37\ + daddade2d823a4d8e362721082e279d003b575ee59fd050d105dfd71cd63154ef\ + e431a0869178d9811f4f231dc5dcf3b0ec0f2b0f9896c32ec6c7ee7d60aa97109\ + e09224907328d4e6acd10117e45774406c4c947da8020649c3168f690e0bd6e91\ + ac67074d1d436b58ae374523deaf6c93c1e6920db4a080b744804bb073cecfe83\ + fa9398cf150afa286dc7eb7949750cf5001ce104e9187f7e16859afa8fd0d775a\ + e', + 'p': 'f335666dd1339165af8b9a5e3835adfe15c158e4c3c7bd53132e\ + 7d5828c352f593a9a787760ce34b789879941f2f01f02319f6ae0b756f1a842ba\ + 54c85612ed632ee2d79ef17f06b77c641b7b080aff52a03fc2462e80abc64d223\ + 723c236deeb7d201078ec01ca1fbc1763139e25099a84ec389159c40979208073\ + 6bd7caa816b92edf23f2c351f90074aa5ea2651b372f8b58a0a65554db2561d70\ + 6a63685000ac576b7e4562e262a14285a9c6370b290e4eb7757527d80b6c0fd5d\ + f831d36f3d1d35f12ab060548de1605fd15f7c7aafed688b146a02c945156e284\ + f5b71282045aba9844d48b5df2e9e7a5887121eae7d7b01db7cdf6ff917cd8eb5\ + 0c6bf1d54f90cce1a491a9c74fea88f7e7230b047d16b5a6027881d6f154818f0\ + 6e513faf40c8814630e4e254f17a47bfe9cb519b98289935bf17673ae4c803350\ + 4a20a898d0032ee402b72d5986322f3bdfb27400561f7476cd715eaabb7338b85\ + 4e51fc2fa026a5a579b6dcea1b1c0559c13d3c1136f303f4b4d25ad5b69222995\ + 7', + 'q': 'd3eba6521240694015ef94412e08bf3cf8d635a455a398d6f210\ + f6169041653b', + 'x': '698f9d6431b02644cf2a5ab06c6d0e7cbc84d2b98c55bd323074\ + 4e5b9f353eeb', + 'y': '07d138d60a1a141a12ed92cba221f98f0ebe7067426991473549\ + ae920ebbbbab173b000dc6d5836355d6e760fbc316a06102ff1b6c70806b7096a\ + 5b3f08393a8b0738f32bb110434990fa1567ee6059e366a8402d433d8b4304d50\ + d9ee2b4c066d7b9d72b32871e41f844878dc43d3321ed1e9301cd8e56844403bc\ + 5b52d51679c26a23861924d05d32f0dde8c563e34db4ba595e9554439cd2a1d53\ + 77a0a0d273033c622ce7bfb820a024f2994cbf0da8b89921cc2b6b6eae64b9691\ + 18157b0f104bc79bc848a7549a422e8e12569d2f19abe6aa161a4ba04b9b45814\ + 35516ba443e71d9780fba2aade09c7146177fd91d86881dabf7478b6238b8e95c\ + f046987624ed6e979878c9deed9148b4741ec5642f777875deae7cdb29393aef8\ + 416b1d12f83257f1db323435259e091ecd38eaa82e428bcb887a98f0f11a7283e\ + c14f901d1df1de3b7d486436a8f8aa1b40449d47681fbb323503ad32a2a11ee21\ + 4b77c0808bae203af3f6f07f22edefd40f66a62d0511b2419966625e111cb60a7\ + d'}, + {'g': 'ce84b30ddf290a9f787a7c2f1ce92c1cbf4ef400e3cd7ce4978d\ + b2104d7394b493c18332c64cec906a71c3778bd93341165dee8e6cd4ca6f13aff\ + f531191194ada55ecf01ff94d6cf7c4768b82dd29cd131aaf202aefd40e564375\ + 285c01f3220af4d70b96f1395420d778228f1461f5d0b8e47357e87b1fe328622\ + 3b553e3fc9928f16ae3067ded6721bedf1d1a01bfd22b9ae85fce77820d88cdf5\ + 0a6bde20668ad77a707d1c60fcc5d51c9de488610d0285eb8ff721ff141f93a9f\ + b23c1d1f7654c07c46e58836d1652828f71057b8aff0b0778ef2ca934ea9d0f37\ + daddade2d823a4d8e362721082e279d003b575ee59fd050d105dfd71cd63154ef\ + e431a0869178d9811f4f231dc5dcf3b0ec0f2b0f9896c32ec6c7ee7d60aa97109\ + e09224907328d4e6acd10117e45774406c4c947da8020649c3168f690e0bd6e91\ + ac67074d1d436b58ae374523deaf6c93c1e6920db4a080b744804bb073cecfe83\ + fa9398cf150afa286dc7eb7949750cf5001ce104e9187f7e16859afa8fd0d775a\ + e', + 'p': 'f335666dd1339165af8b9a5e3835adfe15c158e4c3c7bd53132e\ + 7d5828c352f593a9a787760ce34b789879941f2f01f02319f6ae0b756f1a842ba\ + 54c85612ed632ee2d79ef17f06b77c641b7b080aff52a03fc2462e80abc64d223\ + 723c236deeb7d201078ec01ca1fbc1763139e25099a84ec389159c40979208073\ + 6bd7caa816b92edf23f2c351f90074aa5ea2651b372f8b58a0a65554db2561d70\ + 6a63685000ac576b7e4562e262a14285a9c6370b290e4eb7757527d80b6c0fd5d\ + f831d36f3d1d35f12ab060548de1605fd15f7c7aafed688b146a02c945156e284\ + f5b71282045aba9844d48b5df2e9e7a5887121eae7d7b01db7cdf6ff917cd8eb5\ + 0c6bf1d54f90cce1a491a9c74fea88f7e7230b047d16b5a6027881d6f154818f0\ + 6e513faf40c8814630e4e254f17a47bfe9cb519b98289935bf17673ae4c803350\ + 4a20a898d0032ee402b72d5986322f3bdfb27400561f7476cd715eaabb7338b85\ + 4e51fc2fa026a5a579b6dcea1b1c0559c13d3c1136f303f4b4d25ad5b69222995\ + 7', + 'q': 'd3eba6521240694015ef94412e08bf3cf8d635a455a398d6f210\ + f6169041653b', + 'x': '1b93d7bf1088760653061409145105940379f9b8b0a9dbbbe001\ + a24ed78e1007', + 'y': '8846c32e6637b4eca3511c3a7f6c95bba4fe1767ce6a3e361e51\ + c63f0f5beea33916880e970aa26357befd6081f4a1bbd42172e3ca27c2c109b42\ + 84f2a2c3910f1d9797bc7879b5e0da28af487f5b4af2a663ce3bf2c46ddf1549a\ + aa1560bc9eb71bc668fcfa09e06d094685057fa72aab91ed28c20b55fdcac00ee\ + 0a43db3c9f1cf03663ac08c43988d923a0dca541ecd82efd54c86076f79035066\ + c3b7dd39065045dc9fbb2e6c00073523c847ae0c5c05977ba7bf45f420fe9b2f2\ + 19232986c633c54a8fa565d64828e9dd80cb0d095009b9d3ef64758a12ce6b3f4\ + 9db5dca3683120a920c6081c96c74495992edbbb9871cf02fa4113340a128ac4d\ + 113113467f6470f994252ea70e56552fcbce91c4299de0ab01c4f0d488a8e6076\ + fd42cf7326b48c41dceeda5415cdc3237bfcdcb358dcb7fc6ad926b475560a82f\ + 95e86e787207dc3874c6aff0bb63b83c1ba5f9aa9355893ab8659dcd1ed4edcdb\ + bd4eeb09f525e3091c576a200ff0219510e97086b40b7849684974eaa9e7f59a1\ + d'}, + {'g': 'ce84b30ddf290a9f787a7c2f1ce92c1cbf4ef400e3cd7ce4978d\ + b2104d7394b493c18332c64cec906a71c3778bd93341165dee8e6cd4ca6f13aff\ + f531191194ada55ecf01ff94d6cf7c4768b82dd29cd131aaf202aefd40e564375\ + 285c01f3220af4d70b96f1395420d778228f1461f5d0b8e47357e87b1fe328622\ + 3b553e3fc9928f16ae3067ded6721bedf1d1a01bfd22b9ae85fce77820d88cdf5\ + 0a6bde20668ad77a707d1c60fcc5d51c9de488610d0285eb8ff721ff141f93a9f\ + b23c1d1f7654c07c46e58836d1652828f71057b8aff0b0778ef2ca934ea9d0f37\ + daddade2d823a4d8e362721082e279d003b575ee59fd050d105dfd71cd63154ef\ + e431a0869178d9811f4f231dc5dcf3b0ec0f2b0f9896c32ec6c7ee7d60aa97109\ + e09224907328d4e6acd10117e45774406c4c947da8020649c3168f690e0bd6e91\ + ac67074d1d436b58ae374523deaf6c93c1e6920db4a080b744804bb073cecfe83\ + fa9398cf150afa286dc7eb7949750cf5001ce104e9187f7e16859afa8fd0d775a\ + e', + 'p': 'f335666dd1339165af8b9a5e3835adfe15c158e4c3c7bd53132e\ + 7d5828c352f593a9a787760ce34b789879941f2f01f02319f6ae0b756f1a842ba\ + 54c85612ed632ee2d79ef17f06b77c641b7b080aff52a03fc2462e80abc64d223\ + 723c236deeb7d201078ec01ca1fbc1763139e25099a84ec389159c40979208073\ + 6bd7caa816b92edf23f2c351f90074aa5ea2651b372f8b58a0a65554db2561d70\ + 6a63685000ac576b7e4562e262a14285a9c6370b290e4eb7757527d80b6c0fd5d\ + f831d36f3d1d35f12ab060548de1605fd15f7c7aafed688b146a02c945156e284\ + f5b71282045aba9844d48b5df2e9e7a5887121eae7d7b01db7cdf6ff917cd8eb5\ + 0c6bf1d54f90cce1a491a9c74fea88f7e7230b047d16b5a6027881d6f154818f0\ + 6e513faf40c8814630e4e254f17a47bfe9cb519b98289935bf17673ae4c803350\ + 4a20a898d0032ee402b72d5986322f3bdfb27400561f7476cd715eaabb7338b85\ + 4e51fc2fa026a5a579b6dcea1b1c0559c13d3c1136f303f4b4d25ad5b69222995\ + 7', + 'q': 'd3eba6521240694015ef94412e08bf3cf8d635a455a398d6f210\ + f6169041653b', + 'x': 'b0c2d0426bc4d5bc98fe90c36acea70591f979dd891adef2363e\ + bb23e09727ab', + 'y': 'c24dd31f155e64fe98e26451d93410038cd696f9e3a36539fc97\ + 7550ef729b2129ab7eb6bea156701778c6a7509e54e7d055f9c185dab63010b0b\ + 255419944188a707ab1c6a3a7dfd85aa1c60e93a815e0954c1d114bc181f631a3\ + c67713a2ff38686d9d37e2c0b83b6a7cba4c8302f80694d9d102347e9209ba58c\ + 7ed4c3e66e25d6df79734e326507b8bf0b63fe78d70478ffe4a4abdacd519b248\ + 0ea90f3fed6a3d6688681e9750f6a66849947389ef6514330af485d3b2b2ebbb0\ + 7d26155fa0d3dd035e49447119c0a66c5769a3a4315ce648233eecc7e151bcf42\ + 052d272a6b5bd6002c5639097f862720c84a5e692ff522ed01bf40071cebf3d6f\ + a8c750d60380a5ce4aa59ad8dfcb795c21aad83b026da7651c2c3c57065bb5bff\ + 40c0bdded071af7c992d1ed0adaa92c91e031977dd449c9355490e513a22e7e17\ + c4625b544f791728147537c90c6df02e07e7286df88ffac76d370f7c2dc19b8b7\ + c7292bfdc3d4cd211649e6c173679bfc71093669c8daabba120431fca20dc6bfc\ + 6'}, + {'g': 'ce84b30ddf290a9f787a7c2f1ce92c1cbf4ef400e3cd7ce4978d\ + b2104d7394b493c18332c64cec906a71c3778bd93341165dee8e6cd4ca6f13aff\ + f531191194ada55ecf01ff94d6cf7c4768b82dd29cd131aaf202aefd40e564375\ + 285c01f3220af4d70b96f1395420d778228f1461f5d0b8e47357e87b1fe328622\ + 3b553e3fc9928f16ae3067ded6721bedf1d1a01bfd22b9ae85fce77820d88cdf5\ + 0a6bde20668ad77a707d1c60fcc5d51c9de488610d0285eb8ff721ff141f93a9f\ + b23c1d1f7654c07c46e58836d1652828f71057b8aff0b0778ef2ca934ea9d0f37\ + daddade2d823a4d8e362721082e279d003b575ee59fd050d105dfd71cd63154ef\ + e431a0869178d9811f4f231dc5dcf3b0ec0f2b0f9896c32ec6c7ee7d60aa97109\ + e09224907328d4e6acd10117e45774406c4c947da8020649c3168f690e0bd6e91\ + ac67074d1d436b58ae374523deaf6c93c1e6920db4a080b744804bb073cecfe83\ + fa9398cf150afa286dc7eb7949750cf5001ce104e9187f7e16859afa8fd0d775a\ + e', + 'p': 'f335666dd1339165af8b9a5e3835adfe15c158e4c3c7bd53132e\ + 7d5828c352f593a9a787760ce34b789879941f2f01f02319f6ae0b756f1a842ba\ + 54c85612ed632ee2d79ef17f06b77c641b7b080aff52a03fc2462e80abc64d223\ + 723c236deeb7d201078ec01ca1fbc1763139e25099a84ec389159c40979208073\ + 6bd7caa816b92edf23f2c351f90074aa5ea2651b372f8b58a0a65554db2561d70\ + 6a63685000ac576b7e4562e262a14285a9c6370b290e4eb7757527d80b6c0fd5d\ + f831d36f3d1d35f12ab060548de1605fd15f7c7aafed688b146a02c945156e284\ + f5b71282045aba9844d48b5df2e9e7a5887121eae7d7b01db7cdf6ff917cd8eb5\ + 0c6bf1d54f90cce1a491a9c74fea88f7e7230b047d16b5a6027881d6f154818f0\ + 6e513faf40c8814630e4e254f17a47bfe9cb519b98289935bf17673ae4c803350\ + 4a20a898d0032ee402b72d5986322f3bdfb27400561f7476cd715eaabb7338b85\ + 4e51fc2fa026a5a579b6dcea1b1c0559c13d3c1136f303f4b4d25ad5b69222995\ + 7', + 'q': 'd3eba6521240694015ef94412e08bf3cf8d635a455a398d6f210\ + f6169041653b', + 'x': '567ed324dc525efac9efc2509345d30f26caac2e668974587627\ + 88b8f94f8a9c', + 'y': '29e2d6f62cdda129f6e004f37000e4661d0fe967249c37c0ebee\ + a879419f26f4a64cd9853c5667705cc39d4137e08d8af7b109c9e43276e413ea0\ + 5bd0c3e9a84a28191890bbac002706a5c7f385531bb882de5d8e57233ad1efd7e\ + 5f3fb090f626795af1b55dc8e98cc801a40b8fff5b09c70a54085e431b5b02078\ + 58b1b3094eee076ba4b12845724ac5e4714b0af442d26c3cf585e2fb53c0f16fa\ + eefa16f171deb03e004a47fa5309ca5a74070bf2b775a8c5fb7611af85e17f077\ + 295f37565635842188348d28556f4768a110794da32b4634eaa9e9a4acb4bb6d2\ + e8d52e66ca5ca7a8e64f46b141b0273704eb5767df2f23d90959e6ba41bd9b568\ + 6a1576bd53132377475718403367c45643ba43eeeff6ca59882b463df111f4729\ + a985eb880092117f0c60b16ee6c68eb3c123da388d58979e0d73ff392fa542e16\ + 01fff532b9ff35924fdc9a08c3bc348e7a573de2d44ba46173c84b064057c6910\ + 7d9a03e0c546a4abbc43e095faa777851d03292c6dedfc8809454c7059250efbb\ + 5'}, + {'g': 'ce84b30ddf290a9f787a7c2f1ce92c1cbf4ef400e3cd7ce4978d\ + b2104d7394b493c18332c64cec906a71c3778bd93341165dee8e6cd4ca6f13aff\ + f531191194ada55ecf01ff94d6cf7c4768b82dd29cd131aaf202aefd40e564375\ + 285c01f3220af4d70b96f1395420d778228f1461f5d0b8e47357e87b1fe328622\ + 3b553e3fc9928f16ae3067ded6721bedf1d1a01bfd22b9ae85fce77820d88cdf5\ + 0a6bde20668ad77a707d1c60fcc5d51c9de488610d0285eb8ff721ff141f93a9f\ + b23c1d1f7654c07c46e58836d1652828f71057b8aff0b0778ef2ca934ea9d0f37\ + daddade2d823a4d8e362721082e279d003b575ee59fd050d105dfd71cd63154ef\ + e431a0869178d9811f4f231dc5dcf3b0ec0f2b0f9896c32ec6c7ee7d60aa97109\ + e09224907328d4e6acd10117e45774406c4c947da8020649c3168f690e0bd6e91\ + ac67074d1d436b58ae374523deaf6c93c1e6920db4a080b744804bb073cecfe83\ + fa9398cf150afa286dc7eb7949750cf5001ce104e9187f7e16859afa8fd0d775a\ + e', + 'p': 'f335666dd1339165af8b9a5e3835adfe15c158e4c3c7bd53132e\ + 7d5828c352f593a9a787760ce34b789879941f2f01f02319f6ae0b756f1a842ba\ + 54c85612ed632ee2d79ef17f06b77c641b7b080aff52a03fc2462e80abc64d223\ + 723c236deeb7d201078ec01ca1fbc1763139e25099a84ec389159c40979208073\ + 6bd7caa816b92edf23f2c351f90074aa5ea2651b372f8b58a0a65554db2561d70\ + 6a63685000ac576b7e4562e262a14285a9c6370b290e4eb7757527d80b6c0fd5d\ + f831d36f3d1d35f12ab060548de1605fd15f7c7aafed688b146a02c945156e284\ + f5b71282045aba9844d48b5df2e9e7a5887121eae7d7b01db7cdf6ff917cd8eb5\ + 0c6bf1d54f90cce1a491a9c74fea88f7e7230b047d16b5a6027881d6f154818f0\ + 6e513faf40c8814630e4e254f17a47bfe9cb519b98289935bf17673ae4c803350\ + 4a20a898d0032ee402b72d5986322f3bdfb27400561f7476cd715eaabb7338b85\ + 4e51fc2fa026a5a579b6dcea1b1c0559c13d3c1136f303f4b4d25ad5b69222995\ + 7', + 'q': 'd3eba6521240694015ef94412e08bf3cf8d635a455a398d6f210\ + f6169041653b', + 'x': 'bfe9402b3493230bec4992e411bc1af7189a66015c8244466c9d\ + 1ff9b1c2a7a9', + 'y': '5a314cbbbe66a88fb370763bbc26d4b3610cd397f58261e59a6b\ + a3548d5f4561c5a548048c4e349cfce45ea2d8843a80b377895beff75a149e1c6\ + 9f4dc58992dff68ea4785d64574653f1e18a515091c8ccb59e01bc053c8470682\ + c43908da6a4c83ec86ea6157042bc48ee14b8b778cc68435d112c15f4200f1a15\ + b06f2e3ac826b832ebbb5bbddc904ba9b321a23b98fa1f2a1d3824bd3ff3dc290\ + 0f6897948e7ddfb37b604f214ceb87a662a95a9736f89d6ea420b9d2f5c365bb6\ + 182862a85900af217d2822060d87c74bc2d55a945cf62436222bdbc3f4930566f\ + edd060f2ee81db0f97f87499a2bc011f76febc1eed40071c23c37ddd6da4a8e9a\ + ae4028e88ff409f041c7fe26c9aac8ed487b0e197cc557a996a30fdf1504dc7b0\ + de1a0120c646821a07784fd6f22f586baa067a3f7978c898bcddbf2544ec0f8e5\ + 9ba826e71d6ceec1c8d735f8ffda75f43cbd4a1efd2af42fa836b2c4648111758\ + 45f72e7cef58514f4bfe86076a6f4d9e9b0eacee11c32e96bb63cd0c439a5668a\ + 4'}, + {'g': 'ce84b30ddf290a9f787a7c2f1ce92c1cbf4ef400e3cd7ce4978d\ + b2104d7394b493c18332c64cec906a71c3778bd93341165dee8e6cd4ca6f13aff\ + f531191194ada55ecf01ff94d6cf7c4768b82dd29cd131aaf202aefd40e564375\ + 285c01f3220af4d70b96f1395420d778228f1461f5d0b8e47357e87b1fe328622\ + 3b553e3fc9928f16ae3067ded6721bedf1d1a01bfd22b9ae85fce77820d88cdf5\ + 0a6bde20668ad77a707d1c60fcc5d51c9de488610d0285eb8ff721ff141f93a9f\ + b23c1d1f7654c07c46e58836d1652828f71057b8aff0b0778ef2ca934ea9d0f37\ + daddade2d823a4d8e362721082e279d003b575ee59fd050d105dfd71cd63154ef\ + e431a0869178d9811f4f231dc5dcf3b0ec0f2b0f9896c32ec6c7ee7d60aa97109\ + e09224907328d4e6acd10117e45774406c4c947da8020649c3168f690e0bd6e91\ + ac67074d1d436b58ae374523deaf6c93c1e6920db4a080b744804bb073cecfe83\ + fa9398cf150afa286dc7eb7949750cf5001ce104e9187f7e16859afa8fd0d775a\ + e', + 'p': 'f335666dd1339165af8b9a5e3835adfe15c158e4c3c7bd53132e\ + 7d5828c352f593a9a787760ce34b789879941f2f01f02319f6ae0b756f1a842ba\ + 54c85612ed632ee2d79ef17f06b77c641b7b080aff52a03fc2462e80abc64d223\ + 723c236deeb7d201078ec01ca1fbc1763139e25099a84ec389159c40979208073\ + 6bd7caa816b92edf23f2c351f90074aa5ea2651b372f8b58a0a65554db2561d70\ + 6a63685000ac576b7e4562e262a14285a9c6370b290e4eb7757527d80b6c0fd5d\ + f831d36f3d1d35f12ab060548de1605fd15f7c7aafed688b146a02c945156e284\ + f5b71282045aba9844d48b5df2e9e7a5887121eae7d7b01db7cdf6ff917cd8eb5\ + 0c6bf1d54f90cce1a491a9c74fea88f7e7230b047d16b5a6027881d6f154818f0\ + 6e513faf40c8814630e4e254f17a47bfe9cb519b98289935bf17673ae4c803350\ + 4a20a898d0032ee402b72d5986322f3bdfb27400561f7476cd715eaabb7338b85\ + 4e51fc2fa026a5a579b6dcea1b1c0559c13d3c1136f303f4b4d25ad5b69222995\ + 7', + 'q': 'd3eba6521240694015ef94412e08bf3cf8d635a455a398d6f210\ + f6169041653b', + 'x': '032b33c28d8645e4e83bb7577d9198677332a615478e78935419\ + 218033d01af8', + 'y': 'b91ea0d1884c225566a50816f7f8df5fe4b2f295ecb7af8352a5\ + 2feaa15409205c7747d269fc53ef73ae100ab8d4c1dd5fcceb2173942b2b025e9\ + d6cd57d6d87dcb7691e95aeec58038ed38012ef805b9bcfd1ce4b9ab26b9f476b\ + 215159608073e796b5bbf759a841a89a50426ad1e24c82584107f55ccbe85022e\ + 14fb372e113052bab5c852213e0c2ef6c608cd4b70da884fc6423fb894fac291d\ + a6fa057a6b020c6605a92add57eda2e188ca3b18b14d2f7e60ce3f9076877c4ab\ + 319a760e2a5ac9ec591e9b57096d9e6d1db6648415b89ba9b42f4b6d5487c0566\ + ddd514023db211a709944df819636c6c3e50fa63490b153873d00da653446e56c\ + 674ddc32ab1ef2b3ba945fa4c18f496d295d6379899e24cb58abc4b092cad5501\ + 7f97837dfec549f1337b3e84658653823142f75d4533d33c467733d971a8b118c\ + 94da090a5f1adb02847d9a08cacc663cb99cd67116f63b689a5660f9c160c9528\ + 02b23eb6361bdac590e9dca0c67bf626e84ad30684070b7149338d00db790625b\ + a'}, + {'g': 'ce84b30ddf290a9f787a7c2f1ce92c1cbf4ef400e3cd7ce4978d\ + b2104d7394b493c18332c64cec906a71c3778bd93341165dee8e6cd4ca6f13aff\ + f531191194ada55ecf01ff94d6cf7c4768b82dd29cd131aaf202aefd40e564375\ + 285c01f3220af4d70b96f1395420d778228f1461f5d0b8e47357e87b1fe328622\ + 3b553e3fc9928f16ae3067ded6721bedf1d1a01bfd22b9ae85fce77820d88cdf5\ + 0a6bde20668ad77a707d1c60fcc5d51c9de488610d0285eb8ff721ff141f93a9f\ + b23c1d1f7654c07c46e58836d1652828f71057b8aff0b0778ef2ca934ea9d0f37\ + daddade2d823a4d8e362721082e279d003b575ee59fd050d105dfd71cd63154ef\ + e431a0869178d9811f4f231dc5dcf3b0ec0f2b0f9896c32ec6c7ee7d60aa97109\ + e09224907328d4e6acd10117e45774406c4c947da8020649c3168f690e0bd6e91\ + ac67074d1d436b58ae374523deaf6c93c1e6920db4a080b744804bb073cecfe83\ + fa9398cf150afa286dc7eb7949750cf5001ce104e9187f7e16859afa8fd0d775a\ + e', + 'p': 'f335666dd1339165af8b9a5e3835adfe15c158e4c3c7bd53132e\ + 7d5828c352f593a9a787760ce34b789879941f2f01f02319f6ae0b756f1a842ba\ + 54c85612ed632ee2d79ef17f06b77c641b7b080aff52a03fc2462e80abc64d223\ + 723c236deeb7d201078ec01ca1fbc1763139e25099a84ec389159c40979208073\ + 6bd7caa816b92edf23f2c351f90074aa5ea2651b372f8b58a0a65554db2561d70\ + 6a63685000ac576b7e4562e262a14285a9c6370b290e4eb7757527d80b6c0fd5d\ + f831d36f3d1d35f12ab060548de1605fd15f7c7aafed688b146a02c945156e284\ + f5b71282045aba9844d48b5df2e9e7a5887121eae7d7b01db7cdf6ff917cd8eb5\ + 0c6bf1d54f90cce1a491a9c74fea88f7e7230b047d16b5a6027881d6f154818f0\ + 6e513faf40c8814630e4e254f17a47bfe9cb519b98289935bf17673ae4c803350\ + 4a20a898d0032ee402b72d5986322f3bdfb27400561f7476cd715eaabb7338b85\ + 4e51fc2fa026a5a579b6dcea1b1c0559c13d3c1136f303f4b4d25ad5b69222995\ + 7', + 'q': 'd3eba6521240694015ef94412e08bf3cf8d635a455a398d6f210\ + f6169041653b', + 'x': '2c26fbb0469074e06e5f267d6e91171e0c1f3ba77197fc551380\ + 7b490920e5ba', + 'y': '5490d55c6a0b921e63837847c2787a710bf66e91fe5e8d5604bd\ + 0872851a37c4981f76487f4e85f05b68f99af7bcb240844f6c1b4a0717d44ce9c\ + 425757666efe9d146b91cd556b37080e6a2a73e68415bc85d6a52b4619d473d7a\ + 144bf3d56105efe21c99ffa806325a6c675f8ca6abcb3219d9856f6bdced1d961\ + 2e8728594108b76b4a544cf1d5da42974b90cd59b08857ed5d442c596bd45df9f\ + fcf30d71192bcf04b19b9c44a5426a25fa03e97e46fc9155ad45e9261d0fb5d73\ + 6852aefb800d9827e39c9f308b035e135587fce4bc604198eb846fc2b290ea458\ + 08367f66b1a7c9493cc82bbf99cb0c69ad51e7c49062c40b72325fde6fa93ed87\ + 2d3989aab6add98d51dfba24b7a7b3a19b2fbcb7e5d9816c07d385afb799d649e\ + 7fb3fbb3b4a84219083c65e4a54d52313b3e11cf4cd5c864afe34f5a2ff883189\ + 955d401acf5aa8e51f9c7e3333ae9e3393ff77400df4059e56df5a4d374f12a8d\ + 7eddef9e8a7f8bd267a04dd9720ab0479ec780173d644eb52d7f5d4f3a589226d\ + 2'}, + {'g': 'ce84b30ddf290a9f787a7c2f1ce92c1cbf4ef400e3cd7ce4978d\ + b2104d7394b493c18332c64cec906a71c3778bd93341165dee8e6cd4ca6f13aff\ + f531191194ada55ecf01ff94d6cf7c4768b82dd29cd131aaf202aefd40e564375\ + 285c01f3220af4d70b96f1395420d778228f1461f5d0b8e47357e87b1fe328622\ + 3b553e3fc9928f16ae3067ded6721bedf1d1a01bfd22b9ae85fce77820d88cdf5\ + 0a6bde20668ad77a707d1c60fcc5d51c9de488610d0285eb8ff721ff141f93a9f\ + b23c1d1f7654c07c46e58836d1652828f71057b8aff0b0778ef2ca934ea9d0f37\ + daddade2d823a4d8e362721082e279d003b575ee59fd050d105dfd71cd63154ef\ + e431a0869178d9811f4f231dc5dcf3b0ec0f2b0f9896c32ec6c7ee7d60aa97109\ + e09224907328d4e6acd10117e45774406c4c947da8020649c3168f690e0bd6e91\ + ac67074d1d436b58ae374523deaf6c93c1e6920db4a080b744804bb073cecfe83\ + fa9398cf150afa286dc7eb7949750cf5001ce104e9187f7e16859afa8fd0d775a\ + e', + 'p': 'f335666dd1339165af8b9a5e3835adfe15c158e4c3c7bd53132e\ + 7d5828c352f593a9a787760ce34b789879941f2f01f02319f6ae0b756f1a842ba\ + 54c85612ed632ee2d79ef17f06b77c641b7b080aff52a03fc2462e80abc64d223\ + 723c236deeb7d201078ec01ca1fbc1763139e25099a84ec389159c40979208073\ + 6bd7caa816b92edf23f2c351f90074aa5ea2651b372f8b58a0a65554db2561d70\ + 6a63685000ac576b7e4562e262a14285a9c6370b290e4eb7757527d80b6c0fd5d\ + f831d36f3d1d35f12ab060548de1605fd15f7c7aafed688b146a02c945156e284\ + f5b71282045aba9844d48b5df2e9e7a5887121eae7d7b01db7cdf6ff917cd8eb5\ + 0c6bf1d54f90cce1a491a9c74fea88f7e7230b047d16b5a6027881d6f154818f0\ + 6e513faf40c8814630e4e254f17a47bfe9cb519b98289935bf17673ae4c803350\ + 4a20a898d0032ee402b72d5986322f3bdfb27400561f7476cd715eaabb7338b85\ + 4e51fc2fa026a5a579b6dcea1b1c0559c13d3c1136f303f4b4d25ad5b69222995\ + 7', + 'q': 'd3eba6521240694015ef94412e08bf3cf8d635a455a398d6f210\ + f6169041653b', + 'x': '8764250978f67f45cb30bf487da305413ee0bcc1ae483aae901e\ + 806d321e6baf', + 'y': '8f461958d60f81940da1735ccbeb9396503d96bb8d187361fabd\ + a001c67c713164b690affb8959ca6a31c7bdd9ff21b23e6d94a63a61c7cc11b4b\ + 3b90500cdffdba160603972abf3fe91704a190fe33a3f59a2c30cb5ad3bf9f85a\ + 710f3cdfe93949e6b18865e5d21ea8b42c7e57a7b400ff2ce7543e89970dfcc7e\ + 814be38eeebb74fc28aee97ab0f4138ca3a67e478c6c38ef8f3422c67fdf432c0\ + 49a62836b967600ab3b11fff42f0414196d89af929282c0f1102dd51cac5d5096\ + 44fa4d43e0b0761ce7e7c0b531b8098656826d312bdbb439b06d45757260b0ff2\ + 0d2aa02825044b68085916227cbc53a67cb640d6238034bb67f00c13d181c0708\ + 2c238588a1df85530a2b14dbdb749a47f879700c9d86c1eeb8f618bdcbe202202\ + 7064a8eb8b6f57ca411b0e14d6684dc0d26df27d76e00bf6acc9132a98b9b2077\ + a832995e7734c1cfc2dbc67fe8f85056cc52f8cb1aafd1e7fd74af30a9297bed0\ + c7b20422b10321e9a67566c0f1cbee858021d1686c87c4178e6a89be47c846c31\ + c'} + ] + + expected = [] + for dictionary in expected_vectors: + new_dict = {} + for k, v in dictionary.iteritems(): + v = v.strip() + v = v.replace(" ", "") + v = int(v, 16) + new_dict[k] = v + expected.append(new_dict) + + assert expected == load_fips_dsa_key_pair_vectors(vector_data) diff --git a/tests/utils.py b/tests/utils.py index b97c7f7b..00f8353e 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -339,3 +339,58 @@ def load_rsa_nist_vectors(vector_data): test_data[name.lower()] = value.encode("ascii") return data + + +def load_fips_dsa_key_pair_vectors(vector_data): + """ + Loads data out of the FIPS DSA KeyPair vector files. + """ + vectors = [] + # When the flag is "on" it tells the loader to continue constructing + # dictionaries. We turn the flag to "off" during the blocks of the + # vectors of N=224 because we don't support it. + flag = "on" + for line in vector_data: + line = line.strip() + + if not line or line.startswith("#"): + continue + if line.startswith("[mod = L=1024"): + continue + if line.startswith("[mod = L=2048, N=224"): + flag = "off" + continue + if line.startswith("[mod = L=2048, N=256"): + flag = "on" + continue + if line.startswith("[mod = L=3072"): + continue + + if flag == "off": + continue + + if flag == "on": + if line.startswith("P"): + vectors.append({'p': int(line.split("=")[1], 16)}) + continue + if line.startswith("Q"): + vectors[-1]['q'] = int(line.split("=")[1], 16) + continue + if line.startswith("G"): + vectors[-1]['g'] = int(line.split("=")[1], 16) + continue + if line.startswith("X") and 'x' not in vectors[-1]: + vectors[-1]['x'] = int(line.split("=")[1], 16) + continue + if line.startswith("X") and 'x' in vectors[-1]: + vectors.append({'p': vectors[-1]['p'], + 'q': vectors[-1]['q'], + 'g': vectors[-1]['g'], + 'x': int(line.split("=")[1], 16) + }) + continue + if line.startswith("Y"): + vectors[-1]['y'] = int(line.split("=")[1], 16) + continue + + return vectors |