home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1998 February / VPR9802A.ISO / APP_DEMO / VC / MAIN.BIN / DecompositionIterator.java < prev    next >
Text File  |  1997-10-27  |  83KB  |  1,436 lines

  1. /*
  2.  * @(#)DecompositionIterator.java    1.13 97/01/20
  3.  *
  4.  * (C) Copyright Taligent, Inc. 1996 - All Rights Reserved
  5.  * (C) Copyright IBM Corp. 1996 - All Rights Reserved
  6.  *
  7.  * Portions copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
  8.  *
  9.  *   The original version of this source code and documentation is copyrighted
  10.  * and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
  11.  * materials are provided under terms of a License Agreement between Taligent
  12.  * and Sun. This technology is protected by multiple US and International
  13.  * patents. This notice and attribution to Taligent may not be removed.
  14.  *   Taligent is a registered trademark of Taligent, Inc.
  15.  *
  16.  * Permission to use, copy, modify, and distribute this software
  17.  * and its documentation for NON-COMMERCIAL purposes and without
  18.  * fee is hereby granted provided that this copyright notice
  19.  * appears in all copies. Please refer to the file "copyright.html"
  20.  * for further important copyright and licensing information.
  21.  *
  22.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
  23.  * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
  24.  * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
  25.  * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
  26.  * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
  27.  * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
  28.  *
  29.  */
  30.  
  31. package java.text;
  32.  
  33. /**
  34.   * Contains statics for decomposing strings.
  35.   * Eventually ought to be in either Char or String.  This class is only
  36.   * for internal use for now.
  37.   * <p>
  38.   * Unicode defines a set of non-spacing marks that can be combined with
  39.   * base characters to form a single "conceptual" character.  Often these
  40.   * combinations have pre-composed equivalents elsewhere in Unicode.  For
  41.   * operations such as locale-sensitive text comparison, it is necessary to
  42.   * be able to decompose a Unicode character into an equivalent string.
  43.   * The composition operation is also necessary.  It is proposed that at
  44.   * least the decompose function be added as a static method on String, or
  45.   * StringBuffer or Character.
  46.   * @see        Collator
  47.   * @see        RuleBasedCollator
  48.   * @version    1.13 01/20/97
  49.   * @author     Mark Davis, Helena Shih
  50. */
  51. class DecompositionIterator {
  52.     /**
  53.      * Null order which indicates the end of string is reached by the
  54.      * cursor.
  55.      */
  56.     public final static char NULLORDER = 0xffff;
  57.     /**
  58.      * Create a decomposed string iterator.
  59.      */
  60.     public DecompositionIterator(String src, int start, int end, int mode) {
  61.         str = src;
  62.         parsedStr = new StringBuffer(src.length());
  63.         sIndex = start;
  64.         pIndex = 0;
  65.         getBeginIndex = start;
  66.         getEndIndex = end;
  67.         decmpMode = mode;
  68.     }
  69.     /**
  70.      * Get the next character.
  71.      */
  72.     public char next() {
  73.         char ch;
  74.         if (decmpMode == Collator.NO_DECOMPOSITION) {
  75.             if (sIndex >= str.length())
  76.                 return NULLORDER;
  77.             return str.charAt(sIndex++);
  78.         }
  79.         if (pIndex >= parsedStr.length()) {
  80.             parsedStr.setLength(0);
  81.             pIndex = 0;
  82.             uptoOffset = sIndex;
  83.             if (sIndex >= getEndIndex) {
  84.                 return NULLORDER;
  85.             }
  86.             ch = str.charAt(uptoOffset++);
  87.             parsedStr.append(ch);
  88.             while (uptoOffset < getEndIndex) {
  89.                 ch = str.charAt(uptoOffset);
  90.                 if (((((1 << Character.NON_SPACING_MARK) |
  91.                        (1 << Character.ENCLOSING_MARK) |
  92.                        (1 << Character.COMBINING_SPACING_MARK)) >>
  93.                      Character.getType(ch)) & 1) != 0) {
  94.                     break;
  95.                 }
  96.                 parsedStr.append(ch);
  97.                 uptoOffset++;
  98.             }
  99.             decompose(parsedStr, decmpMode);
  100.             fixCanonical(parsedStr);
  101.             uptoOffset -= sIndex;
  102.             sIndex += uptoOffset;
  103.         }
  104.         return parsedStr.charAt(pIndex++);
  105.     }
  106.     public char previous() {
  107.         if (decmpMode == Collator.NO_DECOMPOSITION) {
  108.             if (sIndex <= getBeginIndex)
  109.                 return NULLORDER;
  110.             return str.charAt(--sIndex);
  111.         }
  112.         if (pIndex <= parsedStr.length()) {
  113.             if (pIndex > 1) {
  114.                 pIndex--;
  115.                 return parsedStr.charAt(pIndex);
  116.             } else {
  117.                 parsedStr.setLength(0);
  118.                 pIndex = 0;
  119.                 sIndex -= uptoOffset;
  120.             }
  121.         }
  122.         if (sIndex < str.length())
  123.             return str.charAt(sIndex);
  124.         else
  125.             return NULLORDER;
  126.     }
  127.     /**
  128.      * Resets the cursor to the beginning of the string.
  129.      */
  130.     public void reset() {
  131.         sIndex = getBeginIndex;
  132.         pIndex = 0;
  133.     }
  134.  
  135.     // -------------------------------------------------------------
  136.     // private
  137.     // -------------------------------------------------------------
  138.     /**
  139.      * Decomposes a character into a string
  140.      * If the source can't be decomposed, return "".
  141.      * @param source the character to be decomposed with
  142.      * @param mode the decomposition mode
  143.      * @return the decomposed string
  144.      * @see java.text.Collator
  145.      * @see java.text.Collator#getDecomposition
  146.      * @see java.text.Collator#setDecomposition
  147.      */
  148.     static String decompose(char source, int mode) {
  149.         if (mode == Collator.NO_DECOMPOSITION) {
  150.             StringBuffer tmp = new StringBuffer();
  151.             tmp.append(source);
  152.             return tmp.toString();
  153.         }
  154.         int limit = (mode == Collator.CANONICAL_DECOMPOSITION) ?
  155.             maximumCanonical : SHORT_MAX_VALUE;
  156.         int index = startOffsets.elementAt(source);
  157.         if (index >= limit) return "";
  158.         StringBuffer result = new StringBuffer();
  159.         while (true) {
  160.             char ch = contents.charAt(index++);
  161.             if (ch == '\u0000') break;
  162.             result.append(ch);
  163.         }
  164.         return result.toString();
  165.     }
  166.     static void decompose(StringBuffer source, int mode) {
  167.         decompose(source,0,source.length(),mode);
  168.     }
  169.  
  170.     static void decompose(StringBuffer source, int start, int end,
  171.                                    int mode)
  172.     {
  173.         if (mode == Collator.NO_DECOMPOSITION) {
  174.             String temp = source.toString().substring(start, end);
  175.             source.setLength(0);
  176.             source.append(temp);
  177.         }
  178.         int limit = (mode == Collator.CANONICAL_DECOMPOSITION) ?
  179.             maximumCanonical : SHORT_MAX_VALUE;
  180.         StringBuffer result = new StringBuffer();
  181.         for (int i = start; i < end; ++i) {
  182.             char ch = source.charAt(i);
  183.             int index = startOffsets.elementAt(ch);
  184.             if (index >= limit) result.append(ch);
  185.             else while (true) {
  186.                 ch = contents.charAt(index++);
  187.                 if (ch == '\u0000') break;
  188.                 result.append(ch);
  189.             }
  190.         }
  191.         source.setLength(0);
  192.         source.append(result.toString());
  193.     }
  194.     /**
  195.      * Decomposes string into string
  196.      * If the source can't be decomposed, return "".
  197.      * @param source the string to be decomposed with
  198.      * @param mode the decomposition mode
  199.      * @return the decomposed string
  200.      * @see java.text.Collator
  201.      * @see java.text.Collator#getDecomposition
  202.      * @see java.text.Collator#setDecomposition
  203.      */
  204.     static String decompose(String source, int mode) {
  205.         return decompose(source,0,source.length(),mode);
  206.     }
  207.     /**
  208.      * Decomposes a range of string into string
  209.      * If the source can't be decomposed, return "".
  210.      * @param source the string to be decomposed with
  211.      * @param start the start offset of the text range
  212.      * @param end the end offset of the text range
  213.      * @param mode the decomposition mode
  214.      * @return the decomposed string
  215.      * @see java.text.Collator
  216.      * @see java.text.Collator#getDecomposition
  217.      * @see java.text.Collator#setDecomposition
  218.      */
  219.     static String decompose(String source, int start, int end,
  220.                                    int mode)
  221.     {
  222.         if (mode == Collator.NO_DECOMPOSITION) {
  223.             return source.substring(start, end);
  224.         }
  225.         int limit = (mode == Collator.CANONICAL_DECOMPOSITION) ?
  226.             maximumCanonical : SHORT_MAX_VALUE;
  227.         StringBuffer result = new StringBuffer();
  228.         for (int i = start; i < end; ++i) {
  229.             char ch = source.charAt(i);
  230.             int index = startOffsets.elementAt(ch);
  231.             if (index >= limit) result.append(ch);
  232.             else while (true) {
  233.                 ch = contents.charAt(index++);
  234.                 if (ch == '\u0000') break;
  235.                 result.append(ch);
  236.             }
  237.         }
  238.         return result.toString();
  239.     }
  240.     /**
  241.      * Use for fast access in a tight loop.
  242.      * Puts count characters into output buffer, with no heap allocations.
  243.      * If the source can't be decomposed, returns length == 0;
  244.      * Make sure that you allocate an array of getMaximumDecomposition()
  245.      * members.
  246.      * @param source the character to be decomposed with
  247.      * @param output the character array to store the deomposed result string
  248.      * @param mode the decomposition mode
  249.      * @return the number of character of decomposed source string
  250.      * @see java.text.Collator
  251.      * @see java.text.Collator#getDecomposition
  252.      * @see java.text.Collator#setDecomposition
  253.      */
  254.     static int decompose(char source,
  255.                          char[] output,
  256.                          int mode)
  257.     {
  258.         if (mode == Collator.NO_DECOMPOSITION) {
  259.             output[0] = source;
  260.             output[1] = 0;
  261.             return 1;
  262.         }
  263.         int limit = (mode == Collator.CANONICAL_DECOMPOSITION) ?
  264.             maximumCanonical : SHORT_MAX_VALUE;
  265.         int index = startOffsets.elementAt(source);
  266.         if (index >= limit) return 0;
  267.         int i = 0;
  268.         while (true) {
  269.             char ch = contents.charAt(index++);
  270.             if (ch == '\u0000') break;
  271.             output[i++] = ch;
  272.         }
  273.         return i;
  274.     }
  275.     /**
  276.      * Use to allocate array for using decompose in a tight loop.
  277.      * @return the maximum decomposition result characters for output
  278.      */
  279.     static int getMaximumDecomposition() {
  280.         return maximumDecomposition;
  281.     }
  282.  
  283.     //-----------------------------------------------------------
  284.     // privates
  285.     //-----------------------------------------------------------
  286.     //should be in Short class
  287.     private static final short SHORT_MAX_VALUE = 32767;
  288.     private static final char STERMINATOR = (char)0x0000;
  289.  
  290.     // GENERATED
  291.     // Only making short array!!!
  292.     private static final short kOffsetIndex[] = {
  293.     (short)0, (short)128, (short)256, (short)384, (short)512,
  294.     (short)640,
  295.     (short)768, (short)768, (short)768, (short)768, (short)768,
  296.     (short)768, (short)768, (short)768, (short)768, (short)768,
  297.     (short)768, (short)768, (short)768, (short)768, (short)768,
  298.     (short)768, (short)768, (short)768, (short)768, (short)768,
  299.     (short)768, (short)768, (short)768, (short)768, (short)768,
  300.     (short)768, (short)768, (short)768, (short)768, (short)768,
  301.     (short)768, (short)768, (short)768, (short)768, (short)768,
  302.     (short)768, (short)768, (short)768, (short)768, (short)768,
  303.     (short)768, (short)768, (short)768, (short)768, (short)768,
  304.     (short)768, (short)768, (short)768, (short)768, (short)768,
  305.     (short)768, (short)768, (short)768, (short)768, (short)768,
  306.     (short)768, (short)768, (short)768, (short)768, (short)896,
  307.     (short)768, (short)768, (short)768, (short)768, (short)768,
  308.     (short)768, (short)768, (short)768, (short)768, (short)768,
  309.     (short)768, (short)768, (short)768, (short)768, (short)768,
  310.     (short)768, (short)768, (short)768, (short)768, (short)768,
  311.     (short)768, (short)768, (short)768, (short)768, (short)768,
  312.     (short)768, (short)768, (short)768, (short)768, (short)768,
  313.     (short)768, (short)768, (short)768, (short)768, (short)768,
  314.     (short)768, (short)768, (short)768, (short)768, (short)768,
  315.     (short)768, (short)768, (short)768, (short)768, (short)768,
  316.     (short)768, (short)768, (short)768, (short)768, (short)768,
  317.     (short)768, (short)768, (short)768, (short)768, (short)768,
  318.     (short)768, (short)768, (short)768, (short)768, (short)768,
  319.     (short)768, (short)768, (short)768, (short)768, (short)768,
  320.     (short)768, (short)768, (short)768, (short)768, (short)768,
  321.     (short)768, (short)768, (short)768, (short)768, (short)768,
  322.     (short)768, (short)768, (short)768, (short)768, (short)768,
  323.     (short)768, (short)768, (short)768, (short)768, (short)768,
  324.     (short)768, (short)768, (short)768, (short)768, (short)768,
  325.     (short)768, (short)768, (short)768, (short)768, (short)768,
  326.     (short)768, (short)768, (short)768, (short)768, (short)768,
  327.     (short)768, (short)768, (short)768, (short)768, (short)768,
  328.     (short)768, (short)768, (short)768, (short)768, (short)768,
  329.     (short)768, (short)768, (short)768, (short)768, (short)768,
  330.     (short)768, (short)768, (short)768, (short)768, (short)768,
  331.     (short)768, (short)768, (short)768, (short)768, (short)768,
  332.     (short)768, (short)768, (short)768, (short)768, (short)768,
  333.     (short)768, (short)768, (short)768, (short)768, (short)768,
  334.     (short)768, (short)768, (short)768, (short)768, (short)768,
  335.     (short)768, (short)768, (short)768, (short)768, (short)768,
  336.     (short)768, (short)768, (short)768, (short)768, (short)768,
  337.     (short)768, (short)768, (short)768, (short)768, (short)768,
  338.     (short)768, (short)768, (short)768, (short)768, (short)768,
  339.     (short)768, (short)768, (short)768, (short)768, (short)768,
  340.     (short)768, (short)768, (short)768, (short)768, (short)768,
  341.     (short)768, (short)768, (short)768, (short)768, (short)768,
  342.     (short)768, (short)768, (short)768, (short)768, (short)768,
  343.     (short)768, (short)768, (short)768, (short)768, (short)768,
  344.     (short)768, (short)768, (short)768, (short)768, (short)768,
  345.     (short)768, (short)768, (short)768, (short)768, (short)768,
  346.     (short)768, (short)768, (short)768, (short)768, (short)768,
  347.     (short)768, (short)768, (short)768, (short)768, (short)768,
  348.     (short)768, (short)768, (short)768, (short)768, (short)768,
  349.     (short)768, (short)768, (short)768, (short)768, (short)768,
  350.     (short)768, (short)768, (short)768, (short)768, (short)768,
  351.     (short)768, (short)768, (short)768, (short)768, (short)768,
  352.     (short)768, (short)768, (short)768, (short)768, (short)768,
  353.     (short)768, (short)768, (short)768, (short)768, (short)768,
  354.     (short)768, (short)768, (short)768, (short)768, (short)768,
  355.     (short)768, (short)768, (short)768, (short)768, (short)768,
  356.     (short)768, (short)768, (short)768, (short)768, (short)768,
  357.     (short)768, (short)768, (short)768, (short)768, (short)768,
  358.     (short)768, (short)768, (short)768, (short)768, (short)768,
  359.     (short)768, (short)768, (short)768, (short)768, (short)768,
  360.     (short)768, (short)768, (short)768, (short)768, (short)768,
  361.     (short)768, (short)768, (short)768, (short)768, (short)768,
  362.     (short)768, (short)768, (short)768, (short)768, (short)768,
  363.     (short)768, (short)768, (short)768, (short)768, (short)768,
  364.     (short)768, (short)768, (short)768, (short)768, (short)768,
  365.     (short)768, (short)768, (short)768, (short)768, (short)768,
  366.     (short)768, (short)768, (short)768, (short)768, (short)768,
  367.     (short)768, (short)768, (short)768, (short)768, (short)768,
  368.     (short)768, (short)768, (short)768, (short)768, (short)768,
  369.     (short)768, (short)768, (short)768, (short)768, (short)768,
  370.     (short)768, (short)768, (short)768, (short)768, (short)768,
  371.     (short)768, (short)768, (short)768, (short)768, (short)768,
  372.     (short)768, (short)768, (short)768, (short)768, (short)768,
  373.     (short)768, (short)768, (short)768, (short)768, (short)768,
  374.     (short)768, (short)768, (short)768, (short)768, (short)768,
  375.     (short)768, (short)768, (short)768, (short)768, (short)768,
  376.     (short)768, (short)768, (short)768, (short)768, (short)768,
  377.     (short)768, (short)768, (short)768, (short)768, (short)768,
  378.     (short)768, (short)768, (short)768, (short)768, (short)768,
  379.     (short)768, (short)768, (short)768, (short)768, (short)768,
  380.     (short)768, (short)768, (short)768, (short)768, (short)768,
  381.     (short)768, (short)768, (short)768, (short)768, (short)768,
  382.     (short)768, (short)768, (short)768, (short)768, (short)768,
  383.     (short)768, (short)768, (short)768, (short)768, (short)768,
  384.     (short)768, (short)768, (short)768, (short)768, (short)768,
  385.     (short)768, (short)768, (short)768, (short)768, (short)768,
  386.     (short)768, (short)768, (short)768, (short)768, (short)768,
  387.     (short)768, (short)768, (short)768, (short)768, (short)768,
  388.     (short)768, (short)768, (short)768, (short)768, (short)768,
  389.     (short)768, (short)768, (short)768, (short)768, (short)768,
  390.     (short)768, (short)768, (short)768, (short)768, (short)768,
  391.     (short)768, (short)768, (short)768, (short)768, (short)768,
  392.     (short)768, (short)768, (short)768, (short)768, (short)768,
  393.     (short)768, (short)768, (short)768, (short)768, (short)768,
  394.     (short)768, (short)768, (short)768, (short)768, (short)768,
  395.     (short)768, (short)768, (short)768, (short)768, (short)768,
  396.     (short)768 };
  397.  
  398.     private static final short kOffsetValues[] =    {
  399.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  400.     (short)32767,
  401.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  402.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  403.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  404.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  405.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  406.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  407.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  408.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  409.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  410.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  411.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  412.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  413.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  414.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  415.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  416.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  417.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  418.     (short)32767, (short)32767, (short)32767, (short)736, (short)739,
  419.     (short)742, (short)32767, (short)32767, (short)32767, (short)32767,
  420.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  421.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  422.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  423.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  424.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  425.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  426.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  427.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  428.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  429.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  430.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  431.     (short)32767, (short)32767, (short)32767, (short)32767, (short)745,
  432.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  433.     (short)32767, (short)32767, (short)747, (short)32767, (short)750,
  434.     (short)32767, (short)32767, (short)32767, (short)32767, (short)752,
  435.     (short)32767, (short)32767, (short)755, (short)757, (short)759,
  436.     (short)762, (short)32767, (short)32767, (short)764, (short)767,
  437.     (short)769, (short)32767, (short)771, (short)775, (short)779,
  438.     (short)32767, (short)0, (short)3, (short)6, (short)9,
  439.     (short)12, (short)15, (short)32767, (short)18, (short)24,
  440.     (short)27, (short)30, (short)33, (short)39, (short)42,
  441.     (short)45, (short)48, (short)32767, (short)54, (short)57,
  442.     (short)60, (short)63, (short)66, (short)69, (short)32767,
  443.     (short)72, (short)78, (short)81, (short)84, (short)87,
  444.     (short)90, (short)32767, (short)32767, (short)93, (short)96,
  445.     (short)99, (short)102, (short)105, (short)108, (short)32767,
  446.     (short)111, (short)117, (short)120, (short)123, (short)126,
  447.     (short)132, (short)135, (short)138, (short)141, (short)32767,
  448.     (short)147, (short)150, (short)153, (short)156, (short)159,
  449.     (short)162, (short)32767, (short)165, (short)171, (short)174,
  450.     (short)177, (short)180, (short)183, (short)32767, (short)186,
  451.     (short)189, (short)192, (short)195, (short)198, (short)201,
  452.     (short)204, (short)207, (short)210, (short)213, (short)216,
  453.     (short)219, (short)222, (short)225, (short)228, (short)231,
  454.     (short)234, (short)21, (short)114, (short)237, (short)240,
  455.     (short)243, (short)246, (short)249, (short)252, (short)255,
  456.     (short)258, (short)261, (short)264, (short)267, (short)270,
  457.     (short)273, (short)276, (short)279, (short)282, (short)285,
  458.     (short)288, (short)291, (short)294, (short)36, (short)129,
  459.     (short)297, (short)300, (short)303, (short)306, (short)309,
  460.     (short)312, (short)315, (short)318, (short)321, (short)32767,
  461.     (short)783, (short)786, (short)324, (short)327, (short)330,
  462.     (short)333, (short)32767, (short)336, (short)339, (short)342,
  463.     (short)345, (short)348, (short)351, (short)789, (short)792,
  464.     (short)51, (short)144, (short)354, (short)357, (short)360,
  465.     (short)363, (short)366, (short)369, (short)795, (short)32767,
  466.     (short)32767, (short)372, (short)375, (short)378, (short)381,
  467.     (short)384, (short)387, (short)32767, (short)32767, (short)390,
  468.     (short)393, (short)396, (short)399, (short)402, (short)405,
  469.     (short)408, (short)411, (short)414, (short)417, (short)420,
  470.     (short)423, (short)426, (short)429, (short)432, (short)435,
  471.     (short)438, (short)441, (short)75, (short)168, (short)444,
  472.     (short)447, (short)450, (short)453, (short)456, (short)459,
  473.     (short)462, (short)465, (short)468, (short)471, (short)474,
  474.     (short)477, (short)480, (short)483, (short)486, (short)489,
  475.     (short)492, (short)495, (short)498, (short)501, (short)504,
  476.     (short)507, (short)510, (short)798, (short)32767, (short)32767,
  477.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  478.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  479.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  480.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  481.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  482.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  483.     (short)513, (short)516, (short)32767, (short)32767, (short)32767,
  484.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  485.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  486.     (short)519, (short)522, (short)32767, (short)32767, (short)32767,
  487.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  488.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  489.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  490.     (short)32767, (short)800, (short)804, (short)808, (short)812,
  491.     (short)815, (short)818, (short)821, (short)824, (short)827,
  492.     (short)525, (short)528, (short)531, (short)534, (short)537,
  493.     (short)540, (short)543, (short)546, (short)549, (short)553,
  494.     (short)557, (short)561, (short)565, (short)569, (short)573,
  495.     (short)577, (short)32767, (short)581, (short)585, (short)589,
  496.     (short)593, (short)597, (short)600, (short)32767, (short)32767,
  497.     (short)603, (short)606, (short)609, (short)612, (short)615,
  498.     (short)618, (short)621, (short)625, (short)629, (short)632,
  499.     (short)635, (short)830, (short)833, (short)836, (short)638,
  500.     (short)641, (short)32767, (short)32767, (short)32767, (short)32767,
  501.     (short)644, (short)648, (short)652, (short)655, (short)658,
  502.     (short)661, (short)664, (short)667, (short)670, (short)673,
  503.     (short)676, (short)679, (short)682, (short)685, (short)688,
  504.     (short)691, (short)694, (short)697, (short)700, (short)703,
  505.     (short)706, (short)709, (short)712, (short)715, (short)718,
  506.     (short)721, (short)724, (short)727, (short)730, (short)733,
  507.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  508.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  509.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  510.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  511.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  512.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  513.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  514.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  515.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  516.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  517.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  518.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  519.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  520.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  521.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  522.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  523.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  524.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  525.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  526.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  527.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  528.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  529.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  530.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  531.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  532.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  533.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  534.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  535.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  536.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  537.     (short)32767, (short)32767, (short)839, (short)841, (short)843,
  538.     (short)845, (short)847, (short)849, (short)851, (short)853,
  539.     (short)855, (short)32767, (short)32767, (short)32767, (short)32767,
  540.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  541.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  542.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  543.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  544.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  545.     (short)32767, (short)32767, (short)857, (short)860, (short)863,
  546.     (short)866, (short)869, (short)872, (short)32767, (short)32767,
  547.     (short)875, (short)877, (short)879, (short)881, (short)883,
  548.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  549.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  550.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  551.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  552.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  553.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  554.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  555.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  556.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  557.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  558.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  559.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  560.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  561.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  562.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  563.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  564.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  565.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  566.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  567.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  568.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  569.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  570.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  571.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  572.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  573.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  574.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  575.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  576.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  577.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  578.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  579.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  580.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  581.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  582.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  583.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  584.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  585.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  586.     (short)885, (short)32767, (short)32767, (short)32767, (short)32767,
  587.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  588.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  589.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  590.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  591.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  592.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  593.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  594.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  595.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  596.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  597.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  598.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  599.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  600.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  601.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  602.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  603.     (short)32767, (short)32767, (short)32767, (short)32767, (short)32767,
  604.     (short)32767, (short)32767, (short)32767 };
  605.  
  606.     private static final short kCanonicalIndex[] = {
  607.     (short)0, (short)0, (short)0, (short)0, (short)0, (short)0,
  608.     (short)128, (short)0, (short)0, (short)256, (short)0,
  609.     (short)384, (short)512, (short)640, (short)0, (short)0,
  610.     (short)0, (short)0, (short)768, (short)896, (short)1024,
  611.     (short)1152, (short)1280, (short)1408, (short)1536, (short)1664,
  612.     (short)1792, (short)0, (short)1920, (short)2048, (short)2176,
  613.     (short)2304, (short)0, (short)0, (short)0, (short)0,
  614.     (short)0, (short)0, (short)0, (short)0, (short)0,
  615.     (short)0, (short)0, (short)0, (short)0, (short)0,
  616.     (short)0, (short)0, (short)0, (short)0, (short)0,
  617.     (short)0, (short)0, (short)0, (short)0, (short)0,
  618.     (short)0, (short)0, (short)0, (short)0, (short)0,
  619.     (short)0, (short)0, (short)0, (short)0, (short)2432,
  620.     (short)0, (short)0, (short)0, (short)0, (short)0,
  621.     (short)0, (short)0, (short)0, (short)0, (short)0,
  622.     (short)0, (short)0, (short)0, (short)0, (short)0,
  623.     (short)0, (short)0, (short)0, (short)0, (short)0,
  624.     (short)0, (short)0, (short)0, (short)0, (short)0,
  625.     (short)0, (short)0, (short)0, (short)0, (short)0,
  626.     (short)2560, (short)2688, (short)0, (short)0, (short)0,
  627.     (short)0, (short)0, (short)0, (short)0, (short)0,
  628.     (short)0, (short)0, (short)0, (short)0, (short)0,
  629.     (short)0, (short)0, (short)0, (short)0, (short)0,
  630.     (short)0, (short)0, (short)0, (short)0, (short)0,
  631.     (short)0, (short)0, (short)0, (short)0, (short)0,
  632.     (short)0, (short)0, (short)0, (short)0, (short)0,
  633.     (short)0, (short)0, (short)0, (short)0, (short)0,
  634.     (short)0, (short)0, (short)0, (short)0, (short)0,
  635.     (short)0, (short)0, (short)0, (short)0, (short)0,
  636.     (short)0, (short)0, (short)0, (short)0, (short)0,
  637.     (short)0, (short)0, (short)0, (short)0, (short)0,
  638.     (short)0, (short)0, (short)0, (short)0, (short)0,
  639.     (short)0, (short)0, (short)0, (short)0, (short)0,
  640.     (short)0, (short)0, (short)0, (short)0, (short)0,
  641.     (short)0, (short)0, (short)0, (short)0, (short)0,
  642.     (short)0, (short)0, (short)0, (short)0, (short)0,
  643.     (short)0, (short)0, (short)0, (short)0, (short)0,
  644.     (short)0, (short)0, (short)0, (short)0, (short)0,
  645.     (short)0, (short)0, (short)0, (short)0, (short)0,
  646.     (short)0, (short)0, (short)0, (short)0, (short)0,
  647.     (short)0, (short)0, (short)0, (short)0, (short)0,
  648.     (short)0, (short)0, (short)0, (short)0, (short)0,
  649.     (short)0, (short)0, (short)0, (short)0, (short)0,
  650.     (short)0, (short)0, (short)0, (short)0, (short)0,
  651.     (short)0, (short)0, (short)0, (short)0, (short)0,
  652.     (short)0, (short)0, (short)0, (short)0, (short)0,
  653.     (short)0, (short)0, (short)0, (short)0, (short)0,
  654.     (short)0, (short)0, (short)0, (short)0, (short)0,
  655.     (short)0, (short)0, (short)0, (short)0, (short)0,
  656.     (short)0, (short)0, (short)0, (short)0, (short)0,
  657.     (short)0, (short)0, (short)0, (short)0, (short)0,
  658.     (short)0, (short)0, (short)0, (short)0, (short)0,
  659.     (short)0, (short)0, (short)0, (short)0, (short)0,
  660.     (short)0, (short)0, (short)0, (short)0, (short)0,
  661.     (short)0, (short)0, (short)0, (short)0, (short)0,
  662.     (short)0, (short)0, (short)0, (short)0, (short)0,
  663.     (short)0, (short)0, (short)0, (short)0, (short)0,
  664.     (short)0, (short)0, (short)0, (short)0, (short)0,
  665.     (short)0, (short)0, (short)0, (short)0, (short)0,
  666.     (short)0, (short)0, (short)0, (short)0, (short)0,
  667.     (short)0, (short)0, (short)0, (short)0, (short)0,
  668.     (short)0, (short)0, (short)0, (short)0, (short)0,
  669.     (short)0, (short)0, (short)0, (short)0, (short)0,
  670.     (short)0, (short)0, (short)0, (short)0, (short)0,
  671.     (short)0, (short)0, (short)0, (short)0, (short)0,
  672.     (short)0, (short)0, (short)0, (short)0, (short)0,
  673.     (short)0, (short)0, (short)0, (short)0, (short)0,
  674.     (short)0, (short)0, (short)0, (short)0, (short)0,
  675.     (short)0, (short)0, (short)0, (short)0, (short)0,
  676.     (short)0, (short)0, (short)0, (short)0, (short)0,
  677.     (short)0, (short)0, (short)0, (short)0, (short)0,
  678.     (short)0, (short)0, (short)0, (short)0, (short)0,
  679.     (short)0, (short)0, (short)0, (short)0, (short)0,
  680.     (short)0, (short)0, (short)0, (short)0, (short)0,
  681.     (short)0, (short)0, (short)0, (short)0, (short)0,
  682.     (short)0, (short)0, (short)0, (short)0, (short)0,
  683.     (short)0, (short)0, (short)0, (short)0, (short)0,
  684.     (short)0, (short)0, (short)0, (short)0, (short)0,
  685.     (short)0, (short)0, (short)0, (short)0, (short)0,
  686.     (short)0, (short)0, (short)0, (short)0, (short)0,
  687.     (short)0, (short)0, (short)0, (short)0, (short)0,
  688.     (short)0, (short)0, (short)0, (short)0, (short)0,
  689.     (short)0, (short)0, (short)0, (short)0, (short)0,
  690.     (short)0, (short)0, (short)0, (short)0, (short)0,
  691.     (short)0, (short)0, (short)0, (short)0, (short)0,
  692.     (short)0, (short)0, (short)0, (short)0, (short)0,
  693.     (short)0, (short)0, (short)0, (short)0, (short)0,
  694.     (short)0, (short)0, (short)0, (short)0, (short)0,
  695.     (short)0, (short)0, (short)0, (short)0, (short)0,
  696.     (short)0, (short)0, (short)0, (short)0, (short)0,
  697.     (short)0, (short)0, (short)0, (short)0, (short)0,
  698.     (short)0, (short)0, (short)0, (short)0, (short)0,
  699.     (short)0, (short)0, (short)0, (short)0, (short)0,
  700.     (short)0, (short)0, (short)0, (short)0, (short)0,
  701.     (short)0, (short)0, (short)0, (short)0, (short)0,
  702.     (short)0, (short)0, (short)0, (short)0, (short)0,
  703.     (short)0, (short)0, (short)0, (short)0, (short)0,
  704.     (short)0, (short)0, (short)0, (short)0, (short)0,
  705.     (short)0, (short)0, (short)0, (short)0, (short)0,
  706.     (short)0, (short)0, (short)0, (short)0, (short)0,
  707.     (short)0, (short)2816, (short)0, (short)0, (short)0,
  708.     (short)0, (short)0, (short)2944, (short)0, (short)0,
  709.     (short)0 };
  710.  
  711.     private static final byte kCanonicalValues[] =
  712.     {
  713.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  714.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  715.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  716.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  717.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  718.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  719.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  720.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  721.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  722.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  723.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  724.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  725.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  726.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  727.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  728.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  729.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  730.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  731.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  732.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  733.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  734.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  735.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  736.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  737.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  738.     (byte)-128, (byte)-128, (byte)102, (byte)102, (byte)102,
  739.     (byte)102, (byte)102, (byte)102, (byte)102, (byte)102,
  740.     (byte)102, (byte)102, (byte)102, (byte)102, (byte)102,
  741.     (byte)102, (byte)102, (byte)102, (byte)102, (byte)102,
  742.     (byte)102, (byte)102, (byte)102, (byte)104, (byte)92,
  743.     (byte)92, (byte)92, (byte)92, (byte)104, (byte)88,
  744.     (byte)92, (byte)92, (byte)92, (byte)92, (byte)92,
  745.     (byte)74, (byte)74, (byte)92, (byte)92, (byte)92,
  746.     (byte)92, (byte)74, (byte)74, (byte)92, (byte)92,
  747.     (byte)92, (byte)92, (byte)92, (byte)92, (byte)92,
  748.     (byte)92, (byte)92, (byte)92, (byte)92, (byte)-127,
  749.     (byte)-127, (byte)-127, (byte)-127, (byte)-127, (byte)92,
  750.     (byte)92, (byte)92, (byte)92, (byte)102, (byte)102,
  751.     (byte)102, (byte)102, (byte)102, (byte)102, (byte)102,
  752.     (byte)102, (byte)92, (byte)-128, (byte)-128, (byte)-128,
  753.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  754.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  755.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  756.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  757.     (byte)-128, (byte)-128, (byte)-128, (byte)106, (byte)106,
  758.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  759.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  760.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  761.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  762.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  763.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  764.     (byte)-128, (byte)-128, (byte)-128, (byte)102, (byte)102,
  765.     (byte)102, (byte)102, (byte)-128, (byte)-128, (byte)-128,
  766.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  767.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  768.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  769.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  770.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  771.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  772.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  773.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  774.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  775.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  776.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  777.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  778.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  779.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  780.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  781.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  782.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  783.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  784.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  785.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  786.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  787.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  788.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  789.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  790.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  791.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  792.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  793.     (byte)92, (byte)102, (byte)102, (byte)102, (byte)102,
  794.     (byte)92, (byte)102, (byte)102, (byte)102, (byte)94,
  795.     (byte)92, (byte)102, (byte)102, (byte)102, (byte)102,
  796.     (byte)102, (byte)102, (byte)-128, (byte)92, (byte)92,
  797.     (byte)92, (byte)92, (byte)92, (byte)102, (byte)102,
  798.     (byte)92, (byte)102, (byte)102, (byte)94, (byte)102,
  799.     (byte)102, (byte)-118, (byte)-117, (byte)-116, (byte)-115,
  800.     (byte)-114, (byte)-113, (byte)-112, (byte)-111, (byte)-110,
  801.     (byte)-109, (byte)-128, (byte)-108, (byte)-107, (byte)-106,
  802.     (byte)-128, (byte)-105, (byte)-128, (byte)-104, (byte)-103,
  803.     (byte)-128, (byte)102, (byte)-128, (byte)-128, (byte)-128,
  804.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  805.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  806.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  807.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  808.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  809.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  810.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  811.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  812.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  813.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  814.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  815.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  816.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  817.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  818.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  819.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  820.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  821.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  822.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  823.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  824.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  825.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  826.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  827.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  828.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  829.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  830.     (byte)-128, (byte)-101, (byte)-100, (byte)-99, (byte)-98,
  831.     (byte)-97, (byte)-96, (byte)-95, (byte)-94, (byte)-128,
  832.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  833.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  834.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  835.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  836.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  837.     (byte)-128, (byte)-128, (byte)-128, (byte)-93, (byte)-128,
  838.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  839.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  840.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  841.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  842.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  843.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  844.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  845.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  846.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  847.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  848.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  849.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  850.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  851.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  852.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  853.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  854.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  855.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  856.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  857.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  858.     (byte)102, (byte)102, (byte)102, (byte)102, (byte)102,
  859.     (byte)102, (byte)102, (byte)-128, (byte)-128, (byte)102,
  860.     (byte)102, (byte)102, (byte)102, (byte)92, (byte)102,
  861.     (byte)-128, (byte)-128, (byte)102, (byte)102, (byte)-128,
  862.     (byte)92, (byte)102, (byte)102, (byte)92, (byte)-128,
  863.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  864.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  865.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  866.     (byte)-128, (byte)-128, (byte)-128, (byte)-91, (byte)-92,
  867.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  868.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  869.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  870.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  871.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  872.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  873.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  874.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  875.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  876.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  877.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  878.     (byte)-128, (byte)-128, (byte)-121, (byte)-128, (byte)-128,
  879.     (byte)-128, (byte)-128, (byte)-90, (byte)-89, (byte)-88,
  880.     (byte)-87, (byte)-86, (byte)-85, (byte)-84, (byte)-83,
  881.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-119,
  882.     (byte)-128, (byte)-128, (byte)-128, (byte)-82, (byte)-81,
  883.     (byte)102, (byte)102, (byte)-128, (byte)-128, (byte)-128,
  884.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  885.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  886.     (byte)-80, (byte)-79, (byte)-128, (byte)-128, (byte)-128,
  887.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  888.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  889.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  890.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  891.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  892.     (byte)-128, (byte)-78, (byte)-128, (byte)-128, (byte)-128,
  893.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  894.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  895.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  896.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  897.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  898.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  899.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  900.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  901.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  902.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  903.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  904.     (byte)-121, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  905.     (byte)-77, (byte)-76, (byte)-75, (byte)-74, (byte)-128,
  906.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  907.     (byte)-128, (byte)-128, (byte)-119, (byte)-128, (byte)-128,
  908.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  909.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  910.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  911.     (byte)-128, (byte)-128, (byte)-128, (byte)-73, (byte)-72,
  912.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  913.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  914.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  915.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  916.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  917.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  918.     (byte)-71, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  919.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  920.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  921.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  922.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  923.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  924.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  925.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  926.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  927.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  928.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  929.     (byte)-128, (byte)-128, (byte)-128, (byte)-121, (byte)-128,
  930.     (byte)-128, (byte)-128, (byte)-128, (byte)-70, (byte)-69,
  931.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-68,
  932.     (byte)-67, (byte)-128, (byte)-128, (byte)-66, (byte)-65,
  933.     (byte)-119, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  934.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  935.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  936.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  937.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  938.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  939.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  940.     (byte)-64, (byte)-63, (byte)-128, (byte)-128, (byte)-128,
  941.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  942.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  943.     (byte)-128, (byte)-128, (byte)-61, (byte)-62, (byte)-128,
  944.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  945.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  946.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  947.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  948.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  949.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  950.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  951.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  952.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  953.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  954.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  955.     (byte)-128, (byte)-121, (byte)-128, (byte)-128, (byte)-128,
  956.     (byte)-128, (byte)-60, (byte)-59, (byte)-58, (byte)-57,
  957.     (byte)-56, (byte)-128, (byte)-55, (byte)-54, (byte)-128,
  958.     (byte)-128, (byte)-128, (byte)-128, (byte)-119, (byte)-128,
  959.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  960.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  961.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  962.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  963.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  964.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  965.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  966.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  967.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  968.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  969.     (byte)-53, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  970.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  971.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  972.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  973.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  974.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  975.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  976.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  977.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  978.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  979.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  980.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-121,
  981.     (byte)-128, (byte)-128, (byte)-52, (byte)-128, (byte)-51,
  982.     (byte)-50, (byte)-49, (byte)-128, (byte)-128, (byte)-128,
  983.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  984.     (byte)-128, (byte)-119, (byte)-128, (byte)-128, (byte)-128,
  985.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  986.     (byte)102, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  987.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  988.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  989.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  990.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  991.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  992.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  993.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  994.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  995.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  996.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  997.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  998.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  999.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1000.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1001.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1002.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1003.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1004.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1005.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1006.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1007.     (byte)-128, (byte)-48, (byte)-128, (byte)-128, (byte)-128,
  1008.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1009.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-119,
  1010.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1011.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1012.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1013.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1014.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1015.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1016.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1017.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1018.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1019.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1020.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1021.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1022.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1023.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1024.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1025.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1026.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1027.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1028.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1029.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1030.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1031.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1032.     (byte)-128, (byte)-128, (byte)-47, (byte)-46, (byte)-45,
  1033.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1034.     (byte)-44, (byte)-43, (byte)-42, (byte)-128, (byte)-41,
  1035.     (byte)-40, (byte)-39, (byte)-119, (byte)-128, (byte)-128,
  1036.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1037.     (byte)-38, (byte)-37, (byte)-128, (byte)-128, (byte)-128,
  1038.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1039.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1040.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1041.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1042.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1043.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1044.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1045.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1046.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1047.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1048.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1049.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1050.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1051.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1052.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1053.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1054.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1055.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1056.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1057.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1058.     (byte)-128, (byte)-36, (byte)-128, (byte)-128, (byte)-128,
  1059.     (byte)-128, (byte)-128, (byte)-128, (byte)-35, (byte)-128,
  1060.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-34,
  1061.     (byte)-119, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1062.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1063.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1064.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1065.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1066.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1067.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1068.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1069.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1070.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1071.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1072.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1073.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1074.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1075.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1076.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1077.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1078.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1079.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1080.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1081.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1082.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1083.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1084.     (byte)-128, (byte)-33, (byte)-32, (byte)-31, (byte)-128,
  1085.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1086.     (byte)-128, (byte)-128, (byte)-128, (byte)-119, (byte)-128,
  1087.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1088.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1089.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1090.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1091.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1092.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1093.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1094.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1095.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1096.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1097.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1098.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1099.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1100.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1101.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1102.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1103.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1104.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1105.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1106.     (byte)-128, (byte)-128, (byte)-128, (byte)-30, (byte)-128,
  1107.     (byte)-128, (byte)-29, (byte)-28, (byte)-27, (byte)-26,
  1108.     (byte)-25, (byte)-24, (byte)-23, (byte)-128, (byte)-128,
  1109.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1110.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1111.     (byte)-22, (byte)-21, (byte)-20, (byte)-19, (byte)-18,
  1112.     (byte)-17, (byte)-16, (byte)0, (byte)-128, (byte)-128,
  1113.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1114.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1115.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1116.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1117.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1118.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1119.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1120.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1121.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1122.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1123.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1124.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1125.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1126.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1127.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1128.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1129.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1130.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1131.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1132.     (byte)-128, (byte)-15, (byte)-128, (byte)-128, (byte)-14,
  1133.     (byte)-13, (byte)-12, (byte)-11, (byte)-10, (byte)-9,
  1134.     (byte)-128, (byte)-8, (byte)-7, (byte)-128, (byte)-128,
  1135.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1136.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-6,
  1137.     (byte)-5, (byte)-4, (byte)-3, (byte)-2, (byte)-1,
  1138.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1139.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1140.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1141.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1142.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1143.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1144.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1145.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1146.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1147.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1148.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1149.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1150.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1151.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1152.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)92,
  1153.     (byte)92, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1154.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1155.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1156.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1157.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1158.     (byte)-128, (byte)-128, (byte)-128, (byte)102, (byte)-128,
  1159.     (byte)102, (byte)-128, (byte)88, (byte)-128, (byte)-128,
  1160.     (byte)-128, (byte)-128, (byte)92, (byte)92, (byte)-128,
  1161.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1162.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1163.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1164.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1165.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1166.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1167.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1168.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1169.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1170.     (byte)-128, (byte)-128, (byte)-128, (byte)1, (byte)2,
  1171.     (byte)3, (byte)4, (byte)5, (byte)6, (byte)7,
  1172.     (byte)8, (byte)9, (byte)10, (byte)11, (byte)12,
  1173.     (byte)13, (byte)14, (byte)-128, (byte)15, (byte)16,
  1174.     (byte)102, (byte)102, (byte)-119, (byte)-128, (byte)102,
  1175.     (byte)102, (byte)102, (byte)102, (byte)102, (byte)102,
  1176.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-122,
  1177.     (byte)-122, (byte)-122, (byte)-122, (byte)-122, (byte)-122,
  1178.     (byte)-128, (byte)-122, (byte)-128, (byte)-122, (byte)-122,
  1179.     (byte)-122, (byte)-122, (byte)-122, (byte)-122, (byte)-122,
  1180.     (byte)-122, (byte)-122, (byte)-122, (byte)-122, (byte)-122,
  1181.     (byte)-122, (byte)-122, (byte)-122, (byte)-122, (byte)-122,
  1182.     (byte)-122, (byte)-122, (byte)-122, (byte)-122, (byte)-128,
  1183.     (byte)-128, (byte)-128, (byte)-122, (byte)-122, (byte)-122,
  1184.     (byte)-122, (byte)-122, (byte)-122, (byte)-122, (byte)-128,
  1185.     (byte)-122, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1186.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1187.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1188.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1189.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1190.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1191.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1192.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1193.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1194.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1195.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1196.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1197.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1198.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1199.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1200.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1201.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1202.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1203.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1204.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1205.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1206.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1207.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1208.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1209.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1210.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1211.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1212.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1213.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1214.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1215.     (byte)-128, (byte)102, (byte)102, (byte)-127, (byte)-127,
  1216.     (byte)102, (byte)102, (byte)102, (byte)102, (byte)-127,
  1217.     (byte)-127, (byte)-127, (byte)102, (byte)102, (byte)-128,
  1218.     (byte)-128, (byte)-128, (byte)-128, (byte)-127, (byte)-128,
  1219.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1220.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1221.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1222.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1223.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1224.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1225.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1226.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1227.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1228.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1229.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1230.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1231.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1232.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1233.     (byte)-128, (byte)90, (byte)100, (byte)104, (byte)94,
  1234.     (byte)96, (byte)96, (byte)-128, (byte)-128, (byte)-128,
  1235.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1236.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1237.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1238.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1239.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1240.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1241.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1242.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1243.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1244.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1245.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1246.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1247.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1248.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1249.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1250.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1251.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1252.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1253.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1254.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1255.     (byte)-128, (byte)-128, (byte)-120, (byte)-120, (byte)-128,
  1256.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1257.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1258.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1259.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1260.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1261.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1262.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1263.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1264.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1265.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1266.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1267.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1268.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1269.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1270.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1271.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1272.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1273.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1274.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1275.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1276.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1277.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1278.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1279.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1280.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1281.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1282.     (byte)-102, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1283.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1284.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1285.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1286.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1287.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1288.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1289.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1290.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1291.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1292.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1293.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1294.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1295.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1296.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1297.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1298.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1299.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1300.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1301.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1302.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1303.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1304.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1305.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1306.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1307.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1308.     (byte)102, (byte)102, (byte)102, (byte)102, (byte)-128,
  1309.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1310.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1311.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1312.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1313.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1314.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1315.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1316.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1317.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1318.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1319.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1320.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1321.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1322.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1323.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1324.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1325.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1326.     (byte)-128, (byte)-128, (byte)-128, (byte)-128, (byte)-128,
  1327.     (byte)-128 };
  1328.  
  1329.     private static String contents =
  1330.     "A\u0300\u0000A\u0301\u0000A\u0302\u0000A\u0303\u0000A\u0308\u0000"+
  1331.     "A\u030A\u0000C\u0327\u0000D\u0335\u0000E\u0300\u0000E\u0301\u0000"+
  1332.     "E\u0302\u0000E\u0308\u0000H\u0335\u0000I\u0300\u0000I\u0301\u0000"+
  1333.     "I\u0302\u0000I\u0308\u0000L\u0337\u0000N\u0303\u0000O\u0300\u0000"+
  1334.     "O\u0301\u0000O\u0302\u0000O\u0303\u0000O\u0308\u0000O\u0338\u0000"+
  1335.     "T\u0335\u0000U\u0300\u0000U\u0301\u0000U\u0302\u0000U\u0308\u0000"+
  1336.     "Y\u0301\u0000a\u0300\u0000a\u0301\u0000a\u0302\u0000a\u0303\u0000"+
  1337.     "a\u0308\u0000a\u030A\u0000c\u0327\u0000d\u0335\u0000e\u0300\u0000"+
  1338.     "e\u0301\u0000e\u0302\u0000e\u0308\u0000h\u0335\u0000i\u0300\u0000"+
  1339.     "i\u0301\u0000i\u0302\u0000i\u0308\u0000l\u0337\u0000n\u0303\u0000"+
  1340.     "o\u0300\u0000o\u0301\u0000o\u0302\u0000o\u0303\u0000o\u0308\u0000"+
  1341.     "o\u0338\u0000t\u0335\u0000u\u0300\u0000u\u0301\u0000u\u0302\u0000"+
  1342.     "u\u0308\u0000y\u0301\u0000y\u0308\u0000A\u0304\u0000a\u0304\u0000"+
  1343.     "A\u0306\u0000a\u0306\u0000A\u0328\u0000a\u0328\u0000C\u0301\u0000"+
  1344.     "c\u0301\u0000C\u0302\u0000c\u0302\u0000C\u0307\u0000c\u0307\u0000"+
  1345.     "C\u030C\u0000c\u030C\u0000D\u030C\u0000d\u030C\u0000E\u0304\u0000"+
  1346.     "e\u0304\u0000E\u0306\u0000e\u0306\u0000E\u0307\u0000e\u0307\u0000"+
  1347.     "E\u0328\u0000e\u0328\u0000E\u030C\u0000e\u030C\u0000G\u0302\u0000"+
  1348.     "g\u0302\u0000G\u0306\u0000g\u0306\u0000G\u0307\u0000g\u0307\u0000"+
  1349.     "G\u0327\u0000g\u0327\u0000H\u0302\u0000h\u0302\u0000I\u0303\u0000"+
  1350.     "i\u0303\u0000I\u0304\u0000i\u0304\u0000I\u0306\u0000i\u0306\u0000"+
  1351.     "I\u0328\u0000i\u0328\u0000I\u0307\u0000J\u0302\u0000j\u0302\u0000"+
  1352.     "K\u0327\u0000k\u0327\u0000L\u0301\u0000l\u0301\u0000L\u0327\u0000"+
  1353.     "l\u0327\u0000L\u030C\u0000l\u030C\u0000N\u0301\u0000n\u0301\u0000"+
  1354.     "N\u0327\u0000n\u0327\u0000N\u030C\u0000n\u030C\u0000O\u0304\u0000"+
  1355.     "o\u0304\u0000O\u0306\u0000o\u0306\u0000O\u030B\u0000o\u030B\u0000"+
  1356.     "R\u0301\u0000r\u0301\u0000R\u0327\u0000r\u0327\u0000R\u030C\u0000"+
  1357.     "r\u030C\u0000S\u0301\u0000s\u0301\u0000S\u0302\u0000s\u0302\u0000"+
  1358.     "S\u0327\u0000s\u0327\u0000S\u030C\u0000s\u030C\u0000T\u0327\u0000"+
  1359.     "t\u0327\u0000T\u030C\u0000t\u030C\u0000U\u0303\u0000u\u0303\u0000"+
  1360.     "U\u0304\u0000u\u0304\u0000U\u0306\u0000u\u0306\u0000U\u030A\u0000"+
  1361.     "u\u030A\u0000U\u030B\u0000u\u030B\u0000U\u0328\u0000u\u0328\u0000"+
  1362.     "W\u0302\u0000w\u0302\u0000Y\u0302\u0000y\u0302\u0000Y\u0308\u0000"+
  1363.     "Z\u0301\u0000z\u0301\u0000Z\u0307\u0000z\u0307\u0000Z\u030C\u0000"+
  1364.     "z\u030C\u0000O\u031B\u0000o\u031B\u0000U\u031B\u0000u\u031B\u0000"+
  1365.     "A\u030C\u0000a\u030C\u0000I\u030C\u0000i\u030C\u0000O\u030C\u0000"+
  1366.     "o\u030C\u0000U\u030C\u0000u\u030C\u0000U\u0308\u0304\u0000u\u0308"+
  1367.     "\u0304\u0000U\u0308\u0301\u0000u\u0308\u0301\u0000U\u0308\u030C"+
  1368.     "\u0000u\u0308\u030C\u0000U\u0308\u0300\u0000u\u0308\u0300\u0000"+
  1369.     "A\u0308\u0304\u0000a\u0308\u0304\u0000A\u0307\u0304\u0000a\u0307"+
  1370.     "\u0304\u0000ニ\u0304\u0000觸u0304\u0000G\u030C\u0000g\u030C\u0000"+
  1371.     "K\u030C\u0000k\u030C\u0000O\u0328\u0000o\u0328\u0000O\u0328\u0304"+
  1372.     "\u0000o\u0328\u0304\u0000\u01B7\u030C\u0000\u0292\u030C\u0000"+
  1373.     "j\u030C\u0000G\u0301\u0000g\u0301\u0000A\u030A\u0301\u0000a\u030A"+
  1374.     "\u0301\u0000ニ\u0301\u0000觸u0301\u0000リ\u0301\u0000u0301\u0000"+
  1375.     "A\u030F\u0000a\u030F\u0000A\u0311\u0000a\u0311\u0000E\u030F\u0000"+
  1376.     "e\u030F\u0000E\u0311\u0000e\u0311\u0000I\u030F\u0000i\u030F\u0000"+
  1377.     "I\u0311\u0000i\u0311\u0000O\u030F\u0000o\u030F\u0000O\u0311\u0000"+
  1378.     "o\u0311\u0000R\u030F\u0000r\u030F\u0000R\u0311\u0000r\u0311\u0000"+
  1379.     "U\u030F\u0000u\u030F\u0000U\u0311\u0000u\u0311\u0000 \u0302\u0000"+
  1380.     " \u0332\u0000 \u0300\u0000 \u0000 \u0308\u0000a\u0000 \u0304\u0000"+
  1381.     "2\u00003\u0000 \u0301\u0000\u03BC\u0000 \u0327\u00001\u0000o\u0000"+
  1382.     "1\u20444\u00001\u20442\u00003\u20444\u0000IJ\u0000ij\u0000Lキ\u0000"+
  1383.     "lキ\u0000\u02BCn\u0000s\u0000DZ\u030C\u0000Dz\u030C\u0000dz\u030C"+
  1384.     "\u0000LJ\u0000Lj\u0000lj\u0000NJ\u0000Nj\u0000nj\u0000DZ\u0000"+
  1385.     "Dz\u0000dz\u0000h\u0000\u0266\u0000j\u0000r\u0000\u0279\u0000"+
  1386.     "\u027B\u0000\u0281\u0000w\u0000y\u0000 \u0306\u0000 \u0307\u0000"+
  1387.     " \u030A\u0000 \u0328\u0000 \u0303\u0000 \u030B\u0000\u0263\u0000"+
  1388.     "l\u0000s\u0000x\u0000\u0295\u0000Fr\u0000";
  1389.  
  1390. private static int maximumDecomposition = 888;
  1391. private static int maximumCanonical = 736;
  1392.     private StringBuffer parsedStr = null;
  1393.     private String str = null;
  1394.     private int pIndex = 0;
  1395.     private int sIndex = 0;
  1396.     private int getEndIndex = 0;
  1397.     private int decmpMode = 0;
  1398.     private int getBeginIndex = 0;
  1399.     private int uptoOffset = 0;
  1400.  
  1401.     // END OF GENERATED CODE
  1402.     private static final CompactShortArray startOffsets
  1403.         = new CompactShortArray(kOffsetIndex, kOffsetValues);
  1404.  
  1405.     // old canonical class
  1406.     // used since canonical values are 0..255
  1407.     static final byte BASE = (byte)-128;
  1408.     private static CompactByteArray canonicals
  1409.         = new CompactByteArray(kCanonicalIndex, kCanonicalValues);
  1410.     /** Fixes canonical order.
  1411.         <BR>Optimized for the case where NO swaps are necessary.
  1412.      */
  1413.     private static void fixCanonical(StringBuffer result) {
  1414.         int i = result.length() - 1;
  1415.         byte lastType;
  1416.         byte currentType = canonicals.elementAt(result.charAt(i));
  1417.         for (--i; i >= 0; --i) {
  1418.             lastType = currentType;
  1419.             currentType = canonicals.elementAt(result.charAt(i));
  1420.             // a swap is presumed to be rare (and a double-swap very rare),
  1421.             // so don't worry about efficiency here.
  1422.             if (currentType > lastType && lastType != BASE) {
  1423.                 // swap characters
  1424.                 char temp = result.charAt(i);
  1425.                 result.setCharAt(i, result.charAt(i+1));
  1426.                 result.setCharAt(i+1, temp);
  1427.                 // if not at end, backup (one further, to compensate for for-loop)
  1428.                 if (i < result.length() - 2)
  1429.                     i += 2;
  1430.                 // reset type, since we swapped.
  1431.                 currentType = canonicals.elementAt(result.charAt(i));
  1432.             }
  1433.         }
  1434.     }
  1435. }
  1436.