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