/* The following code was generated by JFlex 1.4.1 on 4/18/12 12:09 AM */ /******************************************************************************* * Copyright (c) 2006 Zend Corporation and IBM Corporation. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Zend and IBM - Initial implementation *******************************************************************************/ package org2.eclipse.php.internal.core.documentModel.parser.php54; import org2.eclipse.php.internal.core.util.collections.IntHashtable; /** * This class is a scanner generated by * <a href="http://www.jflex.de/">JFlex</a> 1.4.1 * on 4/18/12 12:09 AM from the specification file * <tt>highlighting_scanner.jflex</tt> */ @SuppressWarnings("nls") public class PhpLexer extends org2.eclipse.php.internal.core.documentModel.parser.AbstractPhpLexer { /** This character denotes the end of file */ public static final int YYEOF = -1; /** initial size of the lookahead buffer */ private static final int ZZ_BUFFERSIZE = 16384; /** lexical states */ public static final int ST_PHP_LINE_COMMENT = 12; public static final int ST_PHP_NOWDOC = 6; public static final int ST_PHP_DOUBLE_QUOTES = 2; public static final int ST_PHP_COMMENT = 10; public static final int ST_PHP_BACKQUOTE = 3; public static final int ST_PHP_END_NOWDOC = 14; public static final int ST_PHP_DOC_COMMENT = 11; public static final int ST_PHP_END_HEREDOC = 7; public static final int ST_PHP_VAR_OFFSET = 9; public static final int YYINITIAL = 0; public static final int ST_PHP_IN_SCRIPTING = 1; public static final int ST_PHP_LOOKING_FOR_PROPERTY = 8; public static final int ST_PHP_HEREDOC = 5; public static final int ST_PHP_HIGHLIGHTING_ERROR = 13; public static final int ST_PHP_QUOTES_AFTER_VARIABLE = 4; /** * Translates characters to character classes */ private static final String ZZ_CMAP_PACKED = "\11\0\1\14\1\13\2\0\1\17\22\0\1\14\1\30\1\21\1\75"+ "\1\20\1\34\1\35\1\74\1\64\1\65\1\32\1\27\1\15\1\4"+ "\1\2\1\33\1\5\1\11\10\1\1\62\1\16\1\31\1\25\1\26"+ "\1\76\1\77\1\42\1\10\1\7\1\44\1\3\1\47\1\57\1\53"+ "\1\45\1\66\1\56\1\55\1\61\1\43\1\40\1\60\1\70\1\41"+ "\1\51\1\46\1\50\1\63\1\54\1\6\1\52\1\12\1\72\1\22"+ "\1\73\1\37\1\67\1\23\1\42\1\10\1\7\1\44\1\3\1\47"+ "\1\57\1\53\1\45\1\66\1\56\1\55\1\61\1\43\1\40\1\60"+ "\1\70\1\41\1\51\1\46\1\50\1\63\1\54\1\6\1\52\1\12"+ "\1\24\1\36\1\71\1\15\201\12\uff00\0"; /** * Translates characters to character classes */ private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED); /** * Translates DFA states to action switch labels. */ private static final int [] ZZ_ACTION = zzUnpackAction(); private static final String ZZ_ACTION_PACKED_0 = "\5\0\1\1\1\2\10\0\1\3\1\4\1\5\1\6"+ "\1\5\1\4\4\6\1\7\1\5\1\10\1\5\1\11"+ "\1\12\1\13\1\14\12\5\16\6\1\5\1\6\1\5"+ "\1\6\1\15\1\3\1\16\1\5\1\2\1\17\1\20"+ "\2\17\1\2\3\17\3\21\3\1\3\3\3\2\2\3"+ "\1\0\1\3\1\22\1\23\1\22\1\24\1\25\1\24"+ "\1\26\1\25\1\6\1\27\2\30\3\31\3\32\3\33"+ "\1\34\1\35\1\0\1\3\2\4\1\36\6\6\1\37"+ "\2\0\3\6\1\0\1\6\1\0\2\40\2\0\1\17"+ "\2\0\2\36\1\41\1\42\1\36\4\6\1\43\4\6"+ "\1\44\2\6\1\45\25\6\1\46\1\6\12\0\1\6"+ "\1\0\1\47\3\0\1\50\2\51\1\52\1\53\1\51"+ "\3\0\3\54\1\55\3\0\1\56\2\1\2\51\1\57"+ "\2\2\5\0\1\60\4\0\1\61\1\4\1\50\1\62"+ "\1\63\20\0\1\64\1\65\1\0\7\6\2\4\6\6"+ "\1\0\1\6\1\40\2\0\4\6\1\66\4\6\1\67"+ "\7\6\1\70\1\6\1\71\5\6\1\72\13\6\1\73"+ "\12\0\7\6\1\74\1\75\1\1\1\76\1\2\3\0"+ "\1\77\4\0\1\60\40\0\1\100\1\0\1\101\1\6"+ "\1\102\5\6\1\103\1\6\1\104\3\6\1\105\4\6"+ "\1\40\3\0\1\106\1\0\5\6\1\107\10\6\1\110"+ "\2\6\1\111\4\6\1\112\3\6\1\113\1\114\6\6"+ "\12\0\10\6\3\0\1\77\25\0\1\115\14\0\1\116"+ "\2\6\1\117\4\6\1\120\1\6\1\121\1\122\1\6"+ "\1\123\1\124\1\125\1\126\2\127\3\0\3\6\1\130"+ "\7\6\1\131\1\6\1\132\1\133\1\6\1\134\1\135"+ "\1\6\1\136\2\6\1\137\2\6\1\140\3\6\7\0"+ "\1\141\2\0\10\6\11\0\1\142\1\143\3\0\1\144"+ "\4\0\1\145\4\0\1\146\7\0\2\6\1\147\2\6"+ "\1\150\2\6\2\0\1\151\14\6\1\152\1\153\1\154"+ "\2\6\1\155\1\156\4\0\10\6\20\0\1\157\1\0"+ "\1\160\6\0\1\161\1\0\1\162\1\0\1\163\6\6"+ "\1\164\2\6\1\165\1\166\1\167\4\6\1\170\2\6"+ "\1\171\2\0\2\6\1\172\5\6\5\0\1\173\1\174"+ "\1\0\1\175\3\0\1\176\1\0\1\177\1\0\1\200"+ "\2\0\1\201\2\0\1\202\1\0\3\6\1\203\1\204"+ "\1\205\1\6\1\206\6\6\1\207\3\6\1\210\2\6"+ "\1\211\1\6\1\0\1\212\12\0\1\213\1\0\1\214"+ "\1\215\2\6\1\216\1\6\1\217\1\6\1\220\1\221"+ "\2\6\1\222\1\223\4\6\2\0\1\224\1\225\2\0"+ "\1\226\1\227\3\0\1\230\1\231\1\232\2\6\1\233"+ "\1\234\3\6\1\235\1\236\1\237\1\240\2\0\1\241"+ "\1\0\5\6\1\242\1\243\1\244\1\245\1\246\1\6"+ "\1\247\1\6\1\250\2\6\1\251"; private static int [] zzUnpackAction() { int [] result = new int[821]; 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.charAt(i++); int value = packed.charAt(i++); do result[j++] = value; while (--count > 0); } return j; } /** * Translates a state to a row index in the transition table */ private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); private static final String ZZ_ROWMAP_PACKED_0 = "\0\0\0\100\0\200\0\300\0\u0100\0\u0140\0\u0180\0\u01c0"+ "\0\u0200\0\u0240\0\u0280\0\u02c0\0\u0300\0\u0340\0\u0380\0\0"+ "\0\u03c0\0\u0400\0\u0440\0\u0480\0\u04c0\0\u0500\0\u0540\0\u0580"+ "\0\u05c0\0\u0600\0\0\0\0\0\u0640\0\u0680\0\0\0\0"+ "\0\0\0\u06c0\0\u0700\0\u0740\0\u0780\0\u07c0\0\u0800\0\u0840"+ "\0\u0880\0\u08c0\0\u0900\0\u0940\0\u0980\0\u09c0\0\u0a00\0\u0a40"+ "\0\u0a80\0\u0ac0\0\u0b00\0\u0b40\0\u0b80\0\u0bc0\0\u0c00\0\u0c40"+ "\0\u0c80\0\u0cc0\0\u0d00\0\u0d40\0\u0d80\0\0\0\u0dc0\0\0"+ "\0\u0e00\0\u0e40\0\u0e80\0\0\0\u0ec0\0\u0f00\0\u0f40\0\u0f80"+ "\0\u0fc0\0\u1000\0\0\0\u1040\0\u1080\0\u10c0\0\u1100\0\u1140"+ "\0\u1180\0\u11c0\0\u1200\0\u1240\0\u1280\0\u12c0\0\u1300\0\u1340"+ "\0\u1380\0\u1380\0\0\0\u13c0\0\u1400\0\u1440\0\0\0\u1480"+ "\0\0\0\u14c0\0\u1500\0\0\0\u1540\0\u1580\0\0\0\u15c0"+ "\0\u1600\0\u1640\0\0\0\u1680\0\0\0\u16c0\0\u0e00\0\0"+ "\0\u1700\0\u1740\0\u1780\0\u17c0\0\u1800\0\0\0\u1840\0\u1880"+ "\0\u18c0\0\u1900\0\u1940\0\u1980\0\0\0\u19c0\0\u1a00\0\u1a40"+ "\0\u1a80\0\u1ac0\0\u1b00\0\u1b40\0\u0dc0\0\u1b80\0\u1bc0\0\u0680"+ "\0\u1c00\0\0\0\u1c40\0\u1c80\0\u0800\0\u1cc0\0\u1d00\0\u1d40"+ "\0\u05c0\0\u1d80\0\u1dc0\0\u1e00\0\u1e40\0\u05c0\0\u1e80\0\u1ec0"+ "\0\u1f00\0\u1f40\0\u05c0\0\u1f80\0\u1fc0\0\u05c0\0\u2000\0\u2040"+ "\0\u2080\0\u20c0\0\u2100\0\u2140\0\u2180\0\u21c0\0\u2200\0\u2240"+ "\0\u2280\0\u22c0\0\u2300\0\u2340\0\u2380\0\u23c0\0\u2400\0\u2440"+ "\0\u2480\0\u24c0\0\u2500\0\0\0\u2540\0\u2580\0\u0d40\0\u25c0"+ "\0\u2600\0\u2640\0\u2680\0\u26c0\0\u2700\0\u2740\0\u2780\0\u27c0"+ "\0\u2800\0\u2840\0\u2880\0\u0ec0\0\u28c0\0\u2900\0\u2880\0\0"+ "\0\0\0\0\0\u28c0\0\u2940\0\u0fc0\0\u2980\0\u2940\0\0"+ "\0\u2980\0\0\0\u29c0\0\u11c0\0\u2a00\0\u1140\0\u2a40\0\u2a80"+ "\0\u29c0\0\u2a00\0\u12c0\0\u2ac0\0\u2b00\0\u2b40\0\u2b80\0\u2bc0"+ "\0\u2c00\0\u2c40\0\0\0\u2c80\0\u2cc0\0\u2d00\0\u1300\0\0"+ "\0\u2d40\0\u2d80\0\0\0\0\0\u2dc0\0\u2e00\0\u2e40\0\u2e80"+ "\0\u2ec0\0\u2f00\0\u2f40\0\u2f80\0\u2fc0\0\u3000\0\u3040\0\u3080"+ "\0\u30c0\0\u3100\0\u3140\0\u3180\0\0\0\u31c0\0\u3200\0\u3240"+ "\0\u3280\0\u32c0\0\u3300\0\u3340\0\u3380\0\u33c0\0\u19c0\0\u1a00"+ "\0\u3400\0\u3440\0\u3480\0\u34c0\0\u3500\0\u3540\0\u3580\0\u35c0"+ "\0\u3600\0\u3640\0\u3680\0\u36c0\0\u3700\0\u3740\0\u3780\0\u05c0"+ "\0\u37c0\0\u3800\0\u3840\0\u3880\0\u05c0\0\u38c0\0\u3900\0\u3940"+ "\0\u3980\0\u39c0\0\u3a00\0\u3a40\0\u05c0\0\u3a80\0\u3ac0\0\u3b00"+ "\0\u3b40\0\u3b80\0\u3bc0\0\u3c00\0\u05c0\0\u3c40\0\u3c80\0\u3cc0"+ "\0\u3d00\0\u3d40\0\u3d80\0\u3dc0\0\u3e00\0\u3e40\0\u3e80\0\u3ec0"+ "\0\u05c0\0\u3f00\0\u3f40\0\u3f80\0\u3fc0\0\u4000\0\u4040\0\u4080"+ "\0\u40c0\0\u4100\0\u4140\0\u4180\0\u41c0\0\u4200\0\u4240\0\u4280"+ "\0\u42c0\0\u4300\0\0\0\0\0\u4340\0\0\0\u4380\0\u43c0"+ "\0\u4400\0\u4440\0\u4400\0\u4480\0\u44c0\0\u4500\0\u1340\0\u4400"+ "\0\u4540\0\u4580\0\u45c0\0\u4600\0\u4640\0\u4680\0\u46c0\0\u4700"+ "\0\u4740\0\u4780\0\u47c0\0\u4800\0\u4840\0\u4880\0\u48c0\0\u4900"+ "\0\u4940\0\u4980\0\u49c0\0\u4a00\0\u4a40\0\u4a80\0\u4ac0\0\u4b00"+ "\0\u4b40\0\u4b80\0\u4bc0\0\u4c00\0\u4c40\0\u4c80\0\u4cc0\0\u4d00"+ "\0\0\0\u4d40\0\u05c0\0\u4d80\0\u05c0\0\u4dc0\0\u4e00\0\u4e40"+ "\0\u4e80\0\u4ec0\0\u4f00\0\u4f40\0\u05c0\0\u4f80\0\u4fc0\0\u5000"+ "\0\u05c0\0\u5040\0\u5080\0\u50c0\0\u5100\0\u5140\0\u5180\0\u51c0"+ "\0\u5200\0\u5240\0\u5280\0\u52c0\0\u5300\0\u5340\0\u5380\0\u53c0"+ "\0\u05c0\0\u5400\0\u5440\0\u5480\0\u54c0\0\u5500\0\u5540\0\u5580"+ "\0\u55c0\0\u05c0\0\u5600\0\u5640\0\u05c0\0\u5680\0\u56c0\0\u5700"+ "\0\u5740\0\u05c0\0\u5780\0\u57c0\0\u5800\0\u05c0\0\u05c0\0\u5840"+ "\0\u5880\0\u58c0\0\u5900\0\u5940\0\u5980\0\u59c0\0\u5a00\0\u5a40"+ "\0\u5a80\0\u5ac0\0\u5b00\0\u5b40\0\u5b80\0\u5bc0\0\u5c00\0\u5c40"+ "\0\u5c80\0\u5cc0\0\u5d00\0\u5d40\0\u5d80\0\u5dc0\0\u5e00\0\u5e40"+ "\0\u5e80\0\u5ec0\0\0\0\u5f00\0\u5f40\0\u5f80\0\u5fc0\0\u6000"+ "\0\u6040\0\u6080\0\u60c0\0\u6100\0\u6140\0\u6180\0\u61c0\0\u6200"+ "\0\u6240\0\u6280\0\u62c0\0\u6300\0\u6340\0\u6380\0\u63c0\0\u6400"+ "\0\0\0\u6440\0\u6480\0\u64c0\0\u6500\0\u6540\0\u6580\0\u65c0"+ "\0\u6600\0\u6640\0\u6680\0\u66c0\0\u6700\0\0\0\u6740\0\u6780"+ "\0\u05c0\0\u67c0\0\u6800\0\u6840\0\u6880\0\u05c0\0\u68c0\0\u05c0"+ "\0\u05c0\0\u6900\0\u05c0\0\u05c0\0\u05c0\0\u1b80\0\0\0\u6940"+ "\0\u6980\0\u69c0\0\u6a00\0\u6a40\0\u6a80\0\u6ac0\0\u05c0\0\u6b00"+ "\0\u6b40\0\u6b80\0\u6bc0\0\u6c00\0\u6c40\0\u6c80\0\u05c0\0\u6cc0"+ "\0\u05c0\0\u05c0\0\u6d00\0\u05c0\0\u05c0\0\u6d40\0\u05c0\0\u6d80"+ "\0\u6dc0\0\u05c0\0\u6e00\0\u6e40\0\u05c0\0\u6e80\0\u6ec0\0\u6f00"+ "\0\u6f40\0\u6f80\0\u6fc0\0\u7000\0\u7040\0\u7080\0\u70c0\0\0"+ "\0\u7100\0\u7140\0\u7180\0\u71c0\0\u7200\0\u7240\0\u7280\0\u72c0"+ "\0\u7300\0\u7340\0\u7380\0\u73c0\0\u7400\0\u7440\0\u7480\0\u74c0"+ "\0\u7500\0\u7540\0\u7580\0\u75c0\0\0\0\u7600\0\u7640\0\u7680"+ "\0\0\0\u76c0\0\u7700\0\u7740\0\u7780\0\0\0\u77c0\0\u7800"+ "\0\u7840\0\u7880\0\0\0\u78c0\0\u7900\0\u7940\0\u7980\0\u79c0"+ "\0\u7a00\0\u7a40\0\u7a80\0\u7ac0\0\u7b00\0\u7b40\0\u7b80\0\u05c0"+ "\0\u7bc0\0\u7c00\0\u7c40\0\u5240\0\u05c0\0\u7c80\0\u7cc0\0\u7d00"+ "\0\u7d40\0\u7d80\0\u7dc0\0\u7e00\0\u7e40\0\u7e80\0\u7ec0\0\u7f00"+ "\0\u7f40\0\u05c0\0\u05c0\0\u05c0\0\u7f80\0\u7fc0\0\u05c0\0\u05c0"+ "\0\u8000\0\u8040\0\u8080\0\u80c0\0\u8100\0\u8140\0\u8180\0\u81c0"+ "\0\u8200\0\u8240\0\u8280\0\u82c0\0\u8300\0\u8340\0\u8380\0\u83c0"+ "\0\u8400\0\u8440\0\u8480\0\u84c0\0\u8500\0\u8540\0\u8580\0\u85c0"+ "\0\u8600\0\u8640\0\u8680\0\u86c0\0\0\0\u8700\0\0\0\u8740"+ "\0\u8780\0\u87c0\0\u8800\0\u8840\0\u8880\0\0\0\u88c0\0\0"+ "\0\u8900\0\u05c0\0\u8940\0\u8980\0\u89c0\0\u8a00\0\u8a40\0\u8a80"+ "\0\u8ac0\0\u8b00\0\u8b40\0\u05c0\0\u05c0\0\u8b80\0\u8bc0\0\u8c00"+ "\0\u8c40\0\u8c80\0\u05c0\0\u8cc0\0\u8d00\0\u05c0\0\u8d40\0\u8d80"+ "\0\u8dc0\0\u8e00\0\u05c0\0\u8e40\0\u8e80\0\u8ec0\0\u8f00\0\u8f40"+ "\0\u8f80\0\u8fc0\0\u9000\0\u9040\0\u9080\0\0\0\0\0\u90c0"+ "\0\0\0\u9100\0\u9140\0\u9180\0\0\0\u91c0\0\0\0\u9200"+ "\0\u9240\0\u9280\0\u92c0\0\0\0\u9300\0\u9340\0\0\0\u9380"+ "\0\u93c0\0\u9400\0\u9440\0\u05c0\0\u05c0\0\u05c0\0\u9480\0\u05c0"+ "\0\u94c0\0\u9500\0\u9540\0\u9580\0\u95c0\0\u9600\0\u05c0\0\u9640"+ "\0\u9680\0\u96c0\0\u05c0\0\u9700\0\u9740\0\u05c0\0\u9780\0\u97c0"+ "\0\0\0\u9800\0\u9840\0\u9880\0\u98c0\0\u9900\0\u9940\0\u9980"+ "\0\u99c0\0\u9a00\0\u9a40\0\0\0\u9a80\0\0\0\0\0\u9ac0"+ "\0\u9b00\0\u05c0\0\u9b40\0\u05c0\0\u9b80\0\u05c0\0\u05c0\0\u9bc0"+ "\0\u9c00\0\u05c0\0\u05c0\0\u9c40\0\u9c80\0\u9cc0\0\u9d00\0\u9d40"+ "\0\u9d80\0\0\0\0\0\u9dc0\0\u9e00\0\0\0\0\0\u9e40"+ "\0\u9e80\0\u9ec0\0\0\0\u05c0\0\u05c0\0\u9f00\0\u9f40\0\u05c0"+ "\0\u05c0\0\u9f80\0\u9fc0\0\ua000\0\u05c0\0\0\0\0\0\0"+ "\0\ua040\0\ua080\0\0\0\ua0c0\0\ua100\0\ua140\0\ua180\0\ua1c0"+ "\0\ua200\0\0\0\0\0\0\0\u05c0\0\u05c0\0\ua240\0\u05c0"+ "\0\ua280\0\u05c0\0\ua2c0\0\ua300\0\u05c0"; private static int [] zzUnpackRowMap() { int [] result = new int[821]; 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.charAt(i++) << 16; result[j++] = high | packed.charAt(i++); } return j; } /** * The transition table of the DFA */ private static final int [] ZZ_TRANS = zzUnpackTrans(); private static final String ZZ_TRANS_PACKED_0 = "\100\0\1\20\1\21\1\22\1\23\1\24\1\25\1\26"+ "\1\27\1\30\1\21\1\31\2\32\1\33\1\34\1\32"+ "\1\35\1\36\1\37\1\40\1\41\1\42\1\43\1\44"+ "\1\45\1\46\1\47\1\50\1\51\1\52\1\53\1\47"+ "\1\54\1\55\1\56\1\57\1\60\1\61\1\62\1\63"+ "\1\64\1\65\2\31\1\66\1\67\1\31\1\70\1\71"+ "\1\31\1\72\1\73\1\74\1\33\1\31\1\75\1\31"+ "\1\76\2\33\1\77\1\100\1\101\1\33\20\102\1\103"+ "\1\104\1\105\1\102\1\106\53\102\20\107\1\110\1\107"+ "\1\111\1\104\1\112\53\107\4\113\1\114\17\113\1\115"+ "\53\113\3\116\1\117\2\116\3\117\1\116\1\117\1\120"+ "\3\116\1\120\1\121\1\116\1\122\1\116\1\123\13\116"+ "\22\117\1\116\1\117\2\116\3\117\7\116\3\124\1\125"+ "\2\124\3\125\1\124\1\125\1\126\3\124\1\126\20\124"+ "\22\125\1\124\1\125\2\124\3\125\7\124\3\127\1\130"+ "\2\127\3\130\1\127\1\130\1\131\3\127\1\132\20\127"+ "\22\130\1\127\1\130\2\127\3\130\7\127\3\133\1\134"+ "\1\135\1\133\3\134\1\133\1\134\2\32\2\133\1\32"+ "\20\133\22\134\1\133\1\134\2\133\3\134\7\133\1\20"+ "\1\136\1\137\1\31\1\137\1\140\3\31\1\136\1\31"+ "\2\141\2\137\1\141\1\142\1\137\1\141\15\137\3\31"+ "\1\143\16\31\1\137\1\31\2\137\3\31\1\137\1\33"+ "\1\144\2\141\2\137\32\145\1\146\45\145\32\147\1\150"+ "\44\147\1\151\13\152\1\153\3\152\1\154\6\152\1\155"+ "\5\152\1\156\41\152\1\157\1\152\13\160\2\161\2\160"+ "\1\161\60\160\13\20\1\162\3\20\1\163\60\20\1\0"+ "\1\21\1\164\1\165\1\0\1\21\3\0\1\21\67\0"+ "\1\164\3\0\1\164\3\0\1\164\13\0\1\166\53\0"+ "\1\31\1\0\1\31\1\0\1\31\1\167\1\170\3\31"+ "\25\0\3\31\1\171\11\31\1\172\3\31\1\173\1\0"+ "\1\174\2\0\3\31\13\0\1\166\20\0\1\166\1\175"+ "\52\0\1\21\1\164\1\165\1\0\1\21\1\176\1\0"+ "\1\177\1\21\67\0\1\31\1\0\1\31\1\0\6\31"+ "\25\0\1\54\21\31\1\0\1\31\2\0\3\31\10\0"+ "\1\31\1\0\1\31\1\0\6\31\25\0\1\200\1\31"+ "\1\201\12\31\1\202\4\31\1\0\1\31\2\0\3\31"+ "\10\0\1\31\1\0\1\31\1\0\6\31\6\0\1\36"+ "\7\0\1\203\6\0\1\31\1\204\20\31\1\0\1\31"+ "\2\0\3\31\3\0\1\205\4\0\1\31\1\0\1\31"+ "\1\0\6\31\25\0\22\31\1\0\1\31\2\0\3\31"+ "\22\0\2\32\2\0\1\32\63\0\1\206\2\0\3\206"+ "\1\0\1\206\25\0\6\206\1\207\13\206\1\0\1\206"+ "\2\0\3\206\7\0\20\210\1\211\1\212\1\213\1\210"+ "\1\214\53\210\25\0\1\215\1\166\76\0\1\166\1\215"+ "\76\0\1\166\1\0\1\166\75\0\1\215\77\0\2\166"+ "\2\0\1\216\73\0\1\166\77\0\1\166\4\0\1\217"+ "\1\100\71\0\1\166\1\220\76\0\1\166\7\0\1\166"+ "\67\0\1\166\10\0\1\166\42\0\1\31\1\0\1\31"+ "\1\0\6\31\25\0\1\31\1\221\20\31\1\0\1\31"+ "\2\0\3\31\10\0\1\31\1\0\1\222\1\0\6\31"+ "\25\0\22\31\1\0\1\31\2\0\3\31\10\0\1\31"+ "\1\0\1\31\1\0\3\31\1\223\2\31\25\0\1\31"+ "\1\224\1\31\1\225\5\31\1\226\10\31\1\0\1\31"+ "\2\0\3\31\10\0\1\31\1\0\1\227\1\0\6\31"+ "\25\0\2\31\1\230\5\31\1\231\11\31\1\0\1\31"+ "\2\0\3\31\10\0\1\31\1\0\1\232\1\0\6\31"+ "\25\0\1\233\4\31\1\234\14\31\1\0\1\31\2\0"+ "\3\31\10\0\1\31\1\0\1\31\1\0\6\31\25\0"+ "\3\31\1\235\3\31\1\236\1\31\1\237\7\31\1\240"+ "\1\0\1\31\2\0\3\31\10\0\1\31\1\0\1\31"+ "\1\0\6\31\25\0\1\31\1\241\11\31\1\242\6\31"+ "\1\0\1\31\2\0\3\31\10\0\1\31\1\0\1\31"+ "\1\0\6\31\25\0\1\243\1\244\1\245\2\31\1\246"+ "\2\31\1\247\11\31\1\0\1\31\2\0\3\31\10\0"+ "\1\31\1\0\1\31\1\0\6\31\25\0\3\31\1\250"+ "\5\31\1\251\10\31\1\0\1\31\2\0\3\31\10\0"+ "\1\31\1\0\1\252\1\0\6\31\25\0\6\31\1\253"+ "\5\31\1\254\5\31\1\0\1\31\2\0\3\31\10\0"+ "\1\31\1\0\1\31\1\0\6\31\25\0\13\31\1\255"+ "\6\31\1\0\1\31\2\0\3\31\10\0\1\31\1\0"+ "\1\31\1\0\6\31\25\0\5\31\1\256\14\31\1\0"+ "\1\31\2\0\3\31\10\0\1\31\1\0\1\31\1\0"+ "\6\31\25\0\1\257\14\31\1\260\4\31\1\0\1\31"+ "\2\0\3\31\10\0\1\31\1\0\1\31\1\0\6\31"+ "\25\0\1\31\1\261\1\262\5\31\1\263\11\31\1\0"+ "\1\31\2\0\3\31\71\0\1\264\16\0\1\31\1\0"+ "\1\31\1\0\6\31\25\0\2\31\1\265\17\31\1\0"+ "\1\31\2\0\3\31\17\0\1\266\3\0\1\267\23\0"+ "\1\270\1\271\1\272\1\0\1\273\1\274\1\0\1\275"+ "\1\276\1\277\27\0\1\31\1\0\1\31\1\0\6\31"+ "\25\0\22\31\1\0\1\31\2\0\1\31\1\300\1\31"+ "\7\0\22\205\1\301\51\205\1\212\3\205\26\0\1\302"+ "\51\0\20\102\1\303\1\0\1\304\1\102\1\305\56\102"+ "\1\306\2\102\3\306\1\102\1\306\5\102\1\307\1\310"+ "\1\304\1\102\1\311\13\102\22\306\1\102\1\306\2\102"+ "\3\306\127\102\1\312\1\310\1\304\1\102\1\313\53\102"+ "\20\107\1\314\1\107\1\315\1\0\1\316\56\107\1\306"+ "\2\107\3\306\1\107\1\306\5\107\1\317\1\107\1\315"+ "\1\320\1\311\13\107\22\306\1\107\1\306\2\107\3\306"+ "\127\107\1\312\1\107\1\315\1\320\1\321\53\107\26\0"+ "\1\322\71\0\1\312\57\0\13\116\1\120\3\116\1\120"+ "\1\323\1\116\1\324\1\116\1\325\54\116\1\117\1\116"+ "\1\117\1\116\6\117\1\326\2\116\1\327\1\326\1\323"+ "\1\116\1\324\1\116\1\325\13\116\22\117\1\116\1\117"+ "\2\116\3\117\12\116\1\330\2\116\3\330\1\116\1\330"+ "\1\120\3\116\1\120\1\323\1\116\1\324\1\116\1\325"+ "\13\116\22\330\1\116\1\330\2\116\3\330\12\116\1\306"+ "\2\116\3\306\1\116\1\306\1\120\3\116\1\120\1\331"+ "\1\116\1\324\1\116\1\311\13\116\22\306\1\116\1\306"+ "\2\116\3\306\22\116\1\120\3\116\1\120\73\116\1\120"+ "\3\116\1\120\1\312\1\116\1\324\1\116\1\332\53\116"+ "\13\124\1\126\3\124\1\126\61\124\1\125\1\124\1\125"+ "\1\124\6\125\1\333\2\124\1\334\1\333\20\124\22\125"+ "\1\124\1\125\2\124\3\125\12\124\1\335\2\124\3\335"+ "\1\124\1\335\1\126\3\124\1\126\20\124\22\335\1\124"+ "\1\335\2\124\3\335\7\124\3\336\1\337\2\336\3\337"+ "\1\336\1\337\1\0\2\336\1\340\1\0\20\336\22\337"+ "\1\336\1\337\2\336\3\337\7\336\1\341\1\342\1\341"+ "\1\342\1\341\6\342\1\343\2\341\1\344\1\343\20\341"+ "\22\342\1\341\1\342\2\341\3\342\7\341\3\345\1\346"+ "\2\345\3\346\1\345\1\346\1\131\2\345\1\347\1\131"+ "\20\345\22\346\1\345\1\346\2\345\3\346\7\345\1\0"+ "\1\134\1\0\1\134\1\0\6\134\25\0\22\134\1\0"+ "\1\134\2\0\3\134\35\0\1\350\52\0\1\136\3\0"+ "\1\136\3\0\1\136\67\0\1\351\3\0\1\351\1\176"+ "\1\0\1\177\1\351\71\0\1\352\2\0\3\352\1\0"+ "\1\352\25\0\22\352\1\0\1\352\2\0\3\352\10\0"+ "\1\31\1\0\1\31\1\0\6\31\25\0\10\31\1\231"+ "\11\31\1\0\1\31\2\0\3\31\7\0\32\145\1\0"+ "\45\145\33\0\1\353\77\0\1\354\47\0\1\355\3\0"+ "\1\356\31\0\1\357\1\360\1\361\1\362\1\363\1\364"+ "\1\365\1\366\1\367\3\0\1\370\1\0\1\371\1\372"+ "\1\373\1\0\1\374\14\0\13\152\1\153\3\152\1\153"+ "\6\152\1\153\5\152\1\153\41\152\1\153\1\152\13\0"+ "\1\375\112\0\1\376\64\0\2\161\2\0\1\161\63\0"+ "\1\377\2\0\3\377\1\0\1\377\25\0\22\377\1\0"+ "\1\377\2\0\3\377\12\0\1\377\2\0\3\377\1\0"+ "\1\377\1\162\24\0\22\377\1\0\1\377\2\0\3\377"+ "\10\0\1\164\1\0\1\165\1\0\1\164\3\0\1\164"+ "\67\0\1\351\2\0\2\351\3\0\1\351\15\0\1\351"+ "\51\0\1\31\1\0\1\31\1\0\6\31\25\0\5\31"+ "\1\u0100\1\u0101\13\31\1\0\1\31\2\0\3\31\10\0"+ "\1\31\1\0\1\31\1\0\6\31\25\0\13\31\1\u0102"+ "\6\31\1\0\1\31\2\0\3\31\10\0\1\31\1\0"+ "\1\31\1\0\6\31\25\0\4\31\1\u0103\15\31\1\0"+ "\1\31\2\0\3\31\10\0\1\31\1\0\1\31\1\0"+ "\6\31\25\0\11\31\1\u0104\10\31\1\0\1\31\2\0"+ "\3\31\10\0\1\31\1\0\1\31\1\0\6\31\25\0"+ "\20\31\1\u0105\1\31\1\0\1\31\2\0\3\31\10\0"+ "\1\31\1\0\1\31\1\0\6\31\25\0\2\31\1\u0106"+ "\17\31\1\0\1\31\2\0\3\31\10\0\1\u0107\1\0"+ "\1\u0107\1\0\1\u0107\1\0\3\u0107\30\0\1\u0107\1\0"+ "\1\u0107\2\0\1\u0107\35\0\1\u0108\3\0\1\u0108\67\0"+ "\1\31\1\0\1\31\1\0\6\31\25\0\3\31\1\u0109"+ "\16\31\1\0\1\31\2\0\3\31\10\0\1\31\1\0"+ "\1\31\1\0\6\31\25\0\6\31\1\u010a\2\31\1\u010b"+ "\3\31\1\u010c\4\31\1\0\1\31\2\0\3\31\10\0"+ "\1\31\1\0\1\31\1\0\6\31\25\0\1\u010d\1\31"+ "\1\u010e\17\31\1\0\1\31\2\0\3\31\40\0\1\u010f"+ "\47\0\1\31\1\0\1\u0110\1\0\6\31\25\0\22\31"+ "\1\0\1\31\2\0\3\31\10\0\1\206\1\0\1\206"+ "\1\0\6\206\25\0\22\206\1\0\1\206\2\0\3\206"+ "\10\0\1\206\1\0\1\206\1\0\6\206\25\0\13\206"+ "\1\u0111\6\206\1\0\1\206\2\0\3\206\7\0\3\210"+ "\1\0\2\210\3\0\1\210\1\0\5\210\1\211\1\212"+ "\1\213\1\210\1\0\13\210\22\0\1\210\1\0\2\210"+ "\3\0\127\210\1\0\1\212\1\213\1\210\1\214\53\210"+ "\25\0\1\166\3\0\1\u0112\100\0\1\u0113\60\0\2\220"+ "\2\0\1\220\61\0\1\31\1\0\1\31\1\0\6\31"+ "\25\0\6\31\1\u0114\13\31\1\0\1\31\2\0\2\31"+ "\1\u0115\10\0\1\31\1\0\1\31\1\0\6\31\25\0"+ "\11\31\1\u0116\10\31\1\0\1\31\2\0\3\31\10\0"+ "\1\31\1\0\1\31\1\0\6\31\25\0\1\31\1\u0117"+ "\20\31\1\0\1\31\2\0\3\31\10\0\1\31\1\0"+ "\1\31\1\0\6\31\25\0\4\31\1\221\15\31\1\0"+ "\1\31\2\0\3\31\10\0\1\31\1\0\1\31\1\0"+ "\6\31\25\0\14\31\1\u0118\5\31\1\0\1\31\2\0"+ "\3\31\10\0\1\31\1\0\1\31\1\0\6\31\25\0"+ "\21\31\1\u0119\1\0\1\31\2\0\3\31\10\0\1\31"+ "\1\0\1\31\1\0\6\31\25\0\15\31\1\u011a\4\31"+ "\1\0\1\31\2\0\3\31\10\0\1\31\1\0\1\31"+ "\1\0\2\31\1\u011b\3\31\25\0\7\31\1\u011c\12\31"+ "\1\0\1\31\2\0\3\31\10\0\1\31\1\0\1\u011d"+ "\1\0\6\31\25\0\22\31\1\0\1\31\2\0\3\31"+ "\10\0\1\31\1\0\1\31\1\0\2\31\1\u011e\3\31"+ "\25\0\6\31\1\u011f\2\31\1\u0120\10\31\1\0\1\31"+ "\2\0\3\31\10\0\1\31\1\0\1\31\1\0\6\31"+ "\25\0\11\31\1\u0121\10\31\1\0\1\31\2\0\3\31"+ "\10\0\1\31\1\0\1\31\1\0\6\31\25\0\20\31"+ "\1\u0122\1\31\1\0\1\31\2\0\3\31\10\0\1\31"+ "\1\0\1\31\1\0\6\31\25\0\2\31\1\u0123\5\31"+ "\1\u0124\1\31\1\u0125\7\31\1\0\1\31\2\0\3\31"+ "\10\0\1\31\1\0\1\31\1\0\6\31\25\0\1\31"+ "\1\u0126\20\31\1\0\1\31\2\0\3\31\10\0\1\31"+ "\1\0\1\31\1\0\6\31\25\0\1\31\1\u0127\20\31"+ "\1\0\1\31\2\0\3\31\10\0\1\31\1\0\1\31"+ "\1\0\6\31\25\0\1\u0128\21\31\1\0\1\31\2\0"+ "\3\31\10\0\1\31\1\0\1\31\1\0\6\31\25\0"+ "\15\31\1\u0129\4\31\1\0\1\31\2\0\3\31\10\0"+ "\1\31\1\0\1\31\1\0\6\31\25\0\3\31\1\u012a"+ "\16\31\1\0\1\31\2\0\3\31\10\0\1\31\1\0"+ "\1\31\1\0\6\31\25\0\3\31\1\u012b\16\31\1\0"+ "\1\31\2\0\3\31\10\0\1\31\1\0\1\31\1\0"+ "\6\31\25\0\11\31\1\u012c\10\31\1\0\1\31\2\0"+ "\3\31\10\0\1\31\1\0\1\u012d\1\0\6\31\25\0"+ "\22\31\1\0\1\31\2\0\3\31\10\0\1\31\1\0"+ "\1\31\1\0\6\31\25\0\15\31\1\u012e\4\31\1\0"+ "\1\31\2\0\3\31\10\0\1\31\1\0\1\31\1\0"+ "\6\31\25\0\2\31\1\u012f\17\31\1\0\1\31\2\0"+ "\3\31\10\0\1\31\1\0\1\31\1\0\6\31\25\0"+ "\5\31\1\u0130\14\31\1\0\1\31\2\0\3\31\10\0"+ "\1\31\1\0\1\31\1\0\6\31\25\0\5\31\1\u0131"+ "\14\31\1\0\1\31\2\0\3\31\10\0\1\31\1\0"+ "\1\31\1\0\6\31\25\0\11\31\1\u0132\10\31\1\0"+ "\1\31\2\0\3\31\10\0\1\31\1\0\1\31\1\0"+ "\6\31\25\0\6\31\1\u0133\13\31\1\0\1\31\2\0"+ "\3\31\10\0\1\31\1\0\1\31\1\0\6\31\25\0"+ "\1\u0134\21\31\1\0\1\31\2\0\3\31\10\0\1\31"+ "\1\0\1\31\1\0\6\31\25\0\1\u0135\4\31\1\u0136"+ "\14\31\1\0\1\31\2\0\3\31\10\0\1\31\1\0"+ "\1\31\1\0\6\31\25\0\1\31\1\u0137\20\31\1\0"+ "\1\31\2\0\3\31\10\0\1\31\1\0\1\31\1\0"+ "\3\31\1\u0138\2\31\25\0\22\31\1\0\1\31\2\0"+ "\3\31\10\0\1\31\1\0\1\31\1\0\6\31\25\0"+ "\1\31\1\u0139\20\31\1\0\1\31\2\0\3\31\47\0"+ "\1\u013a\4\0\1\u013b\42\0\1\u013c\72\0\1\u013d\135\0"+ "\1\u013e\76\0\1\u013f\102\0\1\u0140\111\0\1\u0141\65\0"+ "\1\u0142\102\0\1\u0143\32\0\1\31\1\0\1\31\1\0"+ "\2\31\1\u0144\3\31\25\0\3\31\1\u0145\1\u0146\2\31"+ "\1\u0147\3\31\1\u0148\1\31\1\u0149\3\31\1\u014a\1\0"+ "\1\31\2\0\3\31\7\0\100\205\13\0\2\302\2\0"+ "\1\302\60\0\3\102\1\0\2\102\3\0\1\102\1\0"+ "\5\102\1\307\1\310\1\304\1\102\1\0\13\102\22\0"+ "\1\102\1\0\2\102\3\0\27\102\1\0\1\310\1\304"+ "\1\102\1\313\53\102\1\0\1\306\1\0\1\306\1\0"+ "\6\306\25\0\22\306\1\0\1\306\2\0\3\306\1\0"+ "\1\u014b\5\0\3\107\1\0\2\107\3\0\1\107\1\0"+ "\5\107\1\317\1\107\1\315\1\320\1\0\13\107\22\0"+ "\1\107\1\0\2\107\3\0\27\107\1\0\1\107\1\315"+ "\1\320\1\321\53\107\3\116\1\0\2\116\3\0\1\116"+ "\1\0\1\120\3\116\1\120\1\331\1\116\1\324\1\116"+ "\1\0\13\116\22\0\1\116\1\0\2\116\3\0\22\116"+ "\1\120\3\116\1\120\1\0\1\116\1\324\1\116\1\332"+ "\66\116\1\326\3\116\1\326\1\323\1\116\1\324\1\116"+ "\1\325\54\116\1\330\1\116\1\330\1\116\6\330\1\u014c"+ "\2\116\1\u014d\1\u014c\1\323\1\116\1\324\1\116\1\325"+ "\13\116\22\330\1\116\1\330\2\116\3\330\7\116\13\124"+ "\1\333\3\124\1\333\61\124\1\335\1\124\1\335\1\124"+ "\6\335\1\u014e\2\124\1\u014f\1\u014e\20\124\22\335\1\124"+ "\1\335\2\124\3\335\7\124\3\347\1\u0150\2\347\3\u0150"+ "\1\347\1\u0150\1\u0151\3\347\1\u0151\20\347\22\u0150\1\347"+ "\1\u0150\2\347\3\u0150\10\347\1\u0152\1\347\1\u0150\1\347"+ "\1\u0152\3\u0150\1\u0152\1\u0150\1\u0153\2\347\1\u0154\1\u0153"+ "\20\347\22\u0150\1\347\1\u0150\2\347\3\u0150\7\347\3\340"+ "\1\u0155\2\340\3\u0155\1\340\1\u0155\1\0\3\340\1\0"+ "\20\340\22\u0155\1\340\1\u0155\2\340\3\u0155\7\340\3\u0156"+ "\1\u0157\2\u0156\3\u0157\1\u0156\1\u0157\1\u0153\3\u0156\1\u0153"+ "\20\u0156\22\u0157\1\u0156\1\u0157\2\u0156\3\u0157\10\u0156\1\u0157"+ "\1\u0156\1\u0157\1\u0156\6\u0157\1\u0158\2\u0156\1\u0159\1\u0158"+ "\20\u0156\22\u0157\1\u0156\1\u0157\2\u0156\3\u0157\7\u0156\13\u015a"+ "\1\343\3\u015a\1\343\60\u015a\3\345\1\u015b\2\345\3\u015b"+ "\1\345\1\u015b\1\u0151\2\345\1\347\1\u0151\20\345\22\u015b"+ "\1\345\1\u015b\2\345\3\u015b\7\345\1\u015c\1\346\1\u015c"+ "\1\346\1\u015c\6\346\1\u0158\2\u015c\1\u0159\1\u0158\20\u015c"+ "\22\346\1\u015c\1\346\2\u015c\3\346\7\u015c\1\0\1\351"+ "\3\0\1\351\3\0\1\351\67\0\1\352\1\0\1\352"+ "\1\0\6\352\25\0\22\352\1\0\1\352\2\0\3\352"+ "\15\0\1\u015d\131\0\1\u015e\1\0\1\u015f\40\0\1\u0160"+ "\103\0\1\u0161\1\u0162\37\0\1\u0163\71\0\1\u0164\40\0"+ "\1\u0165\137\0\1\u0166\13\0\1\u0167\60\0\1\u0168\7\0"+ "\1\u0169\2\0\1\u016a\71\0\1\u016b\103\0\1\u016c\31\0"+ "\1\u016d\41\0\1\u016e\1\u016f\1\0\1\u0170\74\0\1\u0171"+ "\107\0\1\u0172\63\0\1\u0173\1\u0174\40\0\1\u0175\36\0"+ "\1\u0176\40\0\1\u0177\36\0\1\u0178\50\0\2\376\2\0"+ "\1\376\61\0\1\377\1\0\1\377\1\0\6\377\1\u0179"+ "\2\0\1\u017a\1\u0179\20\0\22\377\1\0\1\377\2\0"+ "\3\377\10\0\1\31\1\0\1\31\1\0\6\31\25\0"+ "\6\31\1\u017b\13\31\1\0\1\31\2\0\3\31\10\0"+ "\1\31\1\0\1\u017c\1\0\6\31\25\0\22\31\1\0"+ "\1\31\2\0\3\31\10\0\1\31\1\0\1\31\1\0"+ "\6\31\25\0\1\u017d\21\31\1\0\1\31\2\0\3\31"+ "\10\0\1\31\1\0\1\31\1\0\6\31\25\0\4\31"+ "\1\u017e\1\u017f\1\31\1\u0180\1\31\1\u0181\2\31\1\u0182"+ "\5\31\1\0\1\31\2\0\3\31\10\0\1\31\1\0"+ "\1\u0183\1\0\6\31\25\0\22\31\1\0\1\31\2\0"+ "\3\31\10\0\1\31\1\0\1\31\1\0\6\31\25\0"+ "\6\31\1\u0184\13\31\1\0\1\31\2\0\3\31\10\0"+ "\1\31\1\0\1\31\1\0\6\31\25\0\15\31\1\u0185"+ "\4\31\1\0\1\31\2\0\3\31\10\0\1\31\1\0"+ "\1\31\1\0\6\31\25\0\6\31\1\u0186\2\31\1\u0187"+ "\10\31\1\0\1\31\2\0\3\31\10\0\1\31\1\0"+ "\1\31\1\0\2\31\1\u0188\3\31\25\0\22\31\1\0"+ "\1\31\2\0\3\31\10\0\1\31\1\0\1\u0189\1\0"+ "\6\31\25\0\22\31\1\0\1\31\2\0\3\31\10\0"+ "\1\31\1\0\1\31\1\0\6\31\25\0\15\31\1\u018a"+ "\4\31\1\0\1\31\2\0\3\31\10\0\1\31\1\0"+ "\1\31\1\0\6\31\25\0\3\31\1\u018b\16\31\1\0"+ "\1\31\2\0\3\31\10\0\1\31\1\0\1\31\1\0"+ "\6\31\25\0\11\31\1\u018c\10\31\1\0\1\31\2\0"+ "\3\31\40\0\1\u0112\47\0\1\31\1\0\1\31\1\0"+ "\6\31\25\0\2\31\1\u018d\17\31\1\0\1\31\2\0"+ "\3\31\10\0\1\206\1\0\1\206\1\0\6\206\25\0"+ "\5\206\1\u018e\14\206\1\0\1\206\2\0\3\206\12\0"+ "\1\u018f\2\0\3\u018f\1\0\1\u018f\1\0\1\u0112\4\0"+ "\1\u0190\16\0\22\u018f\1\0\1\u018f\2\0\3\u018f\3\0"+ "\1\u0191\16\0\2\u0192\2\0\1\u0192\55\0\1\u0193\3\0"+ "\1\31\1\0\1\31\1\0\6\31\25\0\10\31\1\u0194"+ "\11\31\1\0\1\31\2\0\3\31\10\0\1\31\1\0"+ "\1\31\1\0\6\31\25\0\10\31\1\u0195\11\31\1\0"+ "\1\31\2\0\3\31\10\0\1\31\1\0\1\31\1\0"+ "\6\31\25\0\6\31\1\u0196\13\31\1\0\1\31\2\0"+ "\3\31\10\0\1\31\1\0\1\31\1\0\6\31\25\0"+ "\2\31\1\u0197\17\31\1\0\1\31\2\0\3\31\10\0"+ "\1\31\1\0\1\u0198\1\0\6\31\25\0\22\31\1\0"+ "\1\31\2\0\3\31\10\0\1\31\1\0\1\31\1\0"+ "\6\31\25\0\15\31\1\u0199\4\31\1\0\1\31\2\0"+ "\3\31\10\0\1\31\1\0\1\31\1\0\6\31\25\0"+ "\15\31\1\u019a\4\31\1\0\1\31\2\0\3\31\10\0"+ "\1\31\1\0\1\31\1\0\6\31\25\0\2\31\1\u019b"+ "\17\31\1\0\1\31\2\0\3\31\10\0\1\31\1\0"+ "\1\31\1\0\6\31\25\0\15\31\1\u019c\4\31\1\0"+ "\1\31\2\0\3\31\10\0\1\31\1\0\1\u019d\1\0"+ "\6\31\25\0\22\31\1\0\1\31\2\0\3\31\10\0"+ "\1\31\1\0\1\31\1\0\6\31\25\0\6\31\1\u019e"+ "\13\31\1\0\1\31\2\0\3\31\10\0\1\31\1\0"+ "\1\u019f\1\0\6\31\25\0\22\31\1\0\1\31\2\0"+ "\3\31\10\0\1\31\1\0\1\31\1\0\6\31\25\0"+ "\15\31\1\u01a0\4\31\1\0\1\31\2\0\3\31\10\0"+ "\1\31\1\0\1\31\1\0\6\31\25\0\5\31\1\u01a1"+ "\14\31\1\0\1\31\2\0\3\31\10\0\1\31\1\0"+ "\1\u01a2\1\0\6\31\25\0\22\31\1\0\1\31\2\0"+ "\3\31\10\0\1\31\1\0\1\31\1\0\6\31\25\0"+ "\1\u01a3\21\31\1\0\1\31\2\0\3\31\10\0\1\31"+ "\1\0\1\u01a4\1\0\6\31\25\0\22\31\1\0\1\31"+ "\2\0\3\31\10\0\1\31\1\0\1\31\1\0\6\31"+ "\25\0\21\31\1\u01a5\1\0\1\31\2\0\3\31\10\0"+ "\1\31\1\0\1\31\1\0\6\31\25\0\11\31\1\u01a6"+ "\10\31\1\0\1\31\2\0\3\31\10\0\1\31\1\0"+ "\1\31\1\0\6\31\25\0\2\31\1\u01a7\17\31\1\0"+ "\1\31\2\0\3\31\10\0\1\31\1\0\1\31\1\0"+ "\2\31\1\u01a8\3\31\25\0\22\31\1\0\1\31\2\0"+ "\3\31\10\0\1\31\1\0\1\u01a9\1\0\6\31\25\0"+ "\22\31\1\0\1\31\2\0\3\31\10\0\1\31\1\0"+ "\1\31\1\0\6\31\25\0\7\31\1\u01aa\12\31\1\0"+ "\1\31\2\0\3\31\10\0\1\31\1\0\1\31\1\0"+ "\6\31\25\0\6\31\1\u01ab\13\31\1\0\1\31\2\0"+ "\3\31\10\0\1\31\1\0\1\31\1\0\6\31\25\0"+ "\6\31\1\u01ac\13\31\1\0\1\31\2\0\3\31\10\0"+ "\1\31\1\0\1\31\1\0\6\31\25\0\15\31\1\u01ad"+ "\4\31\1\0\1\31\2\0\3\31\10\0\1\31\1\0"+ "\1\31\1\0\6\31\25\0\6\31\1\u01ae\13\31\1\0"+ "\1\31\2\0\3\31\10\0\1\31\1\0\1\31\1\0"+ "\6\31\25\0\1\u01af\21\31\1\0\1\31\2\0\3\31"+ "\10\0\1\31\1\0\1\31\1\0\3\31\1\u01b0\2\31"+ "\25\0\22\31\1\0\1\31\2\0\3\31\10\0\1\31"+ "\1\0\1\31\1\0\6\31\25\0\6\31\1\u01b1\13\31"+ "\1\0\1\31\2\0\3\31\10\0\1\31\1\0\1\31"+ "\1\0\6\31\25\0\3\31\1\u01b2\16\31\1\0\1\u01b3"+ "\2\0\3\31\10\0\1\31\1\0\1\u01b4\1\0\6\31"+ "\25\0\22\31\1\0\1\31\2\0\3\31\10\0\1\31"+ "\1\0\1\31\1\0\6\31\25\0\15\31\1\u01b5\4\31"+ "\1\0\1\31\2\0\3\31\47\0\1\u01b6\102\0\1\u01b7"+ "\122\0\1\u01b8\53\0\1\u01b9\76\0\1\u01ba\106\0\1\u01bb"+ "\75\0\1\u01bc\71\0\1\u01bd\110\0\1\u01be\67\0\1\u01bf"+ "\37\0\1\31\1\0\1\31\1\0\6\31\25\0\15\31"+ "\1\u01c0\4\31\1\0\1\31\2\0\3\31\10\0\1\31"+ "\1\0\1\31\1\0\6\31\25\0\2\31\1\u01c1\17\31"+ "\1\0\1\31\2\0\3\31\10\0\1\31\1\0\1\31"+ "\1\0\6\31\25\0\5\31\1\u01c2\14\31\1\0\1\31"+ "\2\0\3\31\10\0\1\31\1\0\1\31\1\0\6\31"+ "\25\0\5\31\1\u01c3\2\31\1\u01c4\11\31\1\0\1\31"+ "\2\0\3\31\10\0\1\31\1\0\1\31\1\0\6\31"+ "\25\0\2\31\1\u01c5\17\31\1\0\1\31\2\0\3\31"+ "\10\0\1\31\1\0\1\31\1\0\6\31\25\0\5\31"+ "\1\u01c6\14\31\1\0\1\31\2\0\3\31\10\0\1\31"+ "\1\0\1\u01c7\1\0\6\31\25\0\22\31\1\0\1\31"+ "\2\0\3\31\7\0\13\116\1\u014c\3\116\1\u014c\1\323"+ "\1\116\1\324\1\116\1\325\53\116\13\124\1\u014e\3\124"+ "\1\u014e\60\124\1\336\1\u01c8\1\336\1\u01c8\1\336\6\u01c8"+ "\1\343\2\336\1\u01c9\1\343\20\336\22\u01c8\1\336\1\u01c8"+ "\2\336\3\u01c8\7\336\13\u01ca\1\0\2\u01ca\2\0\60\u01ca"+ "\1\336\1\337\1\336\1\337\1\336\6\337\1\u01cb\2\336"+ "\1\u01cc\1\u01cb\20\336\22\337\1\336\1\337\2\336\3\337"+ "\12\336\1\337\2\336\3\337\1\336\1\337\1\u01cb\2\336"+ "\1\340\1\u01cb\20\336\22\337\1\336\1\337\2\336\3\337"+ "\7\336\1\340\1\u0155\1\340\1\u0155\1\340\6\u0155\1\u01cb"+ "\2\340\1\u01cc\1\u01cb\20\340\22\u0155\1\340\1\u0155\2\340"+ "\3\u0155\7\340\13\341\1\u01cb\2\341\1\u015a\1\u01cb\73\341"+ "\1\343\2\341\1\u015a\1\343\60\341\13\u015a\1\u01cb\3\u015a"+ "\1\u01cb\60\u015a\1\345\1\u015b\1\345\1\u015b\1\345\6\u015b"+ "\1\u0158\2\345\1\u01cd\1\u0158\20\345\22\u015b\1\345\1\u015b"+ "\2\345\3\u015b\7\345\3\u015c\1\346\2\u015c\3\346\1\u015c"+ "\1\346\1\u0153\2\u015c\1\u0156\1\u0153\20\u015c\22\346\1\u015c"+ "\1\346\2\u015c\3\346\7\u015c\7\0\1\u01ce\32\0\1\u01cf"+ "\115\0\1\u01d0\65\0\1\u01d1\77\0\1\u01d2\40\0\1\u01d3"+ "\141\0\1\u01d4\74\0\1\u01d5\112\0\1\u01d6\67\0\1\u01d7"+ "\6\0\1\u01d8\65\0\1\u01d9\74\0\1\u01da\100\0\1\u01db"+ "\101\0\1\u01dc\72\0\1\u01dd\101\0\1\u01de\11\0\1\u01df"+ "\25\0\1\u01e0\77\0\1\u01e1\137\0\1\u01e2\76\0\1\u01e3"+ "\45\0\1\u01e4\76\0\1\u01e5\33\0\1\u01e6\74\0\1\u01e7"+ "\77\0\1\u01e8\46\0\1\u01e9\31\0\1\u01ea\104\0\1\u01eb"+ "\110\0\1\u01ec\61\0\1\u01ed\77\0\1\u01ee\51\0\1\u0179"+ "\3\0\1\u0179\61\0\1\31\1\0\1\31\1\0\6\31"+ "\25\0\3\31\1\u01ef\16\31\1\0\1\31\2\0\3\31"+ "\10\0\1\31\1\0\1\u01f0\1\0\6\31\25\0\22\31"+ "\1\0\1\31\2\0\3\31\10\0\1\31\1\0\1\31"+ "\1\0\6\31\25\0\7\31\1\u01f1\12\31\1\0\1\31"+ "\2\0\3\31\10\0\1\31\1\0\1\31\1\0\6\31"+ "\25\0\1\u01f2\21\31\1\0\1\31\2\0\3\31\10\0"+ "\1\31\1\0\1\31\1\0\6\31\25\0\14\31\1\u01f3"+ "\5\31\1\0\1\31\2\0\3\31\10\0\1\31\1\0"+ "\1\31\1\0\6\31\25\0\13\31\1\u01f4\6\31\1\0"+ "\1\31\2\0\3\31\10\0\1\31\1\0\1\31\1\0"+ "\6\31\25\0\5\31\1\u01f5\14\31\1\0\1\31\2\0"+ "\3\31\10\0\1\31\1\0\1\31\1\0\6\31\25\0"+ "\12\31\1\u01f6\7\31\1\0\1\31\2\0\3\31\10\0"+ "\1\31\1\0\1\31\1\0\6\31\25\0\5\31\1\u01f7"+ "\14\31\1\0\1\31\2\0\3\31\10\0\1\31\1\0"+ "\1\31\1\0\6\31\25\0\6\31\1\u01f8\13\31\1\0"+ "\1\31\2\0\3\31\10\0\1\31\1\0\1\31\1\0"+ "\6\31\25\0\13\31\1\u01f9\6\31\1\0\1\31\2\0"+ "\3\31\10\0\1\31\1\0\1\31\1\0\6\31\25\0"+ "\2\31\1\u01fa\17\31\1\0\1\31\2\0\3\31\10\0"+ "\1\31\1\0\1\u01fb\1\0\6\31\25\0\22\31\1\0"+ "\1\31\2\0\3\31\10\0\1\31\1\0\1\31\1\0"+ "\6\31\25\0\11\31\1\u01fc\10\31\1\0\1\31\2\0"+ "\3\31\10\0\1\31\1\0\1\31\1\0\6\31\25\0"+ "\16\31\1\u01fd\3\31\1\0\1\31\2\0\3\31\10\0"+ "\1\206\1\0\1\206\1\0\6\206\25\0\11\206\1\u01fe"+ "\10\206\1\0\1\206\2\0\3\206\10\0\1\u018f\1\0"+ "\1\u018f\1\0\6\u018f\1\u01ff\3\0\1\u0200\20\0\22\u018f"+ "\1\0\1\u018f\2\0\3\u018f\12\0\1\u0201\2\0\3\u0201"+ "\1\0\1\u0201\25\0\22\u0201\1\0\1\u0201\2\0\3\u0201"+ "\12\0\1\u0202\2\0\3\u0202\1\0\1\u0202\25\0\22\u0202"+ "\1\0\1\u0202\2\0\3\u0202\22\0\2\u0192\2\0\1\u0192"+ "\157\0\1\u0203\1\0\1\31\1\0\1\31\1\0\6\31"+ "\25\0\1\31\1\u0204\20\31\1\0\1\31\2\0\3\31"+ "\10\0\1\31\1\0\1\31\1\0\6\31\25\0\5\31"+ "\1\u0205\14\31\1\0\1\31\2\0\3\31\10\0\1\31"+ "\1\0\1\31\1\0\6\31\25\0\1\31\1\u0206\20\31"+ "\1\0\1\31\2\0\3\31\10\0\1\31\1\0\1\31"+ "\1\0\6\31\25\0\12\31\1\u0207\7\31\1\0\1\31"+ "\2\0\3\31\10\0\1\31\1\0\1\31\1\0\6\31"+ "\25\0\11\31\1\u0208\10\31\1\0\1\31\2\0\3\31"+ "\10\0\1\31\1\0\1\31\1\0\6\31\25\0\2\31"+ "\1\u0209\17\31\1\0\1\31\2\0\3\31\10\0\1\31"+ "\1\0\1\31\1\0\6\31\25\0\10\31\1\u020a\11\31"+ "\1\0\1\31\2\0\3\31\10\0\1\31\1\0\1\31"+ "\1\0\6\31\25\0\10\31\1\u020b\11\31\1\0\1\31"+ "\2\0\3\31\10\0\1\31\1\0\1\31\1\0\6\31"+ "\25\0\1\31\1\u020c\20\31\1\0\1\31\2\0\3\31"+ "\10\0\1\31\1\0\1\u020d\1\0\6\31\25\0\2\31"+ "\1\u020e\17\31\1\0\1\31\2\0\3\31\10\0\1\31"+ "\1\0\1\31\1\0\6\31\25\0\6\31\1\u020f\13\31"+ "\1\0\1\31\2\0\3\31\10\0\1\31\1\0\1\u0210"+ "\1\0\6\31\25\0\22\31\1\0\1\31\2\0\3\31"+ "\10\0\1\31\1\0\1\31\1\0\6\31\25\0\6\31"+ "\1\u0211\13\31\1\0\1\31\2\0\3\31\10\0\1\31"+ "\1\0\1\31\1\0\6\31\25\0\14\31\1\u0212\5\31"+ "\1\0\1\31\2\0\3\31\10\0\1\31\1\0\1\31"+ "\1\0\6\31\25\0\2\31\1\u0213\17\31\1\0\1\31"+ "\2\0\3\31\10\0\1\31\1\0\1\u0214\1\0\6\31"+ "\25\0\22\31\1\0\1\31\2\0\3\31\10\0\1\31"+ "\1\0\1\31\1\0\6\31\25\0\15\31\1\u0215\4\31"+ "\1\0\1\31\2\0\3\31\10\0\1\31\1\0\1\31"+ "\1\0\6\31\25\0\6\31\1\u0216\13\31\1\0\1\31"+ "\2\0\3\31\10\0\1\31\1\0\1\31\1\0\6\31"+ "\25\0\6\31\1\u0217\13\31\1\0\1\31\2\0\3\31"+ "\10\0\1\31\1\0\1\31\1\0\6\31\25\0\5\31"+ "\1\u0218\14\31\1\0\1\31\2\0\3\31\10\0\1\31"+ "\1\0\1\31\1\0\2\31\1\u0219\3\31\25\0\22\31"+ "\1\0\1\31\2\0\3\31\10\0\1\31\1\0\1\u021a"+ "\1\0\6\31\25\0\22\31\1\0\1\31\2\0\3\31"+ "\10\0\1\31\1\0\1\31\1\0\6\31\25\0\2\31"+ "\1\u021b\17\31\1\0\1\31\2\0\3\31\10\0\1\31"+ "\1\0\1\u021c\1\0\6\31\25\0\22\31\1\0\1\31"+ "\2\0\3\31\10\0\1\31\1\0\1\31\1\0\6\31"+ "\25\0\6\31\1\u021d\13\31\1\0\1\31\2\0\3\31"+ "\10\0\1\31\1\0\1\31\1\0\6\31\25\0\2\31"+ "\1\u021e\17\31\1\0\1\31\2\0\3\31\10\0\1\31"+ "\1\0\1\31\1\0\6\31\25\0\3\31\1\u021f\16\31"+ "\1\0\1\31\2\0\3\31\10\0\1\31\1\0\1\31"+ "\1\0\6\31\25\0\5\31\1\u0220\14\31\1\0\1\31"+ "\2\0\3\31\64\0\1\u0221\64\0\1\u0222\40\0\1\u0223"+ "\151\0\1\u0224\64\0\1\u0225\45\0\1\u0226\72\0\1\u0227"+ "\10\0\1\u0224\50\0\1\u0228\54\0\1\u0229\40\0\1\u0229"+ "\141\0\1\u022a\33\0\1\31\1\0\1\31\1\0\6\31"+ "\25\0\2\31\1\u022b\17\31\1\0\1\31\2\0\3\31"+ "\10\0\1\31\1\0\1\31\1\0\6\31\25\0\21\31"+ "\1\u022c\1\0\1\31\2\0\3\31\10\0\1\31\1\0"+ "\1\31\1\0\6\31\25\0\1\31\1\u022d\20\31\1\0"+ "\1\31\2\0\3\31\10\0\1\31\1\0\1\31\1\0"+ "\6\31\25\0\15\31\1\u022e\4\31\1\0\1\31\2\0"+ "\3\31\10\0\1\31\1\0\1\31\1\0\6\31\25\0"+ "\3\31\1\u022f\16\31\1\0\1\31\2\0\3\31\10\0"+ "\1\31\1\0\1\31\1\0\6\31\25\0\15\31\1\u0230"+ "\4\31\1\0\1\31\2\0\3\31\10\0\1\31\1\0"+ "\1\31\1\0\6\31\25\0\3\31\1\u0231\16\31\1\0"+ "\1\31\2\0\3\31\10\0\1\31\1\0\1\31\1\0"+ "\6\31\25\0\6\31\1\u0232\13\31\1\0\1\31\2\0"+ "\3\31\7\0\1\347\1\u0150\1\347\1\u0150\1\347\6\u0150"+ "\1\u0158\2\347\1\u01cd\1\u0158\20\347\22\u0150\1\347\1\u0150"+ "\2\347\3\u0150\7\347\3\340\1\u0155\2\340\3\u0155\1\340"+ "\1\u0155\1\343\3\340\1\343\20\340\22\u0155\1\340\1\u0155"+ "\2\340\3\u0155\7\340\3\u0151\1\u0233\2\u0151\3\u0233\1\u0151"+ "\1\u0233\25\u0151\22\u0233\1\u0151\1\u0233\2\u0151\3\u0233\7\u0151"+ "\3\340\1\u0155\2\340\3\u0155\1\340\1\u0155\1\u01cb\3\340"+ "\1\u01cb\20\340\22\u0155\1\340\1\u0155\2\340\3\u0155\7\340"+ "\3\336\1\337\2\336\3\337\1\336\1\337\1\343\2\336"+ "\1\340\1\343\20\336\22\337\1\336\1\337\2\336\3\337"+ "\7\336\3\0\1\u0234\155\0\1\u0235\70\0\1\u0236\30\0"+ "\1\u0237\144\0\1\u0238\32\0\1\u0239\142\0\1\u023a\104\0"+ "\1\u023b\27\0\1\u023c\103\0\1\u023d\131\0\1\u023e\41\0"+ "\1\u023f\134\0\1\u0240\77\0\1\u0241\77\0\1\u0242\77\0"+ "\1\u0243\101\0\1\u0244\40\0\1\u0245\145\0\1\u0246\35\0"+ "\1\u0247\136\0\1\u0248\111\0\1\u0249\22\0\1\u024a\152\0"+ "\1\u024b\31\0\1\u024c\147\0\1\u024d\75\0\1\u024e\63\0"+ "\1\u024f\110\0\1\u0250\71\0\1\u0251\103\0\1\u0252\27\0"+ "\1\31\1\0\1\31\1\0\6\31\25\0\4\31\1\u0253"+ "\15\31\1\0\1\31\2\0\3\31\10\0\1\31\1\0"+ "\1\31\1\0\2\31\1\u0254\3\31\25\0\22\31\1\0"+ "\1\31\2\0\3\31\10\0\1\31\1\0\1\31\1\0"+ "\6\31\25\0\1\31\1\u0255\20\31\1\0\1\31\2\0"+ "\3\31\10\0\1\31\1\0\1\31\1\0\6\31\25\0"+ "\5\31\1\u0256\14\31\1\0\1\31\2\0\3\31\10\0"+ "\1\31\1\0\1\31\1\0\6\31\25\0\5\31\1\u0257"+ "\14\31\1\0\1\31\2\0\3\31\10\0\1\31\1\0"+ "\1\31\1\0\6\31\25\0\7\31\1\u0258\12\31\1\0"+ "\1\31\2\0\3\31\10\0\1\31\1\0\1\31\1\0"+ "\6\31\25\0\3\31\1\u0259\16\31\1\0\1\31\2\0"+ "\3\31\10\0\1\31\1\0\1\31\1\0\3\31\1\u025a"+ "\2\31\25\0\22\31\1\0\1\31\2\0\3\31\22\0"+ "\1\u01ff\65\0\1\u0201\1\0\1\u0201\1\0\6\u0201\6\0"+ "\1\u025b\16\0\22\u0201\1\0\1\u0201\2\0\3\u0201\10\0"+ "\1\u0202\1\0\1\u0202\1\0\6\u0202\25\0\22\u0202\1\0"+ "\1\u0202\2\0\3\u0202\3\0\1\u025b\32\0\1\u025c\51\0"+ "\1\31\1\0\1\31\1\0\6\31\25\0\3\31\1\u025d"+ "\16\31\1\0\1\31\2\0\3\31\10\0\1\31\1\0"+ "\1\31\1\0\6\31\25\0\1\31\1\u025e\20\31\1\0"+ "\1\31\2\0\3\31\10\0\1\31\1\0\1\31\1\0"+ "\6\31\25\0\2\31\1\u025f\17\31\1\0\1\31\2\0"+ "\3\31\10\0\1\31\1\0\1\31\1\0\6\31\25\0"+ "\20\31\1\u0260\1\31\1\0\1\31\2\0\3\31\10\0"+ "\1\31\1\0\1\31\1\0\6\31\25\0\1\31\1\u0261"+ "\20\31\1\0\1\31\2\0\3\31\10\0\1\31\1\0"+ "\1\31\1\0\6\31\25\0\15\31\1\u0262\4\31\1\0"+ "\1\31\2\0\3\31\10\0\1\31\1\0\1\31\1\0"+ "\6\31\25\0\4\31\1\u0263\15\31\1\0\1\31\2\0"+ "\3\31\10\0\1\31\1\0\1\31\1\0\6\31\25\0"+ "\7\31\1\u0264\12\31\1\0\1\31\2\0\3\31\10\0"+ "\1\31\1\0\1\31\1\0\6\31\25\0\2\31\1\u0265"+ "\17\31\1\0\1\31\2\0\3\31\10\0\1\31\1\0"+ "\1\31\1\0\6\31\25\0\3\31\1\u0266\16\31\1\0"+ "\1\31\2\0\3\31\10\0\1\31\1\0\1\31\1\0"+ "\6\31\25\0\21\31\1\u0267\1\0\1\31\2\0\3\31"+ "\10\0\1\31\1\0\1\31\1\0\2\31\1\u0268\3\31"+ "\25\0\22\31\1\0\1\31\2\0\3\31\10\0\1\31"+ "\1\0\1\31\1\0\6\31\25\0\5\31\1\u0269\14\31"+ "\1\0\1\31\2\0\3\31\10\0\1\31\1\0\1\31"+ "\1\0\2\31\1\u026a\3\31\25\0\22\31\1\0\1\31"+ "\2\0\3\31\10\0\1\31\1\0\1\31\1\0\6\31"+ "\25\0\13\31\1\u026b\6\31\1\0\1\31\2\0\3\31"+ "\10\0\1\31\1\0\1\31\1\0\6\31\25\0\15\31"+ "\1\u026c\4\31\1\0\1\31\2\0\3\31\10\0\1\31"+ "\1\0\1\31\1\0\2\31\1\u026d\3\31\25\0\22\31"+ "\1\0\1\31\2\0\3\31\10\0\1\31\1\0\1\31"+ "\1\0\6\31\25\0\6\31\1\u026e\13\31\1\0\1\31"+ "\2\0\3\31\10\0\1\31\1\0\1\31\1\0\6\31"+ "\25\0\6\31\1\u026f\13\31\1\0\1\31\2\0\3\31"+ "\10\0\1\31\1\0\1\31\1\0\2\31\1\u0270\3\31"+ "\25\0\22\31\1\0\1\31\2\0\3\31\12\0\1\u0271"+ "\10\0\1\u0224\50\0\1\u0228\53\0\1\u0225\45\0\1\u0229"+ "\104\0\1\u0224\50\0\1\u0228\64\0\1\u0224\102\0\1\u0272"+ "\101\0\1\u0273\66\0\1\u0224\74\0\1\u0274\35\0\1\31"+ "\1\0\1\31\1\0\6\31\25\0\11\31\1\u0275\10\31"+ "\1\0\1\31\2\0\3\31\10\0\1\31\1\0\1\u0276"+ "\1\0\6\31\25\0\22\31\1\0\1\31\2\0\3\31"+ "\10\0\1\31\1\0\1\31\1\0\6\31\25\0\22\31"+ "\1\0\1\31\2\0\1\31\1\u0277\1\31\10\0\1\31"+ "\1\0\1\u0278\1\0\6\31\25\0\22\31\1\0\1\31"+ "\2\0\3\31\10\0\1\31\1\0\1\31\1\0\2\31"+ "\1\u0279\3\31\25\0\22\31\1\0\1\31\2\0\3\31"+ "\10\0\1\31\1\0\1\31\1\0\6\31\25\0\6\31"+ "\1\u027a\13\31\1\0\1\31\2\0\3\31\10\0\1\31"+ "\1\0\1\u027b\1\0\6\31\25\0\22\31\1\0\1\31"+ "\2\0\3\31\10\0\1\31\1\0\1\31\1\0\6\31"+ "\25\0\13\31\1\u027c\6\31\1\0\1\31\2\0\3\31"+ "\7\0\1\u01ca\1\u027d\1\u01ca\1\u027d\1\u01ca\6\u027d\1\343"+ "\2\u01ca\1\u027e\1\343\20\u01ca\22\u027d\1\u01ca\1\u027d\2\u01ca"+ "\3\u027d\7\u01ca\60\0\1\u027f\77\0\1\u0280\60\0\1\u0281"+ "\115\0\1\u0282\61\0\1\u0283\107\0\1\u0284\67\0\1\u0285"+ "\76\0\1\u0286\110\0\1\u0287\31\0\1\u0288\135\0\1\u0289"+ "\77\0\1\u028a\77\0\1\u028b\112\0\1\u028c\100\0\1\u028d"+ "\73\0\1\u028e\31\0\1\u028f\141\0\1\u0290\74\0\1\u0291"+ "\100\0\1\u0292\76\0\1\u0293\40\0\1\u0294\136\0\1\u0295"+ "\116\0\1\u0296\56\0\1\u0297\46\0\1\u0298\135\0\1\u0299"+ "\33\0\1\31\1\0\1\31\1\0\6\31\25\0\11\31"+ "\1\u029a\10\31\1\0\1\31\2\0\3\31\10\0\1\31"+ "\1\0\1\31\1\0\6\31\25\0\15\31\1\u029b\4\31"+ "\1\0\1\31\2\0\3\31\10\0\1\31\1\0\1\u029c"+ "\1\0\6\31\25\0\22\31\1\0\1\31\2\0\3\31"+ "\10\0\1\31\1\0\1\31\1\0\6\31\25\0\6\31"+ "\1\u029d\13\31\1\0\1\31\2\0\3\31\10\0\1\31"+ "\1\0\1\31\1\0\6\31\25\0\15\31\1\u029e\4\31"+ "\1\0\1\31\2\0\3\31\10\0\1\31\1\0\1\31"+ "\1\0\6\31\25\0\10\31\1\u029f\11\31\1\0\1\31"+ "\2\0\3\31\10\0\1\31\1\0\1\31\1\0\6\31"+ "\25\0\15\31\1\u02a0\4\31\1\0\1\31\2\0\3\31"+ "\22\0\1\u01ff\3\0\1\u0200\61\0\1\31\1\0\1\u02a1"+ "\1\0\6\31\25\0\22\31\1\0\1\31\2\0\3\31"+ "\10\0\1\31\1\0\1\31\1\0\2\31\1\u02a2\3\31"+ "\25\0\22\31\1\0\1\31\2\0\3\31\10\0\1\31"+ "\1\0\1\31\1\0\6\31\25\0\2\31\1\u02a3\17\31"+ "\1\0\1\31\2\0\3\31\10\0\1\31\1\0\1\u02a4"+ "\1\0\6\31\25\0\22\31\1\0\1\31\2\0\3\31"+ "\10\0\1\31\1\0\1\31\1\0\6\31\25\0\6\31"+ "\1\u02a5\13\31\1\0\1\31\2\0\3\31\10\0\1\31"+ "\1\0\1\u02a6\1\0\6\31\25\0\22\31\1\0\1\31"+ "\2\0\3\31\10\0\1\31\1\0\1\31\1\0\6\31"+ "\25\0\2\31\1\u02a7\17\31\1\0\1\31\2\0\3\31"+ "\10\0\1\31\1\0\1\31\1\0\6\31\25\0\4\31"+ "\1\u02a8\15\31\1\0\1\31\2\0\3\31\10\0\1\31"+ "\1\0\1\31\1\0\2\31\1\u02a9\3\31\25\0\22\31"+ "\1\0\1\31\2\0\3\31\10\0\1\31\1\0\1\u02aa"+ "\1\0\6\31\25\0\22\31\1\0\1\31\2\0\3\31"+ "\10\0\1\31\1\0\1\31\1\0\6\31\25\0\13\31"+ "\1\u02ab\6\31\1\0\1\31\2\0\3\31\10\0\1\31"+ "\1\0\1\31\1\0\6\31\25\0\1\u02ac\21\31\1\0"+ "\1\31\2\0\3\31\10\0\1\31\1\0\1\31\1\0"+ "\6\31\25\0\6\31\1\u02ad\13\31\1\0\1\31\2\0"+ "\3\31\10\0\1\31\1\0\1\u02ae\1\0\6\31\25\0"+ "\22\31\1\0\1\31\2\0\3\31\51\0\1\u02af\40\0"+ "\1\u0224\77\0\1\u02b0\153\0\1\u0224\21\0\1\31\1\0"+ "\1\31\1\0\6\31\25\0\11\31\1\u02b1\10\31\1\0"+ "\1\31\2\0\3\31\10\0\1\31\1\0\1\31\1\0"+ "\6\31\25\0\11\31\1\u02b2\10\31\1\0\1\31\2\0"+ "\3\31\10\0\1\31\1\0\1\31\1\0\6\31\25\0"+ "\22\31\1\0\1\31\2\0\1\31\1\u02b3\1\31\10\0"+ "\1\31\1\0\1\31\1\0\6\31\25\0\22\31\1\0"+ "\1\31\2\0\1\31\1\u02b4\1\31\10\0\1\31\1\0"+ "\1\31\1\0\6\31\25\0\6\31\1\u02b5\13\31\1\0"+ "\1\31\2\0\3\31\10\0\1\31\1\0\1\31\1\0"+ "\6\31\25\0\22\31\1\0\1\31\2\0\1\31\1\u02b6"+ "\1\31\10\0\1\31\1\0\1\31\1\0\6\31\25\0"+ "\22\31\1\0\1\31\2\0\1\31\1\u02b7\1\31\10\0"+ "\1\31\1\0\1\31\1\0\6\31\25\0\1\u02b8\21\31"+ "\1\0\1\31\2\0\3\31\7\0\1\u0151\1\u0233\1\u0151"+ "\1\u0233\1\u0151\6\u0233\1\u0158\2\u0151\1\u02b9\1\u0158\20\u0151"+ "\22\u0233\1\u0151\1\u0233\2\u0151\3\u0233\7\u0151\13\0\1\343"+ "\3\0\1\343\126\0\1\u02ba\106\0\1\u02bb\67\0\1\u02bc"+ "\72\0\1\u02bd\102\0\1\u02be\105\0\1\u02bf\70\0\1\u02c0"+ "\76\0\1\u02c1\116\0\1\u02c2\26\0\1\u02c3\133\0\1\u02c4"+ "\37\0\1\u02c5\141\0\1\u02c6\103\0\1\u02c7\66\0\1\u02c8"+ "\46\0\1\u02c9\77\0\1\u02ca\141\0\1\u02cb\103\0\1\u02cc"+ "\63\0\1\u02cd\115\0\1\u02ce\64\0\1\u02cf\73\0\1\u02d0"+ "\40\0\1\31\1\0\1\31\1\0\6\31\25\0\2\31"+ "\1\u02d1\17\31\1\0\1\31\2\0\3\31\10\0\1\31"+ "\1\0\1\31\1\0\6\31\25\0\2\31\1\u02d2\17\31"+ "\1\0\1\31\2\0\3\31\10\0\1\31\1\0\1\31"+ "\1\0\2\31\1\u02d3\3\31\25\0\22\31\1\0\1\31"+ "\2\0\3\31\10\0\1\31\1\0\1\u02d4\1\0\6\31"+ "\25\0\22\31\1\0\1\31\2\0\3\31\10\0\1\31"+ "\1\0\1\u02d5\1\0\6\31\25\0\22\31\1\0\1\31"+ "\2\0\3\31\10\0\1\31\1\0\1\u02d6\1\0\6\31"+ "\25\0\22\31\1\0\1\31\2\0\3\31\10\0\1\31"+ "\1\0\1\31\1\0\6\31\25\0\22\31\1\0\1\31"+ "\2\0\1\31\1\u02d7\1\31\10\0\1\31\1\0\1\31"+ "\1\0\6\31\25\0\6\31\1\u02d8\13\31\1\0\1\31"+ "\2\0\3\31\10\0\1\31\1\0\1\31\1\0\2\31"+ "\1\u02d9\3\31\25\0\22\31\1\0\1\31\2\0\3\31"+ "\10\0\1\31\1\0\1\31\1\0\6\31\25\0\22\31"+ "\1\0\1\31\2\0\1\31\1\u02da\1\31\10\0\1\31"+ "\1\0\1\31\1\0\2\31\1\u02db\3\31\25\0\22\31"+ "\1\0\1\31\2\0\3\31\10\0\1\31\1\0\1\31"+ "\1\0\6\31\25\0\1\u02dc\21\31\1\0\1\31\2\0"+ "\3\31\10\0\1\31\1\0\1\u02dd\1\0\6\31\25\0"+ "\22\31\1\0\1\31\2\0\3\31\10\0\1\31\1\0"+ "\1\31\1\0\6\31\25\0\3\31\1\u02de\16\31\1\0"+ "\1\31\2\0\3\31\10\0\1\31\1\0\1\31\1\0"+ "\6\31\25\0\3\31\1\u02df\16\31\1\0\1\31\2\0"+ "\3\31\10\0\1\31\1\0\1\u02e0\1\0\6\31\25\0"+ "\22\31\1\0\1\31\2\0\3\31\52\0\1\u0224\75\0"+ "\1\u0224\37\0\1\31\1\0\1\31\1\0\6\31\25\0"+ "\22\31\1\0\1\31\2\0\1\31\1\u02e1\1\31\10\0"+ "\1\31\1\0\1\31\1\0\6\31\25\0\20\31\1\u02e2"+ "\1\31\1\0\1\31\2\0\3\31\10\0\1\31\1\0"+ "\1\31\1\0\6\31\25\0\22\31\1\0\1\31\2\0"+ "\1\31\1\u02e3\1\31\10\0\1\31\1\0\1\31\1\0"+ "\6\31\25\0\5\31\1\u02e4\14\31\1\0\1\31\2\0"+ "\3\31\10\0\1\31\1\0\1\31\1\0\2\31\1\u02e5"+ "\3\31\25\0\22\31\1\0\1\31\2\0\3\31\10\0"+ "\1\31\1\0\1\31\1\0\6\31\25\0\22\31\1\0"+ "\1\31\2\0\1\31\1\u02e6\1\31\10\0\1\31\1\0"+ "\1\31\1\0\6\31\25\0\4\31\1\u02e7\15\31\1\0"+ "\1\31\2\0\3\31\7\0\13\u01ca\1\343\2\u01ca\1\0"+ "\1\343\60\u01ca\45\0\1\u02e8\35\0\1\u02e9\153\0\1\u02ea"+ "\61\0\1\u02eb\45\0\1\u02ec\132\0\1\u02ed\77\0\1\u02ee"+ "\77\0\1\u02ef\77\0\1\u02f0\105\0\1\u02f1\112\0\1\u02f2"+ "\72\0\1\u02f3\24\0\1\u02f4\142\0\1\u02f5\34\0\1\u02f6"+ "\137\0\1\u02f7\35\0\1\31\1\0\1\31\1\0\6\31"+ "\25\0\1\31\1\u02f8\20\31\1\0\1\31\2\0\3\31"+ "\10\0\1\31\1\0\1\31\1\0\2\31\1\u02f9\3\31"+ "\25\0\22\31\1\0\1\31\2\0\3\31\10\0\1\31"+ "\1\0\1\31\1\0\6\31\25\0\13\31\1\u02fa\6\31"+ "\1\0\1\31\2\0\3\31\10\0\1\31\1\0\1\31"+ "\1\0\6\31\25\0\1\u02fb\21\31\1\0\1\31\2\0"+ "\3\31\10\0\1\31\1\0\1\u02fc\1\0\6\31\25\0"+ "\22\31\1\0\1\31\2\0\3\31\10\0\1\31\1\0"+ "\1\31\1\0\6\31\25\0\1\u02fd\21\31\1\0\1\31"+ "\2\0\3\31\10\0\1\31\1\0\1\u02fe\1\0\6\31"+ "\25\0\22\31\1\0\1\31\2\0\3\31\10\0\1\31"+ "\1\0\1\31\1\0\6\31\25\0\7\31\1\u02ff\12\31"+ "\1\0\1\31\2\0\3\31\10\0\1\31\1\0\1\31"+ "\1\0\6\31\25\0\1\u0300\21\31\1\0\1\31\2\0"+ "\3\31\10\0\1\31\1\0\1\31\1\0\6\31\25\0"+ "\6\31\1\u0301\13\31\1\0\1\31\2\0\3\31\10\0"+ "\1\31\1\0\1\31\1\0\6\31\25\0\4\31\1\u0302"+ "\15\31\1\0\1\31\2\0\3\31\10\0\1\31\1\0"+ "\1\31\1\0\6\31\25\0\22\31\1\0\1\31\2\0"+ "\1\31\1\u0303\1\31\10\0\1\31\1\0\1\31\1\0"+ "\6\31\25\0\2\31\1\u0304\17\31\1\0\1\31\2\0"+ "\3\31\10\0\1\31\1\0\1\31\1\0\6\31\25\0"+ "\1\u0305\21\31\1\0\1\31\2\0\3\31\10\0\1\31"+ "\1\0\1\31\1\0\6\31\25\0\1\u0306\21\31\1\0"+ "\1\31\2\0\3\31\10\0\1\31\1\0\1\31\1\0"+ "\6\31\25\0\22\31\1\0\1\31\2\0\1\31\1\u0307"+ "\1\31\47\0\1\u0308\112\0\1\u0309\76\0\1\u030a\73\0"+ "\1\u030b\40\0\1\u030c\136\0\1\u030d\106\0\1\u030e\77\0"+ "\1\u030f\63\0\1\u0310\100\0\1\u0311\77\0\1\u0312\107\0"+ "\1\u0313\26\0\1\31\1\0\1\u0314\1\0\6\31\25\0"+ "\22\31\1\0\1\31\2\0\3\31\10\0\1\31\1\0"+ "\1\31\1\0\6\31\25\0\13\31\1\u0315\6\31\1\0"+ "\1\31\2\0\3\31\10\0\1\31\1\0\1\31\1\0"+ "\6\31\25\0\3\31\1\u0316\16\31\1\0\1\31\2\0"+ "\3\31\10\0\1\31\1\0\1\31\1\0\6\31\25\0"+ "\3\31\1\u0317\16\31\1\0\1\31\2\0\3\31\10\0"+ "\1\31\1\0\1\31\1\0\6\31\25\0\7\31\1\u0318"+ "\12\31\1\0\1\31\2\0\3\31\10\0\1\31\1\0"+ "\1\31\1\0\6\31\25\0\11\31\1\u0319\10\31\1\0"+ "\1\31\2\0\3\31\10\0\1\31\1\0\1\31\1\0"+ "\2\31\1\u031a\3\31\25\0\22\31\1\0\1\31\2\0"+ "\3\31\10\0\1\31\1\0\1\31\1\0\6\31\25\0"+ "\3\31\1\u031b\16\31\1\0\1\31\2\0\3\31\10\0"+ "\1\31\1\0\1\31\1\0\6\31\25\0\21\31\1\u031c"+ "\1\0\1\31\2\0\3\31\10\0\1\31\1\0\1\31"+ "\1\0\6\31\25\0\22\31\1\0\1\31\2\0\1\31"+ "\1\u031d\1\31\52\0\1\u031e\102\0\1\u031f\34\0\1\u0320"+ "\77\0\1\u0321\103\0\1\u0322\131\0\1\u0323\115\0\1\u0324"+ "\21\0\1\31\1\0\1\31\1\0\2\31\1\u0325\3\31"+ "\25\0\22\31\1\0\1\31\2\0\3\31\10\0\1\31"+ "\1\0\1\31\1\0\2\31\1\u0326\3\31\25\0\22\31"+ "\1\0\1\31\2\0\3\31\10\0\1\31\1\0\1\u0327"+ "\1\0\6\31\25\0\22\31\1\0\1\31\2\0\3\31"+ "\10\0\1\31\1\0\1\31\1\0\6\31\25\0\22\31"+ "\1\0\1\31\2\0\1\31\1\u0328\1\31\10\0\1\31"+ "\1\0\1\31\1\0\6\31\25\0\20\31\1\u0329\1\31"+ "\1\0\1\31\2\0\3\31\53\0\1\u032a\36\0\1\u032b"+ "\77\0\1\u032c\75\0\1\31\1\0\1\u032d\1\0\6\31"+ "\25\0\22\31\1\0\1\31\2\0\3\31\10\0\1\31"+ "\1\0\1\u032e\1\0\6\31\25\0\22\31\1\0\1\31"+ "\2\0\3\31\10\0\1\31\1\0\1\31\1\0\6\31"+ "\25\0\22\31\1\0\1\31\2\0\1\31\1\u032f\1\31"+ "\10\0\1\31\1\0\1\31\1\0\6\31\25\0\22\31"+ "\1\0\1\31\2\0\1\31\1\u0330\1\31\10\0\1\31"+ "\1\0\1\31\1\0\6\31\25\0\5\31\1\u0331\14\31"+ "\1\0\1\31\2\0\3\31\10\0\1\31\1\0\1\31"+ "\1\0\6\31\25\0\22\31\1\0\1\31\2\0\1\31"+ "\1\u0332\1\31\10\0\1\31\1\0\1\31\1\0\6\31"+ "\25\0\15\31\1\u0333\4\31\1\0\1\31\2\0\3\31"+ "\10\0\1\31\1\0\1\u0334\1\0\6\31\25\0\22\31"+ "\1\0\1\31\2\0\3\31\10\0\1\31\1\0\1\31"+ "\1\0\6\31\25\0\1\31\1\u0335\20\31\1\0\1\31"+ "\2\0\3\31\7\0"; private static int [] zzUnpackTrans() { int [] result = new int[41792]; 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.charAt(i++); int value = packed.charAt(i++); value--; do result[j++] = value; while (--count > 0); } return j; } /* error codes */ private static final int ZZ_UNKNOWN_ERROR = 0; private static final int ZZ_NO_MATCH = 1; private static final int ZZ_PUSHBACK_2BIG = 2; /* error messages for the codes above */ private static final 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 final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); private static final String ZZ_ATTRIBUTE_PACKED_0 = "\1\10\4\0\2\1\10\0\1\11\12\1\2\11\2\1"+ "\3\11\34\1\1\11\1\1\1\11\3\1\1\11\6\1"+ "\1\11\15\1\1\0\1\1\1\11\3\1\1\11\1\1"+ "\1\11\2\1\1\11\2\1\1\11\3\1\1\11\1\1"+ "\1\11\2\1\1\11\1\1\1\0\3\1\1\11\6\1"+ "\1\11\2\0\3\1\1\0\1\1\1\0\2\1\2\0"+ "\1\11\2\0\47\1\1\11\1\1\12\0\1\1\1\0"+ "\1\1\3\0\2\1\3\11\1\1\3\0\1\1\1\11"+ "\1\1\1\11\3\0\10\1\5\0\1\11\4\0\1\11"+ "\2\1\2\11\20\0\1\11\1\1\1\0\17\1\1\0"+ "\2\1\2\0\46\1\12\0\7\1\2\11\1\1\1\11"+ "\1\1\3\0\1\1\4\0\1\1\40\0\1\11\1\0"+ "\24\1\3\0\1\1\1\0\42\1\12\0\10\1\3\0"+ "\1\11\25\0\1\11\14\0\1\11\20\1\1\11\1\1"+ "\3\0\35\1\7\0\1\11\2\0\10\1\11\0\1\1"+ "\1\11\3\0\1\11\4\0\1\11\4\0\1\11\7\0"+ "\10\1\2\0\24\1\4\0\10\1\20\0\1\11\1\0"+ "\1\11\6\0\1\11\1\0\1\11\1\0\25\1\2\0"+ "\10\1\5\0\2\11\1\0\1\11\3\0\1\11\1\0"+ "\1\11\1\0\1\1\2\0\1\11\2\0\1\11\1\0"+ "\27\1\1\0\1\11\12\0\1\11\1\0\2\11\20\1"+ "\2\0\2\11\2\0\2\11\3\0\1\11\12\1\3\11"+ "\2\0\1\11\1\0\5\1\3\11\11\1"; private static int [] zzUnpackAttribute() { int [] result = new int[821]; 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.charAt(i++); int value = packed.charAt(i++); do result[j++] = value; while (--count > 0); } return j; } /** the input device */ private java.io.Reader 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 textposition at the last state to be included in yytext */ private int zzPushbackPos; /** 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 boolean zzAtBOL = true; /** zzAtEOF == true <=> the scanner is at the EOF */ private boolean zzAtEOF; /* user code: */ public PhpLexer(int state){ initialize(state); } public void reset(char array[], int offset, int length) { this.zzBuffer = array; this.zzCurrentPos = offset; this.zzMarkedPos = offset; this.zzPushbackPos = offset; this.yychar = offset; this.zzEndRead = offset + length; this.zzStartRead = offset; this.zzAtEOF = zzCurrentPos >= zzEndRead; this.firstPos = offset; } public void reset(java.io.Reader reader, char[] buffer, int[] parameters){ this.zzReader = reader; this.zzBuffer = buffer; this.zzMarkedPos = parameters[0]; this.zzPushbackPos = parameters[1]; this.zzCurrentPos = parameters[2]; this.zzStartRead = parameters[3]; this.zzEndRead = parameters[4]; this.yyline = parameters[5]; initialize(parameters[6]); } protected boolean isHeredocState(int state){ return state == ST_PHP_HEREDOC || state == ST_PHP_END_HEREDOC || state == ST_PHP_NOWDOC || state == ST_PHP_END_NOWDOC; } public int[] getParamenters(){ return new int[]{zzMarkedPos, zzPushbackPos, zzCurrentPos, zzStartRead, zzEndRead, yyline, zzLexicalState}; } protected int getZZLexicalState() { return zzLexicalState; } protected int getZZMarkedPos() { return zzMarkedPos; } protected int getZZEndRead() { return zzEndRead; } public char[] getZZBuffer() { return zzBuffer; } protected int getZZStartRead() { return this.zzStartRead; } protected int getZZPushBackPosition() { return this.zzPushbackPos; } protected void pushBack(int i) { yypushback(i); } // A pool of states. To avoid creation of a new state on each createMemento. private static final IntHashtable lexerStates = new IntHashtable(100); protected IntHashtable getLexerStates() { return lexerStates; } // End user code /** * Creates a new scanner * There is also a java.io.InputStream version of this constructor. * * @param in the java.io.Reader to read input from. */ public PhpLexer(java.io.Reader in) { this.zzReader = in; } /** * Creates a new scanner. * There is also java.io.Reader version of this constructor. * * @param in the java.io.Inputstream to read input from. */ public PhpLexer(java.io.InputStream in) { this(new java.io.InputStreamReader(in)); } /** * 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 < 192) { int count = packed.charAt(i++); char value = packed.charAt(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 boolean zzRefill() throws java.io.IOException { /* first: make room (if you can) */ if (zzStartRead > 0) { System.arraycopy(zzBuffer, zzStartRead, zzBuffer, 0, zzEndRead-zzStartRead); /* translate stored positions */ zzEndRead-= zzStartRead; zzCurrentPos-= zzStartRead; zzMarkedPos-= zzStartRead; zzPushbackPos-= zzStartRead; zzStartRead = 0; } /* is the buffer big enough? */ if (zzCurrentPos >= zzBuffer.length) { /* if not: blow it up */ char newBuffer[] = new char[zzCurrentPos*2]; System.arraycopy(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) { return true; } else { zzEndRead+= numRead; return false; } } /** * Closes the input stream. */ public final void yyclose() throws java.io.IOException { 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>. * * @param reader the new input stream */ public final void yyreset(java.io.Reader reader) { zzReader = reader; zzAtBOL = true; zzAtEOF = false; zzEndRead = zzStartRead = 0; zzCurrentPos = zzMarkedPos = zzPushbackPos = 0; yyline = yychar = yycolumn = 0; zzLexicalState = YYINITIAL; } /** * Returns the current lexical state. */ public final int yystate() { return zzLexicalState; } /** * Enters a new lexical state * * @param newState the new lexical state */ public final void yybegin(int newState) { zzLexicalState = newState; } /** * Returns the text matched by the current regular expression. */ public final 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 final char yycharat(int pos) { return zzBuffer[zzStartRead+pos]; } /** * Returns the length of the matched text region. */ public final int yylength() { 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 (ArrayIndexOutOfBoundsException e) { message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR]; } throw new Error(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 String yylex() throws java.io.IOException { 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; zzAction = -1; zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL; zzState = zzLexicalState; zzForAction: { while (true) { if (zzCurrentPosL < zzEndReadL) zzInput = zzBufferL[zzCurrentPosL++]; else if (zzAtEOF) { zzInput = YYEOF; break zzForAction; } else { // store back cached positions zzCurrentPos = zzCurrentPosL; zzMarkedPos = zzMarkedPosL; boolean eof = zzRefill(); // get translated positions and possibly new buffer zzCurrentPosL = zzCurrentPos; zzMarkedPosL = zzMarkedPos; zzBufferL = zzBuffer; zzEndReadL = zzEndRead; if (eof) { zzInput = YYEOF; break zzForAction; } else { zzInput = zzBufferL[zzCurrentPosL++]; } } int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ]; if (zzNext == -1) break zzForAction; zzState = zzNext; int zzAttributes = zzAttrL[zzState]; if ( (zzAttributes & 1) == 1 ) { zzAction = zzState; zzMarkedPosL = zzCurrentPosL; if ( (zzAttributes & 8) == 8 ) break zzForAction; } } } // store back cached position zzMarkedPos = zzMarkedPosL; switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { case 117: { return PHP_DECLARE; } case 170: break; case 83: { return PHP_CLONE; } case 171: break; case 90: { return PHP_TRAIT; } case 172: break; case 1: { if(heredoc!=null&&yytext().startsWith(heredoc)){ String text = yytext(); if(heredoc_len < text.length() && (text.charAt(heredoc_len) == '\r' || text.charAt(heredoc_len) == '\n'|| text.charAt(heredoc_len) == ';')){ yypushback(yylength()-heredoc_len-1); heredoc=null; heredoc_len=0; yybegin(ST_PHP_IN_SCRIPTING); return PHP_HEREDOC_TAG; } } return PHP_ENCAPSED_AND_WHITESPACE; } case 173: break; case 157: { return PHP__METHOD__; } case 174: break; case 73: { return PHP_FROM; } case 175: break; case 85: { return PHP_BREAK; } case 176: break; case 95: { return PHP_WHILE; } case 177: break; case 158: { return PHPDOC_EXCEPTION; } case 178: break; case 34: { if (asp_tags) { return PHP_CLOSETAG; } return UNKNOWN_TOKEN; } case 179: break; case 115: { return PHP_EXTENDS; } case 180: break; case 64: { nowdoc = null; nowdoc_len = 0; yybegin(ST_PHP_IN_SCRIPTING); return PHP_HEREDOC_TAG; } case 181: break; case 28: { return UNKNOWN_TOKEN; } case 182: break; case 4: { return PHP_NUMBER; } case 183: break; case 79: { return PHP_ENDIF; } case 184: break; case 121: { return PHP_PRIVATE; } case 185: break; case 106: { return PHP_STATIC; } case 186: break; case 6: { return PHP_STRING; } case 187: break; case 118: { return PHP_DEFAULT; } case 188: break; case 116: { return PHP_REQUIRE; } case 189: break; case 102: { return PHPDOC_LINK; } case 190: break; case 154: { return PHP_ENDFOREACH; } case 191: break; case 3: { yypushback(1); pushState(ST_PHP_HIGHLIGHTING_ERROR); } case 192: break; case 56: { return PHP_TRY; } case 193: break; case 137: { return PHP__LINE__; } case 194: break; case 65: { return PHP_EXIT; } case 195: break; case 163: { return PHPDOC_FILESOURCE; } case 196: break; case 133: { return PHP_CALLABLE; } case 197: break; case 9: { pushState(ST_PHP_DOUBLE_QUOTES); return PHP_CONSTANT_ENCAPSED_STRING; } case 198: break; case 132: { return PHP_CONTINUE; } case 199: break; case 87: { int bprefix = (yytext().charAt(0) != '<') ? 1 : 0; int startString=3+bprefix; int hereOrNowDoc_len = yylength()-bprefix-3-1-(yytext().charAt(yylength()-2)=='\r'?1:0); while ((yytext().charAt(startString) == ' ') || (yytext().charAt(startString) == '\t')) { startString++; hereOrNowDoc_len--; } String hereOrNowDoc = yytext().substring(startString,hereOrNowDoc_len+startString); if (hereOrNowDoc.charAt(0) == '\'') { nowdoc = hereOrNowDoc.substring(1, hereOrNowDoc_len-1); nowdoc_len = hereOrNowDoc_len - 2; yybegin(ST_PHP_NOWDOC); } else if (hereOrNowDoc.charAt(0) == '"') { heredoc = hereOrNowDoc.substring(1, hereOrNowDoc_len-1); heredoc_len = hereOrNowDoc_len - 2; yybegin(ST_PHP_HEREDOC); } else { heredoc = hereOrNowDoc; heredoc_len = hereOrNowDoc_len; yybegin(ST_PHP_HEREDOC); } return PHP_HEREDOC_TAG; } case 200: break; case 151: { return PHPDOC_TUTORIAL; } case 201: break; case 167: { return PHP__FUNCTION__; } case 202: break; case 130: { return PHPDOC_METHOD; } case 203: break; case 149: { return PHPDOC_ABSTRACT; } case 204: break; case 162: { return PHPDOC_DEPRECATED; } case 205: break; case 57: { return PHP_FOR; } case 206: break; case 156: { return PHP_IMPLEMENTS; } case 207: break; case 96: { return PHP_PRINT; } case 208: break; case 81: { return PHP_CONST; } case 209: break; case 131: { return PHP_ENDWHILE; } case 210: break; case 14: { pushState(ST_PHP_LINE_COMMENT); return PHP_LINE_COMMENT; } case 211: break; case 15: { return PHP_CONSTANT_ENCAPSED_STRING; } case 212: break; case 27: { return PHP_LINE_COMMENT; } case 213: break; case 33: { pushState(ST_PHP_COMMENT); return PHP_COMMENT_START; } case 214: break; case 155: { return PHP_INSTANCEOF; } case 215: break; case 31: { pushState(ST_PHP_LOOKING_FOR_PROPERTY); return PHP_OBJECT_OPERATOR; } case 216: break; case 91: { return PHP_THROW; } case 217: break; case 112: { return PHPDOC_SINCE; } case 218: break; case 107: { return PHP_SWITCH; } case 219: break; case 152: { return PHPDOC_PROPERTY; } case 220: break; case 36: { return PHP_DO; } case 221: break; case 168: { return PHP__NAMESPACE__; } case 222: break; case 52: { popState(); return PHP_LINE_COMMENT; } case 223: break; case 166: { return PHP_INCLUDE_ONCE; } case 224: break; case 2: { return PHP_ENCAPSED_AND_WHITESPACE; } case 225: break; case 126: { return PHPDOC_IGNORE; } case 226: break; case 84: { return PHP_CLASS; } case 227: break; case 49: { return PHP_OBJECT_OPERATOR; } case 228: break; case 109: { return PHP_PARENT; } case 229: break; case 111: { return PHPDOC_FINAL; } case 230: break; case 45: { popState(); pushState(ST_PHP_LOOKING_FOR_PROPERTY); return PHP_OBJECT_OPERATOR; } case 231: break; case 32: { return PHP_VARIABLE; } case 232: break; case 22: { yypushback(1); popState(); return PHP_ENCAPSED_AND_WHITESPACE; } case 233: break; case 97: { return PHP_CASTING; } case 234: break; case 94: { return PHP_UNSET; } case 235: break; case 44: { yypushback(1); return PHP_ENCAPSED_AND_WHITESPACE; } case 236: break; case 50: { popState(); return PHP_COMMENT_END; } case 237: break; case 39: { return PHP_CLOSETAG; } case 238: break; case 68: { return PHP_EVAL; } case 239: break; case 76: { return PHP_GOTO; } case 240: break; case 29: { popState();return WHITESPACE; } case 241: break; case 43: { yypushback(1); pushState(ST_PHP_IN_SCRIPTING); return PHP_CURLY_OPEN; } case 242: break; case 48: { int label_len = yylength() - 1; int startIndex = 0; String yytext = yytext(); if (yytext.charAt(label_len - 1) == ';') { label_len--; } while (yytext.charAt(startIndex) == '\r' || yytext.charAt(startIndex) == '\n') { startIndex++; } if (label_len > heredoc_len && yytext.substring(startIndex, label_len).equals( heredoc)) { heredoc = null; heredoc_len = 0; yybegin(ST_PHP_IN_SCRIPTING); return PHP_HEREDOC_TAG; } else { yybegin(ST_PHP_HEREDOC); return PHP_CONSTANT_ENCAPSED_STRING; } } case 243: break; case 58: { return PHP_USE; } case 244: break; case 38: { return PHP_PAAMAYIM_NEKUDOTAYIM; } case 245: break; case 125: { return PHPDOC_AUTHOR; } case 246: break; case 160: { return PHPDOC_NAMESPACE; } case 247: break; case 40: { pushState(ST_PHP_QUOTES_AFTER_VARIABLE); return PHP_VARIABLE; } case 248: break; case 110: { return PHP_PUBLIC; } case 249: break; case 37: { return PHP_IF; } case 250: break; case 143: { return PHP_NAMESPACE; } case 251: break; case 88: { return PHP_ARRAY; } case 252: break; case 35: { return PHP_AS; } case 253: break; case 42: { pushState(ST_PHP_IN_SCRIPTING); return PHP_TOKEN; } case 254: break; case 66: { return PHP_ECHO; } case 255: break; case 93: { return PHP_FINAL; } case 256: break; case 153: { return PHP_ENDDECLARE; } case 257: break; case 86: { return PHP_THIS; } case 258: break; case 78: { return PHPDOC_VAR; } case 259: break; case 70: { pushState(ST_PHP_DOC_COMMENT); return PHPDOC_COMMENT_START; } case 260: break; case 24: { return PHP_COMMENT; } case 261: break; case 123: { return PHPDOC_RETURN; } case 262: break; case 21: { //the difference from the original rules comes from the fact that we took ';' out out of tokens return UNKNOWN_TOKEN; } case 263: break; case 114: { return PHPDOC_MAGIC; } case 264: break; case 127: { return PHPDOC_THROWS; } case 265: break; case 61: { int label_len = yylength() - 1; if (yytext().charAt(label_len-1)==';') { label_len--; } if (label_len > heredoc_len && yytext().substring(label_len - heredoc_len,label_len).equals(heredoc)) { if ((label_len - heredoc_len-2) >= 0 && yytext().charAt(label_len - heredoc_len-2)=='\r') { label_len = label_len-2; } else { label_len--; } yypushback(heredoc_len + (yylength() - label_len)); yybegin(ST_PHP_END_HEREDOC); } return PHP_CONSTANT_ENCAPSED_STRING; } case 266: break; case 5: { return PHP_TOKEN; } case 267: break; case 82: { return PHP_CATCH; } case 268: break; case 30: { return PHP_OPERATOR; } case 269: break; case 99: { return PHPDOC_DESC; } case 270: break; case 54: { return PHP_NEW; } case 271: break; case 122: { return PHP__DIR__; } case 272: break; case 135: { return PHP_FUNCTION; } case 273: break; case 63: { yybegin(ST_PHP_HEREDOC); return PHP_CONSTANT_ENCAPSED_STRING; } case 274: break; case 120: { return PHP_FOREACH; } case 275: break; case 138: { return PHPDOC_EXAMPLE; } case 276: break; case 41: { yypushback(1); return PHP_ENCAPSED_AND_WHITESPACE; } case 277: break; case 67: { return PHP_ELSE; } case 278: break; case 47: { int label_len = yylength() - 1; if (yytext().charAt(label_len-1)==';') { label_len--; } if (label_len==nowdoc_len && yytext().substring(0,label_len).equals(nowdoc)) { nowdoc=null; nowdoc_len=0; yybegin(ST_PHP_IN_SCRIPTING); return PHP_HEREDOC_TAG; } else { return PHP_CONSTANT_ENCAPSED_STRING; } } case 279: break; case 129: { return PHPDOC_GLOBAL; } case 280: break; case 74: { return PHP_SELF; } case 281: break; case 7: { return WHITESPACE; } case 282: break; case 105: { return PHP_RETURN; } case 283: break; case 101: { return PHPDOC_USES; } case 284: break; case 165: { return PHP_REQUIRE_ONCE; } case 285: break; case 72: { return PHP_TRUE; } case 286: break; case 142: { return PHP_ENDSWITCH; } case 287: break; case 25: { return PHPDOC_COMMENT; } case 288: break; case 159: { return PHPDOC_COPYRIGHT; } case 289: break; case 13: { if (!phpStack.isEmpty()) { popState(); } return PHP_CURLY_CLOSE; } case 290: break; case 148: { return PHPDOC_CATEGORY; } case 291: break; case 103: { return PHP_ENDFOR; } case 292: break; case 146: { return PHP_PROTECTED; } case 293: break; case 92: { return PHP_FALSE; } case 294: break; case 19: { popState(); return PHP_STRING; } case 295: break; case 164: { return PHPDOC_SUBPACKAGE; } case 296: break; case 59: { return PHP_VAR; } case 297: break; case 104: { return PHP_ELSEIF; } case 298: break; case 119: { return PHP_INCLUDE; } case 299: break; case 145: { return PHP_INSTEADOF; } case 300: break; case 140: { return PHPDOC_PACKAGE; } case 301: break; case 98: { return PHPDOC_NAME; } case 302: break; case 75: { return PHP_LIST; } case 303: break; case 169: { return PHP_HALT_COMPILER; } case 304: break; case 18: { yypushback(1); popState(); } case 305: break; case 124: { return PHPDOC_ACCESS; } case 306: break; case 46: { int label_len = yylength() - 1; if (yytext().charAt(label_len-1)==';') { label_len--; } if (label_len==heredoc_len && yytext().substring(0,label_len).equals(heredoc)) { heredoc=null; heredoc_len=0; yybegin(ST_PHP_IN_SCRIPTING); return PHP_HEREDOC_TAG; } else { return PHP_CONSTANT_ENCAPSED_STRING; } } case 307: break; case 80: { return PHP_EMPTY; } case 308: break; case 139: { return PHPDOC_LICENSE; } case 309: break; case 69: { return PHP_CASE; } case 310: break; case 147: { return PHP__CLASS__; } case 311: break; case 55: { return PHP_DIE; } case 312: break; case 89: { return PHP_ISSET; } case 313: break; case 136: { return PHP__FILE__; } case 314: break; case 71: { return PHP_KEYWORD; } case 315: break; case 161: { return PHPDOC_STATICVAR; } case 316: break; case 108: { return PHP_GLOBAL; } case 317: break; case 51: { popState(); return PHPDOC_COMMENT_END; } case 318: break; case 144: { return PHP_INTERFACE; } case 319: break; case 10: { return PHP_NS_SEPARATOR; } case 320: break; case 77: { return PHPDOC_SEE; } case 321: break; case 100: { return PHPDOC_TODO; } case 322: break; case 23: { popState(); return PHP_TOKEN; } case 323: break; case 8: { return PHP_SEMICOLON; } case 324: break; case 11: { pushState(ST_PHP_BACKQUOTE); return PHP_CONSTANT_ENCAPSED_STRING; } case 325: break; case 128: { return PHPDOC_STATIC; } case 326: break; case 17: { yypushback(1); popState(); } case 327: break; case 26: { String yytext = yytext(); switch (yytext.charAt(yytext.length() - 1)) { case '?': case '%': case '>': yypushback(1); break; default: popState(); } return PHP_LINE_COMMENT; } case 328: break; case 16: { popState(); return PHP_CONSTANT_ENCAPSED_STRING; } case 329: break; case 113: { return PHPDOC_PARAM; } case 330: break; case 20: { /* Offset could be treated as a long */ return PHP_NUMBER; } case 331: break; case 134: { return PHP_ABSTRACT; } case 332: break; case 60: { yypushback(1); pushState(ST_PHP_VAR_OFFSET); return PHP_VARIABLE; } case 333: break; case 53: { if (asp_tags) { return PHP_CLOSETAG; } String text = yytext(); if(text.indexOf('\r') != -1 || text.indexOf('\n') != -1 ){ popState(); } return PHP_LINE_COMMENT; } case 334: break; case 150: { return PHPDOC_INTERNAL; } case 335: break; case 12: { return PHP_CURLY_OPEN; } case 336: break; case 62: { int label_len = yylength() - 1; if (yytext().charAt(label_len-1)==';') { label_len--; } if (label_len > nowdoc_len && yytext().substring(label_len - nowdoc_len,label_len).equals(nowdoc)) { //nowdoc = null; //nowdoc_len = 0; //yypushback(1); //yybegin(ST_PHP_END_NOWDOC); if ((label_len - nowdoc_len-2) >= 0 && yytext().charAt(label_len - nowdoc_len-2)=='\r') { label_len = label_len-2; } else { label_len--; } yypushback(nowdoc_len + (yylength() - label_len)); yybegin(ST_PHP_END_NOWDOC); } return PHP_CONSTANT_ENCAPSED_STRING; } case 337: break; case 141: { return PHPDOC_VERSION; } case 338: break; default: if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { zzAtEOF = true; return null; } else { zzScanError(ZZ_NO_MATCH); } } } } }