source: other-projects/gli-rsyntax-textarea/src/java/org/fife/ui/rsyntaxtextarea/modes/HTMLTokenMaker.java@ 25801

Last change on this file since 25801 was 25801, checked in by ak19, 12 years ago

REGENERATE-FLEX did not correctly handle substitutions yyreset() and zzRefill(). It incorrectly also changed functions that called these files, which we did not want. The revised 'sed' expression now looks for the declaring type information infront of the function names as a way to differeniate these from other locations, which call the function definitions.

File size: 99.4 KB
Line 
1/* The following code was generated by JFlex 1.4.3 on 20/06/12 2:50 PM */
2
3/*
4 * 01/24/2005
5 *
6 * HTMLTokenMaker.java - Generates tokens for HTML syntax highlighting.
7 *
8 * This library is distributed under a modified BSD license. See the included
9 * RSyntaxTextArea.License.txt file for details.
10 */
11package org.fife.ui.rsyntaxtextarea.modes;
12
13import java.io.*;
14import javax.swing.text.Segment;
15
16import org.fife.ui.rsyntaxtextarea.*;
17
18
19/**
20 * Scanner for HTML 5 files.
21 *
22 * This implementation was created using
23 * <a href="http://www.jflex.de/">JFlex</a> 1.4.1; however, the generated file
24 * was modified for performance. Memory allocation needs to be almost
25 * completely removed to be competitive with the handwritten lexers (subclasses
26 * of <code>AbstractTokenMaker</code>, so this class has been modified so that
27 * Strings are never allocated (via yytext()), and the scanner never has to
28 * worry about refilling its buffer (needlessly copying chars around).
29 * We can achieve this because RText always scans exactly 1 line of tokens at a
30 * time, and hands the scanner this line as an array of characters (a Segment
31 * really). Since tokens contain pointers to char arrays instead of Strings
32 * holding their contents, there is no need for allocating new memory for
33 * Strings.<p>
34 *
35 * The actual algorithm generated for scanning has, of course, not been
36 * modified.<p>
37 *
38 * If you wish to regenerate this file yourself, keep in mind the following:
39 * <ul>
40 * <li>The generated HTMLTokenMaker.java</code> file will contain two
41 * definitions of both <code>zzRefill</code> and <code>yyreset</code>.
42 * You should hand-delete the second of each definition (the ones
43 * generated by the lexer), as these generated methods modify the input
44 * buffer, which we'll never have to do.</li>
45 * <li>You should also change the declaration/definition of zzBuffer to NOT
46 * be initialized. This is a needless memory allocation for us since we
47 * will be pointing the array somewhere else anyway.</li>
48 * <li>You should NOT call <code>yylex()</code> on the generated scanner
49 * directly; rather, you should use <code>getTokenList</code> as you would
50 * with any other <code>TokenMaker</code> instance.</li>
51 * </ul>
52 *
53 * @author Robert Futrell
54 * @version 0.8
55 *
56 */
57
58public class HTMLTokenMaker extends AbstractMarkupTokenMaker {
59
60 /** This character denotes the end of file */
61 public static final int YYEOF = -1;
62
63 /** initial size of the lookahead buffer */
64 private static final int ZZ_BUFFERSIZE = 16384;
65
66 /** lexical states */
67 public static final int JS_STRING = 24;
68 public static final int INTAG_CHECK_TAG_NAME = 10;
69 public static final int JS_MLC = 28;
70 public static final int INTAG_SCRIPT = 16;
71 public static final int JS_CHAR = 26;
72 public static final int JS_EOL_COMMENT = 30;
73 public static final int INATTR_DOUBLE_SCRIPT = 18;
74 public static final int INATTR_SINGLE_SCRIPT = 20;
75 public static final int DTD = 6;
76 public static final int INATTR_SINGLE = 14;
77 public static final int INATTR_DOUBLE = 12;
78 public static final int YYINITIAL = 0;
79 public static final int INTAG = 8;
80 public static final int COMMENT = 2;
81 public static final int JAVASCRIPT = 22;
82 public static final int PI = 4;
83
84 /**
85 * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l
86 * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l
87 * at the beginning of a line
88 * l is of the form l = 2*k, k a non negative integer
89 */
90 private static final int ZZ_LEXSTATE[] = {
91 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7,
92 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15
93 };
94
95 /**
96 * Translates characters to character classes
97 */
98 private static final String ZZ_CMAP_PACKED =
99 "\11\0\1\4\1\2\1\0\1\1\1\26\22\0\1\4\1\50\1\7"+
100 "\1\27\1\32\1\47\1\5\1\57\2\56\1\33\1\44\1\43\1\40"+
101 "\1\41\1\10\1\22\6\105\1\24\2\21\1\52\1\6\1\3\1\45"+
102 "\1\17\1\51\1\27\1\70\1\23\1\12\1\76\1\37\1\36\1\100"+
103 "\1\104\1\14\1\106\1\101\1\35\1\74\1\72\1\71\1\15\1\102"+
104 "\1\13\1\11\1\16\1\77\1\103\1\20\1\34\1\73\1\20\1\56"+
105 "\1\30\1\56\1\46\1\31\1\0\1\111\1\107\1\113\1\116\1\66"+
106 "\1\64\1\55\1\60\1\54\1\106\1\112\1\65\1\75\1\115\1\114"+
107 "\1\62\1\102\1\110\1\63\1\61\1\25\1\120\1\67\1\121\1\117"+
108 "\1\122\1\42\1\46\1\42\1\53\uff81\0";
109
110 /**
111 * Translates characters to character classes
112 */
113 private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);
114
115 /**
116 * Translates DFA states to action switch labels.
117 */
118 private static final int [] ZZ_ACTION = zzUnpackAction();
119
120 private static final String ZZ_ACTION_PACKED_0 =
121 "\6\0\2\1\1\0\2\1\5\0\2\2\1\3\1\4"+
122 "\1\5\1\6\1\1\1\7\5\1\1\10\2\1\1\11"+
123 "\1\12\2\13\1\14\1\15\1\16\1\17\1\20\1\21"+
124 "\1\22\1\23\2\21\2\23\1\21\2\23\4\21\1\23"+
125 "\5\21\1\23\1\21\1\1\1\24\1\1\1\25\1\15"+
126 "\1\26\1\27\1\30\1\31\1\32\2\17\1\2\1\33"+
127 "\1\17\2\2\1\17\2\34\1\2\1\31\2\17\1\2"+
128 "\1\35\1\17\2\2\1\36\17\2\1\1\1\37\1\40"+
129 "\1\41\1\1\1\42\1\43\1\44\1\1\1\45\6\1"+
130 "\1\46\1\1\1\4\2\47\1\50\1\51\1\6\5\0"+
131 "\1\52\31\21\1\23\7\21\1\23\5\21\1\23\33\21"+
132 "\1\53\3\0\1\54\1\0\1\55\1\17\1\31\1\2"+
133 "\1\17\1\56\1\34\1\57\1\56\1\57\1\56\1\60"+
134 "\1\56\2\2\1\61\1\2\1\61\47\2\1\61\1\2"+
135 "\1\62\1\63\1\64\1\0\1\65\5\0\1\66\1\47"+
136 "\1\0\1\67\4\0\14\21\1\23\63\21\1\0\1\70"+
137 "\1\0\1\31\1\2\1\57\1\0\2\60\4\2\1\6"+
138 "\57\2\10\0\1\47\1\71\2\0\1\72\20\21\1\23"+
139 "\5\21\1\23\14\21\1\0\1\73\1\31\10\2\1\74"+
140 "\13\2\1\6\1\2\1\75\15\2\1\0\1\1\3\0"+
141 "\1\76\1\0\1\47\2\0\10\21\1\23\13\21\1\0"+
142 "\1\31\5\2\1\61\10\2\1\61\10\2\4\0\1\47"+
143 "\12\21\1\0\1\31\17\2\2\0\1\77\3\21\1\0"+
144 "\7\2\2\0\1\21\1\0\3\2\2\0\1\21\1\100"+
145 "\1\2\1\101\1\102";
146
147 private static int [] zzUnpackAction() {
148 int [] result = new int[615];
149 int offset = 0;
150 offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
151 return result;
152 }
153
154 private static int zzUnpackAction(String packed, int offset, int [] result) {
155 int i = 0; /* index in packed string */
156 int j = offset; /* index in unpacked array */
157 int l = packed.length();
158 while (i < l) {
159 int count = packed.charAt(i++);
160 int value = packed.charAt(i++);
161 do result[j++] = value; while (--count > 0);
162 }
163 return j;
164 }
165
166
167 /**
168 * Translates a state to a row index in the transition table
169 */
170 private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
171
172 private static final String ZZ_ROWMAP_PACKED_0 =
173 "\0\0\0\123\0\246\0\371\0\u014c\0\u019f\0\u01f2\0\u0245"+
174 "\0\u0298\0\u02eb\0\u033e\0\u0391\0\u03e4\0\u0437\0\u048a\0\u04dd"+
175 "\0\u0530\0\u0583\0\u05d6\0\u0629\0\u067c\0\u06cf\0\u0722\0\u05d6"+
176 "\0\u0775\0\u07c8\0\u081b\0\u086e\0\u08c1\0\u05d6\0\u0914\0\u0967"+
177 "\0\u05d6\0\u05d6\0\u09ba\0\u0a0d\0\u05d6\0\u0a60\0\u05d6\0\u05d6"+
178 "\0\u05d6\0\u0ab3\0\u05d6\0\u0b06\0\u0b59\0\u0bac\0\u0bff\0\u0c52"+
179 "\0\u0ca5\0\u0cf8\0\u0d4b\0\u0d9e\0\u0df1\0\u0e44\0\u0e97\0\u0eea"+
180 "\0\u0f3d\0\u0f90\0\u0fe3\0\u1036\0\u1089\0\u0ab3\0\u10dc\0\u112f"+
181 "\0\u05d6\0\u1182\0\u05d6\0\u11d5\0\u05d6\0\u05d6\0\u05d6\0\u1228"+
182 "\0\u05d6\0\u127b\0\u12ce\0\u05d6\0\u05d6\0\u1321\0\u1374\0\u13c7"+
183 "\0\u141a\0\u146d\0\u14c0\0\u1513\0\u05d6\0\u1566\0\u15b9\0\u160c"+
184 "\0\u05d6\0\u165f\0\u16b2\0\u1705\0\u05d6\0\u1758\0\u17ab\0\u17fe"+
185 "\0\u1851\0\u18a4\0\u18f7\0\u194a\0\u199d\0\u19f0\0\u1a43\0\u1a96"+
186 "\0\u1ae9\0\u1b3c\0\u1b8f\0\u1be2\0\u1c35\0\u05d6\0\u05d6\0\u1c88"+
187 "\0\u1cdb\0\u05d6\0\u1c88\0\u05d6\0\u1d2e\0\u05d6\0\u1d81\0\u1dd4"+
188 "\0\u1e27\0\u1e7a\0\u1ecd\0\u1f20\0\u05d6\0\u1f73\0\u1fc6\0\u2019"+
189 "\0\u206c\0\u20bf\0\u05d6\0\u05d6\0\u2112\0\u2165\0\u21b8\0\u220b"+
190 "\0\u225e\0\u05d6\0\u22b1\0\u2304\0\u2357\0\u23aa\0\u23fd\0\u2450"+
191 "\0\u24a3\0\u24f6\0\u2549\0\u259c\0\u25ef\0\u2642\0\u2695\0\u26e8"+
192 "\0\u273b\0\u278e\0\u27e1\0\u2834\0\u2887\0\u28da\0\u292d\0\u2980"+
193 "\0\u29d3\0\u2a26\0\u2a79\0\u2acc\0\u2b1f\0\u2b72\0\u2bc5\0\u2c18"+
194 "\0\u2c6b\0\u2cbe\0\u2d11\0\u2d64\0\u2db7\0\u2e0a\0\u2e5d\0\u2eb0"+
195 "\0\u2f03\0\u2f56\0\u2fa9\0\u2ffc\0\u304f\0\u30a2\0\u30f5\0\u3148"+
196 "\0\u319b\0\u31ee\0\u3241\0\u3294\0\u32e7\0\u333a\0\u338d\0\u33e0"+
197 "\0\u3433\0\u3486\0\u34d9\0\u352c\0\u357f\0\u35d2\0\u3625\0\u3678"+
198 "\0\u36cb\0\u371e\0\u3771\0\u37c4\0\u3817\0\u05d6\0\u1566\0\u386a"+
199 "\0\u38bd\0\u05d6\0\u3910\0\u3963\0\u38bd\0\u39b6\0\u3a09\0\u3a5c"+
200 "\0\u3aaf\0\u3aaf\0\u3aaf\0\u3b02\0\u3b55\0\u3ba8\0\u3bfb\0\u3c4e"+
201 "\0\u3ca1\0\u3cf4\0\u1374\0\u3d47\0\u3d9a\0\u3ded\0\u3e40\0\u3e93"+
202 "\0\u3ee6\0\u3f39\0\u3f8c\0\u3fdf\0\u4032\0\u4085\0\u40d8\0\u412b"+
203 "\0\u417e\0\u41d1\0\u4224\0\u4277\0\u42ca\0\u431d\0\u4370\0\u43c3"+
204 "\0\u4416\0\u4469\0\u44bc\0\u450f\0\u4562\0\u45b5\0\u4608\0\u465b"+
205 "\0\u46ae\0\u4701\0\u4754\0\u47a7\0\u47fa\0\u484d\0\u48a0\0\u48f3"+
206 "\0\u4946\0\u4999\0\u49ec\0\u4a3f\0\u4a92\0\u4ae5\0\u05d6\0\u4b38"+
207 "\0\u4b8b\0\u4bde\0\u05d6\0\u4c31\0\u4c84\0\u4cd7\0\u4d2a\0\u4d7d"+
208 "\0\u1fc6\0\u4dd0\0\u4e23\0\u05d6\0\u4e76\0\u4ec9\0\u4f1c\0\u4f6f"+
209 "\0\u4fc2\0\u5015\0\u5068\0\u50bb\0\u510e\0\u5161\0\u51b4\0\u5207"+
210 "\0\u525a\0\u52ad\0\u5300\0\u5353\0\u53a6\0\u53f9\0\u544c\0\u549f"+
211 "\0\u54f2\0\u5545\0\u5598\0\u55eb\0\u563e\0\u5691\0\u56e4\0\u5737"+
212 "\0\u578a\0\u2d64\0\u57dd\0\u5830\0\u5883\0\u58d6\0\u5929\0\u597c"+
213 "\0\u59cf\0\u5a22\0\u5a75\0\u5ac8\0\u5b1b\0\u5b6e\0\u5bc1\0\u5c14"+
214 "\0\u5c67\0\u0d4b\0\u5cba\0\u5d0d\0\u5d60\0\u5db3\0\u5e06\0\u5e59"+
215 "\0\u5eac\0\u5eff\0\u5f52\0\u5fa5\0\u5ff8\0\u604b\0\u609e\0\u60f1"+
216 "\0\u6144\0\u6197\0\u61ea\0\u623d\0\u6290\0\u62e3\0\u6336\0\u6389"+
217 "\0\u63dc\0\u642f\0\u6482\0\u64d5\0\u6528\0\u657b\0\u65ce\0\u3aaf"+
218 "\0\u6621\0\u6674\0\u66c7\0\u671a\0\u676d\0\u67c0\0\u6813\0\u6866"+
219 "\0\u68b9\0\u690c\0\u695f\0\u69b2\0\u6a05\0\u6a58\0\u6aab\0\u6afe"+
220 "\0\u6b51\0\u6ba4\0\u6bf7\0\u6c4a\0\u6c9d\0\u6cf0\0\u6d43\0\u6d96"+
221 "\0\u6de9\0\u6e3c\0\u6e8f\0\u6ee2\0\u6f35\0\u6f88\0\u6fdb\0\u702e"+
222 "\0\u7081\0\u70d4\0\u7127\0\u717a\0\u71cd\0\u7220\0\u7273\0\u72c6"+
223 "\0\u7319\0\u736c\0\u73bf\0\u7412\0\u7465\0\u74b8\0\u750b\0\u755e"+
224 "\0\u75b1\0\u7604\0\u7657\0\u76aa\0\u76fd\0\u7750\0\u77a3\0\u77f6"+
225 "\0\u7849\0\u789c\0\u78ef\0\u7942\0\u7995\0\u79e8\0\u05d6\0\u7a3b"+
226 "\0\u7a8e\0\u7ae1\0\u7b34\0\u7b87\0\u7bda\0\u7c2d\0\u7c80\0\u7cd3"+
227 "\0\u7d26\0\u7d79\0\u7dcc\0\u7e1f\0\u7e72\0\u7ec5\0\u7f18\0\u7f6b"+
228 "\0\u7fbe\0\u8011\0\u8064\0\u80b7\0\u810a\0\u815d\0\u81b0\0\u8203"+
229 "\0\u5a22\0\u8256\0\u82a9\0\u82fc\0\u834f\0\u83a2\0\u2f56\0\u83f5"+
230 "\0\u8448\0\u849b\0\u84ee\0\u8541\0\u8594\0\u85e7\0\u05d6\0\u863a"+
231 "\0\u868d\0\u86e0\0\u8733\0\u8786\0\u87d9\0\u882c\0\u887f\0\u88d2"+
232 "\0\u1374\0\u8925\0\u8978\0\u89cb\0\u8a1e\0\u8a71\0\u8ac4\0\u8b17"+
233 "\0\u8b6a\0\u8bbd\0\u8c10\0\u8c63\0\u1374\0\u8cb6\0\u1374\0\u8d09"+
234 "\0\u8d5c\0\u8daf\0\u8e02\0\u8e55\0\u8ea8\0\u8efb\0\u8f4e\0\u8fa1"+
235 "\0\u8ff4\0\u9047\0\u909a\0\u90ed\0\u4b8b\0\u05d6\0\u9140\0\u9193"+
236 "\0\u91e6\0\u9239\0\u928c\0\u92df\0\u9332\0\u7ae1\0\u9385\0\u93d8"+
237 "\0\u942b\0\u947e\0\u94d1\0\u9524\0\u9577\0\u95ca\0\u961d\0\u961d"+
238 "\0\u9670\0\u96c3\0\u9716\0\u9769\0\u97bc\0\u980f\0\u9862\0\u98b5"+
239 "\0\u9908\0\u995b\0\u99ae\0\u9a01\0\u9a54\0\u9aa7\0\u9afa\0\u9b4d"+
240 "\0\u9ba0\0\u68b9\0\u9bf3\0\u9c46\0\u9c99\0\u9cec\0\u9d3f\0\u9d92"+
241 "\0\u9de5\0\u9e38\0\u9e8b\0\u9ede\0\u9f31\0\u9f84\0\u9fd7\0\ua02a"+
242 "\0\ua07d\0\ua0d0\0\ua123\0\ua176\0\ua1c9\0\u9239\0\ua21c\0\ua26f"+
243 "\0\ua2c2\0\ua315\0\ua368\0\ua3bb\0\ua40e\0\ua461\0\ua4b4\0\ua507"+
244 "\0\ua55a\0\ua5ad\0\ua600\0\ua653\0\ua6a6\0\ua6f9\0\ua74c\0\ua79f"+
245 "\0\ua7f2\0\ua845\0\ua898\0\ua8eb\0\ua93e\0\ua991\0\ua9e4\0\uaa37"+
246 "\0\uaa8a\0\uaadd\0\uab30\0\uab83\0\uabd6\0\u206c\0\uac29\0\uac7c"+
247 "\0\uaccf\0\uad22\0\uad75\0\uadc8\0\uae1b\0\uae6e\0\uaec1\0\uaf14"+
248 "\0\uaf67\0\uafba\0\ub00d\0\ub060\0\ub0b3\0\ub106\0\ub159\0\ub1ac"+
249 "\0\ub1ff\0\ub252\0\ub2a5\0\u05d6\0\ub2f8\0\u05d6\0\u05d6";
250
251 private static int [] zzUnpackRowMap() {
252 int [] result = new int[615];
253 int offset = 0;
254 offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
255 return result;
256 }
257
258 private static int zzUnpackRowMap(String packed, int offset, int [] result) {
259 int i = 0; /* index in packed string */
260 int j = offset; /* index in unpacked array */
261 int l = packed.length();
262 while (i < l) {
263 int high = packed.charAt(i++) << 16;
264 result[j++] = high | packed.charAt(i++);
265 }
266 return j;
267 }
268
269 /**
270 * The transition table of the DFA
271 */
272 private static final int [] ZZ_TRANS = zzUnpackTrans();
273
274 private static final String ZZ_TRANS_PACKED_0 =
275 "\1\21\1\22\1\23\1\24\1\25\1\26\115\21\2\27"+
276 "\1\30\35\27\1\31\17\27\1\32\3\27\1\33\2\27"+
277 "\1\34\33\27\2\35\1\36\46\35\1\37\51\35\2\40"+
278 "\1\41\14\40\1\42\103\40\1\43\1\44\1\0\1\43"+
279 "\1\25\2\43\1\45\1\46\6\43\1\47\25\43\1\50"+
280 "\11\43\1\51\43\43\2\52\1\0\1\52\1\53\2\52"+
281 "\2\53\1\54\1\55\1\56\1\57\1\60\1\61\1\53"+
282 "\3\52\1\62\1\52\1\63\7\52\1\64\1\65\1\66"+
283 "\5\52\1\53\6\52\1\57\2\52\1\53\1\67\1\61"+
284 "\1\60\1\54\1\65\1\64\1\66\1\52\1\70\1\71"+
285 "\1\72\1\52\2\73\1\74\1\63\1\52\1\75\1\76"+
286 "\1\77\1\67\2\52\1\62\1\56\1\70\1\75\1\55"+
287 "\1\71\1\72\1\74\1\52\1\77\2\52\7\100\1\101"+
288 "\113\100\57\102\1\101\43\102\1\43\1\44\1\0\1\43"+
289 "\1\25\2\43\1\103\1\104\6\43\1\105\25\43\1\50"+
290 "\11\43\1\106\43\43\7\100\1\107\113\100\57\102\1\107"+
291 "\43\102\1\110\1\25\1\111\1\112\1\25\1\113\1\114"+
292 "\1\115\1\116\3\117\1\120\2\117\1\121\1\117\1\122"+
293 "\1\123\1\117\1\122\1\124\1\125\2\110\2\117\1\126"+
294 "\4\117\1\127\1\130\1\131\1\114\1\132\4\126\3\50"+
295 "\1\133\1\134\1\131\1\135\1\117\1\136\1\137\1\140"+
296 "\1\141\1\142\1\143\1\144\2\117\1\145\12\117\1\122"+
297 "\1\117\1\146\1\147\1\150\1\117\1\151\1\117\1\152"+
298 "\1\153\1\117\1\154\2\117\2\155\1\156\4\155\1\157"+
299 "\20\155\1\160\72\155\2\161\1\162\25\161\1\163\26\161"+
300 "\1\164\43\161\2\165\1\166\1\167\27\165\1\170\24\165"+
301 "\1\171\3\165\1\172\2\165\1\173\33\165\2\174\1\175"+
302 "\1\176\54\174\1\171\3\174\1\172\2\174\1\173\33\174"+
303 "\2\21\4\0\116\21\1\22\2\0\1\25\1\0\115\21"+
304 "\133\0\1\177\1\200\5\201\1\0\6\201\6\0\4\201"+
305 "\10\0\1\202\1\203\2\0\2\201\2\0\3\201\1\200"+
306 "\37\201\1\0\1\25\2\0\1\25\116\0\4\26\1\0"+
307 "\1\26\1\204\114\26\2\27\1\0\35\27\1\0\17\27"+
308 "\1\0\3\27\1\0\2\27\1\0\33\27\40\0\1\205"+
309 "\143\0\1\206\115\0\1\207\4\0\1\210\130\0\1\211"+
310 "\33\0\2\35\1\0\46\35\1\0\51\35\17\0\1\212"+
311 "\103\0\2\40\1\0\14\40\1\0\103\40\2\43\1\0"+
312 "\1\43\1\0\2\43\2\0\6\43\1\0\25\43\1\0"+
313 "\11\43\1\0\44\43\1\44\1\0\1\43\1\25\2\43"+
314 "\2\0\6\43\1\0\25\43\1\0\11\43\1\0\43\43"+
315 "\17\0\1\47\103\0\2\52\1\0\1\52\1\0\2\52"+
316 "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\45\52"+
317 "\1\0\1\52\1\0\2\52\2\0\1\52\1\213\2\52"+
318 "\1\214\1\215\1\0\5\52\1\216\11\52\1\217\5\52"+
319 "\1\0\11\52\1\0\1\52\1\215\1\214\3\52\1\217"+
320 "\1\52\1\220\1\221\2\52\2\222\1\52\1\216\11\52"+
321 "\1\220\1\52\1\213\1\221\10\52\1\0\1\52\1\0"+
322 "\2\52\2\0\3\52\1\223\2\52\1\0\17\52\1\224"+
323 "\5\52\1\0\6\52\1\223\2\52\1\0\6\52\1\224"+
324 "\1\52\1\225\1\226\17\52\1\225\2\52\1\226\10\52"+
325 "\1\0\1\52\1\0\2\52\2\0\6\52\1\0\5\52"+
326 "\1\227\17\52\1\0\11\52\1\0\17\52\1\227\25\52"+
327 "\1\0\1\52\1\0\2\52\2\0\1\230\5\52\1\0"+
328 "\15\52\1\231\1\232\6\52\1\0\11\52\1\0\3\52"+
329 "\1\230\1\232\1\231\4\52\1\233\1\52\2\234\17\52"+
330 "\1\233\7\52\1\0\1\52\1\0\2\52\2\0\2\52"+
331 "\1\235\3\52\1\0\15\52\1\236\7\52\1\0\11\52"+
332 "\1\0\5\52\1\236\2\52\1\237\17\52\1\235\1\237"+
333 "\13\52\1\0\1\52\1\0\2\52\2\0\2\52\1\76"+
334 "\1\240\1\52\1\76\1\0\3\52\1\241\12\52\1\242"+
335 "\1\243\5\52\1\0\6\52\1\240\2\52\1\0\1\244"+
336 "\1\76\2\52\1\242\1\52\1\243\1\52\1\245\5\52"+
337 "\1\76\5\52\1\244\2\52\1\241\1\76\1\245\4\52"+
338 "\1\76\6\52\1\0\1\52\1\0\2\52\2\0\2\52"+
339 "\1\76\1\234\2\52\1\0\5\52\1\246\7\52\1\247"+
340 "\7\52\1\0\6\52\1\234\1\250\1\52\1\0\5\52"+
341 "\1\247\2\52\1\251\1\252\4\52\1\253\1\246\1\250"+
342 "\7\52\1\76\1\251\2\52\1\252\1\52\1\253\6\52"+
343 "\1\0\1\52\1\0\2\52\2\0\6\52\1\0\15\52"+
344 "\1\76\7\52\1\0\11\52\1\0\5\52\1\76\37\52"+
345 "\1\0\1\52\1\0\2\52\2\0\3\52\1\254\2\52"+
346 "\1\0\17\52\1\255\5\52\1\0\6\52\1\254\2\52"+
347 "\1\0\6\52\1\255\1\52\1\256\20\52\1\256\13\52"+
348 "\1\0\1\52\1\0\2\52\2\0\2\52\1\257\1\260"+
349 "\2\52\1\0\25\52\1\0\6\52\1\260\2\52\1\0"+
350 "\11\52\1\261\16\52\1\257\3\52\1\261\10\52\1\0"+
351 "\1\52\1\0\2\52\2\0\6\52\1\0\25\52\1\0"+
352 "\11\52\1\0\14\52\2\262\5\52\1\263\14\52\1\263"+
353 "\4\52\1\0\1\52\1\0\2\52\2\0\2\52\1\76"+
354 "\2\52\1\264\1\0\17\52\1\265\5\52\1\0\11\52"+
355 "\1\0\1\52\1\264\4\52\1\265\16\52\1\76\2\52"+
356 "\1\76\14\52\1\0\1\52\1\0\2\52\2\0\1\266"+
357 "\1\267\1\270\1\52\1\271\1\52\1\0\3\52\1\272"+
358 "\1\52\1\273\17\52\1\0\11\52\1\0\2\52\1\271"+
359 "\1\266\12\52\1\274\1\273\7\52\1\272\1\270\2\52"+
360 "\1\267\2\52\1\274\6\52\1\0\1\52\1\0\2\52"+
361 "\2\0\4\52\1\275\1\52\1\0\3\52\1\276\1\52"+
362 "\1\277\7\52\1\76\7\52\1\0\11\52\1\0\2\52"+
363 "\1\275\2\52\1\76\11\52\1\277\7\52\1\276\15\52"+
364 "\1\0\1\52\1\0\2\52\2\0\6\52\1\0\17\52"+
365 "\1\300\5\52\1\0\11\52\1\0\6\52\1\300\1\52"+
366 "\1\301\1\302\17\52\1\301\2\52\1\302\10\52\1\0"+
367 "\1\52\1\0\2\52\2\0\6\52\1\0\5\52\1\303"+
368 "\11\52\1\304\5\52\1\0\11\52\1\0\6\52\1\304"+
369 "\1\52\1\305\6\52\1\303\11\52\1\305\13\52\1\0"+
370 "\1\52\1\0\2\52\2\0\3\52\1\306\1\52\1\76"+
371 "\1\0\15\52\1\76\1\307\1\310\5\52\1\0\6\52"+
372 "\1\306\2\52\1\0\1\52\1\76\2\52\1\307\1\76"+
373 "\1\310\1\52\1\311\5\52\1\76\12\52\1\311\4\52"+
374 "\1\76\6\52\1\0\1\52\1\0\2\52\2\0\6\52"+
375 "\1\0\3\52\1\312\13\52\1\313\5\52\1\0\11\52"+
376 "\1\0\6\52\1\313\20\52\1\312\15\52\1\0\1\52"+
377 "\1\0\2\52\2\0\3\52\1\314\2\52\1\0\25\52"+
378 "\1\0\6\52\1\314\2\52\1\0\10\52\1\315\20\52"+
379 "\1\315\11\52\7\100\1\0\113\100\57\102\1\0\43\102"+
380 "\17\0\1\316\103\0\1\110\10\0\6\110\1\0\6\110"+
381 "\1\0\4\110\1\0\4\110\14\0\2\110\2\0\43\110"+
382 "\3\0\1\317\4\0\1\320\34\0\1\50\62\0\1\50"+
383 "\37\0\1\50\55\0\10\321\1\322\17\321\1\323\2\321"+
384 "\1\324\11\321\1\325\55\321\1\110\10\0\6\117\1\0"+
385 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
386 "\2\117\2\0\43\117\1\110\10\0\6\117\1\0\6\117"+
387 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
388 "\2\0\35\117\1\327\5\117\17\0\1\330\25\0\1\50"+
389 "\55\0\1\331\10\0\6\331\1\0\1\331\2\122\1\331"+
390 "\1\122\1\331\1\0\4\331\1\0\1\331\1\332\1\333"+
391 "\1\334\1\0\1\335\12\0\2\331\2\0\4\331\1\333"+
392 "\1\332\1\334\7\331\1\333\6\331\1\122\10\331\1\333"+
393 "\5\331\10\0\6\331\1\0\1\331\1\336\1\337\1\331"+
394 "\1\337\1\331\1\0\4\331\1\0\1\340\1\332\1\333"+
395 "\1\334\1\0\1\335\12\0\2\331\2\0\4\331\1\333"+
396 "\1\332\1\334\7\331\1\333\6\331\1\337\10\331\1\333"+
397 "\2\331\1\340\1\331\1\110\10\0\6\117\1\0\6\117"+
398 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
399 "\2\0\35\117\1\341\5\117\45\0\1\50\115\0\1\50"+
400 "\4\0\1\50\76\0\2\335\1\0\1\335\60\0\1\335"+
401 "\61\0\2\50\55\0\1\110\10\0\6\117\1\0\6\117"+
402 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
403 "\2\0\3\117\1\342\1\343\10\117\1\344\17\117\1\345"+
404 "\5\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
405 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\34\117"+
406 "\1\346\6\117\1\110\10\0\6\117\1\0\6\117\1\0"+
407 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
408 "\1\347\27\117\1\350\6\117\1\351\3\117\1\110\10\0"+
409 "\6\117\1\0\5\117\1\352\1\0\1\110\1\326\2\117"+
410 "\1\0\4\117\14\0\2\117\2\0\30\117\1\353\1\354"+
411 "\11\117\1\110\10\0\6\117\1\0\5\117\1\355\1\0"+
412 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
413 "\1\356\1\357\5\117\1\360\27\117\1\361\3\117\1\110"+
414 "\10\0\6\117\1\0\5\117\1\362\1\0\1\110\1\326"+
415 "\2\117\1\0\4\117\14\0\1\363\1\117\2\0\5\117"+
416 "\1\364\23\117\1\365\2\117\1\366\6\117\1\110\10\0"+
417 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
418 "\4\117\14\0\2\117\2\0\34\117\1\367\6\117\1\110"+
419 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
420 "\1\0\4\117\14\0\2\117\2\0\3\117\1\370\1\117"+
421 "\1\371\27\117\1\372\2\117\1\373\1\374\1\117\1\110"+
422 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
423 "\1\0\4\117\14\0\1\375\1\117\2\0\1\376\42\117"+
424 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
425 "\2\117\1\0\4\117\14\0\2\117\2\0\31\117\1\377"+
426 "\11\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
427 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\30\117"+
428 "\1\u0100\3\117\1\u0101\2\117\1\u0102\3\117\1\110\10\0"+
429 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
430 "\4\117\14\0\2\117\2\0\6\117\1\u0103\34\117\1\110"+
431 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
432 "\1\0\4\117\14\0\2\117\2\0\27\117\1\u0104\13\117"+
433 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
434 "\2\117\1\0\4\117\14\0\2\117\2\0\1\u0105\4\117"+
435 "\1\u0106\23\117\1\u0107\2\117\1\u0108\6\117\1\110\10\0"+
436 "\6\117\1\0\5\117\1\u0109\1\0\1\110\1\326\2\117"+
437 "\1\0\4\117\14\0\2\117\2\0\6\117\1\u010a\22\117"+
438 "\1\u010b\11\117\1\110\10\0\6\117\1\0\6\117\1\0"+
439 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
440 "\6\117\1\u010c\25\117\1\u010d\6\117\1\110\10\0\6\117"+
441 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
442 "\14\0\2\117\2\0\31\117\1\366\2\117\1\u010e\6\117"+
443 "\2\155\1\0\4\155\1\0\20\155\1\0\72\155\2\u010f"+
444 "\1\0\22\u010f\1\u0110\73\u010f\1\u0111\1\u010f\2\161\1\0"+
445 "\25\161\1\0\26\161\1\0\43\161\2\165\2\0\27\165"+
446 "\1\0\24\165\1\0\3\165\1\0\2\165\1\0\33\165"+
447 "\10\0\1\u0112\122\0\1\u0113\173\0\1\u0114\115\0\1\u0115"+
448 "\4\0\1\u0116\130\0\1\u0117\33\0\2\174\2\0\54\174"+
449 "\1\0\3\174\1\0\2\174\1\0\33\174\10\0\1\u0118"+
450 "\123\0\6\u0119\1\0\6\u0119\6\0\4\u0119\14\0\2\u0119"+
451 "\2\0\43\u0119\11\0\1\201\1\u011a\4\201\1\0\6\201"+
452 "\6\0\4\201\14\0\2\201\2\0\33\201\1\u011a\7\201"+
453 "\11\0\6\201\1\0\6\201\6\0\4\201\14\0\2\201"+
454 "\2\0\43\201\40\0\1\u011b\101\0\1\u011c\164\0\1\u011d"+
455 "\126\0\1\u011e\117\0\1\u011f\127\0\1\u0120\33\0\2\52"+
456 "\1\0\1\52\1\0\2\52\2\0\2\52\1\u0121\3\52"+
457 "\1\0\25\52\1\0\11\52\1\0\30\52\1\u0121\14\52"+
458 "\1\0\1\52\1\0\2\52\2\0\6\52\1\0\25\52"+
459 "\1\0\11\52\1\0\10\52\1\u0122\20\52\1\u0122\13\52"+
460 "\1\0\1\52\1\0\2\52\2\0\2\52\1\u0123\3\52"+
461 "\1\0\25\52\1\0\11\52\1\0\13\52\1\227\14\52"+
462 "\1\u0123\6\52\1\227\5\52\1\0\1\52\1\0\2\52"+
463 "\2\0\4\52\1\76\1\52\1\0\3\52\1\76\21\52"+
464 "\1\0\11\52\1\0\2\52\1\76\24\52\1\76\15\52"+
465 "\1\0\1\52\1\0\2\52\2\0\1\52\1\u0124\1\u0125"+
466 "\3\52\1\0\15\52\1\u0126\7\52\1\0\11\52\1\0"+
467 "\5\52\1\u0126\22\52\1\u0125\2\52\1\u0124\11\52\1\0"+
468 "\1\52\1\0\2\52\2\0\6\52\1\0\25\52\1\0"+
469 "\11\52\1\0\14\52\2\u0127\27\52\1\0\1\52\1\0"+
470 "\2\52\2\0\6\52\1\0\5\52\1\u0128\17\52\1\0"+
471 "\11\52\1\0\17\52\1\u0128\25\52\1\0\1\52\1\0"+
472 "\2\52\2\0\6\52\1\0\25\52\1\0\11\52\1\0"+
473 "\10\52\1\u0129\20\52\1\u0129\13\52\1\0\1\52\1\0"+
474 "\2\52\2\0\5\52\1\u012a\1\0\25\52\1\0\11\52"+
475 "\1\0\1\52\1\u012a\43\52\1\0\1\52\1\0\2\52"+
476 "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\12\52"+
477 "\1\u012b\22\52\1\u012b\7\52\1\0\1\52\1\0\2\52"+
478 "\2\0\4\52\1\u0124\1\52\1\0\25\52\1\0\11\52"+
479 "\1\0\2\52\1\u0124\7\52\1\u012c\22\52\1\u012c\7\52"+
480 "\1\0\1\52\1\0\2\52\2\0\6\52\1\0\15\52"+
481 "\1\u012d\7\52\1\0\11\52\1\0\5\52\1\u012d\6\52"+
482 "\2\u012e\1\u012a\17\52\1\u012a\6\52\1\0\1\52\1\0"+
483 "\2\52\2\0\6\52\1\0\15\52\1\u012a\7\52\1\0"+
484 "\11\52\1\0\5\52\1\u012a\37\52\1\0\1\52\1\0"+
485 "\2\52\2\0\3\52\1\u012f\2\52\1\0\25\52\1\0"+
486 "\6\52\1\u012f\2\52\1\0\45\52\1\0\1\52\1\0"+
487 "\2\52\2\0\6\52\1\0\25\52\1\0\11\52\1\0"+
488 "\10\52\1\u0130\20\52\1\u0130\13\52\1\0\1\52\1\0"+
489 "\2\52\2\0\2\52\1\u0131\3\52\1\0\25\52\1\0"+
490 "\11\52\1\0\30\52\1\u0131\14\52\1\0\1\52\1\0"+
491 "\2\52\2\0\1\76\3\52\1\u0132\1\52\1\0\25\52"+
492 "\1\0\11\52\1\0\2\52\1\u0132\1\76\41\52\1\0"+
493 "\1\52\1\0\2\52\2\0\6\52\1\0\25\52\1\0"+
494 "\7\52\1\76\1\52\1\0\20\52\1\76\24\52\1\0"+
495 "\1\52\1\0\2\52\2\0\6\52\1\0\17\52\1\76"+
496 "\5\52\1\0\11\52\1\0\6\52\1\76\2\52\1\u0133"+
497 "\22\52\1\u0133\10\52\1\0\1\52\1\0\2\52\2\0"+
498 "\6\52\1\0\25\52\1\0\11\52\1\0\10\52\1\u0134"+
499 "\20\52\1\u0134\13\52\1\0\1\52\1\0\2\52\2\0"+
500 "\2\52\1\u0135\3\52\1\0\25\52\1\0\11\52\1\0"+
501 "\30\52\1\u0135\14\52\1\0\1\52\1\0\2\52\2\0"+
502 "\5\52\1\227\1\0\25\52\1\0\11\52\1\0\1\52"+
503 "\1\227\12\52\2\u012a\27\52\1\0\1\52\1\0\2\52"+
504 "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\11\52"+
505 "\1\252\22\52\1\252\10\52\1\0\1\52\1\0\2\52"+
506 "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\11\52"+
507 "\1\u0136\22\52\1\u0136\10\52\1\0\1\52\1\0\2\52"+
508 "\2\0\6\52\1\0\14\52\1\u0137\10\52\1\0\11\52"+
509 "\1\0\41\52\1\u0137\3\52\1\0\1\52\1\0\2\52"+
510 "\2\0\6\52\1\0\17\52\1\u0138\5\52\1\0\11\52"+
511 "\1\0\6\52\1\u0138\36\52\1\0\1\52\1\0\2\52"+
512 "\2\0\6\52\1\0\3\52\1\227\21\52\1\0\11\52"+
513 "\1\0\27\52\1\227\15\52\1\0\1\52\1\0\2\52"+
514 "\2\0\5\52\1\u0139\1\0\25\52\1\0\11\52\1\0"+
515 "\1\52\1\u0139\43\52\1\0\1\52\1\0\2\52\2\0"+
516 "\3\52\1\u013a\2\52\1\0\25\52\1\0\6\52\1\u013a"+
517 "\2\52\1\0\11\52\1\u013b\22\52\1\u013b\10\52\1\0"+
518 "\1\52\1\0\2\52\2\0\1\u013c\5\52\1\0\25\52"+
519 "\1\0\11\52\1\0\3\52\1\u013c\41\52\1\0\1\52"+
520 "\1\0\2\52\2\0\1\u013d\5\52\1\0\25\52\1\0"+
521 "\11\52\1\0\3\52\1\u013d\41\52\1\0\1\52\1\0"+
522 "\2\52\2\0\6\52\1\0\25\52\1\0\11\52\1\0"+
523 "\16\52\1\u013e\17\52\1\u013e\6\52\1\0\1\52\1\0"+
524 "\2\52\2\0\6\52\1\0\25\52\1\0\11\52\1\0"+
525 "\11\52\1\76\22\52\1\76\10\52\1\0\1\52\1\0"+
526 "\2\52\2\0\6\52\1\0\25\52\1\0\11\52\1\0"+
527 "\12\52\1\u013f\22\52\1\u013f\7\52\1\0\1\52\1\0"+
528 "\2\52\2\0\6\52\1\0\25\52\1\0\7\52\1\u0140"+
529 "\1\52\1\0\20\52\1\u0140\24\52\1\0\1\52\1\0"+
530 "\2\52\2\0\6\52\1\0\3\52\1\u0141\21\52\1\0"+
531 "\11\52\1\0\13\52\1\u0142\13\52\1\u0141\7\52\1\u0142"+
532 "\5\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
533 "\25\52\1\0\11\52\1\0\10\52\1\u0143\20\52\1\u0143"+
534 "\13\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
535 "\17\52\1\u0144\5\52\1\0\7\52\1\u0145\1\52\1\0"+
536 "\6\52\1\u0144\11\52\1\u0145\24\52\1\0\1\52\1\0"+
537 "\2\52\2\0\2\52\1\u0146\3\52\1\0\25\52\1\0"+
538 "\11\52\1\0\11\52\1\u012b\1\u0147\15\52\1\u0146\3\52"+
539 "\1\u012b\1\u0147\7\52\1\0\1\52\1\0\2\52\2\0"+
540 "\6\52\1\0\3\52\1\u0148\21\52\1\0\11\52\1\0"+
541 "\27\52\1\u0148\15\52\1\0\1\52\1\0\2\52\2\0"+
542 "\6\52\1\0\17\52\1\u0149\5\52\1\0\11\52\1\0"+
543 "\6\52\1\u0149\36\52\1\0\1\52\1\0\2\52\2\0"+
544 "\6\52\1\0\25\52\1\0\11\52\1\0\14\52\2\u014a"+
545 "\27\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
546 "\25\52\1\0\11\52\1\0\10\52\1\u014b\20\52\1\u014b"+
547 "\13\52\1\0\1\52\1\0\2\52\2\0\3\52\1\u014c"+
548 "\2\52\1\0\25\52\1\0\6\52\1\u014c\2\52\1\0"+
549 "\45\52\1\0\1\52\1\0\2\52\2\0\2\52\1\u014d"+
550 "\3\52\1\0\25\52\1\0\11\52\1\0\30\52\1\u014d"+
551 "\14\52\1\0\1\52\1\0\2\52\2\0\5\52\1\u014e"+
552 "\1\0\17\52\1\u014f\5\52\1\0\11\52\1\0\1\52"+
553 "\1\u014e\4\52\1\u014f\36\52\1\0\1\52\1\0\2\52"+
554 "\2\0\4\52\1\u0150\1\52\1\0\25\52\1\0\11\52"+
555 "\1\0\2\52\1\u0150\42\52\1\0\1\52\1\0\2\52"+
556 "\2\0\6\52\1\0\3\52\1\315\21\52\1\0\11\52"+
557 "\1\0\27\52\1\315\15\52\1\0\1\52\1\0\2\52"+
558 "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\16\52"+
559 "\1\u0151\17\52\1\u0151\6\52\1\0\1\52\1\0\2\52"+
560 "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\16\52"+
561 "\1\u0152\17\52\1\u0152\6\52\1\0\1\52\1\0\2\52"+
562 "\2\0\5\52\1\u0153\1\0\25\52\1\0\11\52\1\0"+
563 "\1\52\1\u0153\43\52\1\0\1\52\1\0\2\52\2\0"+
564 "\6\52\1\0\25\52\1\0\11\52\1\0\26\52\1\u0126"+
565 "\16\52\1\0\1\52\1\0\2\52\2\0\5\52\1\u0154"+
566 "\1\0\25\52\1\0\11\52\1\0\1\52\1\u0154\43\52"+
567 "\1\0\1\52\1\0\2\52\2\0\1\u0147\5\52\1\0"+
568 "\25\52\1\0\11\52\1\0\3\52\1\u0147\41\52\1\0"+
569 "\1\52\1\0\2\52\2\0\6\52\1\0\25\52\1\0"+
570 "\11\52\1\0\23\52\1\76\14\52\1\76\4\52\1\0"+
571 "\1\52\1\0\2\52\2\0\1\u0155\5\52\1\0\3\52"+
572 "\1\315\11\52\1\231\1\u0156\1\u0157\5\52\1\0\11\52"+
573 "\1\0\3\52\1\u0155\1\u0156\1\231\1\u0157\20\52\1\315"+
574 "\15\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
575 "\15\52\1\u0158\7\52\1\0\11\52\1\0\5\52\1\u0158"+
576 "\37\52\1\0\1\52\1\0\2\52\2\0\5\52\1\u0159"+
577 "\1\0\25\52\1\0\11\52\1\0\1\52\1\u0159\10\52"+
578 "\1\u015a\22\52\1\u015a\7\52\1\0\1\52\1\0\2\52"+
579 "\2\0\2\52\1\u015b\1\52\1\76\1\52\1\0\25\52"+
580 "\1\0\11\52\1\0\2\52\1\76\25\52\1\u015b\14\52"+
581 "\1\0\1\52\1\0\2\52\2\0\2\52\1\76\3\52"+
582 "\1\0\25\52\1\0\11\52\1\0\10\52\1\u015c\12\52"+
583 "\1\76\4\52\1\76\1\u015c\6\52\1\76\4\52\1\0"+
584 "\1\52\1\0\2\52\2\0\6\52\1\0\25\52\1\0"+
585 "\11\52\1\0\12\52\1\76\22\52\1\76\7\52\1\0"+
586 "\1\52\1\0\2\52\2\0\5\52\1\u015d\1\0\15\52"+
587 "\1\76\7\52\1\0\11\52\1\0\1\52\1\u015d\3\52"+
588 "\1\76\37\52\1\0\1\52\1\0\2\52\2\0\5\52"+
589 "\1\u015e\1\0\25\52\1\0\11\52\1\0\1\52\1\u015e"+
590 "\43\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
591 "\25\52\1\0\11\52\1\0\16\52\1\76\17\52\1\76"+
592 "\6\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
593 "\25\52\1\0\11\52\1\0\13\52\1\u015f\23\52\1\u015f"+
594 "\5\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
595 "\25\52\1\0\11\52\1\0\16\52\1\u0160\17\52\1\u0160"+
596 "\6\52\1\0\1\52\1\0\2\52\2\0\2\52\1\76"+
597 "\3\52\1\0\25\52\1\0\11\52\1\0\30\52\1\76"+
598 "\12\52\11\0\1\u0161\51\0\1\u0161\37\0\10\321\1\u0162"+
599 "\17\321\1\323\74\321\1\0\120\321\33\0\1\u0163\67\0"+
600 "\1\110\10\0\6\110\1\0\5\110\1\u0164\1\0\4\110"+
601 "\1\0\4\110\14\0\2\110\2\0\44\110\10\0\6\117"+
602 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
603 "\14\0\2\117\2\0\4\117\1\u0165\36\117\17\0\1\126"+
604 "\25\0\1\50\55\0\1\331\10\0\6\331\1\0\6\331"+
605 "\1\0\4\331\1\0\4\331\14\0\2\331\2\0\44\331"+
606 "\10\0\6\331\1\0\1\331\2\u0166\1\331\1\u0166\1\331"+
607 "\1\0\4\331\1\0\4\331\1\u0167\3\0\1\u0167\7\0"+
608 "\2\331\2\0\25\331\1\u0166\16\331\10\0\6\331\1\0"+
609 "\1\331\2\335\1\331\1\335\1\331\1\0\4\331\1\0"+
610 "\2\331\1\333\1\334\14\0\2\331\2\0\4\331\1\333"+
611 "\1\331\1\334\7\331\1\333\6\331\1\335\10\331\1\333"+
612 "\5\331\10\0\6\331\1\0\1\331\2\336\1\331\1\336"+
613 "\1\331\1\0\4\331\1\0\2\331\1\333\1\334\1\0"+
614 "\1\335\12\0\2\331\2\0\4\331\1\333\1\331\1\334"+
615 "\7\331\1\333\6\331\1\336\10\331\1\333\5\331\10\0"+
616 "\6\331\1\0\1\331\1\336\1\337\1\331\1\337\1\331"+
617 "\1\0\4\331\1\0\1\331\1\u0168\1\333\1\334\1\0"+
618 "\1\335\12\0\2\331\2\0\4\331\1\333\1\u0168\1\334"+
619 "\7\331\1\333\6\331\1\337\10\331\1\333\5\331\10\0"+
620 "\1\331\1\u0169\4\331\1\0\1\331\4\u0169\1\331\1\0"+
621 "\4\331\1\0\2\331\2\u0169\14\0\2\331\2\0\4\331"+
622 "\1\u0169\1\331\1\u0169\1\331\1\u0169\5\331\1\u0169\6\331"+
623 "\1\u0169\1\331\1\u0169\1\331\1\u0169\1\331\1\u0169\2\331"+
624 "\1\u0169\4\331\1\110\10\0\6\117\1\0\6\117\1\0"+
625 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
626 "\6\117\1\u016a\34\117\1\110\10\0\6\117\1\0\6\117"+
627 "\1\0\1\110\1\326\2\117\1\0\2\117\1\u016b\1\117"+
628 "\14\0\2\117\2\0\12\117\1\u016c\30\117\1\110\10\0"+
629 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
630 "\4\117\14\0\2\117\2\0\2\117\1\u016d\40\117\1\110"+
631 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
632 "\1\0\4\117\14\0\2\117\2\0\1\117\1\u016e\1\117"+
633 "\1\u016f\37\117\1\110\10\0\6\117\1\0\6\117\1\0"+
634 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
635 "\1\117\1\u0170\41\117\1\110\10\0\6\117\1\0\6\117"+
636 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\1\u0171"+
637 "\1\117\2\0\30\117\1\u0172\12\117\1\110\10\0\6\117"+
638 "\1\0\5\117\1\u0173\1\0\1\110\1\326\2\117\1\0"+
639 "\4\117\14\0\2\117\2\0\31\117\1\u0174\5\117\1\343"+
640 "\3\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
641 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\2\117"+
642 "\1\u0175\40\117\1\110\10\0\6\117\1\0\6\117\1\0"+
643 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
644 "\27\117\1\u0176\13\117\1\110\10\0\6\117\1\0\6\117"+
645 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\1\u0177"+
646 "\1\117\2\0\34\117\1\u0178\6\117\1\110\10\0\6\117"+
647 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
648 "\14\0\2\117\2\0\30\117\1\u0179\2\117\1\u017a\7\117"+
649 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
650 "\2\117\1\0\4\117\14\0\2\117\2\0\2\117\1\u017b"+
651 "\40\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
652 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\34\117"+
653 "\1\u017c\6\117\1\110\10\0\6\117\1\0\6\117\1\0"+
654 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
655 "\31\117\1\u017d\11\117\1\110\10\0\6\117\1\0\6\117"+
656 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\1\u017e"+
657 "\1\117\2\0\43\117\1\110\10\0\6\117\1\0\6\117"+
658 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
659 "\2\0\35\117\1\u017f\5\117\1\110\10\0\6\117\1\0"+
660 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
661 "\2\117\2\0\35\117\1\u0180\5\117\1\110\10\0\6\117"+
662 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
663 "\14\0\2\117\2\0\35\117\1\u0181\5\117\1\110\10\0"+
664 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
665 "\4\117\14\0\2\117\2\0\34\117\1\u0182\6\117\1\110"+
666 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
667 "\1\0\4\117\14\0\2\117\2\0\5\117\1\u0183\35\117"+
668 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
669 "\2\117\1\0\4\117\14\0\2\117\2\0\30\117\1\343"+
670 "\12\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
671 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\35\117"+
672 "\1\u0184\5\117\1\110\10\0\6\117\1\0\6\117\1\0"+
673 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
674 "\33\117\1\u0185\7\117\1\110\10\0\6\117\1\0\6\117"+
675 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
676 "\2\0\3\117\1\u0186\37\117\1\110\10\0\6\117\1\0"+
677 "\5\117\1\u0187\1\0\1\110\1\326\2\117\1\0\4\117"+
678 "\14\0\2\117\2\0\43\117\1\110\10\0\6\117\1\0"+
679 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
680 "\2\117\2\0\31\117\1\u0188\11\117\1\110\10\0\6\117"+
681 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
682 "\14\0\2\117\2\0\1\117\1\u0189\1\u018a\40\117\1\110"+
683 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
684 "\1\0\4\117\14\0\2\117\2\0\1\117\1\u018b\41\117"+
685 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
686 "\2\117\1\0\4\117\14\0\1\u018c\1\117\2\0\43\117"+
687 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
688 "\2\117\1\0\4\117\14\0\2\117\2\0\12\117\1\343"+
689 "\30\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
690 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\6\117"+
691 "\1\u018d\34\117\1\110\10\0\6\117\1\0\6\117\1\0"+
692 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
693 "\34\117\1\u018e\6\117\1\110\10\0\6\117\1\0\6\117"+
694 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
695 "\2\0\1\117\1\u018f\41\117\1\110\10\0\6\117\1\0"+
696 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
697 "\2\117\2\0\1\117\1\u0190\41\117\1\110\10\0\6\117"+
698 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
699 "\14\0\2\117\2\0\3\117\1\u0191\37\117\1\110\10\0"+
700 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
701 "\4\117\14\0\2\117\2\0\31\117\1\u0192\11\117\1\110"+
702 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
703 "\1\0\4\117\14\0\2\117\2\0\31\117\1\u0193\11\117"+
704 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
705 "\2\117\1\0\4\117\14\0\2\117\2\0\1\117\1\u0194"+
706 "\1\117\1\u0186\37\117\1\110\10\0\6\117\1\0\6\117"+
707 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
708 "\2\0\35\117\1\u0195\5\117\1\110\10\0\6\117\1\0"+
709 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
710 "\2\117\2\0\5\117\1\u0196\35\117\1\110\10\0\6\117"+
711 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
712 "\14\0\2\117\2\0\7\117\1\343\33\117\1\110\10\0"+
713 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
714 "\4\117\14\0\2\117\2\0\1\117\1\u0197\41\117\1\110"+
715 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
716 "\1\0\4\117\14\0\2\117\2\0\4\117\1\u0198\1\u0199"+
717 "\21\117\1\u019a\13\117\1\110\10\0\6\117\1\0\5\117"+
718 "\1\u019b\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
719 "\2\117\2\0\43\117\1\110\10\0\6\117\1\0\6\117"+
720 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\1\u019c"+
721 "\1\117\2\0\5\117\1\u019d\35\117\12\0\1\u019e\6\0"+
722 "\4\u019e\11\0\2\u019e\24\0\1\u019e\1\0\1\u019e\1\0"+
723 "\1\u019e\5\0\1\u019e\6\0\1\u019e\1\0\1\u019e\1\0"+
724 "\1\u019e\1\0\1\u019e\2\0\1\u019e\16\0\1\u019f\6\0"+
725 "\4\u019f\11\0\2\u019f\24\0\1\u019f\1\0\1\u019f\1\0"+
726 "\1\u019f\5\0\1\u019f\6\0\1\u019f\1\0\1\u019f\1\0"+
727 "\1\u019f\1\0\1\u019f\2\0\1\u019f\15\0\1\u01a0\51\0"+
728 "\1\u01a0\120\0\1\u01a1\126\0\1\u01a2\117\0\1\u01a3\127\0"+
729 "\1\u01a4\44\0\1\u01a5\51\0\1\u01a5\50\0\2\201\1\u01a6"+
730 "\3\201\1\0\6\201\6\0\4\201\14\0\2\201\2\0"+
731 "\30\201\1\u01a6\12\201\40\0\1\u01a7\144\0\1\u01a8\126\0"+
732 "\1\u011f\106\0\1\u01a9\111\0\1\u01aa\61\0\2\52\1\0"+
733 "\1\52\1\0\2\52\2\0\3\52\1\u01ab\2\52\1\0"+
734 "\25\52\1\0\6\52\1\u01ab\2\52\1\0\45\52\1\0"+
735 "\1\52\1\0\2\52\2\0\1\52\1\u0142\4\52\1\0"+
736 "\25\52\1\0\11\52\1\0\12\52\1\76\20\52\1\u0142"+
737 "\1\52\1\76\7\52\1\0\1\52\1\0\2\52\2\0"+
738 "\3\52\1\u01ac\2\52\1\0\25\52\1\0\6\52\1\u01ac"+
739 "\2\52\1\0\11\52\1\u01ad\22\52\1\u01ad\10\52\1\0"+
740 "\1\52\1\0\2\52\2\0\5\52\1\u01ae\1\0\25\52"+
741 "\1\0\11\52\1\0\1\52\1\u01ae\43\52\1\0\1\52"+
742 "\1\0\2\52\2\0\6\52\1\0\25\52\1\0\11\52"+
743 "\1\0\23\52\1\u0142\14\52\1\u0142\4\52\1\0\1\52"+
744 "\1\0\2\52\2\0\6\52\1\0\17\52\1\u01af\5\52"+
745 "\1\0\11\52\1\0\6\52\1\u01af\36\52\1\0\1\52"+
746 "\1\0\2\52\2\0\4\52\1\76\1\52\1\0\25\52"+
747 "\1\0\11\52\1\0\2\52\1\76\42\52\1\0\1\52"+
748 "\1\0\2\52\2\0\2\52\1\u01b0\3\52\1\0\25\52"+
749 "\1\0\11\52\1\0\30\52\1\u01b0\14\52\1\0\1\52"+
750 "\1\0\2\52\2\0\6\52\1\0\15\52\1\u014a\7\52"+
751 "\1\0\11\52\1\0\5\52\1\u014a\37\52\1\0\1\52"+
752 "\1\0\2\52\2\0\6\52\1\0\17\52\1\76\5\52"+
753 "\1\0\11\52\1\0\6\52\1\76\36\52\1\0\1\52"+
754 "\1\0\2\52\2\0\5\52\1\u0142\1\0\25\52\1\0"+
755 "\11\52\1\0\1\52\1\u0142\43\52\1\0\1\52\1\0"+
756 "\2\52\2\0\6\52\1\0\25\52\1\0\11\52\1\0"+
757 "\23\52\1\u01b1\14\52\1\u01b1\4\52\1\0\1\52\1\0"+
758 "\2\52\2\0\6\52\1\0\25\52\1\0\7\52\1\u01b2"+
759 "\1\52\1\0\20\52\1\u01b2\24\52\1\0\1\52\1\0"+
760 "\2\52\2\0\6\52\1\0\25\52\1\0\11\52\1\0"+
761 "\14\52\2\u01b3\27\52\1\0\1\52\1\0\2\52\2\0"+
762 "\6\52\1\0\25\52\1\0\11\52\1\0\12\52\1\u01b4"+
763 "\22\52\1\u01b4\7\52\1\0\1\52\1\0\2\52\2\0"+
764 "\6\52\1\0\25\52\1\0\11\52\1\0\13\52\1\u0142"+
765 "\23\52\1\u0142\5\52\1\0\1\52\1\0\2\52\2\0"+
766 "\6\52\1\0\25\52\1\0\11\52\1\0\10\52\1\u01b5"+
767 "\20\52\1\u01b5\13\52\1\0\1\52\1\0\2\52\2\0"+
768 "\6\52\1\0\5\52\1\u0147\17\52\1\0\11\52\1\0"+
769 "\17\52\1\u0147\25\52\1\0\1\52\1\0\2\52\2\0"+
770 "\6\52\1\0\25\52\1\0\7\52\1\u0152\1\52\1\0"+
771 "\20\52\1\u0152\24\52\1\0\1\52\1\0\2\52\2\0"+
772 "\3\52\1\u01b6\2\52\1\0\25\52\1\0\6\52\1\u01b6"+
773 "\2\52\1\0\45\52\1\0\1\52\1\0\2\52\2\0"+
774 "\6\52\1\0\25\52\1\0\11\52\1\0\10\52\1\u0146"+
775 "\20\52\1\u0146\13\52\1\0\1\52\1\0\2\52\2\0"+
776 "\6\52\1\0\25\52\1\0\11\52\1\0\11\52\1\u0147"+
777 "\22\52\1\u0147\10\52\1\0\1\52\1\0\2\52\2\0"+
778 "\5\52\1\u01b7\1\0\25\52\1\0\11\52\1\0\1\52"+
779 "\1\u01b7\43\52\1\0\1\52\1\0\2\52\2\0\6\52"+
780 "\1\0\25\52\1\0\11\52\1\0\10\52\1\312\20\52"+
781 "\1\312\13\52\1\0\1\52\1\0\2\52\2\0\5\52"+
782 "\1\u01b8\1\0\25\52\1\0\11\52\1\0\1\52\1\u01b8"+
783 "\43\52\1\0\1\52\1\0\2\52\2\0\1\52\1\u01b9"+
784 "\4\52\1\0\25\52\1\0\11\52\1\0\33\52\1\u01b9"+
785 "\11\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
786 "\25\52\1\0\11\52\1\0\11\52\1\u01ba\22\52\1\u01ba"+
787 "\10\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
788 "\17\52\1\u01bb\5\52\1\0\11\52\1\0\6\52\1\u01bb"+
789 "\36\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
790 "\25\52\1\0\11\52\1\0\13\52\1\76\23\52\1\76"+
791 "\5\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
792 "\25\52\1\0\11\52\1\0\21\52\1\76\10\52\1\76"+
793 "\12\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
794 "\17\52\1\u01bc\5\52\1\0\11\52\1\0\6\52\1\u01bc"+
795 "\36\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
796 "\17\52\1\u014a\5\52\1\0\11\52\1\0\6\52\1\u014a"+
797 "\36\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
798 "\17\52\1\315\5\52\1\0\11\52\1\0\6\52\1\315"+
799 "\36\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
800 "\25\52\1\0\11\52\1\0\14\52\2\u01bd\27\52\1\0"+
801 "\1\52\1\0\2\52\2\0\6\52\1\0\15\52\1\u01be"+
802 "\7\52\1\0\11\52\1\0\5\52\1\u01be\37\52\1\0"+
803 "\1\52\1\0\2\52\2\0\6\52\1\0\5\52\1\u01bf"+
804 "\17\52\1\0\11\52\1\0\17\52\1\u01bf\25\52\1\0"+
805 "\1\52\1\0\2\52\2\0\6\52\1\0\25\52\1\0"+
806 "\11\52\1\0\14\52\2\76\27\52\1\0\1\52\1\0"+
807 "\2\52\2\0\5\52\1\76\1\0\25\52\1\0\11\52"+
808 "\1\0\1\52\1\76\43\52\1\0\1\52\1\0\2\52"+
809 "\2\0\6\52\1\0\17\52\1\312\5\52\1\0\11\52"+
810 "\1\0\6\52\1\312\36\52\1\0\1\52\1\0\2\52"+
811 "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\12\52"+
812 "\1\u01c0\22\52\1\u01c0\7\52\1\0\1\52\1\0\2\52"+
813 "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\16\52"+
814 "\1\u01c1\17\52\1\u01c1\6\52\1\0\1\52\1\0\2\52"+
815 "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\16\52"+
816 "\1\u012a\17\52\1\u012a\6\52\1\0\1\52\1\0\2\52"+
817 "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\11\52"+
818 "\1\u01c2\22\52\1\u01c2\10\52\1\0\1\52\1\0\2\52"+
819 "\2\0\3\52\1\u01c3\2\52\1\0\25\52\1\0\6\52"+
820 "\1\u01c3\2\52\1\0\45\52\1\0\1\52\1\0\2\52"+
821 "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\10\52"+
822 "\1\76\20\52\1\76\13\52\1\0\1\52\1\0\2\52"+
823 "\2\0\6\52\1\0\15\52\1\u01c4\7\52\1\0\11\52"+
824 "\1\0\5\52\1\u01c4\37\52\1\0\1\52\1\0\2\52"+
825 "\2\0\3\52\1\253\2\52\1\0\25\52\1\0\6\52"+
826 "\1\253\2\52\1\0\45\52\1\0\1\52\1\0\2\52"+
827 "\2\0\2\52\1\u01c5\3\52\1\0\25\52\1\0\11\52"+
828 "\1\0\30\52\1\u01c5\14\52\1\0\1\52\1\0\2\52"+
829 "\2\0\3\52\1\u01b8\2\52\1\0\25\52\1\0\6\52"+
830 "\1\u01b8\1\u01b2\1\52\1\0\20\52\1\u01b2\24\52\1\0"+
831 "\1\52\1\0\2\52\2\0\4\52\1\u0132\1\52\1\0"+
832 "\25\52\1\0\11\52\1\0\2\52\1\u0132\42\52\1\0"+
833 "\1\52\1\0\2\52\2\0\1\52\1\213\4\52\1\0"+
834 "\25\52\1\0\11\52\1\0\33\52\1\213\11\52\1\0"+
835 "\1\52\1\0\2\52\2\0\2\52\1\u01c6\3\52\1\0"+
836 "\25\52\1\0\11\52\1\0\30\52\1\u01c6\14\52\1\0"+
837 "\1\52\1\0\2\52\2\0\6\52\1\0\25\52\1\0"+
838 "\11\52\1\0\14\52\2\u01c7\27\52\1\0\1\52\1\0"+
839 "\2\52\2\0\5\52\1\u01c8\1\0\25\52\1\0\11\52"+
840 "\1\0\1\52\1\u01c8\43\52\1\0\1\52\1\0\2\52"+
841 "\2\0\6\52\1\0\17\52\1\315\5\52\1\0\11\52"+
842 "\1\0\6\52\1\315\1\52\1\76\20\52\1\76\13\52"+
843 "\1\0\1\52\1\0\2\52\2\0\6\52\1\0\5\52"+
844 "\1\76\17\52\1\0\11\52\1\0\17\52\1\76\25\52"+
845 "\1\0\1\52\1\0\2\52\2\0\6\52\1\0\25\52"+
846 "\1\0\11\52\1\0\21\52\1\76\1\u01c9\7\52\1\76"+
847 "\12\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
848 "\15\52\1\u01ca\7\52\1\0\11\52\1\0\5\52\1\u01ca"+
849 "\37\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
850 "\25\52\1\0\11\52\1\0\10\52\1\u01cb\20\52\1\u01cb"+
851 "\13\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
852 "\25\52\1\0\11\52\1\0\10\52\1\u01cc\20\52\1\u01cc"+
853 "\13\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
854 "\25\52\1\0\7\52\1\u01cd\1\52\1\0\20\52\1\u01cd"+
855 "\24\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
856 "\17\52\1\253\5\52\1\0\11\52\1\0\6\52\1\253"+
857 "\34\52\12\0\1\u01ce\100\0\1\u01ce\63\0\2\u0162\17\0"+
858 "\1\u0162\35\0\1\u01cf\112\0\1\110\10\0\1\110\1\u01d0"+
859 "\4\110\1\0\1\110\4\u01d0\1\110\1\0\4\110\1\0"+
860 "\2\110\2\u01d0\14\0\2\110\2\0\4\110\1\u01d0\1\110"+
861 "\1\u01d0\1\110\1\u01d0\5\110\1\u01d0\6\110\1\u01d0\1\110"+
862 "\1\u01d0\1\110\1\u01d0\1\110\1\u01d0\2\110\1\u01d0\5\110"+
863 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
864 "\1\0\4\117\14\0\1\u01d1\1\117\2\0\43\117\1\331"+
865 "\10\0\6\331\1\0\1\331\2\u0166\1\331\1\u0166\1\331"+
866 "\1\0\4\331\1\0\2\331\1\333\1\331\14\0\2\331"+
867 "\2\0\4\331\1\333\11\331\1\333\6\331\1\u0166\10\331"+
868 "\1\333\4\331\21\0\2\u0166\1\0\1\u0166\60\0\1\u0166"+
869 "\15\0\1\331\10\0\1\331\1\u0169\4\331\1\0\1\331"+
870 "\4\u0169\1\331\1\0\4\331\1\0\1\331\1\u0168\2\u0169"+
871 "\14\0\2\331\2\0\4\331\1\u0169\1\u0168\1\u0169\1\331"+
872 "\1\u0169\5\331\1\u0169\6\331\1\u0169\1\331\1\u0169\1\331"+
873 "\1\u0169\1\331\1\u0169\2\331\1\u0169\4\331\1\110\10\0"+
874 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
875 "\4\117\14\0\2\117\2\0\3\117\1\370\37\117\1\110"+
876 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
877 "\1\0\4\117\14\0\1\u01d2\1\117\2\0\43\117\1\110"+
878 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
879 "\1\0\4\117\14\0\2\117\2\0\31\117\1\u01d3\11\117"+
880 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
881 "\2\117\1\0\4\117\14\0\2\117\2\0\5\117\1\u01d4"+
882 "\26\117\1\u01d5\6\117\1\110\10\0\6\117\1\0\6\117"+
883 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
884 "\2\0\6\117\1\u01d6\34\117\1\110\10\0\6\117\1\0"+
885 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
886 "\2\117\2\0\1\117\1\u01d7\41\117\1\110\10\0\6\117"+
887 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
888 "\14\0\2\117\2\0\34\117\1\343\6\117\1\110\10\0"+
889 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
890 "\4\117\14\0\2\117\2\0\3\117\1\343\37\117\1\110"+
891 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
892 "\1\0\4\117\14\0\2\117\2\0\34\117\1\u01d8\6\117"+
893 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
894 "\2\117\1\0\4\117\14\0\2\117\2\0\6\117\1\u01d9"+
895 "\34\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
896 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\35\117"+
897 "\1\u01da\5\117\1\110\10\0\6\117\1\0\6\117\1\0"+
898 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
899 "\6\117\1\u01db\34\117\1\110\10\0\6\117\1\0\6\117"+
900 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
901 "\2\0\5\117\1\u01dc\35\117\1\110\10\0\6\117\1\0"+
902 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
903 "\2\117\2\0\40\117\1\u01dd\2\117\1\110\10\0\6\117"+
904 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
905 "\14\0\2\117\2\0\1\117\1\u01de\41\117\1\110\10\0"+
906 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
907 "\4\117\14\0\2\117\2\0\3\117\1\u01df\37\117\1\110"+
908 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
909 "\1\0\4\117\14\0\2\117\2\0\32\117\1\u01e0\10\117"+
910 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
911 "\2\117\1\0\4\117\14\0\2\117\2\0\6\117\1\366"+
912 "\34\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
913 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\30\117"+
914 "\1\u01e1\12\117\1\110\10\0\6\117\1\0\6\117\1\0"+
915 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
916 "\1\117\1\u01dc\41\117\1\110\10\0\6\117\1\0\6\117"+
917 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
918 "\2\0\1\117\1\u0194\41\117\1\110\10\0\6\117\1\0"+
919 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
920 "\2\117\2\0\33\117\1\u01e2\7\117\1\110\10\0\6\117"+
921 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
922 "\14\0\2\117\2\0\33\117\1\u01e3\7\117\1\110\10\0"+
923 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
924 "\4\117\14\0\2\117\2\0\31\117\1\u01e4\11\117\1\110"+
925 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
926 "\1\0\4\117\14\0\2\117\2\0\31\117\1\u01e1\11\117"+
927 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
928 "\2\117\1\0\4\117\14\0\2\117\2\0\3\117\1\u0173"+
929 "\37\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
930 "\1\326\2\117\1\0\4\117\14\0\1\117\1\u01e5\2\0"+
931 "\43\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
932 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\31\117"+
933 "\1\u01e6\11\117\1\110\10\0\6\117\1\0\6\117\1\0"+
934 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
935 "\6\117\1\343\34\117\1\110\10\0\6\117\1\0\6\117"+
936 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
937 "\2\0\15\117\1\343\25\117\1\110\10\0\6\117\1\0"+
938 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
939 "\2\117\2\0\5\117\1\u01e7\35\117\1\110\10\0\6\117"+
940 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
941 "\14\0\2\117\2\0\6\117\1\u01e8\34\117\1\110\10\0"+
942 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
943 "\4\117\14\0\2\117\2\0\34\117\1\u01d5\6\117\1\110"+
944 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
945 "\1\0\4\117\14\0\2\117\2\0\1\343\42\117\1\110"+
946 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
947 "\1\0\4\117\14\0\2\117\2\0\5\117\1\u0186\35\117"+
948 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
949 "\2\117\1\0\4\117\14\0\2\117\2\0\31\117\1\u01e9"+
950 "\11\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
951 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\5\117"+
952 "\1\u01ea\35\117\1\110\10\0\6\117\1\0\6\117\1\0"+
953 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
954 "\6\117\1\u01e5\34\117\1\110\10\0\6\117\1\0\5\117"+
955 "\1\u01eb\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
956 "\2\117\2\0\43\117\1\110\10\0\6\117\1\0\6\117"+
957 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
958 "\2\0\1\117\1\u01ec\41\117\1\110\10\0\6\117\1\0"+
959 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
960 "\2\117\2\0\30\117\1\u01e5\12\117\1\110\10\0\6\117"+
961 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
962 "\14\0\2\117\2\0\3\117\1\u0171\37\117\1\110\10\0"+
963 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
964 "\4\117\14\0\2\117\2\0\33\117\1\u018b\7\117\1\110"+
965 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
966 "\1\0\4\117\14\0\2\117\2\0\1\117\1\u01ed\1\117"+
967 "\1\u01ee\37\117\1\110\10\0\6\117\1\0\6\117\1\0"+
968 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
969 "\5\117\1\343\35\117\1\110\10\0\6\117\1\0\6\117"+
970 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\1\u01ef"+
971 "\1\117\2\0\43\117\1\110\10\0\6\117\1\0\6\117"+
972 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
973 "\2\0\31\117\1\u01f0\11\117\1\110\10\0\6\117\1\0"+
974 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
975 "\2\117\2\0\6\117\1\u01f1\34\117\1\110\10\0\6\117"+
976 "\1\0\5\117\1\u01f2\1\0\1\110\1\326\2\117\1\0"+
977 "\4\117\14\0\2\117\2\0\43\117\1\110\10\0\6\117"+
978 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
979 "\14\0\2\117\2\0\27\117\1\u01f3\13\117\1\110\10\0"+
980 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
981 "\4\117\14\0\2\117\2\0\36\117\1\343\4\117\1\110"+
982 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
983 "\1\0\4\117\14\0\2\117\2\0\31\117\1\u01f4\11\117"+
984 "\12\0\1\u01f5\6\0\4\u01f5\11\0\2\u01f5\24\0\1\u01f5"+
985 "\1\0\1\u01f5\1\0\1\u01f5\5\0\1\u01f5\6\0\1\u01f5"+
986 "\1\0\1\u01f5\1\0\1\u01f5\1\0\1\u01f5\2\0\1\u01f5"+
987 "\16\0\1\u01f6\6\0\4\u01f6\11\0\2\u01f6\24\0\1\u01f6"+
988 "\1\0\1\u01f6\1\0\1\u01f6\5\0\1\u01f6\6\0\1\u01f6"+
989 "\1\0\1\u01f6\1\0\1\u01f6\1\0\1\u01f6\2\0\1\u01f6"+
990 "\16\0\1\u01f7\100\0\1\u01f7\71\0\1\u01f8\126\0\1\u01a3"+
991 "\106\0\1\u01f9\111\0\1\u01fa\73\0\1\u01fb\100\0\1\u01fb"+
992 "\20\0\3\201\1\u01fc\2\201\1\0\6\201\6\0\4\201"+
993 "\14\0\1\u01fc\1\201\2\0\43\201\52\0\1\u01a9\10\0"+
994 "\1\u011f\47\0\1\u01fd\117\0\2\u01fe\1\0\7\u01aa\1\0"+
995 "\6\u01aa\1\0\1\u01fe\1\0\1\u01fe\1\u01aa\1\u01fe\4\u01aa"+
996 "\2\u01fe\1\0\3\u01fe\1\0\5\u01fe\2\u01aa\2\u01fe\43\u01aa"+
997 "\2\52\1\0\1\52\1\0\2\52\2\0\4\52\1\u0147"+
998 "\1\52\1\0\25\52\1\0\11\52\1\0\2\52\1\u0147"+
999 "\42\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
1000 "\25\52\1\0\11\52\1\0\21\52\1\u012a\10\52\1\u012a"+
1001 "\12\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
1002 "\25\52\1\0\11\52\1\0\12\52\1\234\22\52\1\234"+
1003 "\7\52\1\0\1\52\1\0\2\52\2\0\3\52\1\u01b8"+
1004 "\2\52\1\0\25\52\1\0\6\52\1\u01b8\2\52\1\0"+
1005 "\45\52\1\0\1\52\1\0\2\52\2\0\1\52\1\u0147"+
1006 "\4\52\1\0\25\52\1\0\11\52\1\0\33\52\1\u0147"+
1007 "\11\52\1\0\1\52\1\0\2\52\2\0\1\52\1\u012a"+
1008 "\4\52\1\0\25\52\1\0\11\52\1\0\33\52\1\u012a"+
1009 "\11\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
1010 "\25\52\1\0\11\52\1\0\10\52\1\u01ff\20\52\1\u01ff"+
1011 "\13\52\1\0\1\52\1\0\2\52\2\0\2\52\1\u0200"+
1012 "\3\52\1\0\25\52\1\0\11\52\1\0\30\52\1\u0200"+
1013 "\14\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
1014 "\17\52\1\u0201\5\52\1\0\11\52\1\0\6\52\1\u0201"+
1015 "\1\52\1\u01bc\20\52\1\u01bc\13\52\1\0\1\52\1\0"+
1016 "\2\52\2\0\6\52\1\0\25\52\1\0\11\52\1\0"+
1017 "\16\52\1\u0202\17\52\1\u0202\6\52\1\0\1\52\1\0"+
1018 "\2\52\2\0\6\52\1\0\25\52\1\0\11\52\1\0"+
1019 "\14\52\2\u012a\27\52\1\0\1\52\1\0\2\52\2\0"+
1020 "\6\52\1\0\25\52\1\0\11\52\1\0\12\52\1\u0203"+
1021 "\22\52\1\u0203\7\52\1\0\1\52\1\0\2\52\2\0"+
1022 "\6\52\1\0\25\52\1\0\11\52\1\0\10\52\1\u0204"+
1023 "\20\52\1\u0204\13\52\1\0\1\52\1\0\2\52\2\0"+
1024 "\6\52\1\0\25\52\1\0\11\52\1\0\11\52\1\307"+
1025 "\22\52\1\307\10\52\1\0\1\52\1\0\2\52\2\0"+
1026 "\6\52\1\0\25\52\1\0\11\52\1\0\21\52\1\u0205"+
1027 "\10\52\1\u0205\12\52\1\0\1\52\1\0\2\52\2\0"+
1028 "\6\52\1\0\5\52\1\u01bc\17\52\1\0\11\52\1\0"+
1029 "\17\52\1\u01bc\25\52\1\0\1\52\1\0\2\52\2\0"+
1030 "\6\52\1\0\16\52\1\u0206\6\52\1\0\11\52\1\0"+
1031 "\4\52\1\u0206\40\52\1\0\1\52\1\0\2\52\2\0"+
1032 "\6\52\1\0\25\52\1\0\11\52\1\0\12\52\1\312"+
1033 "\22\52\1\312\7\52\1\0\1\52\1\0\2\52\2\0"+
1034 "\6\52\1\0\17\52\1\u0207\5\52\1\0\11\52\1\0"+
1035 "\6\52\1\u0207\36\52\1\0\1\52\1\0\2\52\2\0"+
1036 "\6\52\1\0\25\52\1\0\11\52\1\0\16\52\1\u0208"+
1037 "\17\52\1\u0208\6\52\1\0\1\52\1\0\2\52\2\0"+
1038 "\2\52\1\u012a\3\52\1\0\25\52\1\0\11\52\1\0"+
1039 "\30\52\1\u012a\14\52\1\0\1\52\1\0\2\52\2\0"+
1040 "\5\52\1\u0209\1\0\25\52\1\0\11\52\1\0\1\52"+
1041 "\1\u0209\43\52\1\0\1\52\1\0\2\52\2\0\6\52"+
1042 "\1\0\25\52\1\0\11\52\1\0\12\52\1\u020a\22\52"+
1043 "\1\u020a\7\52\1\0\1\52\1\0\2\52\2\0\1\52"+
1044 "\1\227\4\52\1\0\25\52\1\0\11\52\1\0\33\52"+
1045 "\1\227\11\52\1\0\1\52\1\0\2\52\2\0\6\52"+
1046 "\1\0\17\52\1\u0147\5\52\1\0\11\52\1\0\6\52"+
1047 "\1\u0147\36\52\1\0\1\52\1\0\2\52\2\0\6\52"+
1048 "\1\0\17\52\1\u020b\5\52\1\0\11\52\1\0\6\52"+
1049 "\1\u020b\36\52\1\0\1\52\1\0\2\52\2\0\6\52"+
1050 "\1\0\25\52\1\0\11\52\1\0\10\52\1\u020c\20\52"+
1051 "\1\u020c\13\52\1\0\1\52\1\0\2\52\2\0\3\52"+
1052 "\1\u020d\2\52\1\0\25\52\1\0\6\52\1\u020d\2\52"+
1053 "\1\0\45\52\1\0\1\52\1\0\2\52\2\0\6\52"+
1054 "\1\0\5\52\1\u020e\17\52\1\0\11\52\1\0\17\52"+
1055 "\1\u020e\25\52\1\0\1\52\1\0\2\52\2\0\6\52"+
1056 "\1\0\25\52\1\0\11\52\1\0\11\52\1\234\22\52"+
1057 "\1\234\10\52\1\0\1\52\1\0\2\52\2\0\3\52"+
1058 "\1\u020f\2\52\1\0\25\52\1\0\6\52\1\u020f\2\52"+
1059 "\1\0\45\52\1\0\1\52\1\0\2\52\2\0\5\52"+
1060 "\1\u0210\1\0\15\52\1\u0211\7\52\1\0\7\52\1\u0212"+
1061 "\1\52\1\0\1\52\1\u0210\3\52\1\u0211\12\52\1\u0212"+
1062 "\24\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
1063 "\17\52\1\307\5\52\1\0\11\52\1\0\6\52\1\307"+
1064 "\34\52\13\0\1\u0213\74\0\1\u0213\12\0\1\110\10\0"+
1065 "\1\110\1\u0214\4\110\1\0\1\110\4\u0214\1\110\1\0"+
1066 "\4\110\1\0\2\110\2\u0214\14\0\2\110\2\0\4\110"+
1067 "\1\u0214\1\110\1\u0214\1\110\1\u0214\5\110\1\u0214\6\110"+
1068 "\1\u0214\1\110\1\u0214\1\110\1\u0214\1\110\1\u0214\2\110"+
1069 "\1\u0214\5\110\10\0\6\117\1\0\6\117\1\0\1\110"+
1070 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\35\117"+
1071 "\1\u0215\5\117\1\110\10\0\6\117\1\0\6\117\1\0"+
1072 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
1073 "\35\117\1\u0216\5\117\1\110\10\0\6\117\1\0\6\117"+
1074 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
1075 "\2\0\12\117\1\u01e7\30\117\1\110\10\0\6\117\1\0"+
1076 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
1077 "\2\117\2\0\6\117\1\u0217\34\117\1\110\10\0\6\117"+
1078 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
1079 "\14\0\2\117\2\0\30\117\1\u01ee\12\117\1\110\10\0"+
1080 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
1081 "\4\117\14\0\2\117\2\0\30\117\1\u0218\12\117\1\110"+
1082 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
1083 "\1\0\4\117\14\0\2\117\2\0\31\117\1\u0219\11\117"+
1084 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
1085 "\2\117\1\0\4\117\14\0\2\117\2\0\7\117\1\u021a"+
1086 "\33\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
1087 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\3\117"+
1088 "\1\u021b\37\117\1\110\10\0\6\117\1\0\6\117\1\0"+
1089 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
1090 "\34\117\1\u021c\6\117\1\110\10\0\6\117\1\0\6\117"+
1091 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\1\u021d"+
1092 "\1\117\2\0\43\117\1\110\10\0\6\117\1\0\6\117"+
1093 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
1094 "\2\0\31\117\1\u01f1\11\117\1\110\10\0\6\117\1\0"+
1095 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
1096 "\2\117\2\0\6\117\1\u021e\34\117\1\110\10\0\6\117"+
1097 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
1098 "\14\0\2\117\2\0\6\117\1\u021f\34\117\1\110\10\0"+
1099 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
1100 "\4\117\14\0\2\117\2\0\31\117\1\u0220\11\117\1\110"+
1101 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
1102 "\1\0\4\117\14\0\2\117\2\0\1\117\1\u01e5\41\117"+
1103 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
1104 "\2\117\1\0\4\117\14\0\2\117\2\0\1\u0221\42\117"+
1105 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
1106 "\2\117\1\0\4\117\14\0\2\117\2\0\1\117\1\u0222"+
1107 "\41\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
1108 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\5\117"+
1109 "\1\u0223\35\117\1\110\10\0\6\117\1\0\6\117\1\0"+
1110 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
1111 "\2\117\1\u0224\40\117\1\110\10\0\6\117\1\0\6\117"+
1112 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
1113 "\2\0\35\117\1\u0225\5\117\1\110\10\0\6\117\1\0"+
1114 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
1115 "\2\117\2\0\32\117\1\343\10\117\1\110\10\0\6\117"+
1116 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
1117 "\14\0\2\117\2\0\6\117\1\u0226\34\117\1\110\10\0"+
1118 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
1119 "\4\117\14\0\2\117\2\0\30\117\1\u0227\12\117\1\110"+
1120 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
1121 "\1\0\4\117\14\0\2\117\2\0\30\117\1\u0228\12\117"+
1122 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
1123 "\2\117\1\0\4\117\14\0\1\u0229\1\117\2\0\43\117"+
1124 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
1125 "\2\117\1\0\4\117\14\0\2\117\2\0\1\117\1\343"+
1126 "\41\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
1127 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\40\117"+
1128 "\1\u0186\2\117\1\110\10\0\6\117\1\0\5\117\1\u022a"+
1129 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
1130 "\2\0\43\117\1\110\10\0\6\117\1\0\6\117\1\0"+
1131 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
1132 "\1\117\1\u0186\41\117\1\110\10\0\6\117\1\0\6\117"+
1133 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\1\117"+
1134 "\1\u022b\2\0\43\117\1\110\10\0\6\117\1\0\6\117"+
1135 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
1136 "\2\0\5\117\1\u018f\35\117\1\110\10\0\6\117\1\0"+
1137 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
1138 "\2\117\2\0\1\117\1\376\41\117\13\0\1\u022c\74\0"+
1139 "\1\u022c\64\0\1\u01f9\10\0\1\u01a3\47\0\1\u022d\117\0"+
1140 "\2\u022e\1\0\7\u01fa\1\0\6\u01fa\1\0\1\u022e\1\0"+
1141 "\1\u022e\1\u01fa\1\u022e\4\u01fa\2\u022e\1\0\3\u022e\1\0"+
1142 "\5\u022e\2\u01fa\2\u022e\43\u01fa\13\0\1\u022f\74\0\1\u022f"+
1143 "\23\0\4\201\1\u0230\1\201\1\0\6\201\6\0\4\201"+
1144 "\14\0\2\201\2\0\2\201\1\u0230\40\201\10\0\1\u01aa"+
1145 "\112\0\2\52\1\0\1\52\1\0\2\52\2\0\1\76"+
1146 "\5\52\1\0\25\52\1\0\11\52\1\0\3\52\1\76"+
1147 "\41\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
1148 "\25\52\1\0\11\52\1\0\11\52\1\u0231\22\52\1\u0231"+
1149 "\10\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
1150 "\25\52\1\0\11\52\1\0\12\52\1\u0147\22\52\1\u0147"+
1151 "\7\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
1152 "\17\52\1\u0232\5\52\1\0\11\52\1\0\6\52\1\u0232"+
1153 "\36\52\1\0\1\52\1\0\2\52\2\0\5\52\1\u0233"+
1154 "\1\0\25\52\1\0\11\52\1\0\1\52\1\u0233\43\52"+
1155 "\1\0\1\52\1\0\2\52\2\0\2\52\1\u0234\3\52"+
1156 "\1\0\25\52\1\0\11\52\1\0\30\52\1\u0234\14\52"+
1157 "\1\0\1\52\1\0\2\52\2\0\6\52\1\0\25\52"+
1158 "\1\0\11\52\1\0\22\52\1\u0235\22\52\1\0\1\52"+
1159 "\1\0\2\52\2\0\6\52\1\0\25\52\1\0\11\52"+
1160 "\1\0\11\52\1\u0201\22\52\1\u0201\10\52\1\0\1\52"+
1161 "\1\0\2\52\2\0\1\u01c4\5\52\1\0\25\52\1\0"+
1162 "\11\52\1\0\3\52\1\u01c4\41\52\1\0\1\52\1\0"+
1163 "\2\52\2\0\1\u0236\5\52\1\0\25\52\1\0\11\52"+
1164 "\1\0\3\52\1\u0236\41\52\1\0\1\52\1\0\2\52"+
1165 "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\13\52"+
1166 "\1\u0146\23\52\1\u0146\5\52\1\0\1\52\1\0\2\52"+
1167 "\2\0\1\u01ff\5\52\1\0\25\52\1\0\11\52\1\0"+
1168 "\3\52\1\u01ff\41\52\1\0\1\52\1\0\2\52\2\0"+
1169 "\6\52\1\0\25\52\1\0\11\52\1\0\14\52\2\u0237"+
1170 "\27\52\1\0\1\52\1\0\2\52\2\0\1\52\1\u0238"+
1171 "\4\52\1\0\25\52\1\0\11\52\1\0\33\52\1\u0238"+
1172 "\11\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
1173 "\17\52\1\u012a\5\52\1\0\11\52\1\0\6\52\1\u012a"+
1174 "\36\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
1175 "\15\52\1\u01ff\7\52\1\0\11\52\1\0\5\52\1\u01ff"+
1176 "\37\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
1177 "\17\52\1\u0239\5\52\1\0\11\52\1\0\6\52\1\u0239"+
1178 "\36\52\1\0\1\52\1\0\2\52\2\0\3\52\1\300"+
1179 "\2\52\1\0\25\52\1\0\6\52\1\300\2\52\1\0"+
1180 "\45\52\1\0\1\52\1\0\2\52\2\0\2\52\1\u023a"+
1181 "\3\52\1\0\25\52\1\0\11\52\1\0\30\52\1\u023a"+
1182 "\12\52\14\0\1\u023b\37\0\1\u023b\46\0\1\110\10\0"+
1183 "\1\110\1\u023c\4\110\1\0\1\110\4\u023c\1\110\1\0"+
1184 "\4\110\1\0\2\110\2\u023c\14\0\2\110\2\0\4\110"+
1185 "\1\u023c\1\110\1\u023c\1\110\1\u023c\5\110\1\u023c\6\110"+
1186 "\1\u023c\1\110\1\u023c\1\110\1\u023c\1\110\1\u023c\2\110"+
1187 "\1\u023c\5\110\10\0\6\117\1\0\6\117\1\0\1\110"+
1188 "\1\326\2\117\1\0\4\117\14\0\1\u023d\1\117\2\0"+
1189 "\43\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
1190 "\1\326\2\117\1\0\4\117\14\0\1\u023e\1\117\2\0"+
1191 "\43\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
1192 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\15\117"+
1193 "\1\u023f\25\117\1\110\10\0\6\117\1\0\6\117\1\0"+
1194 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
1195 "\4\117\1\u0240\36\117\1\110\10\0\6\117\1\0\6\117"+
1196 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
1197 "\2\0\35\117\1\u0241\5\117\1\110\10\0\6\117\1\0"+
1198 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
1199 "\1\u0242\1\117\2\0\43\117\1\110\10\0\6\117\1\0"+
1200 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
1201 "\2\117\2\0\4\117\1\343\36\117\1\110\10\0\6\117"+
1202 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
1203 "\14\0\2\117\2\0\33\117\1\343\7\117\1\110\10\0"+
1204 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
1205 "\4\117\14\0\2\117\2\0\33\117\1\u0243\7\117\1\110"+
1206 "\10\0\3\117\1\u0244\2\117\1\0\6\117\1\0\1\110"+
1207 "\1\326\2\117\1\0\2\117\1\u0245\1\117\14\0\2\117"+
1208 "\2\0\43\117\1\110\10\0\6\117\1\0\6\117\1\0"+
1209 "\1\110\1\326\2\117\1\0\4\117\14\0\1\117\1\u0186"+
1210 "\2\0\43\117\1\110\10\0\6\117\1\0\6\117\1\0"+
1211 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
1212 "\30\117\1\u0246\12\117\1\110\10\0\6\117\1\0\6\117"+
1213 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\1\u0247"+
1214 "\1\117\2\0\43\117\1\110\10\0\6\117\1\0\6\117"+
1215 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
1216 "\2\0\5\117\1\u0248\35\117\1\110\10\0\6\117\1\0"+
1217 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
1218 "\2\117\2\0\6\117\1\u01e7\34\117\1\110\10\0\6\117"+
1219 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
1220 "\14\0\2\117\2\0\36\117\1\u0171\4\117\1\110\10\0"+
1221 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
1222 "\4\117\14\0\2\117\2\0\31\117\1\u0249\11\117\1\110"+
1223 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
1224 "\1\0\4\117\14\0\2\117\2\0\35\117\1\343\5\117"+
1225 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
1226 "\2\117\1\0\4\117\14\0\2\117\2\0\31\117\1\u024a"+
1227 "\11\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
1228 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\35\117"+
1229 "\1\u024b\5\117\1\110\10\0\6\117\1\0\6\117\1\0"+
1230 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
1231 "\5\117\1\u01ee\35\117\1\110\10\0\6\117\1\0\6\117"+
1232 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\1\117"+
1233 "\1\u017b\2\0\43\117\14\0\1\u024c\37\0\1\u024c\56\0"+
1234 "\1\u01fa\126\0\1\u024d\37\0\1\u024d\57\0\5\201\1\u024e"+
1235 "\1\0\6\201\6\0\4\201\14\0\2\201\2\0\1\201"+
1236 "\1\u024e\41\201\2\52\1\0\1\52\1\0\2\52\2\0"+
1237 "\6\52\1\0\5\52\1\u0127\17\52\1\0\11\52\1\0"+
1238 "\17\52\1\u0127\25\52\1\0\1\52\1\0\2\52\2\0"+
1239 "\6\52\1\0\14\52\1\76\10\52\1\0\11\52\1\0"+
1240 "\41\52\1\76\3\52\1\0\1\52\1\0\2\52\2\0"+
1241 "\6\52\1\0\17\52\1\u024f\5\52\1\0\11\52\1\0"+
1242 "\6\52\1\u024f\36\52\1\0\1\52\1\0\2\52\2\0"+
1243 "\6\52\1\0\17\52\1\u014f\5\52\1\0\11\52\1\0"+
1244 "\6\52\1\u014f\36\52\1\0\1\52\1\0\2\52\2\0"+
1245 "\6\52\1\0\5\52\1\u0250\17\52\1\0\11\52\1\0"+
1246 "\17\52\1\u0250\25\52\1\0\1\52\1\0\2\52\2\0"+
1247 "\6\52\1\0\25\52\1\0\11\52\1\0\11\52\1\221"+
1248 "\22\52\1\221\10\52\1\0\1\52\1\0\2\52\2\0"+
1249 "\6\52\1\0\17\52\1\u01ff\5\52\1\0\11\52\1\0"+
1250 "\6\52\1\u01ff\36\52\1\0\1\52\1\0\2\52\2\0"+
1251 "\6\52\1\0\25\52\1\0\11\52\1\0\11\52\1\u014a"+
1252 "\22\52\1\u014a\10\52\1\0\1\52\1\0\2\52\2\0"+
1253 "\6\52\1\0\25\52\1\0\11\52\1\0\14\52\2\u0251"+
1254 "\27\52\1\0\1\52\1\0\2\52\2\0\3\52\1\312"+
1255 "\2\52\1\0\25\52\1\0\6\52\1\312\2\52\1\0"+
1256 "\43\52\15\0\1\u0252\44\0\1\u0252\40\0\1\110\10\0"+
1257 "\1\110\1\117\4\110\1\0\1\110\4\117\1\110\1\0"+
1258 "\4\110\1\0\2\110\2\117\14\0\2\110\2\0\4\110"+
1259 "\1\117\1\110\1\117\1\110\1\117\5\110\1\117\6\110"+
1260 "\1\117\1\110\1\117\1\110\1\117\1\110\1\117\2\110"+
1261 "\1\117\5\110\10\0\6\117\1\0\6\117\1\0\1\110"+
1262 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\1\117"+
1263 "\1\u0248\41\117\1\110\10\0\6\117\1\0\6\117\1\0"+
1264 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
1265 "\1\117\1\u0224\41\117\1\110\10\0\6\117\1\0\6\117"+
1266 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
1267 "\2\0\6\117\1\u0253\34\117\1\110\10\0\6\117\1\0"+
1268 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
1269 "\2\117\2\0\31\117\1\u0254\11\117\1\110\10\0\6\117"+
1270 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
1271 "\14\0\2\117\2\0\33\117\1\u0175\7\117\1\110\10\0"+
1272 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
1273 "\4\117\14\0\2\117\2\0\6\117\1\u0255\34\117\1\110"+
1274 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
1275 "\1\0\4\117\14\0\2\117\2\0\1\117\1\u0256\41\117"+
1276 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
1277 "\2\117\1\0\4\117\14\0\2\117\2\0\35\117\1\u0257"+
1278 "\5\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
1279 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\5\117"+
1280 "\1\u0258\35\117\1\110\10\0\6\117\1\0\6\117\1\0"+
1281 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
1282 "\34\117\1\u0259\6\117\1\110\10\0\6\117\1\0\6\117"+
1283 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
1284 "\2\0\34\117\1\u0227\6\117\1\110\10\0\6\117\1\0"+
1285 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
1286 "\2\117\2\0\37\117\1\343\3\117\1\110\10\0\6\117"+
1287 "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+
1288 "\14\0\2\117\2\0\35\117\1\u01e5\5\117\1\110\10\0"+
1289 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
1290 "\4\117\14\0\2\117\2\0\33\117\1\u01ee\7\117\1\110"+
1291 "\10\0\6\117\1\0\5\117\1\u0186\1\0\1\110\1\326"+
1292 "\2\117\1\0\4\117\14\0\2\117\2\0\43\117\15\0"+
1293 "\1\u025a\44\0\1\u025a\55\0\1\u025b\44\0\1\u025b\40\0"+
1294 "\2\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
1295 "\14\52\1\u0147\10\52\1\0\11\52\1\0\41\52\1\u0147"+
1296 "\3\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+
1297 "\25\52\1\0\11\52\1\0\11\52\1\223\22\52\1\223"+
1298 "\10\52\1\0\1\52\1\0\2\52\2\0\4\52\1\u025c"+
1299 "\1\52\1\0\25\52\1\0\11\52\1\0\2\52\1\u025c"+
1300 "\40\52\16\0\1\u025d\42\0\1\u025d\41\0\1\110\10\0"+
1301 "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+
1302 "\4\117\14\0\2\117\2\0\35\117\1\u025e\5\117\1\110"+
1303 "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+
1304 "\1\0\4\117\14\0\2\117\2\0\33\117\1\u0186\7\117"+
1305 "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+
1306 "\2\117\1\0\4\117\14\0\2\117\2\0\35\117\1\u01ee"+
1307 "\5\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+
1308 "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\6\117"+
1309 "\1\u019c\34\117\1\110\10\0\6\117\1\0\6\117\1\0"+
1310 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
1311 "\1\117\1\u01e7\41\117\1\110\10\0\6\117\1\0\6\117"+
1312 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
1313 "\2\0\34\117\1\u025f\6\117\1\110\10\0\6\117\1\0"+
1314 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
1315 "\2\117\2\0\35\117\1\u0260\5\117\16\0\1\u0261\42\0"+
1316 "\1\u0261\57\0\1\u0262\42\0\1\u0262\41\0\2\52\1\0"+
1317 "\1\52\1\0\2\52\2\0\6\52\1\0\15\52\1\u0263"+
1318 "\7\52\1\0\11\52\1\0\5\52\1\u0263\35\52\17\0"+
1319 "\1\u0264\103\0\1\110\10\0\6\117\1\0\6\117\1\0"+
1320 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
1321 "\1\117\1\u0171\41\117\1\110\10\0\6\117\1\0\6\117"+
1322 "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+
1323 "\2\0\31\117\1\u0257\11\117\1\110\10\0\6\117\1\0"+
1324 "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+
1325 "\1\u0265\1\117\2\0\43\117\17\0\1\u0266\122\0\1\u0267"+
1326 "\103\0\2\52\1\0\1\52\1\0\2\52\2\0\6\52"+
1327 "\1\0\25\52\1\0\11\52\1\0\10\52\1\223\20\52"+
1328 "\1\223\11\52\1\110\10\0\6\117\1\0\6\117\1\0"+
1329 "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+
1330 "\42\117\1\u0256";
1331
1332 private static int [] zzUnpackTrans() {
1333 int [] result = new int[45899];
1334 int offset = 0;
1335 offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
1336 return result;
1337 }
1338
1339 private static int zzUnpackTrans(String packed, int offset, int [] result) {
1340 int i = 0; /* index in packed string */
1341 int j = offset; /* index in unpacked array */
1342 int l = packed.length();
1343 while (i < l) {
1344 int count = packed.charAt(i++);
1345 int value = packed.charAt(i++);
1346 value--;
1347 do result[j++] = value; while (--count > 0);
1348 }
1349 return j;
1350 }
1351
1352
1353 /* error codes */
1354 private static final int ZZ_UNKNOWN_ERROR = 0;
1355 private static final int ZZ_NO_MATCH = 1;
1356 private static final int ZZ_PUSHBACK_2BIG = 2;
1357
1358 /* error messages for the codes above */
1359 private static final String ZZ_ERROR_MSG[] = {
1360 "Unkown internal scanner error",
1361 "Error: could not match input",
1362 "Error: pushback value was too large"
1363 };
1364
1365 /**
1366 * ZZ_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>
1367 */
1368 private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
1369
1370 private static final String ZZ_ATTRIBUTE_PACKED_0 =
1371 "\6\0\2\1\1\0\2\1\5\0\2\1\1\11\4\1"+
1372 "\1\11\5\1\1\11\2\1\2\11\2\1\1\11\1\1"+
1373 "\3\11\1\1\1\11\25\1\1\11\1\1\1\11\1\1"+
1374 "\3\11\1\1\1\11\2\1\2\11\7\1\1\11\3\1"+
1375 "\1\11\3\1\1\11\20\1\2\11\2\1\1\11\1\1"+
1376 "\1\11\1\1\1\11\6\1\1\11\5\1\2\11\5\0"+
1377 "\1\11\103\1\1\11\3\0\1\11\1\0\73\1\1\11"+
1378 "\2\1\1\0\1\11\5\0\2\1\1\0\1\11\4\0"+
1379 "\100\1\1\0\1\1\1\0\3\1\1\0\66\1\10\0"+
1380 "\1\1\1\11\2\0\44\1\1\0\1\11\45\1\1\0"+
1381 "\1\11\3\0\1\1\1\0\1\1\2\0\24\1\1\0"+
1382 "\30\1\4\0\13\1\1\0\20\1\2\0\4\1\1\0"+
1383 "\7\1\2\0\1\1\1\0\3\1\2\0\1\1\1\11"+
1384 "\1\1\2\11";
1385
1386 private static int [] zzUnpackAttribute() {
1387 int [] result = new int[615];
1388 int offset = 0;
1389 offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
1390 return result;
1391 }
1392
1393 private static int zzUnpackAttribute(String packed, int offset, int [] result) {
1394 int i = 0; /* index in packed string */
1395 int j = offset; /* index in unpacked array */
1396 int l = packed.length();
1397 while (i < l) {
1398 int count = packed.charAt(i++);
1399 int value = packed.charAt(i++);
1400 do result[j++] = value; while (--count > 0);
1401 }
1402 return j;
1403 }
1404
1405 /** the input device */
1406 private java.io.Reader zzReader;
1407
1408 /** the current state of the DFA */
1409 private int zzState;
1410
1411 /** the current lexical state */
1412 private int zzLexicalState = YYINITIAL;
1413
1414 /** this buffer contains the current text to be matched and is
1415 the source of the yytext() string */
1416 private char zzBuffer[] = new char[ZZ_BUFFERSIZE];
1417
1418 /** the textposition at the last accepting state */
1419 private int zzMarkedPos;
1420
1421 /** the current text position in the buffer */
1422 private int zzCurrentPos;
1423
1424 /** startRead marks the beginning of the yytext() string in the buffer */
1425 private int zzStartRead;
1426
1427 /** endRead marks the last character in the buffer, that has been read
1428 from input */
1429 private int zzEndRead;
1430
1431 /** number of newlines encountered up to the start of the matched text */
1432 private int yyline;
1433
1434 /** the number of characters up to the start of the matched text */
1435 private int yychar;
1436
1437 /**
1438 * the number of characters from the last newline up to the start of the
1439 * matched text
1440 */
1441 private int yycolumn;
1442
1443 /**
1444 * zzAtBOL == true <=> the scanner is currently at the beginning of a line
1445 */
1446 private boolean zzAtBOL = true;
1447
1448 /** zzAtEOF == true <=> the scanner is at the EOF */
1449 private boolean zzAtEOF;
1450
1451 /** denotes if the user-EOF-code has already been executed */
1452 private boolean zzEOFDone;
1453
1454 /* user code: */
1455
1456 /**
1457 * Type specific to XMLTokenMaker denoting a line ending with an unclosed
1458 * double-quote attribute.
1459 */
1460 public static final int INTERNAL_ATTR_DOUBLE = -1;
1461
1462
1463 /**
1464 * Type specific to XMLTokenMaker denoting a line ending with an unclosed
1465 * single-quote attribute.
1466 */
1467 public static final int INTERNAL_ATTR_SINGLE = -2;
1468
1469
1470 /**
1471 * Token type specific to HTMLTokenMaker; this signals that the user has
1472 * ended a line with an unclosed HTML tag; thus a new line is beginning
1473 * still inside of the tag.
1474 */
1475 public static final int INTERNAL_INTAG = -3;
1476
1477 /**
1478 * Token type specific to HTMLTokenMaker; this signals that the user has
1479 * ended a line with an unclosed <code>&lt;script&gt;</code> tag.
1480 */
1481 public static final int INTERNAL_INTAG_SCRIPT = -4;
1482
1483 /**
1484 * Token type specifying we're in a double-qouted attribute in a
1485 * script tag.
1486 */
1487 public static final int INTERNAL_ATTR_DOUBLE_QUOTE_SCRIPT = -5;
1488
1489 /**
1490 * Token type specifying we're in a single-qouted attribute in a
1491 * script tag.
1492 */
1493 public static final int INTERNAL_ATTR_SINGLE_QUOTE_SCRIPT = -6;
1494
1495 /**
1496 * Token type specifying we're in JavaScript.
1497 */
1498 public static final int INTERNAL_IN_JS = -7;
1499
1500 /**
1501 * Token type specifying we're in a JavaScript multiline comment.
1502 */
1503 public static final int INTERNAL_IN_JS_MLC = -8;
1504
1505 /**
1506 * Token type specifying we're in an invalid multi-line JS string.
1507 */
1508 public static final int INTERNAL_IN_JS_STRING_INVALID = -9;
1509
1510 /**
1511 * Token type specifying we're in a valid multi-line JS string.
1512 */
1513 public static final int INTERNAL_IN_JS_STRING_VALID = -10;
1514
1515 /**
1516 * Token type specifying we're in an invalid multi-line JS single-quoted string.
1517 */
1518 public static final int INTERNAL_IN_JS_CHAR_INVALID = -11;
1519
1520 /**
1521 * Token type specifying we're in a valid multi-line JS single-quoted string.
1522 */
1523 public static final int INTERNAL_IN_JS_CHAR_VALID = -12;
1524
1525 /**
1526 * Whether closing markup tags are automatically completed for HTML.
1527 */
1528 private static boolean completeCloseTags;
1529
1530 /**
1531 * When in the JS_STRING state, whether the current string is valid.
1532 */
1533 private boolean validJSString;
1534
1535
1536 /**
1537 * Constructor. This must be here because JFlex does not generate a
1538 * no-parameter constructor.
1539 */
1540 public HTMLTokenMaker() {
1541 super();
1542 }
1543
1544
1545 /**
1546 * Adds the token specified to the current linked list of tokens as an
1547 * "end token;" that is, at <code>zzMarkedPos</code>.
1548 *
1549 * @param tokenType The token's type.
1550 */
1551 private void addEndToken(int tokenType) {
1552 addToken(zzMarkedPos,zzMarkedPos, tokenType);
1553 }
1554
1555
1556 /**
1557 * Adds the token specified to the current linked list of tokens.
1558 *
1559 * @param tokenType The token's type.
1560 * @see #addToken(int, int, int)
1561 */
1562 private void addHyperlinkToken(int start, int end, int tokenType) {
1563 int so = start + offsetShift;
1564 addToken(zzBuffer, start,end, tokenType, so, true);
1565 }
1566
1567
1568 /**
1569 * Adds the token specified to the current linked list of tokens.
1570 *
1571 * @param tokenType The token's type.
1572 */
1573 private void addToken(int tokenType) {
1574 addToken(zzStartRead, zzMarkedPos-1, tokenType);
1575 }
1576
1577
1578 /**
1579 * Adds the token specified to the current linked list of tokens.
1580 *
1581 * @param tokenType The token's type.
1582 */
1583 private void addToken(int start, int end, int tokenType) {
1584 int so = start + offsetShift;
1585 addToken(zzBuffer, start,end, tokenType, so);
1586 }
1587
1588
1589 /**
1590 * Adds the token specified to the current linked list of tokens.
1591 *
1592 * @param array The character array.
1593 * @param start The starting offset in the array.
1594 * @param end The ending offset in the array.
1595 * @param tokenType The token's type.
1596 * @param startOffset The offset in the document at which this token
1597 * occurs.
1598 */
1599 public void addToken(char[] array, int start, int end, int tokenType, int startOffset) {
1600 super.addToken(array, start,end, tokenType, startOffset);
1601 zzStartRead = zzMarkedPos;
1602 }
1603
1604
1605 /**
1606 * Sets whether markup close tags should be completed. You might not want
1607 * this to be the case, since some tags in standard HTML aren't usually
1608 * closed.
1609 *
1610 * @return Whether closing markup tags are completed.
1611 * @see #setCompleteCloseTags(boolean)
1612 */
1613 public boolean getCompleteCloseTags() {
1614 return completeCloseTags;
1615 }
1616
1617
1618 /**
1619 * Returns the first token in the linked list of tokens generated
1620 * from <code>text</code>. This method must be implemented by
1621 * subclasses so they can correctly implement syntax highlighting.
1622 *
1623 * @param text The text from which to get tokens.
1624 * @param initialTokenType The token type we should start with.
1625 * @param startOffset The offset into the document at which
1626 * <code>text</code> starts.
1627 * @return The first <code>Token</code> in a linked list representing
1628 * the syntax highlighted text.
1629 */
1630 public Token getTokenList(Segment text, int initialTokenType, int startOffset) {
1631
1632 resetTokenList();
1633 this.offsetShift = -text.offset + startOffset;
1634
1635 // Start off in the proper state.
1636 int state = Token.NULL;
1637 switch (initialTokenType) {
1638 case Token.COMMENT_MULTILINE:
1639 state = COMMENT;
1640 start = text.offset;
1641 break;
1642 case Token.PREPROCESSOR:
1643 state = PI;
1644 start = text.offset;
1645 break;
1646 case Token.VARIABLE:
1647 state = DTD;
1648 start = text.offset;
1649 break;
1650 case INTERNAL_INTAG:
1651 state = INTAG;
1652 start = text.offset;
1653 break;
1654 case INTERNAL_INTAG_SCRIPT:
1655 state = INTAG_SCRIPT;
1656 start = text.offset;
1657 break;
1658 case INTERNAL_ATTR_DOUBLE:
1659 state = INATTR_DOUBLE;
1660 start = text.offset;
1661 break;
1662 case INTERNAL_ATTR_SINGLE:
1663 state = INATTR_SINGLE;
1664 start = text.offset;
1665 break;
1666 case INTERNAL_ATTR_DOUBLE_QUOTE_SCRIPT:
1667 state = INATTR_DOUBLE_SCRIPT;
1668 start = text.offset;
1669 break;
1670 case INTERNAL_ATTR_SINGLE_QUOTE_SCRIPT:
1671 state = INATTR_SINGLE_SCRIPT;
1672 start = text.offset;
1673 break;
1674 case INTERNAL_IN_JS:
1675 state = JAVASCRIPT;
1676 start = text.offset;
1677 break;
1678 case INTERNAL_IN_JS_MLC:
1679 state = JS_MLC;
1680 start = text.offset;
1681 break;
1682 case INTERNAL_IN_JS_STRING_INVALID:
1683 state = JS_STRING;
1684 validJSString = false;
1685 start = text.offset;
1686 break;
1687 case INTERNAL_IN_JS_STRING_VALID:
1688 state = JS_STRING;
1689 validJSString = true;
1690 start = text.offset;
1691 break;
1692 case INTERNAL_IN_JS_CHAR_INVALID:
1693 state = JS_CHAR;
1694 validJSString = false;
1695 start = text.offset;
1696 break;
1697 case INTERNAL_IN_JS_CHAR_VALID:
1698 state = JS_CHAR;
1699 validJSString = true;
1700 start = text.offset;
1701 break;
1702 default:
1703 state = Token.NULL;
1704 }
1705
1706 s = text;
1707 try {
1708 yyreset(zzReader);
1709 yybegin(state);
1710 return yylex();
1711 } catch (IOException ioe) {
1712 ioe.printStackTrace();
1713 return new DefaultToken();
1714 }
1715
1716 }
1717
1718
1719 /**
1720 * Sets whether markup close tags should be completed. You might not want
1721 * this to be the case, since some tags in standard HTML aren't usually
1722 * closed.
1723 *
1724 * @param complete Whether closing markup tags are completed.
1725 * @see #getCompleteCloseTags()
1726 */
1727 public static void setCompleteCloseTags(boolean complete) {
1728 completeCloseTags = complete;
1729 }
1730
1731
1732 /**
1733 * Refills the input buffer.
1734 *
1735 * @return <code>true</code> if EOF was reached, otherwise
1736 * <code>false</code>.
1737 */
1738
1739 private boolean zzRefill() {
1740 return zzCurrentPos>=s.offset+s.count;
1741 }
1742
1743
1744 /**
1745 * Resets the scanner to read from a new input stream.
1746 * Does not close the old reader.
1747 *
1748 * All internal variables are reset, the old input stream
1749 * <b>cannot</b> be reused (internal buffer is discarded and lost).
1750 * Lexical state is set to <tt>YY_INITIAL</tt>.
1751 *
1752 * @param reader the new input stream
1753 */
1754
1755 public final void yyreset(java.io.Reader reader) {
1756 // 's' has been updated.
1757 zzBuffer = s.array;
1758
1759 /*
1760 * We replaced the line below with the two below it because zzRefill
1761 * no longer "refills" the buffer (since the way we do it, it's always
1762 * "full" the first time through, since it points to the segment's
1763 * array). So, we assign zzEndRead here.
1764 */
1765 //zzStartRead = zzEndRead = s.offset;
1766
1767 zzStartRead = s.offset;
1768 zzEndRead = zzStartRead + s.count - 1;
1769 //### zzCurrentPos = zzMarkedPos = zzPushbackPos = s.offset;
1770 zzCurrentPos = zzMarkedPos = s.offset;
1771 zzLexicalState = YYINITIAL;
1772 zzReader = reader;
1773 zzAtBOL = true;
1774 zzAtEOF = false;
1775 }
1776
1777
1778
1779
1780
1781 /**
1782 * Creates a new scanner
1783 * There is also a java.io.InputStream version of this constructor.
1784 *
1785 * @param in the java.io.Reader to read input from.
1786 */
1787 public HTMLTokenMaker(java.io.Reader in) {
1788 this.zzReader = in;
1789 }
1790
1791 /**
1792 * Creates a new scanner.
1793 * There is also java.io.Reader version of this constructor.
1794 *
1795 * @param in the java.io.Inputstream to read input from.
1796 */
1797 public HTMLTokenMaker(java.io.InputStream in) {
1798 this(new java.io.InputStreamReader(in));
1799 }
1800
1801 /**
1802 * Unpacks the compressed character translation table.
1803 *
1804 * @param packed the packed character translation table
1805 * @return the unpacked character translation table
1806 */
1807 private static char [] zzUnpackCMap(String packed) {
1808 char [] map = new char[0x10000];
1809 int i = 0; /* index in packed string */
1810 int j = 0; /* index in unpacked array */
1811 while (i < 192) {
1812 int count = packed.charAt(i++);
1813 char value = packed.charAt(i++);
1814 do map[j++] = value; while (--count > 0);
1815 }
1816 return map;
1817 }
1818
1819
1820 /**
1821 * Refills the input buffer.
1822 *
1823 * @return <code>false</code>, iff there was new input.
1824 *
1825 * @exception java.io.IOException if any I/O-Error occurs
1826 */
1827 private boolean ZZREFILLOLD() throws java.io.IOException {
1828
1829 /* first: make room (if you can) */
1830 if (zzStartRead > 0) {
1831 System.arraycopy(zzBuffer, zzStartRead,
1832 zzBuffer, 0,
1833 zzEndRead-zzStartRead);
1834
1835 /* translate stored positions */
1836 zzEndRead-= zzStartRead;
1837 zzCurrentPos-= zzStartRead;
1838 zzMarkedPos-= zzStartRead;
1839 zzStartRead = 0;
1840 }
1841
1842 /* is the buffer big enough? */
1843 if (zzCurrentPos >= zzBuffer.length) {
1844 /* if not: blow it up */
1845 char newBuffer[] = new char[zzCurrentPos*2];
1846 System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length);
1847 zzBuffer = newBuffer;
1848 }
1849
1850 /* finally: fill the buffer with new input */
1851 int numRead = zzReader.read(zzBuffer, zzEndRead,
1852 zzBuffer.length-zzEndRead);
1853
1854 if (numRead > 0) {
1855 zzEndRead+= numRead;
1856 return false;
1857 }
1858 // unlikely but not impossible: read 0 characters, but not at end of stream
1859 if (numRead == 0) {
1860 int c = zzReader.read();
1861 if (c == -1) {
1862 return true;
1863 } else {
1864 zzBuffer[zzEndRead++] = (char) c;
1865 return false;
1866 }
1867 }
1868
1869 // numRead < 0
1870 return true;
1871 }
1872
1873
1874 /**
1875 * Closes the input stream.
1876 */
1877 public final void yyclose() throws java.io.IOException {
1878 zzAtEOF = true; /* indicate end of file */
1879 zzEndRead = zzStartRead; /* invalidate buffer */
1880
1881 if (zzReader != null)
1882 zzReader.close();
1883 }
1884
1885
1886 /**
1887 * Resets the scanner to read from a new input stream.
1888 * Does not close the old reader.
1889 *
1890 * All internal variables are reset, the old input stream
1891 * <b>cannot</b> be reused (internal buffer is discarded and lost).
1892 * Lexical state is set to <tt>ZZ_INITIAL</tt>.
1893 *
1894 * @param reader the new input stream
1895 */
1896 public final void YYRESETOLD(java.io.Reader reader) {
1897 zzReader = reader;
1898 zzAtBOL = true;
1899 zzAtEOF = false;
1900 zzEOFDone = false;
1901 zzEndRead = zzStartRead = 0;
1902 zzCurrentPos = zzMarkedPos = 0;
1903 yyline = yychar = yycolumn = 0;
1904 zzLexicalState = YYINITIAL;
1905 }
1906
1907
1908 /**
1909 * Returns the current lexical state.
1910 */
1911 public final int yystate() {
1912 return zzLexicalState;
1913 }
1914
1915
1916 /**
1917 * Enters a new lexical state
1918 *
1919 * @param newState the new lexical state
1920 */
1921 public final void yybegin(int newState) {
1922 zzLexicalState = newState;
1923 }
1924
1925
1926 /**
1927 * Returns the text matched by the current regular expression.
1928 */
1929 public final String yytext() {
1930 return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead );
1931 }
1932
1933
1934 /**
1935 * Returns the character at position <tt>pos</tt> from the
1936 * matched text.
1937 *
1938 * It is equivalent to yytext().charAt(pos), but faster
1939 *
1940 * @param pos the position of the character to fetch.
1941 * A value from 0 to yylength()-1.
1942 *
1943 * @return the character at position pos
1944 */
1945 public final char yycharat(int pos) {
1946 return zzBuffer[zzStartRead+pos];
1947 }
1948
1949
1950 /**
1951 * Returns the length of the matched text region.
1952 */
1953 public final int yylength() {
1954 return zzMarkedPos-zzStartRead;
1955 }
1956
1957
1958 /**
1959 * Reports an error that occured while scanning.
1960 *
1961 * In a wellformed scanner (no or only correct usage of
1962 * yypushback(int) and a match-all fallback rule) this method
1963 * will only be called with things that "Can't Possibly Happen".
1964 * If this method is called, something is seriously wrong
1965 * (e.g. a JFlex bug producing a faulty scanner etc.).
1966 *
1967 * Usual syntax/scanner level error handling should be done
1968 * in error fallback rules.
1969 *
1970 * @param errorCode the code of the errormessage to display
1971 */
1972 private void zzScanError(int errorCode) {
1973 String message;
1974 try {
1975 message = ZZ_ERROR_MSG[errorCode];
1976 }
1977 catch (ArrayIndexOutOfBoundsException e) {
1978 message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
1979 }
1980
1981 throw new Error(message);
1982 }
1983
1984
1985 /**
1986 * Pushes the specified amount of characters back into the input stream.
1987 *
1988 * They will be read again by then next call of the scanning method
1989 *
1990 * @param number the number of characters to be read again.
1991 * This number must not be greater than yylength()!
1992 */
1993 public void yypushback(int number) {
1994 if ( number > yylength() )
1995 zzScanError(ZZ_PUSHBACK_2BIG);
1996
1997 zzMarkedPos -= number;
1998 }
1999
2000
2001 /**
2002 * Resumes scanning until the next regular expression is matched,
2003 * the end of input is encountered or an I/O-Error occurs.
2004 *
2005 * @return the next token
2006 * @exception java.io.IOException if any I/O-Error occurs
2007 */
2008 public org.fife.ui.rsyntaxtextarea.Token yylex() throws java.io.IOException {
2009 int zzInput;
2010 int zzAction;
2011
2012 // cached fields:
2013 int zzCurrentPosL;
2014 int zzMarkedPosL;
2015 int zzEndReadL = zzEndRead;
2016 char [] zzBufferL = zzBuffer;
2017 char [] zzCMapL = ZZ_CMAP;
2018
2019 int [] zzTransL = ZZ_TRANS;
2020 int [] zzRowMapL = ZZ_ROWMAP;
2021 int [] zzAttrL = ZZ_ATTRIBUTE;
2022
2023 while (true) {
2024 zzMarkedPosL = zzMarkedPos;
2025
2026 zzAction = -1;
2027
2028 zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
2029
2030 zzState = ZZ_LEXSTATE[zzLexicalState];
2031
2032
2033 zzForAction: {
2034 while (true) {
2035
2036 if (zzCurrentPosL < zzEndReadL)
2037 zzInput = zzBufferL[zzCurrentPosL++];
2038 else if (zzAtEOF) {
2039 zzInput = YYEOF;
2040 break zzForAction;
2041 }
2042 else {
2043 // store back cached positions
2044 zzCurrentPos = zzCurrentPosL;
2045 zzMarkedPos = zzMarkedPosL;
2046 boolean eof = zzRefill();
2047 // get translated positions and possibly new buffer
2048 zzCurrentPosL = zzCurrentPos;
2049 zzMarkedPosL = zzMarkedPos;
2050 zzBufferL = zzBuffer;
2051 zzEndReadL = zzEndRead;
2052 if (eof) {
2053 zzInput = YYEOF;
2054 break zzForAction;
2055 }
2056 else {
2057 zzInput = zzBufferL[zzCurrentPosL++];
2058 }
2059 }
2060 int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
2061 if (zzNext == -1) break zzForAction;
2062 zzState = zzNext;
2063
2064 int zzAttributes = zzAttrL[zzState];
2065 if ( (zzAttributes & 1) == 1 ) {
2066 zzAction = zzState;
2067 zzMarkedPosL = zzCurrentPosL;
2068 if ( (zzAttributes & 8) == 8 ) break zzForAction;
2069 }
2070
2071 }
2072 }
2073
2074 // store back cached position
2075 zzMarkedPos = zzMarkedPosL;
2076
2077 switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
2078 case 2:
2079 { addToken(Token.IDENTIFIER);
2080 }
2081 case 67: break;
2082 case 60:
2083 { addToken(Token.LITERAL_BOOLEAN);
2084 }
2085 case 68: break;
2086 case 50:
2087 { /* Skip all escaped chars. */
2088 }
2089 case 69: break;
2090 case 52:
2091 { /* Invalid latin-1 character \xXX */ validJSString = false;
2092 }
2093 case 70: break;
2094 case 46:
2095 { addToken(Token.ERROR_NUMBER_FORMAT);
2096 }
2097 case 71: break;
2098 case 38:
2099 { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addEndToken(INTERNAL_IN_JS); return firstToken;
2100 }
2101 case 72: break;
2102 case 66:
2103 { yybegin(YYINITIAL);
2104 int temp = zzStartRead;
2105 addToken(start,zzStartRead-1, Token.COMMENT_EOL);
2106 addToken(temp,temp+1, Token.MARKUP_TAG_DELIMITER);
2107 addToken(zzMarkedPos-7,zzMarkedPos-2, Token.MARKUP_TAG_NAME);
2108 addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER);
2109 }
2110 case 73: break;
2111 case 39:
2112 { int count = yylength();
2113 addToken(zzStartRead,zzStartRead, Token.MARKUP_TAG_DELIMITER);
2114 zzMarkedPos -= (count-1); //yypushback(count-1);
2115 yybegin(INTAG_CHECK_TAG_NAME);
2116 }
2117 case 74: break;
2118 case 23:
2119 { start = zzMarkedPos-1; yybegin(INATTR_SINGLE_SCRIPT);
2120 }
2121 case 75: break;
2122 case 14:
2123 { yybegin(YYINITIAL); addToken(Token.MARKUP_TAG_DELIMITER);
2124 }
2125 case 76: break;
2126 case 9:
2127 { addToken(start,zzStartRead-1, Token.VARIABLE); return firstToken;
2128 }
2129 case 77: break;
2130 case 37:
2131 { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_IN_JS_MLC); return firstToken;
2132 }
2133 case 78: break;
2134 case 61:
2135 { addToken(Token.FUNCTION);
2136 }
2137 case 79: break;
2138 case 40:
2139 { start = zzMarkedPos-2; yybegin(DTD);
2140 }
2141 case 80: break;
2142 case 26:
2143 { addEndToken(INTERNAL_IN_JS); return firstToken;
2144 }
2145 case 81: break;
2146 case 64:
2147 { yybegin(YYINITIAL);
2148 addToken(zzStartRead,zzStartRead+1, Token.MARKUP_TAG_DELIMITER);
2149 addToken(zzMarkedPos-7,zzMarkedPos-2, Token.MARKUP_TAG_NAME);
2150 addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER);
2151 }
2152 case 82: break;
2153 case 24:
2154 { yybegin(INTAG_SCRIPT); addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE);
2155 }
2156 case 83: break;
2157 case 34:
2158 { addToken(start,zzStartRead-1, Token.ERROR_CHAR); addEndToken(INTERNAL_IN_JS); return firstToken;
2159 }
2160 case 84: break;
2161 case 18:
2162 { /* Shouldn't happen */ yypushback(1); yybegin(INTAG);
2163 }
2164 case 85: break;
2165 case 25:
2166 { addToken(Token.ERROR_IDENTIFIER);
2167 }
2168 case 86: break;
2169 case 32:
2170 { int type = validJSString ? Token.LITERAL_STRING_DOUBLE_QUOTE : Token.ERROR_STRING_DOUBLE; addToken(start,zzStartRead, type); yybegin(JAVASCRIPT);
2171 }
2172 case 87: break;
2173 case 45:
2174 { start = zzMarkedPos-2; yybegin(JS_MLC);
2175 }
2176 case 88: break;
2177 case 56:
2178 { boolean highlightedAsRegex = false;
2179 if (firstToken==null) {
2180 addToken(Token.REGEX);
2181 highlightedAsRegex = true;
2182 }
2183 else {
2184 // If this is *likely* to be a regex, based on
2185 // the previous token, highlight it as such.
2186 Token t = firstToken.getLastNonCommentNonWhitespaceToken();
2187 if (RSyntaxUtilities.regexCanFollowInJavaScript(t)) {
2188 addToken(Token.REGEX);
2189 highlightedAsRegex = true;
2190 }
2191 }
2192 // If it doesn't *appear* to be a regex, highlight it as
2193 // individual tokens.
2194 if (!highlightedAsRegex) {
2195 int temp = zzStartRead + 1;
2196 addToken(zzStartRead, zzStartRead, Token.OPERATOR);
2197 zzStartRead = zzCurrentPos = zzMarkedPos = temp;
2198 }
2199 }
2200 case 89: break;
2201 case 4:
2202 { addToken(Token.MARKUP_TAG_DELIMITER); yybegin(INTAG);
2203 }
2204 case 90: break;
2205 case 31:
2206 { addToken(start,zzStartRead-1, Token.ERROR_STRING_DOUBLE); addEndToken(INTERNAL_IN_JS); return firstToken;
2207 }
2208 case 91: break;
2209 case 10:
2210 { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.VARIABLE);
2211 }
2212 case 92: break;
2213 case 53:
2214 { yybegin(JAVASCRIPT); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE);
2215 }
2216 case 93: break;
2217 case 36:
2218 { int type = validJSString ? Token.LITERAL_CHAR : Token.ERROR_CHAR; addToken(start,zzStartRead, type); yybegin(JAVASCRIPT);
2219 }
2220 case 94: break;
2221 case 42:
2222 { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.PREPROCESSOR);
2223 }
2224 case 95: break;
2225 case 20:
2226 { yybegin(INTAG); addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE);
2227 }
2228 case 96: break;
2229 case 44:
2230 { start = zzMarkedPos-2; yybegin(JS_EOL_COMMENT);
2231 }
2232 case 97: break;
2233 case 41:
2234 { start = zzMarkedPos-2; yybegin(PI);
2235 }
2236 case 98: break;
2237 case 12:
2238 { start = zzMarkedPos-1; yybegin(INATTR_DOUBLE);
2239 }
2240 case 99: break;
2241 case 48:
2242 { addToken(Token.LITERAL_NUMBER_HEXADECIMAL);
2243 }
2244 case 100: break;
2245 case 17:
2246 { /* A non-recognized HTML tag name */ yypushback(yylength()); yybegin(INTAG);
2247 }
2248 case 101: break;
2249 case 21:
2250 { start = zzMarkedPos-1; yybegin(INATTR_DOUBLE_SCRIPT);
2251 }
2252 case 102: break;
2253 case 33:
2254 { /* Line ending in '\' => continue to next line. */
2255 if (validJSString) {
2256 addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE);
2257 addEndToken(INTERNAL_IN_JS_STRING_VALID);
2258 }
2259 else {
2260 addToken(start,zzStartRead, Token.ERROR_STRING_DOUBLE);
2261 addEndToken(INTERNAL_IN_JS_STRING_INVALID);
2262 }
2263 return firstToken;
2264 }
2265 case 103: break;
2266 case 5:
2267 { addToken(Token.WHITESPACE);
2268 }
2269 case 104: break;
2270 case 6:
2271 { addToken(Token.DATA_TYPE);
2272 }
2273 case 105: break;
2274 case 19:
2275 { addToken(Token.MARKUP_TAG_NAME);
2276 }
2277 case 106: break;
2278 case 35:
2279 { /* Line ending in '\' => continue to next line. */
2280 if (validJSString) {
2281 addToken(start,zzStartRead, Token.LITERAL_CHAR);
2282 addEndToken(INTERNAL_IN_JS_CHAR_VALID);
2283 }
2284 else {
2285 addToken(start,zzStartRead, Token.ERROR_CHAR);
2286 addEndToken(INTERNAL_IN_JS_CHAR_INVALID);
2287 }
2288 return firstToken;
2289 }
2290 case 107: break;
2291 case 63:
2292 { addToken(zzStartRead,zzStartRead, Token.MARKUP_TAG_DELIMITER);
2293 addToken(zzMarkedPos-6,zzMarkedPos-1, Token.MARKUP_TAG_NAME);
2294 start = zzMarkedPos; yybegin(INTAG_SCRIPT);
2295 }
2296 case 108: break;
2297 case 28:
2298 { addToken(Token.LITERAL_NUMBER_DECIMAL_INT);
2299 }
2300 case 109: break;
2301 case 16:
2302 { start = zzMarkedPos-1; yybegin(INATTR_SINGLE);
2303 }
2304 case 110: break;
2305 case 11:
2306 { addToken(Token.MARKUP_TAG_ATTRIBUTE);
2307 }
2308 case 111: break;
2309 case 27:
2310 { start = zzMarkedPos-1; validJSString = true; yybegin(JS_STRING);
2311 }
2312 case 112: break;
2313 case 51:
2314 { /* Invalid Unicode character \\uXXXX */ validJSString = false;
2315 }
2316 case 113: break;
2317 case 57:
2318 { start = zzMarkedPos-4; yybegin(COMMENT);
2319 }
2320 case 114: break;
2321 case 30:
2322 { start = zzMarkedPos-1; validJSString = true; yybegin(JS_CHAR);
2323 }
2324 case 115: break;
2325 case 49:
2326 { addToken(Token.RESERVED_WORD);
2327 }
2328 case 116: break;
2329 case 58:
2330 { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos;
2331 }
2332 case 117: break;
2333 case 55:
2334 { yybegin(YYINITIAL); addToken(start,zzStartRead+2, Token.COMMENT_MULTILINE);
2335 }
2336 case 118: break;
2337 case 54:
2338 { int count = yylength();
2339 addToken(zzStartRead,zzStartRead+1, Token.MARKUP_TAG_DELIMITER);
2340 zzMarkedPos -= (count-2); //yypushback(count-2);
2341 yybegin(INTAG_CHECK_TAG_NAME);
2342 }
2343 case 119: break;
2344 case 29:
2345 { addToken(Token.SEPARATOR);
2346 }
2347 case 120: break;
2348 case 3:
2349 { addNullToken(); return firstToken;
2350 }
2351 case 121: break;
2352 case 22:
2353 { yybegin(JAVASCRIPT); addToken(Token.MARKUP_TAG_DELIMITER);
2354 }
2355 case 122: break;
2356 case 43:
2357 { addToken(Token.MARKUP_TAG_DELIMITER); yybegin(YYINITIAL);
2358 }
2359 case 123: break;
2360 case 7:
2361 { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken;
2362 }
2363 case 124: break;
2364 case 15:
2365 { addToken(Token.OPERATOR);
2366 }
2367 case 125: break;
2368 case 47:
2369 { addToken(Token.LITERAL_NUMBER_FLOAT);
2370 }
2371 case 126: break;
2372 case 13:
2373 { addToken(Token.MARKUP_TAG_DELIMITER);
2374 }
2375 case 127: break;
2376 case 62:
2377 { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos;
2378 }
2379 case 128: break;
2380 case 59:
2381 { addToken(Token.COMMENT_MULTILINE);
2382 }
2383 case 129: break;
2384 case 8:
2385 { addToken(start,zzStartRead-1, Token.PREPROCESSOR); return firstToken;
2386 }
2387 case 130: break;
2388 case 65:
2389 { yybegin(YYINITIAL);
2390 int temp = zzStartRead;
2391 addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE);
2392 addToken(temp,temp+1, Token.MARKUP_TAG_DELIMITER);
2393 addToken(zzMarkedPos-7,zzMarkedPos-2, Token.MARKUP_TAG_NAME);
2394 addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER);
2395 }
2396 case 131: break;
2397 case 1:
2398 {
2399 }
2400 case 132: break;
2401 default:
2402 if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
2403 zzAtEOF = true;
2404 switch (zzLexicalState) {
2405 case JS_STRING: {
2406 addToken(start,zzStartRead-1, Token.ERROR_STRING_DOUBLE); addEndToken(INTERNAL_IN_JS); return firstToken;
2407 }
2408 case 616: break;
2409 case INTAG_CHECK_TAG_NAME: {
2410 addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG); return firstToken;
2411 }
2412 case 617: break;
2413 case JS_MLC: {
2414 addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_IN_JS_MLC); return firstToken;
2415 }
2416 case 618: break;
2417 case INTAG_SCRIPT: {
2418 addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG_SCRIPT); return firstToken;
2419 }
2420 case 619: break;
2421 case JS_CHAR: {
2422 addToken(start,zzStartRead-1, Token.ERROR_CHAR); addEndToken(INTERNAL_IN_JS); return firstToken;
2423 }
2424 case 620: break;
2425 case JS_EOL_COMMENT: {
2426 addToken(start,zzStartRead-1, Token.COMMENT_EOL); addEndToken(INTERNAL_IN_JS); return firstToken;
2427 }
2428 case 621: break;
2429 case INATTR_DOUBLE_SCRIPT: {
2430 addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_DOUBLE_QUOTE_SCRIPT); return firstToken;
2431 }
2432 case 622: break;
2433 case INATTR_SINGLE_SCRIPT: {
2434 addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_SINGLE_QUOTE_SCRIPT); return firstToken;
2435 }
2436 case 623: break;
2437 case DTD: {
2438 addToken(start,zzStartRead-1, Token.VARIABLE); return firstToken;
2439 }
2440 case 624: break;
2441 case INATTR_SINGLE: {
2442 addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_SINGLE); return firstToken;
2443 }
2444 case 625: break;
2445 case INATTR_DOUBLE: {
2446 addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_DOUBLE); return firstToken;
2447 }
2448 case 626: break;
2449 case YYINITIAL: {
2450 addNullToken(); return firstToken;
2451 }
2452 case 627: break;
2453 case INTAG: {
2454 addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG); return firstToken;
2455 }
2456 case 628: break;
2457 case COMMENT: {
2458 addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken;
2459 }
2460 case 629: break;
2461 case JAVASCRIPT: {
2462 addEndToken(INTERNAL_IN_JS); return firstToken;
2463 }
2464 case 630: break;
2465 case PI: {
2466 addToken(start,zzStartRead-1, Token.PREPROCESSOR); return firstToken;
2467 }
2468 case 631: break;
2469 default:
2470 return null;
2471 }
2472 }
2473 else {
2474 zzScanError(ZZ_NO_MATCH);
2475 }
2476 }
2477 }
2478 }
2479
2480
2481}
Note: See TracBrowser for help on using the repository browser.