author | Giulio Cesare Solaroli <giulio.cesare@clipperz.com> | 2013-04-21 15:54:15 (UTC) |
---|---|---|
committer | Giulio Cesare Solaroli <giulio.cesare@clipperz.com> | 2013-04-21 15:54:15 (UTC) |
commit | 1906ddfb5d3887edeedaf8e07d14ad89abbd214d (patch) (unidiff) | |
tree | 37df37cfcd6df9931ce92e53ef8d686adc9caa09 /frontend/gamma/js/ClipperzCryptoLibrary/ECC/BinaryField/FiniteField.js | |
parent | 0608e045f6aa471916829468f48082ea07a453f4 (diff) | |
download | clipperz-1906ddfb5d3887edeedaf8e07d14ad89abbd214d.zip clipperz-1906ddfb5d3887edeedaf8e07d14ad89abbd214d.tar.gz clipperz-1906ddfb5d3887edeedaf8e07d14ad89abbd214d.tar.bz2 |
Aborted attempt to factor out the Crypto library on its own module
Diffstat (limited to 'frontend/gamma/js/ClipperzCryptoLibrary/ECC/BinaryField/FiniteField.js') (more/less context) (ignore whitespace changes)
-rw-r--r-- | frontend/gamma/js/ClipperzCryptoLibrary/ECC/BinaryField/FiniteField.js | 521 |
1 files changed, 0 insertions, 521 deletions
diff --git a/frontend/gamma/js/ClipperzCryptoLibrary/ECC/BinaryField/FiniteField.js b/frontend/gamma/js/ClipperzCryptoLibrary/ECC/BinaryField/FiniteField.js deleted file mode 100644 index 4d1ca67..0000000 --- a/frontend/gamma/js/ClipperzCryptoLibrary/ECC/BinaryField/FiniteField.js +++ b/dev/null | |||
@@ -1,521 +0,0 @@ | |||
1 | /* | ||
2 | |||
3 | Copyright 2008-2013 Clipperz Srl | ||
4 | |||
5 | This file is part of Clipperz, the online password manager. | ||
6 | For further information about its features and functionalities please | ||
7 | refer to http://www.clipperz.com. | ||
8 | |||
9 | * Clipperz is free software: you can redistribute it and/or modify it | ||
10 | under the terms of the GNU Affero General Public License as published | ||
11 | by the Free Software Foundation, either version 3 of the License, or | ||
12 | (at your option) any later version. | ||
13 | |||
14 | * Clipperz is distributed in the hope that it will be useful, but | ||
15 | WITHOUT ANY WARRANTY; without even the implied warranty of | ||
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
17 | See the GNU Affero General Public License for more details. | ||
18 | |||
19 | * You should have received a copy of the GNU Affero General Public | ||
20 | License along with Clipperz. If not, see http://www.gnu.org/licenses/. | ||
21 | |||
22 | */ | ||
23 | |||
24 | //try { if (typeof(Clipperz.ByteArray) == 'undefined') { throw ""; }} catch (e) { | ||
25 | //throw "Clipperz.Crypto.ECC depends on Clipperz.ByteArray!"; | ||
26 | //} | ||
27 | if (typeof(Clipperz.Crypto.ECC) == 'undefined') { Clipperz.Crypto.ECC = {}; } | ||
28 | if (typeof(Clipperz.Crypto.ECC.BinaryField) == 'undefined') { Clipperz.Crypto.ECC.BinaryField = {}; } | ||
29 | |||
30 | Clipperz.Crypto.ECC.BinaryField.FiniteField = function(args) { | ||
31 | args = args || {}; | ||
32 | this._modulus = args.modulus; | ||
33 | |||
34 | return this; | ||
35 | } | ||
36 | |||
37 | Clipperz.Crypto.ECC.BinaryField.FiniteField.prototype = MochiKit.Base.update(null, { | ||
38 | |||
39 | 'asString': function() { | ||
40 | return "Clipperz.Crypto.ECC.BinaryField.FiniteField (" + this.modulus().asString() + ")"; | ||
41 | }, | ||
42 | |||
43 | //----------------------------------------------------------------------------- | ||
44 | |||
45 | 'modulus': function() { | ||
46 | return this._modulus; | ||
47 | }, | ||
48 | |||
49 | //----------------------------------------------------------------------------- | ||
50 | |||
51 | '_module': function(aValue) { | ||
52 | varresult; | ||
53 | var modulusComparison; | ||
54 | //console.log(">>> binaryField.finiteField.(standard)module"); | ||
55 | |||
56 | modulusComparison = Clipperz.Crypto.ECC.BinaryField.Value._compare(aValue, this.modulus()._value); | ||
57 | |||
58 | if (modulusComparison < 0) { | ||
59 | result = aValue; | ||
60 | } else if (modulusComparison == 0) { | ||
61 | result = [0]; | ||
62 | } else { | ||
63 | var modulusBitSize; | ||
64 | var resultBitSize; | ||
65 | |||
66 | result = aValue; | ||
67 | |||
68 | modulusBitSize = this.modulus().bitSize(); | ||
69 | resultBitSize = Clipperz.Crypto.ECC.BinaryField.Value._bitSize(result); | ||
70 | while (resultBitSize >= modulusBitSize) { | ||
71 | Clipperz.Crypto.ECC.BinaryField.Value._overwriteXor(result, Clipperz.Crypto.ECC.BinaryField.Value._shiftLeft(this.modulus()._value, resultBitSize - modulusBitSize)); | ||
72 | resultBitSize = Clipperz.Crypto.ECC.BinaryField.Value._bitSize(result); | ||
73 | } | ||
74 | } | ||
75 | //console.log("<<< binaryField.finiteField.(standard)module"); | ||
76 | |||
77 | return result; | ||
78 | }, | ||
79 | |||
80 | 'module': function(aValue) { | ||
81 | return new Clipperz.Crypto.ECC.BinaryField.Value(this._module(aValue._value.slice(0))); | ||
82 | }, | ||
83 | |||
84 | //----------------------------------------------------------------------------- | ||
85 | |||
86 | '_add': function(a, b) { | ||
87 | return Clipperz.Crypto.ECC.BinaryField.Value._xor(a, b); | ||
88 | }, | ||
89 | |||
90 | '_overwriteAdd': function(a, b) { | ||
91 | Clipperz.Crypto.ECC.BinaryField.Value._overwriteXor(a, b); | ||
92 | }, | ||
93 | |||
94 | 'add': function(a, b) { | ||
95 | return new Clipperz.Crypto.ECC.BinaryField.Value(this._add(a._value, b._value)); | ||
96 | }, | ||
97 | |||
98 | //----------------------------------------------------------------------------- | ||
99 | |||
100 | 'negate': function(aValue) { | ||
101 | return aValue.clone(); | ||
102 | }, | ||
103 | |||
104 | //----------------------------------------------------------------------------- | ||
105 | |||
106 | '_multiply': function(a, b) { | ||
107 | var result; | ||
108 | var valueToXor; | ||
109 | var i,c; | ||
110 | |||
111 | result = [0]; | ||
112 | valueToXor = b; | ||
113 | c = Clipperz.Crypto.ECC.BinaryField.Value._bitSize(a); | ||
114 | for (i=0; i<c; i++) { | ||
115 | if (Clipperz.Crypto.ECC.BinaryField.Value._isBitSet(a, i) === true) { | ||
116 | Clipperz.Crypto.ECC.BinaryField.Value._overwriteXor(result, valueToXor); | ||
117 | } | ||
118 | valueToXor = Clipperz.Crypto.ECC.BinaryField.Value._overwriteShiftLeft(valueToXor, 1); | ||
119 | } | ||
120 | result = this._module(result); | ||
121 | |||
122 | return result; | ||
123 | }, | ||
124 | |||
125 | 'multiply': function(a, b) { | ||
126 | return new Clipperz.Crypto.ECC.BinaryField.Value(this._multiply(a._value, b._value)); | ||
127 | }, | ||
128 | |||
129 | //----------------------------------------------------------------------------- | ||
130 | |||
131 | '_fastMultiply': function(a, b) { | ||
132 | var result; | ||
133 | var B; | ||
134 | var i,c; | ||
135 | |||
136 | result = [0]; | ||
137 | B = b.slice(0); //Is this array copy avoidable? | ||
138 | c = 32; | ||
139 | for (i=0; i<c; i++) { | ||
140 | var ii, cc; | ||
141 | |||
142 | cc = a.length; | ||
143 | for (ii=0; ii<cc; ii++) { | ||
144 | if (((a[ii] >>> i) & 0x01) == 1) { | ||
145 | Clipperz.Crypto.ECC.BinaryField.Value._overwriteXor(result, B, ii); | ||
146 | } | ||
147 | } | ||
148 | |||
149 | if (i < (c-1)) { | ||
150 | B = Clipperz.Crypto.ECC.BinaryField.Value._overwriteShiftLeft(B, 1); | ||
151 | } | ||
152 | } | ||
153 | result = this._module(result); | ||
154 | |||
155 | return result; | ||
156 | }, | ||
157 | |||
158 | 'fastMultiply': function(a, b) { | ||
159 | return new Clipperz.Crypto.ECC.BinaryField.Value(this._fastMultiply(a._value, b._value)); | ||
160 | }, | ||
161 | |||
162 | //----------------------------------------------------------------------------- | ||
163 | // | ||
164 | //Guide to Elliptic Curve Cryptography | ||
165 | //Darrel Hankerson, Alfred Menezes, Scott Vanstone | ||
166 | //- Pag: 49, Alorithm 2.34 | ||
167 | // | ||
168 | //----------------------------------------------------------------------------- | ||
169 | |||
170 | '_square': function(aValue) { | ||
171 | var result; | ||
172 | var value; | ||
173 | var c,i; | ||
174 | var precomputedValues; | ||
175 | |||
176 | value = aValue; | ||
177 | result = new Array(value.length * 2); | ||
178 | precomputedValues = Clipperz.Crypto.ECC.BinaryField.FiniteField.squarePrecomputedBytes; | ||
179 | |||
180 | c = value.length; | ||
181 | for (i=0; i<c; i++) { | ||
182 | result[i*2] = precomputedValues[(value[i] & 0x000000ff)]; | ||
183 | result[i*2] |= ((precomputedValues[(value[i] & 0x0000ff00) >>> 8]) << 16); | ||
184 | |||
185 | result[i*2 + 1] = precomputedValues[(value[i] & 0x00ff0000) >>> 16]; | ||
186 | result[i*2 + 1] |= ((precomputedValues[(value[i] & 0xff000000) >>> 24]) << 16); | ||
187 | } | ||
188 | |||
189 | return this._module(result); | ||
190 | }, | ||
191 | |||
192 | 'square': function(aValue) { | ||
193 | return new Clipperz.Crypto.ECC.BinaryField.Value(this._square(aValue._value)); | ||
194 | }, | ||
195 | |||
196 | //----------------------------------------------------------------------------- | ||
197 | |||
198 | '_inverse': function(aValue) { | ||
199 | varresult; | ||
200 | var b, c; | ||
201 | var u, v; | ||
202 | |||
203 | // b = Clipperz.Crypto.ECC.BinaryField.Value.I._value; | ||
204 | b = [1]; | ||
205 | // c = Clipperz.Crypto.ECC.BinaryField.Value.O._value; | ||
206 | c = [0]; | ||
207 | u = this._module(aValue); | ||
208 | v = this.modulus()._value.slice(0); | ||
209 | |||
210 | while (Clipperz.Crypto.ECC.BinaryField.Value._bitSize(u) > 1) { | ||
211 | varbitDifferenceSize; | ||
212 | |||
213 | bitDifferenceSize = Clipperz.Crypto.ECC.BinaryField.Value._bitSize(u) - Clipperz.Crypto.ECC.BinaryField.Value._bitSize(v); | ||
214 | if (bitDifferenceSize < 0) { | ||
215 | var swap; | ||
216 | |||
217 | swap = u; | ||
218 | u = v; | ||
219 | v = swap; | ||
220 | |||
221 | swap = c; | ||
222 | c = b; | ||
223 | b = swap; | ||
224 | |||
225 | bitDifferenceSize = -bitDifferenceSize; | ||
226 | } | ||
227 | |||
228 | u = this._add(u, Clipperz.Crypto.ECC.BinaryField.Value._shiftLeft(v, bitDifferenceSize)); | ||
229 | b = this._add(b, Clipperz.Crypto.ECC.BinaryField.Value._shiftLeft(c, bitDifferenceSize)); | ||
230 | // this._overwriteAdd(u, Clipperz.Crypto.ECC.BinaryField.Value._shiftLeft(v, bitDifferenceSize)); | ||
231 | // this._overwriteAdd(b, Clipperz.Crypto.ECC.BinaryField.Value._shiftLeft(c, bitDifferenceSize)); | ||
232 | } | ||
233 | |||
234 | result = this._module(b); | ||
235 | |||
236 | return result; | ||
237 | }, | ||
238 | |||
239 | 'inverse': function(aValue) { | ||
240 | return new Clipperz.Crypto.ECC.BinaryField.Value(this._inverse(aValue._value)); | ||
241 | }, | ||
242 | |||
243 | //----------------------------------------------------------------------------- | ||
244 | __syntaxFix__: "syntax fix" | ||
245 | }); | ||
246 | |||
247 | |||
248 | Clipperz.Crypto.ECC.BinaryField.FiniteField.squarePrecomputedBytes = [ | ||
249 | 0x0000, // 0 = 0000 0000 -> 0000 0000 0000 0000 | ||
250 | 0x0001, // 1 = 0000 0001 -> 0000 0000 0000 0001 | ||
251 | 0x0004, // 2 = 0000 0010 -> 0000 0000 0000 0100 | ||
252 | 0x0005, // 3 = 0000 0011 -> 0000 0000 0000 0101 | ||
253 | 0x0010, // 4 = 0000 0100 -> 0000 0000 0001 0000 | ||
254 | 0x0011, // 5 = 0000 0101 -> 0000 0000 0001 0001 | ||
255 | 0x0014, // 6 = 0000 0110 -> 0000 0000 0001 0100 | ||
256 | 0x0015, // 7 = 0000 0111 -> 0000 0000 0001 0101 | ||
257 | 0x0040, // 8 = 0000 1000 -> 0000 0000 0100 0000 | ||
258 | 0x0041, // 9 = 0000 1001 -> 0000 0000 0100 0001 | ||
259 | 0x0044, // 10 = 0000 1010 -> 0000 0000 0100 0100 | ||
260 | 0x0045, // 11 = 0000 1011 -> 0000 0000 0100 0101 | ||
261 | 0x0050, // 12 = 0000 1100 -> 0000 0000 0101 0000 | ||
262 | 0x0051, // 13 = 0000 1101 -> 0000 0000 0101 0001 | ||
263 | 0x0054, // 14 = 0000 1110 -> 0000 0000 0101 0100 | ||
264 | 0x0055, // 15 = 0000 1111 -> 0000 0000 0101 0101 | ||
265 | |||
266 | 0x0100, // 16 = 0001 0000 -> 0000 0001 0000 0000 | ||
267 | 0x0101, // 17 = 0001 0001 -> 0000 0001 0000 0001 | ||
268 | 0x0104, // 18 = 0001 0010 -> 0000 0001 0000 0100 | ||
269 | 0x0105, // 19 = 0001 0011 -> 0000 0001 0000 0101 | ||
270 | 0x0110, // 20 = 0001 0100 -> 0000 0001 0001 0000 | ||
271 | 0x0111, // 21 = 0001 0101 -> 0000 0001 0001 0001 | ||
272 | 0x0114, // 22 = 0001 0110 -> 0000 0001 0001 0100 | ||
273 | 0x0115, // 23 = 0001 0111 -> 0000 0001 0001 0101 | ||
274 | 0x0140, // 24 = 0001 1000 -> 0000 0001 0100 0000 | ||
275 | 0x0141, // 25 = 0001 1001 -> 0000 0001 0100 0001 | ||
276 | 0x0144, // 26 = 0001 1010 -> 0000 0001 0100 0100 | ||
277 | 0x0145, // 27 = 0001 1011 -> 0000 0001 0100 0101 | ||
278 | 0x0150, // 28 = 0001 1100 -> 0000 0001 0101 0000 | ||
279 | 0x0151, // 28 = 0001 1101 -> 0000 0001 0101 0001 | ||
280 | 0x0154, // 30 = 0001 1110 -> 0000 0001 0101 0100 | ||
281 | 0x0155, // 31 = 0001 1111 -> 0000 0001 0101 0101 | ||
282 | |||
283 | 0x0400, // 32 = 0010 0000 -> 0000 0100 0000 0000 | ||
284 | 0x0401, // 33 = 0010 0001 -> 0000 0100 0000 0001 | ||
285 | 0x0404, // 34 = 0010 0010 -> 0000 0100 0000 0100 | ||
286 | 0x0405, // 35 = 0010 0011 -> 0000 0100 0000 0101 | ||
287 | 0x0410, // 36 = 0010 0100 -> 0000 0100 0001 0000 | ||
288 | 0x0411, // 37 = 0010 0101 -> 0000 0100 0001 0001 | ||
289 | 0x0414, // 38 = 0010 0110 -> 0000 0100 0001 0100 | ||
290 | 0x0415, // 39 = 0010 0111 -> 0000 0100 0001 0101 | ||
291 | 0x0440, // 40 = 0010 1000 -> 0000 0100 0100 0000 | ||
292 | 0x0441, // 41 = 0010 1001 -> 0000 0100 0100 0001 | ||
293 | 0x0444, // 42 = 0010 1010 -> 0000 0100 0100 0100 | ||
294 | 0x0445, // 43 = 0010 1011 -> 0000 0100 0100 0101 | ||
295 | 0x0450, // 44 = 0010 1100 -> 0000 0100 0101 0000 | ||
296 | 0x0451, // 45 = 0010 1101 -> 0000 0100 0101 0001 | ||
297 | 0x0454, // 46 = 0010 1110 -> 0000 0100 0101 0100 | ||
298 | 0x0455, // 47 = 0010 1111 -> 0000 0100 0101 0101 | ||
299 | |||
300 | 0x0500, // 48 = 0011 0000 -> 0000 0101 0000 0000 | ||
301 | 0x0501, // 49 = 0011 0001 -> 0000 0101 0000 0001 | ||
302 | 0x0504, // 50 = 0011 0010 -> 0000 0101 0000 0100 | ||
303 | 0x0505, // 51 = 0011 0011 -> 0000 0101 0000 0101 | ||
304 | 0x0510, // 52 = 0011 0100 -> 0000 0101 0001 0000 | ||
305 | 0x0511, // 53 = 0011 0101 -> 0000 0101 0001 0001 | ||
306 | 0x0514, // 54 = 0011 0110 -> 0000 0101 0001 0100 | ||
307 | 0x0515, // 55 = 0011 0111 -> 0000 0101 0001 0101 | ||
308 | 0x0540, // 56 = 0011 1000 -> 0000 0101 0100 0000 | ||
309 | 0x0541, // 57 = 0011 1001 -> 0000 0101 0100 0001 | ||
310 | 0x0544, // 58 = 0011 1010 -> 0000 0101 0100 0100 | ||
311 | 0x0545, // 59 = 0011 1011 -> 0000 0101 0100 0101 | ||
312 | 0x0550, // 60 = 0011 1100 -> 0000 0101 0101 0000 | ||
313 | 0x0551, // 61 = 0011 1101 -> 0000 0101 0101 0001 | ||
314 | 0x0554, // 62 = 0011 1110 -> 0000 0101 0101 0100 | ||
315 | 0x0555, // 63 = 0011 1111 -> 0000 0101 0101 0101 | ||
316 | |||
317 | 0x1000, // 64 = 0100 0000 -> 0001 0000 0000 0000 | ||
318 | 0x1001, // 65 = 0100 0001 -> 0001 0000 0000 0001 | ||
319 | 0x1004, // 66 = 0100 0010 -> 0001 0000 0000 0100 | ||
320 | 0x1005, // 67 = 0100 0011 -> 0001 0000 0000 0101 | ||
321 | 0x1010, // 68 = 0100 0100 -> 0001 0000 0001 0000 | ||
322 | 0x1011, // 69 = 0100 0101 -> 0001 0000 0001 0001 | ||
323 | 0x1014, // 70 = 0100 0110 -> 0001 0000 0001 0100 | ||
324 | 0x1015, // 71 = 0100 0111 -> 0001 0000 0001 0101 | ||
325 | 0x1040, // 72 = 0100 1000 -> 0001 0000 0100 0000 | ||
326 | 0x1041, // 73 = 0100 1001 -> 0001 0000 0100 0001 | ||
327 | 0x1044, // 74 = 0100 1010 -> 0001 0000 0100 0100 | ||
328 | 0x1045, // 75 = 0100 1011 -> 0001 0000 0100 0101 | ||
329 | 0x1050, // 76 = 0100 1100 -> 0001 0000 0101 0000 | ||
330 | 0x1051, // 77 = 0100 1101 -> 0001 0000 0101 0001 | ||
331 | 0x1054, // 78 = 0100 1110 -> 0001 0000 0101 0100 | ||
332 | 0x1055, // 79 = 0100 1111 -> 0001 0000 0101 0101 | ||
333 | |||
334 | 0x1100, // 80 = 0101 0000 -> 0001 0001 0000 0000 | ||
335 | 0x1101, // 81 = 0101 0001 -> 0001 0001 0000 0001 | ||
336 | 0x1104, // 82 = 0101 0010 -> 0001 0001 0000 0100 | ||
337 | 0x1105, // 83 = 0101 0011 -> 0001 0001 0000 0101 | ||
338 | 0x1110, // 84 = 0101 0100 -> 0001 0001 0001 0000 | ||
339 | 0x1111, // 85 = 0101 0101 -> 0001 0001 0001 0001 | ||
340 | 0x1114, // 86 = 0101 0110 -> 0001 0001 0001 0100 | ||
341 | 0x1115, // 87 = 0101 0111 -> 0001 0001 0001 0101 | ||
342 | 0x1140, // 88 = 0101 1000 -> 0001 0001 0100 0000 | ||
343 | 0x1141, // 89 = 0101 1001 -> 0001 0001 0100 0001 | ||
344 | 0x1144, // 90 = 0101 1010 -> 0001 0001 0100 0100 | ||
345 | 0x1145, // 91 = 0101 1011 -> 0001 0001 0100 0101 | ||
346 | 0x1150, // 92 = 0101 1100 -> 0001 0001 0101 0000 | ||
347 | 0x1151, // 93 = 0101 1101 -> 0001 0001 0101 0001 | ||
348 | 0x1154, // 94 = 0101 1110 -> 0001 0001 0101 0100 | ||
349 | 0x1155, // 95 = 0101 1111 -> 0001 0001 0101 0101 | ||
350 | |||
351 | 0x1400, // 96 = 0110 0000 -> 0001 0100 0000 0000 | ||
352 | 0x1401, // 97 = 0110 0001 -> 0001 0100 0000 0001 | ||
353 | 0x1404, // 98 = 0110 0010 -> 0001 0100 0000 0100 | ||
354 | 0x1405, // 99 = 0110 0011 -> 0001 0100 0000 0101 | ||
355 | 0x1410, //100 = 0110 0100 -> 0001 0100 0001 0000 | ||
356 | 0x1411, //101 = 0110 0101 -> 0001 0100 0001 0001 | ||
357 | 0x1414, //102 = 0110 0110 -> 0001 0100 0001 0100 | ||
358 | 0x1415, //103 = 0110 0111 -> 0001 0100 0001 0101 | ||
359 | 0x1440, //104 = 0110 1000 -> 0001 0100 0100 0000 | ||
360 | 0x1441, //105 = 0110 1001 -> 0001 0100 0100 0001 | ||
361 | 0x1444, //106 = 0110 1010 -> 0001 0100 0100 0100 | ||
362 | 0x1445, //107 = 0110 1011 -> 0001 0100 0100 0101 | ||
363 | 0x1450, //108 = 0110 1100 -> 0001 0100 0101 0000 | ||
364 | 0x1451, //109 = 0110 1101 -> 0001 0100 0101 0001 | ||
365 | 0x1454, //110 = 0110 1110 -> 0001 0100 0101 0100 | ||
366 | 0x1455, //111 = 0110 1111 -> 0001 0100 0101 0101 | ||
367 | |||
368 | 0x1500, //112 = 0111 0000 -> 0001 0101 0000 0000 | ||
369 | 0x1501, //113 = 0111 0001 -> 0001 0101 0000 0001 | ||
370 | 0x1504, //114 = 0111 0010 -> 0001 0101 0000 0100 | ||
371 | 0x1505, //115 = 0111 0011 -> 0001 0101 0000 0101 | ||
372 | 0x1510, //116 = 0111 0100 -> 0001 0101 0001 0000 | ||
373 | 0x1511, //117 = 0111 0101 -> 0001 0101 0001 0001 | ||
374 | 0x1514, //118 = 0111 0110 -> 0001 0101 0001 0100 | ||
375 | 0x1515, //119 = 0111 0111 -> 0001 0101 0001 0101 | ||
376 | 0x1540, //120 = 0111 1000 -> 0001 0101 0100 0000 | ||
377 | 0x1541, //121 = 0111 1001 -> 0001 0101 0100 0001 | ||
378 | 0x1544, //122 = 0111 1010 -> 0001 0101 0100 0100 | ||
379 | 0x1545, //123 = 0111 1011 -> 0001 0101 0100 0101 | ||
380 | 0x1550, //124 = 0111 1100 -> 0001 0101 0101 0000 | ||
381 | 0x1551, //125 = 0111 1101 -> 0001 0101 0101 0001 | ||
382 | 0x1554, //126 = 0111 1110 -> 0001 0101 0101 0100 | ||
383 | 0x1555, //127 = 0111 1111 -> 0001 0101 0101 0101 | ||
384 | |||
385 | 0x4000, //128 = 1000 0000 -> 0100 0000 0000 0000 | ||
386 | 0x4001, //129 = 1000 0001 -> 0100 0000 0000 0001 | ||
387 | 0x4004, //130 = 1000 0010 -> 0100 0000 0000 0100 | ||
388 | 0x4005, //131 = 1000 0011 -> 0100 0000 0000 0101 | ||
389 | 0x4010, //132 = 1000 0100 -> 0100 0000 0001 0000 | ||
390 | 0x4011, //133 = 1000 0101 -> 0100 0000 0001 0001 | ||
391 | 0x4014, //134 = 1000 0110 -> 0100 0000 0001 0100 | ||
392 | 0x4015, //135 = 1000 0111 -> 0100 0000 0001 0101 | ||
393 | 0x4040, //136 = 1000 1000 -> 0100 0000 0100 0000 | ||
394 | 0x4041, //137 = 1000 1001 -> 0100 0000 0100 0001 | ||
395 | 0x4044, //138 = 1000 1010 -> 0100 0000 0100 0100 | ||
396 | 0x4045, //139 = 1000 1011 -> 0100 0000 0100 0101 | ||
397 | 0x4050, //140 = 1000 1100 -> 0100 0000 0101 0000 | ||
398 | 0x4051, //141 = 1000 1101 -> 0100 0000 0101 0001 | ||
399 | 0x4054, //142 = 1000 1110 -> 0100 0000 0101 0100 | ||
400 | 0x4055, //143 = 1000 1111 -> 0100 0000 0101 0101 | ||
401 | |||
402 | 0x4100, //144 = 1001 0000 -> 0100 0001 0000 0000 | ||
403 | 0x4101, //145 = 1001 0001 -> 0100 0001 0000 0001 | ||
404 | 0x4104, //146 = 1001 0010 -> 0100 0001 0000 0100 | ||
405 | 0x4105, //147 = 1001 0011 -> 0100 0001 0000 0101 | ||
406 | 0x4110, //148 = 1001 0100 -> 0100 0001 0001 0000 | ||
407 | 0x4111, //149 = 1001 0101 -> 0100 0001 0001 0001 | ||
408 | 0x4114, //150 = 1001 0110 -> 0100 0001 0001 0100 | ||
409 | 0x4115, //151 = 1001 0111 -> 0100 0001 0001 0101 | ||
410 | 0x4140, //152 = 1001 1000 -> 0100 0001 0100 0000 | ||
411 | 0x4141, //153 = 1001 1001 -> 0100 0001 0100 0001 | ||
412 | 0x4144, //154 = 1001 1010 -> 0100 0001 0100 0100 | ||
413 | 0x4145, //155 = 1001 1011 -> 0100 0001 0100 0101 | ||
414 | 0x4150, //156 = 1001 1100 -> 0100 0001 0101 0000 | ||
415 | 0x4151, //157 = 1001 1101 -> 0100 0001 0101 0001 | ||
416 | 0x4154, //158 = 1001 1110 -> 0100 0001 0101 0100 | ||
417 | 0x4155, //159 = 1001 1111 -> 0100 0001 0101 0101 | ||
418 | |||
419 | 0x4400, //160 = 1010 0000 -> 0100 0100 0000 0000 | ||
420 | 0x4401, //161 = 1010 0001 -> 0100 0100 0000 0001 | ||
421 | 0x4404, //162 = 1010 0010 -> 0100 0100 0000 0100 | ||
422 | 0x4405, //163 = 1010 0011 -> 0100 0100 0000 0101 | ||
423 | 0x4410, //164 = 1010 0100 -> 0100 0100 0001 0000 | ||
424 | 0x4411, //165 = 1010 0101 -> 0100 0100 0001 0001 | ||
425 | 0x4414, //166 = 1010 0110 -> 0100 0100 0001 0100 | ||
426 | 0x4415, //167 = 1010 0111 -> 0100 0100 0001 0101 | ||
427 | 0x4440, //168 = 1010 1000 -> 0100 0100 0100 0000 | ||
428 | 0x4441, //169 = 1010 1001 -> 0100 0100 0100 0001 | ||
429 | 0x4444, //170 = 1010 1010 -> 0100 0100 0100 0100 | ||
430 | 0x4445, //171 = 1010 1011 -> 0100 0100 0100 0101 | ||
431 | 0x4450, //172 = 1010 1100 -> 0100 0100 0101 0000 | ||
432 | 0x4451, //173 = 1010 1101 -> 0100 0100 0101 0001 | ||
433 | 0x4454, //174 = 1010 1110 -> 0100 0100 0101 0100 | ||
434 | 0x4455, //175 = 1010 1111 -> 0100 0100 0101 0101 | ||
435 | |||
436 | 0x4500, //176 = 1011 0000 -> 0100 0101 0000 0000 | ||
437 | 0x4501, //177 = 1011 0001 -> 0100 0101 0000 0001 | ||
438 | 0x4504, //178 = 1011 0010 -> 0100 0101 0000 0100 | ||
439 | 0x4505, //179 = 1011 0011 -> 0100 0101 0000 0101 | ||
440 | 0x4510, //180 = 1011 0100 -> 0100 0101 0001 0000 | ||
441 | 0x4511, //181 = 1011 0101 -> 0100 0101 0001 0001 | ||
442 | 0x4514, //182 = 1011 0110 -> 0100 0101 0001 0100 | ||
443 | 0x4515, //183 = 1011 0111 -> 0100 0101 0001 0101 | ||
444 | 0x4540, //184 = 1011 1000 -> 0100 0101 0100 0000 | ||
445 | 0x4541, //185 = 1011 1001 -> 0100 0101 0100 0001 | ||
446 | 0x4544, //186 = 1011 1010 -> 0100 0101 0100 0100 | ||
447 | 0x4545, //187 = 1011 1011 -> 0100 0101 0100 0101 | ||
448 | 0x4550, //188 = 1011 1100 -> 0100 0101 0101 0000 | ||
449 | 0x4551, //189 = 1011 1101 -> 0100 0101 0101 0001 | ||
450 | 0x4554, //190 = 1011 1110 -> 0100 0101 0101 0100 | ||
451 | 0x4555, //191 = 1011 1111 -> 0100 0101 0101 0101 | ||
452 | |||
453 | 0x5000, //192 = 1100 0000 -> 0101 0000 0000 0000 | ||
454 | 0x5001, //193 = 1100 0001 -> 0101 0000 0000 0001 | ||
455 | 0x5004, //194 = 1100 0010 -> 0101 0000 0000 0100 | ||
456 | 0x5005, //195 = 1100 0011 -> 0101 0000 0000 0101 | ||
457 | 0x5010, //196 = 1100 0100 -> 0101 0000 0001 0000 | ||
458 | 0x5011, //197 = 1100 0101 -> 0101 0000 0001 0001 | ||
459 | 0x5014, //198 = 1100 0110 -> 0101 0000 0001 0100 | ||
460 | 0x5015, //199 = 1100 0111 -> 0101 0000 0001 0101 | ||
461 | 0x5040, //200 = 1100 1000 -> 0101 0000 0100 0000 | ||
462 | 0x5041, //201 = 1100 1001 -> 0101 0000 0100 0001 | ||
463 | 0x5044, //202 = 1100 1010 -> 0101 0000 0100 0100 | ||
464 | 0x5045, //203 = 1100 1011 -> 0101 0000 0100 0101 | ||
465 | 0x5050, //204 = 1100 1100 -> 0101 0000 0101 0000 | ||
466 | 0x5051, //205 = 1100 1101 -> 0101 0000 0101 0001 | ||
467 | 0x5054, //206 = 1100 1110 -> 0101 0000 0101 0100 | ||
468 | 0x5055, //207 = 1100 1111 -> 0101 0000 0101 0101 | ||
469 | |||
470 | 0x5100, //208 = 1101 0000 -> 0101 0001 0000 0000 | ||
471 | 0x5101, //209 = 1101 0001 -> 0101 0001 0000 0001 | ||
472 | 0x5104, //210 = 1101 0010 -> 0101 0001 0000 0100 | ||
473 | 0x5105, //211 = 1101 0011 -> 0101 0001 0000 0101 | ||
474 | 0x5110, //212 = 1101 0100 -> 0101 0001 0001 0000 | ||
475 | 0x5111, //213 = 1101 0101 -> 0101 0001 0001 0001 | ||
476 | 0x5114, //214 = 1101 0110 -> 0101 0001 0001 0100 | ||
477 | 0x5115, //215 = 1101 0111 -> 0101 0001 0001 0101 | ||
478 | 0x5140, //216 = 1101 1000 -> 0101 0001 0100 0000 | ||
479 | 0x5141, //217 = 1101 1001 -> 0101 0001 0100 0001 | ||
480 | 0x5144, //218 = 1101 1010 -> 0101 0001 0100 0100 | ||
481 | 0x5145, //219 = 1101 1011 -> 0101 0001 0100 0101 | ||
482 | 0x5150, //220 = 1101 1100 -> 0101 0001 0101 0000 | ||
483 | 0x5151, //221 = 1101 1101 -> 0101 0001 0101 0001 | ||
484 | 0x5154, //222 = 1101 1110 -> 0101 0001 0101 0100 | ||
485 | 0x5155, //223 = 1101 1111 -> 0101 0001 0101 0101 | ||
486 | |||
487 | 0x5400, //224 = 1110 0000 -> 0101 0100 0000 0000 | ||
488 | 0x5401, //225 = 1110 0001 -> 0101 0100 0000 0001 | ||
489 | 0x5404, //226 = 1110 0010 -> 0101 0100 0000 0100 | ||
490 | 0x5405, //227 = 1110 0011 -> 0101 0100 0000 0101 | ||
491 | 0x5410, //228 = 1110 0100 -> 0101 0100 0001 0000 | ||
492 | 0x5411, //229 = 1110 0101 -> 0101 0100 0001 0001 | ||
493 | 0x5414, //230 = 1110 0110 -> 0101 0100 0001 0100 | ||
494 | 0x5415, //231 = 1110 0111 -> 0101 0100 0001 0101 | ||
495 | 0x5440, //232 = 1110 1000 -> 0101 0100 0100 0000 | ||
496 | 0x5441, //233 = 1110 1001 -> 0101 0100 0100 0001 | ||
497 | 0x5444, //234 = 1110 1010 -> 0101 0100 0100 0100 | ||
498 | 0x5445, //235 = 1110 1011 -> 0101 0100 0100 0101 | ||
499 | 0x5450, //236 = 1110 1100 -> 0101 0100 0101 0000 | ||
500 | 0x5451, //237 = 1110 1101 -> 0101 0100 0101 0001 | ||
501 | 0x5454, //238 = 1110 1110 -> 0101 0100 0101 0100 | ||
502 | 0x5455, //239 = 1110 1111 -> 0101 0100 0101 0101 | ||
503 | |||
504 | 0x5500, //240 = 1111 0000 -> 0101 0101 0000 0000 | ||
505 | 0x5501, //241 = 1111 0001 -> 0101 0101 0000 0001 | ||
506 | 0x5504, //242 = 1111 0010 -> 0101 0101 0000 0100 | ||
507 | 0x5505, //243 = 1111 0011 -> 0101 0101 0000 0101 | ||
508 | 0x5510, //244 = 1111 0100 -> 0101 0101 0001 0000 | ||
509 | 0x5511, //245 = 1111 0101 -> 0101 0101 0001 0001 | ||
510 | 0x5514, //246 = 1111 0110 -> 0101 0101 0001 0100 | ||
511 | 0x5515, //247 = 1111 0111 -> 0101 0101 0001 0101 | ||
512 | 0x5540, //248 = 1111 1000 -> 0101 0101 0100 0000 | ||
513 | 0x5541, //249 = 1111 1001 -> 0101 0101 0100 0001 | ||
514 | 0x5544, //250 = 1111 1010 -> 0101 0101 0100 0100 | ||
515 | 0x5545, //251 = 1111 1011 -> 0101 0101 0100 0101 | ||
516 | 0x5550, //252 = 1111 1100 -> 0101 0101 0101 0000 | ||
517 | 0x5551, //253 = 1111 1101 -> 0101 0101 0101 0001 | ||
518 | 0x5554, //254 = 1111 1110 -> 0101 0101 0101 0100 | ||
519 | 0x5555 //255 = 1111 1111 -> 0101 0101 0101 0101 | ||
520 | |||
521 | ] | ||