/* sbox_params.c - Don Yang (uguu.org) Determine optimal string encoding for sbox parameters. 06/03/12 */ #include #include /* xor once: for(i=0;i<144;i++)for(j=0;j<3;s[i][j++]=80^*c++); xor three times: for(i=0;i<144;i++)s[i][0]=81^*c++;s[i][1]=22^*c++;s[i][2]=24^*c++; xor3 costs 17 more bytes in code, but the resulting string is 27 bytes shorter, so we are going with xor3. */ #define USE_XOR3 #define MAX_CHARS_PER_ENCODED_CHAR 6 typedef unsigned char Byte; /* Sbox initialization seeds, sorted by sort_sbox_params.pl */ static const int sbox_params[9 * 16][3] = { /* {{{ new moon */ /* 0 26ea69a9e929a6669450a76727e710d02ae615d595556aaae82c6babeb2b6cac922e11d191516eaeec286fafef2f68a8ee526daded2d12d2905413d3935314d4569a19d99959d616e420d717579760a05a9665a5e5251ada985c1bdb9b5b1cdc1ee261a1e1219e5e9c589f5f1fdf18d822de9d5d1ddd62a2e02463a3e32364a48a3609c9894976b6f43077b7f73770b0f64a75b5f5350aca884c0bcb8b4b0cccf24e71b1f1310ece8c480fcf8f4f08c88e320dcd8d4d72b2f03473b3f33374b4fa4679b9f93906c6844007c7874700c0863a05c585457abaf83c7bbbfb3b7cbc823e01c181417ebefc387fbfff3f78b8fe427dbdfd3d02c2804403c3834304c4 */ /* 0 68b4fb3b7bbb28e876baf53575b5f63674a8f73777b7f4346ab629e9a9692aeaac7023e3a36330f0a20e2d8dcd6d4e8eb06c4f8fcf0f2cec72ce31f1b171f23258c44b8bcb0bd818ca064585c505468604984787c70744845ac6d9195999da1a009cd313539340807e92fd1d5dbdfe3e5cc0ff3f7fbfdc1c02be4181c101428294081bdb9b5b48889a5615d5955516d6c85417d7975714d4960a4989c9094a8acc104383c3035090c26e4dedad0d2eeed00c2fefaf6f4c8cae525191d11112d2a4782bebab6b38f8aa6625e5a56526e6b86427e7a76724e4a67a39f9b9793afabc6033f3b37320e0b25e3ddd9d7d1edea07c1fdf9f5f3cfc9e6221e1a16122e2 */ /* 0 10acd313539390506e922dedad6d2eee6cd02fefaf6f2cecae62915111d122e278942bebab6bf83876aaf51555b5f63654b8f73777b7d4147ab6f93979b9fa3a609c23e3a363e0205ea2dd1d5d9dde1e5ca0df1f5f9fdc1c529ee12161a1d212a408db1b5b9b4888069a2585c5654686c8644787c70724e4c60a4989c9094a8acc0033f3b3734080b20e4d8dcd0d4e8ec00c4f8fcf0f4c8cce024181c1014282b4584b8bcb0b18d8ca5635d5957516d6987417d7975734f4965a19d999591adabc704383c30330f0c27e3dfdbd7d3efeb07c3fffbf7f3cfcbe7231f1b17132f2c4683bfbbb7b28e8ba6645e5a50526e6a80427e7a7674484a66a29e9a9692aea */ /* 0 28d49b5b1bdb68a816da955515d5965614e8975717d794542ad669a9e9296aaa10ec63a3e32390502e82ad6d2dedae6e2cd0af6f2fefac6c12ee915111d1925218e4ab6b2beb9858ea2665a5e52566a624d867a7e72764a41ae6995919d99a5a20dc935313d360a01ef29d5d1ddd9e5e1ce09f5f1fdf9c5c22de61a1e12162a2f4487bbbfb3b08c8fa3675b5f53576b6883477b7f73774b4f64a09c989490acacc3003c3834370b0e20e4d8dcd0d4e8ef00c4f8fcf0f4c8cce3271b1f13172b284384b8bcb0b78b88a4605c5854506c6f84407c7874704c4863a79b9f9397abafc4073b3f33300c0d23e7dbdfd3d7ebe803c7fbfff3f7cbcfe4201c1814102c2 */ /* 0 06da5999d919a64600c4a76727e780401ae6854505c55a9ad81c5b9bdb1b5c9c1ec2814101c15e9edc185f9fdf1f589802de5d9ddd1d824204c0834303c3844476eaa96929e9369630f45797d717b0702ad6b57535f5aa6a2ce8ab6b2bebac6c2ef2b17131f1ae6e28ecaf6f2fefa86832eead6d2dedb27234f0b37333f3b474ba2639f9b9796686e4204787c70760a0c67a65a5e5253afab87c3bfbbb7b3cfce27e61a1e1213efebc783fffbf7f38f8be223dfdbd7d62a2e02463a3e32364a4ca164989c90956f6d41037f7b7775090b60a5595d5154a8ac80c4b8bcb0b4c8cd20e5191d1114e8ecc084f8fcf0f4888ce124d8dcd0d5292d0145393d3135494 */ /* 0 fd5514d4fa3a7bbbfb3b7aba945415d5912968a8965677b7f73716d6e82869a9e52d6cac62a2e32363a3e222ec2c6dade95110d0ee2e6fafef2f6eae905011d18d2564a48a4a0bcb8b4b0acae42465a559a118d8e62607c7874766a6985819d9955d1cdc925213d3935312d29c5c1ddd6199e0209e5e1fdf9f5f1ede60a0e1219d3574b49a5a1bdb9b5b1adaf43475b5f14908c8f63617d7975776b6884809c9854d0ccc824203c3834302c28c4c0dcd893170b08e4e0fcf8f4f0ecef03071b1ed4504c4ea2a6babeb2b6aaa844405c5813978b8864667a7e72706c6f83879b9f53d7cbcf23273b3f33372b2fc3c7dbdf94100c0fe3e7fbfff3f7ebe804001c1 */ /* 0 1d85bc7c824203c3834302c23cfc9d5df93170b01ede9f5f1fdf9e5ef03071b145dd04c4fa3a7bbbfb3b7aba844405c5814908c8864607c7874706c6884809c9f52d0cccf23273b3f33372b28c4c6dad894100c0ee2e6fafef2f6eae804001c1ed3574b48a4a0bcb8b4b0acaf43475b5f13978b8f63677b7f73776b6f83879b9e53d5c9ce22263a3e32362a2dc1c7dbd995110d0fe3e7fbfff3f7ebe905011d1fd2564a49a5a1bdb9b5b1adae42465a5e12968a8e62667a7e72766a6e82869a9954d6cac925213d3935312d2ec2c0dcde92160a08e4e0fcf8f4f0ecee02061a18d5514d4ea2a6babeb2b6aaa945415d5915918d8965617d7975716d6985819d9 */ /* 0 51a9d010f65677b7f73716b65090d1116d95ec2c6aaaeb2b6babea2a6caced2d6991e8286eaeef2f6fafee2e68a8e92955ad14d45292d3135393d212945415d56199e0206686c7074787c62660a0e1215da51cdc9a5a1bdb9b5b1ada9c5c1ddd59a118d89e5e1fdf9f5f1ede985819d9659de42462a2e32363a3e22264a4e525897130f0963617d7975776d6b07031f1f54d0ccc8a4a0bcb8b4b0aca8c4c0dcdb14908c88e4e0fcf8f4f0ece884809c98d3574b4b27233f3b37332f2f43475b5f94100c0a64627e7a76706e6804001c1853d7cbcfa3a7bbbfb3b7abafc3c7dbd813978b8fe3e7fbfff3f7ebef83879b9fd4504c4824203c3834302c2844405c5 */ /* 0 26da5999d919a66600e4a76727e780401ae6a56525e55a9ad81c5b9bdb1b5c9c1ec2814101c15e9edc185f9fdf1f589802de5d9ddd1d824204c0834303c3a44416eaa96929e9569630d45797d717b0702ad6955515d5aa6a2ce8ab6b2bebac6c2ef2b17131f1ae6e28ecaf6f2fefa86832eead6d2dedb27234f0b37333f39474ba0639f9b9794686c4204787c70760a0c67a4585c5053afab87c3bfbbb7b3cfce27e61a1e1213efebc783fffbf7f38f8be223dfdbd7d62a2e02463a3e3236484ca764989c90936f6f41037f7b7775090b60a75b5f5354a8ac80c4b8bcb0b4c8cd20e5191d1114e8ecc084f8fcf0f4888ce124d8dcd0d5292d0145393d31354b4 */ /* 0 dc704383c30330f05ec25d9ddd1dde1eb07cdf1f5f9f3c9c729e31f1b17132f2c4083bfbbb7b4888ba064585c5054686c8044787c7074484c60a4989c9094a8aac0033f3b3734080b26e2dedad6d2eeec00c2fefaf6f4cecae024181c1014282b4784b8bcb0b38f8ca7635f5b57536f6b87437f7b77734f4b67a39f9b9793afabc1023e3a3635090a27e3dfdbd7d3efed01c3fffbf7f5cfcbe125191d1115292a4685b9bdb1b28e8da6625e5a56526e6a86427e7a76724e4a66a29e9a9692aeacc605393d31320e0d20e4d8dcd0d4e8ea06c4f8fcf0f2c8cce6221e1a16122e2d4182bebab6b5898aa165595d5155696d8145797d7175494d61a5999d9195a9a */ /* 0 11c99050d6165797d717569610d091512dd5ac6c0acaab6b2beb8a4a2cecad6d09d188482eeeaf6f2fefae6e08c8894915ed549412d2935313d39252d414559521b9a06026e6a76727e7a66620e0a1611de55c9cba7a5b9bdb1b3afadc1c5d9d79e138f8de1e5f9fdf1f5e9eb87839f925dda46422e2a36323e3a26224e4a565e93170b0b67637f7b77736f6f03071b1b50d4c8cea2a4b8bcb0b6aaacc0c4d8df12968a8ce0e4f8fcf0f4e8ee82869a9cd7534f4f23273b3f33372b2b47435f5d9014080c6064787c7074686c0004181c57d3cfcda1a3bfbbb7b5a9abc7c3dfdc1195898be7e3fffbf7f3efed8185999bd054484c2024383c3034282c4044585 */ /* 0 7dc5fc3ca2622383c36322e27cbcfd3db97130f07ebeff3f7fbffe3eb07031f105bd44847abafb3b7bbbfa3ac4044585a1094888c6064787c7074686c8084989b50d4c8cd21253f3b3135292cc0c4d8dc9014080ce0e4f8fcf0f4e8ec0004181cd7534f4ca0a4b8bcb0b4a8ab47435f5d17938f8b67637f7b77736f6b87839f9a55d1cdcc20243e3a30342829c5c1dddd91150909e5e1fdf9f5f1eded01051919d6524e49a5a1bdb9b5b1adaa46425e5c16928e8a66627e7a76726e6a86829e9d56d2cecb2723393d37332f2ac6c2deda96120e0ae6e2fefaf6f2eeea06021e1ad155494aa6a2bebab6b2aead4145595b1195898d6165797d7175696d8185999 */ /* 0 58a4eb2b6bab18d866aae52565a5e6266498e72767a7e4245aa619d999591ada409c13d39353c000925e1ddd9d5d1ede5c801fdf9f5f1cdc429ec1014181e20268941bdb9b5be8289a5615d5955516d654a817d7975714d46a96e92969a9ea2a70ace32363a3f0306ea2ed2d6dadee2e6cb0ef2f6fafec2c32ae71b1f13172d284380bcb8b4b78b88a4605c5854506c6f84407c7874704c4863a79b9f9397abafc6073b3f33320e0f23e7dbdfd3d7ebea03c7fbfff3f7cbcfe6221e1a16122c2f4487bbbfb3b08c8fa3675b5f53576b6883477b7f73774b4f64a09c989490aca8c5003c3834310d0824e0dcd8d4d0ece904c0fcf8f4f0ccc8e5211d1915112b2 */ /* 0 d50d4c8cd2125393d3135292cc0c4d8d01c98040ae0e2fefaf6f4eee00c08141cd1554940aca8b4b0bcb8a4ad4145595d1195898d6165797d7175696d81859997de53cfc22e2a36323e3a262bc7c3dfdb97130f0de7e5f9fdf1f3e9eb07031f125bda464ba7a3bfbbb7b3afa24e4a56529e1a86826e6a76727e7a66628e8a969b56d2cecb27233f3b37332f2ac6c2dede92160a0ce6e4f8fcf0f2e8ee02061a1ad7534f4ea2a6babeb2b6aaab47435f5b17938f8b67637f7b77736f6b87839f9c51d5c9cc2024383c3034282dc1c5d9dd9115090be1e3fffbf7f5efed0105191dd054484da1a5b9bdb1b5a9ac4044585c1094888c6064787c7074686c8084989 */ /* 0 11e9905036f6b77737f7b67610d091512df56cacea2a6babeb2b6aaaec2cad6d29d168a82eeeaf6f2fefae6ee82869a935edb47412d2b35313f3925234f4b57521d960a0864607c7874706c6e02061a11d859c5c1ada9b5b1bdb9a5a1cdc9d5d19e198581ede9f5f1fdf9e5e18d8995945dd04c4e22263c3832362a2844405c5893170b0d6165797d7175696f03071b1d50d0ccc8a4a0bcb8b4b0aca8c4c4d8df14908c8ce0e4f8fcf0f4e8e884809c9cd155494f2327393d33372b2d4145595f94100c0e62667a7e72766a6804001c1e53d7cbcfa3a7bbbfb3b7abafc3c7dbd813978b8fe3e7fbfff3f7ebef83879b9fd2564a4824203a3e34302c2e42465a5 */ /* 0 f25e71b1f1311ede9c581fdf9f5f18d89e321ddd9d5d72b2f05473b3f33314d4468ac9094989c6064084c7074787c0004a86c5054585ca0a4c88cb0b4b8bcc0c2e82c10141816eae68ac6fafef2fe82842eeed2d6dadc2026480c3034383e424fa3679b9f93976b6f43077b7f73770b0f63a75b5f5357abaf83c7bbbfb3b7cbc923e11d191517ebefc387fbfff3f78b8fe527dbdfd3d12d2903413d3935374b4aa6629e9a96926e6a46027e7a76720e0a66a25e5a5652aeaa86c2bebab6b2ceca24e21e1a1610ece8c480fcf8f4f08c88e620dcd8d4d22e2a04423e3a36304c49a5619d9995916d6945017d7975710d0965a15d595551ada985c1bdb9b5b1cdc */ {0x5b, 0x62, 0x1d}, /* hash=f9f1b928, distance=7920 */ {0x15, 0x57, 0x52}, /* hash=76e27807, distance=6924 */ {0x15, 0x67, 0x52}, /* hash=58ac8290, distance=7128 */ {0x3f, 0x10, 0x0b}, /* hash=414eb2d2, distance=7668 */ {0x79, 0x41, 0x76}, /* hash=fd65a4e5, distance=7280 */ {0x6b, 0x46, 0x24}, /* hash=33f7fcb2, distance=6972 */ {0x33, 0x22, 0x1c}, /* hash=c56b1df2, distance=6880 */ {0x7d, 0x25, 0x34}, /* hash=7becdd4b, distance=6580 */ {0x01, 0x3d, 0x76}, /* hash=27708e5b, distance=7564 */ {0x39, 0x1d, 0x5e}, /* hash=69c8f1b9, distance=6800 */ {0x2b, 0x4e, 0x74}, /* hash=8722bedc, distance=6640 */ {0x19, 0x33, 0x5a}, /* hash=257a5645, distance=6692 */ {0x01, 0x43, 0x31}, /* hash=e323108b, distance=7400 */ {0x2d, 0x65, 0x6c}, /* hash=3734923c, distance=6532 */ {0x09, 0x6d, 0x0d}, /* hash=7cfc6195, distance=6488 */ {0x63, 0x6c, 0x2e}, /* hash=82840f2e, distance=6456 */ /* }}} */ /* {{{ waxing crescent */ /* 0 b50d4c8cb27233f3b37332f2cc0c4d8dc96120e0ce0e4f8fcf0f4e8ea0602181cd7534f4ca0a4b8bcb0b4a8ab47435f5b17938f8b67637f7b77736f6b87839f97dc5fc3cc2024383c30342827cbcfd3db91150907ebeff3f7fbffe3ed01051f105bd4484ba7afb3b7bbb3afac4044585c1094888c6064787c7074686c8084989d56d2cecd2125393d3135292ac6c2deda9014080ae6e2fefaf6f2eeec00041e1ad155494aa6a2bebab6b2aead4145595d1195898d6165797d7175696d8185999a55d1cdca26223e3a36322e29c5c1dddd97130f09e5e1fdf9f5f1edeb07031919d6524e4da1a1bdb9b5b5a9aa46425e5a16928e8a66627e7a76726e6a86829e9 */ /* 0 d6125595d5155292d06c5393d3132cecaa6e29e9a9692eeeac602fefaf6f9020ae6a2dedad6d2aeaa8142bebab6b5494d2165191d111569658d4d7175797f818a66225e5a56522e25ca023e3a363dc1c5e9ad9195999de1e109cdf1f5f9fe0505a9edd1d5d9dda1a6498db1b5b9b24e4a26621e1a16126e6a46827e7a7672888b67235f5b57532f2b00c33f3b3734c8cca0e4989c9094e8ecc004f8fcf0f4080ce0a4d8dcd0d4a8ac8744b8bcb0b34f4b27631f1b17136f6b47837f7b77738d8c6024585c5054282c07c4383c3033cfcba7e39f9b9793efebc703fffbf7f30f0be7a3dfdbd7d3afab8043bfbbb7b4484c2064181c1014686c4084787c70748e8 */ /* 0 ea3669a9e92976b6f45077b7f73710d0f62a75b5f5356aaa2ca86babeb2b6cac922e11d191516eae68ec6fafef2fe828ee526daded2d12d2903413d3935374b4469a19d99959c6066084c7074787e0205a86c50545851ada985c1bdb9b5b1cdc5ea2e12161a11ede9c581fdf9f5f18d8629e1ddd9d5de22244a0e32363a3c4048a5609c9894916d6943017d7975770b0964a15d595550aca884c0bcb8b4b0cccf24e71b1f1310ece8c480fcf8f4f08c88e320dcd8d4d72b2f05473b3f33314d4fa6679b9f93926e6a44027e7a76700c0a63a25e5a5657abaf83c7bbbfb3b7cbc823e01c181417ebefc387fbfff3f78b8fe427dbdfd3d02c2806403c3834324e4 */ /* 0 58a42bebab6bd818aa6625e5a56526e6649827e7a76724e45aa6d9195999da1a609cd313539320e07e92fd1d5dbdfe3e5ca0ff3f7fbfdc1c62be21e1a16122e26894db1b5b9b28e8569ad5155595d61654a8d7175797d4146a9629e9a9692aea50ac23e3a363d0104ea2cd2d6d8dce0e6c90cf0f4f8fec2c528ed1115191d212c4784b8bcb0b38f8ca064585c5054686b8044787c7074484c67a39f9b9793afabc0033f3b3734080b25e3ddd9d7d1edec07c1fdf9f5f3cfc9e024181c1014282b4083bfbbb7b4888ba7635f5b57536f6c87437f7b77734f4b60a4989c9094a8a8c704383c30330f0c26e0dedad4d2eeeb04c2fefaf6f0cccae7231f1b17132f2 */ /* 0 48941bdb9b5bc8089a5615d5955516d6548817d7975714d44a96c9094989ca0a8c30c303438370b04e820dcd8d4d0ecef04c0fcf8f4f0ccc8e5271d1913112d238a4eb2b6bab78b866aae52565a5e62664f8e72767a7e4243aa679b9f9397aba40fc73b3f333c000f23e7dbdfd3d7ebe3c807fbfff3f7cbc62fee10141a1e222f4687bbbfb3b28e8fa3675b5f53576b6a83477b7f73774b4f66a29e9a9692aeaec5023e3a36310d0a22e6daded2d6eae902c6fafef2f6cacee3211b1f15172b284580bcb8b4b18d88a4605c5854506c6984407c7874704c4865a19d999591ada9c6013d3935320e0925e1ddd9d5d1edea05c1fdf9f5f1cdc9e4221c1816102c2 */ /* 0 9e5a1ddd9d5d7aba98347bbbfb3b74b436b2f13171b176b648f477d79737c8084286c5054585c2024c80c3034383cc0c4e8ac9094989ce0e708ccf0f4f8ff0304aaeed2d6dadca0a4488cb0b4b8bc4044682c1014181c6063884e70747a778b872f675b5f535f2323cb0f33373b37cbcfa3e79b9f9397ebe40fc7fbfff3fc000fe3a7dbdfd3d1adaf8541bdb9b5b14d4925611d1915116d6946817b7f75728e8a66225e5a56522e2a06c23e3a3632cecaa6e29e9a9692eeeac502fefaf6f10d08e6a0dcd8d4d2aeaa8642bebab6b24e4a26621e1a16126e6a45827c7876718d8965215d5955512d2905c13d393531cdc9a5e19d999591ede9c601fdf9f5f20e0 */ /* 0 0894db3b7b9b488856bad5155595d61654c8d7175797d4140a964989c9094a8acc704383c30330f0c20e4d8dcd0d4e8eb00c4f8fcf0f4c8cce7231f1b17132f278a42bebab6bf838aa6625e5a56526e664b827e7a76724e47aa6f93979b9fa3a00bc33f3b37340807eb2fd3d7dbdfe3e7cc0ff3f7fbffc3c02be4181c1014282b4684bfbbb0b28e8ca7635f5b57536f6a87437f7b77734f4b66a29e9a9692aeaac1023e3a3635090a26e2dedad6d2eeed06c2fefaf6f2cecae125191d1115292c4581b8bcb5b18d89a064585c505468698044787c7074484c65a19d999591ada9c605393d31320e0d25e1ddd9d5d1edea05c1fdf9f5f1cdc9e6221e1a16122e2 */ /* 0 1d857cbc824203c3834302c2fc3c9d5df93170b01ede9f5f1fdf9e5ef03071b145dd04c4fa3a7bbbfb3b7aba844405c5814908c8864607c7874706c6884809c9f52d0cccf23273b3f33372b28c4c6dad894100c0ee2e6fafef2f6eae804001c1ed3574b48a4a0bcb8b4b0acaf43475b5f13978b8f63677b7f73776b6f83879b9e53d1cdce22263a3e32362a29c5c7dbd995110d0fe3e7fbfff3f7ebe905011d1fd2564a49a5a1bdb9b5b1adae42465a5e12968a8e62667a7e72766a6e82869a9954d6cac925213d3935312d2ec2c0dcde92160a08e4e0fcf8f4f0ecee02061a18d5514d4ea2a6babeb2b6aaa945415d5915918d8965617d7975716d6985819d9 */ /* 0 12d6955515d592522cd0935313d3ac6c2eca894909c9ae6e00ecaf6f2fef80400aeead6d2ded8a4a14c8ab6b2beb945416d2915111d1965618d4975717d7985822e6a56525e5a2621ce0a36323e35c9cba1eb97939f95e9e30dc5f9fdf1fb070de7a5d9ddd1d3afa24f85b9bdb1ba46426e2a16121e1a66628e4a76727e7a868f63275b5f53572b2f00c73b3f3334c8cea0e69a9e9294e8ecc204f8fcf0f60a0ce2a4d8dcd0d6aaae8344b8bcb0b74b4f23671b1f13176b6f43877b7f73778b8c6024585c5054282c07c4383c3033cfcda7e5999d9193efebc103fffbf7f5090be1a3dfdbd7d5a9ad8043bfbbb7b4484c2064181c1014686c4084787c7074888 */ /* 0 5d851cdc4282c3034383c2029c5c1dddf93170b09e5e1fdf9f5f1edef03071b1459dc4049a5a1bdb9b5b1ada4484c5054981c8084686c7074787c6064888c909f52d6cacf23273b3f33372b2ec2c6dad4189c000ee2e6fafef2f6eae4080c101ed3574b46aaaeb2b6babea2af43475b5f13978b8f63677b7f73776b6f83879b9a53d7cbca26223e3a36322e2fc3c7dbd995110d0fe3e7fbfff3f7ebe905011d1fd6524e4fa3a7bbbfb3b7abaa46425e5a16928e8a66627e7a76726e6a86829e9954d0ccc925213d3935312d28c4c0dcda96120e08e4e0fcf8f4f0ecea06021e18d5514d48a4a0bcb8b4b0aca945415d5915918d8965617d7975716d6985819d9 */ /* 0 2e92d11151916eaeec286fafef2f08c852ee6daded2dd2122490d313539364a436fab97939f9b67650d4b77737f710d03af6b57535f5ba7a3cf8bb7b3bfbbc7c1ee2a16121e19e5e38dc9f5f1fdfb87822de9d5d1ddda26214e0a36323e394548a4609c9894906c6e42007c7874760a0864a05c585450aca884c0bcb8b4b0ccc824e01c181410ece8c480fcf8f4f68a88e420dcd8d4d02c2804403c3834304c4da165999d9195696f4305797d71770b0d61a5595d5155a9ad81c5b9bdb1b5c9cf23e71b1f1317ebefc187fbfff3f5898fe327dbdfd3d72b2f03473b3f33374b4ea2669a9e92966a6844067a7e72700c0e62a65a5e5256aaae82c6babeb2b6cac */ /* 0 ea5669a9e929a6169450a76727e710d02ae615d595556aaae82c6babeb2b6cac922e11d191516eaeec286fafef2f68a8ee526daded2d12d2905413d3935314d49a2619d99959d666e420d717579760a05a9665a5e5251ada985c1bdb9b5b1cdc1ee261a1e1219e5e9c589f5f1fdf18d822de9d5d1ddd62a2e02463a3e32364a48a3609c9894976b6f43077b7f73770b0f64a75b5f5350aca884c0bcb8b4b0cccf24e71b1f1310ece8c480fcf8f4f08c88e320dcd8d4d72b2f03473b3f33374b4fa4679b9f93906c6844007c7874700c0863a05c585457abaf83c7bbbfb3b7cbc823e01c181417ebefc387fbfff3f78b8fe427dbdfd3d02c2804403c3834304c4 */ /* 0 50dc03c3834310d01e829d5d1ddd9e5e1c909f5f1fdf9c5c12de11d19151925284489b5b1bdb08c846da05c5854506c6884407c7874704c4862a09c989496aaaec20b37333f360a02ef26daded2d6eaee02c6fafef2f6cacee2261a1e12162a238f46babeb2bb87836eab57535f5b67634f8b77737f7b4741af6b97939f99a5afc3063a3e32370b0e23e7dbdfd3d7ebef03c7fbfff3f7cbcfe3271b1f13172b2e4287bbbfb3b68a8fa2665a5e52566a6e82467a7e72764a4e64a69a9e9290aca8c405393d31300c0d24e0dcd8d4d0ece804c0fcf8f4f0ccc8e4201c1814102c2d4180bcb8b4b58988a165595d5155696d8145797d7175494d63a5999d9197aba */ /* 0 a76426e7a46725e4a16220e1a26123e2589bdb1a5b98d8193efdbd7c3dfebe7f3cffbf7e3ffcbc7d5a99d918599ada1ba36022e3a06321e0a56624e5a66527e6975416d7945715d4915210d1925113d2ab682aeba86b29e88d4e0ccd8e4d0fce8f4c0ecf8c4f0dcca96a28e9aa692bea935012d3905311d0955614d5965517d644b7f7067784c4054281c1004182c20338fbbb7a3bf8b8795e9ddd1c5d9ede1f5c9fdf1e5f9cdc1d3af9b97839faba7b4083c3024380c0014685c5044586c6077487c73647b4f43572b1f13071b2f233488bcb0a4b88c8096eaded2c6daeee2f6cafef2e6facec2d4a89c908498aca0b70b3f33273b0f03176b5f53475b6f637 */ /* 0 3d85bc7ce22263c3832362a23cfcbd7df93170b03efebf7f3fffbe7ef03071b145fd04c43afabb7b3bfbba7a844405c5e14908c8864607c7874706c6884809c9f54d0ccc925213b3f35312d28c4c0dcd894100c08e4e0fcf8f4f0ece804001c18d3574b48a4a0bcb8b4b0acaf43475b5913978b8f63677b7f73776b6f83879b9e51d5c9c824203a3e34302c2dc1c5d9d995110d0de1e5f9fdf1f5e9e905011d1dd2564a4da1a5b9bdb1b5a9ae42465a5812968a8e62667a7e72766a6e82869a9952d6cacf23273d3933372b2ec2c6dade92160a0ee2e6fafef2f6eaee02061a1ed5514d4ea2a6babeb2b6aaa945415d5f15918d8965617d7975716d6985819d9 */ /* 0 56aae92969a9d6165094d7175797d0106a96d5155595ea2a6c88eb2b6babec2c6e92d1115191ee2e48acef2f6fafc80852aeed2d6dadd2125490d3135393d414669ad9195999e62660a4e72767a7e0205aa6e52565a5da1a5cb8db1b5b9bdc1c5ea2e12161a11ede789c1fdf9f5ff838629edd1d5d9de22264a0e32363a3e4248a7609c9894936f6b47037f7b77730f0b64a35f5b5750acaa84c0bcb8b4b0cccb24e31f1b1710ece8c680fcf8f4f28e88e720dcd8d4d32f2b07433f3b37334f4ba4639f9b97906c6844007c7874700c0867a05c585453afa987c3bfbbb7b3cfc823e01c181417ebebc587fbfff3f18d8fe423dfdbd7d02c2804403c3834304c4 */ {0x61, 0x2d, 0x5b}, /* hash=b050c6b0, distance=6932 */ {0x01, 0x63, 0x57}, /* hash=172e0b6a, distance=7408 */ {0x03, 0x36, 0x29}, /* hash=c0b0c4da, distance=7692 */ {0x15, 0x03, 0x4c}, /* hash=923c6e6f, distance=7580 */ {0x05, 0x6b, 0x2c}, /* hash=38b335fe, distance=6800 */ {0x65, 0x67, 0x34}, /* hash=1e9191dd, distance=6580 */ {0x7d, 0x1f, 0x54}, /* hash=d716568f, distance=7132 */ {0x33, 0x20, 0x1d}, /* hash=d044f2a8, distance=6884 */ {0x37, 0x42, 0x7a}, /* hash=47c5cf56, distance=7016 */ {0x3f, 0x7c, 0x2c}, /* hash=e95081bd, distance=6464 */ {0x1f, 0x62, 0x14}, /* hash=45b53bc5, distance=6640 */ {0x59, 0x63, 0x1d}, /* hash=bd3b8f88, distance=7924 */ {0x03, 0x10, 0x12}, /* hash=22981514, distance=6496 */ {0x2d, 0x28, 0x78}, /* hash=8b7be84b, distance=6536 */ {0x19, 0x33, 0x1a}, /* hash=8bbbf057, distance=6692 */ {0x2f, 0x36, 0x3e}, /* hash=731fd2f1, distance=7284 */ /* }}} */ /* {{{ first quarter */ /* 0 4df50ccc32f2b37333f3b2728c4c0dcd418900c08e4e0fcf8f4f0ece8040c101358db4748a4a0bcb8b4b0aca34f4b57519f1b87836f6b77737f7b67638f899593d85bc7c824203c3834302c23cfcbd7d31f970b03efebf7f3fffbe7ef030b17145fd04c43afabb7b3bfbba7a844405c5812908c8864607c7874706c6884869a9d52d6cacd2125393d3135292ec2c6dade95160a0ee2e6fafef2f6eaee02011d1ed155494ea2a6babeb2b6aaad414559591395898d6165797d7175696d81879b9e51d5c9ce22263a3e32362a2dc1c5d9dd92110d0de1e5f9fdf1f5e9e905061a1dd2564a4da1a5b9bdb1b5a9ae42465a5e14968a8e62667a7e72766a6e82809c9 */ /* 0 ea3669a9e92976b6f45077b7f73710d0f62a75b5f5356aaae82c6babeb2b6cac922e11d191516eaeec286fafef2f68a8ee526daded2d12d2903413d3935374b49a4619d9995906c6842007c7874760a0865a05c585451ada985c1bdb9b5b1cdc1ee261a1e1219e5e9c589f5f1fdf18d822de1ddd9d5d62a2e04463a3e32304c48a5609c9894916d6943017d7975770b0964a15d595550aca884c0bcb8b4b0cccf24e71b1f1310ece8c480fcf8f4f08c88e320dcd8d4d72b2f05473b3f33314d4fa2679b9f93966a6e44067a7e72700c0e63a65a5e5257abaf83c7bbbfb3b7cbc823e01c181417ebefc387fbfff3f78b8fe427dbdfd3d02c2802403c3834364a4 */ /* 0 06da995919d9864600f4874707c780401ac6b57535f59a5a1cd85b9bdb1b5c9c1ec2814101c15e9e18dc5f9fdf1f985802de5d9ddd1d824204c0834303c3844436eaa96929e9b67630c4b77737f7b0702af6854505c5aa6a2ce8ab6b2bebac6c2ef2b17131f1ae6e28ecaf6f2fefa86832eead6d2dedb27234f0b37333f3b474fa2679b9f93966a6e42067a7e72760a0e63a65a5e5257abaf87c3bfbbb7b3cfce27e61a1e1213efebc383fffbf7f78b8be223dfdbd7d62a2e02463a3e32364a4ca164989c9095696d4105797d7175090d60a5595d5154a8ac80c4b8bcb0b4c8cd20e5191d1114e8ecc084f8fcf0f4888ce124d8dcd0d5292d0145393d3135494 */ /* 0 75bdf4347abafb3b7bbbfa3a74b4f535b16928e876b6f73777b7f636a86829e9a56d2ceca26223e3a36322e2ac6c2deda97130f0ce0e4f8fcf0f4e8eb07031f1cd054484d2124b8bcb0b5292c404458559c1d818c6064787c70746865898d9195d95dc1c9a5ad31353931ada5c9cdd1d019940807ebeff3f7fbffe3ec00041819d5514d4aa6a1bdb9b5b2aea945415d5d1094888965617d7975716d6c8084989c50d4c8cc2024383c3034282cc0c4d8dc9115090ae6e2fefaf6f2eeed0105191ad6524e4ca0a2bebab6b4a8aa46425e5a17938f8a66627e7a76726e6b87839f9b57d3cfcb27233f3b37332f2bc7c3dfdb96120e09e5e1fdf9f5f1edea06021e1 */ /* 0 4df50cccf23273b3f33372b28c4c0dcd418900c08e4e0fcf8f4f0ece8040c101358d74b48a4a0bcb8b4b0acaf434b57519f1b87836f6b77737f7b67638f899593d85bc7c824203c3834302c23cfcbd7d31f970b03efebf7f3fffbe7ef030b17145fd04c43afabb7b3bfbba7a844405c5812908c8864607c7874706c6884869a9d52d6cac925213d3935312d2ec2c6dade95160a0ee2e6fafef2f6eaee02011d1ed1514d4ea2a6babeb2b6aaa9454559591395898d6165797d7175696d81879b9e51d5c9ce22263a3e32362a2dc1c5d9dd92110d0de1e5f9fdf1f5e9e905061a1dd2564a4da1a5b9bdb1b5a9ae42465a5e14968a8e62667a7e72766a6e82809c9 */ /* 0 be7a3dfdbd7d3afab8143bfbbb7b5494d2165191d1115696d46857f7b71728e822a6a56525e5a2626ce0a36323e32cecaa6e29e9a9692eeeac102fefaf6f5090ce0a4d8dcd0d4a8a24c84b8bcb0ba46466e2a16121e126e618e42787c7675898d6125595d5155292d01c5393d3135c9cda1e5999d9195e9e20dc5f9fdf1fa060de1a5d9ddd1d5a9ad8745b9bdb1b34f4b27631f1b17136f6b4083797d7774888c6024585c5054282c00c4383c3034c8cca0e4989c9094e8ecc704f8fcf0f30f0ae6a2dedad6d2aeaa8042bebab6b4484c2064181c1014686c47847e7a70738f8b67235f5b57532f2b07c33f3b3733cfcba7e39f9b9793efebc003fffbf7f4080 */ /* 0 b50d4c8cb27233f3b37332f2cc0c4d8dc9012080ce0e4f8fcf0f4e8ec0604181cd7534f4ca0a4b8bcb0b4a8ab47435f5b17938f8b67637f7b77736f6b87839f97dc5fc3cc2024383c30342827cbcfd3db97150f07ebeff3f7fbffe3eb01031f105bd4484ba7afb3b7bbb3afac4044585c1094888c6064787c7074686c8084989d56d2cecd2125393d3135292ac6c2deda96140e0ae6e2fefaf6f2eeea00021e1ad155494aa6a2bebab6b2aead4145595d1195898d6165797d7175696d8185999a55d1cdca26223e3a36322e29c5c1dddd91130909e5e1fdf9f5f1eded07051919d6524e4da1a1bdb9b5b5a9aa46425e5a16928e8a66627e7a76726e6a86829e9 */ /* 0 26da5999d919a66620e4a76727e7a0601ae6a56525e55a9ad81c5b9bdb1b5cfc7ee2a16121e13efebc183fffbf7f589822be3dfdbd7da26224e0a36323e3a464aa1629e9a9695696d4105797d7175090d66a5595d5152aea6ce82bebab6b2c8cd20e5191d1114e8e28cc4f8fcf0fa868ce124d8dcd0d5292d0145393d3135494ba0639f9b9794686c4004787c7074080c67a4585c5053afab87c3bfbbb7b3c9cc21e4181c1015e9edc785f9fdf1f38f8de025d9ddd1d4282c0044383c3034484ca764989c90936f6b47037f7b77730f0b60a35f5b5754a8ac80c4b8bcb0b4cecb26e31f1b1712eeeac082fefaf6f4888ae722dedad6d32f2b07433f3b37334f4 */ /* 0 5d851cdc4282c3034383c2029c5c1dddf93170b09e5e1fdf9f5f1edef03071b1459dc404fa3a7bdb9b3b7aba4484c5054981c8084686c7074787c6064888c909f52d6cacf23273b3f33372b2ec2c6dad4189c000ee2e6fafef2f6eae4080c101ed3574b48a4a0babeb4b0acaf43475b5f13978b8f63677b7f73776b6f83879b9a53d7cbca26223e3a36322e2fc3c7dbd995110d0fe3e7fbfff3f7ebe905011d1fd6524e49a5a1bbbfb5b1adaa46425e5a16928e8a66627e7a76726e6a86829e9954d0ccc925213d3935312d28c4c0dcda96120e08e4e0fcf8f4f0ecea06021e18d5514d4ea2a6bcb8b2b6aaa945415d5915918d8965617d7975716d6985819d9 */ /* 0 ea5669a9e92916d6945077b7f73710d0962a15d595556aaae82c6babeb2b6cac922e11d191516eaeec286fafef2f68a8ee526daded2d12d2905413d3935314d49a2619d9995966a660e407c78747e020e65a65a5e5251ada985c1bdb9b5b1cdce25e61a1e1211ede9c581fdf9f5f18d89e221ddd9d5d62a224a063a3e32364a48a3609c9894976b6f43017d7975770b0f64a75b5f5350aca884c0bcb8b4b0cccf24e71b1f1310ece8c480fcf8f4f08c88e320dcd8d4d72b2f03473b3f33374b4fa4679b9f93906c6844067a7e72700c0863a05c585457abaf83c7bbbfb3b7cbc823e01c181417ebefc387fbfff3f78b8fe427dbdfd3d02c2804403c3834304c4 */ /* 0 51a9d010965677b7f73716d65090d1116d95ec2c6aaaeb2b6babea2a6caced2d6991e8286eaeef2f6fafee2e68a8e92955ad14d45292d3135393d212945415d56199e02066a6c7074787e62660a0e1215da51cdc9a5a1bdb9b5b1ada9c5c1ddd59a118d89e5e1fdf9f5f1ede985819d9659de42462a2e32363a3e22264a4e525897130f0f63617d7975776b6b07031f1f54d0ccc8a4a0bcb8b4b0aca8c4c0dcdb14908c88e4e0fcf8f4f0ece884809c98d3574b4b27233f3b37332f2f43475b5f94100c0864627e7a76706c6804001c1853d7cbcfa3a7bbbfb3b7abafc3c7dbd813978b8fe3e7fbfff3f7ebef83879b9fd4504c4824203c3834302c2844405c5 */ /* 0 26da5999d919a66600c4a76727e780401ae6a56525e55a9ad81c5b9bdb1b5c9c1ec2814101c15e9edc185f9fdf1f589802de5d9ddd1d824204c0834303c3844416eaa96929e9965630f45797d717b0702ad6955515d5aa6a2ce8ab6b2bebac6c2ef2b17131f1ae6e28ecaf6f2fefa86832eead6d2dedb27234f0b37333f3b474ba0639f9b9794686e4204787c70760a0c67a4585c5053afab87c3bfbbb7b3cfce27e61a1e1213efebc783fffbf7f38f8be223dfdbd7d62a2e02463a3e32364a4ca364989c90976b6f61037f7b7775090d40a75b5f5354a8ac80c4b8bcb0b4c8cd20e5191d1114e8ecc084f8fcf0f4888ce124d8dcd0d5292d0145393d3135494 */ /* 0 68b4fb3b7bbb288876baf53575b5f63674c8f73777b7f4340ab64989c9094a8acc7023e3a36330f0a20e4d8dcd0d4e8eb00c4f8fcf0f4c8c72ce31f1b171f23258c44b8bcb0bf818ca064585c505468604b84787c70744847ac6f93979b9fa3a00bcd313539340807e92fd3d7dbdfe3e7cc0ff3f7fbffc3c02be4181c101428294081bdb9b5b48e89a5615d5955516d6a85417d7975714d4966a29e9a9692aeaac104383c3035090c26e2dedad6d2eeed06c2fefaf6f2cecae525191d11112d2a4782bebab6b38d8aa6625e5a56526e6986427e7a76724e4a65a19d999591ada9c6033f3b37320e0b25e1ddd9d5d1edea05c1fdf9f5f1cdc9e6221e1a16122e2 */ /* 0 5d851cdc4282c3034383c2029c5c1dddf93170b09e5e1fdf9f5f1edef03071b1459dc4049a3a1bdb9b5b7ada4484c5054981c8084686c7074787c6064888c909f52d6cacf23273b3f33372b2ec2c6dad4189c000ee2e6fafef2f6eae4080c101ed3574b44aaaeb2b6babea0af43475b5f13978b8f63677b7f73776b6f83879b9a53d7cbca26223e3a36322e2fc3c7dbd995110d0fe3e7fbfff3f7ebe905011d1fd6524e4fa5a7bbbfb3b1abaa46425e5a16928e8a66627e7a76726e6a86829e9954d0ccc925213d3935312d28c4c0dcda96120e08e4e0fcf8f4f0ecea06021e18d5514d48a6a0bcb8b4b2aca945415d5915918d8965617d7975716d6985819d9 */ /* 0 ea5669a9e92916d6945077b7f73710d0962a15d595556aaae82c6babeb2b6cac922e11d191516eaeec286fafef2f68a8ee526daded2d12d2905413d3935314d49a2619d9995966a660a407c78747e020e65ae52565a51ada985c1bdb9b5b1cdc5ea2e12161a11ede9c581fdf9f5f18d8629e1ddd9d5de22264a0e32363a3e4248a3609c9894976b6f43017d7975770b0f64a75b5f5350aca884c0bcb8b4b0cccf24e71b1f1310ece8c480fcf8f4f08c88e320dcd8d4d72b2f03473b3f33374b4fa4679b9f93906c6844067a7e72700c0863a05c585457abaf83c7bbbfb3b7cbc823e01c181417ebefc387fbfff3f78b8fe427dbdfd3d02c2804403c3834304c4 */ /* 0 8b3b7abaf83879b94585c404468607c78747c6064484c505f93978b8fa3a7bbb43f3c2024080c101fd3d7cbc9e5e1fdf9f5f1edefc3c7dbd4181c0004282c303fb4b0aca884809c9f53574b4f63677b7f73776b6f43475b5894908c88a4a0bcb833372b2f03071b18d4d0cccee2e6fafef2f6eae8c4c0dcdf13170b0f23273b3a35b1ada985819d9a56524e4a66667a7e72726e6a46425e5995918d89a5a1bdb936322e2a06021e19d5d1cdcfe3e7fbfff3f7ebe9c5c1ddda16120e0a26223e39b2b6aaae82869a9955514d4965617d7975716d6945415d5e92968a8ea2a6babeb5312d2905011d1ed2d6cac8e4e0fcf8f4f0eceec2c6dad915110d0925213d3 */ {0x03, 0x2e, 0x12}, /* hash=43814063, distance=6940 */ {0x03, 0x4c, 0x1e}, /* hash=005bdc60, distance=7304 */ {0x3b, 0x56, 0x7b}, /* hash=546b3c6b, distance=6704 */ {0x0f, 0x56, 0x53}, /* hash=e5dd4cb3, distance=6540 */ {0x03, 0x28, 0x15}, /* hash=344a9f81, distance=7064 */ {0x65, 0x43, 0x66}, /* hash=c45b253f, distance=6848 */ {0x65, 0x2b, 0x5b}, /* hash=e4f78abd, distance=6900 */ {0x21, 0x47, 0x69}, /* hash=9e0f944c, distance=7608 */ {0x39, 0x03, 0x2a}, /* hash=6a0b0992, distance=6596 */ {0x77, 0x4c, 0x21}, /* hash=780a801e, distance=7792 */ {0x7b, 0x26, 0x34}, /* hash=fe699e3f, distance=6664 */ {0x7f, 0x3c, 0x77}, /* hash=7568fe1e, distance=7444 */ {0x29, 0x4d, 0x52}, /* hash=ebcbd078, distance=7152 */ {0x3d, 0x7d, 0x2c}, /* hash=ace0f30a, distance=6504 */ {0x77, 0x42, 0x26}, /* hash=d5129faf, distance=7976 */ {0x17, 0x0e, 0x27}, /* hash=5a78885d, distance=6472 */ /* }}} */ /* {{{ waxing gibbous */ /* 0 3d85bc7ce22263c3832362a23cfcbd7df93170b03efebf7f3fffbe7ef03071b145fd04c4fa3abb7b3bfb7aba844405c5e14908c8864607c7874706c6884809c9f54d0ccc925213b3f35312d28c4c0dcd894100c08e4e0fcf8f4f0ece804001c18d3574b48a4a0bcb8b4b0acaf43475b5913978b8f63677b7f73776b6f83879b9e51d5c9c824203a3e34302c2dc1c5d9d995110d0de1e5f9fdf1f5e9e905011d1dd2564a49a5a5b9bdb1b1adae42465a5812968a8e62667a7e72766a6e82869a9952d6cacf23273d3933372b2ec2c6dade92160a0ee2e6fafef2f6eaee02061a1ed5514d4ea2a6babeb2b6aaa945415d5f15918d8965617d7975716d6985819d9 */ /* 0 f54d0cccf23273b3f33372b28c4c0dcd894100c08e4e0fcf8f4f0ece804001c18d3574b48a4a0bcb8b4b0acaf43475b5f13978b8f63677b7f73776b6f83879d93d85bc7c824203c3834302c23cfcbd7df93170b03efebf7f3fffbe7ef03071b145fd04c43afabb7b3bfbba7a844405c5814908c8864607c7874706c6884809a9952d6cac925213d3935312d2ec2c6dade92160a0ee2e6fafef2f6eaee02061a1ed5514d4ea2a6babeb2b6aaa945415d5915918d8965617d7975716d6985819b9e51d5c9ce22263a3e32362a2dc1c5d9d995110d0de1e5f9fdf1f5e9e905011d1dd2564a4da1a5b9bdb1b5a9ae42465a5e12968a8e62667a7e72766a6e82869c9 */ /* 0 58a4eb2b6babd818aa6625e5a56526e6649827e7a76724e45aa6d9195999da1a609cd313539320e05e92dd1d5d9dde1e5ca0ff3f7fbfdc1c629e21e1a16122e26894db1b5b9b28e8569ad5155595d61654a8d7175797d4146a9629e9a9692aea50ac23e3a363d0106ea2ed2d6dadee2e6c90cf0f4f8fec2c52aed1115191d212c4780bcb8b4b38f8ca064585c5054686b8044787c7074484c67a39f9b9793afabc0033f3b3734080b27e3dfdbd7d3efec07c1fdf9f5f3cfcbe024181c1014282b4083bfbbb7b4888ba7635f5b57536f6c87437f7b77734f4b60a4989c9094a8a8c704383c30330f0c24e0dcd8d4d0eceb04c2fefaf6f0ccc8e7231f1b17132f2 */ /* 0 16da5999d9199656a460975717d720e01ad6955515d55a9ad81c5b9bdb1b5c9c7ea221e1a161fe3edc18ff3f7fbf589862befd3d7dbd22e2a06423e3a36324e466aa29e9a969e626d410e72767a750906aa6e52565a52aeaa86c2bebab6b2cecd20e5191d1114e8eac684f8fcf0f28e8ce124d8dcd0d5292d0145393d3135494ba0639f9b9794686c4004787c7074080c67a4585c5053afab87c3bfbbb7b3cfcc25e4181c1011edebc781fdf9f5f38f89e021ddd9d5d4282c0044383c3034484ca764989c90936f6b47037f7b77730f0b60a35f5b5754a8ac80c4b8bcb0b4c8cb26e31f1b1712eeecc082fefaf6f4888ae722dedad6d32f2b07433f3b37334f4 */ /* 0 6aaae42465a56bab64a4ea2aeb2be52559a118d866a6e72767a7e626985819d9955d1cdc925213d3935312d29c5c1ddd6199e0209e5e1fbfff5f1ede60a0e1219d5514d49a5a1bdb9b5b1ada945415d56991e828965617d7975716d668a8e929a92d6cac62a2e32363a3e222ec2c6daded5110d0ee2e6fcf8f2f6eae905011d18d4504c48a4a0bcb8b4b0aca844405c5813978b8864607c7874706c6f83879b9f53d7cbcf23273b3f33372b2fc3c7dbdf94100c0fe3e7fdf9f3f7ebe804001c1fd3574b4fa3a7bbbfb3b7abaf43475b5f14908c8f63677b7f73776b6884809c9854d0ccc824203c3834302c28c4c0dcd893170b08e4e0fafef4f0ecef03071b1 */ /* 0 a76426e7a46725e4a16220e1a26123e258fbbb1a5b98d8193efdbd7c3dfebe7f3cffbf7e3ffcbc7d5a99d918599ada1ba36022e3a06321e0a56624e5a66527e6975416d7945715d4915210d1925113d28b682acba86b29e88d4e0ccd8e4d0fce8f4c0ecf8c4f0dcca96a28e9aa692bea935012d3905311d0955614d5965517d644b7f7067784c4054281c1004182c203389bdb7a3bf8b8795e9ddd1c5d9ede1f5c9fdf1e5f9cdc1d3af9b97839faba7b4083c3024380c0014685c5044586c6077487c73647b4f43572b1f13071b2f23348abeb0a4b88c8096eaded2c6daeee2f6cafef2e6facec2d4a89c908498aca0b70b3f33273b0f03176b5f53475b6f637 */ /* 0 08b4db1b5b9b4888569ad5155595d61674c8d7175797f4340a964989c9094a8acc704383c30330f0c20e4d8dcd0d4e8eb00c4f8fcf0f4c8c72ce31f1b171f23278c42bebab6bf838aa6625e5a56526e604b827e7a76744847aa6f93979b9fa3a00bcf33373b340807eb2fd3d7dbdfe3e7cc0ff3f7fbffc3c02be4181c101428294683bfbbb7b28e8ba7635f5b57536f6a85437f7b77714d4b66a29e9a9692aeaac1023e3a3635090a26e2dedad6d2eeed06c2fefaf6f2cecae525191d11112d2a4584b8bcb0b18d8ca064585c505468698644787c70724e4c65a19d999591ada9c6013d3935320e0925e1ddd9d5d1edea05c1fdf9f5f1cdc9e6221e1a16122e2 */ /* 0 b50d4c8cb27233f3b37332f2cc0c4d8dc90120e0ce0e4f8fcf0f4e8ea0604181cd7534f4ca0a4b8bcb0b4a8ab47435f5b17938f8b67637f7b77736f6b87839f97dc5fc3cc2024383c30342827cbcfd3db97150907ebeff3f7fbffe3ed01031f105bd4484ba7afb3b7bbb3afac4044585c1094888c6064787c7074686c8084989d56d2cecd2125393d3135292ac6c2deda9614080ae6e2fefaf6f2eeec00021e1ad155494aa6a2bebab6b2aead4145595d1195898d6165797d7175696d8185999a55d1cdca26223e3a36322e29c5c1dddd91130f09e5e1fdf9f5f1edeb07051919d6524e4da1a1bdb9b5b5a9aa46425e5a16928e8a66627e7a76726e6a86829e9 */ /* 0 a06127e0a76624e7a66721e6a16022e19c5d1bdc9b5a18db9a5b1dda9d5c7edd98ff7fd83e591cbf3f5819be99fe1ad9a46523e4a36220e3a26325e2a56426e5905117d0975614d7965711d6915012d1ac6d2becab6a28ebaa6b2deaad6c0eeda8690fe88f4e2ccf8e4f29cea9682ae9945513d4935210d3925315d2955416d54180c03776b7f70477b6f6014081c1027dbcfc3b7abbfb387bbafa3d7cbdfd1e79b8f81f5e9fdf3c5f9ede3978b9f93a4584c4034283c3004382c2054485c50671b0f0074687c7344786c63170b1f1324d8ccc0b4a8bcb084b8aca0d4c8dcd2e4988c82f6eafef0c6faeee094889c90a75b4f43372b3f33073b2f23574b5f536 */ /* 0 b50d4c8cb27233f3b37332f2cc0c4d8dc90120e0ce0e4f8fcf0f4e8ea0604181cd7534f4ca0a4b8bcb0b4a8ab47435f5b17938f8b67637f7b77736f6b87839f97dc5fc3cc2024383c30342827cbcfd3db97150907ebeff3f7fbffe3ed01031f105bd44847abafb3b7bbbfa3ac4044585c1094888c6064787c7074686c8084989d56d2cecd2125393d3135292ac6c2deda9614080ae6e2fefaf6f2eeec00021e1ad155494aa6a2bebab6b2aead4145595d1195898d6165797d7175696d8185999a55d1cdca26223e3a36322e29c5c1dddd91130f09e5e1fdf9f5f1edeb07051919d6524e49a5a1bdb9b5b1adaa46425e5a16928e8a66627e7a76726e6a86829e9 */ /* 0 26ea69a9e929a6669450b76727f710d02ae615d595556aaae82c6babeb2b6cac922e11d191516eaeec286fafef2f68a8ee526daded2d12d2905413d3935314d4569a19d99959d616e420c717578760a05a9665a5e5251ada985c1bdb9b5b1cdc1ee261a1e1219e5e9c589f5f1fdf18d822de1ddd9d5d62a2e02463a3e32364a48a3609c9894976b6f43077d7973770b0f64a75b5f5350aca884c0bcb8b4b0cccf24e71b1f1310ece8c480fcf8f4f08c88e320dcd8d4d72b2f03473b3f33374b4fa4679b9f93906c6844007a7e74700c0863a05c585457abaf83c7bbbfb3b7cbc823e01c181417ebefc387fbfff3f78b8fe427dbdfd3d02c2804403c3834304c4 */ /* 0 5d851cdc4282c3034383c2029c5c1dddf93170b09e5e1fdf9f5f1edef03071b1459dc404fa3a7bbbfb3b7aba4484c5054981c8084686c7074787c6064888c909f52d6cacf23273b3f33372b2ec2c6dad4189c000ee2e6fafef2f6eae4080c101ed3574b44a8a0bcb8b4bca0af43475b5f13978b8f63677b7f73776b6f83879b9a53d7cbca26223e3a36322e2fc3c7dbd995110d0fe3e7fbfff3f7ebe905011d1fd6524e49a5a1bdb9b5b1adaa46425e5a16928e8a66627e7a76726e6a86829e9954d0ccc925213d3935312d28c4c0dcda96120e08e4e0fcf8f4f0ecea06021e18d5514d4aa6a6babeb2b2aea945415d5915918d8965617d7975716d6985819d9 */ /* 0 c20e4181c1014e8ecc084f8fcf0f4888ce024d8dcd0d4282c0044383c3034484da765999d91936f6b47037f7b77730f0b61a35f5b5755a9ab81c5b9bdb1b5c9c7eb231f1b171fe3ebc78ff3f7fbf38f872befd3d7dbd32f2b07433f3b37334f4aa0629e9a9694686c4004787c7074080c66a4585c5052aeac86c2bebab6b2ceca26e21e1a1612eeeac682fefaf6f28e8ae622dedad6d22e2a06423e3a36324e4ba1639f9b9795696d4105797d7175090d67a5595d5153afad87c3bfbbb7b3cfcd25e5191d1111ededc181fdf9f5f58989e121ddd9d5d5292d0145393d3135494ca664989c90926e6a46027e7a76720e0a60a25e5a5654a8aa80c4b8bcb0b4c8c */ /* 0 ad6524e4aa6a2bebab6b2aeaa46425e559a1d818a66627e7a76726e65898d9195d95dc1cd2125393d31352925c9cdd1d619920e05e9edf1f5f9fde1ea06021e1559dd4145a9adb1b5b9bda1a5494d515d16928e85696d7175797d616a86829e9a56d2ceca26223e3a36322e2ac6c2deda9115090ae6e2fefaf6f2eeed0105191cd054484ca0a4b8bcb0b4a8ac4044585c17938f8c6064787c7074686b87839f9b57d3cfcb27233f3b37332f2bc7c3dfdb9014080be7e3fffbf7f3efec0004181bd7534f4ba7a3bfbbb7b3afab47435f5b1094888b67637f7b77736f6c8084989c50d4c8cc2024383c3034282cc0c4d8dc97130f0ce0e4f8fcf0f4e8eb07031f1 */ /* 0 a76426e7a46725e4a16220e1a26123e258fbbb1a3b98d8193efdbd7c3dfebe7f3cffbf7e3ffcbc7d5a99d918599ada7ba36022e3a06321e0a56624e5a66527e6975416d7945715d4915210d1925113d28b682acba84b29e88d4e0ccd8e4d0fce8f4c0ecf8c4f0dcca96a28e9aa690bea935012d3905311d0955614d5965517d644b7f7067784c4054281c1004182c203389bdb7a5bf8b8795e9ddd1c5d9ede1f5c9fdf1e5f9cdc1d3af9b97839faba1b4083c3024380c0014685c5044586c6077487c73647b4f43572b1f13071b2f23348abeb0a6b88c8096eaded2c6daeee2f6cafef2e6facec2d4a89c908498aca2b70b3f33273b0f03176b5f53475b6f637 */ /* 0 26da5999d919a66620e4a76727e7a0601ae6a56525e55a9ad81c5b9bdb1b5c9c1ee2a16121e15e9edc185fffbf1f589822de5d9ddd1da26224e0a36323e3a46416eaa96929e9569610d45797d71790502ad65595d515aa6a2ce8ab6b2bebac6c2ed2915111d1ae6e28ec8f6f2fcfa86812eead6d2ded925214d0935313d39454ba0639f9b9794686c4004787c7074080c67a4585c5053afab87c3bfbbb7b3cfcc27e4181c1013efebc783f9fdf7f38f8be023dfdbd7d4282c0044383c3034484ca764989c90936f6f43037f7b77770b0b60a35f5b5754a8ac80c4b8bcb0b4c8cf20e71b1f1314e8ecc084fafef0f4888ce324d8dcd0d72b2f03473b3f33374b4 */ {0x19, 0x31, 0x1b}, /* hash=01d2acde, distance=6704 */ {0x01, 0x1f, 0x1a}, /* hash=d5c483fb, distance=6856 */ {0x0f, 0x08, 0x4b}, /* hash=63425794, distance=7644 */ {0x1f, 0x60, 0x5d}, /* hash=e10fb9f1, distance=7456 */ {0x09, 0x49, 0x2b}, /* hash=c5cfd3d1, distance=7324 */ {0x2f, 0x27, 0x78}, /* hash=8adfdb54, distance=6512 */ {0x77, 0x26, 0x52}, /* hash=5c56e519, distance=7100 */ {0x63, 0x2c, 0x5b}, /* hash=67747759, distance=6948 */ {0x21, 0x20, 0x7e}, /* hash=7a697b92, distance=6672 */ {0x63, 0x2e, 0x5a}, /* hash=6891e21e, distance=6904 */ {0x75, 0x53, 0x1e}, /* hash=b76a6525, distance=7872 */ {0x37, 0x02, 0x2b}, /* hash=20877095, distance=6608 */ {0x0f, 0x18, 0x5d}, /* hash=053559d5, distance=6548 */ {0x07, 0x78, 0x54}, /* hash=edfd5b8f, distance=7164 */ {0x31, 0x26, 0x78}, /* hash=80c6ff25, distance=6480 */ {0x15, 0x35, 0x75}, /* hash=c0829a07, distance=8004 */ /* }}} */ /* {{{ full moon */ /* 0 6d954c8c5292d3135393d212cc0ced2dc90140806eaeef2f6fafee2ec000418155add414ca0a4b8bcb0b4a8a5494d5155991d8185696d7175797d6165898d9195da5fc3ca26223e3a36322e27cbcdd1d71b9f0305e9edf1f5f9fde1e70b0f131659d24e47abafb3b7bbbfa3aa46425e5a16928e8a66627e7a76726e6a86829e9b54d2cecb27233f3b37332f2ac6c0dcda96120e08e4e0fcf8f4f0ecea06021e18d7534f4aa6a2bebab6b2aeab47435f5b17938f8b67637f7b77736f6b87839f9c57d1cdcc2024383c30342829c5c3dfd995110d0be7e3fffbf7f3efe905011d1bd0544849a5a1bdb9b5b1adac4044585c1094888c6064787c7074686c8084989 */ /* 0 9d5514d45aeaab6b2bebaa1a945415d5914908c8965617d7975716d6884809c9852d6cac4282c3034383c202ec2c6dad895110d0ee2e6fafef2f6eae905011d1ed2564a42a9adb1b5b9bda6ae42465a539a178b8e62667a7e72766a6f83879b9f55d1cdcf23273b3f33372b29c5c1ddd61f9e0209e5e1fdf9f5f1ede60a0e121fd3574b4fa3a7bbbfb3b7abaf43475b5f12968a8f63677b7f73776b6e82869a9e54d0ccca26223e3a36322e28c4c0dcde93170b08e4e0fcf8f4f0ecef03071b18d4504c48a4a0bcb8b4b0aca844405c5815918d8864607c7874706c6985819d9953d7cbc925213d3935312d2fc3c7dbd994100c0fe3e7fbfff3f7ebe804001c1 */ /* 0 62a6e52565a5e2225ca0e32363a31cdc9a5e19d999591ebe9c507fbfff3f10d0fe5a1ddd9d5d1ada64981bdb9b5be42466a2e12161a1e62668a4e72767a7e828965215d5955512d2902c13d393536cac2eaae92969a96ece60ec0fcf8f4fe0206a8e6daded2dea2a54a8eb2b6bab14d4925611d1915116d6945817d7975718d8864205c5854502c2803c03c383437cbcfa3e79b9f9397edefc301fdf9f5f70b09e3a7dbdfd3d7abaf8447bbbfb3b04c4824601c1814106c6844807c7874708c8f63275b5f53572b2f04c73b3f3330ccc8a4e09c989490eae8c406fafef2f00c0ee4a0dcd8d4d0aca88340bcb8b4b74b4f23671b1f13176b6f43877b7f73778b8 */ /* 0 a97630e9b66937f6b77036f7b07731f0b56a0cf58a750bca8b4c2acb8c4b0dccb14e28f18e710fce8f680ecfa84f29e88d7234cdb24d33f2b37432f3b47335f4994600d9865907c6874006c7804701c0855a1ac5ba453bfabb7c3cfbbc7b7dfcfe3e18c18141be7f9858bf7eff3f19d8fd4204bd823d03c2834402c3844305c45689c9104996d6175097d7165790d0114a95d52c55aaea2b6cabeb0a6bacec2d6e91d10851aeee2f48afef2e6f88c80952aded146d92d2135493d3125394d41566b9f92079a6e62760a7e72667a0e0217aa5e51c659ada1b5c9bdb3a5b9cdc1d5ea1e138619ede1f789fdf1e5fb8f839629ddd245da2e22364a3e32263a4e425 */ /* 0 d6125595d5155292b00c5393d3134c8c0eca894909c94e8e00cc4f8fcf0f80400ace4d8dcd0d8a4a14c84b8bcb0b5494d2163191d1715696d4185797d717589822e6a56525e5a2627cc0a36323e33cfcba7e39f9b9793efebc703fffbf7f30f0be7a3dfdbd7d3afa24b83bfbbb7ba46426e2a14101e1a66628e4a76727e7a868b67235f5b57532f2d06c33f3b3732cecea6e69a9e9292eeeac202fefaf6f60a0ae2a2dedad6d6aaae8742bebab6b34f4b27651f1b11136f6b47837f7b77738f8c6024585c5054282e01c4383c3035c9cda1e5999d9195e9edc105f9fdf1f5090de1a5d9ddd1d5a9ad8045b9bdb1b4484c2066181c1214686c4084787c7074888 */ /* 0 0d954c8cb27233f3b37332f2cc0c4d8d01c98040ce0e4f8fcf0f4e8e00c0814155cdd414ca0a4b8bcb0b4a8a5494d51559b1d8185696d7175797d6165898d9197da5fc3cc2024383c30342827cbcfd3d71b9f0307ebeff3f7fbffe3e70b0f13165bd24e47abafb3b7bbbfa3aa46425e5c16928e8a66627e7a76726e6a86829e9b56d2cecd2125393d3135292ac6c2deda9115090ae6e2fefaf6f2eeed0105191ad7534f4aa6a2bebab6b2aeab47435f5d17938f8b67637f7b77736f6b87839f9c55d1cdca26223e3a36322e29c5c1ddd996120e09e5e1fdf9f5f1edea06021e19d0544849a5a1bdb9b5b1adac4044585a1094888c6064787c7074686c8084989 */ /* 0 ea5669a9e92916d6945077b7f73710d0962a15d595556aaa2ca86babeb2b6cac922e11d191516eae68ec6fafef2fe828ee526daded2d12d2905413d3935314d4669a19d99959e62660a4c7074787e0205aa6e52565a51ada985c1bdb9b5b1cdc5ea2e12161a11ede9c581fdf9f5f18d8629e1ddd9d5de22264a0e32363a3e4248a3609c9894976b6f43017d7975770b0f64a75b5f5350aca884c0bcb8b4b0cccf24e71b1f1310ece8c480fcf8f4f08c88e320dcd8d4d72b2f03473b3f33374b4fa4679b9f93906c6844027e7a76700c0863a05c585457abaf83c7bbbfb3b7cbc823e01c181417ebefc387fbfff3f78b8fe427dbdfd3d02c2804403c3834304c4 */ /* 0 dc704383c30330f05ec25d9ddd1dde1eb01cdf1f5f9f5c9c729e31f1b17132f2c4083bfbbb7b4888ba064585c5054686c8044787c7074484c60a4989c9094a8aac0033f3b3734080b26e2dedad6d2eeec06c2fefaf6f2cecae024181c1014282b4784b8bcb0b38f8ca7635f5b57536f6b87437f7b77734f4b67a39f9b9793afabc1023e3a3635090a27e3dfdbd7d3efed07c3fffbf7f3cfcbe125191d1115292a4685b9bdb1b28e8da6625e5a56526e6a86427e7a76724e4a66a29e9a9692aeacc605393d31320e0d20e4d8dcd0d4e8ea00c4f8fcf0f4c8cce6221e1a16122e2d4182bebab6b5898aa165595d5155696d8145797d7175494d61a5999d9195a9a */ /* 0 f63275b5f53572b24cf073b3f333cc0c4e8ae92969a90ece608c0fcf8f4fe0206a8e0dcd8d4dca2a34a8cb0b4b8b74b4f23671b1f13176b6f43877b7f73778b84286c5054585c2023c80c30343837cbcfa3e19d999597ebefc507fbfff3f10d0fe5a7dbdfd3d1aba44987bbbfb3bc4044682c1014181c6064884c7074787c808965215d5955512d2906c13d393532cecaa2e09c989496eaeac406fafef2f00c0ee4a6daded2d0aea88542bebab6b14d4925611d1915116d6945817d7975718d8a66225e5a56522e2a05c23e3a3631cdc9a5e79b9f9391ede9c301fdf9f5f70b09e3a1ddd9d5d7adaf8641bdb9b5b24e4a26621e1a16126e6a46827e7a76728e8 */ /* 0 0acd8d440dca8a4b04cb8b4a0bc4844506a1e13861c6864778c7874607b8f83972b23cf575b5f233bc7cf332b3733dfcbe7ef920b9793ffea0603effbf7fe0217abafd347dbd3bfab4743afbbb7bf43576d1914811b6f63708b7f73677c8884902c5854c05c282430cc3834203cc8c4d0ec9895009ce8e4f10cf8f4e0fd090516aaded246daaea2b64abeb2a6ba4e42566c1815801a6e62718a7e72667d89859129ddd1c5dd292535cd39352139cdc1d5ed99940199ede1f009fdf1e5fc080411ad5955415da9a1b149bdb5a5bd4945516b1f12871d6965768d7975617a8e82962a5e52c65a2e2236ca3e32263acec2d6ea9e93069aeee2f70afef2e6fb0f031 */ /* 0 75bd34f47abafb3b7bbbfa3ab474f535b16928e876b6f73777b7f636a86829e9a56d2ceca26223e3a36322e2ac6c2deda97130f0ce0e4f8fcf0f4e8eb07031f1cd054484d2125393d3135292c404458559c1d818c6064787c70746865898d9195d95dc1c9a5a1bdb9b5b1ada5c9cdd1d019940807ebeff3f7fbffe3ec00041819d555494aa6a2bebab6b2aead41415d5d1094888965617d7975716d6c8084989c50d4c8cc2024383c3034282cc0c4d8dc9115090ae6e2fefaf6f2eeed0105191ad6524e4ca0a4b8bcb0b4a8aa46425e5a17938f8a66627e7a76726e6b87839f9b57d3cfcb27233f3b37332f2bc7c3dfdb96120e09e5e1fdf9f5f1edea06021e1 */ /* 0 15dd94541ada9b5b1bdb9a5a14d49555912968a816d6975717d79656e82869a9e52d6cac824263a3e32302c2ec2c6dade95110d0ee2e6fafef2f6eae905011d1ed2564a4ea2a6babeb2b6aaae42465a519e19858e62667a7e72766a618d899591dd59c5cf23213d3935372b21cdc9d5d21d960a01ede9f5f1fdf9e5ee02061a1fd3574b4fa3a7bbbfb3b7abaf43475b5f14908c8f63677b7f73776b6884809c9854d0ccce22203c3834362a28c4c0dcd893170b08e4e0fcf8f4f0ecef03071b18d4504c48a4a0bcb8b4b0aca844405c5813978b8864607c7874706c6f83879b9f53d7cbc925273b3f33312d2fc3c7dbdf94100c0fe3e7fbfff3f7ebe804001c1 */ /* 0 518910d0f63677b7f73776b6905011d1f52d0cac4a8a0bcb8b4bca0aec4c6dad4991c808ee2e6fafef2f6eae4888c909ed5514d4925213d3935312d2945415d561f9e0204686c7074787c60660a0e1215d857cdcfa3a7bbbfb3b7aba9c3c1ddd39a178b89e5e1fdf9f5f1edef83879b9659de42462a2e32363a3e22264a4e525a93170b0965617d7975716d6f03071b1954d6cccaa6a6babeb2b2aea8c2c0dcdf16928e88e4e0fcf8f4f0ecea86829e98d3574b4f23273b3f33372b2f43475b5994100c0a66627e7a76726e6804001c1a53d1cbc9a5a1bdb9b5b1adafc5c7dbd815918d8fe3e7fbfff3f7ebe985819d9fd4504c4824203c3834302c2844405c5 */ /* 0 12d6955515d592522cd0935313d3ac6c2eea894909c9ae6e00ecaf6f2fef80402aeead6d2dedaa6a14c8ab6b2beb945416d2915111d1965618d4975717d7985822e6a56525e5a2621ce0a36323e35c9cda1e39f9b9795e9e30dc5f9fdf1fb070de1a5d9ddd1d5a9a24f85b9bdb1ba46426e2a16121e1a66628e4a76727e7a868f63275b5f53572b2f00c73b3f3334c8cca0e69a9e9294e8ecc204f8fcf0f60a0ce0a4d8dcd0d4a8ae8344b8bcb0b74b4f23671b1f13176b6f43877b7f73778b8c6024585c5054282c07c4383c3033cfcba7e5999d9193efebc103fffbf7f5090be7a3dfdbd7d3afad8043bfbbb7b4484c2064181c1014686c4084787c7074888 */ /* 0 ad6524e4aa6a2bebab6b2aeaa46425e559a1d818a66627e7a76726e65898d9197d95fc3cd2125393d31352927cbcfd3d619920e07ebeff3f7fbffe3ea06021e1559dd4145a9adb1b5b9bda1a5494d515d16928e85696d7175797d616a86829e9a50d4c8ca26223e3a36322e2cc0c4d8da9115090ce0e4f8fcf0f4e8ed0105191cd054484ca0a4b8bcb0b4a8ac4044585c17938f8c6064787c7074686b87839f9b55d1cdcb27233f3b37332f29c5c1dddb90140809e5e1fdf9f5f1edec0004181bd7534f4ba7a3bfbbb7b3afab47435f5b1094888b67637f7b77736f6c8084989c56d2cecc2024383c3034282ac6c2dedc97130f0ae6e2fefaf6f2eeeb07031f1 */ /* 0 518910d0f63677b7f73776b6905011d1f52dcc0c4a8acb0b4b8bca0a4c8c6dad4991c808ee2e6fafef2f6eae4888c909ed5514d4925213d3935312d2945415d561f9e0204686c7074787c60660a0e1215d857cbcfa3a7bbbfb3b7abafc3c1ddd39a178b89e5e1fdf9f5f1edef83879b9659de42462a2e32363a3e22264a4e525a93170b0965617d7975716d6f03071b1954d2cecaa6a2bebab6b2aeaac6c0dcdf16928e88e4e0fcf8f4f0ecea86829e98d3574b4f23273b3f33372b2f43475b5994100c0a66627e7a76726e6804001c1a53d1cdc9a5a1bdb9b5b1ada9c5c7dbd815918d8fe3e7fbfff3f7ebe985819d9fd4504c4824203c3834302c2844405c5 */ {0x33, 0x20, 0x4d}, /* hash=d3720c35, distance=6684 */ {0x1d, 0x6d, 0x24}, /* hash=c5eda54f, distance=6912 */ {0x29, 0x45, 0x2c}, /* hash=5e65b49a, distance=7496 */ {0x2b, 0x7b, 0x7d}, /* hash=a8d43d04, distance=7888 */ {0x1d, 0x6d, 0x6b}, /* hash=bb03f1b2, distance=6524 */ {0x17, 0x20, 0x54}, /* hash=018675ee, distance=6876 */ {0x77, 0x3c, 0x29}, /* hash=39d39a27, distance=8112 */ {0x3b, 0x1c, 0x5e}, /* hash=cc9ea3a6, distance=6760 */ {0x39, 0x1b, 0x2d}, /* hash=d68a250a, distance=7204 */ {0x7d, 0x2e, 0x1b}, /* hash=a036b5d1, distance=7648 */ {0x0f, 0x52, 0x55}, /* hash=24bcc7ce, distance=6612 */ {0x3b, 0x7e, 0x14}, /* hash=a3d60663, distance=7356 */ {0x25, 0x63, 0x2b}, /* hash=dfd35473, distance=6568 */ {0x3b, 0x42, 0x79}, /* hash=f784cde4, distance=7128 */ {0x17, 0x70, 0x54}, /* hash=95728891, distance=6968 */ {0x23, 0x60, 0x2d}, /* hash=aea06549, distance=6484 */ /* }}} */ /* {{{ waning gibbous */ /* 0 12d6955515d592522cd0935313d3ac6c2eea894909c9ae6e00ecaf6f2fef80402aeead6d2dedaa6a14c8ab6b2beb945416d2915111d1965618d4975717d7985822e6a56525e5a2621ce0a36323e35c9cda1eb97939f95e9e30dc5f9fdf1fb070de1a5d9ddd1d5a9a24f85b9bdb1ba46426e2a16121e1a66628e4a76727e7a868f63275b5f53572b2f00c73b3f3334c8cca0e69a9e9294e8ecc204f8fcf0f60a0ce0a4d8dcd0d4a8ae8344b8bcb0b74b4f23671b1f13176b6f43877b7f73778b8c6024585c5054282c07c4383c3033cfcba7e5999d9193efebc103fffbf7f5090be7a3dfdbd7d3afad8043bfbbb7b4484c2064181c1014686c4084787c7074888 */ /* 0 08b4db1b5b9b4888569ad5357595d61674c8d7175797f4340a964989c9094a8acc704383c30330f0c20e4d8dcd0d4e8eb00c4f8fcf0f4c8c72ce31f1b171f23278c42bebab6bf838aa6645e5a50526e604b827e7a76744847aa6f93979b9fa3a00bcf33373b340807eb2fd3d7dbdfe3e7cc0ff3f7fbffc3c02be4181c101428294683bfbbb7b28e8ba7615f5b55536f6a85437f7b77714d4b66a29e9a9692aeaac1023e3a3635090a26e2dedad6d2eeed06c2fefaf6f2cecae525191d11112d2a4584b8bcb0b18d8ca062585c565468698644787c70724e4c65a19d999591ada9c6013d3935320e0925e1ddd9d5d1edea05c1fdf9f5f1cdc9e6221e1a16122e2 */ /* 0 f54d0cccf23273b3f33372b28c4c0dcd894160a08e4e0fcf8f4f0ecee02001c18d3574b48a4a0bcb8b4b0acaf43475b5f13978b8f63677b7f73776b6f83879b93d85bc7c824203c3834302c23cfcbd7df93110d03efebf7f3fffbe7e905071b145fd04c43afabb7b3bfbba7a844405c5814908c8864607c7874706c6884809c9952d6cac925213d3935312d2ec2c6dade92100c0ee2e6fafef2f6eae804061a1ed5514d4ea2a6babeb2b6aaa945415d5915918d8965617d7975716d6985819d9e51d5c9ce22263a3e32362a2dc1c5d9d995170b0de1e5f9fdf1f5e9ef03011d1dd2564a4da1a5b9bdb1b5a9ae42465a5e12968a8e62667a7e72766a6e82869a9 */ /* 0 bb682afba87b29e8b57634f5b67537f6b77436f7b47735f4a96a28e9aa692beaa35012e3906311d0ad6e2cedae6d2feeaf6c2eefac6f2dec915210d1b25133f28b581acb984b19d8854604c5864507c6874406c7844705c4995a18d99a591bda936022d3a05321e09d5e1cdd9e5d1fde9f5c1edf9c5f1ddca16220e1826103c2489bdb0a5b88c8095695d5145596d6175497d7165794d4154a89c908498aca0b7083c33243b0f0314e8dcd0c4d8ece0f4c8fcf0e4f8ccc0d72b1f1307192d21378abeb3a6bb8f83966a5e52465a6e62764a7e72667a4e4257ab9f93879bafa3b00b3f34073c080017ebdfd3c7dbefe3f7cbfff3e7fbcfc3d4281c10241a2e223 */ /* 0 26da5999d919a66600e4a76727e7a0401ae6a56525e55a9ad81c5b9bdb1b5c9c1ee2a16121e15e9edc185f9fdf1f589822de5d9ddd1da26224e0a36323e3a46416eaa96929e9569630d45797d71790702ad65595d515aa6a2ce8ab6b2bebac6c2ed2915111d1ae6e28ecaf6f2fefa86812eead6d2ded925214d0935313d39454ba0639f9b9794686c4204787c7076080c67a4585c5053afab87c3bfbbb7b3cfcc27e4181c1013efebc783fffbf7f38f8be023dfdbd7d4282c0044383c3034484ca764989c90936f6f41037f7b77750b0b60a35f5b5754a8ac80c4b8bcb0b4c8cf20e71b1f1314e8ecc084f8fcf0f4888ce324d8dcd0d72b2f03473b3f33374b4 */ /* 0 a76426e7a46725e4a16220e1a26123e2589bdb1a5b98d8193efdbd1c3dfebe7f5cffbf7e3f9cdc7d5a99d918599ada1ba36022e3a06321e0a56624e5a66527e6975416d7945715d4915210d1925113d2ab682aeba86b29e88d4e2ccd8e4d0fce8f6c0ecfac4f0deca96a28e9aa692bea935012d3905311d0955614d5965517d644b7f7067784c4054281c1004182c20338fbbb7a3bf8b8795e9ddd7c5d9ede1f3c9fdf1e5ffcbc1d3af9b97839faba7b4083c3024380c0014685c5044586c6077487c73647b4f43572b1f13071b2f233488bcb0a4b88c8096eaded0c6daeee2f4cafef2e6f8ccc2d4a89c908498aca0b70b3f33273b0f03176b5f53475b6f637 */ /* 0 ea3669a9e92976b6945077b7f73710d0f62a75b5f5356aaae82c6babeb2b6cac922e11d191516eaeec286fafef2f68a8ee526daded2d12d2905413d3935314d49a4619d9995906c6e42007c7874760a0865a05c585451ada985c1bdb9b5b1cdc1ee261a1e1219e5e9c589f5f1fdf18d822de1ddd9d5d62a2e02463a3e32364a48a5609c9894916d6f43017d7975770b0964a15d595550aca884c0bcb8b4b0cccf24e71b1f1310ece8c480fcf8f4f08c88e320dcd8d4d72b2f03473b3f33374b4fa2679b9f93966a6844067a7e72700c0e63a65a5e5257abaf83c7bbbfb3b7cbc823e01c181417ebefc387fbfff3f78b8fe427dbdfd3d02c2804403c3834304c4 */ /* 0 28b43bfbbb7ba868ba7635f5b57536f674e837f7b77734f42ab6a96929e9aa6a30eca36323e3b0702ee2ad6d2ded8e6e2cf08f4f0fcfac6c72ce31f1b17132f218c48b4b0bcb589806ca854505c5864604d8874707c784441ac65999d9195a9a00dc5393d3138040d21e5d9ddd1d5efe1cc03fffbf7f5c9c02be814101c18242d4085b9bdb1b4888da165595d5155696c8145797d7175494d60a4989c9094a8acc104383c3035090c20e4d8dcd0d4eaed00c6fafef2f4c8cee125191d1115292e4786babeb2b38f8ea2665a5e52566a6b82467a7e72764a4e67a39f9b9793afabc2033f3b37360a0b27e3dfdbd7d3e9ee07c5f9fdf1f3cfcde2261a1e12162a2 */ /* 0 f25e11d191511ede9c581fdf9f5f18d89e321ddd9d5d72b2905473b3f33374b446ea09c98949c6064084c7074787c0002a86c50545856aaa882c6babeb2b6cac2e82e12161a16eaeec286fafef2f68a842ee6daded2dc20244a0c3034383c4049a3679b9f93976b6f43077b7f73770b0f65a75b5f5351adaf85c1bdb9b5b1cdc923e71b1f1317ebefc387fbfff3f78b8fe527dbdfd3d12d2f03413d3935314d48a6669a9e92926e6a46027e7a76720e0a64a25e5a5650acae84c0bcb8b4b0ccca24e01c181410ece8c480fcf8f4f08c88e620dcd8d4d22e2806423e3a36324e4fa5619d9995916d6945017d7975710d0963a15d595557aba983c7bbbfb3b7cbc */ /* 0 36ea69a9e929b67630f4b77737f770b02af6b57535f56aaae84c0bcb8b4b0ccc4ef271b1f1310ece8c280fcf8f4f68a8328e0dcd8d4db27234f0b37333f3b47446da995919d906c6844007c7874700c01a8605c585459a5a3cd8bb7b3bfbbc7c3e8201c18141be7e18fcbf7f3fff985842febd7d3dfd02c2804403c3834304c48a1609c989495696d4505797d71710d0d64a5595d5150aca882c6babeb2b6cacd22e11d191516eaeec486fafef2f08c8ee126daded2d529290145393d3135494fa2679b9f93966a6e42067a7e72760a0e63a65a5e5257abaf81c5b9bdb1b5c9ce21e61a1e1215e9edc385f9fdf1f78b8de225d9ddd1d62a2e02463a3e32364a4 */ /* 0 26da5999d919a66600e4a76727e780401ae6a56525e55a9ad81c5b9bdb1b5c9c1ee2814101c15e9edc185f9fdf1f589802de5d9ddd1da24224c0a36323e3a46416eaa96929e9569630d45797d717b0702ad65595d515aa6a2ce8ab6b2bebac6c2ed2b17131f1ae6e28ecaf6f2fefa86832eead6d2ded927214f0935313d39454ba0639f9b9794686c4204787c70760a0c67a4585c5053afab87c3bfbbb7b3cfcc27e61a1e1213efebc783fffbf7f38f8be223dfdbd7d6282e0044383c3034484ca764989c90936f6f41037f7b7775090b60a35f5b5754a8ac80c4b8bcb0b4c8cf20e5191d1114e8ecc084f8fcf0f4888ce124d8dcd0d52b2d03473b3f33374b4 */ /* 0 58a4eb2b6babd818aa6625e5a56526e6649827e7a76724e45aa6d9195999da1a609cd313539320e05e92dd1d5d9dde1e5ca0df1f5f9fdc1c629e21e1a16122e26894db1b5b9b28e8569ad5155595d61654a8d7175797d4146a9629e9a9692aea50ac23e3a363d0106ea2ed2d6dadee2e6c90ef2f6fafec2c52aed1115191d212c4780bcb8b4b38f8ca064585c5054686b8044787c7074484c67a39f9b9793afabc0033f3b3734080b27e3dfdbd7d3efec07c3fffbf7f3cfcbe024181c1014282b4083bfbbb7b4888ba7635f5b57536f6c87437f7b77734f4b60a4989c9094a8a8c704383c30330f0c24e0dcd8d4d0eceb04c0fcf8f4f0ccc8e7231f1b17132f2 */ /* 0 a76426e7a46725e4a16220e1a26123e2589bdb1a5b98d8193efdbd1c3dfebe7f5cffbf7e3ffcbc7d5a99d918599ada1ba36022e3a06321e0a56624e5a66527e6975416d7945715d4915210d1925113d2ab682aeba86b29e88d4e2ccd8e4d0fce8f6c0ecf8c4f0dcca96a28e9aa692bea935012d3905311d0955614d5965517d644b7f7067784c4054281c1004182c20338fbbb7a3bf8b8795e9ddd7c5d9ede1f3c9fdf1e5f9cdc1d3af9b97839faba7b4083c3024380c0014685c5044586c6077487c73647b4f43572b1f13071b2f233488bcb0a4b88c8096eaded0c6daeee2f4cafef2e6facec2d4a89c908498aca0b70b3f33273b0f03176b5f53475b6f637 */ /* 0 f54d0cccf23273b3f33372b28c4c0dcd894160a08e4e0fcf8f4f0ecee02001c18d3574b48a4a0bcb8b4b0acaf43475b5f13978b8f63677b7f73776b6f83879b93d85bc7c824203c3834302c23cfcbd7df93110d03efebf7f3fffbe7e905071b145fd04c4fa3abb7b3bfb7aba844405c5814908c8864607c7874706c6884809c9952d6cac925213d3935312d2ec2c6dade92100c0ee2e6fafef2f6eae804061a1ed5514d4ea2a6babeb2b6aaa945415d5915918d8965617d7975716d6985819d9e51d5c9ce22263a3e32362a2dc1c5d9d995170b0de1e5f9fdf1f5e9ef03011d1dd2564a49a5a5b9bdb1b1adae42465a5e12968a8e62667a7e72766a6e82869a9 */ /* 0 a76426e7a46725e4a16220e1a26123e29858db1a9b5b19d83efdbd1c5dfebe7f5cffbf7e3f9cdc1d9a5a18d99959da1ba36022e3a06321e0a56624e5a66527e6975416d7945715d4915210d1925113d2ab682aeba86b29e88d4e2ccd8e6d0fce8f6c0ecfac4f2deca96a28e9aa692bea935012d3905311d0955614d5965517d644b7f7067784c4054281c1004182c20378fbbb7a3bb8f8395e9ddd7c3d9ede1f3c9fdf1e5ffcbc7d3ab9f93879faba7b4083c3024380c0014685c5044586c6077487c73647b4f43572b1f13071b2f233488bcb0a4b88c8096eaded0c4daeee2f4cafef2e6f8ccc0d4a89c908498aca0b70b3f33273b0f03176b5f53475b6f637 */ /* 0 36da995919d9867600f4874707c780401ac6b57535f59a5a1cd85b9bdb1b5c9c1ec2814101c15e9e18dc5f9fdf1f985802de5d9ddd1d824204c0834303c3844406eaa96929e9b64630c4b77737f7b0702af6854505c5aa6a2ce8ab6b2bebac6c2ef2b17131f1ae6e28ecaf6f2fefa86832eead6d2dedb27234f0b37333f3b474fa2679b9f93966a6e42067a7e72760a0e63a65a5e5257abaf87c3bfbbb7b3cfce27e61a1e1213efebc383fffbf7f78b8be223dfdbd7d62a2e02463a3e32364a4ca164989c9095696d4105797d7175090d60a5595d5154a8ac80c4b8bcb0b4c8cd20e5191d1114e8ecc084f8fcf0f4888ce124d8dcd0d5292d0145393d3135494 */ {0x3b, 0x40, 0x7a}, /* hash=f03dfbda, distance=7120 */ {0x75, 0x27, 0x52}, /* hash=c1f4cc40, distance=7172 */ {0x63, 0x2e, 0x1a}, /* hash=b45e012f, distance=6904 */ {0x03, 0x03, 0x01}, /* hash=e7709dee, distance=6480 */ {0x11, 0x37, 0x75}, /* hash=560e6bc7, distance=8060 */ {0x29, 0x2a, 0x78}, /* hash=280d4419, distance=6680 */ {0x7f, 0x4e, 0x1e}, /* hash=58b5736c, distance=7344 */ {0x11, 0x1b, 0x71}, /* hash=3379eaaa, distance=6872 */ {0x0b, 0x64, 0x28}, /* hash=adb059e0, distance=6564 */ {0x27, 0x52, 0x12}, /* hash=de68322c, distance=7464 */ {0x09, 0x3b, 0x75}, /* hash=0218e910, distance=7884 */ {0x0b, 0x0a, 0x4b}, /* hash=3a3c870f, distance=7644 */ {0x2b, 0x29, 0x78}, /* hash=d29ab3e5, distance=6608 */ {0x63, 0x2c, 0x1b}, /* hash=99342772, distance=6948 */ {0x27, 0x27, 0x7a}, /* hash=049444ff, distance=6524 */ {0x39, 0x57, 0x7b}, /* hash=8346edcc, distance=6720 */ /* }}} */ /* {{{ last quarter */ /* 0 518910d0f63677b7f73776b6905011d1f52d0cac8a4a0bcb8b4b0acaec4c6dad4991c808ee2e6fafef2f6eae4888c909ed5514d4925213d3935312d2945415d561f9e0204686c7074787c60660a0e1215d857cdcfa3a7bbbfb3b7aba9c3c1ddd39a178b89e5e1fdf9f5f1edef83879b9659de42462a2e32363a3e22264a4e525a93170b0965617d7975716d6f03071b1954d6cccea2a6babeb2b6aaa8c2c0dcdf16928e88e4e0fcf8f4f0ecea86829e98d3574b4f23273b3f33372b2f43475b5994100c0a66627e7a76726e6804001c1a53d1cbc9a5a1bdb9b5b1adafc5c7dbd815918d8fe3e7fbfff3f7ebe985819d9fd4504c4824203c3834302c2844405c5 */ /* 0 58a4eb2b6babd818aa6625e5a56526e6649827e7a76724e45aa6d9195999da1a609cd313539320e05e92dd1d5d9dfe1e5ca0ff3f7fbfdc1c62be21e1a16122e26894db1b5b9b28e8569ad5155595d61654a8d7175797d4146a9629e9a9692aea50ac23e3a363d0106ea2ed2d6dadce2e6c90cf0f4f8fec2c528ed1115191d212c4780bcb8b4b38f8ca064585c5054686b8044787c7074484c67a39f9b9793afabc0033f3b3734080b27e3dfdbd7d3edec07c1fdf9f5f3cfc9e024181c1014282b4083bfbbb7b4888ba7635f5b57536f6c87437f7b77734f4b60a4989c9094a8a8c704383c30330f0c24e0dcd8d4d0eeeb04c2fefaf6f0cccae7231f1b17132f2 */ /* 0 05dd8444ca0a4b8bcb0b4a8a04c4854519c1589816d6975717d79656d8185999d51d5c9cd2125393d3135292dc1c5d9d01d98040de1e5f9fdf1f5e9e00c0814175ad34f4ba7a3bfbbb7b3afab47435a529b1a868e62667a7e72766a628e8a9696de52cec22e2a36323e3a262ac6c2ded71e930f0ae6e2fefaf6f2eeeb07031f1cd2564a4aa6a2bebab6b2aeae4246595e17938f8c6064787c7074686b87839f9b57d3cfcb27233f3b37332f2bc7c3dfdb92160a0be7e3fffbf7f3efee02061a1bd155494da1a5b9bdb1b5a9ad41455f5d1094888b67637f7b77736f6c8084989c50d4c8cc2024383c3034282cc0c4d8dc9115090ce0e4f8fcf0f4e8ed0105191 */ /* 0 36ea69a9e929b67630f4b77737f770b02af6b57535f56aaae84c0bcb8b4b0ccc4ef2b17131f10ece8c280fcf8f4f68a8328e0dcd8d4db27234f0b37333f3b47446da995919d906c6844007c7874700c01a8605c585459a5a3cd8bb7b3bfbbc7c3e8201c18141be7e18fcbf7f3fff985842febd7d3dfd02c2804403c3834304c48a1609c989495696d4505797d71710d0d64a5595d5150aca882c6babeb2b6cacd22e5191d1116eaeec486fafef2f08c8ee126daded2d529290145393d3135494fa2679b9f93966a6e42067a7e72760a0e63a65a5e5257abaf81c5b9bdb1b5c9ce21e61a1e1215e9edc385f9fdf1f78b8de225d9ddd1d62a2e02463a3e32364a4 */ /* 0 b50d4c8cb27233f3b37332f2cc0c4d8d01c98040ce0e4f8fcf0f4e8e00c08141cd7534f40aca4b8bcb0b8a4ab47435f5b1193898b67637f7b77736f6d87859997dc53cfc02c2834303c38242bc7c3dfdb97130f0be7e3fffbf7f3efeb07031f105bd8444ba7a3bfbbb7b3afa04c4854529c1a84806c6874707c7864608e8a969d56d2cecd2125393d3135292ac6c2dede92160a0ae6e2fefaf6f2eeee02061a1ad155494ea2a2bebab6b6aaad4145595d17958f8d6165797d7175696b81839f9e51d5c9ce22263a3e32362a2dc1c5d9dd9115090de1e5f9fdf1f5e9ed0105191dd2564a4da1a5b9bdb1b5a9ae42465a5e1096888e62667a7e72766a6c8284989 */ /* 0 ea5669a9e92916d6945017d7975710d0962a15d595556aaa882c6babeb2b6cac922e11d191516eaeec486fafef2f08c8ee526daded2d12d2905413d3935314d49a2619d9995966a6e43867a7e72778b8e65a65a5e5251adaf85c1bdb9b5b1cdc5ea2e12161a11ede9c601fdf9f5f20e0629e1ddd9d5de22224a063a3e32364a48a3609c9894976b6f43077b7f73770b0f64a75b5f5350acae84c0bcb8b4b0cccf24e71b1f1310ece8c280fcf8f4f68a88e320dcd8d4d72b2f03473b3f33374b4fa4679b9f93906c6844007c7874700c0863a05c585457aba983c7bbbfb3b7cbc823e01c181417ebefc587fbfff3f18d8fe427dbdfd3d02c2804403c3834304c4 */ /* 0 469a19d99959c6068440c707478700c05a86c50545851ada985c1bdb9b5b1cdc1e8201c181419e5e9c389f5f1fdf78d842de9d5d1ddd02c2804403c3834304c436ea69a9e929b676f430b77737f770b02af6b57535f56aaae82c6babeb2b6cacf22e71b1f1316eaeec486fafef2f08a8ee326daded2d72b2f03473b3f33374b4fa5679b9f93916d6e42017d7975760a0963a15d595557abaf83c7bbbfb3b7cbce23e61a1e1217ebefc587fbfff3f18b8fe227dbdfd3d62a2e02463a3e32364a48a2609c9894966a6945067a7e72710d0e64a65a5e5250aca884c0bcb8b4b0ccc924e11d191510ece8c280fcf8f4f68c88e520dcd8d4d12d2905413d3935314d4 */ /* 0 04a7e72667c4844502c1814001c282439b581adb985b19d89d5e1cdd9e5d1fde9f5c1edf9c5f1ddc995a18d99a591bda00c3834203c0804166c5854405a6e627977416d7b45735f4b17230f1b27133f268abeb2a6ba8e8296eaeed2c6dad2feeac6c2eefaf6fec2d6aa9e92869aaea2bb37032f3b07331f0b55634f5967517d664c7874607a4e42562a1e12061a2e22378bbfb3a7bb8f8397ebdfd3c7dbefe3f7cbfff3e7fbcfc3d7ab9f93879bafa3b60a3e32263a0e02106a5e52465c6864754b7f7367794d4155291d1105192d24b08cb8b4a0bc888490ecd8d4c0dce8e0f0c8fcf4e4fcc8c4d0ac9894809ca8a135093d3125390d0117695d51455b6f637 */ /* 0 28b43bfbbb7ba868ba7635f5b57536f674e837f7b77734f42ab6a96929e9aa6a30eca36323e3b0702ee2ad6d2ded8e6e2cf08f4f0fcfac6c72ceb17131f132f218c48b4b0bcb589806ca854505c5864604d8874707c784441ac65999d9195a9a00dc5393d3138040d21e5d9ddd1d5efe1cc03fffbf7f5c9c02be814101c18242d4085b9bdb1b4888da165595d5155696c8145797d7175494d60a4989c9094a8acc104383c3035090c20e4d8dcd0d4eaed00c6fafef2f4c8cee125191d1115292e4786babeb2b38f8ea2665a5e52566a6b82467a7e72764a4e67a39f9b9793afabc2033f3b37360a0b27e3dfdbd7d3e9ee07c5f9fdf1f3cfcde2261a1e12162a2 */ /* 0 ea5609a9e94916d6945017d7975710d0962a15d595556aaa882c6babeb2b6cac922e11d191516eaeec486fafef2f08c8ee526daded2d12d2905413d3935314d49a2679d9993966a6e43867a7e72778b8e65a65a5e5251adaf85c1bdb9b5b1cdc5ea2e12161a11ede9c601fdf9f5f20e0629e1ddd9d5de22224a063a3e32364a48a3669c9892976b6f43077b7f73770b0f64a75b5f5350acae84c0bcb8b4b0cccf24e71b1f1310ece8c280fcf8f4f68a88e320dcd8d4d72b2f03473b3f33374b4fa4619b9f95906c6844007c7874700c0863a05c585457aba983c7bbbfb3b7cbc823e01c181417ebefc587fbfff3f18d8fe427dbdfd3d02c2804403c3834304c4 */ /* 0 dc704383c30330f0c21e5d9ddd1d5e9eb01c5f9fdf1f5c9cde7231f1b17132f2c4083b9bdb7b4888ba064585c5054686c8044787c7074484c60a4989c9094a8a00ac33f3b3738040b26e2dedad6d2eee6cc02fefaf6f2cecae02814101c14282b4784bebab0b38f8ca7635f5b57536f6b87437f7b77734f4b67a39f9b9793afabc1023e3a3635090a27e3dfdbd7d3efed07c3fffbf7f3cfcbe125191d1115292a4685bfbbb1b28e8da6625e5a56526e6a86427e7a76724e4a66a29e9a9692aeacc205393d31360a0d20e4d8dcd0d4e8ee00c4f8fcf0f4c8cce6261a1e12122e2d4182b8bcb6b5898aa165595d5155696d8145797d7175494d61a5999d9195a9a */ /* 0 7dc5fc3ca2622383c36322e27cbcfd3db97130f07ebeff3f7fbffe3eb07031f105bd4484ba7afb3b7bbb3afac4044585a1094888c6064787c7074686c8084989b50d4c8cd21253f3b3135292cc0c4d8dc9014080ce0e4f8fcf0f4e8ec0004181cd7534f4ca0a4b8bcb0b4a8ab47435f5d17938f8b67637f7b77736f6b87839f9a55d1cdcc20243e3a30342829c5c1dddd91150909e5e1fdf9f5f1eded01051919d6524e4da1a1bdb9b5b5a9aa46425e5c16928e8a66627e7a76726e6a86829e9d56d2cecb2723393d37332f2ac6c2deda96120e0ae6e2fefaf6f2eeea06021e1ad155494aa6a2bebab6b2aead4145595b1195898d6165797d7175696d8185999 */ /* 0 56aac9094989d6165094d7175797d0106a96d5155595ea2a6c88eb2b6babec2c6e92d1115191ee2e48acef2f6fafc80852aeed2d6dadd2125490d3135393d414669af93979b9e62660a4e72767a7e0205aa6e52565a5da1a5cb8db1b5b9bdc1c5ea2e12161a11ede789c1fdf9f5ff838629edd1d5d9de22264a0e32363a3e4248a7629e9a96936f6b47037f7b77730f0b64a35f5b5750acaa84c0bcb8b4b0cccb24e31f1b1710ece8c680fcf8f4f28e88e720dcd8d4d32f2b07433f3b37334f4ba4619d9995906c6844007c7874700c0867a05c585453afa987c3bfbbb7b3cfc823e01c181417ebebc587fbfff3f18d8fe423dfdbd7d02c2804403c3834304c4 */ /* 0 36da995919d9b67600c4b77737f780401af6b57535f59a5a1cd89b5b1bdb9c5c1ec2814101c15e9e38dc5f9fdf1f987802de5d9ddd1d824204c0834303c3844406eaa96929e9864630f4874707c7b0702ac6854505c5aa6a2ce8ab6b2bebac6c2ef2b17131f1ae6e08ecaf6f2fefa84832eead6d2dedb27234f0b37333f3b474fa2679b9f93966a6e42067a7e72760a0e63a65a5e5257abaf83c7bbbfb3b7cbce27e61a1e1213efefc183fffbf7f58b8be223dfdbd7d62a2e02463a3e32364a4ca164989c9095696d4105797d7175090d60a5595d5154a8ac80c4b8bcb0b4c8cd20e5191d1114e8ecc284f8fcf0f6888ce124d8dcd0d5292d0145393d3135494 */ /* 0 b56d2cecd21233f3b3735292ac6c2ded21e9a060ae6e2fefaf6f2eee20e0a161ad7534f42aeaab6b2bebaa6ab47435f5d17938f8b67637f7b77736f6b87839f91dc55c9c22e2834303c3a262dc1c5d9dd9115090de1e5f9fdf1f5e9ed010519105dd8444da1a5b9bdb1b5a9a04c4854509e1884806c6874707c7864608c88949d50d4c8cb2725393d31332f2cc0c4d8dc9014080ce0e4f8fcf0f4e8ec0004181cd155494ca0a4b8bcb0b4a8ad4145595b1195898d6165797d7175696d8185999e57d3cfcc20263a3e3234282bc7c3dfdb97130f0be7e3fffbf7f3efeb07031f1bd2564a4ba7a3bfbbb7b3afae42465a5c12968a8e62667a7e72766a6e82869a9 */ /* 0 ea3669a9e92976b6f45077b7f73710d0f62a75b5f5356aaae82c6babeb2b6cac922e11d191516eaeec286fafef2f68a8ee526daded2d12d2905413d3935314b49a4619d9995906c6842007c7874760a0865a05c585451ada985c1bdb9b5b1cdc1ee261a1e1219e5e9c589f5f1fdf18d822de9d5d1ddd62a2e02463a3e32364c48a5609c9894916d6943017d7975770b0964a15d595550aca884c0bcb8b4b0cccf24e71b1f1310ece8c480fcf8f4f08c88e320dcd8d4d72b2f03473b3f33374d4fa2679b9f93966a6e44067a7e72700c0e63a65a5e5257abaf83c7bbbfb3b7cbc823e01c181417ebefc387fbfff3f78b8fe427dbdfd3d02c2804403c3834304a4 */ {0x25, 0x65, 0x2a}, /* hash=63eed4aa, distance=6544 */ {0x11, 0x07, 0x4b}, /* hash=b83bf0eb, distance=7612 */ {0x51, 0x67, 0x6a}, /* hash=6a5f17e4, distance=6600 */ {0x27, 0x54, 0x11}, /* hash=2895d8fe, distance=7448 */ {0x05, 0x7b, 0x6b}, /* hash=12aafdfc, distance=6944 */ {0x2f, 0x6c, 0x23}, /* hash=b4a00f10, distance=7988 */ {0x31, 0x17, 0x1d}, /* hash=fec020c4, distance=7080 */ {0x05, 0x0e, 0x0f}, /* hash=2ac77068, distance=6900 */ {0x11, 0x19, 0x72}, /* hash=548aa655, distance=6848 */ {0x2d, 0x6d, 0x23}, /* hash=3b719c89, distance=7860 */ {0x3d, 0x13, 0x62}, /* hash=026e0bfb, distance=6480 */ {0x19, 0x31, 0x5b}, /* hash=645fc37b, distance=6704 */ {0x2b, 0x38, 0x3e}, /* hash=74a03367, distance=7156 */ {0x31, 0x57, 0x7d}, /* hash=26075aa7, distance=6668 */ {0x1b, 0x2e, 0x6c}, /* hash=00bad9ae, distance=6504 */ {0x01, 0x4f, 0x1d}, /* hash=44043def, distance=7320 */ /* }}} */ /* {{{ waning crescent */ /* 0 f25e71b1f1311ede9c581fdf9f5f18d89e321ddd9d5d72b2905473b3f33374b446ea69a9e929c606408407c78747c0002a86c50545856aaa882c6babeb2b6cac2e82c10141816eaeec286fafef2f68a842ee6daded2dc20244a0c3034383c4049a3619d9995976b6f43077b7f73770b0f65a75b5f5351adaf85c1bdb9b5b1cdc923e11d191517ebefc387fbfff3f78b8fe527dbdfd3d12d2f03413d3935314d48a6609c9894926e6a46067a7e72720e0a64a25e5a5650acae84c0bcb8b4b0ccca24e21e1a1610ece8c480fcf8f4f08c88e620dcd8d4d22e2806423e3a36324e4fa5679b9f93916d6945017d7975710d0963a15d595557aba983c7bbbfb3b7cbc */ /* 0 2aedad042deaaa6b44ebab6a2b84c4652681c11841e6a66758e7a7662798d81952925c9d1dddd213dc1cd31293535d9cde1ed90099595f9e80405e9fdf1fc001da1ad57495555b9af4345a9bdb1bb41556f1b1683196d6172897d71657e8a86922e5a56c25e2a2632ce3a36223ecac6d2ee9a97029eeae6f30efaf6e2ff0b0714a8dcd644d8aca0b248bcb0a4be4a40546e1a1782186c6073887c70647f8b87932f5b57c35f2b2733cf3b37233fcbc7d3ef9b96039febe7f20ffbf7e3fe0a0613afdbd143dfaba7b54fbbb7a3b94d4753691d10851f6b67748f7b7763788c8094285c50c4582c2034c83c302438ccc0d4e89c910498ece0f508fcf0e4f90d011 */ /* 0 f63275b5f53572b24cf073b3f333cc0c4e8ae92969a90ece608c0fcf8f4fe0206a8ecd0d4d8dca2a34a8cb0b4b8b74b4f23671b1f13176b6f43877b7f73778b84286c5054585c2023c80c30343837cbcfa3e19d999597ebefc507fbfff3f10d0fe5a7dbdfd3d1aba44987bbbfb3bc4044682c1014181c6064884c7074787c808965215d5955512d2906c13d393532cecaa2e09c989496eaeac406fafef2f00c0ee4a2dedad6d0aea88542bebab6b14d4925611d1915116d6945817d7975718d8a66225e5a56522e2a05c23e3a3631cdc9a5e79b9f9391ede9c301fdf9f5f70b09e3a1ddd9d5d7adaf8641bdb9b5b24e4a26621e1a16126e6a46827e7a76728e8 */ /* 0 26da5999d919a66600c4a76727e780401ae6854505c55a9ad81c5b9bdb1b5c9c1ec2814101c15e9edc185f9fdf1f589802de5d9ddd1d824204c0834303c3844416eaa96929e95696b4705797d71730f02ad635f5b575aa6a2ce8ab6b2bebac6cb26e31f1b1712eee28ec2fefaf6fa868ae72ad6d2ded32f2b07433f3b37334f4ba0639f9b9794686e4204787c70760a0c67a65a5e5253afab87c3bfbbb7b3cfce27e61a1e1213efebc783fffbf7f38f8be223dfdbd7d62a2e02463a3e32364a4ca764989c90936f6d41037f7b7775090b60a5595d5154a8ac80c4b8bcb0b4c8cd20e5191d1114e8ecc084f8fcf0f4888ce124d8dcd0d5292d0145393d3135494 */ /* 0 5d851cdc4282c3034383c2029c5c1ddd993170b09e5e1fdf9f5f1edef03071d1459dc4049a5a1bdb9b5b1ada4484c5054981c8084686c7074787c6064888c909f52d6cacf23273b3f33372b2ec2c6dad41a9c000ee2e6fafef2f6eae4080e1016aaa74b4ed356babf434ea2aeb2b75b5f13978b8f63677b7f73776b6f83879b9a53d7cbca26223e3a36322e2fc3c7dbdf95110d0fe3e7fbfff3f7ebe905011b1fd6524e4fa3a7bbbfb3b7abaa46425e5a16928e8a66627e7a76726e6a86829e9954d0ccc925213d3935312d28c4c0dcd896120e08e4e0fcf8f4f0ecea06021c18d5514d48a4a0bcb8b4b0aca945415d5915918d8965617d7975716d6985819d9 */ /* 0 58a4eb2b6babd818aa6625e5a56526e6649827e7a76724e45aa6d9195999da1a609cd313539320e07e92dd1d5d9dfe3e5ca0ff3f7fbfdc1c62be21e1a16122e26894db1b5b9b28e8569ad5155595d61654a8d7175797d4146a9629e9a9692aea50ac23e3a363d0104ea2ed2d6dadce0e6c90cf0f4f8fec2c528ed1115191d212c4780bcb8b4b38f8ca064585c5054686b8044787c7074484c67a39f9b9793afabc0033f3b3734080b25e3dfdbd7d1edec07c1fdf9f5f3cfc9e024181c1014282b4083bfbbb7b4888ba7635f5b57536f6c87437f7b77734f4b60a4989c9094a8a8c704383c30330f0c26e0dcd8d4d2eeeb04c2fefaf6f0cccae7231f1b17132f2 */ /* 0 dc704383c30330f0c21e5d9ddd1d5e9eb01c5f9fdf1f5c9cde1231f1b1715292a4685b9bdb1b28e8da6625e5a56526e6a86427e7a76724e4a66a29e9a9692aea00ac33f3b3738040b26e2dedad6d2eee6cc02fefaf6f2cecae62814101c122e2d4182bebab6b5898aa165595d5155696d8145797d7175494d61a5999d9195a9abc1023e3a3635090a27e3dfdbd7d3efed07c3fffbf7f3cfcbe725191d11132f2c4083bfbbb7b4888ba064585c5054686c8044787c7074484c60a4989c9094a8acc205393d31360a0d20e4d8dcd0d4e8ee00c4f8fcf0f4c8cce0261a1e1214282b4784b8bcb0b38f8ca7635f5b57536f6b87437f7b77734f4b67a39f9b9793afa */ /* 0 a97630e9b66937f6b77036f7b07731f0b56a2cf5aa752beaab6c2aeb8c6b0dccb14e28f18e710fce8f680ecfa84f29e88d7234cdb24d33f2b37432f3b47335f4994600d9865907c6874006c7804701c0855a1cc59a451bda5c9bdb1a5bfcbc7dfe3e18c18141be7f9858bf7eff3f19d8fd4204bd823d03c2834402c3844305c45689c9104996d6175097d7165790d0114a95d50c558aca0b4c8bcb0a4bacec2d6e91d10851aeee2f48afef2e6f88c80952aded146d92d2135493d3125394d41566b9f92079a6e62760a7e72667a0e0217aa5e53a65bafa7b3cfbbb7c3b9cdc1d5ea1e138619ede1f789fdf1e5fb8f839629ddd245da2e22364a3e32263a4e425 */ /* 0 28f4bb7b3bfba86836fab57535f5b67634e8b77737f7b4742af6a96929e9aa6a10eca36323e390502ee2ad6d2dedae6e2cd0af6f2fefac6c32ee915111d1b27218c48b4b0bcb985806ca854505c5864604d8874707c784441ac6995919d99a5a20dc935313d360a01ed29d5d1ddd9e5e1ce09f5f1fdf9c5c02de61a1e1218242d4085b9bdb1b4888da165595d5155696c8145797d7175494d60a4989c9094a8acc304383c30370b0c20e4d8dcd0d4e8ef00c4f8fcf0f4c8cce1271b1f1315292e4386babeb2b78b8ea2665a5e52566a6f82467a7e72764a4e63a79b9f9397abafc4073b3f33300c0f23e7dbdfd3d7ebe803c7fbfff3f7cbcfe2201c1814162a2 */ /* 0 3ef271b1f131be7efc38bf7f3fff78b832febd7d3dfd72b2f03473b3f33374b48a2609c9894966a6e42007c7874760a0e64a65a5e5250aca884c0bcb8b4b0ccc824e01c181410ece8c480fcf8f4f08c88e420dcd8d4d02c2804403c3834304c4fa5679b9f93916d6945077b7f73710d0963a15d595557abaf83c7bbbfb3b7cbc921e11d191515e9e9c585f9fdf1f18d8de525d9ddd1d12d2905413d3935314d4ea4669a9e92906c6844067a7e72700c0862a05c585456aaae82c6babeb2b6cace22e61a1e1216eaeec286fafef2f68a8ee226daded2d62a2e02463a3e32364a49a3619d9995976b6f43017d7975770b0f65a75b5f5351ada985c1bdb9b5b1cdc */ /* 0 f54d0cccf23273b3f33372b28c4c0dcd894100c08e4e0fcf8f4f0ece8040c1018d3574b48a4a0bcb8b4b0acaf43475b539f178b8f63677b7f73776b6f83899793d85bc7c824203c3834302c23cfcbd7d31f970b03efebf7f3fffbe7ef030b17145fd04c43afabb7b3bfbba7a844405c5814908c8864607c7874706c6884809a9952d6cac925213d3935312d2ec2c6dade92160a0ee2e6fafef2f6eaee02061d1ed5514d4ea2a6babeb2b6aaa945415d5911918d8965617d7975716d6985859b9e51d5c9ce22263a3e32362a2dc1c5d9dd95110d0de1e5f9fdf1f5e9e905011a1dd2564a4da1a5b9bdb1b5a9ae42465a5e12968a8e62667a7e72766a6e82869c9 */ /* 0 08b4db1b5b9b4888569ad5155595d61674c8d7175797f4340a964989c9094a8acc704383c30330f0c20e4d8dcd0d4e8eb00c4f8fcf0f4c8c72cef13171b1f23278c42bebab6bf838aa6625e5a56526e604b827e7a76744847aa6f93979b9fa3a00bcf33373b340807eb2fd3d7dbdfe3e7cc0ff3f7fbffc3c02be4181c101428294683bfbbb7b28e8ba7635f5b57536f6a85437f7b77714d4b66a29e9a9692aeaac1023e3a3635090a26e2dedad6d2eeed06c2fefaf6f2cecae5211d1915112d2a4584b8bcb0b18d8ca064585c505468698644787c70724e4c65a19d999591ada9c6013d3935320e0925e1ddd9d5d1edea05c1fdf9f5f1cdc9e6221e1a16122e2 */ /* 0 76aae92969a9f63670b4f73777b7f0306ab6f53575b5ea2a6ca8eb2b6babec2c6eb2f13171b1ce2e68accf0f4f8fe828728eed2d6dadf23274b0f33373b3f434469ad9195999c606c400c707478740805a864585c505da1a5c98db1b5b9bdc1c5ec24181c101fe1e589cff3f7fbfd81802bedd1d5d9d4282c0044383c30344848a5609c9894916d6945017d7975710d0964a15d595550aca884c0bcb8b4b0ccc924e11d191510eee8c482fefaf6f08c8ae520dcd8d4d12d2905413d3935314d4ba6639f9b97926e6a46027e7a76720e0a67a25e5a5653afab87c3bfbbb7b3cfca27e21e1a1613edebc781fdf9f5f38f89e623dfdbd7d22e2a06423e3a36324e4 */ /* 0 06da5999d919a64600c4a76727e780401ae6854505c55a9ad81c5b9bdb1b5c9c1ec2814101c15e9edc185f9fdf1f589802de5d9ddd1d824204c0834303c3844476eaa96929e9369630f45797d717b0702ad635f5b575aa6a2ce8ab6b2bebac6c2ef2b17131f1ae6e28ecaf6f2fefa86832eead6d2dedb27234f0b37333f3b474ba2639f9b9796686e4204787c70760a0c67a65a5e5253afab87c3bfbbb7b3cfce27e61a1e1213efebc783fffbf7f38f8be223dfdbd7d62a2e02463a3e32364a4ca164989c90956f6d41037f7b7775090b60a5595d5154a8ac80c4b8bcb0b4c8cd20e5191d1114e8ecc084f8fcf0f4888ce124d8dcd0d5292d0145393d3135494 */ /* 0 b50d4c8cb27233f3b37332f2cc0c4d8da96120e0ce0e4f8fcf0f4e8ea06021e1cd7534f4ca0a4b8bcb0b4a8ab47435f5b17938f8b67637f7b77736f6b87839f97dc5fc3cc2024383c30342827cbcfd3dd91150907ebeff3f7fbffe3ed010519105bd4484ba7afb3b7bbb3afac4044585c1094888c6064787c7074686c8084989d56d2cecd2125393d3135292ac6c2dedc9014080ae6e2fefaf6f2eeec0004181ad155494aa6a2bebab6b2aead4145595d1195898d6165797d7175696d8185999a55d1cdca26223e3a36322e29c5c1dddb97130f09e5e1fdf9f5f1edeb07031f19d6524e4da1a1bdb9b5b5a9aa46425e5a16928e8a66627e7a76726e6a86829e9 */ /* 0 893170b0f63677b7f73776b6f03071b1f54d0ccc8a4a0bcb8b4b0aca8c4c0dcdf14968a88e4e0fcf8f4f0ecee82809c98d3574b4f23273b3f33372b2f43475b541f9c000864607c7874706c64080c101853d7cbcfa3a7bbbfb3b7abafc3c7dbd398118d8fe3e7fbfff3f7ebe985879b9fd45c4044282c3034383c202448405c5e95110d0965617d7975716d6905011d1952d6cacea2a6babeb2b6aaaec2c6dad912908c8ee2e6fafef2f6eae884869a9ed5514d4925213d3935312d2945415d5996120e0e62667a7e72766a6a06021e1e55d1cdc9a5a1bdb9b5b1ada9c5c1ddda15978b89e5e1fdf9f5f1edef83819d99d2524e4a26223e3a36322e2a46465a5 */ {0x0f, 0x64, 0x27}, /* hash=a965128d, distance=6820 */ {0x71, 0x76, 0x5a}, /* hash=ce12da49, distance=7696 */ {0x39, 0x19, 0x2e}, /* hash=92af8e65, distance=7140 */ {0x7b, 0x50, 0x6e}, /* hash=f4de5be0, distance=7428 */ {0x61, 0x6d, 0x2b}, /* hash=59c587a8, distance=6540 */ {0x13, 0x06, 0x4b}, /* hash=7d870504, distance=7596 */ {0x1b, 0x64, 0x62}, /* hash=ea032e22, distance=6700 */ {0x23, 0x03, 0x7b}, /* hash=42909f79, distance=7924 */ {0x03, 0x00, 0x02}, /* hash=9f06e9cd, distance=6500 */ {0x17, 0x34, 0x1d}, /* hash=70544fe6, distance=6652 */ {0x01, 0x21, 0x19}, /* hash=2c8552e4, distance=6936 */ {0x77, 0x28, 0x51}, /* hash=ca576dd6, distance=7052 */ {0x19, 0x71, 0x46}, /* hash=b80744a2, distance=6580 */ {0x79, 0x43, 0x75}, /* hash=5f210841, distance=7304 */ {0x3f, 0x3e, 0x5b}, /* hash=1106b3f0, distance=6896 */ {0x33, 0x28, 0x25}, /* hash=f2a77991, distance=6464 */ /* }}} */ /* {{{ init key */ /* 0 ea5669a9e92916b6945077b7f73710d0f62a15d595556aaae82c6babeb2b6cac922e11d191516eaeec286fafef2f68a8ee526daded2d12d2905413d3935314d49a2619d9995966c660a407c78747e020865ae52565a51ada985c1bdb9b5b1cdc5ea2e12161a11ede9c581fdf9f5f18d8629e1ddd9d5de22264a0e32363a3e4248a3609c9894976d6f43017d7975770b0964a75b5f5350aca884c0bcb8b4b0cccf24e71b1f1310ece8c480fcf8f4f08c88e320dcd8d4d72b2f03473b3f33374b4fa4679b9f93906a6844067a7e72700c0e63a05c585457abaf83c7bbbfb3b7cbc823e01c181417ebefc387fbfff3f78b8fe427dbdfd3d02c2804403c3834304c4 */ /* 0 f54d0cccf23273b3f33372b28c4c0dcd894100c08e4e0fcf8f4f0ece8040c1018d3574b48a4a0bcb8b4b0acaf43475b539f1b87836f6b77737f7b67638f899793d85bc7c824203c3834302c23cfcbd7d31f970b03efebf7f3fffbe7ef030b17145fd04c43afabb7b3bfbba7a844405c5814908c8864607c7874706c6884809a9952d6cac925213d3935312d2ec2c6dade92160a0ee2e6fafef2f6eaee02061d1ed5514d4ea2a6babeb2b6aaa945415d591195898d6165797d7175696d81859b9e51d5c9ce22263a3e32362a2dc1c5d9dd95110d0de1e5f9fdf1f5e9e905011a1dd2564a4da1a5b9bdb1b5a9ae42465a5e12968a8e62667a7e72766a6e82869c9 */ /* 0 08b4fb3b7bbb884876ba35f5b57536f674c837f7b77734f4b60a894909c94a8acc70a36323e330f00ee24d8dcd0d4e8eb00c4f8fcf0f4c8cce7231f1b17132f278c48b4b0bcb38f806ca854505c5864604b8874707c784447ac639f9b9793afa00bc5393d3138040d27e3dfdbd7d3efe7cc03fffbf7f3cfc02be814101c18242d4282bebab6b68a8aa165595d5155696e8145797d7175494d66a69a9e9292aeaac104383c3035090c26e2dedad6d2eeed06c2fefaf6f2cecae125191d1115292e4185b9bdb1b5898da2665a5e52566a6d82467a7e72764a4e61a5999d9195a9adc2033f3b37360a0b21e5d9ddd1d5e9ee01c5f9fdf1f5c9cde2261a1e12162a2 */ /* 0 58a4eb2b6bab18d866aae52565a5e6266498e72767a7e4245aa619d999591ada409c13d39353c000925e1ddd9d5d1ede5c801fdf9f5f1cdc429ec1014181e20268941bdb9b5be8289a5615d5955516d654a817d7975714d46a96e92969a9ea2a70ace32363a3f0306ea2ed2d6dadee2e6cb0ef2f6fafec2c32aef13171b172d284380bcb8b4b78b88a4605c5854506c6f84407c7874704c4863a79b9f9397abafc6073b3f33320e0f23e7dbdfd3d7ebea03c7fbfff3f7cbcfe6221e1a16122c2f4487bbbfb3b08c8fa3675b5f53576b6883477b7f73774b4f64a09c989490aca8c5003c3834310d0824e0dcd8d4d0ece904c0fcf8f4f0ccc8e5211d1915112b2 */ /* 0 15dd94541ada9b5b1bdb9a5a14d49555912908a816d6975717d79656e84869a9852d6cac824203c3834302c2ec2c6dade95110d0ee2e6fafef2f6eae905011d1ed2564a4ea2a6babeb2b6aaae42465a519e19878e62667a7e72766a638d899591df59c5cf232b37333f372b21cdc9d5d21d960a01ede9f5f1fdf9e5ee02061a1fd3574b4fa3a7bbbfb3b7abaf43475b5f14968c8f63677b7f73776b6882809c9e54d0ccce22263a3e32362a28c4c0dcd893170b08e4e0fcf8f4f0ecef03071b18d4504c48a4a0bcb8b4b0aca844405c5813958b8864607c7874706c6f81879b9d53d7cbc92525393d31312d2fc3c7dbdf94100c0fe3e7fbfff3f7ebe804001c1 */ /* 0 3da57cbc62a2e32363a3e222fc3c7dbd995110d0fe3e7fbfff3f7ebe905011d165fde4249a5a1bdb9b5b1ada64a4e52569a1e82866a6e72767a7e62668a8e929954d0ccc925213d3935312d28c4c0dcd61a9e0208e4e0fcf8f4f0ece60a0e1216aaa14d48d556bab9454ea2aeb2b15d5915918d8965617d7975716d6985819d9855d1cdc824203c3834302c29c5c1dddf93170b09e5e1fdf9f5f1edef03071b19d4504c4fa3a7bbbfb3b7aba844405c5814908c8864607c7874706c6884809c9f52d6cacf23273b3f33372b2ec2c6dad894100c0ee2e6fafef2f6eae804001c1ed3574b48a4a0bcb8b4b0acaf43475b5f13978b8f63677b7f73776b6f83879b9 */ /* 0 ad6524e4aa6a2bebab6b2aeaa46425e559a1d818a66627e7a76726e65898d9197d95fc1cd2125393d31352925cbcfd3d619920e07ebeff3f7fbffe3ea06021e1559dd4145a9adb1b5b9bda1a5494d515d16928e85696d7175797d616a86829e9a50d2c8ca26223e3a36322e2cc6c4d8da9115090ce0e4f8fcf0f4e8ed0105191cd054484ca0a4b8bcb0b4a8ac4044585c17938f8c6064787c7074686b87839f9b55d3cdcb27233f3b37332f29c7c1dddb90140809e5e1fdf9f5f1edec0004181bd7534f4ba7a3bfbbb7b3afab47435f5b1094888b67637f7b77736f6c8084989c56d4cecc2024383c3034282ac0c2dedc97130f0ae6e2fefaf6f2eeeb07031f1 */ /* 0 b50d4c8cb27233f3b37332f2cc0c4d8d01c98040ce0e4f8fcf0f4e8e00c08141cd7534f40aca8b4b0bcb8a4ab47435f5b1195898b6765797d71736f6d81859997dc53cfc02c2834303c38242bc7c3dfdb97130f0be7e3fffbf7f3efeb07031f105bd8444ba7a3bfbbb7b3afa04c4854529c1a86806c6a76727e7864628e8a969d56d2cecd2125393d3135292ac6c2dede92160a0ae6e2fefaf6f2eeee02061a1ad155494ea2a6babeb2b6aaad4145595d17938f8d61637f7b7775696b87839f9e51d5c9ce22263a3e32362a2dc1c5d9dd9115090de1e5f9fdf1f5e9ed0105191dd2564a4da1a5b9bdb1b5a9ae42465a5e1094888e6264787c70766a6c8084989 */ /* 0 26da5999d919a66600e4a76727e780401ae6a56525e55a9ad81c5b9bdb1b5c9c1ec2814101c15e9edc185f9fdf1f589802de5d9ddd1d824204c0834303c3a44416eaa96929e95696d4705797d71730a82ad65595d515aa6a6ce82bebab6b2cecb26e31f1b1712eee28ac2fefaf6ff068ae722dedad6d32f2b07433f3b3733494ba0639f9b9794686c4204787c70760a0c67a4585c5053afab87c3bfbbb7b3cfce27e61a1e1213efebc783fffbf7f38f8be223dfdbd7d62a2e02463a3e3236484ca764989c90936f6b41037f7b7775090b60a35f5b5754a8ac80c4b8bcb0b4c8cd20e5191d1114e8ecc084f8fcf0f4888ce124d8dcd0d5292d0145393d31354f4 */ /* 0 dc704383c30330f05ec2dd1d5d9dde1eb01cdf1f5f9f5c9c729e31f1b17132f2c4083bfbbb7b4888ba064585c5054686c8044787c7074484c60a4989c9094a8aac0033f3b3734080b26e2dedad6d2eeec06c2fefaf6f2cecae024181c1014282b4784b8bcb0b38f8ca7635f5b57536f6b87437f7b77734f4b67a39f9b9793afabc1023e3a3635090a27e3dfdbd7d3efed07c3fffbf7f3cfcbe125191d1115292a4685b9bdb1b28e8da6625e5a56526e6a86427e7a76724e4a66a29e9a9692aeacc605393d31320e0d20e4d8dcd0d4e8ea00c4f8fcf0f4c8cce6221e1a16122e2d4182bebab6b5898aa165595d5155696d8145797d7175494d61a5999d9195a9a */ /* 0 11c99050d6165797d717569610d091512dd5ac6c0acaab6b2beb8a4a2cecad6d09d188482eeeaf6f2fefae6e08c8894915ed549412d25393d3139252d414559521b9a06026e6a76727e7a66620e0a1611de55c9cba7a5b9bdb1b3afadc1c5d9d79e138f8de1e5f9fdf1f5e9eb87839f925dda46422e2a36323e3a26224e4a565e93170b0b67637f7b77736f6f03071b1b50d4c8cea2a4b8bcb0b6aaacc0c4d8df12968a8ce0e4f8fcf0f4e8ee82869a9cd7534f4f23233f3b37372b2b47435f5d9014080c6064787c7074686c0004181c57d3cfcda1a3bfbbb7b5a9abc7c3dfdc1195898be7e3fffbf7f3efed8185999bd054484c2024383c3034282c4044585 */ /* 0 5884cb0b4b8b18d8468ac5054585c6064498c7074787c4045a8619d999591ada409cd3135393c0005eb21ddd9d5d1ede5c801fdf9f5f1cdc429ec1014181c20268b47bbbfb3be828aa36f53575b576b674a877b7f737f4346af6e92969a9ea2a70ace32363a3f0306e82ed2d6dadee2e6cb0ef2f6fafec2c72aef13171b1f232a4382bebab6b78b8fa6625e5a56526e6f86427e7a76724e4a63a79b9f9397abafc6033f3b37320e0923e7dbdfd3d7ebea03c7fbfff3f7cbcfe6221e1a16122e294481bdb9b5b08c89a5615d5955516d6885417d7975714d4964a09c989490aca8c5003c3834310d0a24e0dcd8d4d0ece904c0fcf8f4f0ccc8e5211d1915112d2 */ /* 0 3ef271b1f131be7efc38bf7f3fff78b832fe7dbdfd3d72b2f03473b3f33374b48a2609c9894966a6e42007c7874760a0e64a65a5e5250aca884c0bcb8b4b0ccc824e01c181410ece8c480fcf8f4f08c88e420dcd8d4d02c2804403c3834304c4fa5679b9f93916d6945077b7f73710d0963a15d595557abaf83c7bbbfb3b7cbc921e11d191515e9e9c585f9fdf1f18d8de521ddd9d5d12d2905413d3935314d4ea4669a9e92906c6844067a7e72700c0862a05c585456aaae82c6babeb2b6cace22e61a1e1216eaeec286fafef2f68a8ee226daded2d62a2e02463a3e32364a49a3619d9995976b6f43017d7975770b0f65a75b5f5351ada985c1bdb9b5b1cdc */ /* 0 10acf31353b390506e922dedad6d2eee6cd02fefaf6f2cecae6221e1a16122e278b42bebab6bf83876aaf53575b5f63674b8f73777b7f4347ab6f93979b9fa3a609c2383c363e0205ea2dd1d5d9dde1e5ca0df1f5f9fdc1c529ed1115191d212c408db1b5b9b4888069a4585c5054686c8044787c7074484c60a4989c9094a8acc0033d393734080b20e4d8dcd0d4e8ec00c4f8fcf0f4c8cce024181c101428294584b8bcb0b18d8ca5615d5955516d6985417d7975714d4965a19d999591adabc7043e3a30330f0c27e3dfdbd7d3efeb07c3fffbf7f3cfcbe7231f1b17132f2a4683bfbbb7b28e8ba6625e5a56526e6a86427e7a76724e4a66a29e9a9692aea */ /* 0 dc704383c30330f0c21e5d9ddd1d5e9eb01c5f9fdf1f5c9cde7231f1b17132f2c4083b9bdb7b4888ba064585c5054686c8044787c7074484c60a4989c9094a8a00ac33f3b3738040b26e2dedad6d2eee6cc02fefaf6f2cecae024181c1014282b4784bebab0b38f8ca7635f5b57536f6b87437f7b77734f4b67a39f9b9793afabc1023e3a3635090a27e3dfdbd7d3efed07c3fffbf7f3cfcbe125191d1115292a4685bfbbb1b28e8da6625e5a56526e6a86427e7a76724e4a66a29e9a9692aeacc205393d31360a0d20e4d8dcd0d4e8ee00c4f8fcf0f4c8cce6221e1a16122e2d4182b8bcb6b5898aa165595d5155696d8145797d7175494d61a5999d9195a9a */ /* 0 7abefd3d7dbdfa3ab874fb3b7bbb34f4b2765191d11136f6b46837f7b77728e8a66225e5a56522e2a06c23e3a3632cecaa6e29e9a9692eeeac102fefaf6f5090ce0a4d8dcd0d4a8ac8044b8bcb0b4484c20621e1a1614686c4184787c7075898d6125595d51552925cd05393d313dc1c5e9a5999d919de1e609cdf1f5f9f20e09e5a1ddd9d5d1adad8141bdb9b5b5494d21631f1b1715696d4085797d7174888c6024585c5054282c00c4383c3034c8cca0e4989c9094e8ecc704f8fcf0f30f0ae6a2dedad6d2aeaa8642bebab6b24e4a2664181c10126e6a47827e7a76738f8b67235f5b57532f2b07c33f3b3733cfcba7e39f9b9793efebc003fffbf7f4080 */ {0x79, 0x41, 0x26}, /* hash=0bc0b652, distance=7920 */ {0x01, 0x27, 0x16}, /* hash=dc8a6e3b, distance=6876 */ {0x3b, 0x14, 0x6a}, /* hash=8babb33c, distance=7508 */ {0x01, 0x41, 0x32}, /* hash=f91756ff, distance=7376 */ {0x25, 0x0b, 0x13}, /* hash=816497ba, distance=7248 */ {0x37, 0x42, 0x2b}, /* hash=bc591a5b, distance=7128 */ {0x15, 0x71, 0x54}, /* hash=d58c4f54, distance=6968 */ {0x0b, 0x76, 0x6c}, /* hash=8ceeb704, distance=6920 */ {0x01, 0x53, 0x6b}, /* hash=212f09ba, distance=7648 */ {0x3b, 0x1e, 0x5d}, /* hash=353f69a3, distance=6800 */ {0x2b, 0x50, 0x73}, /* hash=098591dc, distance=6684 */ {0x3f, 0x5a, 0x36}, /* hash=a5bb61ad, distance=6632 */ {0x17, 0x32, 0x1e}, /* hash=b39c35b9, distance=6572 */ {0x1d, 0x65, 0x51}, /* hash=76e27ee2, distance=6528 */ {0x3d, 0x15, 0x61}, /* hash=c66185db, distance=6488 */ {0x7b, 0x50, 0x5a}, /* hash=e11bc694, distance=6456 */ /* }}} */ }; #ifndef USE_XOR3 /* Initialize byte array from predefined parameters, applying xor + shift transformations. */ static void GenerateData(int xor, int shift, /*@out@*/Byte *output) { int i, j; for(i = 0; i < 9 * 16; i++) { for(j = 0; j < 3; j++) { *output = (Byte)(((sbox_params[i][j] ^ xor) + shift) & 0xff); output++; } } *output = (Byte)0; } #else /* Initialize byte array with 3 independent xor operations */ static void GenerateData(int xor1, int xor2, int xor3, /*@out@*/Byte *output) { int i; for(i = 0; i < 9 * 16; i++) { *output++ = (Byte)(sbox_params[i][0] ^ xor1); *output++ = (Byte)(sbox_params[i][1] ^ xor2); *output++ = (Byte)(sbox_params[i][2] ^ xor3); } *output = (Byte)0; } #endif /* Convert byte data to printable string */ static void ConvertToPrintableString(const Byte *input, /*@out@*/char *output) { int i; char c; for(i = 0; i < 9 * 16 * 3; i++) { c = (char)*input; input++; if( (int)c < 127 ) { if( c == '\n' ) { *output++ = '\\'; *output++ = 'n'; } else if( c == '\t' ) { *output++ = '\\'; *output++ = 't'; } else if( c == '\r' ) { *output++ = '\\'; *output++ = 'r'; } else if( c == '\\' || c == '\"' ) { *output++ = '\\'; *output++ = c; } else if( (int)c < 32 ) { output += snprintf(output, MAX_CHARS_PER_ENCODED_CHAR, "\\%o", (unsigned)c & 0xff); if( (int)*input >= (int)'0' && (int)*input <= (int)'9' ) { *output++ = '\"'; *output++ = '\"'; } } else { *output++ = c; } } else { output += snprintf(output, MAX_CHARS_PER_ENCODED_CHAR, "\\x%02x\"\"", (unsigned)c & 0xff); } } *output = '\0'; } int main(/*@unused@*/int argc, /*@unused@*/char **argv) { Byte data[9 * 16 * 3 + 1]; char printable_data[9 * 16 * 3 * MAX_CHARS_PER_ENCODED_CHAR + 1]; #ifndef USE_XOR3 int xor, shift, length, min_xor, min_shift, min_length; /* Find best parameters */ min_length = 9 * 16 * 3 * MAX_CHARS_PER_ENCODED_CHAR; min_xor = min_shift = 0; for(xor = 0; xor < 256; xor++) { for(shift = 0; shift < 256; shift++) { GenerateData(xor, shift, data); ConvertToPrintableString(data, printable_data); length = (int)strlen(printable_data); if( min_length > length ) { min_xor = xor; min_shift = shift; min_length = length; printf("/* xor=%d shift=%d length=%d */\n", min_xor, min_shift, min_length); } } } GenerateData(min_xor, min_shift, data); #else int xor1, xor2, xor3, length; int min_xor1, min_xor2, min_xor3, min_length; /* Find best parameters */ min_length = 9 * 16 * 3 * MAX_CHARS_PER_ENCODED_CHAR; min_xor1 = min_xor2 = min_xor3 = 0; for(xor1 = 0; xor1 < 128; xor1++) { for(xor2 = 0; xor2 < 128; xor2++) { for(xor3 = 0; xor3 < 128; xor3++) { GenerateData(xor1, xor2, xor3, data); ConvertToPrintableString(data, printable_data); length = (int)strlen(printable_data); if( min_length > length ) { min_length = length; min_xor1 = xor1; min_xor2 = xor2; min_xor3 = xor3; printf("/* xor1=%d xor2=%d xor3=%d length=%d */\n", min_xor1, min_xor2, min_xor3, min_length); } } } } GenerateData(min_xor1, min_xor2, min_xor3, data); #endif /* Output encoded string */ ConvertToPrintableString(data, printable_data); printf("\"%s\"\n", printable_data); return 0; }