29c0ba3014bdb7042222d2fcdd05ff95f5cd10f3
[zxing.git] / core / src / com / google / zxing / pdf417 / decoder / BitMatrixParser.java
1 /*\r
2  * Copyright 2009 ZXing authors\r
3  *\r
4  * Licensed under the Apache License, Version 2.0 (the "License");\r
5  * you may not use this file except in compliance with the License.\r
6  * You may obtain a copy of the License at\r
7  *\r
8  *      http://www.apache.org/licenses/LICENSE-2.0\r
9  *\r
10  * Unless required by applicable law or agreed to in writing, software\r
11  * distributed under the License is distributed on an "AS IS" BASIS,\r
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  * See the License for the specific language governing permissions and\r
14  * limitations under the License.\r
15  */\r
16 \r
17 package com.google.zxing.pdf417.decoder;\r
18 \r
19 import com.google.zxing.FormatException;\r
20 import com.google.zxing.NotFoundException;\r
21 import com.google.zxing.common.BitMatrix;\r
22 \r
23 /**\r
24  * <p>\r
25  * This class parses the BitMatrix image into codewords.\r
26  * </p>\r
27  *\r
28  * @author SITA Lab (kevin.osullivan@sita.aero)\r
29  */\r
30 final class BitMatrixParser {\r
31 \r
32   private static final int MAX_ROW_DIFFERENCE = 6;\r
33   private static final int MAX_ROWS = 90;\r
34   //private static final int MAX_COLUMNS = 30;\r
35   // Maximum Codewords (Data + Error)\r
36   private static final int MAX_CW_CAPACITY = 929;\r
37   private static final int MODULES_IN_SYMBOL = 17;\r
38 \r
39   private final BitMatrix bitMatrix;\r
40   private int rows = 0;\r
41   //private int columns = 0;\r
42 \r
43   private int leftColumnECData = 0;\r
44   private int rightColumnECData = 0;\r
45   private int eraseCount = 0;\r
46   private int[] erasures = null;\r
47   private int ecLevel = -1;\r
48 \r
49   BitMatrixParser(BitMatrix bitMatrix) {\r
50     this.bitMatrix = bitMatrix;\r
51   }\r
52 \r
53   /**\r
54    * To ensure separability of rows, codewords of consecutive rows belong to\r
55    * different subsets of all possible codewords. This routine scans the\r
56    * symbols in the barcode. When it finds a number of consecutive rows which\r
57    * are the same, it assumes that this is a row of codewords and processes\r
58    * them into a codeword array.\r
59    *\r
60    * @return an array of codewords.\r
61    */\r
62   int[] readCodewords() throws FormatException {\r
63     int width = bitMatrix.getWidth();\r
64     // TODO should be a rectangular matrix\r
65     int height = width;\r
66 \r
67     erasures = new int[MAX_CW_CAPACITY];\r
68 \r
69     // Get the number of pixels in a module across the X dimension\r
70     //float moduleWidth = bitMatrix.getModuleWidth();\r
71     float moduleWidth = 1.0f; // Image has been sampled and reduced\r
72 \r
73     int[] rowCounters = new int[width];\r
74     int[] codewords = new int[MAX_CW_CAPACITY];\r
75     int next = 0;\r
76     int matchingConsecutiveScans = 0;\r
77     boolean rowInProgress = false;\r
78     int rowNumber = 0;\r
79     int rowHeight = 0;\r
80     for (int i = 1; i < height; i++) {\r
81       if (rowNumber >= MAX_ROWS) {\r
82         // Something is wrong, since we have exceeded\r
83         // the maximum rows in the specification.\r
84         // TODO Maybe return error code\r
85         return null;\r
86       }\r
87       int rowDifference = 0;\r
88       // Scan a line of modules and check the\r
89       // difference between this and the previous line\r
90       for (int j = 0; j < width; j++) {\r
91         // Accumulate differences between this line and the\r
92         // previous line.\r
93         if (bitMatrix.get(j, i) != bitMatrix.get(j, i - 1)) {\r
94           rowDifference++;\r
95         }\r
96       }\r
97       if (rowDifference <= moduleWidth * MAX_ROW_DIFFERENCE) {\r
98         for (int j = 0; j < width; j++) {\r
99           // Accumulate the black pixels on this line\r
100           if (bitMatrix.get(j, i)) {\r
101             rowCounters[j]++;\r
102           }\r
103         }\r
104         // Increment the number of consecutive rows of pixels\r
105         // that are more or less the same\r
106         matchingConsecutiveScans++;\r
107         // Height of a row is a multiple of the module size in pixels\r
108         // Usually at least 3 times the module size\r
109         if (matchingConsecutiveScans >= moduleWidth * 2) { // MGMG\r
110           // We have some previous matches as well as a match here\r
111           // Set processing a unique row.\r
112           rowInProgress = true;\r
113         }\r
114       } else {\r
115         if (rowInProgress) {\r
116           // Process Row\r
117           next = processRow(rowCounters, rowNumber, rowHeight, codewords, next);\r
118           if (next == -1) {\r
119             // Something is wrong, since we have exceeded\r
120             // the maximum columns in the specification.\r
121             // TODO Maybe return error code\r
122             return null;\r
123           }\r
124           // Reinitialize the row counters.\r
125           for (int j = 0; j < rowCounters.length; j++) {\r
126             rowCounters[j] = 0;\r
127           }\r
128           rowNumber++;\r
129           rowHeight = 0;\r
130         }\r
131         matchingConsecutiveScans = 0;\r
132         rowInProgress = false;\r
133       }\r
134       rowHeight++;\r
135     }\r
136     // Check for a row that was in progress before we exited above.\r
137     if (rowInProgress) {\r
138       // Process Row\r
139       if (rowNumber >= MAX_ROWS) {\r
140         // Something is wrong, since we have exceeded\r
141         // the maximum rows in the specification.\r
142         // TODO Maybe return error code\r
143         return null;\r
144       }\r
145       next = processRow(rowCounters, rowNumber, rowHeight, codewords, next);\r
146       rowNumber++;\r
147       rows = rowNumber;\r
148     }\r
149     erasures = trimArray(erasures, eraseCount);\r
150     return trimArray(codewords, next);\r
151   }\r
152 \r
153   /**\r
154    * Trim the array to the required size.\r
155    *\r
156    * @param array the array\r
157    * @param size  the size to trim it to\r
158    * @return the new trimmed array\r
159    */\r
160   private static int[] trimArray(int[] array, int size) {\r
161     if (size > 0) {\r
162       int[] a = new int[size];\r
163       for (int i = 0; i < size; i++) {\r
164         a[i] = array[i];\r
165       }\r
166       return a;\r
167     } else {\r
168       return null;\r
169     }\r
170   }\r
171 \r
172   /**\r
173    * Convert the symbols in the row to codewords.\r
174    * Each PDF417 symbol character consists of four bar elements and four space\r
175    * elements, each of which can be one to six modules wide. The four bar and\r
176    * four space elements shall measure 17 modules in total.\r
177    *\r
178    * @param rowCounters an array containing the counts of black pixels for each column\r
179    *                    in the row.\r
180    * @param rowNumber   the current row number of codewords.\r
181    * @param rowHeight   the height of this row in pixels.\r
182    * @param codewords   the codeword array to save codewords into.\r
183    * @param next        the next available index into the codewords array.\r
184    * @return the next available index into the codeword array after processing\r
185    *         this row.\r
186    */\r
187   int processRow(int[] rowCounters, int rowNumber, int rowHeight, int[] codewords, int next)\r
188       throws FormatException {\r
189     int width = bitMatrix.getWidth();\r
190     int columnNumber = 0;\r
191     long symbol = 0;\r
192     for (int i = 0; i < width; i += MODULES_IN_SYMBOL) {\r
193       // This happens in real life and is almost surely a rare misdecode\r
194       if (i + MODULES_IN_SYMBOL > rowCounters.length) {\r
195         throw FormatException.getFormatInstance();\r
196       }\r
197       for (int mask = MODULES_IN_SYMBOL - 1; mask >= 0; mask--) {\r
198         if (rowCounters[i + (MODULES_IN_SYMBOL - 1 - mask)] >= rowHeight >>> 1) {\r
199           symbol |= 1L << mask;\r
200         }\r
201       }\r
202       if (columnNumber > 0) {\r
203         int cw = getCodeword(symbol);\r
204         // if (debug) System.out.println(" " + Long.toBinaryString(symbol) +\r
205         // " cw=" +cw + " ColumnNumber=" +columnNumber + "i=" +i);\r
206         if (cw < 0 && i < width - MODULES_IN_SYMBOL) {\r
207           // Skip errors on the Right row indicator column\r
208           erasures[eraseCount] = next;\r
209           next++;\r
210           eraseCount++;\r
211         } else {\r
212           codewords[next++] = cw;\r
213         }\r
214       } else {\r
215         // Left row indicator column\r
216         int cw = getCodeword(symbol);\r
217         // if (debug) System.out.println(" " + Long.toBinaryString(symbol) +\r
218         // " cw=" +cw + " ColumnNumber=" +columnNumber + "i=" +i);\r
219         if (ecLevel < 0) {\r
220           switch (rowNumber % 3) {\r
221             case 0:\r
222               break;\r
223             case 1:\r
224               leftColumnECData = cw;\r
225               break;\r
226             case 2:\r
227               break;\r
228           }\r
229         }\r
230       }\r
231       symbol = 0;\r
232       //columns = columnNumber;\r
233       columnNumber++;\r
234     }\r
235     if (columnNumber > 1) {\r
236       // Right row indicator column is in codeword[next]\r
237       //columns--;\r
238       // Overwrite the last codeword i.e. Right Row Indicator\r
239       --next;\r
240       if (ecLevel < 0) {\r
241         switch (rowNumber % 3) {\r
242           case 0:\r
243             break;\r
244           case 1:\r
245             break;\r
246           case 2:\r
247             rightColumnECData = codewords[next];\r
248             if (rightColumnECData == leftColumnECData\r
249                 && leftColumnECData != 0) {\r
250               ecLevel = ((rightColumnECData % 30) - rows % 3) / 3;\r
251             }\r
252             break;\r
253         }\r
254       }\r
255       codewords[next] = 0;\r
256     }\r
257     return next;\r
258   }\r
259 \r
260   /**\r
261    * Build a symbol from the pixels.\r
262    * Each symbol character is defined by an 8-digit bar-space sequence which\r
263    * represents the module widths of the eight elements of that symbol\r
264    * character.\r
265    *\r
266    * @param counters  array of pixel counter corresponding to each Bar/Space pattern.\r
267    * @return the symbol\r
268    */\r
269   /*\r
270   private static long getSymbol(int[] counters, float moduleWidth) {\r
271     int pixelsInSymbol = 0;\r
272     for (int j = 0; j < counters.length; j++) {\r
273       pixelsInSymbol += counters[j];\r
274     }\r
275     float avgModuleWidth = (pixelsInSymbol / 17.0f);\r
276     boolean toggle = true;\r
277     int shift = 0;\r
278     int symbol = 0;\r
279     for (int j = 0; j < counters.length; j++) {\r
280       if (counters[j] < moduleWidth && counters[j] > 0) {\r
281         // Give a very narrow bar/space a chance\r
282         counters[j] = (int) moduleWidth;\r
283       }\r
284       // Calculate number of modules in the symbol.\r
285       // int modules = (int)(counters[j]/moduleWidth);\r
286       // int modules = round(counters[j]/moduleWidth);\r
287       int modules = round(counters[j] / avgModuleWidth);\r
288       if (modules > 6) {\r
289         // Maximum size is 6 modules\r
290         modules = 6;\r
291       } else if (modules < 1) {\r
292         modules = 1;\r
293       }\r
294       if (toggle) {\r
295         for (int k = 0; k < modules; k++) {\r
296           symbol |= 1 << (16 - k - shift);\r
297         }\r
298         toggle = false;\r
299       } else {\r
300         toggle = true;\r
301       }\r
302       shift += modules;\r
303     }\r
304     return symbol;\r
305   }\r
306    */\r
307 \r
308   /**\r
309    * Translate the symbol into a codeword.\r
310    *\r
311    * @param symbol\r
312    * @return the codeword corresponding to the symbol.\r
313    */\r
314   private static int getCodeword(long symbol) {\r
315     long sym = symbol;\r
316     sym &= 0x3ffff;\r
317     int i = findCodewordIndex(sym);\r
318     if (i == -1) {\r
319       return -1;\r
320     } else {\r
321       long cw = CODEWORD_TABLE[i] - 1;\r
322       cw %= 929;\r
323       return (int) cw;\r
324     }\r
325   }\r
326 \r
327   /**\r
328    * Use a binary search to find the index of the codeword corresponding to\r
329    * this symbol.\r
330    *\r
331    * @param symbol the symbol from the barcode.\r
332    * @return the index into the codeword table.\r
333    */\r
334   private static int findCodewordIndex(long symbol) {\r
335     int first = 0;\r
336     int upto = SYMBOL_TABLE.length;\r
337     while (first < upto) {\r
338       int mid = (first + upto) >>> 1; // Compute mid point.\r
339       if (symbol < SYMBOL_TABLE[mid]) {\r
340         upto = mid; // repeat search in bottom half.\r
341       } else if (symbol > SYMBOL_TABLE[mid]) {\r
342         first = mid + 1; // Repeat search in top half.\r
343       } else {\r
344         return mid; // Found it. return position\r
345       }\r
346     }\r
347     return -1;\r
348     // if (debug) System.out.println("Failed to find codeword for Symbol=" +\r
349     // symbol);\r
350   }\r
351 \r
352   /**\r
353    * Ends up being a bit faster than Math.round(). This merely rounds its\r
354    * argument to the nearest int, where x.5 rounds up.\r
355    */\r
356   /*\r
357   private static int round(float d) {\r
358     return (int) (d + 0.5f);\r
359   }\r
360    */\r
361 \r
362   /**\r
363    * Returns an array of locations representing the erasures.\r
364    */\r
365   public int[] getErasures() {\r
366     return erasures;\r
367   }\r
368 \r
369   public int getECLevel() {\r
370     return ecLevel;\r
371   }\r
372 \r
373   /**\r
374    * Convert the symbols in the row to codewords.\r
375    * Each PDF417 symbol character consists of four bar elements and four space\r
376    * elements, each of which can be one to six modules wide. The four bar and\r
377    * four space elements shall measure 17 modules in total.\r
378    *\r
379    * @param rowCounters an array containing the counts of black pixels for each column\r
380    *                    in the row.\r
381    * @param rowNumber   the current row number of codewords.\r
382    * @param rowHeight   the height of this row in pixels.\r
383    * @param moduleWidth the size of a module in pixels.\r
384    * @param codewords   the codeword array to save codewords into.\r
385    * @param next        the next available index into the codewords array.\r
386    * @return the next available index into the codeword array after processing\r
387    *         this row.\r
388    * @throws NotFoundException\r
389    */\r
390   /*\r
391   int processRow1(int[] rowCounters, int rowNumber, int rowHeight,\r
392                   float moduleWidth, int[] codewords, int next) {\r
393     int width = bitMatrix.getDimension();\r
394     int firstBlack = 0;\r
395 \r
396     for (firstBlack = 0; firstBlack < width; firstBlack++) {\r
397       // Step forward until we find the first black pixels\r
398       if (rowCounters[firstBlack] >= rowHeight >>> 1) {\r
399         break;\r
400       }\r
401     }\r
402 \r
403     int[] counters = new int[8];\r
404     int state = 0; // In black pixels, looking for white, first or second time\r
405     long symbol = 0;\r
406     int columnNumber = 0;\r
407     for (int i = firstBlack; i < width; i++) {\r
408       if (state == 1 || state == 3 || state == 5 || state == 7) { // In white\r
409         // pixels,\r
410         // looking\r
411         // for\r
412         // black\r
413         // If more than half the column is black\r
414         if (rowCounters[i] >= rowHeight >>> 1 || i == width - 1) {\r
415           if (i == width - 1) {\r
416             counters[state]++;\r
417           }\r
418           // In black pixels or the end of a row\r
419           state++;\r
420           if (state < 8) {\r
421             // Don't count the last one\r
422             counters[state]++;\r
423           }\r
424         } else {\r
425           counters[state]++;\r
426         }\r
427       } else {\r
428         if (rowCounters[i] < rowHeight >>> 1) {\r
429           // Found white pixels\r
430           state++;\r
431           if (state == 7 && i == width - 1) {\r
432             // Its found white pixels at the end of the row,\r
433             // give it a chance to exit gracefully\r
434             i--;\r
435           } else {\r
436             // Found white pixels\r
437             counters[state]++;\r
438           }\r
439         } else {\r
440           if (state < 8) {\r
441             // Still in black pixels\r
442             counters[state]++;\r
443           }\r
444         }\r
445       }\r
446       if (state == 8) { // Found black, white, black, white, black, white,\r
447         // black, white and stumbled back onto black; done\r
448         if (columnNumber >= MAX_COLUMNS) {\r
449           // Something is wrong, since we have exceeded\r
450           // the maximum columns in the specification.\r
451           // TODO Maybe return error code\r
452           return -1;\r
453         }\r
454         if (columnNumber > 0) {\r
455           symbol = getSymbol(counters, moduleWidth);\r
456           int cw = getCodeword(symbol);\r
457           // if (debug) System.out.println(" " +\r
458           // Long.toBinaryString(symbol) + " cw=" +cw + " ColumnNumber="\r
459           // +columnNumber + "i=" +i);\r
460           if (cw < 0) {\r
461             erasures[eraseCount] = next;\r
462             next++;\r
463             eraseCount++;\r
464           } else {\r
465             codewords[next++] = cw;\r
466           }\r
467         } else {\r
468           // Left row indicator column\r
469           symbol = getSymbol(counters, moduleWidth);\r
470           int cw = getCodeword(symbol);\r
471           if (ecLevel < 0) {\r
472             switch (rowNumber % 3) {\r
473               case 0:\r
474                 break;\r
475               case 1:\r
476                 leftColumnECData = cw;\r
477                 break;\r
478               case 2:\r
479                 break;\r
480             }\r
481           }\r
482         }\r
483         // Step back so that this pixel can be examined during the next\r
484         // pass.\r
485         i--;\r
486         counters = new int[8];\r
487         columns = columnNumber;\r
488         columnNumber++;\r
489         // Introduce some errors if (rowNumber == 0 && columnNumber == 4)\r
490         // { codewords[next-1] = 0; erasures[eraseCount] = next-1;\r
491         // eraseCount++; } if (rowNumber == 0 && columnNumber == 6) {\r
492         // codewords[next-1] = 10; erasures[eraseCount] = next-1;\r
493         // eraseCount++; } if (rowNumber == 0 && columnNumber == 8) {\r
494         // codewords[next-1] = 10; erasures[eraseCount] = next-1;\r
495         // eraseCount++; }\r
496         state = 0;\r
497         symbol = 0;\r
498       }\r
499     }\r
500     if (columnNumber > 1) {\r
501       // Right row indicator column is in codeword[next]\r
502       columns--;\r
503       // Overwrite the last codeword i.e. Right Row Indicator\r
504       --next;\r
505       if (ecLevel < 0) {\r
506         switch (rowNumber % 3) {\r
507           case 0:\r
508             break;\r
509           case 1:\r
510             break;\r
511           case 2:\r
512             rightColumnECData = codewords[next];\r
513             if (rightColumnECData == leftColumnECData\r
514                 && leftColumnECData != 0) {\r
515               ecLevel = ((rightColumnECData % 30) - rows % 3) / 3;\r
516             }\r
517             break;\r
518         }\r
519       }\r
520       codewords[next] = 0;\r
521     }\r
522     return next;\r
523   }\r
524    */\r
525 \r
526   /**\r
527    * The sorted table of all possible symbols. Extracted from the PDF417\r
528    * specification. The index of a symbol in this table corresponds to the\r
529    * index into the codeword table.\r
530    */\r
531   private static final int[] SYMBOL_TABLE = {0x1025e, 0x1027a, 0x1029e,\r
532       0x102bc, 0x102f2, 0x102f4, 0x1032e, 0x1034e, 0x1035c, 0x10396,\r
533       0x103a6, 0x103ac, 0x10422, 0x10428, 0x10436, 0x10442, 0x10444,\r
534       0x10448, 0x10450, 0x1045e, 0x10466, 0x1046c, 0x1047a, 0x10482,\r
535       0x1049e, 0x104a0, 0x104bc, 0x104c6, 0x104d8, 0x104ee, 0x104f2,\r
536       0x104f4, 0x10504, 0x10508, 0x10510, 0x1051e, 0x10520, 0x1053c,\r
537       0x10540, 0x10578, 0x10586, 0x1058c, 0x10598, 0x105b0, 0x105be,\r
538       0x105ce, 0x105dc, 0x105e2, 0x105e4, 0x105e8, 0x105f6, 0x1062e,\r
539       0x1064e, 0x1065c, 0x1068e, 0x1069c, 0x106b8, 0x106de, 0x106fa,\r
540       0x10716, 0x10726, 0x1072c, 0x10746, 0x1074c, 0x10758, 0x1076e,\r
541       0x10792, 0x10794, 0x107a2, 0x107a4, 0x107a8, 0x107b6, 0x10822,\r
542       0x10828, 0x10842, 0x10848, 0x10850, 0x1085e, 0x10866, 0x1086c,\r
543       0x1087a, 0x10882, 0x10884, 0x10890, 0x1089e, 0x108a0, 0x108bc,\r
544       0x108c6, 0x108cc, 0x108d8, 0x108ee, 0x108f2, 0x108f4, 0x10902,\r
545       0x10908, 0x1091e, 0x10920, 0x1093c, 0x10940, 0x10978, 0x10986,\r
546       0x10998, 0x109b0, 0x109be, 0x109ce, 0x109dc, 0x109e2, 0x109e4,\r
547       0x109e8, 0x109f6, 0x10a08, 0x10a10, 0x10a1e, 0x10a20, 0x10a3c,\r
548       0x10a40, 0x10a78, 0x10af0, 0x10b06, 0x10b0c, 0x10b18, 0x10b30,\r
549       0x10b3e, 0x10b60, 0x10b7c, 0x10b8e, 0x10b9c, 0x10bb8, 0x10bc2,\r
550       0x10bc4, 0x10bc8, 0x10bd0, 0x10bde, 0x10be6, 0x10bec, 0x10c2e,\r
551       0x10c4e, 0x10c5c, 0x10c62, 0x10c64, 0x10c68, 0x10c76, 0x10c8e,\r
552       0x10c9c, 0x10cb8, 0x10cc2, 0x10cc4, 0x10cc8, 0x10cd0, 0x10cde,\r
553       0x10ce6, 0x10cec, 0x10cfa, 0x10d0e, 0x10d1c, 0x10d38, 0x10d70,\r
554       0x10d7e, 0x10d82, 0x10d84, 0x10d88, 0x10d90, 0x10d9e, 0x10da0,\r
555       0x10dbc, 0x10dc6, 0x10dcc, 0x10dd8, 0x10dee, 0x10df2, 0x10df4,\r
556       0x10e16, 0x10e26, 0x10e2c, 0x10e46, 0x10e58, 0x10e6e, 0x10e86,\r
557       0x10e8c, 0x10e98, 0x10eb0, 0x10ebe, 0x10ece, 0x10edc, 0x10f0a,\r
558       0x10f12, 0x10f14, 0x10f22, 0x10f28, 0x10f36, 0x10f42, 0x10f44,\r
559       0x10f48, 0x10f50, 0x10f5e, 0x10f66, 0x10f6c, 0x10fb2, 0x10fb4,\r
560       0x11022, 0x11028, 0x11042, 0x11048, 0x11050, 0x1105e, 0x1107a,\r
561       0x11082, 0x11084, 0x11090, 0x1109e, 0x110a0, 0x110bc, 0x110c6,\r
562       0x110cc, 0x110d8, 0x110ee, 0x110f2, 0x110f4, 0x11102, 0x1111e,\r
563       0x11120, 0x1113c, 0x11140, 0x11178, 0x11186, 0x11198, 0x111b0,\r
564       0x111be, 0x111ce, 0x111dc, 0x111e2, 0x111e4, 0x111e8, 0x111f6,\r
565       0x11208, 0x1121e, 0x11220, 0x11278, 0x112f0, 0x1130c, 0x11330,\r
566       0x1133e, 0x11360, 0x1137c, 0x1138e, 0x1139c, 0x113b8, 0x113c2,\r
567       0x113c8, 0x113d0, 0x113de, 0x113e6, 0x113ec, 0x11408, 0x11410,\r
568       0x1141e, 0x11420, 0x1143c, 0x11440, 0x11478, 0x114f0, 0x115e0,\r
569       0x1160c, 0x11618, 0x11630, 0x1163e, 0x11660, 0x1167c, 0x116c0,\r
570       0x116f8, 0x1171c, 0x11738, 0x11770, 0x1177e, 0x11782, 0x11784,\r
571       0x11788, 0x11790, 0x1179e, 0x117a0, 0x117bc, 0x117c6, 0x117cc,\r
572       0x117d8, 0x117ee, 0x1182e, 0x11834, 0x1184e, 0x1185c, 0x11862,\r
573       0x11864, 0x11868, 0x11876, 0x1188e, 0x1189c, 0x118b8, 0x118c2,\r
574       0x118c8, 0x118d0, 0x118de, 0x118e6, 0x118ec, 0x118fa, 0x1190e,\r
575       0x1191c, 0x11938, 0x11970, 0x1197e, 0x11982, 0x11984, 0x11990,\r
576       0x1199e, 0x119a0, 0x119bc, 0x119c6, 0x119cc, 0x119d8, 0x119ee,\r
577       0x119f2, 0x119f4, 0x11a0e, 0x11a1c, 0x11a38, 0x11a70, 0x11a7e,\r
578       0x11ae0, 0x11afc, 0x11b08, 0x11b10, 0x11b1e, 0x11b20, 0x11b3c,\r
579       0x11b40, 0x11b78, 0x11b8c, 0x11b98, 0x11bb0, 0x11bbe, 0x11bce,\r
580       0x11bdc, 0x11be2, 0x11be4, 0x11be8, 0x11bf6, 0x11c16, 0x11c26,\r
581       0x11c2c, 0x11c46, 0x11c4c, 0x11c58, 0x11c6e, 0x11c86, 0x11c98,\r
582       0x11cb0, 0x11cbe, 0x11cce, 0x11cdc, 0x11ce2, 0x11ce4, 0x11ce8,\r
583       0x11cf6, 0x11d06, 0x11d0c, 0x11d18, 0x11d30, 0x11d3e, 0x11d60,\r
584       0x11d7c, 0x11d8e, 0x11d9c, 0x11db8, 0x11dc4, 0x11dc8, 0x11dd0,\r
585       0x11dde, 0x11de6, 0x11dec, 0x11dfa, 0x11e0a, 0x11e12, 0x11e14,\r
586       0x11e22, 0x11e24, 0x11e28, 0x11e36, 0x11e42, 0x11e44, 0x11e50,\r
587       0x11e5e, 0x11e66, 0x11e6c, 0x11e82, 0x11e84, 0x11e88, 0x11e90,\r
588       0x11e9e, 0x11ea0, 0x11ebc, 0x11ec6, 0x11ecc, 0x11ed8, 0x11eee,\r
589       0x11f1a, 0x11f2e, 0x11f32, 0x11f34, 0x11f4e, 0x11f5c, 0x11f62,\r
590       0x11f64, 0x11f68, 0x11f76, 0x12048, 0x1205e, 0x12082, 0x12084,\r
591       0x12090, 0x1209e, 0x120a0, 0x120bc, 0x120d8, 0x120f2, 0x120f4,\r
592       0x12108, 0x1211e, 0x12120, 0x1213c, 0x12140, 0x12178, 0x12186,\r
593       0x12198, 0x121b0, 0x121be, 0x121e2, 0x121e4, 0x121e8, 0x121f6,\r
594       0x12204, 0x12210, 0x1221e, 0x12220, 0x12278, 0x122f0, 0x12306,\r
595       0x1230c, 0x12330, 0x1233e, 0x12360, 0x1237c, 0x1238e, 0x1239c,\r
596       0x123b8, 0x123c2, 0x123c8, 0x123d0, 0x123e6, 0x123ec, 0x1241e,\r
597       0x12420, 0x1243c, 0x124f0, 0x125e0, 0x12618, 0x1263e, 0x12660,\r
598       0x1267c, 0x126c0, 0x126f8, 0x12738, 0x12770, 0x1277e, 0x12782,\r
599       0x12784, 0x12790, 0x1279e, 0x127a0, 0x127bc, 0x127c6, 0x127cc,\r
600       0x127d8, 0x127ee, 0x12820, 0x1283c, 0x12840, 0x12878, 0x128f0,\r
601       0x129e0, 0x12bc0, 0x12c18, 0x12c30, 0x12c3e, 0x12c60, 0x12c7c,\r
602       0x12cc0, 0x12cf8, 0x12df0, 0x12e1c, 0x12e38, 0x12e70, 0x12e7e,\r
603       0x12ee0, 0x12efc, 0x12f04, 0x12f08, 0x12f10, 0x12f20, 0x12f3c,\r
604       0x12f40, 0x12f78, 0x12f86, 0x12f8c, 0x12f98, 0x12fb0, 0x12fbe,\r
605       0x12fce, 0x12fdc, 0x1302e, 0x1304e, 0x1305c, 0x13062, 0x13068,\r
606       0x1308e, 0x1309c, 0x130b8, 0x130c2, 0x130c8, 0x130d0, 0x130de,\r
607       0x130ec, 0x130fa, 0x1310e, 0x13138, 0x13170, 0x1317e, 0x13182,\r
608       0x13184, 0x13190, 0x1319e, 0x131a0, 0x131bc, 0x131c6, 0x131cc,\r
609       0x131d8, 0x131f2, 0x131f4, 0x1320e, 0x1321c, 0x13270, 0x1327e,\r
610       0x132e0, 0x132fc, 0x13308, 0x1331e, 0x13320, 0x1333c, 0x13340,\r
611       0x13378, 0x13386, 0x13398, 0x133b0, 0x133be, 0x133ce, 0x133dc,\r
612       0x133e2, 0x133e4, 0x133e8, 0x133f6, 0x1340e, 0x1341c, 0x13438,\r
613       0x13470, 0x1347e, 0x134e0, 0x134fc, 0x135c0, 0x135f8, 0x13608,\r
614       0x13610, 0x1361e, 0x13620, 0x1363c, 0x13640, 0x13678, 0x136f0,\r
615       0x1370c, 0x13718, 0x13730, 0x1373e, 0x13760, 0x1377c, 0x1379c,\r
616       0x137b8, 0x137c2, 0x137c4, 0x137c8, 0x137d0, 0x137de, 0x137e6,\r
617       0x137ec, 0x13816, 0x13826, 0x1382c, 0x13846, 0x1384c, 0x13858,\r
618       0x1386e, 0x13874, 0x13886, 0x13898, 0x138b0, 0x138be, 0x138ce,\r
619       0x138dc, 0x138e2, 0x138e4, 0x138e8, 0x13906, 0x1390c, 0x13930,\r
620       0x1393e, 0x13960, 0x1397c, 0x1398e, 0x1399c, 0x139b8, 0x139c8,\r
621       0x139d0, 0x139de, 0x139e6, 0x139ec, 0x139fa, 0x13a06, 0x13a0c,\r
622       0x13a18, 0x13a30, 0x13a3e, 0x13a60, 0x13a7c, 0x13ac0, 0x13af8,\r
623       0x13b0e, 0x13b1c, 0x13b38, 0x13b70, 0x13b7e, 0x13b88, 0x13b90,\r
624       0x13b9e, 0x13ba0, 0x13bbc, 0x13bcc, 0x13bd8, 0x13bee, 0x13bf2,\r
625       0x13bf4, 0x13c12, 0x13c14, 0x13c22, 0x13c24, 0x13c28, 0x13c36,\r
626       0x13c42, 0x13c48, 0x13c50, 0x13c5e, 0x13c66, 0x13c6c, 0x13c82,\r
627       0x13c84, 0x13c90, 0x13c9e, 0x13ca0, 0x13cbc, 0x13cc6, 0x13ccc,\r
628       0x13cd8, 0x13cee, 0x13d02, 0x13d04, 0x13d08, 0x13d10, 0x13d1e,\r
629       0x13d20, 0x13d3c, 0x13d40, 0x13d78, 0x13d86, 0x13d8c, 0x13d98,\r
630       0x13db0, 0x13dbe, 0x13dce, 0x13ddc, 0x13de4, 0x13de8, 0x13df6,\r
631       0x13e1a, 0x13e2e, 0x13e32, 0x13e34, 0x13e4e, 0x13e5c, 0x13e62,\r
632       0x13e64, 0x13e68, 0x13e76, 0x13e8e, 0x13e9c, 0x13eb8, 0x13ec2,\r
633       0x13ec4, 0x13ec8, 0x13ed0, 0x13ede, 0x13ee6, 0x13eec, 0x13f26,\r
634       0x13f2c, 0x13f3a, 0x13f46, 0x13f4c, 0x13f58, 0x13f6e, 0x13f72,\r
635       0x13f74, 0x14082, 0x1409e, 0x140a0, 0x140bc, 0x14104, 0x14108,\r
636       0x14110, 0x1411e, 0x14120, 0x1413c, 0x14140, 0x14178, 0x1418c,\r
637       0x14198, 0x141b0, 0x141be, 0x141e2, 0x141e4, 0x141e8, 0x14208,\r
638       0x14210, 0x1421e, 0x14220, 0x1423c, 0x14240, 0x14278, 0x142f0,\r
639       0x14306, 0x1430c, 0x14318, 0x14330, 0x1433e, 0x14360, 0x1437c,\r
640       0x1438e, 0x143c2, 0x143c4, 0x143c8, 0x143d0, 0x143e6, 0x143ec,\r
641       0x14408, 0x14410, 0x1441e, 0x14420, 0x1443c, 0x14440, 0x14478,\r
642       0x144f0, 0x145e0, 0x1460c, 0x14618, 0x14630, 0x1463e, 0x14660,\r
643       0x1467c, 0x146c0, 0x146f8, 0x1471c, 0x14738, 0x14770, 0x1477e,\r
644       0x14782, 0x14784, 0x14788, 0x14790, 0x147a0, 0x147bc, 0x147c6,\r
645       0x147cc, 0x147d8, 0x147ee, 0x14810, 0x14820, 0x1483c, 0x14840,\r
646       0x14878, 0x148f0, 0x149e0, 0x14bc0, 0x14c30, 0x14c3e, 0x14c60,\r
647       0x14c7c, 0x14cc0, 0x14cf8, 0x14df0, 0x14e38, 0x14e70, 0x14e7e,\r
648       0x14ee0, 0x14efc, 0x14f04, 0x14f08, 0x14f10, 0x14f1e, 0x14f20,\r
649       0x14f3c, 0x14f40, 0x14f78, 0x14f86, 0x14f8c, 0x14f98, 0x14fb0,\r
650       0x14fce, 0x14fdc, 0x15020, 0x15040, 0x15078, 0x150f0, 0x151e0,\r
651       0x153c0, 0x15860, 0x1587c, 0x158c0, 0x158f8, 0x159f0, 0x15be0,\r
652       0x15c70, 0x15c7e, 0x15ce0, 0x15cfc, 0x15dc0, 0x15df8, 0x15e08,\r
653       0x15e10, 0x15e20, 0x15e40, 0x15e78, 0x15ef0, 0x15f0c, 0x15f18,\r
654       0x15f30, 0x15f60, 0x15f7c, 0x15f8e, 0x15f9c, 0x15fb8, 0x1604e,\r
655       0x1605c, 0x1608e, 0x1609c, 0x160b8, 0x160c2, 0x160c4, 0x160c8,\r
656       0x160de, 0x1610e, 0x1611c, 0x16138, 0x16170, 0x1617e, 0x16184,\r
657       0x16188, 0x16190, 0x1619e, 0x161a0, 0x161bc, 0x161c6, 0x161cc,\r
658       0x161d8, 0x161f2, 0x161f4, 0x1620e, 0x1621c, 0x16238, 0x16270,\r
659       0x1627e, 0x162e0, 0x162fc, 0x16304, 0x16308, 0x16310, 0x1631e,\r
660       0x16320, 0x1633c, 0x16340, 0x16378, 0x16386, 0x1638c, 0x16398,\r
661       0x163b0, 0x163be, 0x163ce, 0x163dc, 0x163e2, 0x163e4, 0x163e8,\r
662       0x163f6, 0x1640e, 0x1641c, 0x16438, 0x16470, 0x1647e, 0x164e0,\r
663       0x164fc, 0x165c0, 0x165f8, 0x16610, 0x1661e, 0x16620, 0x1663c,\r
664       0x16640, 0x16678, 0x166f0, 0x16718, 0x16730, 0x1673e, 0x16760,\r
665       0x1677c, 0x1678e, 0x1679c, 0x167b8, 0x167c2, 0x167c4, 0x167c8,\r
666       0x167d0, 0x167de, 0x167e6, 0x167ec, 0x1681c, 0x16838, 0x16870,\r
667       0x168e0, 0x168fc, 0x169c0, 0x169f8, 0x16bf0, 0x16c10, 0x16c1e,\r
668       0x16c20, 0x16c3c, 0x16c40, 0x16c78, 0x16cf0, 0x16de0, 0x16e18,\r
669       0x16e30, 0x16e3e, 0x16e60, 0x16e7c, 0x16ec0, 0x16ef8, 0x16f1c,\r
670       0x16f38, 0x16f70, 0x16f7e, 0x16f84, 0x16f88, 0x16f90, 0x16f9e,\r
671       0x16fa0, 0x16fbc, 0x16fc6, 0x16fcc, 0x16fd8, 0x17026, 0x1702c,\r
672       0x17046, 0x1704c, 0x17058, 0x1706e, 0x17086, 0x1708c, 0x17098,\r
673       0x170b0, 0x170be, 0x170ce, 0x170dc, 0x170e8, 0x17106, 0x1710c,\r
674       0x17118, 0x17130, 0x1713e, 0x17160, 0x1717c, 0x1718e, 0x1719c,\r
675       0x171b8, 0x171c2, 0x171c4, 0x171c8, 0x171d0, 0x171de, 0x171e6,\r
676       0x171ec, 0x171fa, 0x17206, 0x1720c, 0x17218, 0x17230, 0x1723e,\r
677       0x17260, 0x1727c, 0x172c0, 0x172f8, 0x1730e, 0x1731c, 0x17338,\r
678       0x17370, 0x1737e, 0x17388, 0x17390, 0x1739e, 0x173a0, 0x173bc,\r
679       0x173cc, 0x173d8, 0x173ee, 0x173f2, 0x173f4, 0x1740c, 0x17418,\r
680       0x17430, 0x1743e, 0x17460, 0x1747c, 0x174c0, 0x174f8, 0x175f0,\r
681       0x1760e, 0x1761c, 0x17638, 0x17670, 0x1767e, 0x176e0, 0x176fc,\r
682       0x17708, 0x17710, 0x1771e, 0x17720, 0x1773c, 0x17740, 0x17778,\r
683       0x17798, 0x177b0, 0x177be, 0x177dc, 0x177e2, 0x177e4, 0x177e8,\r
684       0x17822, 0x17824, 0x17828, 0x17836, 0x17842, 0x17844, 0x17848,\r
685       0x17850, 0x1785e, 0x17866, 0x1786c, 0x17882, 0x17884, 0x17888,\r
686       0x17890, 0x1789e, 0x178a0, 0x178bc, 0x178c6, 0x178cc, 0x178d8,\r
687       0x178ee, 0x178f2, 0x178f4, 0x17902, 0x17904, 0x17908, 0x17910,\r
688       0x1791e, 0x17920, 0x1793c, 0x17940, 0x17978, 0x17986, 0x1798c,\r
689       0x17998, 0x179b0, 0x179be, 0x179ce, 0x179dc, 0x179e2, 0x179e4,\r
690       0x179e8, 0x179f6, 0x17a04, 0x17a08, 0x17a10, 0x17a1e, 0x17a20,\r
691       0x17a3c, 0x17a40, 0x17a78, 0x17af0, 0x17b06, 0x17b0c, 0x17b18,\r
692       0x17b30, 0x17b3e, 0x17b60, 0x17b7c, 0x17b8e, 0x17b9c, 0x17bb8,\r
693       0x17bc4, 0x17bc8, 0x17bd0, 0x17bde, 0x17be6, 0x17bec, 0x17c2e,\r
694       0x17c32, 0x17c34, 0x17c4e, 0x17c5c, 0x17c62, 0x17c64, 0x17c68,\r
695       0x17c76, 0x17c8e, 0x17c9c, 0x17cb8, 0x17cc2, 0x17cc4, 0x17cc8,\r
696       0x17cd0, 0x17cde, 0x17ce6, 0x17cec, 0x17d0e, 0x17d1c, 0x17d38,\r
697       0x17d70, 0x17d82, 0x17d84, 0x17d88, 0x17d90, 0x17d9e, 0x17da0,\r
698       0x17dbc, 0x17dc6, 0x17dcc, 0x17dd8, 0x17dee, 0x17e26, 0x17e2c,\r
699       0x17e3a, 0x17e46, 0x17e4c, 0x17e58, 0x17e6e, 0x17e72, 0x17e74,\r
700       0x17e86, 0x17e8c, 0x17e98, 0x17eb0, 0x17ece, 0x17edc, 0x17ee2,\r
701       0x17ee4, 0x17ee8, 0x17ef6, 0x1813a, 0x18172, 0x18174, 0x18216,\r
702       0x18226, 0x1823a, 0x1824c, 0x18258, 0x1826e, 0x18272, 0x18274,\r
703       0x18298, 0x182be, 0x182e2, 0x182e4, 0x182e8, 0x182f6, 0x1835e,\r
704       0x1837a, 0x183ae, 0x183d6, 0x18416, 0x18426, 0x1842c, 0x1843a,\r
705       0x18446, 0x18458, 0x1846e, 0x18472, 0x18474, 0x18486, 0x184b0,\r
706       0x184be, 0x184ce, 0x184dc, 0x184e2, 0x184e4, 0x184e8, 0x184f6,\r
707       0x18506, 0x1850c, 0x18518, 0x18530, 0x1853e, 0x18560, 0x1857c,\r
708       0x1858e, 0x1859c, 0x185b8, 0x185c2, 0x185c4, 0x185c8, 0x185d0,\r
709       0x185de, 0x185e6, 0x185ec, 0x185fa, 0x18612, 0x18614, 0x18622,\r
710       0x18628, 0x18636, 0x18642, 0x18650, 0x1865e, 0x1867a, 0x18682,\r
711       0x18684, 0x18688, 0x18690, 0x1869e, 0x186a0, 0x186bc, 0x186c6,\r
712       0x186cc, 0x186d8, 0x186ee, 0x186f2, 0x186f4, 0x1872e, 0x1874e,\r
713       0x1875c, 0x18796, 0x187a6, 0x187ac, 0x187d2, 0x187d4, 0x18826,\r
714       0x1882c, 0x1883a, 0x18846, 0x1884c, 0x18858, 0x1886e, 0x18872,\r
715       0x18874, 0x18886, 0x18898, 0x188b0, 0x188be, 0x188ce, 0x188dc,\r
716       0x188e2, 0x188e4, 0x188e8, 0x188f6, 0x1890c, 0x18930, 0x1893e,\r
717       0x18960, 0x1897c, 0x1898e, 0x189b8, 0x189c2, 0x189c8, 0x189d0,\r
718       0x189de, 0x189e6, 0x189ec, 0x189fa, 0x18a18, 0x18a30, 0x18a3e,\r
719       0x18a60, 0x18a7c, 0x18ac0, 0x18af8, 0x18b1c, 0x18b38, 0x18b70,\r
720       0x18b7e, 0x18b82, 0x18b84, 0x18b88, 0x18b90, 0x18b9e, 0x18ba0,\r
721       0x18bbc, 0x18bc6, 0x18bcc, 0x18bd8, 0x18bee, 0x18bf2, 0x18bf4,\r
722       0x18c22, 0x18c24, 0x18c28, 0x18c36, 0x18c42, 0x18c48, 0x18c50,\r
723       0x18c5e, 0x18c66, 0x18c7a, 0x18c82, 0x18c84, 0x18c90, 0x18c9e,\r
724       0x18ca0, 0x18cbc, 0x18ccc, 0x18cf2, 0x18cf4, 0x18d04, 0x18d08,\r
725       0x18d10, 0x18d1e, 0x18d20, 0x18d3c, 0x18d40, 0x18d78, 0x18d86,\r
726       0x18d98, 0x18dce, 0x18de2, 0x18de4, 0x18de8, 0x18e2e, 0x18e32,\r
727       0x18e34, 0x18e4e, 0x18e5c, 0x18e62, 0x18e64, 0x18e68, 0x18e8e,\r
728       0x18e9c, 0x18eb8, 0x18ec2, 0x18ec4, 0x18ec8, 0x18ed0, 0x18efa,\r
729       0x18f16, 0x18f26, 0x18f2c, 0x18f46, 0x18f4c, 0x18f58, 0x18f6e,\r
730       0x18f8a, 0x18f92, 0x18f94, 0x18fa2, 0x18fa4, 0x18fa8, 0x18fb6,\r
731       0x1902c, 0x1903a, 0x19046, 0x1904c, 0x19058, 0x19072, 0x19074,\r
732       0x19086, 0x19098, 0x190b0, 0x190be, 0x190ce, 0x190dc, 0x190e2,\r
733       0x190e8, 0x190f6, 0x19106, 0x1910c, 0x19130, 0x1913e, 0x19160,\r
734       0x1917c, 0x1918e, 0x1919c, 0x191b8, 0x191c2, 0x191c8, 0x191d0,\r
735       0x191de, 0x191e6, 0x191ec, 0x191fa, 0x19218, 0x1923e, 0x19260,\r
736       0x1927c, 0x192c0, 0x192f8, 0x19338, 0x19370, 0x1937e, 0x19382,\r
737       0x19384, 0x19390, 0x1939e, 0x193a0, 0x193bc, 0x193c6, 0x193cc,\r
738       0x193d8, 0x193ee, 0x193f2, 0x193f4, 0x19430, 0x1943e, 0x19460,\r
739       0x1947c, 0x194c0, 0x194f8, 0x195f0, 0x19638, 0x19670, 0x1967e,\r
740       0x196e0, 0x196fc, 0x19702, 0x19704, 0x19708, 0x19710, 0x19720,\r
741       0x1973c, 0x19740, 0x19778, 0x19786, 0x1978c, 0x19798, 0x197b0,\r
742       0x197be, 0x197ce, 0x197dc, 0x197e2, 0x197e4, 0x197e8, 0x19822,\r
743       0x19824, 0x19842, 0x19848, 0x19850, 0x1985e, 0x19866, 0x1987a,\r
744       0x19882, 0x19884, 0x19890, 0x1989e, 0x198a0, 0x198bc, 0x198cc,\r
745       0x198f2, 0x198f4, 0x19902, 0x19908, 0x1991e, 0x19920, 0x1993c,\r
746       0x19940, 0x19978, 0x19986, 0x19998, 0x199ce, 0x199e2, 0x199e4,\r
747       0x199e8, 0x19a08, 0x19a10, 0x19a1e, 0x19a20, 0x19a3c, 0x19a40,\r
748       0x19a78, 0x19af0, 0x19b18, 0x19b3e, 0x19b60, 0x19b9c, 0x19bc2,\r
749       0x19bc4, 0x19bc8, 0x19bd0, 0x19be6, 0x19c2e, 0x19c34, 0x19c4e,\r
750       0x19c5c, 0x19c62, 0x19c64, 0x19c68, 0x19c8e, 0x19c9c, 0x19cb8,\r
751       0x19cc2, 0x19cc8, 0x19cd0, 0x19ce6, 0x19cfa, 0x19d0e, 0x19d1c,\r
752       0x19d38, 0x19d70, 0x19d7e, 0x19d82, 0x19d84, 0x19d88, 0x19d90,\r
753       0x19da0, 0x19dcc, 0x19df2, 0x19df4, 0x19e16, 0x19e26, 0x19e2c,\r
754       0x19e46, 0x19e4c, 0x19e58, 0x19e74, 0x19e86, 0x19e8c, 0x19e98,\r
755       0x19eb0, 0x19ebe, 0x19ece, 0x19ee2, 0x19ee4, 0x19ee8, 0x19f0a,\r
756       0x19f12, 0x19f14, 0x19f22, 0x19f24, 0x19f28, 0x19f42, 0x19f44,\r
757       0x19f48, 0x19f50, 0x19f5e, 0x19f6c, 0x19f9a, 0x19fae, 0x19fb2,\r
758       0x19fb4, 0x1a046, 0x1a04c, 0x1a072, 0x1a074, 0x1a086, 0x1a08c,\r
759       0x1a098, 0x1a0b0, 0x1a0be, 0x1a0e2, 0x1a0e4, 0x1a0e8, 0x1a0f6,\r
760       0x1a106, 0x1a10c, 0x1a118, 0x1a130, 0x1a13e, 0x1a160, 0x1a17c,\r
761       0x1a18e, 0x1a19c, 0x1a1b8, 0x1a1c2, 0x1a1c4, 0x1a1c8, 0x1a1d0,\r
762       0x1a1de, 0x1a1e6, 0x1a1ec, 0x1a218, 0x1a230, 0x1a23e, 0x1a260,\r
763       0x1a27c, 0x1a2c0, 0x1a2f8, 0x1a31c, 0x1a338, 0x1a370, 0x1a37e,\r
764       0x1a382, 0x1a384, 0x1a388, 0x1a390, 0x1a39e, 0x1a3a0, 0x1a3bc,\r
765       0x1a3c6, 0x1a3cc, 0x1a3d8, 0x1a3ee, 0x1a3f2, 0x1a3f4, 0x1a418,\r
766       0x1a430, 0x1a43e, 0x1a460, 0x1a47c, 0x1a4c0, 0x1a4f8, 0x1a5f0,\r
767       0x1a61c, 0x1a638, 0x1a670, 0x1a67e, 0x1a6e0, 0x1a6fc, 0x1a702,\r
768       0x1a704, 0x1a708, 0x1a710, 0x1a71e, 0x1a720, 0x1a73c, 0x1a740,\r
769       0x1a778, 0x1a786, 0x1a78c, 0x1a798, 0x1a7b0, 0x1a7be, 0x1a7ce,\r
770       0x1a7dc, 0x1a7e2, 0x1a7e4, 0x1a7e8, 0x1a830, 0x1a860, 0x1a87c,\r
771       0x1a8c0, 0x1a8f8, 0x1a9f0, 0x1abe0, 0x1ac70, 0x1ac7e, 0x1ace0,\r
772       0x1acfc, 0x1adc0, 0x1adf8, 0x1ae04, 0x1ae08, 0x1ae10, 0x1ae20,\r
773       0x1ae3c, 0x1ae40, 0x1ae78, 0x1aef0, 0x1af06, 0x1af0c, 0x1af18,\r
774       0x1af30, 0x1af3e, 0x1af60, 0x1af7c, 0x1af8e, 0x1af9c, 0x1afb8,\r
775       0x1afc4, 0x1afc8, 0x1afd0, 0x1afde, 0x1b042, 0x1b05e, 0x1b07a,\r
776       0x1b082, 0x1b084, 0x1b088, 0x1b090, 0x1b09e, 0x1b0a0, 0x1b0bc,\r
777       0x1b0cc, 0x1b0f2, 0x1b0f4, 0x1b102, 0x1b104, 0x1b108, 0x1b110,\r
778       0x1b11e, 0x1b120, 0x1b13c, 0x1b140, 0x1b178, 0x1b186, 0x1b198,\r
779       0x1b1ce, 0x1b1e2, 0x1b1e4, 0x1b1e8, 0x1b204, 0x1b208, 0x1b210,\r
780       0x1b21e, 0x1b220, 0x1b23c, 0x1b240, 0x1b278, 0x1b2f0, 0x1b30c,\r
781       0x1b33e, 0x1b360, 0x1b39c, 0x1b3c2, 0x1b3c4, 0x1b3c8, 0x1b3d0,\r
782       0x1b3e6, 0x1b410, 0x1b41e, 0x1b420, 0x1b43c, 0x1b440, 0x1b478,\r
783       0x1b4f0, 0x1b5e0, 0x1b618, 0x1b660, 0x1b67c, 0x1b6c0, 0x1b738,\r
784       0x1b782, 0x1b784, 0x1b788, 0x1b790, 0x1b79e, 0x1b7a0, 0x1b7cc,\r
785       0x1b82e, 0x1b84e, 0x1b85c, 0x1b88e, 0x1b89c, 0x1b8b8, 0x1b8c2,\r
786       0x1b8c4, 0x1b8c8, 0x1b8d0, 0x1b8e6, 0x1b8fa, 0x1b90e, 0x1b91c,\r
787       0x1b938, 0x1b970, 0x1b97e, 0x1b982, 0x1b984, 0x1b988, 0x1b990,\r
788       0x1b99e, 0x1b9a0, 0x1b9cc, 0x1b9f2, 0x1b9f4, 0x1ba0e, 0x1ba1c,\r
789       0x1ba38, 0x1ba70, 0x1ba7e, 0x1bae0, 0x1bafc, 0x1bb08, 0x1bb10,\r
790       0x1bb20, 0x1bb3c, 0x1bb40, 0x1bb98, 0x1bbce, 0x1bbe2, 0x1bbe4,\r
791       0x1bbe8, 0x1bc16, 0x1bc26, 0x1bc2c, 0x1bc46, 0x1bc4c, 0x1bc58,\r
792       0x1bc72, 0x1bc74, 0x1bc86, 0x1bc8c, 0x1bc98, 0x1bcb0, 0x1bcbe,\r
793       0x1bcce, 0x1bce2, 0x1bce4, 0x1bce8, 0x1bd06, 0x1bd0c, 0x1bd18,\r
794       0x1bd30, 0x1bd3e, 0x1bd60, 0x1bd7c, 0x1bd9c, 0x1bdc2, 0x1bdc4,\r
795       0x1bdc8, 0x1bdd0, 0x1bde6, 0x1bdfa, 0x1be12, 0x1be14, 0x1be22,\r
796       0x1be24, 0x1be28, 0x1be42, 0x1be44, 0x1be48, 0x1be50, 0x1be5e,\r
797       0x1be66, 0x1be82, 0x1be84, 0x1be88, 0x1be90, 0x1be9e, 0x1bea0,\r
798       0x1bebc, 0x1becc, 0x1bef4, 0x1bf1a, 0x1bf2e, 0x1bf32, 0x1bf34,\r
799       0x1bf4e, 0x1bf5c, 0x1bf62, 0x1bf64, 0x1bf68, 0x1c09a, 0x1c0b2,\r
800       0x1c0b4, 0x1c11a, 0x1c132, 0x1c134, 0x1c162, 0x1c164, 0x1c168,\r
801       0x1c176, 0x1c1ba, 0x1c21a, 0x1c232, 0x1c234, 0x1c24e, 0x1c25c,\r
802       0x1c262, 0x1c264, 0x1c268, 0x1c276, 0x1c28e, 0x1c2c2, 0x1c2c4,\r
803       0x1c2c8, 0x1c2d0, 0x1c2de, 0x1c2e6, 0x1c2ec, 0x1c2fa, 0x1c316,\r
804       0x1c326, 0x1c33a, 0x1c346, 0x1c34c, 0x1c372, 0x1c374, 0x1c41a,\r
805       0x1c42e, 0x1c432, 0x1c434, 0x1c44e, 0x1c45c, 0x1c462, 0x1c464,\r
806       0x1c468, 0x1c476, 0x1c48e, 0x1c49c, 0x1c4b8, 0x1c4c2, 0x1c4c8,\r
807       0x1c4d0, 0x1c4de, 0x1c4e6, 0x1c4ec, 0x1c4fa, 0x1c51c, 0x1c538,\r
808       0x1c570, 0x1c57e, 0x1c582, 0x1c584, 0x1c588, 0x1c590, 0x1c59e,\r
809       0x1c5a0, 0x1c5bc, 0x1c5c6, 0x1c5cc, 0x1c5d8, 0x1c5ee, 0x1c5f2,\r
810       0x1c5f4, 0x1c616, 0x1c626, 0x1c62c, 0x1c63a, 0x1c646, 0x1c64c,\r
811       0x1c658, 0x1c66e, 0x1c672, 0x1c674, 0x1c686, 0x1c68c, 0x1c698,\r
812       0x1c6b0, 0x1c6be, 0x1c6ce, 0x1c6dc, 0x1c6e2, 0x1c6e4, 0x1c6e8,\r
813       0x1c712, 0x1c714, 0x1c722, 0x1c728, 0x1c736, 0x1c742, 0x1c744,\r
814       0x1c748, 0x1c750, 0x1c75e, 0x1c766, 0x1c76c, 0x1c77a, 0x1c7ae,\r
815       0x1c7d6, 0x1c7ea, 0x1c81a, 0x1c82e, 0x1c832, 0x1c834, 0x1c84e,\r
816       0x1c85c, 0x1c862, 0x1c864, 0x1c868, 0x1c876, 0x1c88e, 0x1c89c,\r
817       0x1c8b8, 0x1c8c2, 0x1c8c8, 0x1c8d0, 0x1c8de, 0x1c8e6, 0x1c8ec,\r
818       0x1c8fa, 0x1c90e, 0x1c938, 0x1c970, 0x1c97e, 0x1c982, 0x1c984,\r
819       0x1c990, 0x1c99e, 0x1c9a0, 0x1c9bc, 0x1c9c6, 0x1c9cc, 0x1c9d8,\r
820       0x1c9ee, 0x1c9f2, 0x1c9f4, 0x1ca38, 0x1ca70, 0x1ca7e, 0x1cae0,\r
821       0x1cafc, 0x1cb02, 0x1cb04, 0x1cb08, 0x1cb10, 0x1cb20, 0x1cb3c,\r
822       0x1cb40, 0x1cb78, 0x1cb86, 0x1cb8c, 0x1cb98, 0x1cbb0, 0x1cbbe,\r
823       0x1cbce, 0x1cbdc, 0x1cbe2, 0x1cbe4, 0x1cbe8, 0x1cbf6, 0x1cc16,\r
824       0x1cc26, 0x1cc2c, 0x1cc3a, 0x1cc46, 0x1cc58, 0x1cc72, 0x1cc74,\r
825       0x1cc86, 0x1ccb0, 0x1ccbe, 0x1ccce, 0x1cce2, 0x1cce4, 0x1cce8,\r
826       0x1cd06, 0x1cd0c, 0x1cd18, 0x1cd30, 0x1cd3e, 0x1cd60, 0x1cd7c,\r
827       0x1cd9c, 0x1cdc2, 0x1cdc4, 0x1cdc8, 0x1cdd0, 0x1cdde, 0x1cde6,\r
828       0x1cdfa, 0x1ce22, 0x1ce28, 0x1ce42, 0x1ce50, 0x1ce5e, 0x1ce66,\r
829       0x1ce7a, 0x1ce82, 0x1ce84, 0x1ce88, 0x1ce90, 0x1ce9e, 0x1cea0,\r
830       0x1cebc, 0x1cecc, 0x1cef2, 0x1cef4, 0x1cf2e, 0x1cf32, 0x1cf34,\r
831       0x1cf4e, 0x1cf5c, 0x1cf62, 0x1cf64, 0x1cf68, 0x1cf96, 0x1cfa6,\r
832       0x1cfac, 0x1cfca, 0x1cfd2, 0x1cfd4, 0x1d02e, 0x1d032, 0x1d034,\r
833       0x1d04e, 0x1d05c, 0x1d062, 0x1d064, 0x1d068, 0x1d076, 0x1d08e,\r
834       0x1d09c, 0x1d0b8, 0x1d0c2, 0x1d0c4, 0x1d0c8, 0x1d0d0, 0x1d0de,\r
835       0x1d0e6, 0x1d0ec, 0x1d0fa, 0x1d11c, 0x1d138, 0x1d170, 0x1d17e,\r
836       0x1d182, 0x1d184, 0x1d188, 0x1d190, 0x1d19e, 0x1d1a0, 0x1d1bc,\r
837       0x1d1c6, 0x1d1cc, 0x1d1d8, 0x1d1ee, 0x1d1f2, 0x1d1f4, 0x1d21c,\r
838       0x1d238, 0x1d270, 0x1d27e, 0x1d2e0, 0x1d2fc, 0x1d302, 0x1d304,\r
839       0x1d308, 0x1d310, 0x1d31e, 0x1d320, 0x1d33c, 0x1d340, 0x1d378,\r
840       0x1d386, 0x1d38c, 0x1d398, 0x1d3b0, 0x1d3be, 0x1d3ce, 0x1d3dc,\r
841       0x1d3e2, 0x1d3e4, 0x1d3e8, 0x1d3f6, 0x1d470, 0x1d47e, 0x1d4e0,\r
842       0x1d4fc, 0x1d5c0, 0x1d5f8, 0x1d604, 0x1d608, 0x1d610, 0x1d620,\r
843       0x1d640, 0x1d678, 0x1d6f0, 0x1d706, 0x1d70c, 0x1d718, 0x1d730,\r
844       0x1d73e, 0x1d760, 0x1d77c, 0x1d78e, 0x1d79c, 0x1d7b8, 0x1d7c2,\r
845       0x1d7c4, 0x1d7c8, 0x1d7d0, 0x1d7de, 0x1d7e6, 0x1d7ec, 0x1d826,\r
846       0x1d82c, 0x1d83a, 0x1d846, 0x1d84c, 0x1d858, 0x1d872, 0x1d874,\r
847       0x1d886, 0x1d88c, 0x1d898, 0x1d8b0, 0x1d8be, 0x1d8ce, 0x1d8e2,\r
848       0x1d8e4, 0x1d8e8, 0x1d8f6, 0x1d90c, 0x1d918, 0x1d930, 0x1d93e,\r
849       0x1d960, 0x1d97c, 0x1d99c, 0x1d9c2, 0x1d9c4, 0x1d9c8, 0x1d9d0,\r
850       0x1d9e6, 0x1d9fa, 0x1da0c, 0x1da18, 0x1da30, 0x1da3e, 0x1da60,\r
851       0x1da7c, 0x1dac0, 0x1daf8, 0x1db38, 0x1db82, 0x1db84, 0x1db88,\r
852       0x1db90, 0x1db9e, 0x1dba0, 0x1dbcc, 0x1dbf2, 0x1dbf4, 0x1dc22,\r
853       0x1dc42, 0x1dc44, 0x1dc48, 0x1dc50, 0x1dc5e, 0x1dc66, 0x1dc7a,\r
854       0x1dc82, 0x1dc84, 0x1dc88, 0x1dc90, 0x1dc9e, 0x1dca0, 0x1dcbc,\r
855       0x1dccc, 0x1dcf2, 0x1dcf4, 0x1dd04, 0x1dd08, 0x1dd10, 0x1dd1e,\r
856       0x1dd20, 0x1dd3c, 0x1dd40, 0x1dd78, 0x1dd86, 0x1dd98, 0x1ddce,\r
857       0x1dde2, 0x1dde4, 0x1dde8, 0x1de2e, 0x1de32, 0x1de34, 0x1de4e,\r
858       0x1de5c, 0x1de62, 0x1de64, 0x1de68, 0x1de8e, 0x1de9c, 0x1deb8,\r
859       0x1dec2, 0x1dec4, 0x1dec8, 0x1ded0, 0x1dee6, 0x1defa, 0x1df16,\r
860       0x1df26, 0x1df2c, 0x1df46, 0x1df4c, 0x1df58, 0x1df72, 0x1df74,\r
861       0x1df8a, 0x1df92, 0x1df94, 0x1dfa2, 0x1dfa4, 0x1dfa8, 0x1e08a,\r
862       0x1e092, 0x1e094, 0x1e0a2, 0x1e0a4, 0x1e0a8, 0x1e0b6, 0x1e0da,\r
863       0x1e10a, 0x1e112, 0x1e114, 0x1e122, 0x1e124, 0x1e128, 0x1e136,\r
864       0x1e142, 0x1e144, 0x1e148, 0x1e150, 0x1e166, 0x1e16c, 0x1e17a,\r
865       0x1e19a, 0x1e1b2, 0x1e1b4, 0x1e20a, 0x1e212, 0x1e214, 0x1e222,\r
866       0x1e224, 0x1e228, 0x1e236, 0x1e242, 0x1e248, 0x1e250, 0x1e25e,\r
867       0x1e266, 0x1e26c, 0x1e27a, 0x1e282, 0x1e284, 0x1e288, 0x1e290,\r
868       0x1e2a0, 0x1e2bc, 0x1e2c6, 0x1e2cc, 0x1e2d8, 0x1e2ee, 0x1e2f2,\r
869       0x1e2f4, 0x1e31a, 0x1e332, 0x1e334, 0x1e35c, 0x1e362, 0x1e364,\r
870       0x1e368, 0x1e3ba, 0x1e40a, 0x1e412, 0x1e414, 0x1e422, 0x1e428,\r
871       0x1e436, 0x1e442, 0x1e448, 0x1e450, 0x1e45e, 0x1e466, 0x1e46c,\r
872       0x1e47a, 0x1e482, 0x1e484, 0x1e490, 0x1e49e, 0x1e4a0, 0x1e4bc,\r
873       0x1e4c6, 0x1e4cc, 0x1e4d8, 0x1e4ee, 0x1e4f2, 0x1e4f4, 0x1e502,\r
874       0x1e504, 0x1e508, 0x1e510, 0x1e51e, 0x1e520, 0x1e53c, 0x1e540,\r
875       0x1e578, 0x1e586, 0x1e58c, 0x1e598, 0x1e5b0, 0x1e5be, 0x1e5ce,\r
876       0x1e5dc, 0x1e5e2, 0x1e5e4, 0x1e5e8, 0x1e5f6, 0x1e61a, 0x1e62e,\r
877       0x1e632, 0x1e634, 0x1e64e, 0x1e65c, 0x1e662, 0x1e668, 0x1e68e,\r
878       0x1e69c, 0x1e6b8, 0x1e6c2, 0x1e6c4, 0x1e6c8, 0x1e6d0, 0x1e6e6,\r
879       0x1e6fa, 0x1e716, 0x1e726, 0x1e72c, 0x1e73a, 0x1e746, 0x1e74c,\r
880       0x1e758, 0x1e772, 0x1e774, 0x1e792, 0x1e794, 0x1e7a2, 0x1e7a4,\r
881       0x1e7a8, 0x1e7b6, 0x1e812, 0x1e814, 0x1e822, 0x1e824, 0x1e828,\r
882       0x1e836, 0x1e842, 0x1e844, 0x1e848, 0x1e850, 0x1e85e, 0x1e866,\r
883       0x1e86c, 0x1e87a, 0x1e882, 0x1e884, 0x1e888, 0x1e890, 0x1e89e,\r
884       0x1e8a0, 0x1e8bc, 0x1e8c6, 0x1e8cc, 0x1e8d8, 0x1e8ee, 0x1e8f2,\r
885       0x1e8f4, 0x1e902, 0x1e904, 0x1e908, 0x1e910, 0x1e920, 0x1e93c,\r
886       0x1e940, 0x1e978, 0x1e986, 0x1e98c, 0x1e998, 0x1e9b0, 0x1e9be,\r
887       0x1e9ce, 0x1e9dc, 0x1e9e2, 0x1e9e4, 0x1e9e8, 0x1e9f6, 0x1ea04,\r
888       0x1ea08, 0x1ea10, 0x1ea20, 0x1ea40, 0x1ea78, 0x1eaf0, 0x1eb06,\r
889       0x1eb0c, 0x1eb18, 0x1eb30, 0x1eb3e, 0x1eb60, 0x1eb7c, 0x1eb8e,\r
890       0x1eb9c, 0x1ebb8, 0x1ebc2, 0x1ebc4, 0x1ebc8, 0x1ebd0, 0x1ebde,\r
891       0x1ebe6, 0x1ebec, 0x1ec1a, 0x1ec2e, 0x1ec32, 0x1ec34, 0x1ec4e,\r
892       0x1ec5c, 0x1ec62, 0x1ec64, 0x1ec68, 0x1ec8e, 0x1ec9c, 0x1ecb8,\r
893       0x1ecc2, 0x1ecc4, 0x1ecc8, 0x1ecd0, 0x1ece6, 0x1ecfa, 0x1ed0e,\r
894       0x1ed1c, 0x1ed38, 0x1ed70, 0x1ed7e, 0x1ed82, 0x1ed84, 0x1ed88,\r
895       0x1ed90, 0x1ed9e, 0x1eda0, 0x1edcc, 0x1edf2, 0x1edf4, 0x1ee16,\r
896       0x1ee26, 0x1ee2c, 0x1ee3a, 0x1ee46, 0x1ee4c, 0x1ee58, 0x1ee6e,\r
897       0x1ee72, 0x1ee74, 0x1ee86, 0x1ee8c, 0x1ee98, 0x1eeb0, 0x1eebe,\r
898       0x1eece, 0x1eedc, 0x1eee2, 0x1eee4, 0x1eee8, 0x1ef12, 0x1ef22,\r
899       0x1ef24, 0x1ef28, 0x1ef36, 0x1ef42, 0x1ef44, 0x1ef48, 0x1ef50,\r
900       0x1ef5e, 0x1ef66, 0x1ef6c, 0x1ef7a, 0x1efae, 0x1efb2, 0x1efb4,\r
901       0x1efd6, 0x1f096, 0x1f0a6, 0x1f0ac, 0x1f0ba, 0x1f0ca, 0x1f0d2,\r
902       0x1f0d4, 0x1f116, 0x1f126, 0x1f12c, 0x1f13a, 0x1f146, 0x1f14c,\r
903       0x1f158, 0x1f16e, 0x1f172, 0x1f174, 0x1f18a, 0x1f192, 0x1f194,\r
904       0x1f1a2, 0x1f1a4, 0x1f1a8, 0x1f1da, 0x1f216, 0x1f226, 0x1f22c,\r
905       0x1f23a, 0x1f246, 0x1f258, 0x1f26e, 0x1f272, 0x1f274, 0x1f286,\r
906       0x1f28c, 0x1f298, 0x1f2b0, 0x1f2be, 0x1f2ce, 0x1f2dc, 0x1f2e2,\r
907       0x1f2e4, 0x1f2e8, 0x1f2f6, 0x1f30a, 0x1f312, 0x1f314, 0x1f322,\r
908       0x1f328, 0x1f342, 0x1f344, 0x1f348, 0x1f350, 0x1f35e, 0x1f366,\r
909       0x1f37a, 0x1f39a, 0x1f3ae, 0x1f3b2, 0x1f3b4, 0x1f416, 0x1f426,\r
910       0x1f42c, 0x1f43a, 0x1f446, 0x1f44c, 0x1f458, 0x1f46e, 0x1f472,\r
911       0x1f474, 0x1f486, 0x1f48c, 0x1f498, 0x1f4b0, 0x1f4be, 0x1f4ce,\r
912       0x1f4dc, 0x1f4e2, 0x1f4e4, 0x1f4e8, 0x1f4f6, 0x1f506, 0x1f50c,\r
913       0x1f518, 0x1f530, 0x1f53e, 0x1f560, 0x1f57c, 0x1f58e, 0x1f59c,\r
914       0x1f5b8, 0x1f5c2, 0x1f5c4, 0x1f5c8, 0x1f5d0, 0x1f5de, 0x1f5e6,\r
915       0x1f5ec, 0x1f5fa, 0x1f60a, 0x1f612, 0x1f614, 0x1f622, 0x1f624,\r
916       0x1f628, 0x1f636, 0x1f642, 0x1f644, 0x1f648, 0x1f650, 0x1f65e,\r
917       0x1f666, 0x1f67a, 0x1f682, 0x1f684, 0x1f688, 0x1f690, 0x1f69e,\r
918       0x1f6a0, 0x1f6bc, 0x1f6cc, 0x1f6f2, 0x1f6f4, 0x1f71a, 0x1f72e,\r
919       0x1f732, 0x1f734, 0x1f74e, 0x1f75c, 0x1f762, 0x1f764, 0x1f768,\r
920       0x1f776, 0x1f796, 0x1f7a6, 0x1f7ac, 0x1f7ba, 0x1f7d2, 0x1f7d4,\r
921       0x1f89a, 0x1f8ae, 0x1f8b2, 0x1f8b4, 0x1f8d6, 0x1f8ea, 0x1f91a,\r
922       0x1f92e, 0x1f932, 0x1f934, 0x1f94e, 0x1f95c, 0x1f962, 0x1f964,\r
923       0x1f968, 0x1f976, 0x1f996, 0x1f9a6, 0x1f9ac, 0x1f9ba, 0x1f9ca,\r
924       0x1f9d2, 0x1f9d4, 0x1fa1a, 0x1fa2e, 0x1fa32, 0x1fa34, 0x1fa4e,\r
925       0x1fa5c, 0x1fa62, 0x1fa64, 0x1fa68, 0x1fa76, 0x1fa8e, 0x1fa9c,\r
926       0x1fab8, 0x1fac2, 0x1fac4, 0x1fac8, 0x1fad0, 0x1fade, 0x1fae6,\r
927       0x1faec, 0x1fb16, 0x1fb26, 0x1fb2c, 0x1fb3a, 0x1fb46, 0x1fb4c,\r
928       0x1fb58, 0x1fb6e, 0x1fb72, 0x1fb74, 0x1fb8a, 0x1fb92, 0x1fb94,\r
929       0x1fba2, 0x1fba4, 0x1fba8, 0x1fbb6, 0x1fbda};\r
930 \r
931   /**\r
932    * This table contains to codewords for all symbols.\r
933    */\r
934   private static final int[] CODEWORD_TABLE = {2627, 1819, 2622, 2621, 1813,\r
935       1812, 2729, 2724, 2723, 2779, 2774, 2773, 902, 896, 908, 868, 865,\r
936       861, 859, 2511, 873, 871, 1780, 835, 2493, 825, 2491, 842, 837, 844,\r
937       1764, 1762, 811, 810, 809, 2483, 807, 2482, 806, 2480, 815, 814, 813,\r
938       812, 2484, 817, 816, 1745, 1744, 1742, 1746, 2655, 2637, 2635, 2626,\r
939       2625, 2623, 2628, 1820, 2752, 2739, 2737, 2728, 2727, 2725, 2730,\r
940       2785, 2783, 2778, 2777, 2775, 2780, 787, 781, 747, 739, 736, 2413,\r
941       754, 752, 1719, 692, 689, 681, 2371, 678, 2369, 700, 697, 694, 703,\r
942       1688, 1686, 642, 638, 2343, 631, 2341, 627, 2338, 651, 646, 643, 2345,\r
943       654, 652, 1652, 1650, 1647, 1654, 601, 599, 2322, 596, 2321, 594,\r
944       2319, 2317, 611, 610, 608, 606, 2324, 603, 2323, 615, 614, 612, 1617,\r
945       1616, 1614, 1612, 616, 1619, 1618, 2575, 2538, 2536, 905, 901, 898,\r
946       909, 2509, 2507, 2504, 870, 867, 864, 860, 2512, 875, 872, 1781, 2490,\r
947       2489, 2487, 2485, 1748, 836, 834, 832, 830, 2494, 827, 2492, 843, 841,\r
948       839, 845, 1765, 1763, 2701, 2676, 2674, 2653, 2648, 2656, 2634, 2633,\r
949       2631, 2629, 1821, 2638, 2636, 2770, 2763, 2761, 2750, 2745, 2753,\r
950       2736, 2735, 2733, 2731, 1848, 2740, 2738, 2786, 2784, 591, 588, 576,\r
951       569, 566, 2296, 1590, 537, 534, 526, 2276, 522, 2274, 545, 542, 539,\r
952       548, 1572, 1570, 481, 2245, 466, 2242, 462, 2239, 492, 485, 482, 2249,\r
953       496, 494, 1534, 1531, 1528, 1538, 413, 2196, 406, 2191, 2188, 425,\r
954       419, 2202, 415, 2199, 432, 430, 427, 1472, 1467, 1464, 433, 1476,\r
955       1474, 368, 367, 2160, 365, 2159, 362, 2157, 2155, 2152, 378, 377, 375,\r
956       2166, 372, 2165, 369, 2162, 383, 381, 379, 2168, 1419, 1418, 1416,\r
957       1414, 385, 1411, 384, 1423, 1422, 1420, 1424, 2461, 802, 2441, 2439,\r
958       790, 786, 783, 794, 2409, 2406, 2403, 750, 742, 738, 2414, 756, 753,\r
959       1720, 2367, 2365, 2362, 2359, 1663, 693, 691, 684, 2373, 680, 2370,\r
960       702, 699, 696, 704, 1690, 1687, 2337, 2336, 2334, 2332, 1624, 2329,\r
961       1622, 640, 637, 2344, 634, 2342, 630, 2340, 650, 648, 645, 2346, 655,\r
962       653, 1653, 1651, 1649, 1655, 2612, 2597, 2595, 2571, 2568, 2565, 2576,\r
963       2534, 2529, 2526, 1787, 2540, 2537, 907, 904, 900, 910, 2503, 2502,\r
964       2500, 2498, 1768, 2495, 1767, 2510, 2508, 2506, 869, 866, 863, 2513,\r
965       876, 874, 1782, 2720, 2713, 2711, 2697, 2694, 2691, 2702, 2672, 2670,\r
966       2664, 1828, 2678, 2675, 2647, 2646, 2644, 2642, 1823, 2639, 1822,\r
967       2654, 2652, 2650, 2657, 2771, 1855, 2765, 2762, 1850, 1849, 2751,\r
968       2749, 2747, 2754, 353, 2148, 344, 342, 336, 2142, 332, 2140, 345,\r
969       1375, 1373, 306, 2130, 299, 2128, 295, 2125, 319, 314, 311, 2132,\r
970       1354, 1352, 1349, 1356, 262, 257, 2101, 253, 2096, 2093, 274, 273,\r
971       267, 2107, 263, 2104, 280, 278, 275, 1316, 1311, 1308, 1320, 1318,\r
972       2052, 202, 2050, 2044, 2040, 219, 2063, 212, 2060, 208, 2055, 224,\r
973       221, 2066, 1260, 1258, 1252, 231, 1248, 229, 1266, 1264, 1261, 1268,\r
974       155, 1998, 153, 1996, 1994, 1991, 1988, 165, 164, 2007, 162, 2006,\r
975       159, 2003, 2000, 172, 171, 169, 2012, 166, 2010, 1186, 1184, 1182,\r
976       1179, 175, 1176, 173, 1192, 1191, 1189, 1187, 176, 1194, 1193, 2313,\r
977       2307, 2305, 592, 589, 2294, 2292, 2289, 578, 572, 568, 2297, 580,\r
978       1591, 2272, 2267, 2264, 1547, 538, 536, 529, 2278, 525, 2275, 547,\r
979       544, 541, 1574, 1571, 2237, 2235, 2229, 1493, 2225, 1489, 478, 2247,\r
980       470, 2244, 465, 2241, 493, 488, 484, 2250, 498, 495, 1536, 1533, 1530,\r
981       1539, 2187, 2186, 2184, 2182, 1432, 2179, 1430, 2176, 1427, 414, 412,\r
982       2197, 409, 2195, 405, 2193, 2190, 426, 424, 421, 2203, 418, 2201, 431,\r
983       429, 1473, 1471, 1469, 1466, 434, 1477, 1475, 2478, 2472, 2470, 2459,\r
984       2457, 2454, 2462, 803, 2437, 2432, 2429, 1726, 2443, 2440, 792, 789,\r
985       785, 2401, 2399, 2393, 1702, 2389, 1699, 2411, 2408, 2405, 745, 741,\r
986       2415, 758, 755, 1721, 2358, 2357, 2355, 2353, 1661, 2350, 1660, 2347,\r
987       1657, 2368, 2366, 2364, 2361, 1666, 690, 687, 2374, 683, 2372, 701,\r
988       698, 705, 1691, 1689, 2619, 2617, 2610, 2608, 2605, 2613, 2593, 2588,\r
989       2585, 1803, 2599, 2596, 2563, 2561, 2555, 1797, 2551, 1795, 2573,\r
990       2570, 2567, 2577, 2525, 2524, 2522, 2520, 1786, 2517, 1785, 2514,\r
991       1783, 2535, 2533, 2531, 2528, 1788, 2541, 2539, 906, 903, 911, 2721,\r
992       1844, 2715, 2712, 1838, 1836, 2699, 2696, 2693, 2703, 1827, 1826,\r
993       1824, 2673, 2671, 2669, 2666, 1829, 2679, 2677, 1858, 1857, 2772,\r
994       1854, 1853, 1851, 1856, 2766, 2764, 143, 1987, 139, 1986, 135, 133,\r
995       131, 1984, 128, 1983, 125, 1981, 138, 137, 136, 1985, 1133, 1132,\r
996       1130, 112, 110, 1974, 107, 1973, 104, 1971, 1969, 122, 121, 119, 117,\r
997       1977, 114, 1976, 124, 1115, 1114, 1112, 1110, 1117, 1116, 84, 83,\r
998       1953, 81, 1952, 78, 1950, 1948, 1945, 94, 93, 91, 1959, 88, 1958, 85,\r
999       1955, 99, 97, 95, 1961, 1086, 1085, 1083, 1081, 1078, 100, 1090, 1089,\r
1000       1087, 1091, 49, 47, 1917, 44, 1915, 1913, 1910, 1907, 59, 1926, 56,\r
1001       1925, 53, 1922, 1919, 66, 64, 1931, 61, 1929, 1042, 1040, 1038, 71,\r
1002       1035, 70, 1032, 68, 1048, 1047, 1045, 1043, 1050, 1049, 12, 10, 1869,\r
1003       1867, 1864, 1861, 21, 1880, 19, 1877, 1874, 1871, 28, 1888, 25, 1886,\r
1004       22, 1883, 982, 980, 977, 974, 32, 30, 991, 989, 987, 984, 34, 995,\r
1005       994, 992, 2151, 2150, 2147, 2146, 2144, 356, 355, 354, 2149, 2139,\r
1006       2138, 2136, 2134, 1359, 343, 341, 338, 2143, 335, 2141, 348, 347, 346,\r
1007       1376, 1374, 2124, 2123, 2121, 2119, 1326, 2116, 1324, 310, 308, 305,\r
1008       2131, 302, 2129, 298, 2127, 320, 318, 316, 313, 2133, 322, 321, 1355,\r
1009       1353, 1351, 1357, 2092, 2091, 2089, 2087, 1276, 2084, 1274, 2081,\r
1010       1271, 259, 2102, 256, 2100, 252, 2098, 2095, 272, 269, 2108, 266,\r
1011       2106, 281, 279, 277, 1317, 1315, 1313, 1310, 282, 1321, 1319, 2039,\r
1012       2037, 2035, 2032, 1203, 2029, 1200, 1197, 207, 2053, 205, 2051, 201,\r
1013       2049, 2046, 2043, 220, 218, 2064, 215, 2062, 211, 2059, 228, 226, 223,\r
1014       2069, 1259, 1257, 1254, 232, 1251, 230, 1267, 1265, 1263, 2316, 2315,\r
1015       2312, 2311, 2309, 2314, 2304, 2303, 2301, 2299, 1593, 2308, 2306, 590,\r
1016       2288, 2287, 2285, 2283, 1578, 2280, 1577, 2295, 2293, 2291, 579, 577,\r
1017       574, 571, 2298, 582, 581, 1592, 2263, 2262, 2260, 2258, 1545, 2255,\r
1018       1544, 2252, 1541, 2273, 2271, 2269, 2266, 1550, 535, 532, 2279, 528,\r
1019       2277, 546, 543, 549, 1575, 1573, 2224, 2222, 2220, 1486, 2217, 1485,\r
1020       2214, 1482, 1479, 2238, 2236, 2234, 2231, 1496, 2228, 1492, 480, 477,\r
1021       2248, 473, 2246, 469, 2243, 490, 487, 2251, 497, 1537, 1535, 1532,\r
1022       2477, 2476, 2474, 2479, 2469, 2468, 2466, 2464, 1730, 2473, 2471,\r
1023       2453, 2452, 2450, 2448, 1729, 2445, 1728, 2460, 2458, 2456, 2463, 805,\r
1024       804, 2428, 2427, 2425, 2423, 1725, 2420, 1724, 2417, 1722, 2438, 2436,\r
1025       2434, 2431, 1727, 2444, 2442, 793, 791, 788, 795, 2388, 2386, 2384,\r
1026       1697, 2381, 1696, 2378, 1694, 1692, 2402, 2400, 2398, 2395, 1703,\r
1027       2392, 1701, 2412, 2410, 2407, 751, 748, 744, 2416, 759, 757, 1807,\r
1028       2620, 2618, 1806, 1805, 2611, 2609, 2607, 2614, 1802, 1801, 1799,\r
1029       2594, 2592, 2590, 2587, 1804, 2600, 2598, 1794, 1793, 1791, 1789,\r
1030       2564, 2562, 2560, 2557, 1798, 2554, 1796, 2574, 2572, 2569, 2578,\r
1031       1847, 1846, 2722, 1843, 1842, 1840, 1845, 2716, 2714, 1835, 1834,\r
1032       1832, 1830, 1839, 1837, 2700, 2698, 2695, 2704, 1817, 1811, 1810, 897,\r
1033       862, 1777, 829, 826, 838, 1760, 1758, 808, 2481, 1741, 1740, 1738,\r
1034       1743, 2624, 1818, 2726, 2776, 782, 740, 737, 1715, 686, 679, 695,\r
1035       1682, 1680, 639, 628, 2339, 647, 644, 1645, 1643, 1640, 1648, 602,\r
1036       600, 597, 595, 2320, 593, 2318, 609, 607, 604, 1611, 1610, 1608, 1606,\r
1037       613, 1615, 1613, 2328, 926, 924, 892, 886, 899, 857, 850, 2505, 1778,\r
1038       824, 823, 821, 819, 2488, 818, 2486, 833, 831, 828, 840, 1761, 1759,\r
1039       2649, 2632, 2630, 2746, 2734, 2732, 2782, 2781, 570, 567, 1587, 531,\r
1040       527, 523, 540, 1566, 1564, 476, 467, 463, 2240, 486, 483, 1524, 1521,\r
1041       1518, 1529, 411, 403, 2192, 399, 2189, 423, 416, 1462, 1457, 1454,\r
1042       428, 1468, 1465, 2210, 366, 363, 2158, 360, 2156, 357, 2153, 376, 373,\r
1043       370, 2163, 1410, 1409, 1407, 1405, 382, 1402, 380, 1417, 1415, 1412,\r
1044       1421, 2175, 2174, 777, 774, 771, 784, 732, 725, 722, 2404, 743, 1716,\r
1045       676, 674, 668, 2363, 665, 2360, 685, 1684, 1681, 626, 624, 622, 2335,\r
1046       620, 2333, 617, 2330, 641, 635, 649, 1646, 1644, 1642, 2566, 928, 925,\r
1047       2530, 2527, 894, 891, 888, 2501, 2499, 2496, 858, 856, 854, 851, 1779,\r
1048       2692, 2668, 2665, 2645, 2643, 2640, 2651, 2768, 2759, 2757, 2744,\r
1049       2743, 2741, 2748, 352, 1382, 340, 337, 333, 1371, 1369, 307, 300, 296,\r
1050       2126, 315, 312, 1347, 1342, 1350, 261, 258, 250, 2097, 246, 2094, 271,\r
1051       268, 264, 1306, 1301, 1298, 276, 1312, 1309, 2115, 203, 2048, 195,\r
1052       2045, 191, 2041, 213, 209, 2056, 1246, 1244, 1238, 225, 1234, 222,\r
1053       1256, 1253, 1249, 1262, 2080, 2079, 154, 1997, 150, 1995, 147, 1992,\r
1054       1989, 163, 160, 2004, 156, 2001, 1175, 1174, 1172, 1170, 1167, 170,\r
1055       1164, 167, 1185, 1183, 1180, 1177, 174, 1190, 1188, 2025, 2024, 2022,\r
1056       587, 586, 564, 559, 556, 2290, 573, 1588, 520, 518, 512, 2268, 508,\r
1057       2265, 530, 1568, 1565, 461, 457, 2233, 450, 2230, 446, 2226, 479, 471,\r
1058       489, 1526, 1523, 1520, 397, 395, 2185, 392, 2183, 389, 2180, 2177,\r
1059       410, 2194, 402, 422, 1463, 1461, 1459, 1456, 1470, 2455, 799, 2433,\r
1060       2430, 779, 776, 773, 2397, 2394, 2390, 734, 728, 724, 746, 1717, 2356,\r
1061       2354, 2351, 2348, 1658, 677, 675, 673, 670, 667, 688, 1685, 1683,\r
1062       2606, 2589, 2586, 2559, 2556, 2552, 927, 2523, 2521, 2518, 2515, 1784,\r
1063       2532, 895, 893, 890, 2718, 2709, 2707, 2689, 2687, 2684, 2663, 2662,\r
1064       2660, 2658, 1825, 2667, 2769, 1852, 2760, 2758, 142, 141, 1139, 1138,\r
1065       134, 132, 129, 126, 1982, 1129, 1128, 1126, 1131, 113, 111, 108, 105,\r
1066       1972, 101, 1970, 120, 118, 115, 1109, 1108, 1106, 1104, 123, 1113,\r
1067       1111, 82, 79, 1951, 75, 1949, 72, 1946, 92, 89, 86, 1956, 1077, 1076,\r
1068       1074, 1072, 98, 1069, 96, 1084, 1082, 1079, 1088, 1968, 1967, 48, 45,\r
1069       1916, 42, 1914, 39, 1911, 1908, 60, 57, 54, 1923, 50, 1920, 1031,\r
1070       1030, 1028, 1026, 67, 1023, 65, 1020, 62, 1041, 1039, 1036, 1033, 69,\r
1071       1046, 1044, 1944, 1943, 1941, 11, 9, 1868, 7, 1865, 1862, 1859, 20,\r
1072       1878, 16, 1875, 13, 1872, 970, 968, 966, 963, 29, 960, 26, 23, 983,\r
1073       981, 978, 975, 33, 971, 31, 990, 988, 985, 1906, 1904, 1902, 993, 351,\r
1074       2145, 1383, 331, 330, 328, 326, 2137, 323, 2135, 339, 1372, 1370, 294,\r
1075       293, 291, 289, 2122, 286, 2120, 283, 2117, 309, 303, 317, 1348, 1346,\r
1076       1344, 245, 244, 242, 2090, 239, 2088, 236, 2085, 2082, 260, 2099, 249,\r
1077       270, 1307, 1305, 1303, 1300, 1314, 189, 2038, 186, 2036, 183, 2033,\r
1078       2030, 2026, 206, 198, 2047, 194, 216, 1247, 1245, 1243, 1240, 227,\r
1079       1237, 1255, 2310, 2302, 2300, 2286, 2284, 2281, 565, 563, 561, 558,\r
1080       575, 1589, 2261, 2259, 2256, 2253, 1542, 521, 519, 517, 514, 2270,\r
1081       511, 533, 1569, 1567, 2223, 2221, 2218, 2215, 1483, 2211, 1480, 459,\r
1082       456, 453, 2232, 449, 474, 491, 1527, 1525, 1522, 2475, 2467, 2465,\r
1083       2451, 2449, 2446, 801, 800, 2426, 2424, 2421, 2418, 1723, 2435, 780,\r
1084       778, 775, 2387, 2385, 2382, 2379, 1695, 2375, 1693, 2396, 735, 733,\r
1085       730, 727, 749, 1718, 2616, 2615, 2604, 2603, 2601, 2584, 2583, 2581,\r
1086       2579, 1800, 2591, 2550, 2549, 2547, 2545, 1792, 2542, 1790, 2558, 929,\r
1087       2719, 1841, 2710, 2708, 1833, 1831, 2690, 2688, 2686, 1815, 1809,\r
1088       1808, 1774, 1756, 1754, 1737, 1736, 1734, 1739, 1816, 1711, 1676,\r
1089       1674, 633, 629, 1638, 1636, 1633, 1641, 598, 1605, 1604, 1602, 1600,\r
1090       605, 1609, 1607, 2327, 887, 853, 1775, 822, 820, 1757, 1755, 1584,\r
1091       524, 1560, 1558, 468, 464, 1514, 1511, 1508, 1519, 408, 404, 400,\r
1092       1452, 1447, 1444, 417, 1458, 1455, 2208, 364, 361, 358, 2154, 1401,\r
1093       1400, 1398, 1396, 374, 1393, 371, 1408, 1406, 1403, 1413, 2173, 2172,\r
1094       772, 726, 723, 1712, 672, 669, 666, 682, 1678, 1675, 625, 623, 621,\r
1095       618, 2331, 636, 632, 1639, 1637, 1635, 920, 918, 884, 880, 889, 849,\r
1096       848, 847, 846, 2497, 855, 852, 1776, 2641, 2742, 2787, 1380, 334,\r
1097       1367, 1365, 301, 297, 1340, 1338, 1335, 1343, 255, 251, 247, 1296,\r
1098       1291, 1288, 265, 1302, 1299, 2113, 204, 196, 192, 2042, 1232, 1230,\r
1099       1224, 214, 1220, 210, 1242, 1239, 1235, 1250, 2077, 2075, 151, 148,\r
1100       1993, 144, 1990, 1163, 1162, 1160, 1158, 1155, 161, 1152, 157, 1173,\r
1101       1171, 1168, 1165, 168, 1181, 1178, 2021, 2020, 2018, 2023, 585, 560,\r
1102       557, 1585, 516, 509, 1562, 1559, 458, 447, 2227, 472, 1516, 1513,\r
1103       1510, 398, 396, 393, 390, 2181, 386, 2178, 407, 1453, 1451, 1449,\r
1104       1446, 420, 1460, 2209, 769, 764, 720, 712, 2391, 729, 1713, 664, 663,\r
1105       661, 659, 2352, 656, 2349, 671, 1679, 1677, 2553, 922, 919, 2519,\r
1106       2516, 885, 883, 881, 2685, 2661, 2659, 2767, 2756, 2755, 140, 1137,\r
1107       1136, 130, 127, 1125, 1124, 1122, 1127, 109, 106, 102, 1103, 1102,\r
1108       1100, 1098, 116, 1107, 1105, 1980, 80, 76, 73, 1947, 1068, 1067, 1065,\r
1109       1063, 90, 1060, 87, 1075, 1073, 1070, 1080, 1966, 1965, 46, 43, 40,\r
1110       1912, 36, 1909, 1019, 1018, 1016, 1014, 58, 1011, 55, 1008, 51, 1029,\r
1111       1027, 1024, 1021, 63, 1037, 1034, 1940, 1939, 1937, 1942, 8, 1866, 4,\r
1112       1863, 1, 1860, 956, 954, 952, 949, 946, 17, 14, 969, 967, 964, 961,\r
1113       27, 957, 24, 979, 976, 972, 1901, 1900, 1898, 1896, 986, 1905, 1903,\r
1114       350, 349, 1381, 329, 327, 324, 1368, 1366, 292, 290, 287, 284, 2118,\r
1115       304, 1341, 1339, 1337, 1345, 243, 240, 237, 2086, 233, 2083, 254,\r
1116       1297, 1295, 1293, 1290, 1304, 2114, 190, 187, 184, 2034, 180, 2031,\r
1117       177, 2027, 199, 1233, 1231, 1229, 1226, 217, 1223, 1241, 2078, 2076,\r
1118       584, 555, 554, 552, 550, 2282, 562, 1586, 507, 506, 504, 502, 2257,\r
1119       499, 2254, 515, 1563, 1561, 445, 443, 441, 2219, 438, 2216, 435, 2212,\r
1120       460, 454, 475, 1517, 1515, 1512, 2447, 798, 797, 2422, 2419, 770, 768,\r
1121       766, 2383, 2380, 2376, 721, 719, 717, 714, 731, 1714, 2602, 2582,\r
1122       2580, 2548, 2546, 2543, 923, 921, 2717, 2706, 2705, 2683, 2682, 2680,\r
1123       1771, 1752, 1750, 1733, 1732, 1731, 1735, 1814, 1707, 1670, 1668,\r
1124       1631, 1629, 1626, 1634, 1599, 1598, 1596, 1594, 1603, 1601, 2326,\r
1125       1772, 1753, 1751, 1581, 1554, 1552, 1504, 1501, 1498, 1509, 1442,\r
1126       1437, 1434, 401, 1448, 1445, 2206, 1392, 1391, 1389, 1387, 1384, 359,\r
1127       1399, 1397, 1394, 1404, 2171, 2170, 1708, 1672, 1669, 619, 1632, 1630,\r
1128       1628, 1773, 1378, 1363, 1361, 1333, 1328, 1336, 1286, 1281, 1278, 248,\r
1129       1292, 1289, 2111, 1218, 1216, 1210, 197, 1206, 193, 1228, 1225, 1221,\r
1130       1236, 2073, 2071, 1151, 1150, 1148, 1146, 152, 1143, 149, 1140, 145,\r
1131       1161, 1159, 1156, 1153, 158, 1169, 1166, 2017, 2016, 2014, 2019, 1582,\r
1132       510, 1556, 1553, 452, 448, 1506, 1500, 394, 391, 387, 1443, 1441,\r
1133       1439, 1436, 1450, 2207, 765, 716, 713, 1709, 662, 660, 657, 1673,\r
1134       1671, 916, 914, 879, 878, 877, 882, 1135, 1134, 1121, 1120, 1118,\r
1135       1123, 1097, 1096, 1094, 1092, 103, 1101, 1099, 1979, 1059, 1058, 1056,\r
1136       1054, 77, 1051, 74, 1066, 1064, 1061, 1071, 1964, 1963, 1007, 1006,\r
1137       1004, 1002, 999, 41, 996, 37, 1017, 1015, 1012, 1009, 52, 1025, 1022,\r
1138       1936, 1935, 1933, 1938, 942, 940, 938, 935, 932, 5, 2, 955, 953, 950,\r
1139       947, 18, 943, 15, 965, 962, 958, 1895, 1894, 1892, 1890, 973, 1899,\r
1140       1897, 1379, 325, 1364, 1362, 288, 285, 1334, 1332, 1330, 241, 238,\r
1141       234, 1287, 1285, 1283, 1280, 1294, 2112, 188, 185, 181, 178, 2028,\r
1142       1219, 1217, 1215, 1212, 200, 1209, 1227, 2074, 2072, 583, 553, 551,\r
1143       1583, 505, 503, 500, 513, 1557, 1555, 444, 442, 439, 436, 2213, 455,\r
1144       451, 1507, 1505, 1502, 796, 763, 762, 760, 767, 711, 710, 708, 706,\r
1145       2377, 718, 715, 1710, 2544, 917, 915, 2681, 1627, 1597, 1595, 2325,\r
1146       1769, 1749, 1747, 1499, 1438, 1435, 2204, 1390, 1388, 1385, 1395,\r
1147       2169, 2167, 1704, 1665, 1662, 1625, 1623, 1620, 1770, 1329, 1282,\r
1148       1279, 2109, 1214, 1207, 1222, 2068, 2065, 1149, 1147, 1144, 1141, 146,\r
1149       1157, 1154, 2013, 2011, 2008, 2015, 1579, 1549, 1546, 1495, 1487,\r
1150       1433, 1431, 1428, 1425, 388, 1440, 2205, 1705, 658, 1667, 1664, 1119,\r
1151       1095, 1093, 1978, 1057, 1055, 1052, 1062, 1962, 1960, 1005, 1003,\r
1152       1000, 997, 38, 1013, 1010, 1932, 1930, 1927, 1934, 941, 939, 936, 933,\r
1153       6, 930, 3, 951, 948, 944, 1889, 1887, 1884, 1881, 959, 1893, 1891, 35,\r
1154       1377, 1360, 1358, 1327, 1325, 1322, 1331, 1277, 1275, 1272, 1269, 235,\r
1155       1284, 2110, 1205, 1204, 1201, 1198, 182, 1195, 179, 1213, 2070, 2067,\r
1156       1580, 501, 1551, 1548, 440, 437, 1497, 1494, 1490, 1503, 761, 709,\r
1157       707, 1706, 913, 912, 2198, 1386, 2164, 2161, 1621, 1766, 2103, 1208,\r
1158       2058, 2054, 1145, 1142, 2005, 2002, 1999, 2009, 1488, 1429, 1426,\r
1159       2200, 1698, 1659, 1656, 1975, 1053, 1957, 1954, 1001, 998, 1924, 1921,\r
1160       1918, 1928, 937, 934, 931, 1879, 1876, 1873, 1870, 945, 1885, 1882,\r
1161       1323, 1273, 1270, 2105, 1202, 1199, 1196, 1211, 2061, 2057, 1576,\r
1162       1543, 1540, 1484, 1481, 1478, 1491, 1700};\r
1163 }\r