You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by mh...@apache.org on 2013/09/24 20:33:16 UTC
[40/50] [abbrv] Implement Standard and Classic Analyzers
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/7a4b442f/src/contrib/Analyzers/Standard/StandardTokenizerImpl.cs
----------------------------------------------------------------------
diff --git a/src/contrib/Analyzers/Standard/StandardTokenizerImpl.cs b/src/contrib/Analyzers/Standard/StandardTokenizerImpl.cs
new file mode 100644
index 0000000..f91bd9b
--- /dev/null
+++ b/src/contrib/Analyzers/Standard/StandardTokenizerImpl.cs
@@ -0,0 +1,1241 @@
+using Lucene.Net.Analysis.Tokenattributes;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+
+namespace Lucene.Net.Analysis.Standard
+{
+ public sealed class StandardTokenizerImpl : IStandardTokenizerInterface
+ {
+
+ /** This character denotes the end of file */
+ public const int YYEOF = -1;
+
+ /** initial size of the lookahead buffer */
+ private const int ZZ_BUFFERSIZE = 4096;
+
+ /** lexical states */
+ public const int YYINITIAL = 0;
+
+ /**
+ * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l
+ * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l
+ * at the beginning of a line
+ * l is of the form l = 2*k, k a non negative integer
+ */
+ private static readonly int[] ZZ_LEXSTATE = {
+ 0, 0
+ };
+
+ /**
+ * Translates characters to character classes
+ */
+ private const String ZZ_CMAP_PACKED =
+ "\u0027\0\u0001\u0082\u0004\0\u0001\u0081\u0001\0\u0001\u0082\u0001\0\u000a\u007e\u0001\u0080\u0001\u0081" +
+ "\u0005\0\u001a\u007c\u0004\0\u0001\u0083\u0001\0\u001a\u007c\u002f\0\u0001\u007c\u0002\0\u0001\u007d" +
+ "\u0007\0\u0001\u007c\u0001\0\u0001\u0080\u0002\0\u0001\u007c\u0005\0\u0017\u007c\u0001\0\u001f\u007c" +
+ "\u0001\0\u01ca\u007c\u0004\0\u000c\u007c\u000e\0\u0005\u007c\u0007\0\u0001\u007c\u0001\0\u0001\u007c" +
+ "\u0011\0\u0070\u007d\u0005\u007c\u0001\0\u0002\u007c\u0002\0\u0004\u007c\u0001\u0081\u0007\0\u0001\u007c" +
+ "\u0001\u0080\u0003\u007c\u0001\0\u0001\u007c\u0001\0\u0014\u007c\u0001\0\u0053\u007c\u0001\0\u008b\u007c" +
+ "\u0001\0\u0007\u007d\u009e\u007c\u0009\0\u0026\u007c\u0002\0\u0001\u007c\u0007\0\u0027\u007c\u0001\0" +
+ "\u0001\u0081\u0007\0\u002d\u007d\u0001\0\u0001\u007d\u0001\0\u0002\u007d\u0001\0\u0002\u007d\u0001\0" +
+ "\u0001\u007d\u0008\0\u001b\u007c\u0005\0\u0004\u007c\u0001\u0080\u000b\0\u0005\u007d\u0007\0\u0002\u0081" +
+ "\u0002\0\u000b\u007d\u0005\0\u002b\u007c\u0015\u007d\u000a\u007e\u0001\0\u0001\u007e\u0001\u0081\u0001\0" +
+ "\u0002\u007c\u0001\u007d\u0063\u007c\u0001\0\u0001\u007c\u0007\u007d\u0001\u007d\u0001\0\u0006\u007d\u0002\u007c" +
+ "\u0002\u007d\u0001\0\u0004\u007d\u0002\u007c\u000a\u007e\u0003\u007c\u0002\0\u0001\u007c\u000f\0\u0001\u007d" +
+ "\u0001\u007c\u0001\u007d\u001e\u007c\u001b\u007d\u0002\0\u0059\u007c\u000b\u007d\u0001\u007c\u000e\0\u000a\u007e" +
+ "\u0021\u007c\u0009\u007d\u0002\u007c\u0002\0\u0001\u0081\u0001\0\u0001\u007c\u0005\0\u0016\u007c\u0004\u007d" +
+ "\u0001\u007c\u0009\u007d\u0001\u007c\u0003\u007d\u0001\u007c\u0005\u007d\u0012\0\u0019\u007c\u0003\u007d\u0044\0" +
+ "\u0001\u007c\u0001\0\u000b\u007c\u0037\0\u001b\u007d\u0001\0\u0004\u007d\u0036\u007c\u0003\u007d\u0001\u007c" +
+ "\u0012\u007d\u0001\u007c\u0007\u007d\u000a\u007c\u0002\u007d\u0002\0\u000a\u007e\u0001\0\u0007\u007c\u0001\0" +
+ "\u0007\u007c\u0001\0\u0003\u007d\u0001\0\u0008\u007c\u0002\0\u0002\u007c\u0002\0\u0016\u007c\u0001\0" +
+ "\u0007\u007c\u0001\0\u0001\u007c\u0003\0\u0004\u007c\u0002\0\u0001\u007d\u0001\u007c\u0007\u007d\u0002\0" +
+ "\u0002\u007d\u0002\0\u0003\u007d\u0001\u007c\u0008\0\u0001\u007d\u0004\0\u0002\u007c\u0001\0\u0003\u007c" +
+ "\u0002\u007d\u0002\0\u000a\u007e\u0002\u007c\u000f\0\u0003\u007d\u0001\0\u0006\u007c\u0004\0\u0002\u007c" +
+ "\u0002\0\u0016\u007c\u0001\0\u0007\u007c\u0001\0\u0002\u007c\u0001\0\u0002\u007c\u0001\0\u0002\u007c" +
+ "\u0002\0\u0001\u007d\u0001\0\u0005\u007d\u0004\0\u0002\u007d\u0002\0\u0003\u007d\u0003\0\u0001\u007d" +
+ "\u0007\0\u0004\u007c\u0001\0\u0001\u007c\u0007\0\u000a\u007e\u0002\u007d\u0003\u007c\u0001\u007d\u000b\0" +
+ "\u0003\u007d\u0001\0\u0009\u007c\u0001\0\u0003\u007c\u0001\0\u0016\u007c\u0001\0\u0007\u007c\u0001\0" +
+ "\u0002\u007c\u0001\0\u0005\u007c\u0002\0\u0001\u007d\u0001\u007c\u0008\u007d\u0001\0\u0003\u007d\u0001\0" +
+ "\u0003\u007d\u0002\0\u0001\u007c\u000f\0\u0002\u007c\u0002\u007d\u0002\0\u000a\u007e\u0011\0\u0003\u007d" +
+ "\u0001\0\u0008\u007c\u0002\0\u0002\u007c\u0002\0\u0016\u007c\u0001\0\u0007\u007c\u0001\0\u0002\u007c" +
+ "\u0001\0\u0005\u007c\u0002\0\u0001\u007d\u0001\u007c\u0007\u007d\u0002\0\u0002\u007d\u0002\0\u0003\u007d" +
+ "\u0008\0\u0002\u007d\u0004\0\u0002\u007c\u0001\0\u0003\u007c\u0002\u007d\u0002\0\u000a\u007e\u0001\0" +
+ "\u0001\u007c\u0010\0\u0001\u007d\u0001\u007c\u0001\0\u0006\u007c\u0003\0\u0003\u007c\u0001\0\u0004\u007c" +
+ "\u0003\0\u0002\u007c\u0001\0\u0001\u007c\u0001\0\u0002\u007c\u0003\0\u0002\u007c\u0003\0\u0003\u007c" +
+ "\u0003\0\u000c\u007c\u0004\0\u0005\u007d\u0003\0\u0003\u007d\u0001\0\u0004\u007d\u0002\0\u0001\u007c" +
+ "\u0006\0\u0001\u007d\u000e\0\u000a\u007e\u0011\0\u0003\u007d\u0001\0\u0008\u007c\u0001\0\u0003\u007c" +
+ "\u0001\0\u0017\u007c\u0001\0\u000a\u007c\u0001\0\u0005\u007c\u0003\0\u0001\u007c\u0007\u007d\u0001\0" +
+ "\u0003\u007d\u0001\0\u0004\u007d\u0007\0\u0002\u007d\u0001\0\u0002\u007c\u0006\0\u0002\u007c\u0002\u007d" +
+ "\u0002\0\u000a\u007e\u0012\0\u0002\u007d\u0001\0\u0008\u007c\u0001\0\u0003\u007c\u0001\0\u0017\u007c" +
+ "\u0001\0\u000a\u007c\u0001\0\u0005\u007c\u0002\0\u0001\u007d\u0001\u007c\u0007\u007d\u0001\0\u0003\u007d" +
+ "\u0001\0\u0004\u007d\u0007\0\u0002\u007d\u0007\0\u0001\u007c\u0001\0\u0002\u007c\u0002\u007d\u0002\0" +
+ "\u000a\u007e\u0001\0\u0002\u007c\u000f\0\u0002\u007d\u0001\0\u0008\u007c\u0001\0\u0003\u007c\u0001\0" +
+ "\u0029\u007c\u0002\0\u0001\u007c\u0007\u007d\u0001\0\u0003\u007d\u0001\0\u0004\u007d\u0001\u007c\u0008\0" +
+ "\u0001\u007d\u0008\0\u0002\u007c\u0002\u007d\u0002\0\u000a\u007e\u000a\0\u0006\u007c\u0002\0\u0002\u007d" +
+ "\u0001\0\u0012\u007c\u0003\0\u0018\u007c\u0001\0\u0009\u007c\u0001\0\u0001\u007c\u0002\0\u0007\u007c" +
+ "\u0003\0\u0001\u007d\u0004\0\u0006\u007d\u0001\0\u0001\u007d\u0001\0\u0008\u007d\u0012\0\u0002\u007d" +
+ "\u000d\0\u0030\u0084\u0001\u0085\u0002\u0084\u0007\u0085\u0005\0\u0007\u0084\u0008\u0085\u0001\0\u000a\u007e" +
+ "\u0027\0\u0002\u0084\u0001\0\u0001\u0084\u0002\0\u0002\u0084\u0001\0\u0001\u0084\u0002\0\u0001\u0084" +
+ "\u0006\0\u0004\u0084\u0001\0\u0007\u0084\u0001\0\u0003\u0084\u0001\0\u0001\u0084\u0001\0\u0001\u0084" +
+ "\u0002\0\u0002\u0084\u0001\0\u0004\u0084\u0001\u0085\u0002\u0084\u0006\u0085\u0001\0\u0002\u0085\u0001\u0084" +
+ "\u0002\0\u0005\u0084\u0001\0\u0001\u0084\u0001\0\u0006\u0085\u0002\0\u000a\u007e\u0002\0\u0004\u0084" +
+ "\u0020\0\u0001\u007c\u0017\0\u0002\u007d\u0006\0\u000a\u007e\u000b\0\u0001\u007d\u0001\0\u0001\u007d" +
+ "\u0001\0\u0001\u007d\u0004\0\u0002\u007d\u0008\u007c\u0001\0\u0024\u007c\u0004\0\u0014\u007d\u0001\0" +
+ "\u0002\u007d\u0005\u007c\u000b\u007d\u0001\0\u0024\u007d\u0009\0\u0001\u007d\u0039\0\u002b\u0084\u0014\u0085" +
+ "\u0001\u0084\u000a\u007e\u0006\0\u0006\u0084\u0004\u0085\u0004\u0084\u0003\u0085\u0001\u0084\u0003\u0085\u0002\u0084" +
+ "\u0007\u0085\u0003\u0084\u0004\u0085\u000d\u0084\u000c\u0085\u0001\u0084\u0001\u0085\u000a\u007e\u0004\u0085\u0002\u0084" +
+ "\u0026\u007c\u0001\0\u0001\u007c\u0005\0\u0001\u007c\u0002\0\u002b\u007c\u0001\0\u0004\u007c\u0100\u0088" +
+ "\u0049\u007c\u0001\0\u0004\u007c\u0002\0\u0007\u007c\u0001\0\u0001\u007c\u0001\0\u0004\u007c\u0002\0" +
+ "\u0029\u007c\u0001\0\u0004\u007c\u0002\0\u0021\u007c\u0001\0\u0004\u007c\u0002\0\u0007\u007c\u0001\0" +
+ "\u0001\u007c\u0001\0\u0004\u007c\u0002\0\u000f\u007c\u0001\0\u0039\u007c\u0001\0\u0004\u007c\u0002\0" +
+ "\u0043\u007c\u0002\0\u0003\u007d\u0020\0\u0010\u007c\u0010\0\u0055\u007c\u000c\0\u026c\u007c\u0002\0" +
+ "\u0011\u007c\u0001\0\u001a\u007c\u0005\0\u004b\u007c\u0003\0\u0003\u007c\u000f\0\u000d\u007c\u0001\0" +
+ "\u0004\u007c\u0003\u007d\u000b\0\u0012\u007c\u0003\u007d\u000b\0\u0012\u007c\u0002\u007d\u000c\0\u000d\u007c" +
+ "\u0001\0\u0003\u007c\u0001\0\u0002\u007d\u000c\0\u0034\u0084\u0020\u0085\u0003\0\u0001\u0084\u0004\0" +
+ "\u0001\u0084\u0001\u0085\u0002\0\u000a\u007e\u0021\0\u0003\u007d\u0002\0\u000a\u007e\u0006\0\u0058\u007c" +
+ "\u0008\0\u0029\u007c\u0001\u007d\u0001\u007c\u0005\0\u0046\u007c\u000a\0\u001d\u007c\u0003\0\u000c\u007d" +
+ "\u0004\0\u000c\u007d\u000a\0\u000a\u007e\u001e\u0084\u0002\0\u0005\u0084\u000b\0\u002c\u0084\u0004\0" +
+ "\u0011\u0085\u0007\u0084\u0002\u0085\u0006\0\u000a\u007e\u0001\u0084\u0003\0\u0002\u0084\u0020\0\u0017\u007c" +
+ "\u0005\u007d\u0004\0\u0035\u0084\u000a\u0085\u0001\0\u001d\u0085\u0002\0\u0001\u007d\u000a\u007e\u0006\0" +
+ "\u000a\u007e\u0006\0\u000e\u0084\u0052\0\u0005\u007d\u002f\u007c\u0011\u007d\u0007\u007c\u0004\0\u000a\u007e" +
+ "\u0011\0\u0009\u007d\u000c\0\u0003\u007d\u001e\u007c\u000d\u007d\u0002\u007c\u000a\u007e\u002c\u007c\u000e\u007d" +
+ "\u000c\0\u0024\u007c\u0014\u007d\u0008\0\u000a\u007e\u0003\0\u0003\u007c\u000a\u007e\u0024\u007c\u0052\0" +
+ "\u0003\u007d\u0001\0\u0015\u007d\u0004\u007c\u0001\u007d\u0004\u007c\u0003\u007d\u0002\u007c\u0009\0\u00c0\u007c" +
+ "\u0027\u007d\u0015\0\u0004\u007d\u0116\u007c\u0002\0\u0006\u007c\u0002\0\u0026\u007c\u0002\0\u0006\u007c" +
+ "\u0002\0\u0008\u007c\u0001\0\u0001\u007c\u0001\0\u0001\u007c\u0001\0\u0001\u007c\u0001\0\u001f\u007c" +
+ "\u0002\0\u0035\u007c\u0001\0\u0007\u007c\u0001\0\u0001\u007c\u0003\0\u0003\u007c\u0001\0\u0007\u007c" +
+ "\u0003\0\u0004\u007c\u0002\0\u0006\u007c\u0004\0\u000d\u007c\u0005\0\u0003\u007c\u0001\0\u0007\u007c" +
+ "\u000f\0\u0002\u007d\u0002\u007d\u0008\0\u0002\u0082\u000a\0\u0001\u0082\u0002\0\u0001\u0080\u0002\0" +
+ "\u0005\u007d\u0010\0\u0002\u0083\u0003\0\u0001\u0081\u000f\0\u0001\u0083\u000b\0\u0005\u007d\u0005\0" +
+ "\u0006\u007d\u0001\0\u0001\u007c\u000d\0\u0001\u007c\u0010\0\u000d\u007c\u0033\0\u0021\u007d\u0011\0" +
+ "\u0001\u007c\u0004\0\u0001\u007c\u0002\0\u000a\u007c\u0001\0\u0001\u007c\u0003\0\u0005\u007c\u0006\0" +
+ "\u0001\u007c\u0001\0\u0001\u007c\u0001\0\u0001\u007c\u0001\0\u0004\u007c\u0001\0\u000b\u007c\u0002\0" +
+ "\u0004\u007c\u0005\0\u0005\u007c\u0004\0\u0001\u007c\u0011\0\u0029\u007c\u032d\0\u0034\u007c\u0716\0" +
+ "\u002f\u007c\u0001\0\u002f\u007c\u0001\0\u0085\u007c\u0006\0\u0004\u007c\u0003\u007d\u0002\u007c\u000c\0" +
+ "\u0026\u007c\u0001\0\u0001\u007c\u0005\0\u0001\u007c\u0002\0\u0038\u007c\u0007\0\u0001\u007c\u000f\0" +
+ "\u0001\u007d\u0017\u007c\u0009\0\u0007\u007c\u0001\0\u0007\u007c\u0001\0\u0007\u007c\u0001\0\u0007\u007c" +
+ "\u0001\0\u0007\u007c\u0001\0\u0007\u007c\u0001\0\u0007\u007c\u0001\0\u0007\u007c\u0001\0\u0020\u007d" +
+ "\u002f\0\u0001\u007c\u0050\0\u001a\u0086\u0001\0\u0059\u0086\u000c\0\u00d6\u0086\u002f\0\u0001\u007c" +
+ "\u0001\0\u0001\u0086\u0019\0\u0009\u0086\u0004\u007d\u0002\u007d\u0001\0\u0005\u007f\u0002\0\u0003\u0086" +
+ "\u0001\u007c\u0001\u007c\u0004\0\u0056\u0087\u0002\0\u0002\u007d\u0002\u007f\u0003\u0087\u005b\u007f\u0001\0" +
+ "\u0004\u007f\u0005\0\u0029\u007c\u0003\0\u005e\u0088\u0011\0\u001b\u007c\u0035\0\u0010\u007f\u001f\0" +
+ "\u0041\0\u001f\0\u0051\0\u002f\u007f\u0001\0\u0058\u007f\u00a8\0\u19b6\u0086\u004a\0\u51cd\u0086" +
+ "\u0033\0\u048d\u007c\u0043\0\u002e\u007c\u0002\0\u010d\u007c\u0003\0\u0010\u007c\u000a\u007e\u0002\u007c" +
+ "\u0014\0\u002f\u007c\u0004\u007d\u0001\0\u000a\u007d\u0001\0\u0019\u007c\u0007\0\u0001\u007d\u0050\u007c" +
+ "\u0002\u007d\u0025\0\u0009\u007c\u0002\0\u0067\u007c\u0002\0\u0004\u007c\u0001\0\u0004\u007c\u000c\0" +
+ "\u000b\u007c\u004d\0\u000a\u007c\u0001\u007d\u0003\u007c\u0001\u007d\u0004\u007c\u0001\u007d\u0017\u007c\u0005\u007d" +
+ "\u0018\0\u0034\u007c\u000c\0\u0002\u007d\u0032\u007c\u0011\u007d\u000b\0\u000a\u007e\u0006\0\u0012\u007d" +
+ "\u0006\u007c\u0003\0\u0001\u007c\u0004\0\u000a\u007e\u001c\u007c\u0008\u007d\u0002\0\u0017\u007c\u000d\u007d" +
+ "\u000c\0\u001d\u0088\u0003\0\u0004\u007d\u002f\u007c\u000e\u007d\u000e\0\u0001\u007c\u000a\u007e\u0026\0" +
+ "\u0029\u007c\u000e\u007d\u0009\0\u0003\u007c\u0001\u007d\u0008\u007c\u0002\u007d\u0002\0\u000a\u007e\u0006\0" +
+ "\u001b\u0084\u0001\u0085\u0004\0\u0030\u0084\u0001\u0085\u0001\u0084\u0003\u0085\u0002\u0084\u0002\u0085\u0005\u0084" +
+ "\u0002\u0085\u0001\u0084\u0001\u0085\u0001\u0084\u0018\0\u0005\u0084\u000b\u007c\u0005\u007d\u0002\0\u0003\u007c" +
+ "\u0002\u007d\u000a\0\u0006\u007c\u0002\0\u0006\u007c\u0002\0\u0006\u007c\u0009\0\u0007\u007c\u0001\0" +
+ "\u0007\u007c\u0091\0\u0023\u007c\u0008\u007d\u0001\0\u0002\u007d\u0002\0\u000a\u007e\u0006\0\u2ba4\u0088" +
+ "\u000c\0\u0017\u0088\u0004\0\u0031\u0088\u0004\0\u0001\u0024\u0001\u0020\u0001\u0037\u0001\u0034\u0001\u001b" +
+ "\u0001\u0018\u0002\0\u0001\u0014\u0001\u0011\u0002\0\u0001\u000f\u0001\u000d\u000c\0\u0001\u0003\u0001\u0006" +
+ "\u0010\0\u0001\u006e\u0007\0\u0001\u0049\u0001\u0008\u0005\0\u0001\u0001\u0001\u007a\u0003\0\u0001\u0073" +
+ "\u0001\u0073\u0001\u0073\u0001\u0073\u0001\u0073\u0001\u0073\u0001\u0073\u0001\u0073\u0001\u0073\u0001\u0073\u0001\u0073" +
+ "\u0001\u0073\u0001\u0073\u0001\u0073\u0001\u0073\u0001\u0073\u0001\u0073\u0001\u0073\u0001\u0073\u0001\u0073\u0001\u0073" +
+ "\u0001\u0073\u0001\u0073\u0001\u0073\u0001\u0073\u0001\u0073\u0001\u0073\u0001\u0073\u0001\u0073\u0001\u0073\u0001\u0073" +
+ "\u0001\u0073\u0001\u0073\u0001\u0073\u0001\u0073\u0001\u0073\u0001\u0073\u0001\u0073\u0001\u0073\u0001\u0073\u0001\u0073" +
+ "\u0001\u0074\u0001\u0073\u0001\u0073\u0001\u0073\u0001\u0078\u0001\u0076\u000f\0\u0001\u0070\u02c1\0\u0001\u004c" +
+ "\u00bf\0\u0001\u006f\u0001\u004d\u0001\u000e\u0003\u0077\u0002\u0032\u0001\u0077\u0001\u0032\u0002\u0077\u0001\u001e" +
+ "\u0011\u0077\u0002\u0046\u0007\u004f\u0001\u004e\u0007\u004f\u0007\u0042\u0001\u001f\u0001\u0042\u0001\u0058\u0002\u0036" +
+ "\u0001\u0035\u0001\u0058\u0001\u0036\u0001\u0035\u0008\u0058\u0002\u0047\u0005\u0043\u0002\u003d\u0005\u0043\u0001\u0012" +
+ "\u0008\u002b\u0005\u0013\u0003\u0021\u000a\u0067\u0010\u0021\u0003\u0033\u001a\u0023\u0001\u0022\u0002\u0031\u0002\u006c" +
+ "\u0001\u006d\u0002\u006c\u0002\u006d\u0002\u006c\u0001\u006d\u0003\u0031\u0001\u0030\u0002\u0031\u000a\u0048\u0001\u0056" +
+ "\u0001\u0028\u0001\u0025\u0001\u0048\u0006\u0028\u0001\u0025\u000b\u0028\u0019\u0031\u0007\u0028\u000a\u0068\u0001\u0028" +
+ "\u0005\u000b\u0003\u0057\u0003\u0041\u0001\u0040\u0004\u0041\u0002\u0040\u0008\u0041\u0001\u0040\u0007\u001d\u0001\u001c" +
+ "\u0002\u001d\u0007\u0041\u000e\u0057\u0001\u0061\u0004\u006a\u0001\u0004\u0004\u0069\u0001\u0004\u0005\u0060\u0001\u005f" +
+ "\u0001\u0060\u0003\u005f\u0007\u0060\u0001\u005f\u0013\u0060\u0005\u004b\u0003\u0060\u0006\u004b\u0002\u004b\u0006\u004a" +
+ "\u0005\u004a\u0003\u005c\u0002\u0041\u0007\u005b\u001e\u0041\u0004\u005b\u0005\u0041\u0005\u0057\u0006\u0055\u0002\u0057" +
+ "\u0001\u0055\u0004\u001d\u000b\u005e\u000a\u0069\u0016\u005e\u000d\u000b\u0001\u005d\u0002\u000b\u0001\u007b\u0003\u0062" +
+ "\u0001\u000b\u0002\u0062\u0005\u0071\u0004\u0062\u0004\u0072\u0001\u0071\u0003\u0072\u0001\u0071\u0005\u0072\u0002\u0038" +
+ "\u0001\u003b\u0002\u0038\u0001\u003b\u0001\u0038\u0002\u003b\u0001\u0038\u0001\u003b\u000a\u0038\u0001\u003b\u0004\u0005" +
+ "\u0001\u0064\u0001\u0063\u0001\u0065\u0001\u000a\u0003\u0075\u0001\u0065\u0002\u0075\u0001\u0059\u0002\u005a\u0002\u0075" +
+ "\u0001\u000a\u0001\u0075\u0001\u000a\u0001\u0075\u0001\u000a\u0001\u0075\u0003\u000a\u0001\u0075\u0002\u000a\u0001\u0075" +
+ "\u0001\u000a\u0002\u0075\u0001\u000a\u0001\u0075\u0001\u000a\u0001\u0075\u0001\u000a\u0001\u0075\u0001\u000a\u0001\u0075" +
+ "\u0001\u000a\u0001\u003e\u0002\u003a\u0001\u003e\u0001\u003a\u0002\u003e\u0004\u003a\u0001\u003e\u0007\u003a\u0001\u003e" +
+ "\u0004\u003a\u0001\u003e\u0004\u003a\u0001\u0075\u0001\u000a\u0001\u0075\u000a\u0019\u0001\u002f\u0011\u0019\u0001\u002f" +
+ "\u0003\u001a\u0001\u002f\u0003\u0019\u0001\u002f\u0001\u0019\u0002\u0002\u0002\u0019\u0001\u002f\u000d\u0054\u0004\u0027" +
+ "\u0004\u002c\u0001\u0066\u0001\u002e\u0008\u0066\u0007\u002c\u0006\u0075\u0004\u0015\u0001\u0017\u001f\u0015\u0001\u0017" +
+ "\u0004\u0015\u0015\u0045\u0001\u0079\u0009\u0045\u0011\u0016\u0005\u0045\u0001\u0007\u000a\u002d\u0005\u0045\u0006\u0044" +
+ "\u0004\u003e\u0001\u003f\u0001\u0016\u0005\u0053\u000a\u0051\u000f\u0053\u0001\u003c\u0003\u0039\u000c\u0050\u0001\u0009" +
+ "\u0009\u0026\u0001\u002a\u0005\u0026\u0004\u0052\u000b\u0029\u0002\u000c\u0009\u0026\u0001\u002a\u0019\u0026\u0001\u002a" +
+ "\u0004\u0009\u0004\u0026\u0002\u002a\u0002\u006b\u0001\u0010\u0005\u006b\u002a\u0010\u1900\0\u016e\u0086\u0002\0" +
+ "\u006a\u0086\u0026\0\u0007\u007c\u000c\0\u0005\u007c\u0005\0\u0001\u007c\u0001\u007d\u000a\u007c\u0001\0" +
+ "\u000d\u007c\u0001\0\u0005\u007c\u0001\0\u0001\u007c\u0001\0\u0002\u007c\u0001\0\u0002\u007c\u0001\0" +
+ "\u006c\u007c\u0021\0\u016b\u007c\u0012\0\u0040\u007c\u0002\0\u0036\u007c\u0028\0\u000c\u007c\u0004\0" +
+ "\u0010\u007d\u0001\u0081\u0002\0\u0001\u0080\u0001\u0081\u000b\0\u0007\u007d\u000c\0\u0002\u0083\u0018\0" +
+ "\u0003\u0083\u0001\u0081\u0001\0\u0001\u0082\u0001\0\u0001\u0081\u0001\u0080\u001a\0\u0005\u007c\u0001\0" +
+ "\u0087\u007c\u0002\0\u0001\u007d\u0007\0\u0001\u0082\u0004\0\u0001\u0081\u0001\0\u0001\u0082\u0001\0" +
+ "\u000a\u007e\u0001\u0080\u0001\u0081\u0005\0\u001a\u007c\u0004\0\u0001\u0083\u0001\0\u001a\u007c\u000b\0" +
+ "\u0038\u007f\u0002\u007d\u001f\u0088\u0003\0\u0006\u0088\u0002\0\u0006\u0088\u0002\0\u0006\u0088\u0002\0" +
+ "\u0003\u0088\u001c\0\u0003\u007d\u0004\0";
+
+ /**
+ * Translates characters to character classes
+ */
+ private static readonly char[] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);
+
+ /**
+ * Translates DFA states to action switch labels.
+ */
+ private static readonly int[] ZZ_ACTION = zzUnpackAction();
+
+ private const String ZZ_ACTION_PACKED_0 =
+ "\u0001\0\u0016\u0001\u0001\u0002\u0001\u0003\u0001\u0004\u0001\u0001\u0001\u0005\u0001\u0006" +
+ "\u0001\u0007\u0001\u0008\u0010\0\u0001\u0002\u0001\0\u0001\u0002\u000a\0\u0001\u0003" +
+ "\u0011\0\u0001\u0002\u004d\0";
+
+ private static int[] zzUnpackAction()
+ {
+ int[] result = new int[156];
+ int offset = 0;
+ offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
+ return result;
+ }
+
+ private static int zzUnpackAction(String packed, int offset, int[] result)
+ {
+ int i = 0; /* index in packed string */
+ int j = offset; /* index in unpacked array */
+ int l = packed.Length;
+ while (i < l)
+ {
+ int count = packed[i++];
+ int value = packed[i++];
+ do result[j++] = value; while (--count > 0);
+ }
+ return j;
+ }
+
+
+ /**
+ * Translates a state to a row index in the transition table
+ */
+ private static readonly int[] ZZ_ROWMAP = zzUnpackRowMap();
+
+ private const String ZZ_ROWMAP_PACKED_0 =
+ "\0\0\0\u0089\0\u0112\0\u019b\0\u0224\0\u02ad\0\u0336\0\u03bf" +
+ "\0\u0448\0\u04d1\0\u055a\0\u05e3\0\u066c\0\u06f5\0\u077e\0\u0807" +
+ "\0\u0890\0\u0919\0\u09a2\0\u0a2b\0\u0ab4\0\u0b3d\0\u0bc6\0\u0c4f" +
+ "\0\u0cd8\0\u0d61\0\u0dea\0\u0e73\0\u0efc\0\u0f85\0\u100e\0\u0112" +
+ "\0\u019b\0\u1097\0\u1120\0\u0336\0\u03bf\0\u0448\0\u04d1\0\u11a9" +
+ "\0\u1232\0\u12bb\0\u1344\0\u077e\0\u13cd\0\u1456\0\u14df\0\u1568" +
+ "\0\u15f1\0\u167a\0\u1703\0\u02ad\0\u178c\0\u1815\0\u066c\0\u189e" +
+ "\0\u1927\0\u19b0\0\u1a39\0\u1ac2\0\u1b4b\0\u1bd4\0\u1c5d\0\u1ce6" +
+ "\0\u1d6f\0\u1df8\0\u1e81\0\u1f0a\0\u1f93\0\u201c\0\u20a5\0\u212e" +
+ "\0\u21b7\0\u2240\0\u22c9\0\u2352\0\u23db\0\u0dea\0\u2464\0\u24ed" +
+ "\0\u2576\0\u25ff\0\u2688\0\u2711\0\u279a\0\u2823\0\u28ac\0\u2935" +
+ "\0\u29be\0\u2a47\0\u2ad0\0\u2b59\0\u2be2\0\u2c6b\0\u2cf4\0\u2d7d" +
+ "\0\u2e06\0\u2e8f\0\u2f18\0\u2fa1\0\u302a\0\u30b3\0\u313c\0\u31c5" +
+ "\0\u324e\0\u32d7\0\u3360\0\u33e9\0\u3472\0\u34fb\0\u3584\0\u360d" +
+ "\0\u3696\0\u371f\0\u37a8\0\u3831\0\u38ba\0\u3943\0\u39cc\0\u3a55" +
+ "\0\u3ade\0\u3b67\0\u3bf0\0\u3c79\0\u3d02\0\u3d8b\0\u3e14\0\u3e9d" +
+ "\0\u3f26\0\u3faf\0\u4038\0\u40c1\0\u414a\0\u41d3\0\u425c\0\u42e5" +
+ "\0\u436e\0\u43f7\0\u4480\0\u4509\0\u4592\0\u461b\0\u46a4\0\u472d" +
+ "\0\u47b6\0\u483f\0\u48c8\0\u4951\0\u49da\0\u4a63\0\u4aec\0\u4b75" +
+ "\0\u4bfe\0\u4c87\0\u4d10\0\u4d99";
+
+ private static int[] zzUnpackRowMap()
+ {
+ int[] result = new int[156];
+ int offset = 0;
+ offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
+ return result;
+ }
+
+ private static int zzUnpackRowMap(String packed, int offset, int[] result)
+ {
+ int i = 0; /* index in packed string */
+ int j = offset; /* index in unpacked array */
+ int l = packed.Length;
+ while (i < l)
+ {
+ int high = packed[i++] << 16;
+ result[j++] = high | packed[i++];
+ }
+ return j;
+ }
+
+ /**
+ * The transition table of the DFA
+ */
+ private static readonly int[] ZZ_TRANS = zzUnpackTrans();
+
+ private const String ZZ_TRANS_PACKED_0 =
+ "\u0001\u0002\u0001\u0003\u0001\u0002\u0001\u0004\u0002\u0002\u0001\u0005\u0001\u0002\u0001\u0006" +
+ "\u0004\u0002\u0001\u0007\u0001\u0002\u0001\u0008\u0001\u0002\u0001\u0009\u0002\u0002\u0001\u000a" +
+ "\u0003\u0002\u0001\u000b\u0002\u0002\u0001\u000c\u0004\u0002\u0001\u000d\u0003\u0002\u0001\u000e" +
+ "\u000f\u0002\u0001\u000f\u0002\u0002\u0001\u0010\u0036\u0002\u0001\u0011\u0001\u0002\u0001\u0012" +
+ "\u0002\u0002\u0001\u0013\u0001\u0014\u0001\u0002\u0001\u0015\u0001\u0002\u0001\u0016\u0001\u0002" +
+ "\u0001\u0017\u0001\u0002\u0001\u0018\u0001\u0002\u0001\u0019\u0001\u001a\u0003\u0002\u0001\u001b" +
+ "\u0002\u001c\u0001\u001d\u0001\u001e\u0001\u001f\u008b\0\u0001\u0018\u0002\0\u0001\u0018" +
+ "\u0004\0\u0001\u0018\u000e\0\u0001\u0018\u000d\0\u0001\u0018\u0010\0\u0001\u0018" +
+ "\u0001\0\u0001\u0018\u0019\0\u0001\u0018\u0004\0\u0001\u0018\u0008\0\u0002\u0018" +
+ "\u000d\0\u0002\u0018\u0008\0\u0001\u0018\u0011\0\u0002\u0018\u0005\0\u0001\u0018" +
+ "\u0002\0\u0001\u0018\u0003\0\u0002\u0018\u0008\0\u0004\u0018\u0001\0\u0003\u0018" +
+ "\u0001\0\u0001\u0018\u0002\0\u0001\u0018\u0002\0\u0001\u0018\u0004\0\u0004\u0018" +
+ "\u0001\0\u0002\u0018\u0001\0\u0001\u0018\u0002\0\u0001\u0018\u0001\0\u0001\u0018" +
+ "\u0002\0\u0004\u0018\u0002\0\u0003\u0018\u0001\0\u0002\u0018\u0001\0\u0003\u0018" +
+ "\u0005\0\u0004\u0018\u0002\0\u0008\u0018\u0001\0\u0001\u0018\u0002\0\u0004\u0018" +
+ "\u0001\0\u0002\u0018\u0001\0\u0001\u0018\u0001\0\u0002\u0018\u0004\0\u0001\u0018" +
+ "\u0003\0\u0001\u0018\u0014\0\u0001\u0018\u0004\0\u0001\u0018\u0009\0\u0001\u0018" +
+ "\u0012\0\u0001\u0018\u0003\0\u0001\u0018\u0017\0\u0001\u0018\u0033\0\u0001\u0018" +
+ "\u0014\0\u0001\u0018\u0003\0\u0004\u0018\u0001\0\u0001\u0018\u0001\0\u0001\u0019" +
+ "\u0002\0\u0001\u0018\u0001\0\u0002\u0018\u0002\0\u0002\u0018\u0002\0\u0003\u0018" +
+ "\u0001\0\u0001\u0018\u0001\0\u0001\u0018\u0002\0\u0004\u0018\u0001\0\u0003\u0018" +
+ "\u0001\0\u0001\u0018\u0001\0\u0003\u0018\u0001\0\u0002\u0018\u0001\0\u0004\u0018" +
+ "\u0001\0\u0002\u0018\u0002\0\u0008\u0018\u0001\0\u0002\u0018\u0001\0\u0009\u0018" +
+ "\u0001\0\u0008\u0018\u0001\0\u000b\u0018\u0001\u0019\u0001\0\u0001\u0018\u0001\0" +
+ "\u0001\u0018\u0001\0\u0002\u0018\u0002\0\u0001\u0018\u0001\0\u0001\u0018\u0003\0" +
+ "\u0001\u0018\u001b\0\u0001\u0018\u000f\0\u0001\u0018\u0013\0\u0001\u0018\u0013\0" +
+ "\u0001\u0018\u0006\0\u0003\u0018\u001f\0\u0001\u0018\u0007\0\u0001\u0018\u0013\0" +
+ "\u0001\u0018\u0001\0\u0002\u0018\u0001\0\u0001\u0018\u0001\0\u0004\u0018\u0001\0" +
+ "\u0001\u0018\u0001\0\u0001\u0018\u0001\0\u0002\u0018\u0001\0\u0003\u0018\u0001\0" +
+ "\u0002\u0018\u0001\0\u0004\u0018\u0001\0\u0003\u0018\u0001\0\u000f\u0018\u0001\0" +
+ "\u0002\u0018\u0001\0\u0011\u0018\u0001\0\u0002\u0018\u0001\0\u0021\u0018\u0001\0" +
+ "\u0001\u0018\u0001\0\u0002\u0018\u0002\0\u0001\u0018\u0001\0\u0001\u0018\u0001\0" +
+ "\u0001\u0018\u0001\0\u0001\u0018\u001b\0\u0001\u0018\u0003\0\u0002\u0018\u000a\0" +
+ "\u0002\u0018\u000b\0\u0001\u0018\u0006\0\u0001\u0018\u0002\0\u0002\u0018\u0006\0" +
+ "\u0001\u0018\u0004\0\u0002\u0018\u0002\0\u0002\u0018\u0005\0\u0003\u0018\u0008\0" +
+ "\u0001\u0018\u0016\0\u0001\u0018\u0007\0\u0001\u0018\u0013\0\u0001\u0018\u0001\0" +
+ "\u0002\u0018\u0001\0\u0001\u0018\u0002\0\u0002\u0018\u0002\0\u0001\u0018\u0003\0" +
+ "\u0002\u0018\u0001\0\u0003\u0018\u0001\0\u0002\u0018\u0001\0\u0004\u0018\u0001\0" +
+ "\u0003\u0018\u0001\0\u0001\u0018\u0001\0\u0002\u0018\u0002\0\u0009\u0018\u0001\0" +
+ "\u0002\u0018\u0001\0\u0001\u0018\u0001\0\u0002\u0018\u0001\0\u000c\u0018\u0001\0" +
+ "\u0002\u0018\u0001\0\u0003\u0018\u0001\0\u0001\u0018\u0001\0\u0018\u0018\u0001\0" +
+ "\u0002\u0018\u0001\0\u0001\u0018\u0001\0\u0002\u0018\u0002\0\u0001\u0018\u0001\0" +
+ "\u0001\u0018\u0001\0\u0001\u0018\u0001\0\u0001\u0018\u000f\0\u0001\u0018\u0016\0" +
+ "\u0002\u0018\u0013\0\u0001\u0019\u0001\u0018\u0036\0\u0001\u0019\u0026\0\u0001\u0019" +
+ "\u0017\0\u0004\u0018\u0002\0\u0002\u0018\u000c\0\u0003\u0018\u000d\0\u0003\u0018" +
+ "\u0003\0\u0001\u0018\u0007\0\u0002\u0018\u000b\0\u0001\u0018\u000b\0\u0004\u0019" +
+ "\u0001\0\u0002\u0018\u0009\0\u0001\u0018\u001f\0\u0001\u0018\u0003\0\u0002\u0018" +
+ "\u000a\0\u0002\u0018\u0001\0\u0003\u0018\u0007\0\u0001\u0018\u0006\0\u0002\u0018" +
+ "\u0001\0\u0002\u0018\u0006\0\u0001\u0018\u0004\0\u0002\u0018\u0002\0\u0002\u0018" +
+ "\u0005\0\u0003\u0018\u0008\0\u0001\u0018\u000e\0\u0001\u0018\u0004\0\u0002\u0019" +
+ "\u0001\0\u0001\u0018\u0007\0\u0001\u0018\u0013\0\u0001\u0018\u0004\0\u0001\u0018" +
+ "\u0006\0\u0001\u0018\u0003\0\u0001\u0018\u0006\0\u0001\u0018\u0005\0\u0001\u0018" +
+ "\u0002\0\u0002\u0018\u0001\0\u000f\u0018\u0002\0\u0001\u0018\u000b\0\u0007\u0018" +
+ "\u0002\0\u0001\u0018\u0001\0\u0001\u0018\u0001\0\u0001\u0018\u0002\0\u0001\u0018" +
+ "\u0001\0\u0001\u0018\u0001\0\u0001\u0018\u0001\0\u0001\u0018\u0006\0\u0002\u0018" +
+ "\u0005\0\u0001\u0018\u0001\0\u0001\u0018\u0002\0\u0003\u0018\u0001\0\u0001\u0018" +
+ "\u0007\0\u0001\u0018\u0001\0\u0001\u0018\u001d\0\u0001\u0018\u000f\0\u0002\u0018" +
+ "\u0012\0\u0001\u0018\u0002\0\u0002\u0018\u000b\0\u0001\u0018\u0003\0\u0002\u0018" +
+ "\u0005\0\u0003\u0018\u0008\0\u0001\u0018\u0016\0\u0001\u0018\u0007\0\u0001\u0018" +
+ "\u0018\0\u0001\u0018\u0006\0\u0001\u0018\u0003\0\u0001\u0018\u0003\0\u0001\u0018" +
+ "\u0007\0\u0001\u0018\u0019\0\u0010\u0018\u0005\0\u0003\u0018\u0003\0\u0001\u0018" +
+ "\u0003\0\u0002\u0018\u0002\0\u0002\u0018\u0004\0\u0001\u0018\u0008\0\u0001\u0018" +
+ "\u0004\0\u0001\u0018\u0002\0\u0001\u0018\u0004\0\u0001\u0018\u0001\0\u0001\u0018" +
+ "\u0001\0\u0001\u0018\u005a\0\u0001\u001e\u0021\0\u0001\u001a\u001d\0\u0001\u001d" +
+ "\u0006\0\u0001\u001d\u0002\0\u0001\u001d\u0003\0\u0002\u001d\u0008\0\u0004\u001d" +
+ "\u0001\0\u0003\u001d\u0001\0\u0001\u001d\u0002\0\u0001\u001d\u0002\0\u0001\u001d" +
+ "\u0004\0\u0004\u001d\u0001\0\u0002\u001d\u0006\0\u0001\u001d\u0002\0\u0004\u001d" +
+ "\u0002\0\u0003\u001d\u0001\0\u0002\u001d\u0001\0\u0003\u001d\u0005\0\u0004\u001d" +
+ "\u0002\0\u0008\u001d\u0004\0\u0004\u001d\u0001\0\u0002\u001d\u0001\0\u0001\u001d" +
+ "\u0001\0\u0002\u001d\u0004\0\u0001\u001d\u0003\0\u0001\u001d\u000f\0\u0001\u001d" +
+ "\u0001\0\u0002\u001d\u0001\0\u0001\u001d\u0001\0\u0004\u001d\u0001\0\u0001\u001d" +
+ "\u0001\0\u0001\u001d\u0001\0\u0002\u001d\u0001\0\u0003\u001d\u0001\0\u0002\u001d" +
+ "\u0001\0\u0004\u001d\u0001\0\u0003\u001d\u0001\0\u000f\u001d\u0001\0\u0002\u001d" +
+ "\u0001\0\u0011\u001d\u0001\0\u0002\u001d\u0001\0\u0021\u001d\u0001\0\u0001\u001d" +
+ "\u0001\0\u0002\u001d\u0002\0\u0001\u001d\u0001\0\u0001\u001d\u0001\0\u0001\u001d" +
+ "\u0001\0\u0001\u001d\u000f\0\u0001\u001d\u0001\0\u0002\u001d\u0001\0\u0001\u001d" +
+ "\u0001\0\u0004\u001d\u0001\0\u0001\u001d\u0001\0\u0001\u001d\u0001\0\u0002\u001d" +
+ "\u0002\0\u0001\u001d\u0002\0\u0002\u001d\u0001\0\u0004\u001d\u0001\0\u0003\u001d" +
+ "\u0001\0\u000f\u001d\u0001\0\u0002\u001d\u0001\0\u0011\u001d\u0001\0\u0002\u001d" +
+ "\u0001\0\u0021\u001d\u0001\0\u0001\u001d\u0001\0\u0002\u001d\u0002\0\u0001\u001d" +
+ "\u0001\0\u0001\u001d\u0001\0\u0001\u001d\u0001\0\u0001\u001d\u001b\0\u0001\u001d" +
+ "\u000f\0\u0001\u001d\u0013\0\u0001\u001d\u001a\0\u0001\u001d\u0021\0\u0001\u001d" +
+ "\u0007\0\u0001\u001d\u0013\0\u0001\u001d\u0001\0\u0002\u001d\u0003\0\u0004\u001d" +
+ "\u0001\0\u0001\u001d\u0001\0\u0001\u001d\u0001\0\u0002\u001d\u0001\0\u0003\u001d" +
+ "\u0001\0\u0002\u001d\u0001\0\u0004\u001d\u0001\0\u0003\u001d\u0001\0\u0008\u001d" +
+ "\u0001\0\u0006\u001d\u0001\0\u0002\u001d\u0001\0\u0011\u001d\u0001\0\u0002\u001d" +
+ "\u0001\0\u0021\u001d\u0001\0\u0001\u001d\u0001\0\u0002\u001d\u0002\0\u0001\u001d" +
+ "\u0001\0\u0001\u001d\u0001\0\u0001\u001d\u0001\0\u0001\u001d\u0088\0\u0001\u001e" +
+ "\u000e\0\u0001\u0020\u0001\0\u0001\u0021\u0002\0\u0001\u0022\u0001\0\u0001\u0023" +
+ "\u0004\0\u0001\u0024\u0001\0\u0001\u0025\u0001\0\u0001\u0026\u0002\0\u0001\u0027" +
+ "\u0003\0\u0001\u0028\u0002\0\u0001\u0029\u0004\0\u0001\u002a\u0003\0\u0001\u002b" +
+ "\u000f\0\u0001\u002c\u0002\0\u0001\u002d\u0011\0\u0001\u002e\u0002\0\u0001\u002f" +
+ "\u002f\0\u0002\u0018\u0001\u0030\u0001\0\u0001\u0031\u0001\0\u0001\u0031\u0001\u0032" +
+ "\u0001\0\u0001\u0018\u0002\0\u0001\u0018\u0001\0\u0001\u0020\u0001\0\u0001\u0021" +
+ "\u0002\0\u0001\u0033\u0001\0\u0001\u0034\u0004\0\u0001\u0024\u0001\0\u0001\u0025" +
+ "\u0001\0\u0001\u0026\u0002\0\u0001\u0027\u0003\0\u0001\u0035\u0002\0\u0001\u0036" +
+ "\u0004\0\u0001\u0037\u0003\0\u0001\u0038\u000f\0\u0001\u002c\u0002\0\u0001\u0039" +
+ "\u0011\0\u0001\u003a\u0002\0\u0001\u003b\u002f\0\u0001\u0018\u0002\u0019\u0002\0" +
+ "\u0002\u003c\u0001\u003d\u0001\0\u0001\u0019\u0002\0\u0001\u0018\u0006\0\u0001\u003e" +
+ "\u0011\0\u0001\u003f\u0002\0\u0001\u0040\u0008\0\u0001\u0041\u0012\0\u0001\u0042" +
+ "\u0011\0\u0001\u0043\u0002\0\u0001\u0044\u0021\0\u0001\u0045\u000e\0\u0001\u001a" +
+ "\u0001\0\u0001\u001a\u0003\0\u0001\u0032\u0001\0\u0001\u001a\u0004\0\u0001\u0020" +
+ "\u0001\0\u0001\u0021\u0002\0\u0001\u0046\u0001\0\u0001\u0034\u0004\0\u0001\u0024" +
+ "\u0001\0\u0001\u0025\u0001\0\u0001\u0026\u0002\0\u0001\u0027\u0003\0\u0001\u0047" +
+ "\u0002\0\u0001\u0048\u0004\0\u0001\u0037\u0003\0\u0001\u0049\u000f\0\u0001\u002c" +
+ "\u0002\0\u0001\u004a\u0011\0\u0001\u004b\u0002\0\u0001\u004c\u0021\0\u0001\u004d" +
+ "\u000d\0\u0001\u0018\u0001\u004e\u0001\u0019\u0001\u004f\u0003\0\u0001\u004e\u0001\0" +
+ "\u0001\u004e\u0002\0\u0001\u0018\u0084\0\u0002\u001c\u0009\0\u0001\u0050\u0011\0" +
+ "\u0001\u0051\u0002\0\u0001\u0052\u0008\0\u0001\u0053\u0012\0\u0001\u0054\u0011\0" +
+ "\u0001\u0055\u0002\0\u0001\u0056\u0030\0\u0001\u001d\u0007\0\u0001\u001d\u0009\0" +
+ "\u0001\u0057\u0011\0\u0001\u0058\u0002\0\u0001\u0059\u0008\0\u0001\u005a\u0012\0" +
+ "\u0001\u005b\u0011\0\u0001\u005c\u0002\0\u0001\u005d\u0030\0\u0001\u001e\u0007\0" +
+ "\u0001\u001e\u0004\0\u0001\u0020\u0001\0\u0001\u0021\u0002\0\u0001\u005e\u0001\0" +
+ "\u0001\u0023\u0004\0\u0001\u0024\u0001\0\u0001\u0025\u0001\0\u0001\u0026\u0002\0" +
+ "\u0001\u0027\u0003\0\u0001\u005f\u0002\0\u0001\u0060\u0004\0\u0001\u002a\u0003\0" +
+ "\u0001\u0061\u000f\0\u0001\u002c\u0002\0\u0001\u0062\u0011\0\u0001\u0063\u0002\0" +
+ "\u0001\u0064\u002f\0\u0001\u0018\u0001\u001f\u0001\u0030\u0001\0\u0001\u0031\u0001\0" +
+ "\u0001\u0031\u0001\u0032\u0001\0\u0001\u001f\u0002\0\u0001\u001f\u0007\0\u0001\u0018" +
+ "\u0004\0\u0001\u0018\u0009\0\u0001\u0018\u0012\0\u0001\u0018\u0003\0\u0001\u0018" +
+ "\u000b\0\u0001\u0018\u0002\0\u0001\u0018\u0008\0\u0001\u0018\u000a\0\u0004\u0018" +
+ "\u0025\0\u0001\u0018\u0014\0\u0001\u0018\u0003\0\u0004\u0018\u0001\0\u0001\u0018" +
+ "\u0001\0\u0001\u0030\u0002\0\u0001\u0018\u0001\0\u0002\u0018\u0002\0\u0002\u0018" +
+ "\u0002\0\u0003\u0018\u0001\0\u0001\u0018\u0001\0\u0001\u0018\u0002\0\u0004\u0018" +
+ "\u0001\0\u0003\u0018\u0001\0\u0001\u0018\u0001\0\u0003\u0018\u0001\0\u0002\u0018" +
+ "\u0001\0\u0004\u0018\u0001\0\u0002\u0018\u0002\0\u0008\u0018\u0001\0\u0002\u0018" +
+ "\u0001\0\u0009\u0018\u0001\0\u0008\u0018\u0001\0\u000b\u0018\u0001\u0030\u0001\0" +
+ "\u0001\u0018\u0001\0\u0001\u0018\u0001\0\u0002\u0018\u0002\0\u0001\u0018\u0001\0" +
+ "\u0001\u0018\u0003\0\u0001\u0018\u000f\0\u0001\u0018\u0016\0\u0002\u0018\u0013\0" +
+ "\u0001\u0030\u0001\u0018\u0024\0\u0001\u0018\u0011\0\u0001\u0030\u0026\0\u0001\u0030" +
+ "\u0009\0\u0001\u0018\u000d\0\u0004\u0018\u0002\0\u0002\u0018\u000c\0\u0004\u0018" +
+ "\u0001\0\u0002\u0018\u0009\0\u0003\u0018\u0003\0\u0001\u0018\u0001\0\u0001\u0018" +
+ "\u0004\0\u0003\u0018\u0005\0\u0004\u0018\u0002\0\u0002\u0018\u000a\0\u0004\u0030" +
+ "\u0001\0\u0002\u0018\u0001\0\u0001\u0018\u0007\0\u0001\u0018\u001f\0\u0001\u0018" +
+ "\u0003\0\u0002\u0018\u000a\0\u0002\u0018\u0001\0\u0003\u0018\u0007\0\u0001\u0018" +
+ "\u0006\0\u0002\u0018\u0001\0\u0002\u0018\u0006\0\u0001\u0018\u0004\0\u0002\u0018" +
+ "\u0002\0\u0002\u0018\u0005\0\u0003\u0018\u0008\0\u0001\u0018\u000e\0\u0001\u0018" +
+ "\u0004\0\u0002\u0030\u0001\0\u0001\u0018\u0007\0\u0001\u0018\u0013\0\u0001\u0018" +
+ "\u0004\0\u0001\u0018\u0006\0\u0001\u0018\u0003\0\u0001\u0018\u0006\0\u0001\u0018" +
+ "\u0005\0\u0001\u0018\u0002\0\u0002\u0018\u0001\0\u000f\u0018\u0002\0\u0001\u0018" +
+ "\u000b\0\u0007\u0018\u0002\0\u0001\u0018\u0001\0\u0001\u0018\u0001\0\u0001\u0018" +
+ "\u0002\0\u0001\u0018\u0001\0\u0001\u0018\u0001\0\u0001\u0018\u0001\0\u0001\u0018" +
+ "\u0004\0\u0001\u0018\u0001\0\u0002\u0018\u0005\0\u0001\u0018\u0001\0\u0001\u0018" +
+ "\u0002\0\u0003\u0018\u0001\0\u0001\u0018\u0007\0\u0001\u0018\u0001\0\u0001\u0018" +
+ "\u0016\0\u0001\u0018\u0006\0\u0001\u0018\u0003\0\u0001\u0018\u0003\0\u0001\u0018" +
+ "\u0007\0\u0001\u0018\u0019\0\u0010\u0018\u0005\0\u0003\u0018\u0003\0\u0001\u0018" +
+ "\u0003\0\u0002\u0018\u0002\0\u0002\u0018\u0004\0\u0005\u0018\u0004\0\u0001\u0018" +
+ "\u0004\0\u0001\u0018\u0002\0\u0001\u0018\u0004\0\u0001\u0018\u0001\0\u0001\u0018" +
+ "\u0001\0\u0001\u0018\u0057\0\u0002\u0018\u000d\0\u0004\u0018\u0030\0\u0001\u0018" +
+ "\u000d\0\u0002\u0018\u0008\0\u0002\u0018\u0001\0\u0001\u0018\u0001\0\u0001\u0018" +
+ "\u0009\0\u0001\u0018\u0009\0\u0002\u0018\u0006\0\u0001\u0018\u0002\0\u0004\u0018" +
+ "\u0003\0\u0001\u0018\u0002\0\u0002\u0018\u0001\0\u0003\u0018\u0005\0\u0001\u0018" +
+ "\u0001\0\u0002\u0018\u0002\0\u0002\u0018\u0001\0\u0004\u0018\u0005\0\u0001\u0018" +
+ "\u0001\0\u0002\u0018\u001f\0\u0001\u0020\u0001\0\u0001\u0021\u0002\0\u0001\u0065" +
+ "\u0001\0\u0001\u0023\u0004\0\u0001\u0024\u0001\0\u0001\u0025\u0001\0\u0001\u0026" +
+ "\u0002\0\u0001\u0027\u0003\0\u0001\u0066\u0002\0\u0001\u0067\u0004\0\u0001\u002a" +
+ "\u0003\0\u0001\u0068\u000f\0\u0001\u002c\u0002\0\u0001\u0069\u0011\0\u0001\u006a" +
+ "\u0002\0\u0001\u006b\u002f\0\u0001\u0018\u0002\u0030\u0002\0\u0002\u006c\u0001\u0032" +
+ "\u0001\0\u0001\u0030\u0002\0\u0001\u0018\u0001\0\u0001\u0020\u0001\0\u0001\u0021" +
+ "\u0002\0\u0001\u006d\u0001\0\u0001\u006e\u0004\0\u0001\u0024\u0001\0\u0001\u0025" +
+ "\u0001\0\u0001\u0026\u0002\0\u0001\u0027\u0003\0\u0001\u006f\u0002\0\u0001\u0070" +
+ "\u0004\0\u0001\u0071\u0003\0\u0001\u0072\u000f\0\u0001\u002c\u0002\0\u0001\u0073" +
+ "\u0011\0\u0001\u0074\u0002\0\u0001\u0075\u002f\0\u0001\u0018\u0001\u0031\u0007\0" +
+ "\u0001\u0031\u0002\0\u0001\u0018\u0001\0\u0001\u0020\u0001\0\u0001\u0021\u0002\0" +
+ "\u0001\u0076\u0001\0\u0001\u0023\u0004\0\u0001\u0024\u0001\0\u0001\u0025\u0001\0" +
+ "\u0001\u0026\u0002\0\u0001\u0027\u0003\0\u0001\u0077\u0002\0\u0001\u0078\u0004\0" +
+ "\u0001\u002a\u0003\0\u0001\u0079\u000f\0\u0001\u002c\u0002\0\u0001\u007a\u0011\0" +
+ "\u0001\u007b\u0002\0\u0001\u007c\u0021\0\u0001\u004d\u000d\0\u0001\u0018\u0001\u0032" +
+ "\u0001\u0030\u0001\u004f\u0003\0\u0001\u0032\u0001\0\u0001\u0032\u0002\0\u0001\u0018" +
+ "\u0007\0\u0001\u0018\u0004\0\u0001\u0018\u0009\0\u0001\u0018\u0012\0\u0001\u0018" +
+ "\u0003\0\u0001\u0018\u000b\0\u0001\u0019\u0002\0\u0001\u0019\u0008\0\u0001\u0018" +
+ "\u000a\0\u0004\u0019\u0025\0\u0001\u0018\u0011\0\u0001\u0018\u0016\0\u0002\u0018" +
+ "\u0013\0\u0001\u0019\u0001\u0018\u0024\0\u0001\u0019\u0011\0\u0001\u0019\u0026\0" +
+ "\u0001\u0019\u0009\0\u0001\u0019\u000d\0\u0004\u0018\u0002\0\u0002\u0018\u000c\0" +
+ "\u0003\u0018\u0001\u0019\u0001\0\u0002\u0019\u0009\0\u0003\u0018\u0003\0\u0001\u0018" +
+ "\u0001\0\u0001\u0019\u0004\0\u0001\u0019\u0002\u0018\u0005\0\u0004\u0019\u0002\0" +
+ "\u0001\u0018\u0001\u0019\u000a\0\u0004\u0019\u0001\0\u0002\u0018\u0001\0\u0001\u0019" +
+ "\u0007\0\u0001\u0018\u0013\0\u0001\u0018\u0004\0\u0001\u0018\u0006\0\u0001\u0018" +
+ "\u0003\0\u0001\u0018\u0006\0\u0001\u0018\u0005\0\u0001\u0018\u0002\0\u0002\u0018" +
+ "\u0001\0\u000f\u0018\u0002\0\u0001\u0018\u000b\0\u0007\u0018\u0002\0\u0001\u0018" +
+ "\u0001\0\u0001\u0018\u0001\0\u0001\u0018\u0002\0\u0001\u0018\u0001\0\u0001\u0018" +
+ "\u0001\0\u0001\u0018\u0001\0\u0001\u0018\u0004\0\u0001\u0019\u0001\0\u0002\u0018" +
+ "\u0005\0\u0001\u0018\u0001\0\u0001\u0018\u0002\0\u0003\u0018\u0001\0\u0001\u0018" +
+ "\u0007\0\u0001\u0018\u0001\0\u0001\u0018\u0016\0\u0001\u0018\u0006\0\u0001\u0018" +
+ "\u0003\0\u0001\u0018\u0003\0\u0001\u0018\u0007\0\u0001\u0018\u0019\0\u0010\u0018" +
+ "\u0005\0\u0003\u0018\u0003\0\u0001\u0018\u0003\0\u0002\u0018\u0002\0\u0002\u0018" +
+ "\u0004\0\u0001\u0018\u0004\u0019\u0004\0\u0001\u0018\u0004\0\u0001\u0018\u0002\0" +
+ "\u0001\u0018\u0004\0\u0001\u0018\u0001\0\u0001\u0018\u0001\0\u0001\u0018\u0057\0" +
+ "\u0002\u0019\u000d\0\u0004\u0019\u0030\0\u0001\u0019\u000d\0\u0002\u0019\u0008\0" +
+ "\u0002\u0019\u0001\0\u0001\u0019\u0001\0\u0001\u0019\u0009\0\u0001\u0019\u0009\0" +
+ "\u0002\u0019\u0006\0\u0001\u0019\u0002\0\u0004\u0019\u0003\0\u0001\u0019\u0002\0" +
+ "\u0002\u0019\u0001\0\u0003\u0019\u0005\0\u0001\u0019\u0001\0\u0002\u0019\u0002\0" +
+ "\u0002\u0019\u0001\0\u0004\u0019\u0005\0\u0001\u0019\u0001\0\u0002\u0019\u0024\0" +
+ "\u0001\u007d\u0001\0\u0001\u007e\u000f\0\u0001\u007f\u0002\0\u0001\u0080\u0004\0" +
+ "\u0001\u0081\u0003\0\u0001\u0082\u0012\0\u0001\u0083\u0011\0\u0001\u0084\u0002\0" +
+ "\u0001\u0085\u0030\0\u0001\u003c\u0001\u0019\u0006\0\u0001\u003c\u0004\0\u0001\u0020" +
+ "\u0001\0\u0001\u0021\u0002\0\u0001\u0086\u0001\0\u0001\u0034\u0004\0\u0001\u0024" +
+ "\u0001\0\u0001\u0025\u0001\0\u0001\u0026\u0002\0\u0001\u0027\u0003\0\u0001\u0087" +
+ "\u0002\0\u0001\u0088\u0004\0\u0001\u0037\u0003\0\u0001\u0089\u000f\0\u0001\u002c" +
+ "\u0002\0\u0001\u008a\u0011\0\u0001\u008b\u0002\0\u0001\u008c\u0021\0\u0001\u004d" +
+ "\u000d\0\u0001\u0018\u0001\u003d\u0001\u0019\u0001\u004f\u0003\0\u0001\u003d\u0001\0" +
+ "\u0001\u003d\u0002\0\u0001\u0018\u0039\0\u0001\u001a\u0002\0\u0001\u001a\u0013\0" +
+ "\u0004\u001a\u0089\0\u0001\u001a\u0042\0\u0001\u001a\u0024\0\u0001\u001a\u0001\0" +
+ "\u0002\u001a\u0011\0\u0001\u001a\u0004\0\u0001\u001a\u0007\0\u0004\u001a\u0003\0" +
+ "\u0001\u001a\u0012\0\u0001\u001a\u0076\0\u0001\u001a\u008d\0\u0004\u001a\u006d\0" +
+ "\u0002\u001a\u000d\0\u0004\u001a\u0030\0\u0001\u001a\u000d\0\u0002\u001a\u0008\0" +
+ "\u0002\u001a\u0001\0\u0001\u001a\u0001\0\u0001\u001a\u0009\0\u0001\u001a\u0009\0" +
+ "\u0002\u001a\u0006\0\u0001\u001a\u0002\0\u0004\u001a\u0003\0\u0001\u001a\u0002\0" +
+ "\u0002\u001a\u0001\0\u0003\u001a\u0005\0\u0001\u001a\u0001\0\u0002\u001a\u0002\0" +
+ "\u0002\u001a\u0001\0\u0004\u001a\u0005\0\u0001\u001a\u0001\0\u0002\u001a\u008d\0" +
+ "\u0001\u001a\u0020\0\u0001\u0018\u0004\0\u0001\u0018\u0009\0\u0001\u0018\u0012\0" +
+ "\u0001\u0018\u0003\0\u0001\u0018\u000b\0\u0001\u004e\u0002\0\u0001\u004e\u0008\0" +
+ "\u0001\u0018\u000a\0\u0004\u004e\u0025\0\u0001\u0018\u0011\0\u0001\u0018\u0016\0" +
+ "\u0002\u0018\u0013\0\u0001\u0019\u0001\u0018\u0024\0\u0001\u004e\u0011\0\u0001\u0019" +
+ "\u0026\0\u0001\u0019\u0009\0\u0001\u004e\u000d\0\u0004\u0018\u0002\0\u0002\u0018" +
+ "\u000c\0\u0003\u0018\u0001\u004e\u0001\0\u0002\u004e\u0009\0\u0003\u0018\u0003\0" +
+ "\u0001\u0018\u0001\0\u0001\u004e\u0004\0\u0001\u004e\u0002\u0018\u0005\0\u0004\u004e" +
+ "\u0002\0\u0001\u0018\u0001\u004e\u000a\0\u0004\u0019\u0001\0\u0002\u0018\u0001\0" +
+ "\u0001\u004e\u0007\0\u0001\u0018\u0013\0\u0001\u0018\u0004\0\u0001\u0018\u0006\0" +
+ "\u0001\u0018\u0003\0\u0001\u0018\u0006\0\u0001\u0018\u0005\0\u0001\u0018\u0002\0" +
+ "\u0002\u0018\u0001\0\u000f\u0018\u0002\0\u0001\u0018\u000b\0\u0007\u0018\u0002\0" +
+ "\u0001\u0018\u0001\0\u0001\u0018\u0001\0\u0001\u0018\u0002\0\u0001\u0018\u0001\0" +
+ "\u0001\u0018\u0001\0\u0001\u0018\u0001\0\u0001\u0018\u0004\0\u0001\u004e\u0001\0" +
+ "\u0002\u0018\u0005\0\u0001\u0018\u0001\0\u0001\u0018\u0002\0\u0003\u0018\u0001\0" +
+ "\u0001\u0018\u0007\0\u0001\u0018\u0001\0\u0001\u0018\u0016\0\u0001\u0018\u0006\0" +
+ "\u0001\u0018\u0003\0\u0001\u0018\u0003\0\u0001\u0018\u0007\0\u0001\u0018\u0019\0" +
+ "\u0010\u0018\u0005\0\u0003\u0018\u0003\0\u0001\u0018\u0003\0\u0002\u0018\u0002\0" +
+ "\u0002\u0018\u0004\0\u0001\u0018\u0004\u004e\u0004\0\u0001\u0018\u0004\0\u0001\u0018" +
+ "\u0002\0\u0001\u0018\u0004\0\u0001\u0018\u0001\0\u0001\u0018\u0001\0\u0001\u0018" +
+ "\u0057\0\u0002\u004e\u000d\0\u0004\u004e\u0030\0\u0001\u004e\u000d\0\u0002\u004e" +
+ "\u0008\0\u0002\u004e\u0001\0\u0001\u004e\u0001\0\u0001\u004e\u0009\0\u0001\u004e" +
+ "\u0009\0\u0002\u004e\u0006\0\u0001\u004e\u0002\0\u0004\u004e\u0003\0\u0001\u004e" +
+ "\u0002\0\u0002\u004e\u0001\0\u0003\u004e\u0005\0\u0001\u004e\u0001\0\u0002\u004e" +
+ "\u0002\0\u0002\u004e\u0001\0\u0004\u004e\u0005\0\u0001\u004e\u0001\0\u0002\u004e" +
+ "\u008d\0\u0001\u004f\u001f\0\u0001\u008d\u0011\0\u0001\u008e\u0002\0\u0001\u008f" +
+ "\u0008\0\u0001\u0090\u0012\0\u0001\u0091\u0011\0\u0001\u0092\u0002\0\u0001\u0093" +
+ "\u0021\0\u0001\u004d\u000e\0\u0001\u004f\u0001\0\u0001\u004f\u0003\0\u0001\u0032" +
+ "\u0001\0\u0001\u004f\u003c\0\u0001\u001d\u0002\0\u0001\u001d\u0013\0\u0004\u001d" +
+ "\u0089\0\u0001\u001d\u0042\0\u0001\u001d\u0024\0\u0001\u001d\u0001\0\u0002\u001d" +
+ "\u0011\0\u0001\u001d\u0004\0\u0001\u001d\u0007\0\u0004\u001d\u0003\0\u0001\u001d" +
+ "\u0012\0\u0001\u001d\u0076\0\u0001\u001d\u008d\0\u0004\u001d\u006d\0\u0002\u001d" +
+ "\u000d\0\u0004\u001d\u0030\0\u0001\u001d\u000d\0\u0002\u001d\u0008\0\u0002\u001d" +
+ "\u0001\0\u0001\u001d\u0001\0\u0001\u001d\u0009\0\u0001\u001d\u0009\0\u0002\u001d" +
+ "\u0006\0\u0001\u001d\u0002\0\u0004\u001d\u0003\0\u0001\u001d\u0002\0\u0002\u001d" +
+ "\u0001\0\u0003\u001d\u0005\0\u0001\u001d\u0001\0\u0002\u001d\u0002\0\u0002\u001d" +
+ "\u0001\0\u0004\u001d\u0005\0\u0001\u001d\u0001\0\u0002\u001d\u0057\0\u0001\u001e" +
+ "\u0002\0\u0001\u001e\u0013\0\u0004\u001e\u0089\0\u0001\u001e\u0042\0\u0001\u001e" +
+ "\u0024\0\u0001\u001e\u0001\0\u0002\u001e\u0011\0\u0001\u001e\u0004\0\u0001\u001e" +
+ "\u0007\0\u0004\u001e\u0003\0\u0001\u001e\u0012\0\u0001\u001e\u0076\0\u0001\u001e" +
+ "\u008d\0\u0004\u001e\u006d\0\u0002\u001e\u000d\0\u0004\u001e\u0030\0\u0001\u001e" +
+ "\u000d\0\u0002\u001e\u0008\0\u0002\u001e\u0001\0\u0001\u001e\u0001\0\u0001\u001e" +
+ "\u0009\0\u0001\u001e\u0009\0\u0002\u001e\u0006\0\u0001\u001e\u0002\0\u0004\u001e" +
+ "\u0003\0\u0001\u001e\u0002\0\u0002\u001e\u0001\0\u0003\u001e\u0005\0\u0001\u001e" +
+ "\u0001\0\u0002\u001e\u0002\0\u0002\u001e\u0001\0\u0004\u001e\u0005\0\u0001\u001e" +
+ "\u0001\0\u0002\u001e\u0025\0\u0001\u0018\u0004\0\u0001\u0018\u0009\0\u0001\u0018" +
+ "\u0012\0\u0001\u0018\u0003\0\u0001\u0018\u000b\0\u0001\u001f\u0002\0\u0001\u001f" +
+ "\u0008\0\u0001\u0018\u000a\0\u0004\u001f\u0025\0\u0001\u0018\u0011\0\u0001\u0018" +
+ "\u0016\0\u0002\u0018\u0013\0\u0001\u0030\u0001\u0018\u0024\0\u0001\u001f\u0011\0" +
+ "\u0001\u0030\u0026\0\u0001\u0030\u0009\0\u0001\u001f\u000d\0\u0004\u0018\u0002\0" +
+ "\u0002\u0018\u000c\0\u0003\u0018\u0001\u001f\u0001\0\u0002\u001f\u0009\0\u0003\u0018" +
+ "\u0003\0\u0001\u0018\u0001\0\u0001\u001f\u0004\0\u0001\u001f\u0002\u0018\u0005\0" +
+ "\u0004\u001f\u0002\0\u0001\u0018\u0001\u001f\u000a\0\u0004\u0030\u0001\0\u0002\u0018" +
+ "\u0001\0\u0001\u001f\u0007\0\u0001\u0018\u0013\0\u0001\u0018\u0004\0\u0001\u0018" +
+ "\u0006\0\u0001\u0018\u0003\0\u0001\u0018\u0006\0\u0001\u0018\u0005\0\u0001\u0018" +
+ "\u0002\0\u0002\u0018\u0001\0\u000f\u0018\u0002\0\u0001\u0018\u000b\0\u0007\u0018" +
+ "\u0002\0\u0001\u0018\u0001\0\u0001\u0018\u0001\0\u0001\u0018\u0002\0\u0001\u0018" +
+ "\u0001\0\u0001\u0018\u0001\0\u0001\u0018\u0001\0\u0001\u0018\u0004\0\u0001\u001f" +
+ "\u0001\0\u0002\u0018\u0005\0\u0001\u0018\u0001\0\u0001\u0018\u0002\0\u0003\u0018" +
+ "\u0001\0\u0001\u0018\u0007\0\u0001\u0018\u0001\0\u0001\u0018\u0016\0\u0001\u0018" +
+ "\u0006\0\u0001\u0018\u0003\0\u0001\u0018\u0003\0\u0001\u0018\u0007\0\u0001\u0018" +
+ "\u0019\0\u0010\u0018\u0005\0\u0003\u0018\u0003\0\u0001\u0018\u0003\0\u0002\u0018" +
+ "\u0002\0\u0002\u0018\u0004\0\u0001\u0018\u0004\u001f\u0004\0\u0001\u0018\u0004\0" +
+ "\u0001\u0018\u0002\0\u0001\u0018\u0004\0\u0001\u0018\u0001\0\u0001\u0018\u0001\0" +
+ "\u0001\u0018\u0057\0\u0002\u001f\u000d\0\u0004\u001f\u0030\0\u0001\u001f\u000d\0" +
+ "\u0002\u001f\u0008\0\u0002\u001f\u0001\0\u0001\u001f\u0001\0\u0001\u001f\u0009\0" +
+ "\u0001\u001f\u0009\0\u0002\u001f\u0006\0\u0001\u001f\u0002\0\u0004\u001f\u0003\0" +
+ "\u0001\u001f\u0002\0\u0002\u001f\u0001\0\u0003\u001f\u0005\0\u0001\u001f\u0001\0" +
+ "\u0002\u001f\u0002\0\u0002\u001f\u0001\0\u0004\u001f\u0005\0\u0001\u001f\u0001\0" +
+ "\u0002\u001f\u0025\0\u0001\u0018\u0004\0\u0001\u0018\u0009\0\u0001\u0018\u0012\0" +
+ "\u0001\u0018\u0003\0\u0001\u0018\u000b\0\u0001\u0030\u0002\0\u0001\u0030\u0008\0" +
+ "\u0001\u0018\u000a\0\u0004\u0030\u0025\0\u0001\u0018\u0011\0\u0001\u0018\u0016\0" +
+ "\u0002\u0018\u0013\0\u0001\u0030\u0001\u0018\u0024\0\u0001\u0030\u0011\0\u0001\u0030" +
+ "\u0026\0\u0001\u0030\u0009\0\u0001\u0030\u000d\0\u0004\u0018\u0002\0\u0002\u0018" +
+ "\u000c\0\u0003\u0018\u0001\u0030\u0001\0\u0002\u0030\u0009\0\u0003\u0018\u0003\0" +
+ "\u0001\u0018\u0001\0\u0001\u0030\u0004\0\u0001\u0030\u0002\u0018\u0005\0\u0004\u0030" +
+ "\u0002\0\u0001\u0018\u0001\u0030\u000a\0\u0004\u0030\u0001\0\u0002\u0018\u0001\0" +
+ "\u0001\u0030\u0007\0\u0001\u0018\u0013\0\u0001\u0018\u0004\0\u0001\u0018\u0006\0" +
+ "\u0001\u0018\u0003\0\u0001\u0018\u0006\0\u0001\u0018\u0005\0\u0001\u0018\u0002\0" +
+ "\u0002\u0018\u0001\0\u000f\u0018\u0002\0\u0001\u0018\u000b\0\u0007\u0018\u0002\0" +
+ "\u0001\u0018\u0001\0\u0001\u0018\u0001\0\u0001\u0018\u0002\0\u0001\u0018\u0001\0" +
+ "\u0001\u0018\u0001\0\u0001\u0018\u0001\0\u0001\u0018\u0004\0\u0001\u0030\u0001\0" +
+ "\u0002\u0018\u0005\0\u0001\u0018\u0001\0\u0001\u0018\u0002\0\u0003\u0018\u0001\0" +
+ "\u0001\u0018\u0007\0\u0001\u0018\u0001\0\u0001\u0018\u0016\0\u0001\u0018\u0006\0" +
+ "\u0001\u0018\u0003\0\u0001\u0018\u0003\0\u0001\u0018\u0007\0\u0001\u0018\u0019\0" +
+ "\u0010\u0018\u0005\0\u0003\u0018\u0003\0\u0001\u0018\u0003\0\u0002\u0018\u0002\0" +
+ "\u0002\u0018\u0004\0\u0001\u0018\u0004\u0030\u0004\0\u0001\u0018\u0004\0\u0001\u0018" +
+ "\u0002\0\u0001\u0018\u0004\0\u0001\u0018\u0001\0\u0001\u0018\u0001\0\u0001\u0018" +
+ "\u0057\0\u0002\u0030\u000d\0\u0004\u0030\u0030\0\u0001\u0030\u000d\0\u0002\u0030" +
+ "\u0008\0\u0002\u0030\u0001\0\u0001\u0030\u0001\0\u0001\u0030\u0009\0\u0001\u0030" +
+ "\u0009\0\u0002\u0030\u0006\0\u0001\u0030\u0002\0\u0004\u0030\u0003\0\u0001\u0030" +
+ "\u0002\0\u0002\u0030\u0001\0\u0003\u0030\u0005\0\u0001\u0030\u0001\0\u0002\u0030" +
+ "\u0002\0\u0002\u0030\u0001\0\u0004\u0030\u0005\0\u0001\u0030\u0001\0\u0002\u0030" +
+ "\u0024\0\u0001\u0094\u0001\0\u0001\u0095\u000f\0\u0001\u0096\u0002\0\u0001\u0097" +
+ "\u0004\0\u0001\u0098\u0003\0\u0001\u0099\u0012\0\u0001\u009a\u0011\0\u0001\u009b" +
+ "\u0002\0\u0001\u009c\u0030\0\u0001\u006c\u0001\u0030\u0006\0\u0001\u006c\u000a\0" +
+ "\u0001\u0018\u0004\0\u0001\u0018\u0009\0\u0001\u0018\u0012\0\u0001\u0018\u0003\0" +
+ "\u0001\u0018\u000b\0\u0001\u0031\u0002\0\u0001\u0031\u0008\0\u0001\u0018\u000a\0" +
+ "\u0004\u0031\u0025\0\u0001\u0018\u0014\0\u0001\u0018\u0003\0\u0004\u0018\u0001\0" +
+ "\u0001\u0018\u0004\0\u0001\u0018\u0001\0\u0002\u0018\u0002\0\u0002\u0018\u0002\0" +
+ "\u0003\u0018\u0001\0\u0001\u0018\u0001\0\u0001\u0018\u0002\0\u0004\u0018\u0001\0" +
+ "\u0003\u0018\u0001\0\u0001\u0018\u0001\0\u0003\u0018\u0001\0\u0002\u0018\u0001\0" +
+ "\u0004\u0018\u0001\0\u0002\u0018\u0002\0\u0008\u0018\u0001\0\u0002\u0018\u0001\0" +
+ "\u0009\u0018\u0001\0\u0008\u0018\u0001\0\u000b\u0018\u0002\0\u0001\u0018\u0001\0" +
+ "\u0001\u0018\u0001\0\u0002\u0018\u0002\0\u0001\u0018\u0001\0\u0001\u0018\u0003\0" +
+ "\u0001\u0018\u000f\0\u0001\u0018\u0016\0\u0002\u0018\u0014\0\u0001\u0018\u0024\0" +
+ "\u0001\u0031\u0042\0\u0001\u0031\u000d\0\u0004\u0018\u0002\0\u0002\u0018\u000c\0" +
+ "\u0003\u0018\u0001\u0031\u0001\0\u0002\u0031\u0009\0\u0003\u0018\u0003\0\u0001\u0018" +
+ "\u0001\0\u0001\u0031\u0004\0\u0001\u0031\u0002\u0018\u0005\0\u0004\u0031\u0002\0" +
+ "\u0001\u0018\u0001\u0031\u000f\0\u0002\u0018\u0001\0\u0001\u0031\u0007\0\u0001\u0018" +
+ "\u001f\0\u0001\u0018\u0003\0\u0002\u0018\u000a\0\u0002\u0018\u0001\0\u0003\u0018" +
+ "\u0007\0\u0001\u0018\u0006\0\u0002\u0018\u0001\0\u0002\u0018\u0006\0\u0001\u0018" +
+ "\u0004\0\u0002\u0018\u0002\0\u0002\u0018\u0005\0\u0003\u0018\u0008\0\u0001\u0018" +
+ "\u000e\0\u0001\u0018\u0007\0\u0001\u0018\u0007\0\u0001\u0018\u0013\0\u0001\u0018" +
+ "\u0004\0\u0001\u0018\u0006\0\u0001\u0018\u0003\0\u0001\u0018\u0006\0\u0001\u0018" +
+ "\u0005\0\u0001\u0018\u0002\0\u0002\u0018\u0001\0\u000f\u0018\u0002\0\u0001\u0018" +
+ "\u000b\0\u0007\u0018\u0002\0\u0001\u0018\u0001\0\u0001\u0018\u0001\0\u0001\u0018" +
+ "\u0002\0\u0001\u0018\u0001\0\u0001\u0018\u0001\0\u0001\u0018\u0001\0\u0001\u0018" +
+ "\u0004\0\u0001\u0031\u0001\0\u0002\u0018\u0005\0\u0001\u0018\u0001\0\u0001\u0018" +
+ "\u0002\0\u0003\u0018\u0001\0\u0001\u0018\u0007\0\u0001\u0018\u0001\0\u0001\u0018" +
+ "\u0016\0\u0001\u0018\u0006\0\u0001\u0018\u0003\0\u0001\u0018\u0003\0\u0001\u0018" +
+ "\u0007\0\u0001\u0018\u0019\0\u0010\u0018\u0005\0\u0003\u0018\u0003\0\u0001\u0018" +
+ "\u0003\0\u0002\u0018\u0002\0\u0002\u0018\u0004\0\u0001\u0018\u0004\u0031\u0004\0" +
+ "\u0001\u0018\u0004\0\u0001\u0018\u0002\0\u0001\u0018\u0004\0\u0001\u0018\u0001\0" +
+ "\u0001\u0018\u0001\0\u0001\u0018\u0057\0\u0002\u0031\u000d\0\u0004\u0031\u0030\0" +
+ "\u0001\u0031\u000d\0\u0002\u0031\u0008\0\u0002\u0031\u0001\0\u0001\u0031\u0001\0" +
+ "\u0001\u0031\u0009\0\u0001\u0031\u0009\0\u0002\u0031\u0006\0\u0001\u0031\u0002\0" +
+ "\u0004\u0031\u0003\0\u0001\u0031\u0002\0\u0002\u0031\u0001\0\u0003\u0031\u0005\0" +
+ "\u0001\u0031\u0001\0\u0002\u0031\u0002\0\u0002\u0031\u0001\0\u0004\u0031\u0005\0" +
+ "\u0001\u0031\u0001\0\u0002\u0031\u0025\0\u0001\u0018\u0004\0\u0001\u0018\u0009\0" +
+ "\u0001\u0018\u0012\0\u0001\u0018\u0003\0\u0001\u0018\u000b\0\u0001\u0032\u0002\0" +
+ "\u0001\u0032\u0008\0\u0001\u0018\u000a\0\u0004\u0032\u0025\0\u0001\u0018\u0011\0" +
+ "\u0001\u0018\u0016\0\u0002\u0018\u0013\0\u0001\u0030\u0001\u0018\u0024\0\u0001\u0032" +
+ "\u0011\0\u0001\u0030\u0026\0\u0001\u0030\u0009\0\u0001\u0032\u000d\0\u0004\u0018" +
+ "\u0002\0\u0002\u0018\u000c\0\u0003\u0018\u0001\u0032\u0001\0\u0002\u0032\u0009\0" +
+ "\u0003\u0018\u0003\0\u0001\u0018\u0001\0\u0001\u0032\u0004\0\u0001\u0032\u0002\u0018" +
+ "\u0005\0\u0004\u0032\u0002\0\u0001\u0018\u0001\u0032\u000a\0\u0004\u0030\u0001\0" +
+ "\u0002\u0018\u0001\0\u0001\u0032\u0007\0\u0001\u0018\u0013\0\u0001\u0018\u0004\0" +
+ "\u0001\u0018\u0006\0\u0001\u0018\u0003\0\u0001\u0018\u0006\0\u0001\u0018\u0005\0" +
+ "\u0001\u0018\u0002\0\u0002\u0018\u0001\0\u000f\u0018\u0002\0\u0001\u0018\u000b\0" +
+ "\u0007\u0018\u0002\0\u0001\u0018\u0001\0\u0001\u0018\u0001\0\u0001\u0018\u0002\0" +
+ "\u0001\u0018\u0001\0\u0001\u0018\u0001\0\u0001\u0018\u0001\0\u0001\u0018\u0004\0" +
+ "\u0001\u0032\u0001\0\u0002\u0018\u0005\0\u0001\u0018\u0001\0\u0001\u0018\u0002\0" +
+ "\u0003\u0018\u0001\0\u0001\u0018\u0007\0\u0001\u0018\u0001\0\u0001\u0018\u0016\0" +
+ "\u0001\u0018\u0006\0\u0001\u0018\u0003\0\u0001\u0018\u0003\0\u0001\u0018\u0007\0" +
+ "\u0001\u0018\u0019\0\u0010\u0018\u0005\0\u0003\u0018\u0003\0\u0001\u0018\u0003\0" +
+ "\u0002\u0018\u0002\0\u0002\u0018\u0004\0\u0001\u0018\u0004\u0032\u0004\0\u0001\u0018" +
+ "\u0004\0\u0001\u0018\u0002\0\u0001\u0018\u0004\0\u0001\u0018\u0001\0\u0001\u0018" +
+ "\u0001\0\u0001\u0018\u0057\0\u0002\u0032\u000d\0\u0004\u0032\u0030\0\u0001\u0032" +
+ "\u000d\0\u0002\u0032\u0008\0\u0002\u0032\u0001\0\u0001\u0032\u0001\0\u0001\u0032" +
+ "\u0009\0\u0001\u0032\u0009\0\u0002\u0032\u0006\0\u0001\u0032\u0002\0\u0004\u0032" +
+ "\u0003\0\u0001\u0032\u0002\0\u0002\u0032\u0001\0\u0003\u0032\u0005\0\u0001\u0032" +
+ "\u0001\0\u0002\u0032\u0002\0\u0002\u0032\u0001\0\u0004\u0032\u0005\0\u0001\u0032" +
+ "\u0001\0\u0002\u0032\u0057\0\u0001\u003c\u0002\0\u0001\u003c\u0013\0\u0004\u003c" +
+ "\u0045\0\u0001\u0019\u005a\0\u0001\u0019\u004b\0\u0001\u0019\u0025\0\u0001\u003c" +
+ "\u0011\0\u0001\u0019\u0026\0\u0001\u0019\u0009\0\u0001\u003c\u0024\0\u0001\u003c" +
+ "\u0001\0\u0002\u003c\u0011\0\u0001\u003c\u0004\0\u0001\u003c\u0007\0\u0004\u003c" +
+ "\u0003\0\u0001\u003c\u000a\0\u0004\u0019\u0004\0\u0001\u003c\u0085\0\u0002\u0019" +
+ "\u0078\0\u0001\u003c\u008d\0\u0004\u003c\u006d\0\u0002\u003c\u000d\0\u0004\u003c" +
+ "\u0030\0\u0001\u003c\u000d\0\u0002\u003c\u0008\0\u0002\u003c\u0001\0\u0001\u003c" +
+ "\u0001\0\u0001\u003c\u0009\0\u0001\u003c\u0009\0\u0002\u003c\u0006\0\u0001\u003c" +
+ "\u0002\0\u0004\u003c\u0003\0\u0001\u003c\u0002\0\u0002\u003c\u0001\0\u0003\u003c" +
+ "\u0005\0\u0001\u003c\u0001\0\u0002\u003c\u0002\0\u0002\u003c\u0001\0\u0004\u003c" +
+ "\u0005\0\u0001\u003c\u0001\0\u0002\u003c\u0025\0\u0001\u0018\u0004\0\u0001\u0018" +
+ "\u0009\0\u0001\u0018\u0012\0\u0001\u0018\u0003\0\u0001\u0018\u000b\0\u0001\u003d" +
+ "\u0002\0\u0001\u003d\u0008\0\u0001\u0018\u000a\0\u0004\u003d\u0025\0\u0001\u0018" +
+ "\u0011\0\u0001\u0018\u0016\0\u0002\u0018\u0013\0\u0001\u0019\u0001\u0018\u0024\0" +
+ "\u0001\u003d\u0011\0\u0001\u0019\u0026\0\u0001\u0019\u0009\0\u0001\u003d\u000d\0" +
+ "\u0004\u0018\u0002\0\u0002\u0018\u000c\0\u0003\u0018\u0001\u003d\u0001\0\u0002\u003d" +
+ "\u0009\0\u0003\u0018\u0003\0\u0001\u0018\u0001\0\u0001\u003d\u0004\0\u0001\u003d" +
+ "\u0002\u0018\u0005\0\u0004\u003d\u0002\0\u0001\u0018\u0001\u003d\u000a\0\u0004\u0019" +
+ "\u0001\0\u0002\u0018\u0001\0\u0001\u003d\u0007\0\u0001\u0018\u0013\0\u0001\u0018" +
+ "\u0004\0\u0001\u0018\u0006\0\u0001\u0018\u0003\0\u0001\u0018\u0006\0\u0001\u0018" +
+ "\u0005\0\u0001\u0018\u0002\0\u0002\u0018\u0001\0\u000f\u0018\u0002\0\u0001\u0018" +
+ "\u000b\0\u0007\u0018\u0002\0\u0001\u0018\u0001\0\u0001\u0018\u0001\0\u0001\u0018" +
+ "\u0002\0\u0001\u0018\u0001\0\u0001\u0018\u0001\0\u0001\u0018\u0001\0\u0001\u0018" +
+ "\u0004\0\u0001\u003d\u0001\0\u0002\u0018\u0005\0\u0001\u0018\u0001\0\u0001\u0018" +
+ "\u0002\0\u0003\u0018\u0001\0\u0001\u0018\u0007\0\u0001\u0018\u0001\0\u0001\u0018" +
+ "\u0016\0\u0001\u0018\u0006\0\u0001\u0018\u0003\0\u0001\u0018\u0003\0\u0001\u0018" +
+ "\u0007\0\u0001\u0018\u0019\0\u0010\u0018\u0005\0\u0003\u0018\u0003\0\u0001\u0018" +
+ "\u0003\0\u0002\u0018\u0002\0\u0002\u0018\u0004\0\u0001\u0018\u0004\u003d\u0004\0" +
+ "\u0001\u0018\u0004\0\u0001\u0018\u0002\0\u0001\u0018\u0004\0\u0001\u0018\u0001\0" +
+ "\u0001\u0018\u0001\0\u0001\u0018\u0057\0\u0002\u003d\u000d\0\u0004\u003d\u0030\0" +
+ "\u0001\u003d\u000d\0\u0002\u003d\u0008\0\u0002\u003d\u0001\0\u0001\u003d\u0001\0" +
+ "\u0001\u003d\u0009\0\u0001\u003d\u0009\0\u0002\u003d\u0006\0\u0001\u003d\u0002\0" +
+ "\u0004\u003d\u0003\0\u0001\u003d\u0002\0\u0002\u003d\u0001\0\u0003\u003d\u0005\0" +
+ "\u0001\u003d\u0001\0\u0002\u003d\u0002\0\u0002\u003d\u0001\0\u0004\u003d\u0005\0" +
+ "\u0001\u003d\u0001\0\u0002\u003d\u0057\0\u0001\u004f\u0002\0\u0001\u004f\u0013\0" +
+ "\u0004\u004f\u0089\0\u0001\u004f\u0042\0\u0001\u004f\u0024\0\u0001\u004f\u0001\0" +
+ "\u0002\u004f\u0011\0\u0001\u004f\u0004\0\u0001\u004f\u0007\0\u0004\u004f\u0003\0" +
+ "\u0001\u004f\u0012\0\u0001\u004f\u0076\0\u0001\u004f\u008d\0\u0004\u004f\u006d\0" +
+ "\u0002\u004f\u000d\0\u0004\u004f\u0030\0\u0001\u004f\u000d\0\u0002\u004f\u0008\0" +
+ "\u0002\u004f\u0001\0\u0001\u004f\u0001\0\u0001\u004f\u0009\0\u0001\u004f\u0009\0" +
+ "\u0002\u004f\u0006\0\u0001\u004f\u0002\0\u0004\u004f\u0003\0\u0001\u004f\u0002\0" +
+ "\u0002\u004f\u0001\0\u0003\u004f\u0005\0\u0001\u004f\u0001\0\u0002\u004f\u0002\0" +
+ "\u0002\u004f\u0001\0\u0004\u004f\u0005\0\u0001\u004f\u0001\0\u0002\u004f\u0057\0" +
+ "\u0001\u006c\u0002\0\u0001\u006c\u0013\0\u0004\u006c\u0045\0\u0001\u0030\u005a\0" +
+ "\u0001\u0030\u004b\0\u0001\u0030\u0025\0\u0001\u006c\u0011\0\u0001\u0030\u0026\0" +
+ "\u0001\u0030\u0009\0\u0001\u006c\u0024\0\u0001\u006c\u0001\0\u0002\u006c\u0011\0" +
+ "\u0001\u006c\u0004\0\u0001\u006c\u0007\0\u0004\u006c\u0003\0\u0001\u006c\u000a\0" +
+ "\u0004\u0030\u0004\0\u0001\u006c\u0085\0\u0002\u0030\u0078\0\u0001\u006c\u008d\0" +
+ "\u0004\u006c\u006d\0\u0002\u006c\u000d\0\u0004\u006c\u0030\0\u0001\u006c\u000d\0" +
+ "\u0002\u006c\u0008\0\u0002\u006c\u0001\0\u0001\u006c\u0001\0\u0001\u006c\u0009\0" +
+ "\u0001\u006c\u0009\0\u0002\u006c\u0006\0\u0001\u006c\u0002\0\u0004\u006c\u0003\0" +
+ "\u0001\u006c\u0002\0\u0002\u006c\u0001\0\u0003\u006c\u0005\0\u0001\u006c\u0001\0" +
+ "\u0002\u006c\u0002\0\u0002\u006c\u0001\0\u0004\u006c\u0005\0\u0001\u006c\u0001\0" +
+ "\u0002\u006c\u001e\0";
+
+ private static int[] zzUnpackTrans()
+ {
+ int[] result = new int[20002];
+ int offset = 0;
+ offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
+ return result;
+ }
+
+ private static int zzUnpackTrans(String packed, int offset, int[] result)
+ {
+ int i = 0; /* index in packed string */
+ int j = offset; /* index in unpacked array */
+ int l = packed.Length;
+ while (i < l)
+ {
+ int count = packed[i++];
+ int value = packed[i++];
+ value--;
+ do result[j++] = value; while (--count > 0);
+ }
+ return j;
+ }
+
+
+ /* error codes */
+ private const int ZZ_UNKNOWN_ERROR = 0;
+ private const int ZZ_NO_MATCH = 1;
+ private const int ZZ_PUSHBACK_2BIG = 2;
+
+ /* error messages for the codes above */
+ private static readonly String[] ZZ_ERROR_MSG = {
+ "Unkown internal scanner error",
+ "Error: could not match input",
+ "Error: pushback value was too large"
+ };
+
+ /**
+ * ZZ_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>
+ */
+ private static readonly int[] ZZ_ATTRIBUTE = zzUnpackAttribute();
+
+ private const String ZZ_ATTRIBUTE_PACKED_0 =
+ "\u0001\0\u0001\u0009\u001d\u0001\u0010\0\u0001\u0001\u0001\0\u0001\u0001\u000a\0" +
+ "\u0001\u0001\u0011\0\u0001\u0001\u004d\0";
+
+ private static int[] zzUnpackAttribute()
+ {
+ int[] result = new int[156];
+ int offset = 0;
+ offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
+ return result;
+ }
+
+ private static int zzUnpackAttribute(String packed, int offset, int[] result)
+ {
+ int i = 0; /* index in packed string */
+ int j = offset; /* index in unpacked array */
+ int l = packed.Length;
+ while (i < l)
+ {
+ int count = packed[i++];
+ int value = packed[i++];
+ do result[j++] = value; while (--count > 0);
+ }
+ return j;
+ }
+
+ /** the input device */
+ private TextReader zzReader;
+
+ /** the current state of the DFA */
+ private int zzState;
+
+ /** the current lexical state */
+ private int zzLexicalState = YYINITIAL;
+
+ /** this buffer contains the current text to be matched and is
+ the source of the yytext() string */
+ private char[] zzBuffer = new char[ZZ_BUFFERSIZE];
+
+ /** the textposition at the last accepting state */
+ private int zzMarkedPos;
+
+ /** the current text position in the buffer */
+ private int zzCurrentPos;
+
+ /** startRead marks the beginning of the yytext() string in the buffer */
+ private int zzStartRead;
+
+ /** endRead marks the last character in the buffer, that has been read
+ from input */
+ private int zzEndRead;
+
+ /** number of newlines encountered up to the start of the matched text */
+ private int yyline;
+
+ /** the number of characters up to the start of the matched text */
+ private int yychar;
+
+ /**
+ * the number of characters from the last newline up to the start of the
+ * matched text
+ */
+ private int yycolumn;
+
+ /**
+ * zzAtBOL == true <=> the scanner is currently at the beginning of a line
+ */
+ private bool zzAtBOL = true;
+
+ /** zzAtEOF == true <=> the scanner is at the EOF */
+ private bool zzAtEOF;
+
+ /** denotes if the user-EOF-code has already been executed */
+ private bool zzEOFDone;
+
+ /* user code: */
+ /** Alphanumeric sequences */
+ public const int WORD_TYPE = StandardTokenizer.ALPHANUM;
+
+ /** Numbers */
+ public const int NUMERIC_TYPE = StandardTokenizer.NUM;
+
+ /**
+ * Chars in class \p{Line_Break = Complex_Context} are from South East Asian
+ * scripts (Thai, Lao, Myanmar, Khmer, etc.). Sequences of these are kept
+ * together as as a single token rather than broken up, because the logic
+ * required to break them at word boundaries is too complex for UAX#29.
+ * <p>
+ * See Unicode Line Breaking Algorithm: http://www.unicode.org/reports/tr14/#SA
+ */
+ public const int SOUTH_EAST_ASIAN_TYPE = StandardTokenizer.SOUTHEAST_ASIAN;
+
+ public const int IDEOGRAPHIC_TYPE = StandardTokenizer.IDEOGRAPHIC;
+
+ public const int HIRAGANA_TYPE = StandardTokenizer.HIRAGANA;
+
+ public const int KATAKANA_TYPE = StandardTokenizer.KATAKANA;
+
+ public const int HANGUL_TYPE = StandardTokenizer.HANGUL;
+
+ public int YYChar
+ {
+ get { return yychar; }
+ }
+
+ /**
+ * Fills CharTermAttribute with the current token text.
+ */
+ public void GetText(ICharTermAttribute t)
+ {
+ t.CopyBuffer(zzBuffer, zzStartRead, zzMarkedPos - zzStartRead);
+ }
+
+
+ /**
+ * Creates a new scanner
+ * There is also a java.io.InputStream version of this constructor.
+ *
+ * @param in the TextReader to read input from.
+ */
+ public StandardTokenizerImpl(TextReader input)
+ {
+ this.zzReader = input;
+ }
+
+
+
+ /**
+ * Unpacks the compressed character translation table.
+ *
+ * @param packed the packed character translation table
+ * @return the unpacked character translation table
+ */
+ private static char[] zzUnpackCMap(String packed)
+ {
+ char[] map = new char[0x10000];
+ int i = 0; /* index in packed string */
+ int j = 0; /* index in unpacked array */
+ while (i < 2848)
+ {
+ int count = packed[i++];
+ char value = packed[i++];
+ do map[j++] = value; while (--count > 0);
+ }
+ return map;
+ }
+
+
+ /**
+ * Refills the input buffer.
+ *
+ * @return <code>false</code>, iff there was new input.
+ *
+ * @exception java.io.IOException if any I/O-Error occurs
+ */
+ private bool zzRefill()
+ {
+
+ /* first: make room (if you can) */
+ if (zzStartRead > 0)
+ {
+ Array.Copy(zzBuffer, zzStartRead,
+ zzBuffer, 0,
+ zzEndRead - zzStartRead);
+
+ /* translate stored positions */
+ zzEndRead -= zzStartRead;
+ zzCurrentPos -= zzStartRead;
+ zzMarkedPos -= zzStartRead;
+ zzStartRead = 0;
+ }
+
+ /* is the buffer big enough? */
+ if (zzCurrentPos >= zzBuffer.Length)
+ {
+ /* if not: blow it up */
+ char[] newBuffer = new char[zzCurrentPos * 2];
+ Array.Copy(zzBuffer, 0, newBuffer, 0, zzBuffer.Length);
+ zzBuffer = newBuffer;
+ }
+
+ /* finally: fill the buffer with new input */
+ int numRead = zzReader.Read(zzBuffer, zzEndRead,
+ zzBuffer.Length - zzEndRead);
+
+ if (numRead > 0)
+ {
+ zzEndRead += numRead;
+ return false;
+ }
+ // unlikely but not impossible: read 0 characters, but not at end of stream
+ if (numRead == 0)
+ {
+ int c = zzReader.Read();
+ if (c <= 0)
+ {
+ return true;
+ }
+ else
+ {
+ zzBuffer[zzEndRead++] = (char)c;
+ return false;
+ }
+ }
+
+ // numRead < 0
+ return true;
+ }
+
+
+ /**
+ * Closes the input stream.
+ */
+ public void yyclose()
+ {
+ zzAtEOF = true; /* indicate end of file */
+ zzEndRead = zzStartRead; /* invalidate buffer */
+
+ if (zzReader != null)
+ zzReader.Close();
+ }
+
+
+ /**
+ * Resets the scanner to read from a new input stream.
+ * Does not close the old reader.
+ *
+ * All internal variables are reset, the old input stream
+ * <b>cannot</b> be reused (internal buffer is discarded and lost).
+ * Lexical state is set to <tt>ZZ_INITIAL</tt>.
+ *
+ * Internal scan buffer is resized down to its initial length, if it has grown.
+ *
+ * @param reader the new input stream
+ */
+
+ public void YYReset(TextReader reader)
+ {
+ zzReader = reader;
+ zzAtBOL = true;
+ zzAtEOF = false;
+ zzEOFDone = false;
+ zzEndRead = zzStartRead = 0;
+ zzCurrentPos = zzMarkedPos = 0;
+ yyline = yychar = yycolumn = 0;
+ zzLexicalState = YYINITIAL;
+ if (zzBuffer.Length > ZZ_BUFFERSIZE)
+ zzBuffer = new char[ZZ_BUFFERSIZE];
+ }
+
+
+ /**
+ * Returns the current lexical state.
+ */
+ public int yystate()
+ {
+ return zzLexicalState;
+ }
+
+
+ /**
+ * Enters a new lexical state
+ *
+ * @param newState the new lexical state
+ */
+ public void yybegin(int newState)
+ {
+ zzLexicalState = newState;
+ }
+
+
+ /**
+ * Returns the text matched by the current regular expression.
+ */
+ public String yytext()
+ {
+ return new String(zzBuffer, zzStartRead, zzMarkedPos - zzStartRead);
+ }
+
+
+ /**
+ * Returns the character at position <tt>pos</tt> from the
+ * matched text.
+ *
+ * It is equivalent to yytext().charAt(pos), but faster
+ *
+ * @param pos the position of the character to fetch.
+ * A value from 0 to yylength()-1.
+ *
+ * @return the character at position pos
+ */
+ public char yycharat(int pos)
+ {
+ return zzBuffer[zzStartRead + pos];
+ }
+
+
+ /**
+ * Returns the length of the matched text region.
+ */
+
+ public int YYLength
+ {
+ get
+ {
+ return zzMarkedPos - zzStartRead;
+ }
+ }
+
+
+ /**
+ * Reports an error that occured while scanning.
+ *
+ * In a wellformed scanner (no or only correct usage of
+ * yypushback(int) and a match-all fallback rule) this method
+ * will only be called with things that "Can't Possibly Happen".
+ * If this method is called, something is seriously wrong
+ * (e.g. a JFlex bug producing a faulty scanner etc.).
+ *
+ * Usual syntax/scanner level error handling should be done
+ * in error fallback rules.
+ *
+ * @param errorCode the code of the errormessage to display
+ */
+ private void zzScanError(int errorCode)
+ {
+ String message;
+ try
+ {
+ message = ZZ_ERROR_MSG[errorCode];
+ }
+ catch (IndexOutOfRangeException e)
+ {
+ message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
+ }
+
+ throw new Exception(message);
+ }
+
+
+ /**
+ * Pushes the specified amount of characters back into the input stream.
+ *
+ * They will be read again by then next call of the scanning method
+ *
+ * @param number the number of characters to be read again.
+ * This number must not be greater than yylength()!
+ */
+ public void yypushback(int number)
+ {
+ if (number > YYLength)
+ zzScanError(ZZ_PUSHBACK_2BIG);
+
+ zzMarkedPos -= number;
+ }
+
+
+ /**
+ * Resumes scanning until the next regular expression is matched,
+ * the end of input is encountered or an I/O-Error occurs.
+ *
+ * @return the next token
+ * @exception java.io.IOException if any I/O-Error occurs
+ */
+
+ public int GetNextToken()
+ {
+ int zzInput;
+ int zzAction;
+
+ // cached fields:
+ int zzCurrentPosL;
+ int zzMarkedPosL;
+ int zzEndReadL = zzEndRead;
+ char[] zzBufferL = zzBuffer;
+ char[] zzCMapL = ZZ_CMAP;
+
+ int[] zzTransL = ZZ_TRANS;
+ int[] zzRowMapL = ZZ_ROWMAP;
+ int[] zzAttrL = ZZ_ATTRIBUTE;
+
+ while (true)
+ {
+ zzMarkedPosL = zzMarkedPos;
+
+ yychar += zzMarkedPosL - zzStartRead;
+
+ zzAction = -1;
+
+ zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
+
+ zzState = ZZ_LEXSTATE[zzLexicalState];
+
+ // set up zzAction for empty match case:
+ int zzAttributes = zzAttrL[zzState];
+ if ((zzAttributes & 1) == 1)
+ {
+ zzAction = zzState;
+ }
+
+
+ //zzForAction:
+ {
+ while (true)
+ {
+
+ if (zzCurrentPosL < zzEndReadL)
+ zzInput = zzBufferL[zzCurrentPosL++];
+ else if (zzAtEOF)
+ {
+ zzInput = YYEOF;
+ break;
+ }
+ else
+ {
+ // store back cached positions
+ zzCurrentPos = zzCurrentPosL;
+ zzMarkedPos = zzMarkedPosL;
+ bool eof = zzRefill();
+ // get translated positions and possibly new buffer
+ zzCurrentPosL = zzCurrentPos;
+ zzMarkedPosL = zzMarkedPos;
+ zzBufferL = zzBuffer;
+ zzEndReadL = zzEndRead;
+ if (eof)
+ {
+ zzInput = YYEOF;
+ break;
+ }
+ else
+ {
+ zzInput = zzBufferL[zzCurrentPosL++];
+ }
+ }
+ int zzNext = zzTransL[zzRowMapL[zzState] + zzCMapL[zzInput]];
+ if (zzNext == -1) break;
+ zzState = zzNext;
+
+ zzAttributes = zzAttrL[zzState];
+ if ((zzAttributes & 1) == 1)
+ {
+ zzAction = zzState;
+ zzMarkedPosL = zzCurrentPosL;
+ if ((zzAttributes & 8) == 8) break;
+ }
+
+ }
+ }
+
+ // store back cached position
+ zzMarkedPos = zzMarkedPosL;
+
+ switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction])
+ {
+ case 1:
+ { /* Break so we don't hit fall-through warning: */
+ break; /* Not numeric, word, ideographic, hiragana, or SE Asian -- ignore it. */
+ }
+ case 9: break;
+ case 2:
+ {
+ return WORD_TYPE;
+ }
+ case 10: break;
+ case 3:
+ {
+ return NUMERIC_TYPE;
+ }
+ case 11: break;
+ case 4:
+ {
+ return KATAKANA_TYPE;
+ }
+ case 12: break;
+ case 5:
+ {
+ return SOUTH_EAST_ASIAN_TYPE;
+ }
+ case 13: break;
+ case 6:
+ {
+ return IDEOGRAPHIC_TYPE;
+ }
+ case 14: break;
+ case 7:
+ {
+ return HIRAGANA_TYPE;
+ }
+ case 15: break;
+ case 8:
+ {
+ return HANGUL_TYPE;
+ }
+ case 16: break;
+ default:
+ if (zzInput == YYEOF && zzStartRead == zzCurrentPos)
+ {
+ zzAtEOF = true;
+ {
+ return StandardTokenizerInterface.YYEOF;
+ }
+ }
+ else
+ {
+ zzScanError(ZZ_NO_MATCH);
+ }
+ break;
+ }
+ }
+ }
+
+ }
+}