-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathRlweConstants.java
166 lines (155 loc) · 21.4 KB
/
RlweConstants.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
/**************************************************************************************************
*
* Precomputed constants for the RLWE Key Exchange.
*
**************************************************************************************************/
package rlwe;
class Constants {
protected static final int N = 1024;
protected static final long N_INV_MULTIPLIER = 7755;
protected static final long OMEGA_INV_MULTIPLIER = 8281;
protected static final int Q = 12289;
protected static final int Q2 = 24578;
protected static final int Q4 = 49156;
protected static final int Q8 = 98312;
protected static final int Q16 = 196624;
protected static final int numRecDataBytes = 256;
protected static final byte FOURIER = 0;
protected static final byte ORDINARY = 1;
protected static final long[] PSI_REV = new long[] {
8193, 493, 6845, 9908, 1378, 10377, 7952, 435, 10146, 1065, 404, 7644, 1207, 3248, 11121, 5277, 2437, 3646, 2987, 6022, 9867, 6250, 10102, 9723, 1002, 7278, 4284, 7201, 875, 3780, 1607, 4976, 8146, 4714, 242, 1537, 3704, 9611, 5019, 545, 5084, 10657, 4885, 11272, 3066, 12262, 3763, 10849, 2912, 5698, 11935, 4861, 7277, 9808, 11244, 2859, 7188, 1067, 2401, 11847, 390, 11516, 8511, 3833, 2780, 7094, 4895, 1484, 2305, 5042, 8236, 2645, 7875, 9442, 2174, 7917, 1689, 3364, 4057, 3271, 10863, 4654, 1777, 10626, 3636, 7351, 9585, 6998, 160, 3149, 4437, 12286, 10123, 3915, 7370, 12176, 4048, 2249, 2884, 1153, 9103, 6882, 2126, 10659, 3510, 5332, 2865, 9919, 9320, 8311, 9603, 9042, 3016, 12046, 9289, 11618, 7098, 3136, 9890, 3400, 2178, 1544, 5559, 420, 8304, 4905, 476, 3531, 9326, 4896, 9923, 3051, 3091, 81, 1000, 4320, 1177, 8034, 9521, 10654, 11563, 7678, 10436, 12149, 3014, 9088, 5086, 1326, 11119, 2319, 11334, 790, 2747, 7443, 3135, 3712, 1062, 9995, 7484, 8736, 9283, 2744, 11726, 2975, 9664, 949, 7468, 9650, 7266, 5828, 6561, 7698, 3328, 6512, 1351, 7311, 8155, 5736, 722, 10984, 4043, 7143, 10810, 1, 8668, 2545, 3504, 8747, 11077, 1646, 9094, 5860, 1759, 8582, 3694, 7110, 8907, 11934, 8058, 9741, 9558, 3932, 5911, 4890, 3637, 8830, 5542, 12144, 5755, 7657, 7901, 11029, 11955, 9863, 10861, 1696, 3284, 2881, 7197, 2089, 9000, 2013, 729, 9048, 11809, 2842, 11267, 9, 6498, 544, 2468, 339, 1381, 2525, 8112, 3584, 6958, 4989, 10616, 8011, 5374, 9452, 12159, 4354, 9893, 7837, 3296, 8340, 7222, 2197, 118, 2476, 5767, 827, 8541, 11336, 3434, 3529, 2908, 12071, 2361, 1843, 3030, 8174, 6147, 9842, 8326, 576, 10335, 10238, 10484, 9407, 11836, 5908, 418, 3772, 7515, 5429, 7552, 10996, 12133, 2767, 3969, 8298, 6413, 10008, 2031, 5333, 10800, 9789, 10706, 5942, 1263, 49, 5915, 10806, 11939, 10777, 1815, 5383, 3202, 4493, 6920, 10232, 1975, 8532, 2925, 347, 4754, 1858, 11863, 8974, 9551, 5868, 9634, 5735, 11566, 12115, 10596, 3009, 6190, 11994, 6523, 652, 3762, 9370, 4016, 4077, 8561, 4049, 5990, 11130, 11143, 948, 325, 1404, 6992, 6119, 8333, 10929, 1200, 5184, 2555, 6122, 1594, 10327, 7183, 5961, 2692, 12121, 4298, 3329, 5919, 4433, 8455, 7032, 1747, 3123, 3054, 6803, 5782, 10723, 9341, 2503, 683, 2459, 3656, 64, 4240, 3570, 835, 6065, 4046, 11580, 10970, 3150, 10331, 4322, 2078, 1112, 4079, 11231, 441, 922, 1050, 4536, 6844, 8429, 2683, 11099, 3818, 6171, 8500, 12142, 6833, 4449, 4749, 6752, 7500, 7822, 8214, 6974, 7965, 7373, 2169, 522, 5079, 3262, 10316, 6715, 1278, 9945, 3514, 11248, 11271, 5925, 468, 3988, 382, 11973, 5339, 6843, 6196, 8579, 2033, 8291, 1922, 3879, 11035, 973, 6854, 10930, 5206, 6760, 3199, 56, 3565, 654, 1702, 10302, 5862, 6153, 5415, 8646, 11889, 10561, 7341, 6152, 7232, 4698, 8844, 4780, 10240, 4912, 1321, 12097, 7048, 2920, 3127, 4169, 11502, 3482, 11279, 5468, 5874, 11612, 6055, 8953, 52, 3174, 10966, 9523, 151, 2127, 3957, 2839, 9784, 6383, 1579, 431, 7507, 5886, 3029, 6695, 4213, 504, 11684, 2302, 8689, 9026, 4624, 6212, 11868, 4080, 6221, 8687, 1003, 8757, 241, 58, 5009, 10333, 885, 6281, 3438, 9445, 11314, 8077, 6608, 3477, 142, 1105, 8841, 343, 4538, 1908, 1208, 4727, 7078, 10423, 10125, 6873, 11573, 10179, 416, 814, 1705, 2450, 8700, 717, 9307, 1373, 8186, 2429, 10568, 10753, 7228, 11071, 438, 8774, 5993, 3278, 4209, 6877, 3449, 1136, 3708, 3238, 2926, 1826, 4489, 3171, 8024, 8611, 1928, 464, 3205, 8930, 7080, 1092, 10900, 10221, 11943, 4404, 9126, 4032, 7449, 6127, 8067, 10763, 125, 540, 8921, 8062, 612, 8051, 12229, 9572, 9089, 10754, 10029, 68, 6453, 7723, 4781, 4924, 1014, 448, 3942, 5232, 1327, 8682, 3744, 7326, 3056, 9761, 5845, 5588, 412, 7187, 3975, 4883, 3087, 6454, 2257, 7784, 5676, 1417, 8400, 11710, 5596, 5987, 9175, 2769, 5966, 212, 6555, 11113, 5508, 11014, 1125, 4860, 10844, 1131, 4267, 6636, 2275, 9828, 5063, 4176, 3765, 1518, 8794, 4564, 10224, 5826, 3534, 3961, 4145, 10533, 506, 11034, 6505, 10897, 2674, 10077, 3338, 9013, 3511, 6811, 11111, 2776, 1165, 2575, 8881, 10347, 377, 4578, 11914, 10669, 10104, 392, 10453, 425, 9489, 193, 2231, 6197, 1038, 11366, 6204, 8122, 2894, 3654, 10975, 10545, 6599, 2455, 11951, 3947, 20, 5002, 5163, 4608, 8946, 8170, 10138, 1522, 8665, 10397, 3344, 5598, 10964, 6565, 11260, 1945, 11041, 9847, 7174, 4939, 2148, 6330, 3959, 5797, 4913, 3528, 8054, 3825, 8914, 9998, 4335, 8896, 9342, 3982, 6680, 11653, 7790, 6617, 1737, 622, 10485, 10886, 6195, 7100, 1687, 406, 12143, 5268, 9389, 12050, 994, 7735, 5464, 7383, 4670, 512, 364, 9929, 3028, 5216, 5518, 1226, 7550, 8038, 7043, 7814, 11053, 3017, 3121, 7584, 2600, 11232, 6780, 12085, 5219, 1409, 9600, 4605, 8151, 12109, 463, 8882, 8308, 10821, 9247, 10945, 9806, 2054, 6203, 6643, 3120, 6105, 8348, 8536, 6919, 8753, 11007, 8717, 9457, 2021, 9060, 4730, 3929, 10583, 3723, 845, 1936, 7, 5054, 3154, 3285, 4360, 3805, 11522, 2213, 4153, 12239, 12073, 5526, 769, 4099, 3944, 5604, 5530, 11024, 9282, 2171, 3480, 7434, 8520, 3232, 11996, 9656, 1406, 2945, 5349, 7207, 4590, 11607, 11309, 5202, 844, 7082, 4050, 8016, 9068, 9694, 8452, 7000, 5662, 567, 2941, 8619, 3808, 4987, 2373, 5135, 63, 7605, 3360, 11839, 10345, 578, 6921, 7628, 510, 5386, 2622, 7806, 5703, 10783, 9224, 11379, 5900, 4719, 11538, 3502, 5789, 10631, 5618, 826, 5043, 3090, 10891, 9951, 7596, 2293, 11872, 6151, 3469, 4443, 8871, 1555, 1802, 5103, 1891, 1223, 2334, 7878, 1590, 881, 365, 1927, 11274, 4510, 9652, 2946, 6828, 1280, 614, 10918, 12265, 7250, 6742, 9804, 11385, 2276, 11307, 2593, 879, 7899, 8071, 3454, 8531, 3795, 9021, 5776, 1849, 7766, 7988, 457, 8, 530, 9663, 7785, 11511, 3578, 7592, 10588, 3466, 8972, 9757, 3332, 139, 2046, 2940, 10808, 9332, 874, 2301, 5650, 12119, 150, 648, 8000, 9982, 9416, 2827, 2434, 11498, 6481, 12268, 9754, 11169, 11823, 11259, 3821, 10608, 2929, 6263, 4649, 6320, 9687, 10388, 502, 5118, 8496, 6226, 10716, 8443, 7624, 6883, 9269, 6616, 8620, 5287, 944, 7519, 6125, 1882, 11249, 10254, 5410, 1251, 1790, 5275, 8449, 10447, 4113, 72, 2828, 4352, 7455, 2712, 11048, 7911, 3451, 4094, 6508, 3045, 11194, 2643, 1783, 7211, 4974, 7724, 9811, 9449, 3019, 4194, 2730, 6878, 10421, 2253, 4518, 9195, 7469, 11129, 9173, 12100, 1763, 2209, 9617, 5170, 865, 1279, 1694, 10759, 8420, 4423, 10555, 3815, 5832, 10939
};
protected static final long[] OMEGA_INV_REV = new long[] {
8193, 11796, 2381, 5444, 11854, 4337, 1912, 10911, 7012, 1168, 9041, 11082, 4645, 11885, 11224, 2143, 7313, 10682, 8509, 11414, 5088, 8005, 5011, 11287, 2566, 2187, 6039, 2422, 6267, 9302, 8643, 9852, 8456, 3778, 773, 11899, 442, 9888, 11222, 5101, 9430, 1045, 2481, 5012, 7428, 354, 6591, 9377, 1440, 8526, 27, 9223, 1017, 7404, 1632, 7205, 11744, 7270, 2678, 8585, 10752, 12047, 7575, 4143, 8758, 11813, 7384, 3985, 11869, 6730, 10745, 10111, 8889, 2399, 9153, 5191, 671, 3000, 243, 9273, 3247, 2686, 3978, 2969, 2370, 9424, 6957, 8779, 1630, 10163, 5407, 3186, 11136, 9405, 10040, 8241, 113, 4919, 8374, 2166, 3, 7852, 9140, 12129, 5291, 2704, 4938, 8653, 1663, 10512, 7635, 1426, 9018, 8232, 8925, 10600, 4372, 10115, 2847, 4414, 9644, 4053, 7247, 9984, 10805, 7394, 5195, 9509, 953, 3748, 11462, 6522, 9813, 12171, 10092, 5067, 3949, 8993, 4452, 2396, 7935, 130, 2837, 6915, 4278, 1673, 7300, 5331, 8705, 4177, 9764, 10908, 11950, 9821, 11745, 5791, 12280, 1022, 9447, 480, 3241, 11560, 10276, 3289, 10200, 5092, 9408, 9005, 10593, 1428, 2426, 334, 1260, 4388, 4632, 6534, 145, 6747, 3459, 8652, 7399, 6378, 8357, 2731, 2548, 4231, 355, 3382, 5179, 8595, 3707, 10530, 6429, 3195, 10643, 1212, 3542, 8785, 9744, 3621, 12288, 1479, 5146, 8246, 1305, 11567, 6553, 4134, 4978, 10938, 5777, 8961, 4591, 5728, 6461, 5023, 2639, 4821, 11340, 2625, 9314, 563, 9545, 3006, 3553, 4805, 2294, 11227, 8577, 9154, 4846, 9542, 11499, 955, 9970, 1170, 10963, 7203, 3201, 9275, 140, 1853, 4611, 726, 1635, 2768, 4255, 11112, 7969, 11289, 12208, 9198, 9238, 2366, 7393, 2963, 11184, 12147, 8812, 5681, 4212, 975, 2844, 8851, 6008, 11404, 1956, 7280, 12231, 12048, 3532, 11286, 3602, 6068, 8209, 421, 6077, 7665, 3263, 3600, 9987, 605, 11785, 8076, 5594, 9260, 6403, 4782, 11858, 10710, 5906, 2505, 9450, 8332, 10162, 12138, 2766, 1323, 9115, 12237, 3336, 6234, 677, 6415, 6821, 1010, 8807, 787, 8120, 9162, 9369, 5241, 192, 10968, 7377, 2049, 7509, 3445, 7591, 5057, 6137, 4948, 1728, 400, 3643, 6874, 6136, 6427, 1987, 10587, 11635, 8724, 12233, 9090, 5529, 7083, 1359, 5435, 11316, 1254, 8410, 10367, 3998, 10256, 3710, 6093, 5446, 6950, 316, 11907, 8301, 11821, 6364, 1018, 1041, 8775, 2344, 11011, 5574, 1973, 9027, 7210, 11767, 10120, 4916, 4324, 5315, 4075, 4467, 4789, 5537, 7540, 7840, 5456, 147, 3789, 6118, 8471, 1190, 9606, 3860, 5445, 7753, 11239, 11367, 11848, 1058, 8210, 11177, 10211, 7967, 1958, 9139, 1319, 709, 8243, 6224, 11454, 8719, 8049, 12225, 8633, 9830, 11606, 9786, 2948, 1566, 6507, 5486, 9235, 9166, 10542, 5257, 3834, 7856, 6370, 8960, 7991, 168, 9597, 6328, 5106, 1962, 10695, 6167, 9734, 7105, 11089, 1360, 3956, 6170, 5297, 10885, 11964, 11341, 1146, 1159, 6299, 8240, 3728, 8212, 8273, 2919, 8527, 11637, 5766, 295, 6099, 9280, 1693, 174, 723, 6554, 2655, 6421, 2738, 3315, 426, 10431, 7535, 11942, 9364, 3757, 10314, 2057, 5369, 7796, 9087, 6906, 10474, 1512, 350, 1483, 6374, 12240, 11026, 6347, 1583, 2500, 1489, 6956, 10258, 2281, 5876, 3991, 8320, 9522, 156, 1293, 4737, 6860, 4774, 8517, 11871, 6381, 453, 2882, 1805, 2051, 1954, 11713, 3963, 2447, 6142, 4115, 9259, 10446, 9928, 218, 9381, 8760, 8855, 1350, 6457, 8474, 1734, 7866, 3869, 1530, 10595, 11010, 11424, 7119, 2672, 10080, 10526, 189, 3116, 1160, 4820, 3094, 7771, 10036, 1868, 5411, 9559, 8095, 9270, 2840, 2478, 4565, 7315, 5078, 10506, 9646, 1095, 9244, 5781, 8195, 8838, 4378, 1241, 9577, 4834, 7937, 9461, 12217, 8176, 1842, 3840, 7014, 10499, 11038, 6879, 2035, 1040, 10407, 6164, 4770, 11345, 7002, 3669, 5673, 3020, 5406, 4665, 3846, 1573, 6063, 3793, 7171, 11787, 1901, 2602, 5969, 7640, 6026, 9360, 1681, 8468, 1030, 466, 1120, 2535, 21, 5808, 791, 9855, 9462, 2873, 2307, 4289, 11641, 12139, 170, 6639, 9988, 11415, 2957, 1481, 9349, 10243, 12150, 8957, 2532, 3317, 8823, 1701, 4697, 8711, 778, 4504, 2626, 11759, 12281, 11832, 4301, 4523, 10440, 6513, 3268, 8494, 3758, 8835, 4218, 4390, 11410, 9696, 982, 10013, 904, 2485, 5547, 5039, 24, 1371, 11675, 11009, 5461, 9343, 2637, 7779, 1015, 10362, 11924, 11408, 10699, 4411, 9955, 11066, 10398, 7186, 10487, 10734, 3418, 7846, 8820, 6138, 417, 9996, 4693, 2338, 1398, 9199, 7246, 11463, 6671, 1658, 6500, 8787, 751, 7570, 6389, 910, 3065, 1506, 6586, 4483, 9667, 6903, 11779, 4661, 5368, 11711, 1944, 450, 8929, 4684, 12226, 7154, 9916, 7302, 8481, 3670, 9348, 11722, 6627, 5289, 3837, 2595, 3221, 4273, 8239, 5207, 11445, 7087, 980, 682, 7699, 5082, 6940, 9344, 10883, 2633, 293, 9057, 3769, 4855, 8809, 10118, 3007, 1265, 6759, 6685, 8345, 8190, 11520, 6763, 216, 50, 8136, 10076, 767, 8484, 7929, 9004, 9135, 7235, 12282, 10353, 11444, 8566, 1706, 8360, 7559, 3229, 10268, 2832, 3572, 1282, 3536, 5370, 3753, 3941, 6184, 9169, 5646, 6086, 10235, 2483, 1344, 3042, 1468, 3981, 3407, 11826, 180, 4138, 7684, 2689, 10880, 7070, 204, 5509, 1057, 9689, 4705, 9168, 9272, 1236, 4475, 5246, 4251, 4739, 11063, 6771, 7073, 9261, 2360, 11925, 11777, 7619, 4906, 6825, 4554, 11295, 239, 2900, 7021, 146, 11883, 10602, 5189, 6094, 1403, 1804, 11667, 10552, 5672, 4499, 636, 5609, 8307, 2947, 3393, 7954, 2291, 3375, 8464, 4235, 8761, 7376, 6492, 8330, 5959, 10141, 7350, 5115, 2442, 1248, 10344, 1029, 5724, 1325, 6691, 8945, 1892, 3624, 10767, 2151, 4119, 3343, 7681, 7126, 7287, 12269, 8342, 338, 9834, 5690, 1744, 1314, 8635, 9395, 4167, 6085, 923, 11251, 6092, 10058, 12096, 2800, 11864, 1836, 11897, 2185, 1620, 375, 7711, 11912, 1942, 3408, 9714, 11124, 9513, 1178, 5478, 8778, 3276, 8951, 2212, 9615, 1392, 5784, 1255, 11783, 1756, 8144, 8328, 8755, 6463, 2065, 7725, 3495, 10771, 8524, 8113, 7226, 2461, 10014, 5653, 8022, 11158, 1445, 7429, 11164, 1275, 6781, 1176, 5734, 12077, 6323, 9520, 3114, 6302, 6693, 579, 3889, 10872, 6613, 4505, 10032, 5835, 9202, 7406, 8314, 5102, 11877, 6701, 6444, 2528, 9233, 4963, 8545, 3607, 10962, 7057, 8347, 11841, 11275, 7365, 7508, 4566, 5836, 12221, 2260, 1535, 3200, 2717, 60, 4238, 11677, 4227, 3368, 11749, 12164, 1526, 4222, 6162, 4840, 8257, 3163, 7885, 346, 2068, 1389, 11197, 5209, 3359, 9084, 11825, 10361, 3678, 4265, 9118, 7800, 10463, 9363, 9051, 8581, 11153, 8840, 5412, 8080, 9011, 6296, 3515, 11851, 1218, 5061, 1536, 1721, 9860, 4103, 10916, 2982, 11572, 3589, 9839, 10584, 11475, 11873, 2110, 716, 5416, 2164, 1866, 5211, 7562, 11081, 10381, 7751, 11946, 3448
};
protected static final long[] A = new long[] {
0x00CA, 0x1F49, 0x2136, 0x0F09, 0x1E9B, 0x1874, 0x092B, 0x06AB,
0x1181, 0x2797, 0x04FA, 0x075C, 0x0599, 0x2E77, 0x0713, 0x1D22,
0x0A04, 0x1950, 0x0292, 0x00AF, 0x14F7, 0x1833, 0x0D20, 0x20B2,
0x2E84, 0x12CF, 0x19B0, 0x08EC, 0x24FA, 0x2E59, 0x15FD, 0x2D67,
0x06D8, 0x183A, 0x0D8A, 0x018F, 0x1022, 0x1FFD, 0x1E22, 0x199E,
0x24E4, 0x0285, 0x2577, 0x001C, 0x0174, 0x1E37, 0x1310, 0x1244,
0x234B, 0x04B2, 0x26CA, 0x1B6E, 0x20CB, 0x173D, 0x156B, 0x2289,
0x13A0, 0x2BAB, 0x190E, 0x2C97, 0x17EE, 0x2F58, 0x24FF, 0x1739,
0x292D, 0x0300, 0x049B, 0x0AE8, 0x1DFD, 0x0227, 0x0954, 0x03E2,
0x2FA2, 0x01FA, 0x2B32, 0x129A, 0x1BFA, 0x0180, 0x2A43, 0x075B,
0x0D41, 0x20CD, 0x00BE, 0x058E, 0x0A34, 0x0B54, 0x2489, 0x256B,
0x1013, 0x1B15, 0x2BDA, 0x1A9F, 0x1470, 0x1AAD, 0x1EDB, 0x1D99,
0x21F2, 0x25A4, 0x0D92, 0x1286, 0x22DD, 0x1F63, 0x0B1F, 0x13E5,
0x1C1B, 0x2745, 0x29BA, 0x2D73, 0x0738, 0x1838, 0x2143, 0x0FA8,
0x2779, 0x2063, 0x13FD, 0x125F, 0x03DA, 0x2014, 0x1584, 0x1B1E,
0x0D02, 0x1F85, 0x0A70, 0x008B, 0x294F, 0x0BCA, 0x255C, 0x121B,
0x12A2, 0x1A15, 0x1802, 0x0938, 0x0140, 0x032B, 0x1B57, 0x0244,
0x1D41, 0x0D2A, 0x17B2, 0x111E, 0x123F, 0x0CE5, 0x15EB, 0x22FF,
0x2103, 0x23AE, 0x144A, 0x130C, 0x27D7, 0x0474, 0x01F7, 0x1933,
0x1132, 0x1184, 0x2F17, 0x235C, 0x026C, 0x2136, 0x268C, 0x03ED,
0x1B15, 0x0A2F, 0x23BC, 0x16D0, 0x26B1, 0x2434, 0x0B8A, 0x093B,
0x1BA2, 0x031B, 0x154A, 0x0A5E, 0x0C56, 0x0F84, 0x1CE1, 0x2D90,
0x035E, 0x2EEF, 0x280A, 0x1407, 0x2D94, 0x07E7, 0x2497, 0x2B24,
0x2CF0, 0x0BAB, 0x0777, 0x0518, 0x11EC, 0x2E25, 0x1B8D, 0x0AA1,
0x13C4, 0x100E, 0x0EF8, 0x2EA7, 0x001F, 0x094A, 0x1EAB, 0x0DA2,
0x2499, 0x0379, 0x258C, 0x0C49, 0x2302, 0x2900, 0x0918, 0x132C,
0x0A38, 0x095A, 0x29BA, 0x1AFB, 0x2BEF, 0x115F, 0x10C2, 0x1053,
0x11C9, 0x067B, 0x2AEB, 0x23FA, 0x1732, 0x0413, 0x2124, 0x0F61,
0x074F, 0x1AF1, 0x165A, 0x06B3, 0x1F2F, 0x0567, 0x0A51, 0x0464,
0x0F08, 0x2B89, 0x0DEC, 0x2E10, 0x2D0C, 0x2868, 0x069C, 0x001F,
0x21AA, 0x1E55, 0x0623, 0x25B9, 0x18B0, 0x0D08, 0x1A79, 0x20FA,
0x1F72, 0x25B8, 0x12EE, 0x10E0, 0x0C26, 0x17AF, 0x26D6, 0x1C7B,
0x065D, 0x04E7, 0x25AA, 0x1364, 0x15AB, 0x11FD, 0x2C7A, 0x1A40,
0x0F46, 0x2E34, 0x25C7, 0x0564, 0x09CC, 0x16AD, 0x015F, 0x0AD3,
0x1F0C, 0x0B43, 0x17E9, 0x1714, 0x0171, 0x1D3B, 0x2E42, 0x10A3,
0x2D17, 0x08DA, 0x1858, 0x13AB, 0x1953, 0x29DA, 0x105C, 0x19DE,
0x13CB, 0x2872, 0x0E52, 0x2650, 0x20DA, 0x22E3, 0x26B5, 0x19CD,
0x1FE9, 0x2BB7, 0x2517, 0x29B0, 0x2F30, 0x2C37, 0x11B3, 0x2903,
0x2D83, 0x2E88, 0x1390, 0x05E7, 0x243C, 0x2C86, 0x1498, 0x1C98,
0x241C, 0x0555, 0x243F, 0x26B5, 0x1653, 0x1778, 0x0175, 0x0972,
0x1CB5, 0x2104, 0x18F9, 0x2493, 0x145C, 0x1A93, 0x1E94, 0x0013,
0x2FD9, 0x0DB0, 0x0116, 0x0239, 0x2DC6, 0x1330, 0x101B, 0x10E3,
0x26AD, 0x1D4E, 0x265A, 0x034E, 0x2809, 0x2251, 0x10CF, 0x0B35,
0x0C10, 0x25B0, 0x1033, 0x059E, 0x15B7, 0x0124, 0x2E19, 0x0BB8,
0x0DD6, 0x255D, 0x2FD2, 0x013E, 0x2D9C, 0x0B88, 0x1AAB, 0x2CD9,
0x0AD5, 0x24A6, 0x01D0, 0x26D9, 0x0BA7, 0x27E0, 0x2D5B, 0x090E,
0x017B, 0x27B2, 0x2E51, 0x2EC0, 0x08F5, 0x1636, 0x0AE0, 0x0628,
0x0826, 0x0DCA, 0x0163, 0x05A9, 0x2A1D, 0x04CE, 0x1635, 0x092A,
0x2401, 0x2D1D, 0x2921, 0x1C6C, 0x2201, 0x2E76, 0x2608, 0x0F7C,
0x1638, 0x0B79, 0x004C, 0x2247, 0x2ADB, 0x0E85, 0x1AD6, 0x0373,
0x016E, 0x01E8, 0x1442, 0x10E1, 0x06C2, 0x1205, 0x1D30, 0x0132,
0x23A8, 0x21C3, 0x23BE, 0x1C30, 0x2795, 0x0E1B, 0x1295, 0x2D49,
0x252A, 0x1739, 0x1B9E, 0x0381, 0x1B63, 0x1632, 0x18D8, 0x23C4,
0x27AD, 0x1C8E, 0x15C0, 0x049D, 0x03D4, 0x1B85, 0x1DA7, 0x2224,
0x2A0A, 0x17CC, 0x2514, 0x12C3, 0x10C1, 0x0EFA, 0x1105, 0x260E,
0x0798, 0x0A55, 0x12AE, 0x1D6B, 0x0A3F, 0x2833, 0x03A1, 0x244A,
0x279C, 0x29E6, 0x0F7B, 0x0479, 0x0225, 0x1B2D, 0x054E, 0x18FA,
0x1FBD, 0x0E71, 0x260D, 0x1D55, 0x2893, 0x2C1F, 0x11FA, 0x2BD9,
0x2546, 0x00D5, 0x1673, 0x11A6, 0x0949, 0x2AB3, 0x09AE, 0x0ACA,
0x26D5, 0x18A0, 0x28C8, 0x0CE4, 0x2C17, 0x19B3, 0x1B8B, 0x2C10,
0x1443, 0x23BE, 0x2F14, 0x0A57, 0x164D, 0x1D02, 0x19C5, 0x067B,
0x28C0, 0x2069, 0x2FA3, 0x0264, 0x004E, 0x0994, 0x2175, 0x02FF,
0x2597, 0x03A7, 0x0585, 0x2271, 0x2FC3, 0x08A0, 0x2F50, 0x1492,
0x1045, 0x259E, 0x01B3, 0x25F9, 0x06C8, 0x1B8D, 0x2DFC, 0x0D60,
0x1571, 0x0209, 0x12D0, 0x289D, 0x198A, 0x234D, 0x1E4E, 0x179F,
0x05BB, 0x1B81, 0x1B17, 0x0376, 0x1AED, 0x12D2, 0x175B, 0x27EB,
0x286B, 0x0C63, 0x1ED9, 0x15F2, 0x15F0, 0x090E, 0x25E1, 0x11A3,
0x19AD, 0x2677, 0x1292, 0x0943, 0x05F4, 0x05CA, 0x19E9, 0x0F7F,
0x109B, 0x02D9, 0x13C9, 0x26BF, 0x2372, 0x16A2, 0x1DC4, 0x0BF6,
0x0F53, 0x1A07, 0x2BB2, 0x26D7, 0x0FF5, 0x067B, 0x0630, 0x02F7,
0x2ECC, 0x1C17, 0x0727, 0x1D54, 0x21B9, 0x2BBC, 0x1DAD, 0x17A6,
0x07C5, 0x268E, 0x1674, 0x0429, 0x0A1D, 0x061D, 0x0CDF, 0x0BB7,
0x1D57, 0x135A, 0x0B32, 0x2D3D, 0x2226, 0x0DF1, 0x082A, 0x27A3,
0x0E2A, 0x1878, 0x2C47, 0x01CA, 0x1EAB, 0x21AE, 0x099C, 0x1199,
0x20F6, 0x2403, 0x0250, 0x077F, 0x09B2, 0x21E0, 0x2685, 0x1EE2,
0x2389, 0x24AA, 0x0B1F, 0x204D, 0x0421, 0x2290, 0x2711, 0x27BF,
0x0A9D, 0x1EE9, 0x07A9, 0x1A32, 0x0CD4, 0x16F2, 0x1B9C, 0x1CBE,
0x29F3, 0x23D0, 0x1954, 0x173C, 0x0270, 0x234C, 0x2A70, 0x284A,
0x0C19, 0x258F, 0x1880, 0x00F1, 0x2BBD, 0x00BC, 0x2557, 0x2DFE,
0x0F1D, 0x0F92, 0x2C40, 0x2D01, 0x22D1, 0x0499, 0x1E04, 0x06B5,
0x2666, 0x261D, 0x1632, 0x29DC, 0x0F35, 0x1FC8, 0x273E, 0x23A0,
0x0D4F, 0x0306, 0x2F99, 0x1E5C, 0x2F92, 0x0FAE, 0x1D70, 0x2F4A,
0x2412, 0x22B3, 0x2931, 0x0BBB, 0x260A, 0x06E9, 0x120A, 0x1998,
0x1243, 0x11EA, 0x1C51, 0x2373, 0x28BF, 0x1135, 0x2BE4, 0x002C,
0x102C, 0x0018, 0x2DEC, 0x1932, 0x2FDE, 0x148A, 0x05F6, 0x08C6,
0x1334, 0x2BEE, 0x2175, 0x2331, 0x1F5A, 0x12BD, 0x023E, 0x16E9,
0x1749, 0x2996, 0x13E0, 0x205D, 0x0231, 0x017B, 0x221A, 0x2084,
0x0235, 0x03F8, 0x0788, 0x183E, 0x052F, 0x2E48, 0x033F, 0x0238,
0x1DB4, 0x2113, 0x0878, 0x14D0, 0x2A27, 0x1201, 0x17B6, 0x28B7,
0x2EE1, 0x175D, 0x2F1A, 0x2748, 0x1DDC, 0x1C00, 0x1ECD, 0x03FD,
0x2037, 0x0947, 0x0322, 0x0AEB, 0x0E31, 0x1DE6, 0x1F06, 0x16CE,
0x22CA, 0x23CE, 0x1303, 0x1BB5, 0x024D, 0x0262, 0x1323, 0x2831,
0x24F2, 0x2621, 0x1195, 0x2471, 0x2073, 0x2099, 0x21A9, 0x04F5,
0x1AC0, 0x0333, 0x08CE, 0x057F, 0x0CCA, 0x2712, 0x2C5D, 0x02ED,
0x2733, 0x007B, 0x1FD1, 0x18B2, 0x24ED, 0x03E8, 0x267E, 0x21BE,
0x2F96, 0x181C, 0x0C19, 0x250A, 0x287F, 0x03B8, 0x1CE8, 0x23A8,
0x22ED, 0x2084, 0x0280, 0x1806, 0x24AD, 0x0619, 0x0443, 0x2DFD,
0x134E, 0x26BD, 0x23C1, 0x0406, 0x0211, 0x1560, 0x2256, 0x02A2,
0x1A33, 0x1DCA, 0x0F7D, 0x1652, 0x1D65, 0x1FA0, 0x1CBC, 0x2AA3,
0x04A9, 0x138D, 0x2473, 0x27E8, 0x1706, 0x10FD, 0x28DF, 0x2B7A,
0x1817, 0x1F09, 0x0E13, 0x2E61, 0x1561, 0x14B7, 0x03D8, 0x0BB3,
0x2B1C, 0x14A9, 0x1852, 0x2673, 0x2617, 0x20BF, 0x1574, 0x046F,
0x106B, 0x02B3, 0x1D51, 0x234F, 0x0C64, 0x1321, 0x182D, 0x150B,
0x0D97, 0x2AD2, 0x1CFC, 0x1681, 0x2C4B, 0x2FB5, 0x0300, 0x17FB,
0x0057, 0x2092, 0x1036, 0x1FC3, 0x08F9, 0x144A, 0x24D1, 0x18A1,
0x273B, 0x1055, 0x10DC, 0x04BC, 0x0D9C, 0x21AF, 0x2688, 0x0C5A,
0x2C99, 0x1525, 0x07B9, 0x12BF, 0x194B, 0x17BC, 0x1185, 0x0476,
0x0FD4, 0x0BAE, 0x091E, 0x1FB8, 0x2E6F, 0x081E, 0x1B3F, 0x293A,
0x017E, 0x026E, 0x0E0A, 0x2BF7, 0x2D3F, 0x0A64, 0x09A8, 0x1745,
0x0B35, 0x1929, 0x2A29, 0x29DF, 0x270E, 0x1EB7, 0x1561, 0x2480,
0x1E6E, 0x1E1A, 0x01E1, 0x203E, 0x1802, 0x078C, 0x04BC, 0x11D3,
0x24F4, 0x195F, 0x0455, 0x21F6, 0x0C09, 0x2138, 0x06BB, 0x111C,
0x0D3D, 0x1C75, 0x2F5E, 0x026C, 0x12A3, 0x2575, 0x15F2, 0x2C76,
0x01A2, 0x05C5, 0x110B, 0x2B6F, 0x02F0, 0x0423, 0x2B60, 0x12DF,
0x0572, 0x2900, 0x2E91, 0x03FF, 0x1319, 0x1C95, 0x06D4, 0x1570,
0x090C, 0x0D15, 0x1327, 0x0491, 0x272E, 0x09FA, 0x1603, 0x2795,
0x1B51, 0x168B, 0x2410, 0x2DE4, 0x2487, 0x2C33, 0x1B31, 0x0851,
0x0357, 0x033A, 0x0FDE, 0x1674, 0x0E95, 0x156F, 0x2CCE, 0x01F2,
0x03BA, 0x154C, 0x1213, 0x19B9, 0x073C, 0x0B80, 0x0CA6, 0x19D0,
0x2B53, 0x21AE, 0x0D69, 0x0FE9, 0x0DDE, 0x0BF2, 0x0628, 0x1113,
0x19B8, 0x04DF, 0x0896, 0x2511, 0x1F01, 0x139E, 0x0D35, 0x258F,
0x12AF, 0x1344, 0x13E7, 0x0C78, 0x1E54, 0x2E3F, 0x0165, 0x0C6B,
0x0A66, 0x17E2, 0x0646, 0x027A, 0x215D, 0x134A, 0x28F0, 0x15E1,
0x21C7, 0x20CF, 0x0E56, 0x060D, 0x03B2, 0x2580, 0x1E0D, 0x2448,
0x1D36, 0x1F69, 0x0C79, 0x16B9, 0x111D, 0x06A3, 0x2DAE, 0x06A2,
0x21EC, 0x12DA, 0x2330, 0x1EB7, 0x01D3, 0x08D5, 0x2833, 0x05F3,
0x2B84, 0x0781, 0x0039, 0x257A, 0x0D8A, 0x2608, 0x2DC6, 0x2D90,
0x0BE1, 0x262D, 0x04AE, 0x06DD, 0x2D28, 0x2108, 0x1E01, 0x1091
};
}